calendar


Table of contents
  1. tl;dr
  2. Config JSON Fragment
  3. Proprietà (Config Section)
  4. Notifiche
  5. Screenshots
  6. ICAL
    1. Google Calendar
  7. timeFormat
    1. Considerazioni
    2. rel1
    3. rel2
    4. rel3
    5. rel4
    6. rel5
    7. rel6
    8. rel7
    9. timeFormat puro

tl;dr

Visualizza eventi da uno o più calendari.


Config JSON Fragment

{
    "module": "calendar",
    "position": "top_left",
    "config": {
        "showLocation": true,
        "wrapEvents": true,
        "wrapLocationEvents": true,
        "fetchInterval": 1000,
        "displayRepeatingCountTitle": false,
        "timeFormat": "relative",
        "getRelative": 1,
        "urgency": 0,
        "calendars": [
            {
                "url": "webcal://ical.mac.com/ical/Italian32Holidays.ics",
                "color": "#00E0E0",
                "name": "Festività italiane"
            }
        ]
    }
}

Proprietà (Config Section)

Proprietà Tipo Valori Valore Default Inderogabilità Descrizione
showLocation Boolean true: Visualizzazione della zona di svolgimento dell’evento attiva.
false: Visualizzazione della zona di svolgimento dell’evento disattiva.
false OPTIONAL Attiva la visualizzazione della zona di svolgimento dell’evento attiva.
maxTitleLength Number 10 <= x <= 50 25 OPTIONAL Valore limite oltre il quale entra in azione wrapEvents, se previsto.
wrapEvents Boolean true: Multilinea per nomi degli eventi attiva.
false: Multilinea per nomi degli eventi disattiva.
false OPTIONAL Attiva il wrapping multilinea per nomi degli eventi.
maxLocationTitleLength Number 10 <= x <= 50 25 OPTIONAL Valore limite oltre il quale entra in azione wrapLocationEvents, se previsto.
wrapLocationEvents Boolean true: Multilinea per nomi delle zone di svolgimento degli eventi attiva.
false: Multilinea per nomi delle zone di svolgimento degli eventi disattiva.
false OPTIONAL Attiva il wrapping multilinea per nomi delle zone di svolgimento degli eventi.
fetchInterval Number 1000 <= x <= 86400000 millisecondi. 300000 OPTIONAL Periodo di fetch per scaricare aggiornamenti dei contenuti del calendario.
fade Boolean true: Oscuramento sfumato degli eventi sempre più futuri attivo.
false: Oscuramento sfumato degli eventi sempre più futuri disattivo.
true OPTIONAL Attiva l’oscuramento sfumato degli eventi sempre più futuri.
displayRepeatingCountTitle Boolean true: Visualizzazione contatore autoincrementante per eventi ripetuti attiva.
false: Visualizzazione contatore autoincrementante per eventi ripetuti disattiva.
false OPTIONAL Attiva la visualizzazione contatore autoincrementante per eventi ripetuti.
dateFormat String Valori possibili elencati qui: https://momentjs.com/docs/#/parsing/string-format/. "MMM Do" OPTIONAL Formato di visualizzazione della data di inizio di un evento (valido solo se timeFormat è "absolute").
dateEndFormat String Valori possibili elencati qui: https://momentjs.com/docs/#/parsing/string-format/. "HH:mm" OPTIONAL Formato di visualizzazione dell’ora di fine di un evento.
fullDayEventDateFormat String Valori possibili elencati qui: https://momentjs.com/docs/#/parsing/string-format/. "MMM Do" OPTIONAL Formato di visualizzazione della data di inizio di un evento a tutta giornata (valido solo se timeFormat è "absolute").
timeFormat String "absolute": Vedi sezione dedicata sotto.
"relative": Vedi sezione dedicata sotto.
"relative" OPTIONAL Formato di visualizzazione del tempo (tutte le date associate all’evento) degli eventi.
getRelative Number 0 <= x <= 48 ore. Un valore di 0 ore disabilita questa funzionalità. 6 OPTIONAL Quante ore all’accadere di un evento devono mancare per visualizzare il tempo di quell’evento in formato "relative".
urgency Number x >= 0: giorni. Un valore di 0 giorni disabilita questa funzionalità. 7 OPTIONAL Quanti giorni all’accadere di un evento devono mancare per visualizzare il tempo di quell’evento in formato "relative".
broadcastEvents Boolean true: Broadcast notifiche per eventi del calendario attivo.
false: Broadcast notifiche per eventi del calendario disattivo.
true OPTIONAL Attiva il broadcast notifiche per eventi del calendario (guarda la sezione Notifiche per maggiori dettagli).
calendars Array -> Object Regole di compilazione riportate sotto. --- REQUIRED Lista di calendari dai quali prelevare gli eventi.

calendars:

Proprietà Tipo Valori Valore Default Inderogabilità Descrizione
url String Regole per ottenere il valore riportate sotto. --- REQUIRED URL .ical che identifica il calendario dal quale prelevare gli eventi. Può essere ad accesso libero o previa autenticazione.
color String Tonalità di colore espressa in valore esadecimale https://htmlcolorcodes.com. --- OPTIONAL Tonalità di colore che identifica il calendario corrente.
name String Qualsiasi stringa. --- OPTIONAL Nome per identificare il calendario corrente.
auth Object Regole di compilazione riportate sotto. --- OPTIONAL Opzioni di autenticazione per utilizzare il calendario. Necessario solo se il tipo di accesso al calendario è: “previa autenticazione”.

auth:

Proprietà Tipo Valori Valore Default Inderogabilità Descrizione
user String Username. --- REQUIRED Username per l’autenticazione HTTP.
pass String Password. --- REQUIRED Password per l’autenticazione HTTP.
method String "basic": Dettagli tecnici qui: https://it.wikipedia.org/wiki/Basic_access_authentication
"digest": Dettagli tecnici qui: https://it.wikipedia.org/wiki/Digest_access_authentication
"bearer": Dettagli tecnici qui: https://swagger.io/docs/specification/authentication/bearer-authentication/
"basic" OPTIONAL Metodo per l’autenticazione HTTP.

Notifiche

Le notifiche sono uno strumento utilizzato dai moduli per comunicare con:

  • L’OS del MagicMirror
  • Altri moduli
  • Attori umani
Notifica Direzione Trigger Payload (inline js) Descrizione
CALENDAR_EVENTS OUT La notifica è in funzione se il valore della proprietà broadcastEvents è true. [{title: "TITOLO_EVENTO", startDate: "DATA_INIZIO_EVENTO", endDate: "DATA_FINE_EVENTO", fullDayEvent: "EVENTO_TUTTA GIORNATA?", location: "LOCATION_EVENTO", geo: "INFO_GEO_EVENTO"}] Le informazioni relative agli eventi presenti nel calendario interessato vengono trasmesse agli altri moduli, per comunicare con quest’ultimi (se compatibili).

Screenshots

Scheramata del modulo in funzione in modo corretto in una qualsiasi configurazione (non specificata):

working_module.PNG


ICAL

Il Internet Calendaring and Scheduling Core Object Specification (iCal) è un formato multimediale che permette lo scambio di informazioni riguardanti schedulazione e gestione del calendario. Esempi di informazioni interessate sono:

  • Eventi
  • TODOs
  • Stato di Libero / occupato

Questi file hanno estensione: .ical. Questo formato è conforme allo standard RFC 5545 per lo scambio di dati relativi a calendari.

Le modalità per ottenere un RIFERIMENTO ICAL per il proprio calendario possono differire in base al provider utilizzato fornitore del calendario. Qui di seguito vengono riportati gli step per Google Calendar, il provider più utilizzato.

Una ricerca su Internet può fornire indicazioni e chiarire dubbi per qualsiasi provider.

Google Calendar

  1. Aprire Google Calendar

E’ possibile anche usare il seguente link: https://calendar.google.com/calendar

step1

  1. Identificare il calendario d’interesse

step2

  1. Aprire le impostazioni relative a quel calendario

step3

  1. Nelle impostazioni generiche del calendario, individuare la sezione: Indirizzo segreto in formato iCal

step4

  1. Visualizzare e copiare negli appunti l’indirizzo

step5

  1. Dall’IP Dashboard, recarsi nella configurazione del modulo calendar

step6

  1. Incollare l’indirizzo nell’apposita sezione

step7 step7_2

  1. Salvare le modifiche

step8

  1. Compilare lo stato del Database, per rendere effettive le modifiche

step9


timeFormat

Di seguito sono riportati vari esempi delle possibili configurazioni. Essi, insieme ad un po’ di testing individuale possono aiutare a capire il funzionamento delle proprietà timeFormat + getRelative + urgency:

Considerazioni

Si verificano le seguenti associazioni:

  • getRelative considerato con timeFormat: "relative"
  • urgency considerato con timeFormat: "absolute"

getRelative, quando entra in azione, trasforma:

  • Riferimento di tempo del tipo: Today at 14:00 in (starts) In an hour

urgency, quando entra in azione, trasforma:

  • Riferimento di tempo del tipo: Apr 30th in (starts) In a month

rel1

rel1 rel1_1

rel2

rel2 rel2_1

rel3

rel3 rel3_1

rel4

rel4 rel4_1

rel5

rel5 rel5_1

rel6

rel6 rel6_1

rel7

rel7 rel7_1

timeFormat puro

timeFormat: "absolute" senza alcun modificatore (senza urgency):

absolute_timeFormat.PNG

timeFormat: "relative" senza alcun modificatore (senza getRelative):

relative_timeFormat.PNG