Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**Imprimir Cronograma */
- function obtemMapaCronoImpressao() {
- var linhas = {};
- /* Para cada dia */
- var diasMesmaHora = [];
- var divisaoHorasArray = [];
- $.each(dadosAcao.eventos, function (dia, events) {
- var current = new Date(parseInt(dia) * 1000);
- current.setHours(13 - (current.getTimezoneOffset() / 60), 0, 0, 0);
- diasMesmaHora.push(parseInt(current.getTime() / 1000));
- /* Ordenar eventos por hora */
- events.sort(function (obj1, obj2) {
- return comparaHoras(obj1.horade, obj2.horade);
- });
- $.each(events, function (index, evento) {
- var de = horaParaMinutos(evento.horade);
- var ate = horaParaMinutos(evento.horaate);
- //Vou ver se o de começa na hora certa
- var hours = Math.floor(de / 60);
- var horaInicialEmMinutos = hours * 60;
- for (var horainicial = horaInicialEmMinutos; horainicial < ate; horainicial = horainicial + 60) {
- var object = $.extend({}, evento);
- object.hInicial = horainicial;
- object.hFinal = horainicial + 60;
- if (object.hInicial < de)
- object.hInicial = de;
- if (object.hFinal > ate)
- object.hFinal = ate;
- object.hDuracao = object.hFinal - object.hInicial;
- var a = Math.floor(object.hInicial / 60);
- var b = object.hInicial % 60;
- object.horasssInicial = '' + a + ':' + b;
- var a = Math.floor(object.hFinal / 60);
- var b = object.hFinal % 60;
- object.horasssFinal = '' + a + ':' + b;
- if (linhas[horainicial] === undefined) {
- linhas[horainicial] = {};
- }
- if (linhas[horainicial][parseInt(current.getTime() / 1000)] === undefined) {
- linhas[horainicial][parseInt(current.getTime() / 1000)] = {};
- }
- var tamanho = Object.keys(linhas[horainicial][parseInt(current.getTime() / 1000)]).length;
- linhas[horainicial][parseInt(current.getTime() / 1000)][tamanho] = object;
- }
- });
- });
- diasMesmaHora = uniqueArray(diasMesmaHora).sort();
- var rows = '';
- var acumulados = {};
- $.each(linhas, function (hora, linha) {
- var horaInicial = 0;
- var auxInicio = 1440;
- var auxFinal = 0;
- //Vou buscar o inicio mais cedo e o fim mais tarde
- $.each(diasMesmaHora, function (j, dia) {
- $.each(linha[dia], function (indexEvento, evento) {
- if (evento.hInicial < auxInicio) {
- a if (evento.hInicial < auxInicio) {uxInicio = evento.hInicial;
- }
- if (evento.hFinal > auxFinal) {
- auxFinal = evento.hFinal;
- }
- });
- });
- rows = rows + '<tr>';
- var hours = Math.floor(parseInt(auxInicio) / 60);
- var minutes = 0;
- horaInicial = horaParaMinutos(pad(hours, 2) + ':' + pad(minutes, 2));
- rows = rows + '<td class="headcol">' + pad(hours, 2) + ':' + pad(minutes, 2) + '</td>';
- hours = Math.ceil(parseInt(auxFinal) / 60);
- minutes = 0;
- rows = rows + '<td class="headcol">' + pad(hours, 2) + ':' + pad(minutes, 2) + '</td>';
- var mesAnterior = null;
- var anoAnterior = null;
- $.each(diasMesmaHora, function (j, dia) {
- border = '';
- var mesDate = new Date(dia * 1000);
- var mes = mesDate.getMonth();
- var ano = mesDate.getFullYear();
- if (mesAnterior != mes || anoAnterior != ano) {
- border = 'border-left:1px solid #000000';
- }
- mesAnterior = mes;
- anoAnterior = ano;
- if (acumulados[dia] === undefined) {
- acumulados[dia] = {};
- }
- if (linha[dia] === undefined) {
- rows = rows + '<td style="' + border + '"></td>';
- } else {
- //não sei se é preciso ordenar os eventos no mesmo dia e dentro da mesma hora
- // (linha[dia]).sort(function (obj1, obj2) {
- // return comparaHoras(obj1.horade, obj2.horade);
- // });
- var texto = '';
- var background = '';
- var spots = {};
- $.each(linha[dia], function (indexEvento, evento) {
- divisaoHorasArray.push(parseInt(evento.divisaoHoras));
- if (acumulados[dia][evento.divisaoHoras] === undefined) {
- acumulados[dia][evento.divisaoHoras] = 0;
- }
- acumulados[dia][evento.divisaoHoras] += evento.hDuracao;
- if (evento.hDuracao < 58) {
- //var deAux = horaParaMinutos(evento.horade);
- var auxMinutos = Math.abs(evento.hInicial - horaInicial);
- //Quando começa o spot
- var inicioSpot = Math.round((auxMinutos % 60) / 15);
- var numeroSpots = Math.round(evento.hDuracao / 15);
- for (var i = 0; i < numeroSpots; i++) {
- spots[inicioSpot + i] = {
- cor: evento.cor,
- texto: $('input[name=divisaoHoras][value=' + evento.divisaoHoras + ']', '#acao_cronograma').closest('label').find('.codnome').text()
- };
- }
- }
- });
- //Vou encher spots em branco
- var auxColor = '';
- var auxTexto = '';
- var auxPercent = 0;
- var cor = 'transparent';
- var t = '';
- for (var i = 0; i < 4; i++) {
- t = '';
- cor = 'transparent';
- if (spots[i] != undefined) {
- cor = spots[i].cor;
- t = spots[i].texto;
- }
- if ((auxColor != cor || auxTexto != t) && auxColor !== '') {
- texto = texto + '<span style="text-align:center;width: ' + auxPercent + '%;display: inline-block;color:' + darkOrLight(auxColor) + '!important;">' + auxTexto + '</span>';
- auxPercent = 0;
- }
- spots[i] = cor + ' ' + (i * 25) + '%, ' + cor + ' ' + ((i + 1) * 25) + '%';
- auxPercent = auxPercent + 25;
- auxColor = cor;
- auxTexto = t;
- }
- texto = texto + '<span style="text-align:center;width: ' + auxPercent + '%;display: inline-block;color:' + darkOrLight(auxColor) + '!important;">' + auxTexto + '</span>';
- var s = "";
- for (var i in spots) {
- s += spots[i] + ", ";
- }
- s = s.substring(0, s.length - 2);
- background = 'background:linear-gradient(to right,' + s + ')!important;';
- rows = rows + '<td style="' + background + border + '">' + texto + '</td>';
- }
- });
- rows = rows + '<td class="headcolFim"></td></tr>';
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement