1.1.2 • Published 7 years ago

y-schedule v1.1.2

Weekly downloads
13
License
ISC
Repository
github
Last release
7 years ago

Build Status npm version

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)
}
АргументТипЗначение
namestringИмя лекции
teachersIDsarrayМассив строк имен учителей лекции. От 1 и более
schoolsIDsarrayМассив строк имен школ на лекции. От 1 и более
classroomIDstringИмя аудитории, в которой проходит лекция
dateFromobject Date or date stringВремя начала лекции
dateToobject Date or date stringВремя окончания лекции

Объект типа school:

var schoolOptions = { 
  name: 'ШРИ', 
  students: 55
}
АргументТипЗначение
namestringНазвание школы
studentsnumberЧисло учащихся в школе, положительное число

Объект типа classroom:

var classroomOptions = {
  name: 'rabbit', 
  size: 100, 
  description: 'Very big description'
}
АргументТипЗначение
namestringНазвание аудитории
sizenumberВместимость аудитории, положительное число
descriptionstringОписание, как добраться до аудитории

Объект типа teacher:

var teacherOptions = {name: 'Попов'}
АргументТипЗначение
namestringФамилия учителя

Библиотека имеет следующие методы:

getaddupdatedelete
конструкторlecturesaddLectureupdateLecturedeleteLecture
toJSONschoolsaddSchoolupdateSchooldeleteSchool
fromJSONclassroomsaddClassroomupdateClassroomdeleteClassroom
teachersaddTeacherupdateTeacherdeleteTeacher
getSchool
getClassroom
getSchoolLectures
getClassroomLectures

конструктор new Schedule()

Создает экземпляр класса Schedule с пустыми лекциями, школами, аудиториями и преподавателями.

геттер lectures

Возвращает массив объектов лекций из расписания.

геттер schools

Возвращет массив объектов школ из расписания.

геттер classrooms

Возвращет массив объектов аудиторий из расписания.

геттер teachers

Возвращет массив объектов учителей из расписания.

toJSON()

Возвращает JSON строку со всем содержимым расписания.

fromJSON(data)

АргументТипЗначение
dataJSON stringJSON с данными о расписании школы

Возвращает экземпляр класса Schedule с лекциями, школами, аудиториями и преподавателями из входного JSON. Если в JSON некорректные данные бросается соответствующее исключение.

getSchool(schoolName)

АргументТипЗначение
schoolNamestringНазвание школы

Возвращает объект школы (типа school) по её имени, если она существует. Если нет - бросает исключение.

getClassroom(classroomName)

АргументТипЗначение
classroomNamestringНазвание аудитории

Возвращает объект аудитории по её имени (типа classroom), если она существует. Если нет - бросает исключение.

getSchoolLectures(schoolName, dateFrom, dateTo)

АргументТипЗначение
schoolNamestringНазвание школы
dateFromDate objНачало временного интервала
dateToDate objКонец временного интервала

Возвращает массив объектов лекций (типа lecture) указанной школы, проходящих в указанный период времени. Если школы с таким именем не существует или неверно указан интервал - бросает исключение. Если у школы нет лекций, возвращается пустой массив.

getClassroomLectures(classroomName, dateFrom, dateTo)

АргументТипЗначение
classroomNamestringНазвание аудитории
dateFromDate objНачало временного интервала
dateToDate objКонец временного интервала

Возвращает массив объектов лекций, проходящих в указанной аудитории в указанный период времени. Если аудитории с таким именем не существует или неверно указан интервал - бросает исключение. Если в аудитории нет лекций, возвращается пустой массив.

addLecture(lectureOptions)

АргументТипЗначение
lectureOptionsobjДанные о новой лекции в виде полностью заполненного объекта типа lecture

Добавляет лекцию, если это возможно в уже сложившемся расписании. Если данные не полные или конфликтуют с уже имеющимися лекциями (лектор занят в этом время или вместимость аудитории меньше, чем количетсво студентов на лекции) - бросает исключение.

addSchool(schoolOptions)

АргументТипЗначение
schoolOptionsobjДанные о новой школе в виде полностью заполненного объекта типа school

Добавляет школу, если такой ещё нет. Если данные не полные или такая школа уже существует - бросает исключение.

addClassroom(classroomOptions)

АргументТипЗначение
classroomOptionsobjДанные о новой аудитории в виде полностью заполненного объекта типа classroom

Добавляет аудиторию, если такой ещё нет. Если данные не полные или такая аудитория уже существует - бросает исключение.

addTeacher(teacherOptions)

АргументТипЗначение
teacherOptionsobjДанные о новом преподавателе в виде полностью заполненного объекта типа teacher

Добавляет преподавателя, если такого ещё нет. Если данные не полные или такой преподаватель уже существует - бросает исключение.

updateLecture(lectureName, lectureOptions)

АргументТипЗначение
lectureNamestringИмя лекции
lectureOptionsobjДанные лекции в виде полностью или частично заполненного объекта типа lecture

Обновляет данные об указанной лекции, если это возможно. Если лекции с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.

updateSchool(schoolName, schoolOptions)

АргументТипЗначение
schoolNamestringИмя школы
schoolOptionsobjДанные школы в виде полностью или частично заполненного объекта типа school

Обновляет данные об указанной школе, если это возможно. Если школы с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.

updateClassroom(classroomName, classroomOptions)

АргументТипЗначение
classroomNamestringИмя аудитории
classroomOptionsobjДанные аудитории в виде полностью или частично заполненного объекта типа classroom

Обновляет данные об указанной аудитории, если это возможно. Если аудитории с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.

updateTeacher(teacherName, teacherOptions)

АргументТипЗначение
teacherNamestringИмя преподавателя
teacherOptionsobjДанные преподавателя в виде полностью или частично заполненного объекта типа teacher

Обновляет данные об указанном учителе, если это возможно. Если учителя с таким именем не существует или данные нельзя заменить на желаемые - бросает соответсвующее исключение.

deleteLecture(lectureName)

АргументТипЗначение
lectureNamestringИмя лекции

Удаляет указанную лекцию. Если лекции с таким именем не существует бросает исключение. Возвращает данные об удаленной лекции в виде объекта lecture.

deleteSchool(schoolName, isHard)

АргументТипЗначение
schoolNamestringИмя школы
isHardbooleanФлаг, по умолчанию false

Если флаг isHard == false удаляет указанную школу, если у нее нет лекций или бросает исключение, если лекции есть. Если флаг isHard == true, то удаляет и школу и её лекции. Возвращает данные об удаленной школе в виде объекта school.

deleteClassroom(classroomName, isHard)

АргументТипЗначение
classroomNamestringИмя аудитории
isHardbooleanФлаг, по умолчанию false

Если флаг isHard == false удаляет указанную аудиторию, если у нее нет лекций или бросает исключение, если лекции есть. Если флаг isHard == true, то удаляет и аудиторию и её лекции. Возвращает данные об удаленной аудитории в виде объекта classroom.

deleteTeacher(teacherName, isHard)

АргументТипЗначение
teacherNamestringИмя преподавателя
isHardbooleanФлаг, по умолчанию 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 часов.
  • Не может быть двух одинаковых учителей или школ на одной лекции.
  • Нельзя добавить (не может существовать) лекцию с несуществующими преподавателем, аудиторией или школой.
  • Не может быть двух одинаковых имен лекций, учителей, аудиторий, школ.
1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago