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'у) имяСобытия и данные. Это позволяет писать тесты для каждого из слоев по отдельности, а также повышает устойчивость к изменениям работы приложения.
Высокоуровневая диаграмма процесса



