mirror of
https://github.com/s00500/ESPUI.git
synced 2024-11-21 22:50:55 +00:00
Adding js for slider
This commit is contained in:
parent
d8ae8a70cf
commit
ac3b8795d4
125
examples/gui/data/js/slider.js
Normal file
125
examples/gui/data/js/slider.js
Normal file
@ -0,0 +1,125 @@
|
||||
/* -----------------------------------------------------
|
||||
Material Design Sliders
|
||||
CodePen URL: https://codepen.io/rkchauhan/pen/xVGGpR
|
||||
By: Ravikumar Chauhan
|
||||
-------------------------------------------------------- */
|
||||
function rkmd_rangeSlider(selector) {
|
||||
var self, slider_width, slider_offset, curnt, sliderDiscrete, range, slider;
|
||||
self = $(selector);
|
||||
slider_width = self.width();
|
||||
slider_offset = self.offset().left;
|
||||
sliderDiscrete = self;
|
||||
|
||||
sliderDiscrete.each(function(i, v) {
|
||||
curnt = $(this);
|
||||
curnt.append(sliderDiscrete_tmplt());
|
||||
range = curnt.find('input[type="range"]');
|
||||
slider = curnt.find('.slider');
|
||||
slider_fill = slider.find('.slider-fill');
|
||||
slider_handle = slider.find('.slider-handle');
|
||||
slider_label = slider.find('.slider-label');
|
||||
|
||||
var range_val = parseInt(range.val());
|
||||
slider_fill.css('width', range_val + '%');
|
||||
slider_handle.css('left', range_val + '%');
|
||||
slider_label.find('span').text(range_val);
|
||||
});
|
||||
|
||||
self.on('mousedown touchstart', '.slider-handle', function(e) {
|
||||
if (e.button === 2) {
|
||||
return false;
|
||||
}
|
||||
var parents = $(this).parents('.rkmd-slider');
|
||||
var slider_width = parents.width();
|
||||
var slider_offset = parents.offset().left;
|
||||
var check_range = parents.find('input[type="range"]').is(':disabled');
|
||||
if (check_range === true) {
|
||||
return false;
|
||||
}
|
||||
$(this).addClass('is-active');
|
||||
var moveFu =
|
||||
function(e) {
|
||||
var slider_new_width = e.pageX - slider_offset;
|
||||
|
||||
if (slider_new_width <= slider_width && !(slider_new_width < '0')) {
|
||||
slider_move(parents, slider_new_width, slider_width, true);
|
||||
}
|
||||
};
|
||||
var upFu =
|
||||
function(e) {
|
||||
$(this).off(handlers);
|
||||
parents.find('.is-active').removeClass('is-active');
|
||||
};
|
||||
|
||||
var handlers = {
|
||||
mousemove: moveFu,
|
||||
touchmove: moveFu,
|
||||
mouseup: upFu,
|
||||
touchend: upFu
|
||||
};
|
||||
$(document).on(handlers);
|
||||
});
|
||||
|
||||
self.on('mousedown touchstart', '.slider', function(e) {
|
||||
if (e.button === 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var parents = $(this).parents('.rkmd-slider');
|
||||
var slider_width = parents.width();
|
||||
var slider_offset = parents.offset().left;
|
||||
var check_range = parents.find('input[type="range"]').is(':disabled');
|
||||
|
||||
if (check_range === true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var slider_new_width = e.pageX - slider_offset;
|
||||
if (slider_new_width <= slider_width && !(slider_new_width < '0')) {
|
||||
slider_move(parents, slider_new_width, slider_width, true);
|
||||
}
|
||||
var upFu =
|
||||
function(e) {
|
||||
$(this).off(handlers);
|
||||
};
|
||||
|
||||
var handlers = {
|
||||
mouseup: upFu,
|
||||
touchend: upFu
|
||||
};
|
||||
$(document).on(handlers);
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
function sliderDiscrete_tmplt() {
|
||||
var tmplt = '<div class="slider">' +
|
||||
'<div class="slider-fill"></div>' +
|
||||
'<div class="slider-handle"><div class="slider-label"><span>0</span></div></div>' +
|
||||
'</div>';
|
||||
|
||||
return tmplt;
|
||||
}
|
||||
|
||||
function slider_move(parents, newW, sliderW, send) {
|
||||
var slider_new_val = parseInt(Math.round(newW / sliderW * 100));
|
||||
|
||||
var slider_fill = parents.find('.slider-fill');
|
||||
var slider_handle = parents.find('.slider-handle');
|
||||
var range = parents.find('input[type="range"]');
|
||||
|
||||
slider_fill.css('width', slider_new_val + '%');
|
||||
slider_handle.css({
|
||||
'left': slider_new_val + '%',
|
||||
'transition': 'none',
|
||||
'-webkit-transition': 'none',
|
||||
'-moz-transition': 'none'
|
||||
});
|
||||
|
||||
range.val(slider_new_val);
|
||||
if (parents.find('.slider-handle span').text() != slider_new_val) {
|
||||
parents.find('.slider-handle span').text(slider_new_val);
|
||||
var number = parents.attr('id').substring(2);
|
||||
if (send) websock.send('slvalue:' + slider_new_val + ':' + number);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user