Coder Social home page Coder Social logo

yandex.rooms's Introduction

Яндекс.Переговорки

Тестовое задание #3 для ШРИ 2018

Демо (heroku)

Демо (видео)

Технологии

  • Node.js + express
  • GraphQL
  • React
  • Flux
  • Webpack

Использование

Установка

$ npm install

Сборка клиентской части

$ npm run build

Запуск (development)

$ npm run dev

Запуск (production)

$ npm start

Описание интерфейса

После загрузки приложения мы попадаем на страницу со встречами, которые проходят в текущий день. Чтобы ознакомиться со списком встреч, проходящих в другой день, необходимо выбрать нужную дату с помощью календаря или стрелочек. Ограничения - 1.5 месяца до текущей даты и 1.5 месяца после (что равняется 3м месяцам, как и сказано в ТЗ).

При клике на свободный слот мы попадаем на форму создания встречи, куда автоматически будут подставлены данные о ее времени и выбранной комнате. Однако, это справедливо лишь для тех свободных слотов, где время начала встречи является актульным на данный момент. Недоступен переход на форму создания встречи еще и в том случае, если свободный слот < 15 минут. К примеру: встреча заканчивается в 15:50, а следующая начинается в 16:00. Между ними нельзя создать встречу, поскольку я выбрал минимально допустимую длительность встречи равную 15 минутам.

При клике на уже существующее событие, появляется информационное окно, где можно ознакомиться с данными встречи. Здесь случайным образом показывается участник события и, если встреча еще не прошла, ее можно отредактировать.

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

В форме добавления/редактирования заявки кнопка действия (добавить/сохранить) имеет состояние disabled в том случае, если какое-либо из полей не заполнено. При этом кнопка является кликабельной, при клике будут показаны все ошибки, которые необходимо исправить для отправки формы.

Алгоритм подбора комнаты для встречи работает следующим образом: сначала идет провёрка свободных мест на указанное время по всем комнатам, которые подходят нам по количеству участников. Если свободные места в комнатах найдены, то они представляются нам для выбора, при этом отсортированы они по принципу прохождения всеми участниками минимального количества этажей. Если же свободных мест нет, то происходит поиск ближайшего свободного места (здесь уже нет этажной сортировки) и изменение времени встречи на ближайшее доступное. При невозможности найти свободное место для встречи, показывается информационное сообщение об этом и предложение попробовать указать другие параметры.

Некоторый функционал, указанный в тз, урезан из-за нехватки времени на реализацию. Так, например, алгоритм подбора переговорок лишился возможности переносить встречи в другие комнаты, а в форме поле выбора участников сделано не с помощью подсказок к вводимому значения, а обычным селектом.

yandex.rooms's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.