Changeset 7702 for trunk/prototype/modules/calendar/js/calendar.codecs.js
- Timestamp:
- 01/03/13 08:46:17 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/js/calendar.codecs.js
r7680 r7702 73 73 if( Calendar.currentViewKey !== viewKey ){ 74 74 Calendar.currentViewKey = viewKey; 75 Calendar.currentView = DataLayer.get( 'schedulable:calendar', { 76 start: start, 77 end: end 78 } ); 75 Calendar.currentView = DataLayer.encode('schedulable:calendar', DataLayer.dispatch('modules/calendar/schedules', DataLayer.criteria('schedulable:calendar', {start: start,end: end})) ); //DataLayer.get( 'schedulable:calendar', {start: start,end: end} ); 79 76 } 80 77 var view = Calendar.currentView[ signature.calendar.id ]; … … 199 196 200 197 if( status === 'serverclient' ){ 201 DataLayer.commit( false, false, function(){ 198 DataLayer.commit( false, false, function(){ 199 //Clean cache client after commit 200 DataLayer.remove('schedulable', false); 201 202 202 Calendar.rerenderView(true); 203 204 205 203 if(updateActivity) 204 refreshTaskActivity(); 205 }); 206 206 } 207 207 }); … … 1337 1337 function encodeRepeat( repeat ){ 1338 1338 1339 if( !repeat )1340 return( false );1339 if( !repeat || repeat == '0' ) 1340 return( false ); 1341 1341 if(typeof(repeat) == "object") 1342 return repeat;1342 return repeat; 1343 1343 1344 1344 return DataLayer.get( 'repeat', repeat ); … … 1436 1436 1437 1437 encoder: function( evtObj ){ 1438 if(!(!!evtObj)) 1439 return undefined; 1440 1441 var notArray = false; 1442 1443 if( notArray = $.type(evtObj) !== "array" ) 1444 evtObj = [ evtObj ]; 1445 1446 var pref = User.preferences; 1447 var res = []; 1448 1449 for(var i = 0; i < evtObj.length; i++){ 1450 res.push(DataLayer.encode('schedulable:' + (evtObj[i].type == '1' ? 'preview' : ( !!evtObj[i].taskToActivity ? 'activity': 'task')) , evtObj[i])); 1451 } 1452 1453 if( !notArray ){ 1454 var dates = {}; 1455 var typeRepeat = { 1456 'none': false, 1457 'daily': 'Repetição diária', 1458 'weekly': 'Repetição semanal', 1459 'monthly': 'Repetição mensal', 1460 'yearly': 'repetição anual' 1438 if(!(!!evtObj)) 1439 return undefined; 1440 1441 var notArray = false; 1442 1443 if( notArray = $.type(evtObj) !== "array" ) 1444 evtObj = [ evtObj ]; 1445 1446 var pref = User.preferences; 1447 var res = []; 1448 1449 for(var i = 0; i < evtObj.length; i++){ 1450 res.push(DataLayer.encode('schedulable:' + (evtObj[i].type == '1' ? 'preview' : ( !!evtObj[i].taskToActivity ? 'activity': 'task')) , evtObj[i])); 1451 } 1452 1453 if( !notArray ){ 1454 var dates = {}; 1455 var typeRepeat = { 1456 'none': false, 1457 'daily': 'Repetição diária', 1458 'weekly': 'Repetição semanal', 1459 'monthly': 'Repetição mensal', 1460 'yearly': 'repetição anual' 1461 } 1462 1463 for (var i=0; i < res.length; i++) { 1464 1465 res[i].type = (res[i].type == '2' && !!res[i].tasks) ? '3' : res[i].type; 1466 1467 var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 1468 var endDate = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 1469 1470 var duration = parseInt( endDate.getTime() ) - parseInt( startDate.getTime() ); 1471 1472 var occurrences = [ startDate.getTime() ]; 1473 1474 if( res[i].occurrences ) 1475 { 1476 occurrences = res[i].occurrences; 1477 } 1478 1479 for( var ii = 0; ii < occurrences.length; ii++ ) 1480 { 1481 var currentDate = new Date( occurrences[ii] ); 1482 var counter = currentDate.clone(); 1483 1484 res[i].startDate = currentDate.toString( User.preferences.dateFormat ); 1485 res[i].endDate = new Date( occurrences[ii] + duration ).toString( User.preferences.dateFormat ); 1486 1487 if(res[i].repeat) 1488 res[i].repeat = typeRepeat[res[i].repeat.frequency]; 1489 } 1490 } 1461 1491 } 1462 1492 1463 for (var i=0; i < res.length; i++) { 1464 1465 res[i].type = (res[i].type == '2' && !!res[i].tasks) ? '3' : res[i].type; 1466 1467 var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 1468 var endDate = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 1469 1470 var duration = parseInt( endDate.getTime() ) - parseInt( startDate.getTime() ); 1471 1472 var occurrences = [ startDate.getTime() ]; 1473 1474 if( res[i].occurrences ) 1475 { 1476 occurrences = res[i].occurrences; 1477 } 1478 1479 for( var ii = 0; ii < occurrences.length; ii++ ) 1480 { 1481 var currentDate = new Date( occurrences[ii] ); 1482 var counter = currentDate.clone(); 1483 1484 var res2 = $.extend( {}, res[i], { 1485 'startDate': currentDate.toString( User.preferences.dateFormat ), 1486 'endDate': new Date( occurrences[ii] + duration ).toString( User.preferences.dateFormat ) 1487 } ); 1488 1489 if(res[i].repeat) 1490 res2.repeat = typeRepeat[res[i].repeat.frequency]; 1491 1492 while (counter.compareTo( currentDate ) == 0) { 1493 1494 if (!dates[counter.toString(User.preferences.dateFormat)]) 1495 dates[counter.toString(User.preferences.dateFormat)] = { 1496 startDate:false, 1497 events:[] 1498 }; 1499 if (!dates[counter.toString(User.preferences.dateFormat)].startDate) 1500 dates[counter.toString(User.preferences.dateFormat)].startDate = counter.toString(User.preferences.dateFormat); 1501 1502 dates[counter.toString(User.preferences.dateFormat)].events.push(res2); 1503 counter.addDays(-1); 1504 } 1505 } 1506 } 1507 res = { 1508 events_list: dates, 1509 count : res.length 1510 }; 1511 } 1512 1513 return notArray ? res[0] : res; 1493 return notArray ? res[0] : res; 1494 } 1495 1496 }); 1497 1498 DataLayer.codec( "schedulable", "list", { 1499 1500 decoder: function( evtObj ){}, 1501 1502 1503 encoder: function( evtObj ){ 1504 if(!(!!evtObj)) 1505 return undefined; 1506 1507 var notArray = false; 1508 1509 if( notArray = $.type(evtObj) !== "array" ) 1510 evtObj = [ evtObj ]; 1511 1512 var pref = User.preferences; 1513 var res = []; 1514 1515 for(var i = 0; i < evtObj.length; i++){ 1516 res.push(DataLayer.encode('schedulable:' + (evtObj[i].type == '1' ? 'preview' : ( !!evtObj[i].taskToActivity ? 'activity': 'task')) , evtObj[i])); 1517 } 1518 1519 if( !notArray ){ 1520 var dates = {}; 1521 var typeRepeat = { 1522 'none': false, 1523 'daily': 'Repetição diária', 1524 'weekly': 'Repetição semanal', 1525 'monthly': 'Repetição mensal', 1526 'yearly': 'repetição anual' 1527 } 1528 1529 for (var i=0; i < res.length; i++) { 1530 1531 res[i].type = (res[i].type == '2' && !!res[i].tasks) ? '3' : res[i].type; 1532 1533 var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 1534 var endDate = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 1535 1536 var duration = parseInt( endDate.getTime() ) - parseInt( startDate.getTime() ); 1537 1538 var occurrences = [ startDate.getTime() ]; 1539 1540 if( res[i].occurrences ) 1541 { 1542 occurrences = res[i].occurrences; 1543 } 1544 1545 for( var ii = 0; ii < occurrences.length; ii++ ) 1546 { 1547 var currentDate = new Date( occurrences[ii] ); 1548 var counter = currentDate.clone(); 1549 1550 var res2 = $.extend( {}, res[i], { 1551 'startDate': currentDate.toString( User.preferences.dateFormat ), 1552 'endDate': new Date( occurrences[ii] + duration ).toString( User.preferences.dateFormat ) 1553 } ); 1554 1555 if(res[i].repeat) 1556 res2.repeat = typeRepeat[res[i].repeat.frequency]; 1557 1558 while (counter.compareTo( currentDate ) == 0) { 1559 1560 if (!dates[counter.toString(User.preferences.dateFormat)]) 1561 dates[counter.toString(User.preferences.dateFormat)] = { 1562 startDate:false, 1563 events:[] 1564 }; 1565 if (!dates[counter.toString(User.preferences.dateFormat)].startDate) 1566 dates[counter.toString(User.preferences.dateFormat)].startDate = counter.toString(User.preferences.dateFormat); 1567 1568 dates[counter.toString(User.preferences.dateFormat)].events.push(res2); 1569 counter.addDays(-1); 1570 } 1571 } 1572 } 1573 res = { 1574 events_list: dates, 1575 count : res.length 1576 }; 1577 } 1578 1579 return notArray ? res[0] : res; 1514 1580 } 1515 1581 … … 1693 1759 1694 1760 var taskEditable = function(idTask){ 1695 for(var i = 0; i < evt.participants.length; i++){ 1696 attendee = DataLayer.get('participant', evt.participants[i]); 1697 if(attendee.user == User.me.id) 1698 return attendee.isOrganizer == '1' ? 1699 { 1700 editable: true, 1701 disableResizing: false, 1702 disableDragging: false, 1703 className: 'fullcalendar-context-menu event-type-2 event-id-'+idTask+' calendar-id-'+calendar.id 1704 } 1705 : 1706 { 1707 editable: false, 1708 disableResizing: true, 1709 disableDragging: true, 1710 className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idTask 1711 }; 1712 } 1761 1762 return evt.editable == '1' ? 1763 { 1764 editable: true, 1765 disableResizing: false, 1766 disableDragging: false, 1767 className: 'fullcalendar-context-menu event-type-2 event-id-'+idTask+' calendar-id-'+calendar.id 1768 } 1769 : 1770 { 1771 editable: false, 1772 disableResizing: true, 1773 disableDragging: true, 1774 className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idTask 1775 }; 1713 1776 } 1714 1777 1715 1778 var eventEditable = function(idEvent, isRecurrence, Recurrence){ 1716 1779 if(Calendar.signatureOf[calendar.id].isOwner == "1"){ 1717 var attendee = {}; 1718 for(var i = 0; i < evt.participants.length; i++){ 1719 attendee = DataLayer.get('participant', evt.participants[i]); 1720 if(attendee.user == User.me.id) 1721 return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? 1722 { 1723 selectable: true, 1724 className: 'fullcalendar-context-menu event-type-1 event-id-'+idEvent+' calendar-id-'+calendar.id+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') 1725 } : { 1726 editable: false, 1727 selectable: true , 1728 className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idEvent 1729 }; 1730 } 1731 return { 1732 editable: false, 1733 className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idEvent+' calendar-id-'+calendar.id, 1734 selectable: true, 1735 disableDragging: isRecurrence 1736 }; 1737 } 1738 else{ 1780 1781 return (evt.editable == '1' ) ? 1782 { 1783 selectable: true, 1784 className: 'fullcalendar-context-menu event-type-1 event-id-'+idEvent+' calendar-id-'+calendar.id+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') 1785 } : { 1786 editable: false, 1787 selectable: true , 1788 className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idEvent 1789 }; 1790 1791 }else{ 1739 1792 var aclSignature = Calendar.signatureOf[calendar.id].permission; 1740 1793 … … 1799 1852 criteria: function( filter ){ 1800 1853 1801 if( $.type(filter.start) !== 'date' ) 1802 filter.start = new Date( filter.start * 1000 ); 1803 if( $.type(filter.end) !== 'date' ) 1804 filter.end = new Date( filter.end * 1000 ); 1805 1806 var timezone = {}; 1807 for(var i in Calendar.signatureOf) 1808 timezone[i] = Calendar.signatureOf[i].calendar.timezone; 1809 1810 return { 1811 filter: ['AND', 1812 ['OR', 1813 ['AND', 1814 ['>=', 'rangeEnd', filter.start.getTime()], 1815 ['<=', 'rangeEnd', filter.end.getTime()] 1816 ], 1817 ['AND', 1818 ['>=', 'rangeStart', filter.start.getTime()], 1819 ['<=', 'rangeStart', filter.end.getTime()] 1820 ], 1821 ['AND', 1822 ['<=', 'rangeStart', filter.start.getTime()], 1823 ['>=', 'rangeEnd', filter.end.getTime()] 1824 ] 1825 ], 1826 ['IN', 'calendar', $.merge( Calendar.calendarIds, Calendar.groupIds )] 1827 ], 1828 criteria: { 1829 deepness: 2, 1830 timezones: timezone 1831 } 1832 } 1833 } 1854 if( $.type(filter.start) !== 'date' ) 1855 filter.start = new Date( filter.start * 1000 ); 1856 if( $.type(filter.end) !== 'date' ) 1857 filter.end = new Date( filter.end * 1000 ); 1858 1859 var timezone = {}; 1860 for(var i in Calendar.signatureOf) 1861 timezone[i] = Calendar.signatureOf[i].calendar.timezone; 1862 1863 return { 1864 timezones: timezone, 1865 rangeStart: filter.start.getTime(), 1866 rangeEnd: filter.end.getTime(), 1867 calendar: $.merge( [], Calendar.calendarIds, Calendar.groupIds ) 1868 } 1869 } 1834 1870 }); 1835 1871
Note: See TracChangeset
for help on using the changeset viewer.