jqTime

Посмотреть демо

Плагин содержит в себе 3 мода current, interval, toggler.

current

  • Выводит текущее время в заданный селектор
  • Выводит время в обратном порядке (время до окнца дня)

interval

  • Показывает время в заданном селекторе в заданный промежуток времени
  • Показывает оставшееся время до заданного времени, начиная с заданого времени
  • Вне промежутка время не показывается, показывается альтернативный текст (или HTML), или показывается изначальное содержимое

toggler

  • Показывает заданный селектор в заданный промежуток времени
  • Вне промежутка времени скрывает, или показывает альтернативный текст (или HTML)
  • Может выполнять функции при изменении состояния, и высылать события

Для работы плагина требуется подключение jQuery. Плагин тестировался на версии 1.7.2, но должен поддерживаться вплоть до 1.4.*.

$(selector).jqTime(mode, [options], [callback]);

Примеры кода

$('#element1').jqTime('current');

Вставляет текущее время в элемент с id="element1"

$('#element2').jqTime('interval', {from: '10:00:01', to: '11:00:00'});

Будет показывать текущее время с 10:00:01 до 11 часов в элемент с id="element2"

$('#element3').jqTime('toggler', {from: '10:00:01', to: '11:00:00'});

Будет показывать заданный элемент с 10:00:01 до 11 часов

В плагине работает система подсчета времени, время обновляется раз в 5 минут.

В функциях выводящих время, используется форматировщик выводящегося времени по регулярному выражению. Он ищет в выражении буквы H, M, S, h, m, s. Если буква прописная, то время будет форматироваться (к числам добавится 0, если они меньше 10).
Например: h:M:S — выведет 9:01:01, а H:M.S — выведет 09:01.01

Все функции могут работать в часовом поясе пользователя зашедшего на сайт, или в заданом часовом поясе UTC (±0–12).

Можно указать третьим параметром callback, который будет вызываться каждую секунду. В него будет передано время в формате JSON:

$('element').jqTime('current', {}, function(JSONdata){
    console.log(JSONdata);
});

Все возможные поля JSON:

{
    hours: 0,
    minutes: 0,
    seconds: 0,
    utc: 'real', // часовой пояс, с которым сейчас работает плагин
    formated: '12:00:00', // отформатированная строка, или содержимое. Это же содержимое будет показано в выбраном элемента
    midday: 'am', // или pm. будет показано, только если включен 12-часовой формат
    inInterval: true, // boolean для interval и toggler, для multi будет строка с id в формате *interval*
}

Выводит текущее время, или время оставшееся до конца дня в заданный селектор.

Опции

wrap
boolean Если true, отсчитывает время в обратную сторону (до конца дня). По умолчанию false.
utc
numetic Выводит время в любом часовом поясе UTC Если установлено значение "real" — будет выводить текуще время на машине пользователя. По умолчанию "real".
hour12
boolean Если true, то будет показывать время в 12-часовом формате. По умолчанию false
am, pm
string Строки, соответствующие am и pm времени. По умолчанию a.m. и p.m. соответственно. Их можно увидеть, если добавить в exp маску D (HH:MM:SS D, будет 12:00:00 a.m.)
exp
RegExp Если не null, выводит время в соответствии с заданным регулярным выражением. По умолчанию HH:MM:SS d. Подробнее описано в главе «Вспомогательные функции»

Пример

$('#element').jqTime('current', {
    wrap: true,
    utc: 0,
    exp: 'hh:MM:ss'
});

Показывает время в заданном селекторе в заданный промежуток времени, или время, оставшееся до заданого.

Опции

wrap
boolean Если true, отсчитывает время до timeTo. По умолчанию false.
utc
numetic Выводит таймер в любом часовом поясе UTC Если установлено значение "real" — таймер будет работать со временем на машине пользователя. По умолчанию "real".
hour12
boolean Если true, то будет показывать время в 12-часовом формате. По умолчанию false
am, pm
string Строки, соответствующие am и pm времени. По умолчанию a.m. и p.m. соответственно. Их можно увидеть, если добавить в exp маску D (HH:MM:SS D, будет 12:00:00 a.m.)
exp
RegExp Если не null, выводит время в соответствии с заданным регулярным выражением. По умолчанию null. Подробнее описано в главе «Вспомогательные функции»
timeFrom
hh:mm:ss Задает время, с которого будет включаться таймер. Используется строка по шаблону "0:0:0". Параметр обязателен, по умолчанию ничего не задано.
timeTo
hh:mm:ss Задает время, до которого будет работать таймер. Используется строка по шаблону "0:0:0". Параметр обязателен, по умолчанию ничего не задано.
alt
string, html Выведет текст или HTML вне промежутка времени timeFrom – timeTo. Если null, покажет изначальное содержимое. По умолчанию null.

Пример

$('#element2').jqTime('interval', {
    utc: +4,
    timeFrom: '0:0:0',
    timeTo: '12:0:0',
    alt: 'Вне промежутка',
    exp: 'hh:MM:ss'
});

Показывает заданный селектор в заданный промежуток времени.

Опции

utc
numetic Считает в любом часовом поясе UTC Если установлено значение "real" — будет считать относительно времени на машине пользователя. По умолчанию "real".
timeFrom
hh:mm:ss Задает время, с которого будет включаться таймер. Используется строка по шаблону "0:0:0". Параметр обязателен, по умолчанию ничего не задано.
timeTo
hh:mm:ss Задает время, до которого будет работать таймер. Используется строка по шаблону "0:0:0". Параметр обязателен, по умолчанию ничего не задано.
inInterval
string, html fn Выведет текст или HTML в промежутке времени timeFrom – timeTo*. Если null, будет просто показывать выбранный селектор. По умолчанию null. Если передать функцию — она выполнится, когда время войдет в промежуток.
outInterval
string, html fn Выведет текст или HTML вне промежутка времени timeFrom – timeTo*. Если null, будет просто скрывать выбранный селектор. По умолчанию null. Если передать функцию — она выполнится, когда время выйдет из промежутка.

Пример

$('#element2').jqTime('toggler', {
    utc: -2,
    timeFrom: '0:0:0',
    timeTo: '12:0:0'
});

В плагине используются вспомогательные функции, которые тоже могут быть полезными. Они находятся в объекте $.jqTime.helper

Опции

formater
$.jqTime.helper.formater(number)
Если переданное число меньше 9, то функция добавит перед числом 0, и вернет строку.
stingToTime
$.jqTime.helper.sting_to_time(hh:mm:ss)
Забирает строку в формате "0:0:0". Возвращает заданое время в секундах.
updater
$.jqTime.helper.updater(seconds, utc)
Забирает время в секундах, если время кратно 300 секундам (5 минут), обновляет его, и возвращает текущее время в секундах.
expToTime
$.jqTime.helper.expToTime(expr, hours, minutes, seconds, midday)
Возвращает отформатированное время. Поддерживает следующие маски (H, h, M, m, S, s, D, d). Маски в верхнем регистре будут отформатированы (добавлен 0 в начало). D — значение полудня. Midday — обьект с полями: now (pm/am) — флаг текушего полудня, am — текст до полудня, pm — текст после полудня.

В проекте используется тестирование с помощью qUnit. Пока весь проект не покрыт тестами, но тесты дописываются постоянно.

Разработка проекта ведется с методологией Continuous Integration, автоматизированное тестирование работает на Travis CI.

Для сборки проекта используется Grunt.js.