y-schedule v1.1.2
academy-library
Библиотека y-schedule
предоставляет API для работы с расписанием лекций Яндекс Мобилизации.
Навигация:
Чтобы воспользоваться библиотекой:
- вы можете скачать её по ссылке y-schedule.js
- подключить с помощью тега скрипт
<script src="https://unpkg.com/y-schedule/dist/browser-y-schedule.js"></script>
или воспользоваться менеджером пакетов
npm install y-schedule --save
Основные типы объектов для работы с библиотекой
Объект типа lecture
:
var lectureOptions = {
name: 'lecture1',
teachersIDs: ['Попов'],
schoolsIDs: ['ШРИ'],
classroomID: 'rabbit',
dateFrom: new Date(2017, 5, 25, 19, 30),
dateTo: new Date(2017, 5, 25, 21, 30)
}
Аргумент | Тип | Значение |
---|---|---|
name | string | Имя лекции |
teachersIDs | array | Массив строк имен учителей лекции. От 1 и более |
schoolsIDs | array | Массив строк имен школ на лекции. От 1 и более |
classroomID | string | Имя аудитории, в которой проходит лекция |
dateFrom | object Date or date string | Время начала лекции |
dateTo | object Date or date string | Время окончания лекции |
Объект типа school
:
var schoolOptions = {
name: 'ШРИ',
students: 55
}
Аргумент | Тип | Значение |
---|---|---|
name | string | Название школы |
students | number | Число учащихся в школе, положительное число |
Объект типа classroom
:
var classroomOptions = {
name: 'rabbit',
size: 100,
description: 'Very big description'
}
Аргумент | Тип | Значение |
---|---|---|
name | string | Название аудитории |
size | number | Вместимость аудитории, положительное число |
description | string | Описание, как добраться до аудитории |
Объект типа teacher
:
var teacherOptions = {name: 'Попов'}
Аргумент | Тип | Значение |
---|---|---|
name | string | Фамилия учителя |
Библиотека имеет следующие методы:
конструктор new Schedule()
Создает экземпляр класса Schedule с пустыми лекциями, школами, аудиториями и преподавателями.
геттер lectures
Возвращает массив объектов лекций из расписания.
геттер schools
Возвращет массив объектов школ из расписания.
геттер classrooms
Возвращет массив объектов аудиторий из расписания.
геттер teachers
Возвращет массив объектов учителей из расписания.
toJSON()
Возвращает JSON строку со всем содержимым расписания.
fromJSON(data)
Аргумент | Тип | Значение |
---|---|---|
data | JSON string | JSON с данными о расписании школы |
Возвращает экземпляр класса Schedule с лекциями, школами, аудиториями и преподавателями из входного JSON. Если в JSON некорректные данные бросается соответствующее исключение.
getSchool(schoolName)
Аргумент | Тип | Значение |
---|---|---|
schoolName | string | Название школы |
Возвращает объект школы (типа school
) по её имени, если она существует. Если нет - бросает исключение.
getClassroom(classroomName)
Аргумент | Тип | Значение |
---|---|---|
classroomName | string | Название аудитории |
Возвращает объект аудитории по её имени (типа classroom
), если она существует. Если нет - бросает исключение.
getSchoolLectures(schoolName, dateFrom, dateTo)
Аргумент | Тип | Значение |
---|---|---|
schoolName | string | Название школы |
dateFrom | Date obj | Начало временного интервала |
dateTo | Date obj | Конец временного интервала |
Возвращает массив объектов лекций (типа lecture
) указанной школы, проходящих в указанный период времени. Если школы с таким именем не существует или неверно указан интервал - бросает исключение. Если у школы нет лекций, возвращается пустой массив.
getClassroomLectures(classroomName, dateFrom, dateTo)
Аргумент | Тип | Значение |
---|---|---|
classroomName | string | Название аудитории |
dateFrom | Date obj | Начало временного интервала |
dateTo | Date obj | Конец временного интервала |
Возвращает массив объектов лекций, проходящих в указанной аудитории в указанный период времени. Если аудитории с таким именем не существует или неверно указан интервал - бросает исключение. Если в аудитории нет лекций, возвращается пустой массив.
addLecture(lectureOptions)
Аргумент | Тип | Значение |
---|---|---|
lectureOptions | obj | Данные о новой лекции в виде полностью заполненного объекта типа lecture |
Добавляет лекцию, если это возможно в уже сложившемся расписании. Если данные не полные или конфликтуют с уже имеющимися лекциями (лектор занят в этом время или вместимость аудитории меньше, чем количетсво студентов на лекции) - бросает исключение.
addSchool(schoolOptions)
Аргумент | Тип | Значение |
---|---|---|
schoolOptions | obj | Данные о новой школе в виде полностью заполненного объекта типа school |
Добавляет школу, если такой ещё нет. Если данные не полные или такая школа уже существует - бросает исключение.
addClassroom(classroomOptions)
Аргумент | Тип | Значение |
---|---|---|
classroomOptions | obj | Данные о новой аудитории в виде полностью заполненного объекта типа classroom |
Добавляет аудиторию, если такой ещё нет. Если данные не полные или такая аудитория уже существует - бросает исключение.
addTeacher(teacherOptions)
Аргумент | Тип | Значение |
---|---|---|
teacherOptions | obj | Данные о новом преподавателе в виде полностью заполненного объекта типа teacher |
Добавляет преподавателя, если такого ещё нет. Если данные не полные или такой преподаватель уже существует - бросает исключение.
updateLecture(lectureName, lectureOptions)
Аргумент | Тип | Значение |
---|---|---|
lectureName | string | Имя лекции |
lectureOptions | obj | Данные лекции в виде полностью или частично заполненного объекта типа lecture |
Обновляет данные об указанной лекции, если это возможно. Если лекции с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.
updateSchool(schoolName, schoolOptions)
Аргумент | Тип | Значение |
---|---|---|
schoolName | string | Имя школы |
schoolOptions | obj | Данные школы в виде полностью или частично заполненного объекта типа school |
Обновляет данные об указанной школе, если это возможно. Если школы с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.
updateClassroom(classroomName, classroomOptions)
Аргумент | Тип | Значение |
---|---|---|
classroomName | string | Имя аудитории |
classroomOptions | obj | Данные аудитории в виде полностью или частично заполненного объекта типа classroom |
Обновляет данные об указанной аудитории, если это возможно. Если аудитории с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.
updateTeacher(teacherName, teacherOptions)
Аргумент | Тип | Значение |
---|---|---|
teacherName | string | Имя преподавателя |
teacherOptions | obj | Данные преподавателя в виде полностью или частично заполненного объекта типа teacher |
Обновляет данные об указанном учителе, если это возможно. Если учителя с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.
deleteLecture(lectureName)
Аргумент | Тип | Значение |
---|---|---|
lectureName | string | Имя лекции |
Удаляет указанную лекцию. Если лекции с таким именем не существует бросает исключение. Возвращает данные об удаленной лекции в виде объекта lecture
.
deleteSchool(schoolName, isHard)
Аргумент | Тип | Значение |
---|---|---|
schoolName | string | Имя школы |
isHard | boolean | Флаг, по умолчанию false |
Если флаг isHard == false
удаляет указанную школу, если у нее нет лекций или бросает исключение, если лекции есть. Если флаг isHard == true
, то удаляет и школу и её лекции. Возвращает данные об удаленной школе в виде объекта school
.
deleteClassroom(classroomName, isHard)
Аргумент | Тип | Значение |
---|---|---|
classroomName | string | Имя аудитории |
isHard | boolean | Флаг, по умолчанию false |
Если флаг isHard == false
удаляет указанную аудиторию, если у нее нет лекций или бросает исключение, если лекции есть. Если флаг isHard == true
, то удаляет и аудиторию и её лекции. Возвращает данные об удаленной аудитории в виде объекта classroom
.
deleteTeacher(teacherName, isHard)
Аргумент | Тип | Значение |
---|---|---|
teacherName | string | Имя преподавателя |
isHard | boolean | Флаг, по умолчанию false |
Если флаг isHard == false
удаляет указанного преподавателя, если у него нет лекций или бросает исключение, если лекции есть. Если флаг isHard == true
, то удаляет и преподавателя и его лекции. Возвращает данные об удаленном преподавателе в виде объекта teacher
.
Для того, чтобы увидеть пример пользования библиотекой сделайте следующее:
node
git clone https://github.com/YSeredich/academy-library.git
cd academy-library/examples/demo-project-node/
npm install y-schedule --save
node index.js
В файле academy-library/examples/demo-project/index.js
вы можете увидеть код примера и описание, а в консоли вывод данных на определенных этапах демонстрации.
Если удобно можно попробовать воспользоваться бибилиотекой вот здесь.
browser
Пример в папке academy-library/examples/demo-project-browser/
Библиотека гарантирует корректность и связанность данных:
- Для одной школы не может быть двух лекций одновременно.
- В одной аудитории не может быть одновременно двух разных лекций.
- Вместимость аудитории должна быть больше или равной количеству студентов на лекции.
- Лектор не может быть на двух лекциях одновременно.
- Количество студентов школы не может быть отрицательным.
- Вместимость аудитории не может быть отрицательной.
- Время начала лекции не может быть позже времени конца лекции.
- Длина лекции не может превышать 6 часов.
- Не может быть двух одинаковых учителей или школ на одной лекции.
- Нельзя добавить (не может существовать) лекцию с несуществующими преподавателем, аудиторией или школой.
- Не может быть двух одинаковых имен лекций, учителей, аудиторий, школ.