ng-cordova
Version:
[ngCordova](http://ngcordova.com/) ==========
296 lines (248 loc) • 8.06 kB
JavaScript
// 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;
}
};
}]);