function activityDetails( objActivity, decoded, path, isMail, repeat){ tasks = {length: 0}; if(path == undefined) path = ""; if( !decoded ) objActivity = DataLayer.decode( "schedulable:group", objActivity ); if(!isMail) objActivity = DataLayer.encode( "schedulable:activity", objActivity ); var registerStatus = function(){ var blkAuto = UI.dialogs.addActivity.find('#group_addactivity_details1'); var startDate = false; var endDate = new Date; var dueDate = new Date; var percentage = 0; var allDay = true; var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; if(tasks.length == 0){ startDate = new Date(); var configData = (startDate.toString('mm') < 30) ? {minutes: (30 - parseInt(startDate.toString('mm')))} : {hours: 1, minutes: '-'+startDate.toString('mm')}; startDate.add(configData); endDate = new Date(dateCalendar.decodeRange(startDate, (!!User.preferences.defaultCalendar ? ( !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration) : (User.preferences.defaultDuration)) : (User.preferences.defaultDuration)))); blkAuto.find('input[name="startDate"]').val(startDate.toString(User.preferences.dateFormat )); blkAuto.find('input[name="startHour"]').val(startDate.toString(User.preferences.hourFormat )); blkAuto.find('input[name="endDate"]').val(endDate.toString(User.preferences.dateFormat )); blkAuto.find('input[name="endHour"]').val(endDate.toString(User.preferences.hourFormat )); blkAuto.find('input[name="dueDate"]').val(''); blkAuto.find('input[name="dueHour"]').val(''); blkAuto.find('input[name="percentage"]').val(percentage); blkAuto.find('input[name="allDay"]').attr('checked', false); return true; } for (var i in tasks){ if(i == 'length') continue; var statusActivity = tasks[i].status ; stTime = Date.parseExact( tasks[i].startDate + " "+$.trim( tasks[i].startHour) , formatString); enTime = Date.parseExact( tasks[i].endDate + " "+$.trim( tasks[i].endHour), formatString ); startDate = (startDate && startDate.compareTo(stTime) == -1) ? startDate : stTime; endDate = endDate.compareTo(enTime) == -1 ? enTime : endDate; if(tasks[i].dueDate != ''){ pvTime = Date.parseExact( tasks[i].dueDate + " "+$.trim( tasks[i].dueTime), formatString ); dueDate = dueDate.compareTo(pvTime) == -1 ? pvTime : dueDate; } if(parseInt(tasks[i].percentage) > 0) percentage += parseInt((100 / tasks.length)) * ( parseInt(tasks[i].percentage) / 100); } todoStatus('addActivity', (statusActivity != undefined) ? statusActivity : 1); UI.dialogs.addActivity.find('select[name="activityStatus"] option[value="'+statusActivity+'"]').attr('selected','selected'); dueDate = dueDate.compareTo(endDate) == -1 ? endDate : dueDate; blkAuto.find('input[name="startDate"]').val(startDate.toString(User.preferences.dateFormat )); blkAuto.find('input[name="startHour"]').val(startDate.toString(User.preferences.hourFormat )); blkAuto.find('input[name="endDate"]').val(endDate.toString(User.preferences.dateFormat )); blkAuto.find('input[name="endHour"]').val(endDate.toString(User.preferences.hourFormat )); blkAuto.find('input[name="dueDate"]').val(dueDate.toString(User.preferences.dateFormat )); blkAuto.find('input[name="dueHour"]').val(dueDate.toString(User.preferences.hourFormat )); blkAuto.find('input[name="percentage"]').val(percentage); blkAuto.find('input[name="allDay"]').attr('checked', (!!(startDate.compareTo(endDate) == 0) || (startDate.toString('HH:mm') == endDate.toString('HH:mm')) ? true : false)); } var callbackTask = function(){ blkAddTask.find("li .button").filter(".close.new").button({ icons: { primary: "ui-icon-close" }, text: false }).click(function () { delete tasks[$(this).parents('li').find('input[name="idtask[]"]').val()] tasks.length += -1; idTaskToActivity = $(this).parents('li').find('input[name="idTaskToActivity[]"]').val() if(idTaskToActivity != '') DataLayer.remove('taskToActivity', idTaskToActivity); $(this).parents('li').remove(); if(blkAddTask.find(".task-activity-list li").length == 1) blkAddTask.find("li.not-activity ").removeClass('hidden'); registerStatus(); }) .addClass('tiny disable ui-button-disabled ui-state-disabled') .removeClass('new').end() .filter(".info.new").button({ icons: { primary: "ui-icon-notice" }, text: false }).click(function () { var positionY = $(this).parents("li").offset().top; var name = $(this).parents('li').find("div").find(".name").text(); var email = $(this).parents('li').find("div").find(".mail").text() if( $('.qtip.qtip-blue.qtip-active').val() !== ''){ $(this).qtip({ show: { ready: true, solo: true, when: { event: 'click' } }, hide: false, content: { text: $('
').html( DataLayer.render( path + 'templates/activity_information_task.ejs', { 'name' : name } ) ), title: { text:'Informações', button: 'close' } }, style: { name: 'blue', tip: { }, border: { width: 4, radius: 8 }, width: { min: 230, max:230 } }, position: { corner: { target: 'rightMiddle', tooltip: 'leftMiddle' }, adjust: { x: 30, y: 0 } } }) .qtip("api").onShow = function(arg0) { $('.qtip-active .button.close').button({ icons: { primary: "ui-icon-close" }, text: false }) .click(function(){ blkAddAtendee.find('dd.task-activity-list').qtip('destroy'); }); $('.qtip-active .button.cancel').button().click(function(){ blkAddAtendee.find('dd.activity-list [type=checkbox]').attr('checked', false); blkAddAtendee.find('dd.activity-list').qtip('destroy'); }); $('.qtip .button').button(); }; } }) .addClass('tiny disable ui-button-disabled ui-state-disabled') .removeClass('new').end() UI.dialogs.addActivity.find('.task-activity-list li').hover( function () { $(this).addClass("hover-attendee"); $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() .find('.activity-options').addClass('hover-attendee'); }, function () { $(this).removeClass("hover-attendee"); $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() .find('.activity-options').removeClass('hover-attendee'); } ); } /** * canDiscardActivityDialog deve ser true se não houver alterações no evento */ canDiscardActivityDialog = true; /** * zebraDiscardActivityDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog) * já está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la */ zebraDiscardActivityDialog = false; var html = DataLayer.render( path+'templates/activity_add.ejs', { activity:objActivity }); if (!UI.dialogs.addActivity) { UI.dialogs.addActivity = jQuery('#sandbox').append('
').find('.new-activity-win.active').html(html).dialog({ resizable: false, modal:true, autoOpen: false, width:734, position: 'center', close: function(event, ui) { /** * Remove tooltip possivelmente existente */ if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); attendees = {}; }, beforeClose: function(event, ui) { if (!canDiscardActivityDialog && !zebraDiscardActivityDialog) { zebraDiscardActivityDialog = true; window.setTimeout(function() { $.Zebra_Dialog('Suas alterações na atividade não foram salvas. Deseja descartar as alterações?', { 'type': 'question', 'overlay_opacity': '0.5', 'buttons': ['Descartar alterações', 'Continuar editando'], 'onClose': function(clicked) { if(clicked == 'Descartar alterações') { canDiscardActivityDialog = true; /** *Remoção dos anexos do eventos caso seja cancelado a edição */ DataLayer.rollback(); var ids = false; $.each($('.attachment-list input'), function (i, input) { DataLayer.put('attachment', {id: ''+input.value}); DataLayer.remove('attachment', ''+input.value); ids = true; }); if(ids) DataLayer.commit(); UI.dialogs.addActivity.dialog('close'); }else{ zebraDiscardActivityDialog = false; } /** * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la * com ESC, para que o evento ESC não seja propagado para fechamento da * janela de edição de eventos, deve ser setada uma flag indicando que * já existe uma janela de confirmação aberta. */ if (!clicked) { window.setTimeout(function() { zebraDiscardActivityDialog = false; }, 200); } } }); }, 300); } //DataLayer.rollback(); return canDiscardActivityDialog; }, dragStart: function(event, ui) { if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); } }); } else { UI.dialogs.addActivity.html(html); } /* Checkbox allday */ UI.dialogs.addActivity.find('input[name="allDay"]').click(function(){ $(this).attr("checked") ? UI.dialogs.addActivity.find('.start-time, .end-time').addClass('hidden') : UI.dialogs.addActivity.find('.start-time, .end-time').removeClass('hidden'); }); var tabs = UI.dialogs.addActivity.children('.content').tabs({ select: function(event, ui) { if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); } }); var group = DataLayer.get('calendar', objActivity.group); if (group.timezone != objActivity.timezone){ UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').find('option[value="'+objActivity.timezone+'"]').attr('selected','selected').trigger('change'); UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').addClass('hidden'); $('.group-addevent-details-txt-timezone').removeClass('hidden'); } UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').click(function(e){ $(this).addClass('hidden'); $('.group-addactivity-details-txt-timezone').removeClass('hidden'); e.preventDefault(); }); UI.dialogs.addActivity.find('.button.remove').button({ text:false, icons:{ primary:'ui-icon-close' } }).click(function(el){ var id; if( id = $(this).parent().find('input[name="alarmId[]"]').val()) DataLayer.remove('alarm', id); $(this).parent().remove().find('li').is(':empty'); }); UI.dialogs.addActivity.find('.button-add-alarms').click(function(){ DataLayer.render( 'templates/alarms_add_itemlist.ejs', {type: 0}, function( template ){ jQuery('.activity-alarms-list').append(template) .find('li:last label:eq(0)').remove().end() .find('.number').numeric().end() .find('.button.remove').button({ text:false, icons:{ primary:'ui-icon-close' } }).click(function(el) { $(this).parent().remove(); }); }); }); /*Seleciona a agenda padrão para visualização/edição de um evento*/ if(objActivity.id) UI.dialogs.addActivity.find('select[name="group"] option[value="'+objActivity.group+'"]').attr('selected','selected').trigger('change'); UI.dialogs.addActivity.find('.button').button(); UI.dialogs.addActivity.find('.button.add').button({ icons: { secondary: "ui-icon-plus" } }); todoStatus('addActivity', (objActivity.activityStatus != undefined) ? objActivity.activityStatus : 1); // ==== validation events ==== UI.dialogs.addActivity.find(".input-group .h1").Watermark("Atividade sem título"); UI.dialogs.addActivity.find(".number").numeric(); User.preferences.dateFormat.indexOf('-') > 0 ? UI.dialogs.addActivity.find(".date").mask("99-99-9999", { completed:function(){ updateMap(); } }) : UI.dialogs.addActivity.find(".date").mask("99/99/9999", { completed:function(){ updateMap(); } }); UI.dialogs.addActivity.find(".menu-addactivity") .children(".delete").click(function(){ $.Zebra_Dialog('Tem certeza que deseja excluir a atividade?', { 'type': 'question', 'overlay_opacity': '0.5', 'buttons': ['Sim', 'Não'], 'onClose': function(clicked) { if(clicked == 'Sim'){ canDiscardActivityDialog = true; /* Remove por filtro */ DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objActivity.id], ['=', 'group', objActivity.group], ['=','user',(objActivity.me.user ? objActivity.me.user.id : objActivity.me.id)]]}); Calendar.rerenderView(true); /********************/ UI.dialogs.addActivity.dialog("close"); } } }); }).end() .children(".cancel").click(function(){ UI.dialogs.addActivity.dialog("close"); }).end() .children(".save").click(function(){ /* Validação var msg = false; if(msg = validDateEvent()){ $(".new-activity-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); return false; } */ canDiscardActivityDialog = true; UI.dialogs.addActivity.children().find('form.form-addactivity').submit(); UI.dialogs.addActivity.dialog("close"); }).end() .children(".export").click(function(){ UI.dialogs.addActivity.children().find(".form-export").submit(); }); var task_activityHtml = DataLayer.render( path+'templates/task_activity_add.ejs', { activity: objActivity}); var blkAddTask = UI.dialogs.addActivity.find('#group_addactivity_details8').append(task_activityHtml); var dates = UI.dialogs.addActivity.find('input.date').datepicker({ dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'), onSelect : function( selectedDate ){ updateMap(); } }); blkAddTask.find('.add-activity-search .ui-icon-search').click(function(event) { blkAddTask.find('.add-activity-search input').keydown(); }); blkAddTask.find('.add-activity-search input').keydown(function(event) { if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') { // Fazer get das tarefas var filter = { filter: ['AND', ['=', 'type', '2'], ['>=','startTime', $.now()], ['in', 'calendar', [$('div.new-activity-win.active select[name="groupFilter"]').val()] ] ], criteria: {'filterTasks': true} }; if($(this).val() != ''){ filter['filter'].push(['OR', ["i*", "summary", $(this).val()], ["i*", "description", $(this).val()] ]); } var result = DataLayer.get('schedulable:taskSearch', filter, true) /** * TODO: trocar por template */ blkAddTask.find('ul.search-result-list').empty().css('overflow', 'hidden'); if (!result) { blkAddTask.find('ul.search-result-list').append('
  • '); }else{ for(i=0; i 10) attach.fileName = ext.length == 1 ? file.name.substr(0, 10) : file.name.substr(0, 6) + '.' + ext[ext.length -1]; attach.fileSize = formatBytes(file.size); if(file.size > maxSizeFile) attach.error = 'Tamanho de arquivo nao permitido!!' $('.attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', { file : attach })); if(file.size < maxSizeFile){ $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new'); $('.attachments-list').find('[type=file]').addClass('hidden'); }else $('.fileinput-button.new').removeClass('new'); $('.attachments-list').find('.button.close').button({ icons: { primary: "ui-icon-close" }, text: false }).click(function(){ var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); $('.attachment-list').find('input[value="'+idAttach+'"]') $(this).parent().remove(); }); }) }, done: function(e, data){ var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); if(!!data.result && data.result != "[]"){ var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); $('.attachment-list').append(''); currentUpload.removeClass('on-complete').parents('p') .append('') .find('.status-upload').addClass('ui-icon ui-icon-check'); }else currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); } }); $('.attachments-list .button').button(); if(!!window.FormData) $('#fileupload').bind('fileuploadstart', function () { var widget = $(this), progressElement = $('#fileupload-progress').fadeIn(), interval = 500, total = 0, loaded = 0, loadedBefore = 0, progressTimer, progressHandler = function (e, data) { loaded = data.loaded; total = data.total; }, stopHandler = function () { widget .unbind('fileuploadprogressall', progressHandler) .unbind('fileuploadstop', stopHandler); window.clearInterval(progressTimer); progressElement.fadeOut(function () { progressElement.html(''); }); }, formatTime = function (seconds) { var date = new Date(seconds * 1000); return ('0' + date.getUTCHours()).slice(-2) + ':' + ('0' + date.getUTCMinutes()).slice(-2) + ':' + ('0' + date.getUTCSeconds()).slice(-2); }, /* formatBytes = function (bytes) { if (bytes >= 1000000000) { return (bytes / 1000000000).toFixed(2) + ' GB'; } if (bytes >= 1000000) { return (bytes / 1000000).toFixed(2) + ' MB'; } if (bytes >= 1000) { return (bytes / 1000).toFixed(2) + ' KB'; } return bytes + ' B'; },*/ formatPercentage = function (floatValue) { return (floatValue * 100).toFixed(2) + ' %'; }, updateProgressElement = function (loaded, total, bps) { progressElement.html( formatBytes(bps) + 'ps | ' + formatTime((total - loaded) / bps) + ' | ' + formatPercentage(loaded / total) + ' | ' + formatBytes(loaded) + ' / ' + formatBytes(total) ); }, intervalHandler = function () { var diff = loaded - loadedBefore; if (!diff) { return; } loadedBefore = loaded; updateProgressElement( loaded, total, diff * (1000 / interval) ); }; widget .bind('fileuploadprogressall', progressHandler) .bind('fileuploadstop', stopHandler); progressTimer = window.setInterval(intervalHandler, interval); }); UI.dialogs.addActivity.find(':input').change(function(event){ if (event.keyCode != '27' && event.keyCode != '13') canDiscardActivityDialog = false; }).keydown(function(event){ if (event.keyCode != '27' && event.keyCode != '13') canDiscardActivityDialog = false; }); UI.dialogs.addActivity.dialog('open'); }