Changeset 6996 for trunk/prototype/modules/calendar/js/calendar.codecs.js
- Timestamp:
- 08/10/12 19:11:37 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/js/calendar.codecs.js
r6533 r6996 22 22 fontColor: "fff", 23 23 timezone: 'America/Sao_Paulo', 24 weekStart: 'SUN' 24 weekStart: 'SUN', 25 useDesktopNotification: 0 25 26 }; 26 27 … … 31 32 } 32 33 } 34 35 updateActivity = false; 33 36 34 37 constantsParticipant = { … … 195 198 DataLayer.commit( false, false, function(){ 196 199 Calendar.rerenderView(true); 200 if(updateActivity) 201 refreshTaskActivity(); 197 202 }); 198 203 } … … 262 267 user: User.me.id, 263 268 calendar: { 264 id: Calendar.calendarOf[form.signature].id,269 id: !!!parseInt(form.type) ? Calendar.calendarOf[form.signature].id : Calendar.groupOf[form.signature].id, 265 270 name: Encoder.htmlEncode(form.name), 266 271 description: Encoder.htmlEncode(form.description), … … 384 389 385 390 391 }); 392 393 DataLayer.codec( "schedulable", "taskEdit", { 394 395 decoder: function( evtObj ){ 396 Encoder.EncodeType = "entity"; 397 398 if( notArray = $.type(evtObj) !== "array" ) 399 evtObj = [ evtObj ]; 400 401 var pref = User.preferences; 402 403 var res = $.map(evtObj, function( form ){ 404 405 return DataLayer.merge({ 406 id: form.idTask, 407 percentage: form.percentage, 408 type: '2', 409 status: form.taskStatus, 410 participants : $.map(form.attendee, function( attendee, i ){ 411 if(isNaN(attendee)){ 412 return{ 413 id: attendee, 414 acl: form.attendeeAcl[i], 415 delegatedFrom: !!form.delegatedFrom[i] ? form.delegatedFrom[i] : 0, 416 isOrganizer: (form.attendee_organizer == attendee ? 1 : 0 ), 417 isExternal: !!parseInt(form.attendeeType[i]) ? 1 : 0, 418 acl: form.attendeeAcl[i].replace('o', '') 419 }; 420 }else{ 421 if(DataLayer.get('participant', attendee).user == User.me.id){ 422 var me = { 423 user: User.me.id, 424 status: form.status, 425 id: attendee, 426 isOrganizer: 0, 427 receiveNotification : (!!form.receiveNotification ? 1 : 0), 428 alarms: typeof(form.alarmTime) != 'undefined' ? 429 $.map( form.alarmTime || [], function( alarmTime, i ){ 430 431 if( alarmTime === "" ) 432 return( null ); 433 434 return !!form.alarmId[i] ? 435 { 436 type: form.alarmType[i], 437 unit: form.alarmUnit[i], 438 time: form.alarmTime[i], 439 id: form.alarmId[i] 440 } : 441 { 442 type: form.alarmType[i], 443 unit: form.alarmUnit[i], 444 time: form.alarmTime[i] 445 }; 446 }) : [] 447 }; 448 449 if(form.startDate){ 450 var tzId = DataLayer.get('schedulable', form.idEvent).timezone || User.preferences.timezone, 451 formatString = pref.dateFormat + " " + pref.hourFormat; 452 453 DataLayer.put('notification', { 454 participant: me.id, 455 type: 'suggestion', 456 startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd HH:mm:00'), 457 endTime: Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ).toString('yyyy-MM-dd HH:mm:00'), 458 allDay: ( !!form.allDay ? 1 : 0 ), 459 schedulable: form.idEvent 460 }); 461 462 } 463 return me; 464 }else return(null); 465 }; 466 }) 467 }, (form.group != form.lastGroup? {calendar: form.group, lastCalendar: form.lastGroup} : {})) 468 }); 469 return notArray ? res[0] : res; 470 }, 471 472 encoder: function( evtObj ){} 473 386 474 }); 387 475 … … 510 598 calendar: objEvent.calendar, 511 599 summary: objEvent.summary, 600 type: !!objEvent.type ? objEvent.type : 1, 512 601 description: objEvent.description, 513 602 timezone: objEvent.timezone, … … 595 684 }); 596 685 686 DataLayer.codec( "schedulable", "task", { 687 688 decoder: function( evtObj ){ 689 Encoder.EncodeType = "entity"; 690 691 if( notArray = $.type(evtObj) !== "array" ) 692 evtObj = [ evtObj ]; 693 694 var pref = User.preferences; 695 696 var res = $.map(evtObj, function( form ){ 697 698 var tzId = form.timezone || Calendar.signatureOf[form.group].calendar.timezone || User.preferences.timezone, 699 700 formatString = pref.dateFormat + " " + pref.hourFormat; 701 702 return DataLayer.merge({ 703 "class": form["class"], 704 startTime: Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 705 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) , 706 due: (form.dueDate == '' )? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueTime) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 707 allDay: ( !!form.allDay ? 1 : 0 ), 708 status: form.taskStatus, 709 id: form.idTask, 710 location: form.location, 711 type: !!form.type ? form.type : 2, 712 percentage: form.percentage, 713 priority: form.priority, 714 category: form.category, 715 summary: form.summary == '' ? 'Tarefa sem título' : form.summary, 716 description: form.description, 717 timezone: tzId, 718 attachments: $.map(form.attachment || [], function( attachment, i ){ 719 return { 720 attachment: attachment 721 } 722 }), 723 participants: $.map( form.attendee || [], function( attendee, i ){ 724 725 if( !attendee || attendee === "" ) 726 return( null ); 727 728 var participant = {}; 729 participant.user = (attendee!= User.me.id) ? DataLayer.get('participant', attendee).user : attendee ; 730 731 if( participant.user === User.me.id ){ 732 return DataLayer.merge({ 733 id: attendee, 734 isOrganizer: (form.attendee_organizer == attendee ? 1 : 0 ), 735 alarms: participant.alarms = $.map( form.alarmTime || [], function( alarmTime, i ){ 736 if( alarmTime === "" ) 737 return( null ); 738 return !!form.alarmId[i] ? { 739 type: form.alarmType[i], 740 unit: form.alarmUnit[i], 741 time: form.alarmTime[i], 742 id: form.alarmId[i] 743 }: 744 745 { 746 type: form.alarmType[i], 747 unit: form.alarmUnit[i], 748 time: form.alarmTime[i] 749 }; 750 }), 751 status: !!form.status ? form.status : 3 752 }, (form.delegatedFrom[i] != '0' && form.delegatedFrom[i] != '') ? { 753 delegatedFrom: form.delegatedFrom[i] 754 } : {}); 755 }else{ 756 return { 757 id: attendee, 758 isOrganizer: (form.attendee_organizer == attendee ? 1 : 0 ), 759 isExternal: !!parseInt(form.attendeeType[i]) ? 1 : 0 760 }; 761 }; 762 }) 763 }, form.lastGroup ? (( form.lastGroup == form.group ) ? {} : {calendar: form.group, lastGroup: form.lastGroup}) : {calendar: form.group}); 764 }); 765 766 return notArray ? res[0] : res; 767 }, 768 769 encoder: function( evtObj ){ 770 771 var notArray = false; 772 773 if( notArray = $.type(evtObj) !== "array" ) 774 evtObj = [ evtObj ]; 775 776 var statusParticipants = {}, isAttendee = false, 777 778 statusLabels = [ '', 'accepted', 'tentative', 'cancelled', 'unanswered', 'delegated' ], 779 780 participantInfo = {}, delegatedFrom = {}, me = DataLayer.copy( User.me ); 781 782 var delegateAttendee = {}; 783 784 for( var i = 0; i < statusLabels.length; i++ ) 785 statusParticipants[ statusLabels[i] ] = 0; 786 787 var res = $.map(evtObj, function( objEvent ){ 788 789 if(!(typeof(objEvent) == 'object')) 790 return (null); 791 792 var limitAttendee = false; 793 794 return { 795 "class": objEvent["class"], 796 id: objEvent.id, 797 location: objEvent.location, 798 category: objEvent.category, 799 taskStatus: objEvent.status, 800 groups: Calendar.groups, 801 group: objEvent.group ? objEvent.group : objEvent.calendar, 802 summary: objEvent.summary, 803 type: !!objEvent.type ? objEvent.type : 2, 804 description: objEvent.description, 805 timezone: objEvent.timezone, 806 timezones: Timezone.timezones, 807 percentage: (objEvent.percentage) ? objEvent.percentage : '0', 808 priority: objEvent.priority, 809 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 810 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 811 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 812 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 813 dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 814 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), 815 allDay: !!parseInt( objEvent.allDay ), 816 historic: !!objEvent.historic ? decodeHistoric(objEvent) : [] , 817 attachments: $.map(objEvent.attachments || [], function( attachment, i ){ 818 var attach = DataLayer.get('schedulableToAttachment', attachment, false); 819 //TODO - Verificar na API retorno de id sobre os conceitos em que s?o utilizados tabelas de liga??o 820 if(!attach.name) return(null); 821 822 var ext = attach.name.split('.'); 823 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])); 824 attach.size = formatBytes(attach.size); 825 return attach; 826 }), 827 attendee: $.map(objEvent.participants || [], function( participant, i ){ 828 829 if(delegateAttendee[participant]) 830 return(null); 831 832 var attend = DataLayer.get('participant', (participant.id || participant)); 833 attend.user = DataLayer.get('user', attend.user); 834 835 statusParticipants[ statusLabels[attend.status] ]++; 836 837 if(attend.user.mail == User.me.mail) 838 isAttendee = true; 839 840 if( attend.user.id === me.id ){ 841 participantInfo.user = { 842 id: attend.id, 843 status : attend.status, 844 delegatedFrom: attend.delegatedFrom || '0', 845 acl: attend.acl, 846 receiveNotification : attend.receiveNotification, 847 alarms : $.map(attend.alarms || [], function( alarm ){ 848 var alarm = DataLayer.get('alarm', alarm); 849 return (alarm == "" ? (null) : alarm); 850 }) 851 }; 852 me = attend; 853 return(null); 854 }; 855 856 var person = { 857 id: attend.id, 858 name: attend.user.name != 'false' ? attend.user.name : '', 859 mail: attend.user.mail, 860 status : attend.status, 861 isExternal: attend.isExternal, 862 acl: attend.acl, 863 delegatedFrom: attend.delegatedFrom 864 }; 865 866 if(!!parseInt(attend.delegatedFrom)){ 867 delegatedFrom[attend.delegatedFrom] = DataLayer.copy(person); 868 return(null); 869 } 870 871 if( !!parseInt(attend.isOrganizer)){ 872 participantInfo.organizer = DataLayer.copy(person); 873 return(null); 874 }; 875 876 return (person); 877 }), 878 organizer: participantInfo.organizer || me, 879 isOrganizer: (participantInfo.organizer || me).id == me.id, 880 alarms: !!participantInfo.user ? participantInfo.user.alarms : [], 881 status: !!participantInfo.user ? participantInfo.user.status : 1, 882 isAttendee: isAttendee, 883 me: me, 884 delegatedFrom: delegatedFrom, 885 statusParticipants: (objEvent.sizeAttendees != "") ? objEvent.statusAttendees : statusParticipants, 886 sizeAttendeeLimit: (objEvent.sizeAttendees != "") ? objEvent.sizeAttendees : false 887 }; 888 }); 889 return (notArray ? res[0] : res); 890 } 891 }); 892 893 function decodeHistoric ( evt ) { 894 var historic = evt.historic; 895 var decoded = []; 896 var attributeDecoded = { 897 'startTime': 'Data de inicio', 898 'endTime' : 'Data de fim', 899 'summary' : 'Título', 900 'description': 'Descrição', 901 'status': 'Status', 902 'percentage': 'Porcentagem', 903 'priority': 'Priorudade', 904 'due' : 'Previsão de término' 905 } 906 907 var statusDecoded = { 908 1: 'Sem ações', 909 2: 'Em processo', 910 3: 'Finalzada', 911 4: 'Cancelada', 912 } 913 914 var decodeDate = function(time){ 915 return new Date( parseInt( time) ).setTimezoneOffset( Timezone.timezone( evt.timezone ) ).toString( User.preferences.dateFormat+' - '+User.preferences.hourFormat ); 916 }; 917 918 var decodeItem = function(historic){ 919 switch(historic.attribute){ 920 case 'startTime': 921 case 'endTime' : 922 case 'due': 923 return { 924 user :$.type(historic.user) == 'object' ? historic.user : DataLayer.get('user', historic.user), 925 attribute : attributeDecoded[historic.attribute], 926 beforeValue : decodeDate(historic.beforeValue), 927 afterValue : decodeDate(historic.afterValue), 928 time: decodeDate(historic.time) 929 } 930 break; 931 case 'participant': 932 return{ 933 user :$.type(historic.user) == 'object' ? historic.user : DataLayer.get('user', historic.user), 934 attribute : historic.beforeValue == '' ? ('Novo participante') : ('Rem. participante'), 935 beforeValue : historic.beforeValue == '' ? '' : historic.beforeValue.mail, 936 afterValue : historic.afterValue == '' ? '' : historic.afterValue.mail, 937 time: decodeDate(historic.time) 938 } 939 break; 940 case 'attachment': 941 return{ 942 user : $.type(historic.user) == 'object' ? historic.user : DataLayer.get('user', historic.user), 943 attribute : historic.beforeValue == '' ? ('Novo anexo') : ('Rem. anexo'), 944 beforeValue : historic.beforeValue, 945 afterValue : historic.afterValue, 946 time: decodeDate(historic.time) 947 } 948 case 'percentage': 949 return{ 950 user :$.type(historic.user) == 'object' ? historic.user : DataLayer.get('user', historic.user), 951 attribute :attributeDecoded[historic.attribute], 952 beforeValue : historic.beforeValue+' %', 953 afterValue : historic.afterValue+' %', 954 time: decodeDate(historic.time) 955 } 956 case 'status': 957 return{ 958 user :$.type(historic.user) == 'object' ? historic.user : DataLayer.get('user', historic.user), 959 attribute :attributeDecoded[historic.attribute], 960 beforeValue : statusDecoded[historic.beforeValue], 961 afterValue : statusDecoded[historic.afterValue], 962 time: decodeDate(historic.time) 963 } 964 break; 965 default: 966 return { 967 user : $.type(historic.user) == 'object' ? historic.user : DataLayer.get('user', historic.user), 968 attribute : attributeDecoded[historic.attribute], 969 beforeValue : historic.beforeValue, 970 afterValue : historic.afterValue, 971 time: decodeDate(historic.time) 972 } 973 break; 974 975 } 976 } 977 978 for(var i = 0; i < historic.length; i++) 979 decoded.push(decodeItem(historic[i])); 980 981 return decoded; 982 983 } 984 985 DataLayer.codec( "schedulable", "taskSearch", { 986 987 decoder: function( evtObj ){ 988 989 }, 990 991 encoder: function( evtObj ){ 992 993 var notArray = false; 994 995 if( notArray = $.type(evtObj) !== "array" ) 996 evtObj = [ evtObj ]; 997 998 var res = $.map(evtObj, function( objEvent ){ 999 1000 if(!(typeof(objEvent) == 'object')) 1001 return (null); 1002 1003 return { 1004 id: objEvent.id, 1005 description: !!objEvent.summary ? objEvent.summary : objEvent.description, 1006 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 1007 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 1008 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 1009 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 1010 dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 1011 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), 1012 allDay: !!parseInt( objEvent.allDay ), 1013 percentage: (objEvent.percentage) ? objEvent.percentage : '0', 1014 status: objEvent.status 1015 } 1016 }); 1017 return (notArray ? res[0] : res); 1018 } 1019 }); 1020 1021 DataLayer.codec( "schedulable", "activity", { 1022 1023 decoder: function( evtObj ){ 1024 Encoder.EncodeType = "entity"; 1025 1026 if( notArray = $.type(evtObj) !== "array" ) 1027 evtObj = [ evtObj ]; 1028 1029 var pref = User.preferences; 1030 1031 var res = $.map(evtObj, function( form ){ 1032 1033 var tzId = form.timezone || Calendar.signatureOf[form.group].calendar.timezone || User.preferences.timezone, 1034 formatString = pref.dateFormat + " " + pref.hourFormat; 1035 1036 var decodeParticipants = function(attend){ 1037 return [DataLayer.merge( 1038 { 1039 user: User.me.id, 1040 isOrganizer: 1, 1041 acl: 'row', 1042 alarms: $.map( form.alarmTime || [], function( alarmTime, i ){ 1043 if( alarmTime === "" ) 1044 return( null ); 1045 return !!form.alarmId[i] ? { 1046 type: form.alarmType[i], 1047 unit: form.alarmUnit[i], 1048 time: form.alarmTime[i], 1049 id: form.alarmId[i] 1050 }: 1051 1052 { 1053 type: form.alarmType[i], 1054 unit: form.alarmUnit[i], 1055 time: form.alarmTime[i] 1056 }; 1057 }) 1058 }, attend != '0' ? {id: attend} : {})]; 1059 }; 1060 1061 return DataLayer.merge({ 1062 "class": form["class"], 1063 startTime: Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 1064 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) , 1065 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'), 1066 allDay: ( !!form.allDay ? 1 : 0 ), 1067 status: form.activityStatus, 1068 id: form.idActivity, 1069 type: !!form.type ? form.type : 2, 1070 percentage: form.percentage, 1071 priority: form.priority, 1072 category: form.category, 1073 summary: form.summary == '' ? 'Atividade sem título' : form.summary, 1074 description: form.description, 1075 timezone: tzId, 1076 attachments: $.map(form.attachment || [], function( attachment, i ){ 1077 return { 1078 attachment: attachment 1079 } 1080 }), 1081 participants: decodeParticipants(form.idAttendee), 1082 taskToActivity:$.map( form.idtask || [], function( task, i ){ 1083 1084 return DataLayer.merge({ 1085 task: task, 1086 owner: User.me.id 1087 }, form.idTaskToActivity[i] != '' ? {id: form.idTaskToActivity[i]} : {}); 1088 1089 }) 1090 }, form.lastGroup ? (( form.lastGroup == form.group ) ? {} : {calendar: form.group, lastGroup: form.lastGroup}) : {calendar: form.group}); 1091 }); 1092 1093 return notArray ? res[0] : res; 1094 }, 1095 1096 encoder: function( evtObj ){ 1097 1098 var notArray = false; 1099 1100 if( notArray = $.type(evtObj) !== "array" ) 1101 evtObj = [ evtObj ]; 1102 1103 var res = $.map(evtObj, function( objEvent ){ 1104 1105 if(!(typeof(objEvent) == 'object')) 1106 return (null); 1107 1108 var historic = []; 1109 1110 var decodeTasks = function(obj){ 1111 1112 var tasks = {}, task = {}; 1113 1114 for(var i =0; i < obj.taskToActivity.length; i++){ 1115 1116 taskToActivity = DataLayer.get('taskToActivity', obj.taskToActivity[i]); 1117 task = taskToActivity.task; 1118 1119 if($.type(task) != 'object') 1120 task = DataLayer.get('schedulable', task); 1121 1122 tasks[task.id] = { 1123 taskToActivity: taskToActivity.id, 1124 allDay: !!parseInt(task.allDay), 1125 dueDate: (!task.due || task.due == '' || task.due == '0') ? '' : new Date( parseInt(task.due) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 1126 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), 1127 startDate: new Date( parseInt(task.startTime) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 1128 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(task.startTime)), task.timezone, task.calendar, obj.DayLigth, 'startTime'), User.preferences.hourFormat), 1129 endDate: new Date( parseInt(task.endTime) - (!!parseInt(task.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 1130 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(task.endTime)), task.timezone, obj.calendar, obj.DayLigth, 'endTime'), User.preferences.hourFormat), 1131 status: task.status, 1132 percentage: task.percentage 1133 } 1134 1135 tasks[task.id].description = tasks[task.id].startDate + ' - ' + (!!task.summary ? task.summary : task.description); 1136 1137 historic.push({'task': (!!task.summary ? task.summary : task.description) , 'historic': decodeHistoric(task)}); 1138 } 1139 1140 tasks.length = obj.taskToActivity.length; 1141 return tasks; 1142 1143 }; 1144 1145 return { 1146 "class": objEvent["class"], 1147 id: objEvent.id, 1148 location: objEvent.location, 1149 category: objEvent.category, 1150 activityStatus: objEvent.status, 1151 groups: Calendar.groups, 1152 group: objEvent.group ? objEvent.group : objEvent.calendar, 1153 summary: objEvent.summary, 1154 type: !!objEvent.type ? objEvent.type : 2, 1155 description: objEvent.description, 1156 timezone: objEvent.timezone, 1157 timezones: Timezone.timezones, 1158 percentage: (objEvent.percentage) ? objEvent.percentage : '0', 1159 priority: objEvent.priority, 1160 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 1161 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 1162 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 1163 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 1164 dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 1165 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), 1166 allDay: !!parseInt( objEvent.allDay ), 1167 historic: historic, 1168 tasks: objEvent.taskToActivity ? decodeTasks(objEvent) : {}, 1169 attachments: $.map(objEvent.attachments || [], function( attachment, i ){ 1170 var attach = DataLayer.get('schedulableToAttachment', attachment, false); 1171 //TODO - Verificar na API retorno de id sobre os conceitos em que s?o utilizados tabelas de liga??o 1172 if(!attach.name) return(null); 1173 1174 var ext = attach.name.split('.'); 1175 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])); 1176 attach.size = formatBytes(attach.size); 1177 return attach; 1178 }), 1179 me : User.me, 1180 attendee: $.map(objEvent.participants || [], function( participant, i ){ 1181 1182 var attend = DataLayer.get('participant', (participant.id || participant)); 1183 attend.user = DataLayer.get('user', attend.user); 1184 1185 return { 1186 id: attend.id, 1187 alarms : $.map(attend.alarms || [], function( alarm ){ 1188 var alarm = DataLayer.get('alarm', alarm); 1189 return (alarm == "" ? (null) : alarm); 1190 }) 1191 }; 1192 }) 1193 1194 }; 1195 }); 1196 return (notArray ? res[0] : res); 1197 } 1198 }); 597 1199 598 1200 function decodeOwnerCalendar(calendar){ … … 727 1329 id: form.idEvent, 728 1330 location: form.location, 1331 type: 1, 729 1332 category: form.category, 730 summary: form.summary ,1333 summary: form.summary == '' ? 'Evento sem título' : form.summary, 731 1334 description: form.description, 732 1335 timezone: tzId, … … 800 1403 801 1404 var pref = User.preferences; 802 803 var res = DataLayer.encode('schedulable:preview', evtObj); 1405 var res = []; 1406 1407 for(var i = 0; i < evtObj.length; i++){ 1408 res.push(DataLayer.encode('schedulable:' + (evtObj[i].type == '1' ? 'preview' : ( !!evtObj[i].taskToActivity ? 'activity': 'task')) , evtObj[i])); 1409 } 804 1410 805 1411 if( !notArray ){ … … 814 1420 815 1421 for (var i=0; i < res.length; i++) { 1422 1423 res[i].type = (res[i].type == '2' && !!res[i].tasks) ? '3' : res[i].type; 816 1424 817 1425 var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); … … 836 1444 'endDate': new Date( occurrences[ii] + duration ).toString( User.preferences.dateFormat ) 837 1445 } ); 838 839 840 841 842 res2.repeat = typeRepeat[res[i].repeat.frequency]; 1446 1447 if(res[i].repeat) 1448 res2.repeat = typeRepeat[res[i].repeat.frequency]; 843 1449 844 1450 while (counter.compareTo( currentDate ) == 0) { … … 864 1470 865 1471 return notArray ? res[0] : res; 1472 } 1473 1474 }); 1475 1476 1477 DataLayer.codec( "schedulable", "print", { 1478 1479 decoder: function( evtObj ){ 1480 1481 }, 1482 1483 1484 encoder: function( evtObj ){ 1485 1486 if(!(!!evtObj)) 1487 evtObj = []; 1488 1489 var notArray = false; 1490 1491 if( notArray = $.type(evtObj) !== "array" ) 1492 evtObj = [ evtObj ]; 1493 1494 var pref = User.preferences; 1495 var res = []; 1496 1497 for(var i = 0; i < evtObj.length; i++){ 1498 res.push(DataLayer.encode('schedulable:' + (evtObj[i].type == '1' ? 'preview' : 'task'), evtObj[i])); 1499 } 1500 1501 if( !notArray ){ 1502 var dates = {}; 1503 1504 var typeRepeat = { 1505 'none': false, 1506 'daily': 'Repetição diária', 1507 'weekly': 'Repetição semanal', 1508 'monthly': 'Repetição mensal', 1509 'yearly': 'repetição anual' 1510 } 1511 1512 for (var i=0; i < res.length; i++) { 1513 var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 1514 var endDate = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 1515 1516 var duration = parseInt( endDate.getTime() ) - parseInt( startDate.getTime() ); 1517 1518 var occurrences = [ startDate.getTime() ]; 1519 1520 if( res[i].occurrences ) 1521 { 1522 occurrences = res[i].occurrences; 1523 } 1524 1525 for( var ii = 0; ii < occurrences.length; ii++ ) 1526 { 1527 var currentDate = new Date( occurrences[ii] ); 1528 var counter = currentDate.clone(); 1529 1530 var res2 = $.extend( {}, res[i], { 1531 'startDate': currentDate.toString( User.preferences.dateFormat ), 1532 'endDate': new Date( occurrences[ii] + duration ).toString( User.preferences.dateFormat ) 1533 }); 1534 1535 if(res[i].repeat) 1536 res2.repeat = typeRepeat[res[i].repeat.frequency]; 1537 1538 var index = dateCalendar.dayNames[counter.getDay()] +' '+counter.toString('dd/MM'); 1539 1540 if(!dates[index] || !$.isArray(dates[index].events)) 1541 dates[index] = {events: []}; 1542 1543 res2['isOneDay'] = res2.startDate == res2.endDate ? true : false; 1544 1545 dates[index].events.push(res2); 1546 1547 } 1548 } 1549 1550 var calendarView = $('#calendar').fullCalendar('getView'); 1551 var start = calendarView.start.getTime(); 1552 var end = (calendarView.end.getTime() - (calendarView.name == 'month' ? 86400000 : 0 )); 1553 var next = start; 1554 var response = []; 1555 1556 while (next){ 1557 var index = dateCalendar.dayNames[new Date(next).getDay()] +' '+ new Date(next).toString('dd/MM'); 1558 1559 var event = {}; 1560 event[index] = {events: dates[index] ? dates[index].events : false}; 1561 1562 response[response.length] = event; 1563 next = (next + 86400000) > end ? false : (next + 86400000); 1564 } 1565 res = {events: response}; 1566 } 1567 1568 return notArray ? res[0] : res; 866 1569 } 867 1570 … … 952 1655 attendee = DataLayer.get('participant', evt.participants[i]); 953 1656 if(attendee.user == User.me.id) 954 return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? { 1657 return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? 1658 { 955 1659 selectable: true, 956 1660 className: 'fullcalendar-context-menu event-id-'+idEvent+' calendar-id-'+calendar.id+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') … … 978 1682 return returns; 979 1683 } 980 return DataLayer.merge({ 1684 return DataLayer.merge( 1685 { 981 1686 editable: aclSignature.acl['write'] && !isRecurrence, 982 1687 disableResizing : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true : false), 983 1688 disableDragging : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true: false), 984 1689 className: mountClass(aclSignature.acl) 985 }, aclSignature.acl['busy'] ? { 986 title: 'Ocupado', 987 selectable: false 988 } : { 989 selectable: true 990 }); 1690 }, aclSignature.acl['busy'] ? 1691 { 1692 title: 'Ocupado', 1693 selectable: false 1694 } : { 1695 selectable: true 1696 }); 991 1697 } 992 993 1698 } 994 1699 … … 1005 1710 1006 1711 //occurrences = DataLayer.unique( occurrences ).sort(); 1007 1008 for( var i = 0; i < occurrences.length; i++ ) 1009 grouped[ evt.calendar ].push( DataLayer.merge({ 1010 id: evt.URI || evt.id+ '-' + i, 1011 title: Encoder.htmlDecode(evt.summary), 1012 start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1013 end: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1014 allDay: parseInt( evt.allDay ), 1015 isRepeat: isRepeat, 1016 occurrence: i, 1017 calendar: evt.calendar 1018 }, eventEditable(evt.id, isRepeat, i ) ) ); 1712 var typeEvent; 1713 for( var i = 0; i < occurrences.length; i++ ){ 1714 1715 typeEvent = (evt.type == 2 && evt.taskToActivity ? 3 : evt.type) 1716 grouped[ evt.calendar ].push( DataLayer.merge( 1717 { 1718 id: evt.URI || evt.id+ '-' + i, 1719 title: Encoder.htmlDecode(evt.summary), 1720 start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1721 end: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1722 allDay: parseInt( evt.allDay ), 1723 isRepeat: isRepeat, 1724 occurrence: i, 1725 type: typeEvent, 1726 calendar: evt.calendar 1727 }, (parseInt(typeEvent) == 1 ? eventEditable(evt.id, isRepeat, i ) : (parseInt(typeEvent) == 2 ? {editable: true, disableResizing: false, disableDragging: false} : {editable: false, disableResizing: true, disableDragging: true}) )) ); 1728 } 1019 1729 }); 1020 1730 … … 1049 1759 ] 1050 1760 ], 1051 ['IN', 'calendar', Calendar.calendarIds]1761 ['IN', 'calendar', $.merge( Calendar.calendarIds, Calendar.groupIds )] 1052 1762 ], 1053 1763 criteria: {
Note: See TracChangeset
for help on using the changeset viewer.