Календарь событий One Way
Календарь событий умеет показывать события с расписания GetCourse, отрисовывать разные иконки в зависимости от события, добавлять события в Google и Apple календари и интегрируется с Google - таблицами для удобного администрирования событий
Для настройки календаря перейдите в "настроить вид"
Найдите блок календаря и щелкните дважды левой кнопкой мыши
Этот параметр отвечает за события с расписания. Измените параметр true на false, чтобы календарь не брал уроки с расписания
Этот параметр отвечает за интеграцию с таблицами. Для того, чтобы подключить таблицу, вам понадобится доступ к специальной таблице и особая ссылка на нее.
https://docs.google.com/spreadsheets/d/1IW0zfmYvonoAPjj2RccS-NZQL8b8jAIjGBCSw5Lnuqc/edit#gid=0
После копирования перейдите в AppScript
В AppScript начните развертывание, нажав на "новое развертывание"
Не меняйте предлагаемые настройки. Доступ должен быть от вашего имени и доступен всем
Согласитесь на запуск. Веб-приложение запрашивает доступ к вашей учетной записи google. Это безопасно, но вы можете использовать новый аккаунт google для использования таблиц
На этом этапе нажмите "show Advanced => go to json"
Вам выдаст вашу специальную ссылку на таблицу
По этой ссылке никто не сможет перейти в вашу таблицу, но при переходе по ней сервер таблиц будет отдавать нам события. Скопируйте ссылку на веб-приложение. Также эту ссылку вы всегда сможете найти в AppScript в разделе "управление развертываниями".
Вставьте ссылку в код календаря. Не удалите кавычки, в которых должна быть ссылка
В самой таблице заполняйте события как было в таблице-примере.
Вставив в последнее поле group/black/closed, вы можете делать нестандартные иконки событий
Update: ограничение расписания по тренингу
Теперь в календаре можно ограничивать расписание из геткурса, показывая только события текущего тренинга. Для этого нужно добавить в коде календаря строку
window.OneWayThisTraining = true
Сразу после этого он начнет проверять родительский тренинг уроков
Альтернативное расписание уроков GC
Вы можете подключить извлечение уроков с Chatium, а не с Расписания GetCourse. В этом случае функция window.OneWayThisTraining будет работать точнее, поскольку будет сравнивать не имена тренингов, а ID. Если у вас в школе много тренингов с одинаковыми названиями, имеет смысл использовать этот способ
3. Добавьте директорию remakeCalendarAPI
5. Добавьте код нового API и сохраните файл
import { getScheduleByEmail } from '@getcourse/sdk'
import { compareAsc, differenceInDays, endOfDay, isAfter, isBefore, parse, set, startOfDay } from '@npm/date-fns'
import { utcToZonedTime } from '@npm/date-fns-tz'
export function sortedSchedule(scheduleData: any) {
const now = utcToZonedTime(new Date(), ctx.timeZone)
return scheduleData
.filter(item => {
const itemDate = parse(item.start_at, 'yyyy-MM-dd HH:mm:ss', new Date())
return isAfter(itemDate, now)
})
.sort((a, b) => {
const dateA = parse(a.start_at, 'yyyy-MM-dd HH:mm:ss', new Date())
const dateB = parse(b.start_at, 'yyyy-MM-dd HH:mm:ss', new Date())
return compareAsc(dateA, dateB)
})
}
app.get('/', async (ctx,req)=>{
const scheduleData: any =
ctx.user?.confirmedEmail !== 'demo@chatium.io'
? await getScheduleByEmail(ctx, ctx.user?.confirmedEmail as string)
: null
return scheduleData
})6. Замените переменную: window.OneWaySchedule = 'chatium'
Теперь расписание будет браться с раздела Chatium по самому современному доступному способу: https://chatium.ru/docs/getcourse/getScheduleByEmail