芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/www/cloud.pulsehost.co.uk/modules/CalendarWebclient/js/Cache.js
'use strict'; var ko = require('knockout'), _ = require('underscore'), App = require('%PathToCoreWebclientModule%/js/App.js'), Ajax = require('modules/%ModuleName%/js/Ajax.js') ; /** * @constructor */ function CCalendarCache() { // uses only for ical-attachments this.calendars = ko.observableArray([]); this.calendarsLoadingStarted = ko.observable(false); this.icalAttachments = []; this.recivedAnim = ko.observable(false).extend({'autoResetToFalse': 500}); this.calendarSettingsChanged = ko.observable(false); this.calendarChanged = ko.observable(false); } /** * @param {Object} oIcal */ CCalendarCache.prototype.addIcal = function (oIcal) { _.each(this.icalAttachments, function (oIcalItem) { if (oIcalItem.uid() === oIcal.uid() && oIcal.sSequence !== oIcalItem.sSequence) { if (oIcal.sSequence > oIcalItem.sSequence) { oIcalItem.lastModification(false); } else { oIcal.lastModification(false); } } }); this.icalAttachments.push(oIcal); if (this.calendars().length === 0) { this.requestCalendarList(); } }; /** * @param {string} sFile */ CCalendarCache.prototype.getIcal = function (sFile) { return _.find(this.icalAttachments, function (oIcal) { return (sFile === oIcal.file()); }); }; /** * @param {Object} oResponse * @param {Object} oRequest */ CCalendarCache.prototype.onGetCalendarsResponse = function (oResponse, oRequest) { if (oResponse && oResponse.Result && oResponse.Result.Calendars) { var sCurrentEmail = App.currentAccountEmail ? App.currentAccountEmail() : '', aEditableCalendars = _.filter(oResponse.Result.Calendars, function (oCalendar) { return oCalendar.Owner === sCurrentEmail || oCalendar.Access === Enums.CalendarAccess.Full || oCalendar.Access === Enums.CalendarAccess.Write; }) ; this.calendars(_.map(aEditableCalendars, function (oCalendar) { return { 'name': oCalendar.Name + ' <' + oCalendar.Owner + '>', 'id': oCalendar.Id, 'readonly': oCalendar.Subscribed }; })); } this.calendarsLoadingStarted(false); }; CCalendarCache.prototype.requestCalendarList = function () { if (!this.calendarsLoadingStarted()) { Ajax.send('GetCalendars', null, this.onGetCalendarsResponse, this); this.calendarsLoadingStarted(true); } }; /** * @param {string} sFile * @param {string} sType * @param {string} sCancelDecision * @param {string} sReplyDecision * @param {string} sCalendarId * @param {string} sSelectedCalendar */ CCalendarCache.prototype.markIcalTypeByFile = function (sFile, sType, sCancelDecision, sReplyDecision, sCalendarId, sSelectedCalendar) { _.each(this.icalAttachments, function (oIcal) { if (sFile === oIcal.file()) { oIcal.type(sType); oIcal.cancelDecision(sCancelDecision); oIcal.replyDecision(sReplyDecision); oIcal.calendarId(sCalendarId); oIcal.selectedCalendarId(sSelectedCalendar); } }); }; /** * @param {string} sUid */ CCalendarCache.prototype.markIcalNonexistent = function (sUid) { _.each(this.icalAttachments, function (oIcal) { if (sUid === oIcal.uid()) { oIcal.markNeededAction(); } }); }; /** * @param {string} sUid */ CCalendarCache.prototype.markIcalNotSaved = function (sUid) { _.each(this.icalAttachments, function (oIcal) { if (sUid === oIcal.uid()) { oIcal.markNotSaved(); } }); }; /** * @param {string} sUid */ CCalendarCache.prototype.markIcalTentative = function (sUid) { _.each(this.icalAttachments, function (oIcal) { if (sUid === oIcal.uid()) { oIcal.markTentative(); } }); }; /** * @param {string} sUid */ CCalendarCache.prototype.markIcalAccepted = function (sUid) { _.each(this.icalAttachments, function (oIcal) { if (sUid === oIcal.uid()) { oIcal.markAccepted(); } }); }; module.exports = new CCalendarCache();