Ημερολόγιο
Το Libre WebUI περιλαμβάνει προσωπικό ημερολόγιο. Κάθε συνδεδεμένος χρήστης διαθέτει δικές του προβολές μήνα και εβδομάδας με μεμονωμένα και επαναλαμβανόμενα συμβάντα, ενώ οι προγραμματισμένοι αυτοματισμοί προβάλλουν στο ίδιο πλέγμα τις επόμενες εκτελέσεις και το ιστορικό τους.
Συμβάντα
Ένα συμβάν έχει τίτλο, προαιρετικές σημειώσεις, ώρα έναρξης, προαιρετική ώρα λήξης, ένδειξη ολοήμερου συμβάντος και προαιρετικό κανόνα επανάληψης. Οι τίτλοι και οι σημειώσεις κρυπτογραφούνται κατά την αποθήκευση με το ίδιο περίβλημα που χρησιμοποιείται για συνομιλίες και σημειώσεις.
Η επανάληψη χρησιμοποιεί το κοινό μοντέλο εναυσμάτων:
| Τύπος | Πεδία | Σημασία |
|---|---|---|
once | at | Μία μόνο εμφάνιση |
hourly | minute, startHour?, endHour? | Κάθε ώρα μέσα σε ένα διάστημα |
daily | hour, minute | Κάθε ημέρα σε συγκεκριμένη ώρα |
weekly | dayOfWeek, hour, minute | Κάθε εβδομάδα σε επιλεγμένη ημέρα |
monthly | dayOfMonth, hour, minute | Κάθε μήνα σε επιλεγμένη ημέρα |
yearly | month, dayOfMonth, hour, minute | Κάθε χρόνο σε επιλεγμένη ημερομηνία |
Τα επαναλαμβανόμενα συμβάντα αποθηκεύονται μία φορά. Τα ερωτήματα εύρους τα αναπτύσσουν στον διακομιστή: κάθε προβαλλόμενη εμφάνιση διαθέτει baseEventId που παραπέμπει στο αρχικό συμβάν, οπότε η επεξεργασία της πηγής ενημερώνει κάθε μελλοντική εμφάνιση. Ένα dayOfMonth πέρα από το τέλος του μήνα περιορίζεται στην τελευταία ημέρα του. Όλοι οι υπολογισμοί επανάληψης χρησιμοποιούν την τοπική ζώνη ώρας του διακομιστή.
Ονομασμένα ημερολόγια και κοινή χρήση
Πέρα από το προεπιλεγμένο προσωπικό πεδίο, ένας χρήστης μπορεί να δημιουργήσει έως 20 ονομασμένα ημερολόγια, καθένα με προαιρετικό χρώμα εμφάνισης. Τα συμβάντα διαθέτουν προαιρετικό calendarId· όσα δεν έχουν παραμένουν στο προεπιλεγμένο πεδίο, το οποίο είναι ιδιωτικό.
Τα ονομασμένα ημερολόγια κοινοποιούνται μέσω του κοινού μοντέλου παραχώρησης: μια παραχώρηση read επιτρέπει στον παραλήπτη να βλέπει το ημερολόγιο και τα συμβάντα του μαζί με τα δικά του, ενώ η παραχώρηση write του επιτρέπει επιπλέον να δημιουργεί και να επεξεργάζεται συμβάντα. Τα συμβάντα που δημιουργεί ένας συνεργάτης αποθηκεύονται στον λογαριασμό του κατόχου του ημερολογίου, ώστε οι ποσοστώσεις, η διαγραφή και το φορητό αρχείο να παραμένουν στο πεδίο του κατόχου. Η πρόσβαση επανεγκρίνεται σε κάθε αίτημα· η ανάκληση μιας παραχώρησης αποκρύπτει το ημερολόγιο στην επόμενη ανάγνωση. Η διαγραφή ημερολογίου αποσυνδέει τα συμβάντα του και τα επιστρέφει στο προεπιλεγμένο πεδίο του κατόχου, ενώ αφαιρεί τις παραχωρήσεις του.
Υπενθυμίσεις
Ένα συμβάν μπορεί να έχει χρονική μετατόπιση υπενθύμισης (reminderMinutes, έως 14 ημέρες). Ο μισθωμένος κύκλος του προγραμματιστή αυτοματισμών εντοπίζει τις ληξιπρόθεσμες υπενθυμίσεις και δημοσιεύει ειδοποίηση calendar-reminder στα εισερχόμενα του κατόχου· μια λειτουργία σύγκρισης και ορισμού ανά εμφάνιση εγγυάται ότι καμία εμφάνιση δεν ενεργοποιείται ξανά, ακόμη και στα επαναλαμβανόμενα συμβάντα.
Εισαγωγή και εξαγωγή ICS
Το GET /api/calendar/export?calendarId= κατεβάζει ένα ημερολόγιο (ή το προεπιλεγμένο πεδίο) ως αρχείο RFC 5545 .ics: χρονικές σημάνσεις UTC, escaped κείμενο, βασικούς κανόνες RRULE αντιστοιχισμένους από τους εγγενείς τύπους επανάληψης και μπλοκ VALARM για υπενθυμίσεις. Το POST /api/calendar/import δέχεται ωφέλιμο φορτίο ICS (έως 2 MB / 1,000 συμβάντα) σε ένα εγγράψιμο πεδίο ημερολογίου. Η εισαγωγή χειρίζεται UTC και κινητές ώρες, ολοήμερες τιμές DATE και απλούς κανόνες FREQ· για κανόνες που δεν μπορεί να αναπαραστήσει πιστά (INTERVAL, COUNT, UNTIL, EXDATE), εισάγει το συμβάν χωρίς επανάληψη και τους καταμετρά στην απόκριση ως παραλειφθέντες αντί να προκαλεί σιωπηρή χρονική απόκλιση.
Πρόσβαση μοντέλων
Τρία ενσωματωμένα εργαλεία συνομιλίας παρέχουν στα μοντέλα πρόσβαση στο ημερολόγιο με την ταυτότητα του χρήστη που τα καλεί: list_calendar_events (μόνο για ανάγνωση), create_calendar_event και delete_calendar_event (τα δύο τελευταία έχουν παρενέργειες και συνεπώς περνούν από την τυπική ροή έγκρισης εργαλείων).
API
Όλα τα endpoints απαιτούν έλεγχο ταυτότητας. Η ανάγνωση συμβάντων καλύπτει τα συμβάντα του καλούντος και τα ημερολόγια που έχουν κοινοποιηθεί σε αυτόν· η εγγραφή απαιτεί ιδιοκτησία ή παραχώρηση εγγραφής στο ημερολόγιο προορισμού.
| Μέθοδος | Διαδρομή | Σκοπός |
|---|---|---|
GET | /api/calendar/events?from=&to= | Συμβάντα σε εύρος, με αναπτυγμένες επαναλήψεις |
POST | /api/calendar/events | Δημιουργία συμβάντος |
PUT | /api/calendar/events/:eventId | Ενημέρωση συμβάντος |
DELETE | /api/calendar/events/:eventId | Διαγραφή συμβάντος |
GET | /api/calendar/calendars | Ιδιόκτητα και κοινόχρηστα ονομασμένα ημερολόγια |
POST | /api/calendar/calendars | Δημιουργία ονομασμένου ημερολογίου |
PUT | /api/calendar/calendars/:id | Μετονομασία ή αλλαγή χρώματος ημερολογίου |
DELETE | /api/calendar/calendars/:id | Διαγραφή ημερολογίου (τα συμβάντα αποσυνδέονται) |
GET | /api/calendar/export | Εξαγωγή ICS |
POST | /api/calendar/import | Εισαγωγή ICS |
Τα ερωτήματα εύρους δέχονται όρια from/to σε χιλιοστά του δευτερολέπτου από την epoch και καλύπτουν έως 13 μήνες ανά αίτημα. Ένας χρήστης μπορεί να αποθηκεύσει έως 2000 συμβάντα· οι τίτλοι περιορίζονται σε 200 χαρακτήρες και οι σημειώσεις σε 10,000.