git clone https://github.com/skinnynpale/rangeSlider.js
Режим тестирования | Режим разработки | Режим продакшена |
---|---|---|
npm run test |
npm run dev |
npm run build |
- Подключить
jQuery 3.41
- Подключить
CSS
стили плагина:<link rel="stylesheet> href="rangeSlider.css">
- Подключить сам плагин в конце
body
передjQuery
:<script src="rangeSlider.js"></script>
$(#myDiv).rangeSlider();
$(#myDiv).rangeSlider(
// тут настройки для первого передаваемого объекта (подробнее ниже)
{
settings: true,
skin: "red"
},
/// а тут для второго
{
min: 20,
step: 5
},
);
Свойство | Тип | Default | Описание |
---|---|---|---|
direction |
string | "horizontal" | Указывает положение слайдера "horizontal" или "vertical" |
type |
string | "single" | Позволяет выбрать одиночной значение или интервальное, "single" или "interval" |
skin |
string | "green" | Выбор рассцветки для слайдера, "green" или "red" |
settings |
boolean | false | Настройки на лету |
bar |
boolean | true | Полоса заполнения |
tip |
boolean | true | Подсказки значений |
scale |
boolean | false | Линейка |
Свойство | Тип | Default | Описание |
---|---|---|---|
min |
number | 10 | Минимальное значение (любое) |
max |
number | 50 | Максимальное значение (любое) |
step |
number | 2 | Шаг (> 0) |
values |
number[] | [20, 40] | Начальные значения для первого и второго бегунка |
Для начала нужно инициализировать плагин
$('#anchor').rangeSlider();
Затем, для использования существует 2 публичных метода и один для обновления
// Обновление только числовых значений
$('#anchor').rangeSlider({}, { step: 1, values: [15] });
// Обновление только визуала
$('#anchor').rangeSlider({ skin: 'red', direction: 'vertical' });
// Сброс к первоначальным кастомным настройкам
$('#anchor').rangeSlider('reset');
// Удаление плагина из HTML
$('#anchor').rangeSlider('destroy');
// Есть возможность повесить callback функцию на это событие
$('#anchor').rangeSlider('onChange', () => 'ваш код');
// Так же можно брать значения слайдера из свойства detail, пример:
$('#anchor').rangeSlider('onChange', (event) => console.log(event.detail));
При инициализации создаются экземпляры классов:
-
Model
- отвечает за хранение числовых значений, а так же все рассчетыНапример: Model.state: { step: 5, min: 10, max: 90, value: 13, pxValue: 60 ... }
-
VisualModel
- отвечает за хранение информации о графическом состоянии слайдераНапример: VisualModel.state: { direction: "vertical", tip: true, bar: true ... }
-
Application
- отвечает за создание отображения. С помощью фасадаApplicationConfigurator
определяется нужная фабрика, на которой будут создаваться все сущности, нужные для пользователя, из одной категории. Здесь использован шаблон проектированияАбстрактная Фабрика
Например: определилась фабрика
IntervalHorizontalFactory
, затем создаютсяIntervalHorizontalBar
,IntervalHorizontalScale
и тд..
При помощи паттерна Observer
мы расширяем созданные ранее экземпляры, тем самым обеспечивая такой режим работы приложения когда любой из созданных слоев не знает ни о ком кроме себя, и при важных изменениях он может разослать своим "подписчикам"(в нашем случае Controller'у
) имяСобытия и данные. Это позволяет писать тесты для каждого из слоев по отдельности, а также повышает устойчивость к изменениям работы приложения.
Высокоуровневая диаграмма процесса