source: sandbox/2.4.2-expresso1/prototype/modules/calendar/js/task.helpers.js @ 6876

Revision 6876, 28.5 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2966 - Criacao e edicao de tarefas / suporte a anexos, alarmes, participantes e mapa de disponibilidade

  • Property svn:executable set to *
Line 
1function taskDetails(objTask, decoded, path, isMail, repeat) {
2
3    $('.qtip.qtip-blue').remove();
4
5    attendees = {};
6
7    if (path == undefined) path = "";
8
9    if (!decoded) objTask = DataLayer.decode("task:calendar", objTask);
10
11    if (!isMail) objTask = DataLayer.encode("schedulable:task", objTask);
12
13    if (typeof (objTask.id) == 'undefined') {
14        objTask.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false;
15        objTask.useAlarmDefault = 1;
16    }
17
18
19    if(objTask.me.id == User.me.id){
20        objTask.me.id = DataLayer.put('participant', {
21            user: objTask.me.id,
22            mail: objTask.me.mail
23        });
24        objTask.organizer.id = objTask.me.id;
25    }
26
27    var dependsDelegate = function(reference, inverse){
28        if(inverse){
29            if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())
30                blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
31        }else{
32            if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())
33                blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val());
34        }
35    };
36
37    var removeOthers = function(){
38        var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button');
39        if(other.lenght)
40            dependsDelegate(other.parents('li'), true);
41
42        blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button');
43        blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change');
44   
45    };
46
47    var callbackAttendee = function(){
48        var checked = false;
49        blkAddAtendee.find("li.not-attendee").addClass('hidden');
50       
51        blkAddAtendee.find("li .button").filter(".close.new").button({
52            icons: {
53            primary: "ui-icon-close"
54            },
55            text: false
56        }).click(function () {
57            DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());
58            if($(this).parent().find('.button.delegate').hasClass('attendee-permissions-change-button')){
59                removeOthers();
60                blkAddAtendee.find('.request-update').addClass('hidden');
61                blkAddAtendee.find('.status option').toggleClass('hidden');
62                       
63                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');
64            }
65               
66            $(this).parents('li').remove();
67               
68            if(blkAddAtendee.find(".attendee-list li").length == 1)
69                blkAddAtendee.find("li.not-attendee").removeClass('hidden');
70        })
71        .addClass('tiny disable ui-button-disabled ui-state-disabled')
72        .removeClass('new').end()
73       
74        .filter(".delegate.new").button({
75            icons: {
76                primary: "ui-icon-transferthick-e-w"
77            },
78            text: false
79        }).click(function () {
80            var me = $(this).parents('li');
81            if($(this).hasClass('attendee-permissions-change-button')){
82                $(this).removeClass('attendee-permissions-change-button')   
83                .find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change').end();               
84           
85                me.find('input[name="delegatedFrom[]"]').val('');
86                dependsDelegate(me, true);
87                       
88                blkAddAtendee.find('.request-update').addClass('hidden');
89                blkAddAtendee.find('.status option').toggleClass('hidden');
90
91                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');
92                   
93            }else{
94                removeOthers();
95               
96                $(this).addClass('attendee-permissions-change-button')   
97                .find('.ui-icon-transferthick-e-w').addClass('attendee-permissions-change').end();               
98               
99                me.find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
100               
101                dependsDelegate(me, false);
102                   
103                blkAddAtendee.find('.request-update').removeClass('hidden');
104                if(blkAddAtendee.find('.status option.hidden').length == 1)
105                    blkAddAtendee.find('.status option').toggleClass('hidden');
106                   
107                blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change');
108            }
109        })
110        .addClass('tiny disable ui-button-disabled ui-state-disabled')
111        .removeClass('new').end()           
112           
113        .filter(".open-delegate.new").click(function(){
114            if($(this).hasClass('ui-icon-triangle-1-e')){
115                $(this).removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');
116                $(this).parents('li').find('.list-delegates').removeClass('hidden');
117            }else{
118                $(this).removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');
119                $(this).parents('li').find('.list-delegates').addClass('hidden');
120            }
121           
122        }).removeClass('new');
123
124        UI.dialogs.addTask.find('.attendees-list li').hover(
125            function () {
126                $(this).addClass("hover-attendee");
127                $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end()
128                .find('.attendee-options').addClass('hover-attendee');
129            },
130            function () {
131                $(this).removeClass("hover-attendee");
132                $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end()
133                .find('.attendee-options').removeClass('hover-attendee');
134            }
135        );       
136    }
137
138    /**
139     * canDiscardTaskDialog deve ser true se não houver alterações no task
140     */
141    canDiscardTaskDialog = true;
142    /**
143     * zebraDiscardTaskDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog)
144     * já estão aberta na tela, uma vez que não é possivel acessar o task ESC utilizado para fechá-la
145     */
146    zebraDiscardTaskDialog = false;
147
148    var html = DataLayer.render(path + 'templates/task_add.ejs', {
149        task: objTask
150    });
151
152    if (!UI.dialogs.addTask) {
153
154        UI.dialogs.addTask = jQuery('#sandbox').append('<div title="Criar tarefa" class="new-task-win active"> <div>').find('.new-task-win.active').html(html).dialog({
155            resizable: false,
156            modal: true,
157            autoOpen: false,
158            width: 774,
159            position: 'center',
160            close: function (event, ui) {
161                /**
162                 * Remove tooltip possivelmente existente
163                 */
164                if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy');
165                attendees = {};
166            },
167            beforeClose: function (event, ui) {
168
169                if (!canDiscardTaskDialog && !zebraDiscardTaskDialog) {
170                    zebraDiscardTaskDialog = true;
171                    window.setTimeout(function () {
172                        $.Zebra_Dialog('Suas alterações na tarefa não foram salvas. Deseja descartar as alterações?', {
173                            'type': 'question',
174                            'overlay_opacity': '0.5',
175                            'buttons': ['Descartar alterações', 'Continuar editando'],
176                            'onClose': function (clicked) {
177                                if (clicked == 'Descartar alterações') {
178                                    canDiscardTaskDialog = true;
179                                    /**
180                                     *Remoção dos anexos da task caso seja cancelado a ediçãoo
181                                     */
182                                    DataLayer.rollback();
183
184                                    var ids = false;
185                                    $.each($('.attachment-list input'), function (i, input) {
186                                        DataLayer.put('attachment', {
187                                            id: '' + input.value
188                                        });
189                                        DataLayer.remove('attachment', '' + input.value);
190                                        ids = true;
191                                    });
192                                    if (ids) DataLayer.commit();
193
194                                    UI.dialogs.addTask.dialog('close');
195                                } else {
196                                    zebraDiscardTaskDialog = false;
197                                }
198
199                                /**
200                                 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la
201                                 * com ESC, para que o task ESC nÃo seja propagado para fechamento da
202                                 * janela de edição de tasks, deve ser setada uma flag indicando que
203                                 * já existe uma janela de confirmação aberta.
204                                 */
205                                if (!clicked) {
206                                    window.setTimeout(function () {
207                                        zebraDiscardTaskDialog = false;
208                                    }, 200);
209                                }
210                            }
211                        });
212
213                    }, 300);
214
215                }
216                //DataLayer.rollback();
217                return canDiscardTaskDialog;
218            },
219            dragStart: function (task, ui) {
220                if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy');
221            }
222        });
223
224    } else {
225        UI.dialogs.addTask.html(html);
226    }
227
228    var tabs = UI.dialogs.addTask.children('.content').tabs({
229        select: function (task, ui) {
230            if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy');
231        }
232    });
233    var group = DataLayer.get('calendar', objTask.group);
234
235    if (group.timezone != objTask.timezone) {
236        UI.dialogs.addTask.find('.calendar-addtask-details-txt-timezone').find('option[value="' + objTask.timezone + '"]').attr('selected', 'selected').trigger('change');
237        UI.dialogs.addTask.find('.calendar_addtask_details_lnk_timezone').addClass('hidden');
238        $('.calendar-addtask-details-txt-timezone').removeClass('hidden');
239
240    }
241
242    UI.dialogs.addTask.find('.calendar_addtask_details_lnk_timezone').click(function (e) {
243        $(this).addClass('hidden');
244        $('.calendar-addtask-details-txt-timezone').removeClass('hidden');
245        e.prtaskDefault();
246    });
247
248    UI.dialogs.addTask.find('.button.remove').button({
249    text:false,
250    icons:{
251        primary:'ui-icon-close'
252    }
253    }).click(function(el){
254        var id;
255        if( id = $(this).parent().find('input[name="alarmId[]"]').val())
256        DataLayer.remove('alarm', id);
257        $(this).parent().remove().find('li').is(':empty');
258    });
259
260    /*Seleciona a agenda padrão para visualização edição de um task*/
261    if (objTask.id) UI.dialogs.addTask.find('option[value="' + objTask.group + '"]').attr('selected', 'selected').trigger('change');
262
263    /* Checkbox allday */
264    UI.dialogs.addTask.find('input[name="allDay"]').click(function () {
265        $(this).attr("checked") ? UI.dialogs.addTask.find('.start-time, .end-time').addClass('hidden') : UI.dialogs.addTask.find('.start-time, .end-time').removeClass('hidden');
266        updateMap(true);
267    });
268
269    UI.dialogs.addTask.find('.button').button();
270    UI.dialogs.addTask.find('.button.add').button({
271        icons: {
272            secondary: "ui-icon-plus"
273        }
274    });
275
276    // ==== validation tasks ====
277    UI.dialogs.addTask.find(".input-group .h1").Watermark("Tarefa sem título");
278    if (User.preferences.hourFormat.length == 5) {
279        UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99", {
280            completed: function () {
281                updateMap();
282            }
283        });
284    } else {
285        $.mask.definitions['{'] = '[ap]';
286        $.mask.definitions['}'] = '[m]';
287        UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99 {}", {
288            completed: function () {
289                $(this).val(date.Calendar.defaultToAmPm($(this).val()));
290                $(this).timepicker("refresh");
291                $(this).val($(this).val().replace(/[\.]/gi, ""));
292                updateMap();
293            }
294        });
295    }
296    UI.dialogs.addTask.find(".number").numeric();
297    User.preferences.dateFormat.indexOf('-') > 0 ? UI.dialogs.addTask.find(".date").mask("99-99-9999", {
298        completed: function () {
299            updateMap();
300        }
301    }) : UI.dialogs.addTask.find(".date").mask("99/99/9999", {
302        completed: function () {
303            updateMap();
304        }
305    });
306
307    UI.dialogs.addTask.find(".menu-addtask").children(".delete").click(function () {
308        $.Zebra_Dialog('Tem certeza que deseja excluir esta tarefa?', {
309            'type': 'question',
310            'overlay_opacity': '0.5',
311            'buttons': ['Sim', 'Não'],
312            'onClose': function (clicked) {
313                if (clicked == 'Sim') {
314                    canDiscardTaskDialog = true; /* Remove por filtro */
315                    DataLayer.removeFilter('schedulable', {
316                        filter: ['AND', ['=', 'id', objTask.id],
317                            ['=', 'calendar', objTask.group],
318                            ['=', 'user', (objTask.me.user ? objTask.me.user.id : objTask.me.id)]
319                        ]
320                    });
321                    Calendar.rerenderView(true); /********************/
322                    UI.dialogs.addTask.dialog("close");
323                }
324            }
325        });
326    }).end()
327
328    .children(".cancel").click(function () {
329        UI.dialogs.addTask.dialog("close");
330    }).end()
331
332    .children(".save").click(function () { /* Validação */
333        /*if (msg = validDateTask()) {
334            $(".new-task-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);
335            return false;
336        }*/
337
338        UI.dialogs.addTask.children().find('form.form-addtask').submit();
339        UI.dialogs.addTask.dialog("close");
340
341    }).end()
342
343    .children(".export").click(function () {
344        UI.dialogs.addTask.children().find(".form-export").submit();
345    });
346
347    var attendeeHtml = DataLayer.render(path + 'templates/attendees_task.ejs', {
348        task: objTask
349    });
350
351    // load template of attendees
352    var blkAddAtendee = UI.dialogs.addTask.find('#calendar_addtask_details6').append(attendeeHtml);
353
354    if(objTask.attendee.length)
355        callbackAttendee();
356
357    /*
358     *   Opções de delegação do participante/organizer
359     */     
360    blkAddAtendee.find(".button.participant-delegate").button({
361        icons: {
362        primary: "ui-icon-transferthick-e-w"
363        },
364        text: false
365    }).click(function () {
366        if($(this).hasClass('attendee-permissions-change-button')){
367        if(!$(this).hasClass('disable')){
368            $(this).removeClass('attendee-permissions-change-button')   
369            .find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change').end();               
370            blkAddAtendee.find('.block-add-attendee.search').addClass('hidden');
371            blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos');
372        }
373        }else{                                 
374        $(this).addClass('attendee-permissions-change-button')   
375        .find('.ui-icon-transferthick-e-w').addClass('attendee-permissions-change').end();               
376        blkAddAtendee.find('.block-add-attendee.search dt').html('Delegar participação para');
377        blkAddAtendee.find('.block-add-attendee.search').removeClass('hidden');
378        blkAddAtendee.find('.block-add-attendee.search input.search').focus();
379        }
380    })
381    .addClass('tiny');
382
383    var dates = UI.dialogs.addTask.find('input.date').datepicker({
384        dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'),
385        onSelect: function (selectedDate) {
386            updateMap();
387        }
388    });
389
390    UI.dialogs.addTask.find('input.time').timepicker({
391        closeText: 'Ok',
392        hourGrid: 4,
393        minuteGrid: 10,
394        ampm: ((User.preferences.hourFormat.length > 5) ? true : false),
395        timeFormat: "hh:mm tt",
396        onSelect: function (selectedDateTime) {
397            if (!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, ""));
398            updateMap();
399        },
400        onClose: function (selectedDateTime) {
401            if (!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, ""));
402        }
403    });
404
405    blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function (task) {
406        blkAddAtendee.find('.add-attendee-search input').keydown();
407    });
408
409    blkAddAtendee.find('.add-attendee-search input').keydown(function (task) {
410
411        if (task.keyCode == '13' || typeof (task.keyCode) == 'undefined') {
412            var result = DataLayer.get('user', ["*", "name", $(this).val()], true);
413
414            /**
415             * TODO: trocar por template
416             */
417            blkAddAtendee.find('ul.search-result-list').empty().css('overflow', 'hidden');
418            if (!result) {
419                blkAddAtendee.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>');
420            }
421
422            for (i = 0; i < result.length; i++)
423            result[i].enabled = (blkAddAtendee.find('dd.attendee-list ul.attendee-list label.mail[title="' + result[i].mail + '"]').length) ? false : true;
424
425            blkAddAtendee.find('ul.search-result-list').append(DataLayer.render(path + 'templates/participants_search_itemlist.ejs', result));
426
427            blkAddAtendee.find('ul.search-result-list li').click(function (task, ui) {
428                if ($(task.target).is('input')) {
429                    old_item = $(task.target).parents('li');
430                    newAttendeeId = DataLayer.put('participant', {
431                        user: old_item.find('.id').html(),
432                        isExternal: old_item.find('.isExternal').html()
433                    });
434
435                    attendees[old_item.find('.id').html()] = old_item.find('.name').html();
436
437                    blkAddAtendee.find('dd.attendee-list ul.attendee-list').append(DataLayer.render(path + 'templates/participants_add_itemlist.ejs', [{
438                        id: newAttendeeId,
439                        name: old_item.find('.name').html(),
440                        mail: old_item.find('.mail').html(),
441                        isExternal: old_item.find('.isExternal').html(),
442                        notEvent: true,
443                        isDirty: !! !objTask.id
444                    }])).scrollTo('max');
445                    /**
446                     * Delegação de participação de um participante com permissão apenas de leitura
447                     *
448                     */
449                    if (objTask.me.id != objTask.organizer.id) {
450
451                        blkAddAtendee.find('.block-add-attendee.search').addClass('hidden');
452                        blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos');
453
454                        blkAddAtendee.find('.status option').toggleClass('hidden');
455                        blkAddAtendee.find('option[value=5]').attr('selected', 'selected').trigger('change');
456                        blkAddAtendee.find('.request-update').removeClass('hidden');
457
458                        blkAddAtendee.find('dd.attendee-list ul.attendee-list li .button.close').parents('li').find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
459
460                        blkAddAtendee.find('.me .participant-delegate').addClass('disable ui-button-disabled ui-state-disabled');
461                        blkAddAtendee.find(".button.close").button({
462                            icons: {
463                                primary: "ui-icon-close"
464                            },
465                            text: false
466                        }).click(function () {
467
468                            $(this).parents('li').find('input[name="delegatedFrom[]"]').val('');
469                            blkAddAtendee.find('.request-update').addClass('hidden');
470                            blkAddAtendee.find('.status option').toggleClass('hidden');
471                            blkAddAtendee.find('option[value=1]').attr('selected', 'selected').trigger('change');
472                            blkAddAtendee.find('.me .participant-delegate').removeClass('disable ui-button-disabled ui-state-disabled attendee-permissions-change-button').find('.ui-icon-person').removeClass('attendee-permissions-change').end();
473
474                            DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());
475                            $(this).parents('li').remove();
476                        }).addClass('tiny');
477                    } else {
478                        callbackAttendee();
479                        old_item.remove();
480                    }
481                }
482            });
483
484            event.preventDefault();
485        }
486    });
487
488    UI.dialogs.addTask.find('.row.fileupload-buttonbar-task .button').filter('.delete').button({
489        icons: {
490            primary: "ui-icon-close"
491        },
492        text: 'Excluir'
493    }).click(function () {
494        $.Zebra_Dialog('Tem certeza que deseja excluir todos anexos?', {
495            'type': 'question',
496            'overlay_opacity': '0.5',
497            'buttons': ['Sim', 'Não'],
498            'onClose': function (clicked) {
499                if (clicked == 'Sim') {
500
501                    var ids = [];
502                    $.each($('.attachment-list input'), function (i, input) {
503                        DataLayer.remove('schedulableToAttachment', {
504                            filter: ['=', 'id', '' + input.value]
505                        });
506                    });
507                    $('.attachment-list input').remove();
508                    $('.row.fileupload-buttonbar .attachments-list p').remove();
509                }
510            }
511        });
512    }).end().filter('.close').button({
513        icons: {
514            primary: "ui-icon-close"
515        },
516        text: false
517    }).click(function () {
518        DataLayer.remove('schedulableToAttachment', $(this).parents('p').find('input[name="fileId[]"]').val());
519        $(this).parents('p').remove();
520    }).end().filter('.downlaod-archive').button({
521        icons: {
522            primary: "ui-icon-arrowthickstop-1-s"
523        },
524        text: false
525    });
526    var maxSizeFile = 2000000;
527    $('#fileupload').fileupload({
528        sequentialUploads: true,
529        add: function (e, data) {
530            if (data.files[0].size < maxSizeFile) data.submit();
531        },
532        change: function (e, data) {
533            $.each(data.files, function (index, file) {
534                var attach = {};
535                attach.fileName = file.name;
536                var ext = file.name.split('.');
537                if (file.name.length > 10) attach.fileName = ext.length == 1 ? file.name.substr(0, 10) : file.name.substr(0, 6) + '.' + ext[ext.length - 1];
538                attach.fileSize = formatBytes(file.size);
539                if (file.size > maxSizeFile) attach.error = 'Tamanho de arquivo nao permitido!!'
540
541                $('.attachments-list').append(DataLayer.render(path + 'templates/attachment_add_itemlist.ejs', {
542                    file: attach
543                }));
544
545                if (file.size < maxSizeFile) {
546                    $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new');
547                    $('.attachments-list').find('[type=file]').addClass('hidden');
548
549                } else $('.fileinput-button.new').removeClass('new');
550
551
552                $('.attachments-list').find('.button.close').button({
553                    icons: {
554                        primary: "ui-icon-close"
555                    },
556                    text: false
557                }).click(function () {
558                    var idAttach = $(this).parent().find('input[name="fileId[]"]').val();
559                    $('.attachment-list').find('input[value="' + idAttach + '"]')
560                    $(this).parent().remove();
561                });
562
563            })
564        },
565        done: function (e, data) {
566            var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide();
567
568            if ( !! data.result && data.result != "[]") {
569                var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data);
570                $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="' + newAttach['attachment'][0][0].id + '"/>');
571                currentUpload.removeClass('on-complete').parents('p').append('<input type="hidden" name="fileId[]" value="' + newAttach['attachment'][0][0].id + '"/>').find('.status-upload').addClass('ui-icon ui-icon-check');
572            } else currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel');
573        }
574    });
575    $('.attachments-list .button').button();
576
577    if ( !! window.FormData) $('#fileupload').bind('fileuploadstart', function () {
578        var widget = $(this),
579            progressElement = $('#fileupload-progress').fadeIn(),
580            interval = 500,
581            total = 0,
582            loaded = 0,
583            loadedBefore = 0,
584            progressTimer, progressHandler = function (e, data) {
585                loaded = data.loaded;
586                total = data.total;
587            },
588            stopHandler = function () {
589                widget.unbind('fileuploadprogressall', progressHandler).unbind('fileuploadstop', stopHandler);
590                window.clearInterval(progressTimer);
591                progressElement.fadeOut(function () {
592                    progressElement.html('');
593                });
594            },
595            formatTime = function (seconds) {
596                var date = new Date(seconds * 1000);
597                return ('0' + date.getUTCHours()).slice(-2) + ':' + ('0' + date.getUTCMinutes()).slice(-2) + ':' + ('0' + date.getUTCSeconds()).slice(-2);
598            },
599
600            formatPercentage = function (floatValue) {
601                return (floatValue * 100).toFixed(2) + ' %';
602            },
603            updateProgressElement = function (loaded, total, bps) {
604                progressElement.html(
605                formatBytes(bps) + 'ps | ' + formatTime((total - loaded) / bps) + ' | ' + formatPercentage(loaded / total) + ' | ' + formatBytes(loaded) + ' / ' + formatBytes(total));
606            },
607            intervalHandler = function () {
608                var diff = loaded - loadedBefore;
609                if (!diff) {
610                    return;
611                }
612                loadedBefore = loaded;
613                updateProgressElement(
614                loaded, total, diff * (1000 / interval));
615            };
616        widget.bind('fileuploadprogressall', progressHandler).bind('fileuploadstop', stopHandler);
617        progressTimer = window.setInterval(intervalHandler, interval);
618    });
619
620    disponibily(objTask, path, attendees, 'task');
621
622    UI.dialogs.addTask.find('.button-add-alarms').click(function () {
623        var li_attach = DataLayer.render(path + 'templates/alarms_add_itemlist.ejs', {
624            type: 1
625        });
626
627        jQuery('.task-alarms-list').append(li_attach).find('.button.remove').button({
628            text: false,
629            icons: {
630                primary: 'ui-icon-close'
631            }
632        }).click(function (el) {
633            $(this).parent().remove().find('li').is(':empty')
634        });
635        // valicacao de campos numericos
636        $('.number').numeric();
637    });
638
639
640    UI.dialogs.addTask.dialog('open');
641}
Note: See TracBrowser for help on using the repository browser.