-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathslider.py
89 lines (70 loc) · 3.02 KB
/
slider.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from abstractWebObjects import webUserInput
import textwrap
class Slider(webUserInput):
def __init__(self, name, minVal, maxVal, defaultVal):
self.name = name
self.minVal = minVal
self.maxVal = maxVal
self.defaultVal = defaultVal
self.value = self.defaultVal
self.id = self.name.replace(" ", "_")
def getHTML(self):
text = """
<!-- Slider {1} -->
<div class="slidecontainer">
<h3>{1}</h3>
<div id="{0}_slider"></div>
</div>
<br>
""".format(self.id, self.name)
return textwrap.dedent(text)
def getJS(self):
text = """
//////////////////////////////////////////////////////////////////////////////////////////
// Handle slider {0} instantiation, config, and websocket events
sliderObjects[\"{0}\"] = document.getElementById('{0}_slider');
noUiSlider.create(sliderObjects[\"{0}\"], {{
start: [{3}],
tooltips: [false],
behaviour: 'drag',
animate: true,
animationDuration: 100,
range: {{
'min': [{1}],
'max': [{2}]
}},
pips: {{
mode: 'count',
values: 6,
density: 4
}}
}});
sliderObjects[\"{0}\"].noUiSlider.on('slide', function(values, handle, unencoded){{
if(websocket.readyState == WebSocket.OPEN){{
websocket.send(JSON.stringify({{action: 'set', id: \"{0}\", value: JSON.parse(values)}}));
}}
}});
updateInhibitFlags[\"{0}\"] = false;
sliderObjects[\"{0}\"].noUiSlider.on('start', function(values, handle, unencoded){{
updateInhibitFlags[\"{0}\"] = true;
}});
sliderObjects[\"{0}\"].noUiSlider.on('end', function(values, handle, unencoded){{
updateInhibitFlags[\"{0}\"] = false;
}});
// End slider {0}
//////////////////////////////////////////////////////////////////////////////////////////
""".format(self.id, self.minVal, self.maxVal, self.defaultVal)
return textwrap.dedent(text)
def getValue(self):
return self.value
def getName(self):
return self.name
def getID(self):
return self.id
def setValue(self, value):
if(self.value != value):
self.value = value
if(self.value > self.maxVal):
self.value = self.maxVal
elif(self.value < self.minVal):
self.value = self.minVal