summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2018-11-28 22:35:31 +0300
committerDevaev Maxim <[email protected]>2018-11-28 22:35:31 +0300
commitfe4afd7623df7c54072c1b28ab90d3a547dfe231 (patch)
treea1d475ee90ec2ee5bb67eb6bbb459a20855ccab6
parent6c2d8900f53cca2f5e0980f8ac038566080986a9 (diff)
non-blocking click handle
-rw-r--r--kvmd/apps/kvmd/atx.py8
-rw-r--r--web/js/kvm/atx.js6
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);
+ });
}
});
};