diff options
-rw-r--r-- | web/kvm/index.html | 10 | ||||
-rw-r--r-- | web/kvm/navbar-system.pug | 2 | ||||
-rw-r--r-- | web/kvm/navbar.pug | 4 | ||||
-rw-r--r-- | web/share/js/kvm/gpio.js | 60 | ||||
-rw-r--r-- | web/share/js/tools.js | 2 |
5 files changed, 40 insertions, 38 deletions
diff --git a/web/kvm/index.html b/web/kvm/index.html index c0a9a6dd..3bac7104 100644 --- a/web/kvm/index.html +++ b/web/kvm/index.html @@ -154,7 +154,7 @@ <button class="small" data-force-hide-menu id="open-log-button">• Log</button> </td> <td class="feature-disabled" id="system-tool-wol"> - <button class="gpio-button-__wol__ gpio-button small" data-force-hide-menu data-channel="__wol__" data-confirm="Are you sure to send Wake-on-LAN packet to the server?">• WoL</button> + <button class="__gpio-button-__wol__ __gpio-button small" data-force-hide-menu data-channel="__wol__" data-confirm="Are you sure to send Wake-on-LAN packet to the server?">• WoL</button> </td> </tr> </table> @@ -396,8 +396,8 @@ <td>Connect main USB to Server:</td> <td align="right"> <div class="switch-box"> - <input class="gpio-switch-__v3_usb_breaker__ gpio-switch" disabled type="checkbox" id="gpio-switch-__v3_usb_breaker__" data-channel="__v3_usb_breaker__" data-confirm-off="Turning off this switch will disconnect the main USB<br>from the server. Are you sure you want to continue?"> - <label for="gpio-switch-__v3_usb_breaker__"><span class="switch-inner"></span><span class="switch"></span></label> + <input class="__gpio-switch-__v3_usb_breaker__ gpio-switch" disabled type="checkbox" id="__gpio-switch-__v3_usb_breaker__" data-channel="__v3_usb_breaker__" data-confirm-off="Turning off this switch will disconnect the main USB<br>from the server. Are you sure you want to continue?"> + <label for="__gpio-switch-__v3_usb_breaker__"><span class="switch-inner"></span><span class="switch"></span></label> </div> </td> </tr> @@ -405,8 +405,8 @@ <td>Enable locator LED:</td> <td align="right"> <div class="switch-box"> - <input class="gpio-switch-__v4_locator__ gpio-switch" disabled type="checkbox" id="gpio-switch-__v4_locator__" data-channel="__v4_locator__" data-confirm-off=""> - <label for="gpio-switch-__v4_locator__"><span class="switch-inner"></span><span class="switch"></span></label> + <input class="__gpio-switch-__v4_locator__ gpio-switch" disabled type="checkbox" id="__gpio-switch-__v4_locator__" data-channel="__v4_locator__" data-confirm-off=""> + <label for="__gpio-switch-__v4_locator__"><span class="switch-inner"></span><span class="switch"></span></label> </div> </td> </tr> diff --git a/web/kvm/navbar-system.pug b/web/kvm/navbar-system.pug index d6cb31d5..d10dbee0 100644 --- a/web/kvm/navbar-system.pug +++ b/web/kvm/navbar-system.pug @@ -13,7 +13,7 @@ li(id="system-dropdown" class="right") td(id="system-tool-about") #[button(data-force-hide-menu data-show-window="about-window" class="small") • About] td(id="system-tool-log") #[button(data-force-hide-menu id="open-log-button" class="small") • Log] td(id="system-tool-wol" class="feature-disabled") - button(data-force-hide-menu class="gpio-button-__wol__ gpio-button small" data-channel="__wol__" + button(data-force-hide-menu class="__gpio-button-__wol__ __gpio-button small" data-channel="__wol__" data-confirm="Are you sure to send Wake-on-LAN packet to the server?") • WoL hr div(id="stream-message-no-webrtc" class="hidden") diff --git a/web/kvm/navbar.pug b/web/kvm/navbar.pug index 381fc067..b1c6b5eb 100644 --- a/web/kvm/navbar.pug +++ b/web/kvm/navbar.pug @@ -17,9 +17,9 @@ mixin menu_switch_notable_gpio(channel, title, confirm_off="") td !{title}: td(align="right") div(class="switch-box") - input(disabled type="checkbox" id=`gpio-switch-${channel}` class=`gpio-switch-${channel} gpio-switch` + input(disabled type="checkbox" id=`__gpio-switch-${channel}` class=`__gpio-switch-${channel} gpio-switch` data-channel=channel data-confirm-off=confirm_off) - label(for=`gpio-switch-${channel}`) + label(for=`__gpio-switch-${channel}`) span(class="switch-inner") span(class="switch") diff --git a/web/share/js/kvm/gpio.js b/web/share/js/kvm/gpio.js index 293561b3..fea1af32 100644 --- a/web/share/js/kvm/gpio.js +++ b/web/share/js/kvm/gpio.js @@ -38,26 +38,26 @@ export function Gpio(__recorder) { self.setState = function(state) { if (state) { - for (let channel in state.inputs) { - for (let el of $$(`gpio-led-${channel}`)) { - __setLedState(el, state.inputs[channel].state); + for (let ch in state.inputs) { + for (let el of $$(`__gpio-led-${ch}`)) { + __setLedState(el, state.inputs[ch].state); } } - for (let channel in state.outputs) { + for (let ch in state.outputs) { for (let type of ["switch", "button"]) { - for (let el of $$(`gpio-${type}-${channel}`)) { - tools.el.setEnabled(el, state.outputs[channel].online && !state.outputs[channel].busy); + for (let el of $$(`__gpio-${type}-${ch}`)) { + tools.el.setEnabled(el, state.outputs[ch].online && !state.outputs[ch].busy); } } - for (let el of $$(`gpio-switch-${channel}`)) { - el.checked = state.outputs[channel].state; + for (let el of $$(`__gpio-switch-${ch}`)) { + el.checked = state.outputs[ch].state; } } } else { - for (let el of $$("gpio-led")) { + for (let el of $$("__gpio-led")) { __setLedState(el, false); } - for (let selector of ["gpio-switch", "gpio-button"]) { + for (let selector of ["__gpio-switch", "__gpio-button"]) { for (let el of $$(selector)) { tools.el.setEnabled(el, false); } @@ -99,12 +99,12 @@ export function Gpio(__recorder) { content += "</table>"; $("gpio-menu").innerHTML = content; - for (let channel in model.scheme.outputs) { - for (let el of $$(`gpio-switch-${channel}`)) { - tools.el.setOnClick(el, tools.makeClosure(__switchChannel, el)); + for (let ch in model.scheme.outputs) { + for (let el of $$(`__gpio-switch-${ch}`)) { + tools.el.setOnClick(el, tools.partial(__switchChannel, el)); } - for (let el of $$(`gpio-button-${channel}`)) { - tools.el.setOnClick(el, tools.makeClosure(__pulseChannel, el)); + for (let el of $$(`__gpio-button-${ch}`)) { + tools.el.setOnClick(el, tools.partial(__pulseChannel, el)); } } @@ -121,7 +121,7 @@ export function Gpio(__recorder) { } else if (item.type === "input") { return ` <img - class="gpio-led gpio-led-${item.channel} inline-lamp-big led-gray" + class="__gpio-led __gpio-led-${item.channel} inline-lamp-big led-gray" src="/share/svg/led-circle.svg" data-color="${item.color}" /> @@ -136,12 +136,12 @@ export function Gpio(__recorder) { <input disabled type="checkbox" - id="gpio-switch-${id}" - class="gpio-switch gpio-switch-${item.channel}" + id="__gpio-switch-${id}" + class="__gpio-switch __gpio-switch-${item.channel}" data-channel="${item.channel}" data-confirm="${confirm}" /> - <label for="gpio-switch-${id}"> + <label for="__gpio-switch-${id}"> <span class="switch-inner"></span> <span class="switch"></span> </label> @@ -152,7 +152,7 @@ export function Gpio(__recorder) { controls.push(` <td><button disabled - class="gpio-button gpio-button-${item.channel}" + class="__gpio-button __gpio-button-${item.channel}" ${item.hide ? "data-force-hide-menu" : ""} data-channel="${item.channel}" data-confirm="${confirm}" @@ -179,22 +179,20 @@ export function Gpio(__recorder) { }; var __switchChannel = function(el) { - let channel = el.getAttribute("data-channel"); + let ch = el.getAttribute("data-channel"); let confirm = el.getAttribute("data-confirm"); let to = (el.checked ? "1" : "0"); if (to === "0" && el.hasAttribute("data-confirm-off")) { confirm = el.getAttribute("data-confirm-off"); } let act = () => { - __sendPost("/api/gpio/switch", {"channel": channel, "state": to}); - __recorder.recordGpioSwitchEvent(channel, to); + __sendPost("/api/gpio/switch", {"channel": ch, "state": to}); + __recorder.recordGpioSwitchEvent(ch, to); }; if (confirm) { wm.confirm(tools.escape(confirm)).then(function(ok) { if (ok) { act(); - } else { - self.setState(__state); // Switch back } }); } else { @@ -203,14 +201,18 @@ export function Gpio(__recorder) { }; var __pulseChannel = function(el) { - let channel = el.getAttribute("data-channel"); + let ch = el.getAttribute("data-channel"); let confirm = el.getAttribute("data-confirm"); let act = () => { - __sendPost("/api/gpio/pulse", {"channel": channel}); - __recorder.recordGpioPulseEvent(channel); + __sendPost("/api/gpio/pulse", {"channel": ch}); + __recorder.recordGpioPulseEvent(ch); }; if (confirm) { - wm.confirm(tools.escape(confirm)).then(function(ok) { if (ok) act(); }); + wm.confirm(tools.escape(confirm)).then(function(ok) { + if (ok) { + act(); + } + }); } else { act(); } diff --git a/web/share/js/tools.js b/web/share/js/tools.js index ee3bc187..604f9711 100644 --- a/web/share/js/tools.js +++ b/web/share/js/tools.js @@ -77,7 +77,7 @@ export var tools = new function() { ); }; - self.makeClosure = function(func, ...args) { + self.partial = function(func, ...args) { return () => func(...args); }; |