Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**Imprimir Cronograma */
  2.    function obtemMapaCronoImpressao() {
  3.        var linhas = {};
  4.        /* Para cada dia */
  5.        var diasMesmaHora = [];
  6.        var divisaoHorasArray = [];
  7.  
  8.        $.each(dadosAcao.eventos, function (dia, events) {
  9.            var current = new Date(parseInt(dia) * 1000);
  10.            current.setHours(13 - (current.getTimezoneOffset() / 60), 0, 0, 0);
  11.            diasMesmaHora.push(parseInt(current.getTime() / 1000));
  12.            /* Ordenar eventos por hora */
  13.            events.sort(function (obj1, obj2) {
  14.                return comparaHoras(obj1.horade, obj2.horade);
  15.            });
  16.            $.each(events, function (index, evento) {
  17.                var de = horaParaMinutos(evento.horade);
  18.                var ate = horaParaMinutos(evento.horaate);
  19.                //Vou ver se o de começa na hora certa
  20.                var hours = Math.floor(de / 60);
  21.                var horaInicialEmMinutos = hours * 60;
  22.  
  23.                for (var horainicial = horaInicialEmMinutos; horainicial < ate; horainicial = horainicial + 60) {
  24.                    var object = $.extend({}, evento);
  25.                    object.hInicial = horainicial;
  26.                    object.hFinal = horainicial + 60;
  27.                    if (object.hInicial < de)
  28.                        object.hInicial = de;
  29.                    if (object.hFinal > ate)
  30.                        object.hFinal = ate;
  31.                    object.hDuracao = object.hFinal - object.hInicial;
  32.                    var a = Math.floor(object.hInicial / 60);
  33.                    var b = object.hInicial % 60;
  34.                    object.horasssInicial = '' + a + ':' + b;
  35.                    var a = Math.floor(object.hFinal / 60);
  36.                    var b = object.hFinal % 60;
  37.                    object.horasssFinal = '' + a + ':' + b;
  38.  
  39.                    if (linhas[horainicial] === undefined) {
  40.                        linhas[horainicial] = {};
  41.                    }
  42.                    if (linhas[horainicial][parseInt(current.getTime() / 1000)] === undefined) {
  43.                        linhas[horainicial][parseInt(current.getTime() / 1000)] = {};
  44.                    }
  45.                    var tamanho = Object.keys(linhas[horainicial][parseInt(current.getTime() / 1000)]).length;
  46.                    linhas[horainicial][parseInt(current.getTime() / 1000)][tamanho] = object;
  47.                }
  48.  
  49.            });
  50.        });
  51.  
  52.        diasMesmaHora = uniqueArray(diasMesmaHora).sort();
  53.  
  54.        var rows = '';
  55.        var acumulados = {};
  56.        $.each(linhas, function (hora, linha) {
  57.            var horaInicial = 0;
  58.            var auxInicio = 1440;
  59.            var auxFinal = 0;
  60.            //Vou buscar o inicio mais cedo e o fim mais tarde
  61.            $.each(diasMesmaHora, function (j, dia) {
  62.                $.each(linha[dia], function (indexEvento, evento) {
  63.                    if (evento.hInicial < auxInicio) {
  64.  
  65.                        a if (evento.hInicial < auxInicio) {uxInicio = evento.hInicial;
  66.                    }
  67.                    if (evento.hFinal > auxFinal) {
  68.                        auxFinal = evento.hFinal;
  69.                    }
  70.                });
  71.            });
  72.            rows = rows + '<tr>';
  73.  
  74.            var hours = Math.floor(parseInt(auxInicio) / 60);
  75.            var minutes = 0;
  76.            horaInicial = horaParaMinutos(pad(hours, 2) + ':' + pad(minutes, 2));
  77.            rows = rows + '<td class="headcol">' + pad(hours, 2) + ':' + pad(minutes, 2) + '</td>';
  78.            hours = Math.ceil(parseInt(auxFinal) / 60);
  79.            minutes = 0;
  80.            rows = rows + '<td class="headcol">' + pad(hours, 2) + ':' + pad(minutes, 2) + '</td>';
  81.            var mesAnterior = null;
  82.            var anoAnterior = null;
  83.            $.each(diasMesmaHora, function (j, dia) {
  84.                border = '';
  85.                var mesDate = new Date(dia * 1000);
  86.                var mes = mesDate.getMonth();
  87.                var ano = mesDate.getFullYear();
  88.                if (mesAnterior != mes || anoAnterior != ano) {
  89.                    border = 'border-left:1px solid #000000';
  90.                }
  91.                mesAnterior = mes;
  92.                anoAnterior = ano;
  93.  
  94.  
  95.  
  96.  
  97.  
  98.                if (acumulados[dia] === undefined) {
  99.                    acumulados[dia] = {};
  100.                }
  101.                if (linha[dia] === undefined) {
  102.                    rows = rows + '<td style="' + border + '"></td>';
  103.                } else {
  104.                    //não sei se é preciso ordenar os eventos no mesmo dia e dentro da mesma hora
  105. //                    (linha[dia]).sort(function (obj1, obj2) {
  106. //                        return comparaHoras(obj1.horade, obj2.horade);
  107. //                    });
  108.                    var texto = '';
  109.                    var background = '';
  110.  
  111.                    var spots = {};
  112.  
  113.                    $.each(linha[dia], function (indexEvento, evento) {
  114.  
  115.                        divisaoHorasArray.push(parseInt(evento.divisaoHoras));
  116.                        if (acumulados[dia][evento.divisaoHoras] === undefined) {
  117.                            acumulados[dia][evento.divisaoHoras] = 0;
  118.                        }
  119.                        acumulados[dia][evento.divisaoHoras] += evento.hDuracao;
  120.                        if (evento.hDuracao < 58) {
  121.                            //var deAux = horaParaMinutos(evento.horade);                            
  122.                            var auxMinutos = Math.abs(evento.hInicial - horaInicial);
  123.                            //Quando começa o spot
  124.                            var inicioSpot = Math.round((auxMinutos % 60) / 15);
  125.                            var numeroSpots = Math.round(evento.hDuracao / 15);
  126.                            for (var i = 0; i < numeroSpots; i++) {
  127.                                spots[inicioSpot + i] = {
  128.                                    cor: evento.cor,
  129.  
  130.                                    texto: $('input[name=divisaoHoras][value=' + evento.divisaoHoras + ']', '#acao_cronograma').closest('label').find('.codnome').text()
  131.                                };
  132.                            }
  133.                        }
  134.  
  135.                    });
  136.  
  137.                    //Vou encher spots em branco
  138.                    var auxColor = '';
  139.                    var auxTexto = '';
  140.                    var auxPercent = 0;
  141.                    var cor = 'transparent';
  142.                    var t = '';
  143.                    for (var i = 0; i < 4; i++) {
  144.                        t = '';
  145.                        cor = 'transparent';
  146.                        if (spots[i] != undefined) {
  147.                            cor = spots[i].cor;
  148.                            t = spots[i].texto;
  149.                        }
  150.                        if ((auxColor != cor || auxTexto != t) && auxColor !== '') {
  151.                            texto = texto + '<span style="text-align:center;width: ' + auxPercent + '%;display: inline-block;color:' + darkOrLight(auxColor) + '!important;">' + auxTexto + '</span>';
  152.                            auxPercent = 0;
  153.                        }
  154.                        spots[i] = cor + ' ' + (i * 25) + '%, ' + cor + ' ' + ((i + 1) * 25) + '%';
  155.                        auxPercent = auxPercent + 25;
  156.                        auxColor = cor;
  157.                        auxTexto = t;
  158.                    }
  159.                    texto = texto + '<span style="text-align:center;width: ' + auxPercent + '%;display: inline-block;color:' + darkOrLight(auxColor) + '!important;">' + auxTexto + '</span>';
  160.  
  161.                    var s = "";
  162.                    for (var i in spots) {
  163.                        s += spots[i] + ", ";
  164.                    }
  165.                    s = s.substring(0, s.length - 2);
  166.                    background = 'background:linear-gradient(to right,' + s + ')!important;';
  167.                    rows = rows + '<td style="' + background + border + '">' + texto + '</td>';
  168.                }
  169.            });
  170.            rows = rows + '<td class="headcolFim"></td></tr>';
  171.        });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement