Skip to content

YSeredich/academy-library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)
}
Аргумент Тип Значение
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 Фамилия учителя

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

get add update delete
конструктор lectures addLecture updateLecture deleteLecture
toJSON schools addSchool updateSchool deleteSchool
fromJSON classrooms addClassroom updateClassroom deleteClassroom
teachers addTeacher updateTeacher deleteTeacher
getSchool
getClassroom
getSchoolLectures
getClassroomLectures

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

About

Вступительное задание №2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published