UNPKG

zettapi_client

Version:

Admin panel and 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.26 kB
app.service('$calendar', 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; }; });