Langkau ke kandungan

Kalendar dan penjadualan

Control Center bersambung ke Google Calendar supaya hari anda berada bersebelahan armada anda. Ia menyegerakkan acara anda, memaparkannya dalam paparan bulan, minggu, hari dan agenda, memberi amaran kepada anda sebelum mesyuarat bermula dan menukar mana-mana acara menjadi mesyuarat yang dirakam dan diringkaskan.

Hampir tiada apa-apa. Integrasi ini menarik masuk acara dan memaparkannya. Ia tidak mencipta, menyunting, memadam atau menjawab jemputan. Setiap sambungan kod peranti, sama ada terbina dalam atau bawa sendiri, meminta calendar.readonly serta openid email.

Acara disegerakkan ke dalam pangkalan data ruang kerja itu sendiri pada pelayan (<dataDir>/<workspaceId>/workspace.db) dan dipaparkan oleh setiap klien melalui RPC. Tiada klien memegang kelayakan Google.

Akaun kalendar berlingkup ruang kerja, seperti semua yang lain dalam Control Center. Setiap ruang kerja menyambungkan akaun Google sendiri (atau beberapa) dan acara serta token satu ruang kerja tidak pernah kelihatan daripada ruang kerja lain. Menukar ruang kerja menukar kalendar yang anda lihat.

Satu ruang kerja boleh menyambungkan beberapa akaun Google, seperti akaun kerja dan akaun peribadi, dan acaranya digabungkan ke dalam paparan yang sama.

cc_server tanpa kepala tiada pelayar untuk menangkap ubah hala OAuth. Jadi ia tidak menggunakannya: ia memberi kebenaran dengan pemberian kod peranti (RFC 8628). Pelayan menunjukkan kod pengguna yang pendek dan URL Google, anda meluluskannya pada mana-mana peranti yang mempunyai pelayar dan pelayan meninjau secara berkala sehingga anda berbuat demikian. Pemasangan tanpa kepala boleh menyambungkan akaun justeru kerana tiada titik akhir ubah hala yang perlu dihoskan.

Kesannya yang perlu anda tahu sebelum membawa kelayakan sendiri: jenis klien mestilah “TV and Limited Input devices” milik Google. Google hanya memberikan set skop yang dibenarkan kepada jenis klien itu dan projek yang tidak membenarkan Calendar untuknya akan gagal dengan invalid_scope — anda perlu menggunakan klien loopback atau klien web sebaliknya.

Token tidak pernah meninggalkan pelayan. Ia ditulis ke secrets.json pelayan dalam direktori datanya, dengan kunci google_google:<workspaceId>:<email>, bersebelahan pangkalan data dan di bawah sempadan kepercayaan sistem fail hos yang sama. Pelayan menyegarkan akses secara automatik dan, apabila Google membatalkan sesuatu akaun secara kekal (sesi yang ditarik balik atau lama luput), menerbitkan CalendarAuthExpired dan memaparkan banner Sambung semula dan bukannya gagal secara senyap.

Binaan daripada sumber tidak menyertakan sebarang kelayakan Google — anda membekalkan id klien dan rahsia anda sendiri. Binaan keluaran rasmi menanam klien kod peranti yang tidak sulit supaya aliran sambungan berfungsi terus; pelayan hanya menyimpan penanda yang merujuknya, tidak pernah salinannya. GOOGLE_OAUTH_CLIENT_ID (dan rahsianya) dalam persekitaran sentiasa diutamakan berbanding pasangan yang ditanam. Secara sengaja tiada bendera --google-client-id: bendera yang tidak dikenali diabaikan, dan rahsia pada baris arahan boleh dibaca melalui ps.

Untuk menjalankan projek Google anda sendiri, lihat Sambungkan Google Calendar.

Pelayan menarik tetingkap bergolek bagi acara setiap akaun yang disambungkan — setiap kalendar pada akaun itu, bukan hanya kalendar utama — setiap dua minit, serta atas permintaan (mula, sambung, muat semula manual). Kekerapan pendek ini berpatutan kerana sapuan itu bersifat inkremental: setiap kalendar membawa token segeraknya sendiri, jadi kalendar yang tidak berubah hanya memerlukan satu respons yang hampir kosong daripada mengambil semula tetingkap lima bulan.

Acara berulang dikembangkan di sisi pelayan, jadi tiada klien perlu menghuraikan peraturan pengulangan. Melayari bulan di luar tetingkap semasa memuatkan julat itu secara malas. Acara yang dipadamkan atau berpindah keluar julat diselaraskan keluar pada penyegerakan berikutnya.

Paparan Apa yang dipaparkannya
Bulan Grid sebulan penuh (dikuasakan oleh pakej kalender)
Minggu Acara bermasa selama seminggu dalam grid masa
Hari Acara bermasa sehari dalam grid masa
Agenda Senarai boleh tatal bagi acara akan datang

Buka kalendar pada /calendar; memilih acara membuka butirannya pada /calendar/:eventId. Paparan yang anda pilih disimpan dalam keutamaan klien tersebut, jadi ia tidak mengikut anda ke peranti lain.

Penjadual setiap minit mengimbas acara yang bermula dalam tetingkap masa awal yang boleh dikonfigurasikan dan mencetuskan pemberitahuan “Mesyuarat akan bermula tidak lama lagi” (satu acara domain MeetingStartingSoon). Pemberitahuan itu membawa URL sertai apabila ada dan mengkliknya membuka butiran acara. Amaran dinyahduplikasi terhadap alertedAt acara, jadi mesyuarat yang sama tidak pernah memberi amaran dua kali, malah merentas permulaan semula dan acara yang masa mulanya berlalu semasa aplikasi ditutup tidak pernah diulang.

Dua had mudah terlepas pandang. Penjadual berjalan di sisi klien pada desktop dan hanya untuk ruang kerja yang sedang anda buka — ruang kerja yang anda tidak berada di dalamnya tidak menimbulkan sebarang amaran. Dan binaan web langsung tiada saluran pemberitahuan OS, jadi ia juga tidak menimbulkan amaran.

Daripada acara kalendar anda boleh memulakan rakaman mesyuarat yang dimulakan dengan tajuk acara. Control Center menyimpan pautan satu-ke-satu antara rakaman dan acara, jadi nota mesyuarat dan catatan kalendar kekal bersambung tanpa mana-mana ciri bergantung pada yang lain.

Mula rakaman & pautkan hanya untuk desktop. Pada klien web, tindakan itu melaporkan bahawa rakaman tidak tersedia — walaupun aliran rakaman pada skrin mesyuarat itu sendiri sememangnya berfungsi dalam pelayar.