diff options
author | Devaev Maxim <[email protected]> | 2021-01-14 23:29:52 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2021-01-14 23:29:52 +0300 |
commit | 8a45ce9146df3aa7c53b75c08ae0a4655e013ce2 (patch) | |
tree | fbef16bc6a3438417b38822f9dd6df1fb1bc3fda | |
parent | 1799e34fd009c1316c5e6a5281bba09b44b3134d (diff) |
v3 usb breaker
-rw-r--r-- | testenv/v2-hdmi-rpi4.override.yaml | 9 | ||||
-rw-r--r-- | web/kvm/index.html | 12 | ||||
-rw-r--r-- | web/kvm/navbar-system.pug | 13 | ||||
-rw-r--r-- | web/share/js/kvm/gpio.js | 18 |
4 files changed, 45 insertions, 7 deletions
diff --git a/testenv/v2-hdmi-rpi4.override.yaml b/testenv/v2-hdmi-rpi4.override.yaml index 8c11b935..76ec3bbd 100644 --- a/testenv/v2-hdmi-rpi4.override.yaml +++ b/testenv/v2-hdmi-rpi4.override.yaml @@ -43,6 +43,13 @@ kvmd: device: /dev/hidraw0 scheme: + __v3_usb_breaker__: + pin: 5 + mode: output + initial: true + pulse: + delay: 0 + led1: pin: 19 mode: input @@ -83,7 +90,7 @@ kvmd: - ["#Generic GPIO leds"] - [] - ["#Test 1:", led1, button1] - - ["#Test 2:", led2, button2|confirm|Click] + - ["#Test 2:", led2, button2|confirm|Testing] - [] - ["#HID Relays /dev/hidraw0"] - [] diff --git a/web/kvm/index.html b/web/kvm/index.html index 1d920cee..10f72b28 100644 --- a/web/kvm/index.html +++ b/web/kvm/index.html @@ -196,6 +196,18 @@ </table> </div> <hr> + <div class="feature-disabled" id="v3-usb-breaker"> + <table class="kv"> + <td>Connect main USB to Server:</td> + <td align="right"> + <div class="switch-box"> + <input class="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> + </table> + <hr> + </div> <div class="buttons buttons-row"> <button class="row50" data-force-hide-menu id="show-keyboard-button">• Show keyboard</button> <button class="row50" disabled id="hid-reset-button">Reset HID</button> diff --git a/web/kvm/navbar-system.pug b/web/kvm/navbar-system.pug index cbf7ab6c..26876cab 100644 --- a/web/kvm/navbar-system.pug +++ b/web/kvm/navbar-system.pug @@ -49,6 +49,19 @@ li(class="right") hr +menu_switch("hid-connect-switch", "Connect HID to Server", true, true) hr + div(id="v3-usb-breaker" class="feature-disabled") + table(class="kv") + td Connect main USB to Server: + td(align="right") + div(class="switch-box") + -let msg = "Turning off this switch will disconnect the main USB<br>from the server." + -msg += " Are you sure you want to continue?" + input(disabled type="checkbox" id="gpio-switch-__v3_usb_breaker__" class="gpio-switch" + data-channel="__v3_usb_breaker__" data-confirm-off=msg) + label(for="gpio-switch-__v3_usb_breaker__") + span(class="switch-inner") + span(class="switch") + hr div(class="buttons buttons-row") button(data-force-hide-menu id="show-keyboard-button" class="row50") • Show keyboard button(disabled id="hid-reset-button" class="row50") Reset HID diff --git a/web/share/js/kvm/gpio.js b/web/share/js/kvm/gpio.js index e874c81d..9a339da6 100644 --- a/web/share/js/kvm/gpio.js +++ b/web/share/js/kvm/gpio.js @@ -104,6 +104,8 @@ export function Gpio() { } } + tools.featureSetEnabled($("v3-usb-breaker"), ("__v3_usb_breaker__" in model.scheme.outputs)); + self.setState(__state); }; @@ -121,11 +123,12 @@ export function Gpio() { `; } else if (item.type === "output") { let controls = []; + let confirm = (item.confirm ? "Are you sure to act this control?" : ""); if (item.scheme["switch"]) { controls.push(` <td><div class="switch-box"> <input disabled type="checkbox" id="gpio-switch-${item.channel}" class="gpio-switch" - data-channel="${item.channel}" data-confirm="${Number(item.confirm)}" /> + data-channel="${item.channel}" data-confirm="${confirm}" /> <label for="gpio-switch-${item.channel}"> <span class="switch-inner"></span> <span class="switch"></span> @@ -136,7 +139,7 @@ export function Gpio() { if (item.scheme.pulse.delay) { controls.push(` <td><button disabled id="gpio-button-${item.channel}" class="gpio-button" - data-channel="${item.channel}" data-confirm="${Number(item.confirm)}">${item.text}</button></td> + data-channel="${item.channel}" data-confirm="${confirm}">${item.text}</button></td> `); } return `<table><tr>${controls.join("<td> </td>")}</tr></table>`; @@ -158,11 +161,14 @@ export function Gpio() { var __switchChannel = function(el) { let channel = el.getAttribute("data-channel"); - let confirm = parseInt(el.getAttribute("data-confirm")); + let confirm = el.getAttribute("data-confirm"); let to = ($(`gpio-switch-${channel}`).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}`); if (confirm) { - wm.confirm("Are you sure to act this switch?").then(function(ok) { + wm.confirm(confirm).then(function(ok) { if (ok) { act(); } else { @@ -176,10 +182,10 @@ export function Gpio() { var __pulseChannel = function(el) { let channel = el.getAttribute("data-channel"); - let confirm = parseInt(el.getAttribute("data-confirm")); + let confirm = el.getAttribute("data-confirm"); let act = () => __sendPost(`/api/gpio/pulse?channel=${channel}`); if (confirm) { - wm.confirm("Are you sure to click this button?").then(function(ok) { if (ok) act(); }); + wm.confirm(confirm).then(function(ok) { if (ok) act(); }); } else { act(); } |