Add retain option to slider widget

master
0xee 2021-04-03 14:38:36 +02:00
parent 8fc0e2175d
commit 0f158886ef
2 changed files with 8 additions and 3 deletions

View File

@ -133,9 +133,10 @@ function updateScroll() {
element.scrollTop = element.scrollHeight;
}
function publish(topic, value) {
function publish(topic, value, retain=false) {
var message = new Paho.MQTT.Message(value);
message.destinationName = topic;
message.retained = retain;
client.send(message);
}
@ -159,7 +160,8 @@ function init(brokerUri) {
slider.oninput = function() {
this.onchange()
var topic = this.getAttribute('data-pub-topic');
publish(topic, this.value);
var retain = Boolean(this.getAttribute('data-retain'));
publish(topic, this.value, retain);
};
}

View File

@ -49,7 +49,8 @@ def slider_widget(label,
unit='',
min_val=0,
max_val=255,
step=1):
step=1,
retain=False):
id_ = make_id()
sub_topic = sub_topic or topic
template = '''
@ -58,6 +59,7 @@ def slider_widget(label,
<input id="{{id_}}"
class="slider update-policy-update-value {{sub_topic}}-value"
data-pub-topic="{{topic}}"
data-retain="{{retain | string | lower}}"
{% if value_path %} data-value-path="{{value_path}}" {% endif %}
min="{{min_val}}" type="range" max="{{max_val}}" step="{{step}}"
value="{{min_val}}"/>
@ -76,6 +78,7 @@ def slider_widget(label,
value_path=value_path,
topic=topic,
unit=unit,
retain=retain,
id_=id_)