UNPKG

htd-lync

Version:

This library is meant to be used to interact with an HTD Lync 12

651 lines (565 loc) 20.9 kB
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"); } ); }