Ignore:
Timestamp:
08/06/12 14:59:39 (12 years ago)
Author:
douglasz
Message:

Ticket #2966 - Adicionado validacoes para status das tarefas.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/js/task.helpers.js

    r6876 r6946  
     1function validDateTask(){ 
     2         
     3        var errors = { 
     4                'emptyInitData': 'Por favor, informe uma data inicial', 
     5                'emptyEndData': 'Por favor, informe uma data final', 
     6                'emptyInitHour': 'Por favor, informe uma hora inicial', 
     7                'emptyEndHour': 'Por favor, informe uma hora final', 
     8                 
     9                'invalidInitData' : 'Data inicial inválida', 
     10                'invalidEndData' : 'Data final inválida', 
     11                 
     12                'equalData' : 'Hora inicial igual a final', 
     13                'theirData' : 'Data final menor que a inicial',          
     14                'theirHour' : 'Hora final menor que a inicial', 
     15                 
     16                'dueInitDate' : 'Previsão de término menor que a data inicial',  
     17                'dueEndDate'  : 'Previsão de término menor que a data final', 
     18                'dueTime'         : 'Deve ser definido a hora da Previsão de Término', 
     19                'dueDate'         : 'Deve ser definido a Previsão de Término', 
     20                'invalidDueData' : 'Data de Previsão de Término inválida' 
     21        }; 
     22 
     23    var start_date = $(".new-task-win.active .start-date").val(); 
     24    var end_date   = $(".new-task-win.active .end-date").val(); 
     25    var start_time = $(".new-task-win.active .start-time").val(); 
     26    var end_time   = $(".new-task-win.active .end-time").val(); 
     27        var due_date   = $(".new-task-win.active .date-previsao").val(); 
     28        var due_time   =  $.trim($(".new-task-win.active .time-previsao").val()); 
     29    var isAllDay   = $('.new-task-win.active input[name="allDay"]').is(':checked'); 
     30    var customDate = $(".endRepeat").val() == "customDate"; 
     31    var occurrences = $(".endRepeat").val() == "occurrences"; 
     32    var taskInterval = $('.taskInterval').val(); 
     33     
     34    if(start_date == "") 
     35                return errors['emptyInitData']; 
     36    else if(end_date == "") 
     37                return errors['emptyEndData']; 
     38    else if(!isAllDay && start_time == "") 
     39                return errors['emptyInitHour']; 
     40    else if(!isAllDay && end_time == "") 
     41                return errors['emptyEndHour']; 
     42        else if(due_date != "" && due_time == "") 
     43                return errors['dueTime']; 
     44        else if(due_date == "" && due_time != "") 
     45                return errors['dueDate']; 
     46         
     47    var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; 
     48                 
     49    var startDate = Date.parseExact( start_date + " " + $.trim(start_time) , formatString ); 
     50    var endDate = Date.parseExact( end_date + " " + $.trim(end_time) , formatString ); 
     51        var dueDate = Date.parseExact( due_date + " " + $.trim(due_time) , formatString ); 
     52 
     53    if(startDate == null || startDate.getTime() < 0 ) 
     54                return errors['invalidInitData']; 
     55    if(endDate == null || endDate.getTime() < 0) 
     56                return errors['invalidEndData']; 
     57        if(dueDate == null &&  due_time != "") 
     58                return errors['invalidDueData']; 
     59                 
     60        if(isAllDay){ 
     61                startDate.clearTime(); 
     62                endDate.clearTime(); 
     63                if(endDate.compareTo(startDate) == -1) 
     64                        return errors['theirData']; 
     65        }else{ 
     66                var condition = endDate.compareTo(startDate); 
     67                if(condition != 1){ 
     68                        if(condition < 0){ 
     69                                startDate.clearTime(); 
     70                                endDate.clearTime(); 
     71                                condition = endDate.compareTo(startDate);                                
     72                                return (errors[ condition == 0 ? 'theirHour' : 'theirData'] ); 
     73                        } 
     74                        else 
     75                                return errors['equalData']; 
     76                } 
     77                 
     78                if (dueDate != null && dueDate.compareTo(startDate) == -1) 
     79                        return errors['dueInitDate'];            
     80        } 
     81     
     82    if (customDate)     
     83                if ( !($('.new-task-win.active .customDateEnd').val().length) ) 
     84                   return errors['emptyEndData']; 
     85 
     86    return false; 
     87} 
     88function taskStatus(status){ 
     89        if (status == "1"){ 
     90                UI.dialogs.addTask.find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('noAction'); 
     91        }else if (status == "2"){ 
     92                UI.dialogs.addTask.find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('inProcess'); 
     93        }else if (status == "3"){ 
     94                UI.dialogs.addTask.find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('finished'); 
     95        }else if (status == "4"){ 
     96                UI.dialogs.addTask.find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('canceled'); 
     97        } 
     98} 
     99 
    1100function taskDetails(objTask, decoded, path, isMail, repeat) { 
    2101 
     
    260359    /*Seleciona a agenda padrão para visualização edição de um task*/ 
    261360    if (objTask.id) UI.dialogs.addTask.find('option[value="' + objTask.group + '"]').attr('selected', 'selected').trigger('change'); 
     361         
     362        UI.dialogs.addTask.find(':input').change(function(event){ 
     363    if (event.keyCode != '27' && event.keyCode != '13') 
     364        canDiscardTaskDialog = false; 
     365        }).keydown(function(event){ 
     366                if (event.keyCode != '27' && event.keyCode != '13') 
     367                canDiscardTaskDialog = false; 
     368        }); 
    262369 
    263370    /* Checkbox allday */ 
     
    266373        updateMap(true); 
    267374    }); 
    268  
     375         
     376        if (objTask.taskStatus == "1" || objTask.taskStatus == undefined){ 
     377                taskStatus(1); 
     378        }else if (objTask.taskStatus == "2"){ 
     379                taskStatus(2); 
     380        }else if (objTask.taskStatus == "3"){ 
     381                taskStatus(3); 
     382        }else if (objTask.taskStatus == "4"){ 
     383                taskStatus(4); 
     384        } 
     385         
     386        //Concluão das Tarefas 
     387        var conclusionTask = function(e){ 
     388                var percentageTask = UI.dialogs.addTask.find('input[name="percentage"]'); 
     389                if( percentageTask.val() == "") 
     390                        percentageTask.val(0); 
     391                percentageTask.blur().focus(); 
     392                 
     393                var percentageValue = parseInt(percentageTask.val()); 
     394                var statusTask = UI.dialogs.addTask.find('select[name=taskStatus]'); 
     395                 
     396                if(percentageValue <= 0){ 
     397                        statusTask.find('option.taskStatus-noAction').attr('selected', 'selected'); 
     398                        taskStatus(1);           
     399                }else if(percentageValue == 100){ 
     400                        statusTask.find('option.taskStatus-finished').attr('selected', 'selected'); 
     401                        taskStatus(3); 
     402                }else{ 
     403                        statusTask.find('option.taskStatus-inProcess').attr('selected', 'selected'); 
     404                        taskStatus(2); 
     405                }                
     406                setTimeout(function(){ 
     407                        percentageTask[0].selectionStart = percentageTask.val().length; 
     408                        percentageTask[0].selectionEnd = percentageTask.val().length; 
     409                }, 10) 
     410        } 
     411        UI.dialogs.addTask.find('input[name="percentage"]').spinner({ min: 0, max: 100 }).keyup(conclusionTask).next().find(".ui-spinner-button").click(conclusionTask);         
     412 
     413        //Status das Tarefas 
     414        UI.dialogs.addTask.find('select[name=taskStatus]').change(function(){ 
     415                var statusSelected = $('select[name=taskStatus] option:selected').val(); 
     416                var percentageTask = UI.dialogs.addTask.find('input[name="percentage"]'); 
     417                if (statusSelected == "1"){ 
     418                        percentageTask.val(0); 
     419                        taskStatus(1); 
     420                }else if(statusSelected == "2"){ 
     421                        percentageTask.val(percentageTask.val() != 0 ? (percentageTask.val() == 100 ? 99: percentageTask.val()) : 1); 
     422                        taskStatus(2); 
     423                }else if(statusSelected == "3"){ 
     424                        percentageTask.val(100); 
     425                        taskStatus(3); 
     426                }else if(statusSelected == "4"){ 
     427                        percentageTask.val(percentageTask.val() != 100 ? percentageTask.val() : 99); 
     428                        taskStatus(4); 
     429                } 
     430        }); 
     431         
    269432    UI.dialogs.addTask.find('.button').button(); 
    270433    UI.dialogs.addTask.find('.button.add').button({ 
     
    331494 
    332495    .children(".save").click(function () { /* Validação */ 
    333         /*if (msg = validDateTask()) { 
     496        UI.dialogs.addTask.find('input[name="summary"]').focus(); 
     497                 
     498                if (msg = validDateTask()) { 
    334499            $(".new-task-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); 
    335500            return false; 
    336         }*/ 
     501        } 
     502                canDiscardTaskDialog = true; 
    337503 
    338504        UI.dialogs.addTask.children().find('form.form-addtask').submit(); 
     
    441607                        isExternal: old_item.find('.isExternal').html(), 
    442608                        notEvent: true, 
    443                         isDirty: !! !objTask.id 
     609                        isDirty: !! !objTask.id, 
     610                                                isDelegate: !!(objTask.me.id != objTask.organizer.id) 
    444611                    }])).scrollTo('max'); 
    445612                    /** 
Note: See TracChangeset for help on using the changeset viewer.