Pull to refresh

мои первые игрушки: волновой гаджет «Meeting Time Matcher»

Reading time2 min
Views463
Собираться группами по трое и больше — обычная практика для людей.
Иногда можно созвониться и договориться о месте и времени встречи, иногда можно объявить о встрече у себя в блоге.
Однако, ситуация может заметно осложниться, если вы собираете не тусовку на свой день рождения в родной деревне, а онлайновую встречу с участниками из разных концов света и, как следствие, в разных часовых поясах, которых только в России 11. Так, что когда у вас среда, у кого-то может быть уже четверг, и выбрать оптимальное время для встречи может оказаться нетривиально

Сделанный мной гаджет предназначается какраз для таких ситуаций.
  • организатор вставляет в объявление гаджет и обозначает даты, когда предполагается встреча;
  • участники отмечают в табличке время, когда они в эти дни свободны, и их выбор запоминается;
  • гаджет показывает, сколько участников могут быть в онлайне для каждого интервала времени;
  • все участники видят табличку в своём родном часовом поясе, но при желании могут переключиться на чужой, посмотреть «сколько это у него времени будет»;

image
Посмотреть в действии можно в этой волне
URL гаджета для вставки в волны кнопкой «install gadget by URL» есть во вкладке «help».
А в отдельной волне есть инсталятор с удобной кнопкой, чтоб не париться с URLами.


Сам алгоритм весьма прост — для каждого выделенного участникам интервала ищутся пересечения со всеми остальными и считается количество таких пересечений. Тоесть порядка n*m для каждого обновления графика.
(Я наивно полагал что нарисую гаджет в два присеста. Присестов, однако, получилось 80, где-то с дюжину сессий.)
Попутно был нарисован jquery-ui виджетина для графика «свободного времени»,
а также прототип объекта Date с возможностью выбора часового пояса.
Всё это хостится на гуглокоде.

Критика и пожелания как по функционалу так и по коду всячески приветствуются тут в комментах или в демо-волне.
Tags:
Hubs:
Total votes 11: ↑10 and ↓1+9
Comments27

Articles