Ignore:
Timestamp:
08/06/12 10:03:03 (12 years ago)
Author:
acoutinho
Message:

Ticket #2966 - Criacao de atividades com suporte a alarmes e anexos

File:
1 edited

Legend:

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

    r6903 r6945  
    799799        }; 
    800800    }); 
    801  
     801    return (notArray ? res[0] : res); 
     802    } 
     803}); 
     804 
     805DataLayer.codec( "schedulable", "taskSearch", { 
     806 
     807    decoder: function( evtObj ){ 
     808 
     809    }, 
     810 
     811    encoder: function( evtObj ){ 
     812 
     813    var notArray = false; 
     814       
     815    if( notArray = $.type(evtObj) !== "array" ) 
     816        evtObj = [ evtObj ]; 
     817 
     818    var res = $.map(evtObj, function( objEvent ){            
     819             
     820        if(!(typeof(objEvent) == 'object')) 
     821            return (null); 
     822 
     823        return { 
     824            id: objEvent.id, 
     825            description: !!objEvent.summary ? objEvent.summary : objEvent.description, 
     826            startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
     827            startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 
     828            endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0)  ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
     829            endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)),  objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 
     830            dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
     831            dueTime: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.due)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 
     832            allDay: !!parseInt( objEvent.allDay ), 
     833            percentage: (objEvent.percentage) ? objEvent.percentage : '0' 
     834        } 
     835    }); 
     836    return (notArray ? res[0] : res); 
     837    } 
     838}); 
     839 
     840DataLayer.codec( "schedulable", "activity", { 
     841 
     842    decoder: function( evtObj ){ 
     843    Encoder.EncodeType = "entity"; 
     844     
     845    if( notArray = $.type(evtObj) !== "array" ) 
     846        evtObj = [ evtObj ]; 
     847 
     848    var pref = User.preferences; 
     849 
     850    var res = $.map(evtObj, function( form ){ 
     851     
     852        var tzId =  form.timezone || Calendar.signatureOf[form.group].calendar.timezone || User.preferences.timezone, 
     853 
     854        formatString = pref.dateFormat + " " + pref.hourFormat; 
     855 
     856        var decodeParticipants = function(attend){ 
     857            return [DataLayer.merge( 
     858                {   
     859                    user: User.me.id,  
     860                    isOrganizer: 1, 
     861                    acl: 'row', 
     862                    alarms: $.map( form.alarmTime || [], function( alarmTime, i ){ 
     863                        if( alarmTime === "" ) 
     864                            return( null ); 
     865                        return !!form.alarmId[i] ? { 
     866                            type: form.alarmType[i],  
     867                            unit: form.alarmUnit[i],  
     868                            time: form.alarmTime[i],  
     869                            id: form.alarmId[i] 
     870                            }: 
     871 
     872                            { 
     873                            type: form.alarmType[i], 
     874                            unit: form.alarmUnit[i],  
     875                            time: form.alarmTime[i] 
     876                            }; 
     877                    }) 
     878                }, attend != '0' ? {id: attend} : {})]; 
     879        }; 
     880 
     881        return DataLayer.merge({ 
     882        "class": form["class"], 
     883        startTime: Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
     884        endTime:  Date.parseExact(form.endDate + " "+$.trim(form.endHour), formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'),  //+ (!!form.allDay ? 86400000 : 0) , 
     885        due: (form.dueDate == '' )? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
     886        allDay: ( !!form.allDay ? 1 : 0 ),       
     887        status: form.taskStatus,       
     888        id: form.idActivity, 
     889        type: !!form.type ?  form.type : 2, 
     890        percentage: form.percentage, 
     891        priority: form.priority, 
     892        category: form.category, 
     893        summary: form.summary, 
     894        description: form.description, 
     895        timezone: tzId, 
     896        attachments: $.map(form.attachment || [], function( attachment, i ){ 
     897            return { 
     898            attachment: attachment 
     899            } 
     900        }), 
     901        participants: decodeParticipants(form.idAttendee), 
     902        taskToActivity:$.map( form.idtask || [], function( task, i ){ 
     903 
     904            return DataLayer.merge({ 
     905                task: task, 
     906                owner: User.me.id 
     907            }, form.idTaskToActivity[i] != '' ? {id: form.idTaskToActivity[i]} : {}); 
     908 
     909        }) 
     910        }, form.lastGroup ? (( form.lastGroup == form.group ) ? {} : {calendar: form.group, lastGroup: form.lastGroup}) : {calendar: form.group}); 
     911    }); 
     912 
     913    return notArray ? res[0] : res; 
     914    }, 
     915 
     916    encoder: function( evtObj ){ 
     917 
     918    var notArray = false; 
     919       
     920    if( notArray = $.type(evtObj) !== "array" ) 
     921        evtObj = [ evtObj ]; 
     922     
     923    var res = $.map(evtObj, function( objEvent ){            
     924             
     925        if(!(typeof(objEvent) == 'object')) 
     926            return (null); 
     927 
     928        var decodeTasks = function(obj){ 
     929 
     930            var tasks = {}, task = {}; 
     931 
     932            for(var i =0; i < obj.taskToActivity.length; i++){ 
     933 
     934                taskToActivity = DataLayer.get('taskToActivity', obj.taskToActivity[i]);  
     935                task = taskToActivity.task; 
     936 
     937                if($.type(task) != 'object') 
     938                    task = DataLayer.get('schedulable', task); 
     939 
     940                tasks[task.id] = { 
     941                    taskToActivity: taskToActivity.id, 
     942                    allDay: !!parseInt(task.allDay), 
     943                    dueDate: (!task.due || task.due == '' || task.due == '0') ? '' : new Date( parseInt(task.due) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 
     944                    dueTime: (!task.due || task.due == '' || task.due == '0') ? '' : dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(task.due)), task.timezone, obj.calendar, obj.DayLigth, 'startTime'), User.preferences.hourFormat), 
     945                    startDate: new Date( parseInt(task.startTime) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 
     946                    startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(task.startTime)), task.timezone, task.calendar, obj.DayLigth, 'startTime'), User.preferences.hourFormat), 
     947                    endDate: new Date( parseInt(task.endTime) - (!!parseInt(task.allDay) ? 86400000 : 0)  ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 
     948                    endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(task.endTime)),  task.timezone, obj.calendar, obj.DayLigth, 'endTime'), User.preferences.hourFormat), 
     949                } 
     950 
     951                tasks[task.id].description = tasks[task.id].startDate + ' - ' + (!!task.summary ? task.summary : task.description); 
     952 
     953            } 
     954 
     955            tasks.length = obj.taskToActivity.length; 
     956            return tasks; 
     957 
     958        }; 
     959 
     960        return { 
     961        "class": objEvent["class"], 
     962        id: objEvent.id, 
     963        location: objEvent.location, 
     964        category: objEvent.category, 
     965        activityStatus: objEvent.status, 
     966        groups: Calendar.groups, 
     967        group: objEvent.group ? objEvent.group : objEvent.calendar, 
     968        summary: objEvent.summary, 
     969        type: !!objEvent.type ? objEvent.type : 2, 
     970        description: objEvent.description, 
     971        timezone: objEvent.timezone, 
     972        timezones: Timezone.timezones, 
     973        percentage: (objEvent.percentage) ? objEvent.percentage : '0', 
     974        priority: objEvent.priority, 
     975        startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
     976        startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 
     977        endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0)  ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
     978        endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)),  objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 
     979        dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
     980        dueTime: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.due)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 
     981        allDay: !!parseInt( objEvent.allDay ), 
     982        historic: [], 
     983        tasks: objEvent.taskToActivity ? decodeTasks(objEvent) : {}, 
     984        attachments: $.map(objEvent.attachments || [], function( attachment, i ){ 
     985            var attach = DataLayer.get('schedulableToAttachment', attachment, false); 
     986            //TODO - Verificar na API retorno de id sobre os conceitos em que s?o utilizados tabelas de liga??o 
     987            if(!attach.name) return(null);  
     988             
     989            var ext = attach.name.split('.'); 
     990            attach.name = attach.name.length < 10 ?  attach.name : ( ext.length == 1 ? attach.name.substr(0, 10) : (attach.name.substr(0, 6) + '.' +  ext[ext.length -1])); 
     991            attach.size = formatBytes(attach.size); 
     992            return attach; 
     993        }), 
     994        me : User.me, 
     995        attendee: $.map(objEvent.participants || [], function( participant, i ){                         
     996 
     997            var attend = DataLayer.get('participant', (participant.id || participant)); 
     998            attend.user = DataLayer.get('user', attend.user); 
     999 
     1000            return { 
     1001                id: attend.id, 
     1002                alarms : $.map(attend.alarms || [], function( alarm ){ 
     1003                    var alarm = DataLayer.get('alarm', alarm); 
     1004                    return (alarm == "" ? (null) : alarm); 
     1005                }) 
     1006            }; 
     1007        }), 
     1008 
     1009        }; 
     1010    }); 
    8021011    return (notArray ? res[0] : res); 
    8031012    } 
     
    10891298     
    10901299    if(!(!!evtObj)) 
    1091         return undefined; 
     1300        evtObj = []; 
    10921301 
    10931302    var notArray = false; 
     
    13141523 
    13151524            //occurrences = DataLayer.unique( occurrences ).sort(); 
    1316                    
    1317             for( var i = 0; i < occurrences.length; i++ ) 
    1318                 grouped[ evt.calendar ].push( DataLayer.merge( 
    1319                 { 
    1320                     id: evt.URI || evt.id+ '-' + i, 
    1321                     title: Encoder.htmlDecode(evt.summary), 
    1322                     start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone,  !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    1323                     end:   Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    1324                     allDay: parseInt( evt.allDay ), 
    1325                     isRepeat: isRepeat, 
    1326                     occurrence: i, 
    1327                     type: evt.type, 
    1328                     calendar: evt.calendar 
    1329                     }, eventEditable(evt.id, isRepeat, i ) ) ); 
     1525                var typeEvent;   
     1526            for( var i = 0; i < occurrences.length; i++ ){ 
     1527 
     1528            typeEvent = (evt.type == 2 && evt.taskToActivity ? 3 : evt.type) 
     1529                grouped[ evt.calendar ].push( DataLayer.merge( 
     1530                { 
     1531                    id: evt.URI || evt.id+ '-' + i, 
     1532                    title: Encoder.htmlDecode(evt.summary), 
     1533                    start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone,  !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
     1534                    end:   Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
     1535                    allDay: parseInt( evt.allDay ), 
     1536                    isRepeat: isRepeat, 
     1537                    occurrence: i, 
     1538                    type: typeEvent, 
     1539                    calendar: evt.calendar 
     1540                    }, (parseInt(typeEvent) == 1 ? eventEditable(evt.id, isRepeat, i ) : (parseInt(typeEvent) == 2 ? {editable: true, disableResizing: false, disableDragging: false} : {editable: false, disableResizing: true, disableDragging: true}) )) ); 
     1541        } 
    13301542        }); 
    13311543 
Note: See TracChangeset for help on using the changeset viewer.