Il plugin Calendar ci permette di far interagire la nostra App creata con Ionic con il calendario nativo del dispositivo. Possiamo quindi creare e gestire calendari ed eventi tramite codice JavaScript in maniera abbastanza intuitiva.
Per l'installazione del plugin eseguiamo il seguente comando dalla CLI:
ionic plugin add cordova-plugin-calendar
Una volta installato il plugin possiamo accedere alle sue funzionalità tramite il servizio $cordovaCalendar
. Una volta dichiarata nel nostro modulo la dipendenza dal servizio, possiamo creare un nuovo evento tramite il seguente codice:
$ionicPlatform.ready(function() {
$cordovaCalendar.createEvent({
title: "Compleanno di Mario",
location: "A casa sua",
notes: "Comprare il regalo",
startDate: new Date(2015, 12, 15, 20, 0, 0, 0, 0),
endDate: new Date(2015, 12, 15, 23, 0, 0, 0, 0)
}).then(function (result) {
console.log("Evento creato!");
}, function (err) {
console.error("Errore nella creazione dell'evento");
});
});
Come possiamo vedere, il metodo createEvent()
ci consente di specificare tutte le informazioni relative all'evento da creare. Al solito, il metodo restituisce una promise
la cui risoluzione possiamo gestire con l'approccio standard di Angular.
Per la creazione di eventi sono previsti alcune varianti del metodo createEvent()
. Ad esempio, il metodo createEventWithOptions()
consente di specificare ulteriori opzioni come la ricorrenza o il calendario in cui creare l'evento, mentre i metodi createEventInteractively()
e createEventInteractivelyWithOptions()
creano gli eventi, con o senza opzioni aggiuntive, richiedendo l'interazione con l'utente.
Possiamo individuare un evento in calendario utilizzando il metodo findEvent()
, come mostrato dal seguente esempio:
$ionicPlatform.ready(function() {
$cordovaCalendar.findEvent({
title: "",
location: "",
notes: "",
startDate: new Date(2015, 12, 1, 0, 0, 0, 0, 0),
endDate: new Date(2015, 12, 31, 0, 0, 0, 0, 0)
}).then(function (result) {
console.log("Sono stati trovati i seguenti eventi:\n" + JSON.stringify(result));
}, function (err) {
console.error("Errore nella ricerca di eventi");
});
});
L'esecuzione di questo codice individuerà gli eventi presenti in calendario compresi tra l'inizio e la fine del mese di dicembre 2015. Come possiamo dedurre, nella ricerca vengono prese in considerazione soltanto le proprietà valorizzate, consentendoci quindi un rudimentale filtro dell'elenco degli eventi.
È possibile eliminare un evento creato in precedenza tramite il metodo deleteEvent()
, come mostrato dal seguente esempio:
$ionicPlatform.ready(function() {
$cordovaCalendar.deleteEvent({
title: "",
location: "",
notes: "",
startDate: new Date(2015, 12, 1, 0, 0, 0, 0, 0),
endDate: new Date(2015, 12, 31, 0, 0, 0, 0, 0)
}).then(function () {
console.log("Sono stati eliminati gli eventi indicati");
}, function (err) {
console.error("Errore nell'eliminazione di eventi");
});
});
Il plugin prevede altri metodi per la gestione di eventi e calendari, come ad esempio la creazione di un calendario, la lista degli eventi disponibili, la modifica di un evento, ecc. Tuttavia molti di questi metodi sono supportati soltanto su iOS e presentano alcune limitazioni per un uso in produzione. Fare riferimento al sito ufficiale del progetto per monitorare eventuali evoluzioni.