Skip to content

Репозиторий второго вступительного задания для Школы Разработки Интерфейсов 2017

Notifications You must be signed in to change notification settings

vbifonixor/second-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

second-task

Репозиторий второго вступительного задания для Школы Разработки Интерфейсов 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, полученный при экспорте и возвращает новый инстанс класса на его основе.

About

Репозиторий второго вступительного задания для Школы Разработки Интерфейсов 2017

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published