UNPKG

zettapi_client

Version:

Client side CRUD operations in angular to use with zettapi_server rest api to get started quickly in any CMS project

82 lines (70 loc) 2.57 kB
app.service('$calendar', ["moment", function(moment) { var svc = this; var eventTypes = {}; this.addEventType = function(key, label, promise) { if (typeof promise !== 'object') return console.log('promise of unexpected type for eventType ' + key); if (typeof promise.then !== 'function') return console.log('promise of unexpected type for eventType ' + key); if (!eventTypes[key]) eventTypes[key] = {}; eventTypes[key] = { label: label, promise: promise, visible: true, data: [] }; promise.then(function(items) { items.forEach(function(item) { item.type = key; }); eventTypes[key].data = items; }).catch(function(response) { console.log('addEventType catch', response); }); }; this.getEventTypes = function() { var items = []; for (var key in eventTypes) { items.push({ type: key, label: eventTypes[key].label, visible: eventTypes[key].visible, count: eventTypes[key].data.length }); } return items; }; this.getEvents = function() { var items = []; for (var key in eventTypes) { if (!eventTypes[key].visible) continue; items = items.concat(eventTypes[key].data); } return items; }; this.toggleEventType = function(toggleKey) { if (!eventTypes[toggleKey]) return console.log('no toggleKey found', toggleKey, eventTypes); for (var key in eventTypes) { eventTypes[key].visible = key === toggleKey; } return svc.getEventTypes(); }; this.newEvent = function(title, start, end) { if (typeof title === 'undefined') console.log('invalid title for event', title); if (typeof start === 'undefined') console.log('invalid start for event', title, start); _start = moment(start); if (!_start.isValid()) console.log('invalid date start for event', start); if (end) { _end = moment(end); if (!_end.isValid()) console.log('invalid date end for event', end); } var event = { title: title, startsAt: new Date(start), draggable: false, resizable: false, incrementsBadgeTotal: true, allDay: true }; if (end) event.endsAt = new Date(end); return event; }; }]);