Prevent toggle button id clash because of Snapcast using the MAC address of a device as a client (and therefore the same client connected to multiple servers may lead to inconsistent behaviour)

This commit is contained in:
Fabio Manganiello 2019-01-10 00:29:22 +01:00
parent 89ea4798bf
commit 6150e07fc9

View file

@ -8,15 +8,16 @@ $(document).ready(function() {
var createPowerToggleElement = function(data) { var createPowerToggleElement = function(data) {
data = data || {}; data = data || {};
var inputId = data.id + '_' + parseInt(Math.random()*100000);
var $powerToggle = $('<div></div>').addClass('toggle toggle--push switch-container'); var $powerToggle = $('<div></div>').addClass('toggle toggle--push switch-container');
var $input = $('<input></input>').attr('type', 'checkbox') var $input = $('<input></input>').attr('type', 'checkbox')
.attr('id', data.id).addClass('toggle--checkbox'); .attr('id', inputId).data('id', data.id).addClass('toggle--checkbox');
for (var attr of Object.keys(data)) { for (var attr of Object.keys(data)) {
$input.data(attr, data[attr]); $input.data(attr, data[attr]);
} }
var $label = $('<label></label>').attr('for', data.id).addClass('toggle--btn'); var $label = $('<label></label>').attr('for', inputId).addClass('toggle--btn');
$input.appendTo($powerToggle); $input.appendTo($powerToggle);
$label.appendTo($powerToggle); $label.appendTo($powerToggle);
@ -255,7 +256,7 @@ $(document).ready(function() {
var initBindings = function() { var initBindings = function() {
$container.on('click touch', '.toggle--checkbox', function(evt) { $container.on('click touch', '.toggle--checkbox', function(evt) {
evt.stopPropagation(); evt.stopPropagation();
var id = $(this).attr('id'); var id = $(this).data('id');
var host = $(this).parents('.snapcast-host-container').data('host'); var host = $(this).parents('.snapcast-host-container').data('host');
var args = { var args = {
host: host, host: host,