UNPKG

ng-cordova

Version:

[ngCordova](http://ngcordova.com/) ==========

296 lines (248 loc) 8.06 kB
// install : cordova plugin add https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin.git // link : https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin angular.module('ngCordova.plugins.calendar', []) .factory('$cordovaCalendar', ['$q', '$window', function ($q, $window) { return { createCalendar: function (options) { var d = $q.defer(), createCalOptions = $window.plugins.calendar.getCreateCalendarOptions(); if (typeof options === 'string') { createCalOptions.calendarName = options; } else { createCalOptions = angular.extend(createCalOptions, options); } $window.plugins.calendar.createCalendar(createCalOptions, function (message) { d.resolve(message); }, function (error) { d.reject(error); }); return d.promise; }, deleteCalendar: function (calendarName) { var d = $q.defer(); $window.plugins.calendar.deleteCalendar(calendarName, function (message) { d.resolve(message); }, function (error) { d.reject(error); }); return d.promise; }, createEvent: function (options) { var d = $q.defer(), defaultOptions = { title: null, location: null, notes: null, startDate: null, endDate: null }; defaultOptions = angular.extend(defaultOptions, options); $window.plugins.calendar.createEvent( defaultOptions.title, defaultOptions.location, defaultOptions.notes, new Date(defaultOptions.startDate), new Date(defaultOptions.endDate), function (message) { d.resolve(message); }, function (error) { d.reject(error); } ); return d.promise; }, createEventWithOptions: function (options) { var d = $q.defer(), defaultOptionKeys = [], calOptions = window.plugins.calendar.getCalendarOptions(), defaultOptions = { title: null, location: null, notes: null, startDate: null, endDate: null }; defaultOptionKeys = Object.keys(defaultOptions); for (var key in options) { if (defaultOptionKeys.indexOf(key) === -1) { calOptions[key] = options[key]; } else { defaultOptions[key] = options[key]; } } $window.plugins.calendar.createEventWithOptions( defaultOptions.title, defaultOptions.location, defaultOptions.notes, new Date(defaultOptions.startDate), new Date(defaultOptions.endDate), calOptions, function (message) { d.resolve(message); }, function (error) { d.reject(error); } ); return d.promise; }, createEventInteractively: function (options) { var d = $q.defer(), defaultOptions = { title: null, location: null, notes: null, startDate: null, endDate: null }; defaultOptions = angular.extend(defaultOptions, options); $window.plugins.calendar.createEventInteractively( defaultOptions.title, defaultOptions.location, defaultOptions.notes, new Date(defaultOptions.startDate), new Date(defaultOptions.endDate), function (message) { d.resolve(message); }, function (error) { d.reject(error); } ); return d.promise; }, createEventInNamedCalendar: function (options) { var d = $q.defer(), defaultOptions = { title: null, location: null, notes: null, startDate: null, endDate: null, calendarName: null }; defaultOptions = angular.extend(defaultOptions, options); $window.plugins.calendar.createEventInNamedCalendar( defaultOptions.title, defaultOptions.location, defaultOptions.notes, new Date(defaultOptions.startDate), new Date(defaultOptions.endDate), defaultOptions.calendarName, function (message) { d.resolve(message); }, function (error) { d.reject(error); } ); return d.promise; }, findEvent: function (options) { var d = $q.defer(), defaultOptions = { title: null, location: null, notes: null, startDate: null, endDate: null }; defaultOptions = angular.extend(defaultOptions, options); $window.plugins.calendar.findEvent( defaultOptions.title, defaultOptions.location, defaultOptions.notes, new Date(defaultOptions.startDate), new Date(defaultOptions.endDate), function (foundEvent) { d.resolve(foundEvent); }, function (error) { d.reject(error); } ); return d.promise; }, listEventsInRange: function (startDate, endDate) { var d = $q.defer(); $window.plugins.calendar.listEventsInRange(startDate, endDate, function (events) { d.resolve(events); }, function (error) { d.reject(error); }); return d.promise; }, listCalendars: function () { var d = $q.defer(); $window.plugins.calendar.listCalendars(function (calendars) { d.resolve(calendars); }, function (error) { d.reject(error); }); return d.promise; }, findAllEventsInNamedCalendar: function (calendarName) { var d = $q.defer(); $window.plugins.calendar.findAllEventsInNamedCalendar(calendarName, function (events) { d.resolve(events); }, function (error) { d.reject(error); }); return d.promise; }, modifyEvent: function (options) { var d = $q.defer(), defaultOptions = { title: null, location: null, notes: null, startDate: null, endDate: null, newTitle: null, newLocation: null, newNotes: null, newStartDate: null, newEndDate: null }; defaultOptions = angular.extend(defaultOptions, options); $window.plugins.calendar.modifyEvent( defaultOptions.title, defaultOptions.location, defaultOptions.notes, new Date(defaultOptions.startDate), new Date(defaultOptions.endDate), defaultOptions.newTitle, defaultOptions.newLocation, defaultOptions.newNotes, new Date(defaultOptions.newStartDate), new Date(defaultOptions.newEndDate), function (message) { d.resolve(message); }, function (error) { d.reject(error); } ); return d.promise; }, deleteEvent: function (options) { var d = $q.defer(), defaultOptions = { newTitle: null, location: null, notes: null, startDate: null, endDate: null }; defaultOptions = angular.extend(defaultOptions, options); $window.plugins.calendar.deleteEvent( defaultOptions.newTitle, defaultOptions.location, defaultOptions.notes, new Date(defaultOptions.startDate), new Date(defaultOptions.endDate), function (message) { d.resolve(message); }, function (error) { d.reject(error); } ); return d.promise; } }; }]);