Пример реализации библиотеки, предоставляющую API для работы с расписанием из первого задания ШРИ.
Библиотека выполнена в виде модуля с точкой входа sked.
Лекции, школы и аудитории хранятся в виде объектов в массивах lectures, schools и halls. Расписание лекций также хранится в отдельном массиве events и состоит из объектов, содержащих: дату, время, продолжительность, а также ссылки на объекты в массивах lectures, schools и halls.
Управление происходит через объекты lecture, school, hall и event.
Для event имеется возможность работать по принципу стека или создать несколько экземляров с помощью конструкции: sked.newEvent('global_var_name');
После чего можно обращаться не к sked, а к global_var_name.
Добавив необходимые лекции, школы и аудитории их нужно прикрепить к event,
после чего можно записать объект event в массив events с помощью метода .save()
.
Такой подход даёт возможность хранить массивы в сериализованном виде, к примеру, в LocalStorage и в дальнейшем заполнять их оттуда, а также отправлять их для синхронизации на сервер.
Описание работы: Documentation.
Пример использования: Demo.