Репозиторий второго вступительного задания для Школы Разработки Интерфейсов 2017
Автор - Михаил Кононенко
Библиотека, предоставляющая API для работы с расписанием лекций проекта "Мобилизация". Подробное описание задания здесь.
# Клонируем репозиторий
> git clone https://github.com/vbifonixor/second-task
# заходим в папку проекта и устанавливаем зависимости
> cd second-task
> npm iПодключение библиотеки как модуля доступно с помощью browserify:
let Mobilization = require('./dist/main.js');
let mobilization2017 = new Mobilization();Пример использования и применения каждого метода библиотеки содержится в файле demo.js. Его скомпилированная утилитой browserify версия (demo.dist.js) подключена к файлу index.html в корне этого репозитория.
Конструктор класса Mobilization принимает один параметр - объект setup.
Структура объекта setup для инициализации инстанса класса Mobilization:
{
schools: [school1, school2, school3, ...],
places: [place1, place2, place3, ...],
lectures: [lecture1, lecture2, lecture3]
}Свойства объекта setup не являются обязательными.
Структура объекта школы должна быть такой:
let school = {
name: 'Школа разработки интерфейсов',
students: 40
}Структура объекта аудитории аналогична:
let place = {
name: 'Мулен Руж',
capacity: 90
}Структура объекта лекции сложнее:
let lecture = {
name: 'Название лекции',
lecturer: 'Имя и фамилия преподавателя',
dateFrom: '2017-06-06 19:00', // дата начала в формате ISO 8601
duration: 90, // Длительность лекции в минутах
place: 'Название аудитории',
schools: ['ШРИ', 'ШМД'] // Названия школ, к которым относится лекция
};Формат объектов критичен и не соответствующие ему объекты не будут добавлены к инстансу Мобилизации. Формат всех дат принимаемый любым из методов - ISO 8601 - особенность библиотеки Moment.js, использованной для манипуляции датами и временем в библиотеке.
В библиотеке реализованы следующие методы для манипуляций данными инстанса:
.addLecture(lecture[, silent])- добавляет объект лекции (в соответствующем формате)lecture. Необязательный параметрsilentотвечает за вывод сообщений об успехе/ошибке в консоль (если ошибка не критична). Чтобы включить "тихий режим", параметрsilentдолжен быть любым значением, которое при приведении возвращает true. Метод возвращает true, если добавление прошло успешно, и false, если возникла ошибка. Помимо этого, он выводит информацию в консоль об успехе или ошибке (не в тихом режиме)..deleteLecture(lectureName[, silent])- удаляет лекцию по её названию, заданному в первом аргументеlectureName. Аргументsilentотвечает за "тихий режим" по тому же принципу, что и в методеaddLecture. Метод возвращает true, если лекция была успешно удалена, и false, если удаления не произошло. Не в тихом режиме также отображает сообщение об успехе или ошибке в консоль..editLecture(lectureName, changes[, silent])- изменяет лекцию в соответствии с изменениями в объектеchanges. Во всех методах-редакторах объект changes должен содержать себе изменения (по формату объекта сущности, не изменяемые свойства указывать необязательно). Возвращает true в случае успеха и false в случае ошибки, и соответствующее сообщение (не в тихом режиме) в консоль..getLecture(name)- возвращает объект лекции из инстанса по её названию, переданную в аргументname.checkLecture(lecture[, editor])- возвращает true, если объект лекции, переданный в аргументеlecture, соответствует формату, описанном в секции Конструктор и false, если не соответствует. Необязательный аргументeditor, если приводится к true, опускает проверку о существовании лекции с таким названием (для вызова методом-редактором).
.addSchool(school[, silent])- добавляет объект школы (в соответствующем формате)school. Необязательный параметрsilentотвечает за вывод сообщений об успехе/ошибке в консоль (если ошибка не критична). Чтобы включить "тихий режим", параметрsilentдолжен быть любым значением, которое при приведении возвращает true. Метод возвращает true, если добавление прошло успешно, и false, если возникла ошибка. Помимо этого, он выводит информацию в консоль об успехе или ошибке (не в тихом режиме)..deleteSchool(schoolName[, silent, editor])- удаляет школу по её названию, заданному в первом аргументеschoolName. Аргументsilentотвечает за "тихий режим" по тому же принципу, что и в методеaddSchool. Метод возвращает true, если школа была успешно удалена, и false, если удаления не произошло. Не в тихом режиме также отображает сообщение об успехе или ошибке в консоль. Аргументeditor, если приводится к true, отключает каскадное удаление лекций/названия школы из объекта лекции, при вызове методом-редактором..editSchool(schoolName, changes[, silent])- изменяет школу в соответствии с изменениями в объектеchanges. Во всех методах-редакторах объект changes должен содержать себе изменения (по формату объекта сущности, не изменяемые свойства указывать необязательно). Возвращает true в случае успеха и false в случае ошибки, и соответствующее сообщение (не в тихом режиме) в консоль..getSchool(name)- возвращает объект школы из инстанса по её названию, переданную в аргументname.checkSchool(school[, editor])- возвращает true, если объект школы, переданный в аргументеschool, соответствует формату, описанном в секции Конструктор и false, если не соответствует. Необязательный аргументeditor, если приводится к true, опускает проверку о существовании школы с таким названием (для вызова методом-редактором).
.addPlace(place[, silent])- добавляет объект аудитории (в соответствующем формате)place. Необязательный параметрsilentотвечает за вывод сообщений об успехе/ошибке в консоль (если ошибка не критична). Чтобы включить "тихий режим", параметрsilentдолжен быть любым значением, которое при приведении возвращает true. Метод возвращает true, если добавление прошло успешно, и false, если возникла ошибка. Помимо этого, он выводит информацию в консоль об успехе или ошибке (не в тихом режиме)..deletePlace(placeName[, silent, editor])- удаляет аудиторию по её названию, заданному в первом аргументеplaceName. Аргументsilentотвечает за "тихий режим" по тому же принципу, что и в методеaddPlace. Метод возвращает true, если аудитория была успешно удалена, и false, если удаления не произошло. Не в тихом режиме также отображает сообщение об успехе или ошибке в консоль. отключает каскадное удаление лекций, при вызове методом-редактором..editPlace(placeName, changes[, silent])- изменяет аудиторию в соответствии с изменениями в объектеchanges. Во всех методах-редакторах объект changes должен содержать себе изменения (по формату объекта сущности, не изменяемые свойства указывать необязательно). Возвращает true в случае успеха и false в случае ошибки, и соответствующее сообщение (не в тихом режиме) в консоль..getPlace(name)- возвращает объект аудитории из инстанса по её названию, переданную в аргументname.checkPlace(place[, editor])- возвращает true, если объект аудитории, переданный в аргументеplace, соответствует формату, описанном в секции Конструктор и false, если не соответствует. Необязательный аргументeditor, если приводится к true, опускает проверку о существовании аудитории с таким названием (для вызова методом-редактором).
.placeIsCapable(place, schools)- принимает объект аудитории или её название в качестве первого аргумента и массив объектов/названий школ и возвращает true, если сумма студентов всех школ не больше вместимости аудитории. В противном случае возвращает false..placeIsFree(place, dateFrom, duration)- принимает объект аудитории или её название в качестве первого аргумента, желаемые дату и время и желаемую длительность. Возвращает true, если аудитория в желаемое время свободна (наdurationминут минимум). Иначе возвращает false.
.schoolSchedule(school[, dateFrom[, dateTo]])- аргументschool- объект или название школы, расписание которой будет выведено, необязательные аргументыdateFromиdateTo- дата начала и конца выводимого расписания (включительно). Возвращает массив лекций для школы, если не указаныdateFromиdateTo, возвращает массив всех лекций с начальной датыdateFrom, если она указана. Если указана ещё и конечная датаdateTo, возвращается массив лекций в этом временном промежутке..placeSchedule(place[, dateFrom[, dateTo]])- работает точно также, как иschoolSchedule, но возвращает все лекции в аудиторииplace(объект или название).
.exportJSON()- возвращает JSON объекта с массивамиlectures,schoolsиplaces, заполненными лекциями, школами и аудиториями из инстанса.Mobilization.importJSON(json)- статический метод класса, принимает JSON, полученный при экспорте и возвращает новый инстанс класса на его основе.