/*! @file textChannelPI.js @brief Contains PI for Text Channel action @author Andrew story @copyright (c) 2023, Corsair Memory, Inc. All Rights Reserved. */ function UserVolumeButtonPI(inContext, inLanguage) { // Inherit from PI PI.call(this, inContext, inLanguage); // Save a copy of a method var piSaveSettings = this.saveSettings; // Add fields var fields =`
User
`; document.getElementById('placeholder').innerHTML = fields; const els = { "select_user": document.getElementById('user'), "range_adjust": document.getElementById("vol-range-adjust"), "range_set": document.getElementById("vol-range-set"), "select_mode": document.getElementById("select-mode"), "select_icon": document.getElementById("select-icon"), "select_mute_type": document.getElementById("select-mute-type"), }; const containers = { "range_adjust": document.getElementById("volume-range-adjust"), "range_set": document.getElementById("volume-range-set"), "select_mode": document.getElementById("volume-mode"), "select_icon": document.getElementById("icon-mode"), "mute_type": document.getElementById("mute-type"), }; this.refreshElements = function(){ const userSelected = els.select_user.value && els.select_user.value !== "no-user"; if (!userSelected){ containers.range_adjust.style.display = "none"; containers.range_set.style.display = "none"; containers.select_mode.style.display = "none"; containers.select_icon.style.display = "none"; containers.mute_type.style.display = "none"; return; } containers.select_mode.style.removeProperty("display"); if( els.select_mode.value == "adjust"){ containers.range_adjust.style.removeProperty("display"); if( settings.isInMultiAction){ containers.select_icon.style.display = "none"; } else { containers.select_icon.style.removeProperty("display"); } containers.range_set.style.display = "none"; containers.mute_type.style.display = "none"; } else if (els.select_mode.value == "set"){ containers.range_set.style.removeProperty("display"); containers.select_icon.style.display = "none"; containers.range_adjust.style.display = "none"; containers.mute_type.style.display = "none"; } else if (els.select_mode.value == "mute"){ containers.mute_type.style.removeProperty("display"); containers.range_set.style.display = "none"; containers.select_icon.style.display = "none"; containers.range_adjust.style.display = "none"; }else { containers.range_set.style.display = "none"; containers.select_icon.style.display = "none"; containers.range_adjust.style.display = "none"; containers.mute_type.style.display = "none"; } }; els.select_user.addEventListener("change", () => { settings['user'] = els.select_user.value; settings['usernick'] = els.select_user.options[els.select_user.selectedIndex].innerText; this.refreshElements(); piSaveSettings(); }); els.select_mode.addEventListener("change", () => { settings['mode'] = els.select_mode.value; this.refreshElements(); piSaveSettings(); }); els.select_mute_type.addEventListener("change", () => { settings['muteType'] = els.select_mute_type.value; this.refreshElements(); piSaveSettings(); }); els.select_icon.addEventListener("change", () => { settings['icon'] = els.select_icon.value; piSaveSettings(); }); els.range_adjust.addEventListener("change", volumeChanged = (inEvent) => { settings['volAdjustValue'] = parseInt(inEvent.target.value); piSaveSettings(); }); els.range_set.addEventListener("change", volumeChanged = (inEvent) => { settings['volSetValue'] = parseInt(inEvent.target.value); piSaveSettings(); }); this.addSliderTooltip(els.range_adjust, (value)=>{ return (value >= 0 ? "+" + (value + 1) : value) + "%"; }); this.addSliderTooltip(els.range_set, (value)=>{ return value + "%"; }); els.select_user.value = settings['user'] || "no-user"; this.setAndValidateField(els.range_adjust, "volAdjustValue"); this.setAndValidateField(els.range_set, "volSetValue"); this.setAndValidateField(els.select_mode, "mode"); this.setAndValidateField(els.select_icon, "icon", settings['icon'] || "static"); this.refreshElements(); // Before overwriting parrent method, save a copy of it var piLoad = this.load; // Public function called to load the fields this.load = function (data) { // Call PI load method piLoad.call(this, data); // If action enabled if (!data.disabled && !data.unauthorized) { let defaults; if (settings["user"] && els.select_user.selectedIndex >= 0){ // Ensure we actually have a nick for the user let selectedOption = els.select_user.options[els.select_user.selectedIndex]; if (selectedOption && settings['usernick'] != selectedOption.innerText){ settings['usernick'] = selectedOption.innerText; } } if(settings["user"] && settings["usernick"]){ defaults = {key: settings["user"], value: settings["usernick"]}; } this.loadField('user', data.users, defaults); this.setAndValidateField(els.range_adjust, "volAdjustValue"); this.setAndValidateField(els.range_set, "volSetValue"); this.setAndValidateField(els.select_mode, "mode"); this.setAndValidateField(els.select_icon, "icon", settings['icon'] || "static"); } // Enable / Disable the fields els.select_user.disabled = data.disabled || data.unauthorized; els.range_adjust.disabled = data.disabled || data.unauthorized; els.range_set.disabled = data.disabled || data.unauthorized; els.select_mode.disabled = data.disabled || data.unauthorized; els.select_icon.disabled = data.disabled || data.unauthorized; this.refreshElements(); // Show PI document.getElementById('pi').style.display = "block"; } }