diff options
author | Devaev Maxim <[email protected]> | 2018-11-28 22:35:31 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2018-11-28 22:35:31 +0300 |
commit | fe4afd7623df7c54072c1b28ab90d3a547dfe231 (patch) | |
tree | a1d475ee90ec2ee5bb67eb6bbb459a20855ccab6 | |
parent | 6c2d8900f53cca2f5e0980f8ac038566080986a9 (diff) |
non-blocking click handle
-rw-r--r-- | kvmd/apps/kvmd/atx.py | 8 | ||||
-rw-r--r-- | web/js/kvm/atx.js | 6 |
2 files changed, 10 insertions, 4 deletions
diff --git a/kvmd/apps/kvmd/atx.py b/kvmd/apps/kvmd/atx.py index 8444c097..7bf237c9 100644 --- a/kvmd/apps/kvmd/atx.py +++ b/kvmd/apps/kvmd/atx.py @@ -66,7 +66,13 @@ class Atx: # pylint: disable=too-many-instance-attributes get_logger().info("Clicked reset") async def __click(self, pin: int, delay: float) -> None: - with self.__region: + self.__region.enter() + asyncio.ensure_future(self.__inner_click(pin, delay)) + + async def __inner_click(self, pin: int, delay: float) -> None: + try: for flag in (True, False): gpio.write(pin, flag) await asyncio.sleep(delay) + finally: + self.__region.exit() diff --git a/web/js/kvm/atx.js b/web/js/kvm/atx.js index 12dfaa44..d637c742 100644 --- a/web/js/kvm/atx.js +++ b/web/js/kvm/atx.js @@ -8,7 +8,7 @@ function Atx() { $("atx-hdd-led").title = "Disk Activity Led"; tools.setOnClick($("atx-power-button"), () => __clickButton("power", "Are you sure to click the power button?")); - tools.setOnClick($("atx-power-button-long"), () => __clickButton("power_long", "Are you sure to perform the long press of the power button?", 15000)); + tools.setOnClick($("atx-power-button-long"), () => __clickButton("power_long", "Are you sure to perform the long press of the power button?")); tools.setOnClick($("atx-reset-button"), () => __clickButton("reset", "Are you sure to reboot the server?")); }; @@ -28,7 +28,7 @@ function Atx() { $("atx-hdd-led").className = "led-gray"; }; - var __clickButton = function(button, confirm_msg, timeout=null) { + var __clickButton = function(button, confirm_msg) { ui.confirm(confirm_msg).then(function(ok) { if (ok) { var http = tools.makeRequest("POST", "/kvmd/atx/click?button=" + button, function() { @@ -39,7 +39,7 @@ function Atx() { ui.error("Click error:<br>", http.responseText); } } - }, timeout); + }); } }); }; |