htd-lync
Version:
This library is meant to be used to interact with an HTD Lync 12
651 lines (565 loc) • 20.9 kB
JavaScript
var sliding = false;
$("#goToGroupControl").on("click", function() {
goToGroupControlPage(systems[systemIdx].system.defaultGroup);
});
$("#goToGroupControl2").on("click", function() {
goToGroupControlPage(systems[systemIdx].system.defaultGroup);
});
function makeSourceHeaderGroups(zone) {
var source = systems[systemIdx].zones[zone].source;
//console.log(source);
var html = "";
if (source > 0) {
console.log("makeSourceHeaderGroups:" + source);
if (!systems[systemIdx].sources[source]) {
console.log("Missing source app name");
var sourceName = "Source " + source;
if (source == 19) {
sourceName = "Intercom";
}
html = '<div class="dropBtnSource selectSourceGroup" zone="' + zone + '">' + sourceName + '</div>';
return html;
}
if (systems[systemIdx].sources[source].appName && source > 0) {
html = '<div class="dropBtnSource selectSourceGroup" zone="' + zone + '">' + systems[systemIdx].sources[source].appName + '</div>';
}
}
return html;
}
function createGroupControlList(group) {
//console.log(group);
console.log("createGroupControlList");
if (sliding == true) {
return;
}
if (!systems[systemIdx].groups || systems[systemIdx].groups.length == 0) {
var html = '<ul><li>';
html += ' <div class="list-box">';
html += '<h2 class="addGroupText" id="goToGroupSettingsPage">Add your first group</h2>';
html += '</li></ul>';
$("#groupControlList").html(html);
$('#goToGroupSettingsPage').click(function() {
goToGroupSettingsPage();
});
return;
}
var html = '<ul>';
//console.log("groupControl 47")
if (systems[systemIdx].groups[group]) {
for (g = 0; g < systems[systemIdx].groups[group].zones.length; g++) {
var i = systems[systemIdx].groups[group].zones[g];
if (systems[systemIdx].zones[i] && systems[systemIdx].zones[i].name !== "None" && systems[systemIdx].zones[i].name !== "" && systems[systemIdx].zones[i].name !== "none") {
//console.log(zones[i])
var powerState = "active";
if (systems[systemIdx].zones[i].powerOn == false) {
powerState = "";
}
var dndState = "dnd";
if (systems[systemIdx].zones[i].dndOn == true) {
dndState = "dndOn";
}
html += '<li>';
html += ' <div class="list-box">';
html += ' <div class="list-grid list-grid-left ' + powerState + '">';
html += ' <div class="list-icon" onclick="toggleZonePower(' + i + ', false)">';
html += ' </div>';
html += ' <div class="list-title">';
html += ' <span><a href="#" class="' + dndState + '" zoneNumber="' + i + '" onclick="goToMusicPage(' + i + ')">' + systems[systemIdx].zones[i].appName + '</a></span>';
html += ' </div>';
html += ' </div>';
html += ' <div class="list-grid list-grid-right">';
// html += ' <div class="list-volume">';
//html += makeVolumeDropDownGroup(i);
html += makeVolumeHeaderGroup(i);
html += ' <div class="list-cat">';
//html += makeSourceDropDownGroups(i);
html += makeSourceHeaderGroups(i);
//console.log(makeSourceHeaderGroups(i));
html += ' </div>';
html += ' </div>';
html += ' </div>';
html += ' <div id="groupVolumeSlider-' + g + '" zone="' + i + '" class="noUi-target noUi-ltr noUi-horizontal groupControl"></div>';
html += '</li>';
}
}
}
html += "</ul>";
//console.log(html);
$("#groupControlList").html(html);
$(".selectVolumeGroup").on('click', function() {
var zone = ($(this).attr('zone'))
if (systems[systemIdx].zones[zone].dndOn == false) {
makeVolumeDropDown(zone);
} else {
alert("Please take zone off DND first.")
}
});
$(".selectSourceGroup").on('click', function() {
var zone = ($(this).attr('zone'))
console.log("select group source")
if (systems[systemIdx].zones[zone].dndOn == false) {
makeSourceListGroup(zone);
} else {
alert("Please take zone off DND first.")
}
});
var sliders = document.getElementsByClassName('groupControl');
for (var i = 0; i < sliders.length; i++) {
var zone = $('#groupVolumeSlider-' + i).attr("zone");
//console.log(zone);
//console.log("group control 107");
//console.log(zones[zone])
noUiSlider.create(sliders[i], {
start: systems[systemIdx].zones[zone].vol,
step: 1,
connect: "lower",
orientation: "horizontal",
range: {
'min': 1,
'max': 60
},
});
//sliders[i].noUiSlider.on('slide', addValues);
sliders[i].noUiSlider.on('start', function() {
var slider = ($(this.target).attr("id"))
console.log("slider start");
sliding = true;
});
//Disable clicking.
sliders[i].noUiSlider.on('slide', function() {
if (scrolling) {
return;
}
var slider = ($(this.target).attr("id"))
var groupSlider = document.getElementById(slider);
var zone = $(this.target).attr("zone");
if (systems[systemIdx].zones[zone].dndOn == true) {
groupSlider.noUiSlider.set(systems[systemIdx].zones[zone].vol);
return;
}
var value = groupSlider.noUiSlider.get() * 1;
console.log("slide", zone, value);
if (value != systems[systemIdx].zones[zone].vol) {
console.log(value, zone);
systems[systemIdx].zones[zone].vol = value;
zoneSetVolume(zone);
$("#volumeDropDownGroup-" + zone * 1).html(value);
updateData();
//updateGUI(zone);
}
});
sliders[i].noUiSlider.on('end', function() {
console.log("end")
sliding = false;
var slider = ($(this.target).attr("id"))
var groupSlider = document.getElementById(slider);
var zone = $(this.target).attr("zone");
var value = groupSlider.noUiSlider.get() * 1;
if (systems[systemIdx].zones[zone].dndOn == true) {
groupSlider.noUiSlider.set(systems[systemIdx].zones[zone].volume);
return;
}
systems[systemIdx].zones[zone].vol = value;
console.log(value, zone);
systems[systemIdx].zones[zone].vol = value;
zoneSetVolume(zone);
updateCommand(zone);
$("#volumeDropDownGroup-" + zone * 1).html(value);
updateData();
//updateGUI(zone);
});
}
console.log("create group control list end")
}
function makeVolumeHeaderGroup(zone) {
var html = '<div id="volumeDropDownGroup-' + zone + '" class="dropBtn selectVolumeGroup" zone="' + zone + '">' + systems[systemIdx].zones[zone].vol + '</div>';
if (systems[systemIdx].zones[zone].powerOn == true && systems[systemIdx].zones[zone].muteOn == true || systems[systemIdx].zones[zone].vol == 0) {
html = '<div id="volumeDropDownGroup-' + zone + '" class="dropBtn selectVolumeGroup mute" zone="' + zone + '">Mute</div>';
}
return html;
}
function makeSourceDropDownGroup(zone) {
console.log("makeSourceDropDownGroup")
var list = [];
var obj = new Object();
for (var i = 1; i <= systems[systemIdx].sources.length; i++) {
var obj = new Object();
if (systems[systemIdx].sources[i]) {
if (systems[systemIdx].sources[i].enabled) {
obj.text = systems[systemIdx].sources[i].appName + "";
obj.value = i + "";
list.push(obj);
}
}
}
//console.log(list);
var config = {
title: "Select a Source",
items: list,
selectedValue: systems[systemIdx].zones[zone].source + "",
doneButtonLabel: "Select",
cancelButtonLabel: "Cancel"
};
// Show the picker
window.plugins.listpicker.showPicker(config,
function(source) {
if (systems[systemIdx].zones[zone].dndOn == false) {
setSourceForZone(zone, source);
systems[systemIdx].zones[zone].source = source;
}
},
);
}
$(document).on('change', '#changeGroup', function() {
var group = (this.value)
//var zone = ($(this).attr('zone'))
systems[systemIdx].system.defaultGroup = group;
goToGroupControlPage(group);
});
function goToGroupControlPage(group) {
systems[systemIdx].system.defaultGroup = group;
console.log("goToGroupControlPage:" + group);
lastPage = "groupControl";
localStorage.setItem("lastPage", lastPage);
Ggroup = group;
if (!Ggroup) {
Ggroup = 0;
}
hidePages();
$("#groupControlPage").show();
var html = '<h2>Group Control</h2>';
$('#pageName').html(html)
createGroupControlList(Ggroup);
makeGroupHeader(Ggroup);
updateData();
//makeGroupDropDown(Ggroup);
}
function groupAllOff() {
console.log("group all off")
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
var zone = systems[systemIdx].groups[Ggroup].zones[i];
if (systems[systemIdx].zones[zone].dndOn == false) {
systems[systemIdx].groups[Ggroup].zones[i].powerOn = false;
zonePowerOff(zone);
}
}
createGroupControlList(Ggroup);
}
function groupAllOn() {
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
systems[systemIdx].groups[Ggroup].zones[i].powerOn = true;
var zone = systems[systemIdx].groups[Ggroup].zones[i];
zonePowerOn(zone);
}
createGroupControlList(Ggroup);
}
var groupTimer;
var waitingToUpdateGroups = false;
function checkGroupTimer() {
console.log("check group timer")
waitingToUpdateGroups = false;
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
//console.log("update command zone: " + systems[systemIdx].groups[Ggroup].zones[i])
updateCommand(systems[systemIdx].groups[Ggroup].zones[i]);
}
}
function groupAllVolUp() {
waitingToUpdateGroups = true;
console.log("groupallVolUp, sliding=" + sliding)
clearTimeout(groupTimer);
groupTimer = setTimeout(checkGroupTimer, 5000);
if (sliding == false) {
//return;
}
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
console.log("groupAllVolUp: " + systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].dndOn)
if (systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].dndOn == false) {
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol = systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol + 2
if (systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol >= 60) {
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol = 60;
}
$("#volumeDropDownGroup-" + systems[systemIdx].groups[Ggroup].zones[i]).html(systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol);
var slider = document.getElementById("groupVolumeSlider-" + i);
slider.noUiSlider.set(systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol);
console.log(systems[systemIdx].groups[Ggroup].zones[i], systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol)
var zone = systems[systemIdx].groups[Ggroup].zones[i];
zoneSetVolume(zone);
}
}
}
function groupAllVolDown() {
waitingToUpdateGroups = true;
console.log("groupallVolDown, sliding=" + sliding)
clearTimeout(groupTimer);
groupTimer = setTimeout(checkGroupTimer, 5000);
if (sliding == false) {
//return;
}
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
if (systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].dndOn == false) {
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol = systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol - 2
if (systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol <= 1) {
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol = 1;
}
$("#volumeDropDownGroup-" + systems[systemIdx].groups[Ggroup].zones[i]).html(systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol);
var slider = document.getElementById("groupVolumeSlider-" + i);
slider.noUiSlider.set(systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol);
var zone = systems[systemIdx].groups[Ggroup].zones[i];
zoneSetVolume(zone);
}
}
//createGroupControlList(Ggroup);
}
var gnStartTime = 0;
var gbStillTouching = false;
//usedt o updateGUI
function sendFinalVolUp() {
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
if (systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].dndOn == false) {
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol = systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol + 2
var slider = document.getElementById("groupVolumeSlider-" + i);
slider.noUiSlider.set(systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol);
console.log("group final volume", systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol)
var zone = systems[systemIdx].groups[Ggroup].zones[i];
zoneSetVolume(zone);
updateCommand(zone);
}
}
}
function sendFinalVolDown() {
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
if (zones[systems[systemIdx].groups[Ggroup].zones[i]].dndOn == false) {
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol = systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol - 2
var slider = document.getElementById("groupVolumeSlider-" + i);
slider.noUiSlider.set(zones[systems[systemIdx].groups[Ggroup].zones[i]].vol);
console.log("group final volume", systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol)
var zone = systems[systemIdx].groups[Ggroup].zones[i];
zoneSetVolume(zone);
updateCommand(zone);
}
}
}
document.getElementById("groupVolumeAllUp").addEventListener('touchstart', function(event) {
console.log("starting press")
console.log("group vol up")
sliding = true;
groupAllVolUp();
groupVolumeUpTimeout = setInterval(function() {
console.log("send group vol all up");
groupAllVolUp();
sliding = true;
//console.log(1);
}, 750);
}, false);
document.getElementById("groupVolumeAllUp").addEventListener('touchend', function(event) {
console.log("group vol up touch end")
clearInterval(groupVolumeUpTimeout);
sliding = false;
//sendFinalVolUp();
}, false);
document.getElementById("groupVolumeAllDown").addEventListener('touchstart', function(event) {
console.log("starting press")
console.log("group vol down")
sliding = true;
groupAllVolDown();
groupVolumeDownTimeout = setInterval(function() {
groupAllVolDown();
sliding = true;
console.log(1);
}, 750);
}, false);
document.getElementById("groupVolumeAllDown").addEventListener('touchend', function(event) {
sliding = false;
clearInterval(groupVolumeDownTimeout);
//sendFinalVolDown();
}, false);
var groupVolumeUpTimeout;
var groupVolumeDownTimeout;
$(document).mouseup(function() {
clearInterval(groupVolumeUpTimeout);
clearInterval(groupVolumeDownTimeout);
return false;
});
function groupAllSetSource() {
var list = [];
var obj = new Object();
for (var i = 1; i <= systems[systemIdx].sources.length; i++) {
var obj = new Object();
if (systems[systemIdx].sources[i]) {
if (systems[systemIdx].sources[i].enabled) {
obj.text = systems[systemIdx].sources[i].appName + "";
obj.value = i + "";
list.push(obj);
}
}
}
//console.log(list);
var config = {
title: "Select a Source",
items: list,
selectedValue: "1",
doneButtonLabel: "Select",
cancelButtonLabel: "Cancel"
};
// Show the picker
window.plugins.listpicker.showPicker(config,
function(source) {
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
var zone = systems[systemIdx].groups[Ggroup].zones[i];
if (systems[systemIdx].zones[zone].dndOn == false) {
setSourceForZone(zone, source);
systems[systemIdx].zones[zone].source = source;
}
}
updateData();
},
function() {
//alert("You have cancelled");
}
);
}
function makeGroupHeader(zone) {
console.log(systems[systemIdx].groups);
if (!systems[systemIdx].groups || systems[systemIdx].groups.length == 0) {
var html = '<h2>Group Control</h2>';
$('#pageName').html(html)
var html = '<ul><li>';
html += ' <div class="list-box">';
html += '<h2 class="addGroupText" id="goToGroupSettingsPage">Add your first group</h2>';
html += '</li></ul>';
$("#groupControlList").html(html);
$('#goToGroupSettingsPage').click(function() {
goToGroupSettingsPage();
});
return;
}
var html = '<img id="groupMuteAll" val="muteOff" src="images/speaker.png">';
if (systems[systemIdx].groups) {
if (systems[systemIdx].groups[Ggroup]) {
html += '<h2 id="changeGroup">' + systems[systemIdx].groups[Ggroup].name + '<img class="downArrow" src="images/arrowDown.png"></h2>'
}
$('#pageName').html(html);
}
$('#changeGroup').on('click', function() {
makeGroupDropDown();
//createVolumeBar();
});
$('#groupMuteAll').prop("val", "muteOff");
$('#groupMuteAll').on('click', function() {
console.log("group mute click")
var val = $('#groupMuteAll').prop('val');
console.log(val);
if (val == 'muteOff') {
$('#groupMuteAll').prop("src", "images/mute.png");
$('#groupMuteAll').prop("val", "muteOn");
groupMuteOn(Ggroup)
} else {
$('#groupMuteAll').prop("src", "images/speaker.png");
$('#groupMuteAll').prop("val", "muteOff");
groupMuteOff(Ggroup);
}
});
}
function makeGroupDropDown() {
var list = [];
var obj = new Object();
for (var i = 0; i <= systems[systemIdx].groups.length; i++) {
var obj = new Object();
if (systems[systemIdx].groups[i]) {
obj.text = systems[systemIdx].groups[i].name + "";
obj.value = i + "";
list.push(obj);
}
}
//console.log(list);
var config = {
title: "Select a Group",
items: list,
selectedValue: Ggroup + "",
doneButtonLabel: "Select",
cancelButtonLabel: "Cancel"
};
// Show the picker
window.plugins.listpicker.showPicker(config,
function(group) {
goToGroupControlPage(group)
updateData();
},
function() {
//alert("You have cancelled");
}
);
}
function groupAllSetVolume() {
console.log("group all set volume")
var list = [];
var obj = new Object();
for (var i = 1; i <= 60; i++) {
var obj = new Object();
obj.text = i + "";
obj.value = i + "";
list.push(obj);
}
//console.log(list);
var config = {
title: "Select Volume",
items: list,
selectedValue: "1",
doneButtonLabel: "Select",
cancelButtonLabel: "Cancel"
};
// Show the picker
window.plugins.listpicker.showPicker(config,
function(volume) {
console.log(volume);
volume = volume * 1;
for (var i = 0; i < systems[systemIdx].groups[Ggroup].zones.length; i++) {
console.log("zone dnd: " + systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].dndOn)
if (systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].dndOn == false && systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].muteOn == false) {
setVolumeForZone(systems[systemIdx].groups[Ggroup].zones[i], volume);
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].vol = volume;
systems[systemIdx].zones[systems[systemIdx].groups[Ggroup].zones[i]].powerOn = true;
zonePowerOn(systems[systemIdx].groups[Ggroup].zones[i])
}
//updateGUI(zones[groups[Ggroup].zones[i]]);
}
updateData();
},
function() {
//alert("You have cancelled");
}
);
}
function makeSourceListGroup(zone) {
var list = [];
var obj = new Object();
for (var i = 1; i <= systems[systemIdx].sources.length; i++) {
var obj = new Object();
if (systems[systemIdx].sources[i]) {
if (systems[systemIdx].sources[i].enabled) {
obj.text = systems[systemIdx].sources[i].appName + "";
obj.value = i + "";
list.push(obj);
}
}
}
//console.log(list);
var config = {
title: "Select a Source",
items: list,
selectedValue: systems[systemIdx].zones[zone].source + "",
doneButtonLabel: "Select",
cancelButtonLabel: "Cancel"
};
// Show the picker
window.plugins.listpicker.showPicker(config,
function(source) {
console.log(source);
setSourceForZone(zone, source);
systems[systemIdx].zones[zone].source = source;
},
function() {
//alert("You have cancelled");
}
);
}