mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
web: refactoring
This commit is contained in:
parent
191eb4b430
commit
8b97eed743
@ -94,17 +94,17 @@ export function Keypad(__keys_parent, __sendKey, __apply_fixes) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.emitByKeyEvent = function(event, state) {
|
self.emitByKeyEvent = function(ev, state) {
|
||||||
if (event.repeat) {
|
if (ev.repeat) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let code = event.code;
|
let code = ev.code;
|
||||||
if (__apply_fixes) {
|
if (__apply_fixes) {
|
||||||
// https://github.com/pikvm/pikvm/issues/819
|
// https://github.com/pikvm/pikvm/issues/819
|
||||||
if (code === "IntlBackslash" && ["`", "~"].includes(event.key)) {
|
if (code === "IntlBackslash" && ["`", "~"].includes(ev.key)) {
|
||||||
code = "Backquote";
|
code = "Backquote";
|
||||||
} else if (code === "Backquote" && ["§", "±"].includes(event.key)) {
|
} else if (code === "Backquote" && ["§", "±"].includes(ev.key)) {
|
||||||
code = "IntlBackslash";
|
code = "IntlBackslash";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,13 +39,13 @@ export function Keyboard(__recordWsEvent) {
|
|||||||
|
|
||||||
$("hid-keyboard-led").title = "Keyboard free";
|
$("hid-keyboard-led").title = "Keyboard free";
|
||||||
|
|
||||||
$("keyboard-window").onkeydown = (event) => __keyboardHandler(event, true);
|
$("keyboard-window").onkeydown = (ev) => __keyboardHandler(ev, true);
|
||||||
$("keyboard-window").onkeyup = (event) => __keyboardHandler(event, false);
|
$("keyboard-window").onkeyup = (ev) => __keyboardHandler(ev, false);
|
||||||
$("keyboard-window").onfocus = __updateOnlineLeds;
|
$("keyboard-window").onfocus = __updateOnlineLeds;
|
||||||
$("keyboard-window").onblur = __updateOnlineLeds;
|
$("keyboard-window").onblur = __updateOnlineLeds;
|
||||||
|
|
||||||
$("stream-window").onkeydown = (event) => __keyboardHandler(event, true);
|
$("stream-window").onkeydown = (ev) => __keyboardHandler(ev, true);
|
||||||
$("stream-window").onkeyup = (event) => __keyboardHandler(event, false);
|
$("stream-window").onkeyup = (ev) => __keyboardHandler(ev, false);
|
||||||
$("stream-window").onfocus = __updateOnlineLeds;
|
$("stream-window").onfocus = __updateOnlineLeds;
|
||||||
$("stream-window").onblur = __updateOnlineLeds;
|
$("stream-window").onblur = __updateOnlineLeds;
|
||||||
|
|
||||||
@ -125,9 +125,9 @@ export function Keyboard(__recordWsEvent) {
|
|||||||
$("hid-keyboard-led").title = title;
|
$("hid-keyboard-led").title = title;
|
||||||
};
|
};
|
||||||
|
|
||||||
var __keyboardHandler = function(event, state) {
|
var __keyboardHandler = function(ev, state) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
__keypad.emitByKeyEvent(event, state);
|
__keypad.emitByKeyEvent(ev, state);
|
||||||
};
|
};
|
||||||
|
|
||||||
var __sendKey = function(code, state) {
|
var __sendKey = function(code, state) {
|
||||||
@ -139,7 +139,7 @@ export function Keyboard(__recordWsEvent) {
|
|||||||
code = "ControlLeft";
|
code = "ControlLeft";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let event = {
|
let ev = {
|
||||||
"event_type": "key",
|
"event_type": "key",
|
||||||
"event": {
|
"event": {
|
||||||
"key": code,
|
"key": code,
|
||||||
@ -148,10 +148,10 @@ export function Keyboard(__recordWsEvent) {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
if (__ws && !$("hid-mute-switch").checked) {
|
if (__ws && !$("hid-mute-switch").checked) {
|
||||||
__ws.sendHidEvent(event);
|
__ws.sendHidEvent(ev);
|
||||||
}
|
}
|
||||||
delete event.event.finish;
|
delete ev.event.finish;
|
||||||
__recordWsEvent(event);
|
__recordWsEvent(ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
__init__();
|
__init__();
|
||||||
|
|||||||
@ -34,10 +34,10 @@ export function main() {
|
|||||||
if (checkBrowser(null, "kvm/x-mobile.css")) {
|
if (checkBrowser(null, "kvm/x-mobile.css")) {
|
||||||
tools.storage.bindSimpleSwitch($("page-close-ask-switch"), "page.close.ask", true, function(value) {
|
tools.storage.bindSimpleSwitch($("page-close-ask-switch"), "page.close.ask", true, function(value) {
|
||||||
if (value) {
|
if (value) {
|
||||||
window.onbeforeunload = function(event) {
|
window.onbeforeunload = function(ev) {
|
||||||
let text = "Are you sure you want to close PiKVM session?";
|
let text = "Are you sure you want to close PiKVM session?";
|
||||||
if (event) {
|
if (ev) {
|
||||||
event.returnValue = text;
|
ev.returnValue = text;
|
||||||
}
|
}
|
||||||
return text;
|
return text;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -63,9 +63,9 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
document.addEventListener("pointerlockerror", __relativeCapturedHandler);
|
document.addEventListener("pointerlockerror", __relativeCapturedHandler);
|
||||||
$("stream-box").addEventListener("mouseenter", () => __streamHoveredHandler(true));
|
$("stream-box").addEventListener("mouseenter", () => __streamHoveredHandler(true));
|
||||||
$("stream-box").addEventListener("mouseleave", () => __streamHoveredHandler(false));
|
$("stream-box").addEventListener("mouseleave", () => __streamHoveredHandler(false));
|
||||||
$("stream-box").addEventListener("mousedown", (event) => __streamButtonHandler(event, true));
|
$("stream-box").addEventListener("mousedown", (ev) => __streamButtonHandler(ev, true));
|
||||||
$("stream-box").addEventListener("mouseup", (event) => __streamButtonHandler(event, false));
|
$("stream-box").addEventListener("mouseup", (ev) => __streamButtonHandler(ev, false));
|
||||||
$("stream-box").addEventListener("contextmenu", (event) => event.preventDefault());
|
$("stream-box").addEventListener("contextmenu", (ev) => ev.preventDefault());
|
||||||
$("stream-box").addEventListener("mousemove", __streamMoveHandler);
|
$("stream-box").addEventListener("mousemove", __streamMoveHandler);
|
||||||
$("stream-box").addEventListener("wheel", __streamScrollHandler);
|
$("stream-box").addEventListener("wheel", __streamScrollHandler);
|
||||||
$("stream-box").addEventListener("touchstart", __streamTouchStartHandler);
|
$("stream-box").addEventListener("touchstart", __streamTouchStartHandler);
|
||||||
@ -194,11 +194,11 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
__updateOnlineLeds();
|
__updateOnlineLeds();
|
||||||
};
|
};
|
||||||
|
|
||||||
var __streamButtonHandler = function(event, state) {
|
var __streamButtonHandler = function(ev, state) {
|
||||||
// https://www.w3schools.com/jsref/event_button.asp
|
// https://www.w3schools.com/jsref/event_button.asp
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
if (__absolute || __isRelativeCaptured()) {
|
if (__absolute || __isRelativeCaptured()) {
|
||||||
switch (event.button) {
|
switch (ev.button) {
|
||||||
case 0: __keypad.emitByCode("left", state); break;
|
case 0: __keypad.emitByCode("left", state); break;
|
||||||
case 2: __keypad.emitByCode("right", state); break;
|
case 2: __keypad.emitByCode("right", state); break;
|
||||||
case 1: __keypad.emitByCode("middle", state); break;
|
case 1: __keypad.emitByCode("middle", state); break;
|
||||||
@ -210,25 +210,25 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __streamTouchStartHandler = function(event) {
|
var __streamTouchStartHandler = function(ev) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
if (event.touches.length === 1) {
|
if (ev.touches.length === 1) {
|
||||||
if (__absolute) {
|
if (__absolute) {
|
||||||
__planned_pos = __getTouchPosition(event, 0);
|
__planned_pos = __getTouchPosition(ev, 0);
|
||||||
__sendPlannedMove();
|
__sendPlannedMove();
|
||||||
} else {
|
} else {
|
||||||
__relative_touch_pos = __getTouchPosition(event, 0);
|
__relative_touch_pos = __getTouchPosition(ev, 0);
|
||||||
}
|
}
|
||||||
} else if (event.touches.length >= 2) {
|
} else if (ev.touches.length >= 2) {
|
||||||
__planned_pos = null;
|
__planned_pos = null;
|
||||||
__relative_touch_pos = null;
|
__relative_touch_pos = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __streamTouchMoveHandler = function(event) {
|
var __streamTouchMoveHandler = function(ev) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
if (event.touches.length === 1) {
|
if (ev.touches.length === 1) {
|
||||||
let pos = __getTouchPosition(event, 0);
|
let pos = __getTouchPosition(ev, 0);
|
||||||
if (__absolute) {
|
if (__absolute) {
|
||||||
__planned_pos = pos;
|
__planned_pos = pos;
|
||||||
} else if (__relative_touch_pos === null) {
|
} else if (__relative_touch_pos === null) {
|
||||||
@ -240,8 +240,8 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
});
|
});
|
||||||
__relative_touch_pos = pos;
|
__relative_touch_pos = pos;
|
||||||
}
|
}
|
||||||
} else if (event.touches.length >= 2) {
|
} else if (ev.touches.length >= 2) {
|
||||||
let pos = __getTouchPosition(event, 0);
|
let pos = __getTouchPosition(ev, 0);
|
||||||
if (__scroll_touch_pos === null) {
|
if (__scroll_touch_pos === null) {
|
||||||
__scroll_touch_pos = pos;
|
__scroll_touch_pos = pos;
|
||||||
} else {
|
} else {
|
||||||
@ -263,47 +263,47 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __streamTouchEndHandler = function(event) {
|
var __streamTouchEndHandler = function(ev) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
__sendPlannedMove();
|
__sendPlannedMove();
|
||||||
__scroll_touch_pos = null;
|
__scroll_touch_pos = null;
|
||||||
if (event.touches.length >= 2) {
|
if (ev.touches.length >= 2) {
|
||||||
__planned_pos = null;
|
__planned_pos = null;
|
||||||
__relative_touch_pos = null;
|
__relative_touch_pos = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __getTouchPosition = function(event, index) {
|
var __getTouchPosition = function(ev, index) {
|
||||||
if (event.touches[index].target && event.touches[index].target.getBoundingClientRect) {
|
if (ev.touches[index].target && ev.touches[index].target.getBoundingClientRect) {
|
||||||
let rect = event.touches[index].target.getBoundingClientRect();
|
let rect = ev.touches[index].target.getBoundingClientRect();
|
||||||
return {
|
return {
|
||||||
"x": Math.round(event.touches[index].clientX - rect.left),
|
"x": Math.round(ev.touches[index].clientX - rect.left),
|
||||||
"y": Math.round(event.touches[index].clientY - rect.top),
|
"y": Math.round(ev.touches[index].clientY - rect.top),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
var __streamMoveHandler = function(event) {
|
var __streamMoveHandler = function(ev) {
|
||||||
if (__absolute) {
|
if (__absolute) {
|
||||||
let rect = event.target.getBoundingClientRect();
|
let rect = ev.target.getBoundingClientRect();
|
||||||
__planned_pos = {
|
__planned_pos = {
|
||||||
"x": Math.max(Math.round(event.clientX - rect.left), 0),
|
"x": Math.max(Math.round(ev.clientX - rect.left), 0),
|
||||||
"y": Math.max(Math.round(event.clientY - rect.top), 0),
|
"y": Math.max(Math.round(ev.clientY - rect.top), 0),
|
||||||
};
|
};
|
||||||
} else if (__isRelativeCaptured()) {
|
} else if (__isRelativeCaptured()) {
|
||||||
__sendOrPlanRelativeMove({
|
__sendOrPlanRelativeMove({
|
||||||
"x": event.movementX,
|
"x": ev.movementX,
|
||||||
"y": event.movementY,
|
"y": ev.movementY,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __streamScrollHandler = function(event) {
|
var __streamScrollHandler = function(ev) {
|
||||||
// https://learn.javascript.ru/mousewheel
|
// https://learn.javascript.ru/mousewheel
|
||||||
// https://stackoverflow.com/a/24595588
|
// https://stackoverflow.com/a/24595588
|
||||||
|
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
|
|
||||||
if (!__absolute && !__isRelativeCaptured()) {
|
if (!__absolute && !__isRelativeCaptured()) {
|
||||||
return;
|
return;
|
||||||
@ -311,30 +311,30 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
|
|
||||||
let delta = {"x": 0, "y": 0};
|
let delta = {"x": 0, "y": 0};
|
||||||
if ($("hid-mouse-cumulative-scrolling-switch").checked) {
|
if ($("hid-mouse-cumulative-scrolling-switch").checked) {
|
||||||
if (__scroll_delta.x && Math.sign(__scroll_delta.x) !== Math.sign(event.deltaX)) {
|
if (__scroll_delta.x && Math.sign(__scroll_delta.x) !== Math.sign(ev.deltaX)) {
|
||||||
delta.x = __scroll_delta.x;
|
delta.x = __scroll_delta.x;
|
||||||
__scroll_delta.x = 0;
|
__scroll_delta.x = 0;
|
||||||
} else {
|
} else {
|
||||||
__scroll_delta.x += event.deltaX * __scroll_fix;
|
__scroll_delta.x += ev.deltaX * __scroll_fix;
|
||||||
if (Math.abs(__scroll_delta.x) >= 100) {
|
if (Math.abs(__scroll_delta.x) >= 100) {
|
||||||
delta.x = __scroll_delta.x;
|
delta.x = __scroll_delta.x;
|
||||||
__scroll_delta.x = 0;
|
__scroll_delta.x = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__scroll_delta.y && Math.sign(__scroll_delta.y) !== Math.sign(event.deltaY)) {
|
if (__scroll_delta.y && Math.sign(__scroll_delta.y) !== Math.sign(ev.deltaY)) {
|
||||||
delta.y = __scroll_delta.y;
|
delta.y = __scroll_delta.y;
|
||||||
__scroll_delta.y = 0;
|
__scroll_delta.y = 0;
|
||||||
} else {
|
} else {
|
||||||
__scroll_delta.y += event.deltaY * __scroll_fix;
|
__scroll_delta.y += ev.deltaY * __scroll_fix;
|
||||||
if (Math.abs(__scroll_delta.y) >= 100) {
|
if (Math.abs(__scroll_delta.y) >= 100) {
|
||||||
delta.y = __scroll_delta.y;
|
delta.y = __scroll_delta.y;
|
||||||
__scroll_delta.y = 0;
|
__scroll_delta.y = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
delta.x = event.deltaX;
|
delta.x = ev.deltaX;
|
||||||
delta.y = event.deltaY;
|
delta.y = ev.deltaY;
|
||||||
}
|
}
|
||||||
__sendScroll(delta);
|
__sendScroll(delta);
|
||||||
};
|
};
|
||||||
@ -400,12 +400,12 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
__sendEvent("mouse_button", {"button": button, "state": state});
|
__sendEvent("mouse_button", {"button": button, "state": state});
|
||||||
};
|
};
|
||||||
|
|
||||||
var __sendEvent = function(event_type, event) {
|
var __sendEvent = function(ev_type, ev) {
|
||||||
event = {"event_type": event_type, "event": event};
|
ev = {"event_type": ev_type, "event": ev};
|
||||||
if (__ws && !$("hid-mute-switch").checked) {
|
if (__ws && !$("hid-mute-switch").checked) {
|
||||||
__ws.sendHidEvent(event);
|
__ws.sendHidEvent(ev);
|
||||||
}
|
}
|
||||||
__recordWsEvent(event);
|
__recordWsEvent(ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
__init__();
|
__init__();
|
||||||
|
|||||||
@ -53,14 +53,14 @@ export function Ocr(__getGeometry) {
|
|||||||
$("stream-ocr-window").addEventListener("resize", __resetSelection);
|
$("stream-ocr-window").addEventListener("resize", __resetSelection);
|
||||||
$("stream-ocr-window").close_hook = __resetSelection;
|
$("stream-ocr-window").close_hook = __resetSelection;
|
||||||
|
|
||||||
$("stream-ocr-window").onkeyup = function(event) {
|
$("stream-ocr-window").onkeyup = function(ev) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
if (event.code === "Enter") {
|
if (ev.code === "Enter") {
|
||||||
if (__sel) {
|
if (__sel) {
|
||||||
__recognizeSelection();
|
__recognizeSelection();
|
||||||
wm.closeWindow($("stream-ocr-window"));
|
wm.closeWindow($("stream-ocr-window"));
|
||||||
}
|
}
|
||||||
} else if (event.code === "Escape") {
|
} else if (ev.code === "Escape") {
|
||||||
wm.closeWindow($("stream-ocr-window"));
|
wm.closeWindow($("stream-ocr-window"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -98,17 +98,17 @@ export function Ocr(__getGeometry) {
|
|||||||
el.value = tools.storage.get("stream.ocr.lang", langs["default"]);
|
el.value = tools.storage.get("stream.ocr.lang", langs["default"]);
|
||||||
};
|
};
|
||||||
|
|
||||||
var __startSelection = function(event) {
|
var __startSelection = function(ev) {
|
||||||
if (__start_pos === null) {
|
if (__start_pos === null) {
|
||||||
tools.hidden.setVisible($("stream-ocr-selection"), false);
|
tools.hidden.setVisible($("stream-ocr-selection"), false);
|
||||||
__start_pos = __getGlobalPosition(event);
|
__start_pos = __getGlobalPosition(ev);
|
||||||
__end_pos = null;
|
__end_pos = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __changeSelection = function(event) {
|
var __changeSelection = function(ev) {
|
||||||
if (__start_pos !== null) {
|
if (__start_pos !== null) {
|
||||||
__end_pos = __getGlobalPosition(event);
|
__end_pos = __getGlobalPosition(ev);
|
||||||
let width = Math.abs(__start_pos.x - __end_pos.x);
|
let width = Math.abs(__start_pos.x - __end_pos.x);
|
||||||
let height = Math.abs(__start_pos.y - __end_pos.y);
|
let height = Math.abs(__start_pos.y - __end_pos.y);
|
||||||
let el = $("stream-ocr-selection");
|
let el = $("stream-ocr-selection");
|
||||||
@ -120,8 +120,8 @@ export function Ocr(__getGeometry) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __endSelection = function(event) {
|
var __endSelection = function(ev) {
|
||||||
__changeSelection(event);
|
__changeSelection(ev);
|
||||||
let el = $("stream-ocr-selection");
|
let el = $("stream-ocr-selection");
|
||||||
let ok = (
|
let ok = (
|
||||||
el.offsetWidth > 1 && el.offsetHeight > 1
|
el.offsetWidth > 1 && el.offsetHeight > 1
|
||||||
@ -149,13 +149,13 @@ export function Ocr(__getGeometry) {
|
|||||||
__end_pos = null;
|
__end_pos = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
var __getGlobalPosition = function(event) {
|
var __getGlobalPosition = function(ev) {
|
||||||
let rect = $("stream-box").getBoundingClientRect();
|
let rect = $("stream-box").getBoundingClientRect();
|
||||||
let geo = __getGeometry();
|
let geo = __getGeometry();
|
||||||
let offset = __getNavbarOffset();
|
let offset = __getNavbarOffset();
|
||||||
return {
|
return {
|
||||||
"x": Math.min(Math.max(event.clientX, rect.left + geo.x), rect.right - geo.x),
|
"x": Math.min(Math.max(ev.clientX, rect.left + geo.x), rect.right - geo.x),
|
||||||
"y": Math.min(Math.max(event.clientY - offset, rect.top + geo.y - offset), rect.bottom - geo.y - offset),
|
"y": Math.min(Math.max(ev.clientY - offset, rect.top + geo.y - offset), rect.bottom - geo.y - offset),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -33,8 +33,8 @@ export function Paste(__recorder) {
|
|||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
var __init__ = function() {
|
var __init__ = function() {
|
||||||
$("hid-pak-text").addEventListener("keyup", function(event) {
|
$("hid-pak-text").addEventListener("keyup", function(ev) {
|
||||||
if (event.ctrlKey && event.code == "Enter") {
|
if (ev.ctrlKey && ev.code == "Enter") {
|
||||||
$("hid-pak-button").click();
|
$("hid-pak-button").click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -63,8 +63,8 @@ export function Recorder() {
|
|||||||
__refresh();
|
__refresh();
|
||||||
};
|
};
|
||||||
|
|
||||||
self.recordWsEvent = function(event) {
|
self.recordWsEvent = function(ev) {
|
||||||
__recordEvent(event);
|
__recordEvent(ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
self.recordPrintEvent = function(text, keymap, slow) {
|
self.recordPrintEvent = function(text, keymap, slow) {
|
||||||
@ -83,7 +83,7 @@ export function Recorder() {
|
|||||||
__recordEvent({"event_type": "gpio_pulse", "event": {"channel": channel}});
|
__recordEvent({"event_type": "gpio_pulse", "event": {"channel": channel}});
|
||||||
};
|
};
|
||||||
|
|
||||||
var __recordEvent = function(event) {
|
var __recordEvent = function(ev) {
|
||||||
if (__recording) {
|
if (__recording) {
|
||||||
let now = new Date().getTime();
|
let now = new Date().getTime();
|
||||||
if (__last_event_ts) {
|
if (__last_event_ts) {
|
||||||
@ -92,7 +92,7 @@ export function Recorder() {
|
|||||||
__events_time += delay;
|
__events_time += delay;
|
||||||
}
|
}
|
||||||
__last_event_ts = now;
|
__last_event_ts = now;
|
||||||
__events.push(event);
|
__events.push(ev);
|
||||||
__setCounters(__events.length, __events_time);
|
__setCounters(__events.length, __events_time);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -149,73 +149,73 @@ export function Recorder() {
|
|||||||
let raw_events = JSON.parse(reader.result);
|
let raw_events = JSON.parse(reader.result);
|
||||||
__checkType(raw_events, "object", "Base of script is not an objects list");
|
__checkType(raw_events, "object", "Base of script is not an objects list");
|
||||||
|
|
||||||
for (let event of raw_events) {
|
for (let ev of raw_events) {
|
||||||
__checkType(event, "object", "Non-dict event");
|
__checkType(ev, "object", "Non-dict event");
|
||||||
__checkType(event.event, "object", "Non-dict event");
|
__checkType(ev.event, "object", "Non-dict event");
|
||||||
|
|
||||||
if (event.event_type === "delay") {
|
if (ev.event_type === "delay") {
|
||||||
__checkUnsigned(event.event.millis, "Non-unsigned delay");
|
__checkUnsigned(ev.event.millis, "Non-unsigned delay");
|
||||||
events_time += event.event.millis;
|
events_time += ev.event.millis;
|
||||||
|
|
||||||
} else if (event.event_type === "print") {
|
} else if (ev.event_type === "print") {
|
||||||
__checkType(event.event.text, "string", "Non-string print text");
|
__checkType(ev.event.text, "string", "Non-string print text");
|
||||||
if (event.event.keymap !== undefined) {
|
if (ev.event.keymap !== undefined) {
|
||||||
__checkType(event.event.keymap, "string", "Non-string keymap");
|
__checkType(ev.event.keymap, "string", "Non-string keymap");
|
||||||
}
|
}
|
||||||
if (event.event.slow !== undefined) {
|
if (ev.event.slow !== undefined) {
|
||||||
__checkType(event.event.slow, "boolean", "Non-bool slow");
|
__checkType(ev.event.slow, "boolean", "Non-bool slow");
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (event.event_type === "key") {
|
} else if (ev.event_type === "key") {
|
||||||
__checkType(event.event.key, "string", "Non-string key code");
|
__checkType(ev.event.key, "string", "Non-string key code");
|
||||||
__checkType(event.event.state, "boolean", "Non-bool key state");
|
__checkType(ev.event.state, "boolean", "Non-bool key state");
|
||||||
|
|
||||||
} else if (event.event_type === "mouse_button") {
|
} else if (ev.event_type === "mouse_button") {
|
||||||
__checkType(event.event.button, "string", "Non-string mouse button code");
|
__checkType(ev.event.button, "string", "Non-string mouse button code");
|
||||||
__checkType(event.event.state, "boolean", "Non-bool mouse button state");
|
__checkType(ev.event.state, "boolean", "Non-bool mouse button state");
|
||||||
|
|
||||||
} else if (event.event_type === "mouse_move") {
|
} else if (ev.event_type === "mouse_move") {
|
||||||
__checkType(event.event.to, "object", "Non-object mouse move target");
|
__checkType(ev.event.to, "object", "Non-object mouse move target");
|
||||||
__checkInt(event.event.to.x, "Non-int mouse move X");
|
__checkInt(ev.event.to.x, "Non-int mouse move X");
|
||||||
__checkInt(event.event.to.y, "Non-int mouse move Y");
|
__checkInt(ev.event.to.y, "Non-int mouse move Y");
|
||||||
|
|
||||||
} else if (event.event_type === "mouse_relative") {
|
} else if (ev.event_type === "mouse_relative") {
|
||||||
__checkMouseRelativeDelta(event.event.delta);
|
__checkMouseRelativeDelta(ev.event.delta);
|
||||||
__checkType(event.event.squash, "boolean", "Non-boolean squash");
|
__checkType(ev.event.squash, "boolean", "Non-boolean squash");
|
||||||
|
|
||||||
} else if (event.event_type === "mouse_wheel") {
|
} else if (ev.event_type === "mouse_wheel") {
|
||||||
__checkType(event.event.delta, "object", "Non-object mouse wheel delta");
|
__checkType(ev.event.delta, "object", "Non-object mouse wheel delta");
|
||||||
__checkInt(event.event.delta.x, "Non-int mouse delta X");
|
__checkInt(ev.event.delta.x, "Non-int mouse delta X");
|
||||||
__checkInt(event.event.delta.y, "Non-int mouse delta Y");
|
__checkInt(ev.event.delta.y, "Non-int mouse delta Y");
|
||||||
|
|
||||||
} else if (event.event_type === "atx_button") {
|
} else if (ev.event_type === "atx_button") {
|
||||||
__checkType(event.event.button, "string", "Non-string ATX button");
|
__checkType(ev.event.button, "string", "Non-string ATX button");
|
||||||
|
|
||||||
} else if (event.event_type === "gpio_switch") {
|
} else if (ev.event_type === "gpio_switch") {
|
||||||
__checkType(event.event.channel, "string", "Non-string GPIO channel");
|
__checkType(ev.event.channel, "string", "Non-string GPIO channel");
|
||||||
__checkType(event.event.state, "boolean", "Non-bool GPIO state");
|
__checkType(ev.event.state, "boolean", "Non-bool GPIO state");
|
||||||
|
|
||||||
} else if (event.event_type === "gpio_pulse") {
|
} else if (ev.event_type === "gpio_pulse") {
|
||||||
__checkType(event.event.channel, "string", "Non-string GPIO channel");
|
__checkType(ev.event.channel, "string", "Non-string GPIO channel");
|
||||||
|
|
||||||
} else if (event.event_type === "delay_random") {
|
} else if (ev.event_type === "delay_random") {
|
||||||
__checkType(event.event.range, "object", "Non-object random delay range");
|
__checkType(ev.event.range, "object", "Non-object random delay range");
|
||||||
__checkUnsigned(event.event.range.min, "Non-unsigned random delay range min");
|
__checkUnsigned(ev.event.range.min, "Non-unsigned random delay range min");
|
||||||
__checkUnsigned(event.event.range.max, "Non-unsigned random delay range max");
|
__checkUnsigned(ev.event.range.max, "Non-unsigned random delay range max");
|
||||||
__checkRangeMinMax(event.event.range, "Invalid random delay range");
|
__checkRangeMinMax(ev.event.range, "Invalid random delay range");
|
||||||
events_time += event.event.range.max;
|
events_time += ev.event.range.max;
|
||||||
|
|
||||||
} else if (event.event_type === "mouse_move_random") { // Hack for pikvm/pikvm#1041
|
} else if (ev.event_type === "mouse_move_random") { // Hack for pikvm/pikvm#1041
|
||||||
__checkType(event.event.range, "object", "Non-object random mouse move range");
|
__checkType(ev.event.range, "object", "Non-object random mouse move range");
|
||||||
__checkInt(event.event.range.min, "Non-int random mouse move range min");
|
__checkInt(ev.event.range.min, "Non-int random mouse move range min");
|
||||||
__checkInt(event.event.range.max, "Non-int random mouse move range max");
|
__checkInt(ev.event.range.max, "Non-int random mouse move range max");
|
||||||
__checkRangeMinMax(event.event.range, "Invalid random mouse move range");
|
__checkRangeMinMax(ev.event.range, "Invalid random mouse move range");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
throw `Unknown event type: ${event.event_type}`;
|
throw `Unknown event type: ${ev.event_type}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
events.push(event);
|
events.push(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
__events = events;
|
__events = events;
|
||||||
@ -274,24 +274,24 @@ export function Recorder() {
|
|||||||
var __runEvents = function(index, time=0) {
|
var __runEvents = function(index, time=0) {
|
||||||
while (index < __events.length) {
|
while (index < __events.length) {
|
||||||
__setCounters(__events.length - index + 1, __events_time - time);
|
__setCounters(__events.length - index + 1, __events_time - time);
|
||||||
let event = __events[index];
|
let ev = __events[index];
|
||||||
|
|
||||||
if (["delay", "delay_random"].includes(event.event_type)) {
|
if (["delay", "delay_random"].includes(ev.event_type)) {
|
||||||
let millis = (
|
let millis = (
|
||||||
event.event_type === "delay"
|
ev.event_type === "delay"
|
||||||
? event.event.millis
|
? ev.event.millis
|
||||||
: tools.getRandomInt(event.event.range.min, event.event.range.max)
|
: tools.getRandomInt(ev.event.range.min, ev.event.range.max)
|
||||||
);
|
);
|
||||||
__play_timer = setTimeout(() => __runEvents(index + 1, time + millis), millis);
|
__play_timer = setTimeout(() => __runEvents(index + 1, time + millis), millis);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} else if (event.event_type === "print") {
|
} else if (ev.event_type === "print") {
|
||||||
let params = {"limit": 0};
|
let params = {"limit": 0};
|
||||||
if (event.event.keymap !== undefined) {
|
if (ev.event.keymap !== undefined) {
|
||||||
params["keymap"] = event.event.keymap;
|
params["keymap"] = ev.event.keymap;
|
||||||
}
|
}
|
||||||
if (event.event.slow !== undefined) {
|
if (ev.event.slow !== undefined) {
|
||||||
params["slow"] = event.event.slow;
|
params["slow"] = ev.event.slow;
|
||||||
}
|
}
|
||||||
tools.httpPost("api/hid/print", params, function(http) {
|
tools.httpPost("api/hid/print", params, function(http) {
|
||||||
if (http.status === 413) {
|
if (http.status === 413) {
|
||||||
@ -303,11 +303,11 @@ export function Recorder() {
|
|||||||
} else if (http.status === 200) {
|
} else if (http.status === 200) {
|
||||||
__play_timer = setTimeout(() => __runEvents(index + 1, time), 0);
|
__play_timer = setTimeout(() => __runEvents(index + 1, time), 0);
|
||||||
}
|
}
|
||||||
}, event.event.text, "text/plain");
|
}, ev.event.text, "text/plain");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} else if (event.event_type === "atx_button") {
|
} else if (ev.event_type === "atx_button") {
|
||||||
tools.httpPost("api/atx/click", {"button": event.event.button}, function(http) {
|
tools.httpPost("api/atx/click", {"button": ev.event.button}, function(http) {
|
||||||
if (http.status !== 200) {
|
if (http.status !== 200) {
|
||||||
wm.error("ATX error", http.responseText);
|
wm.error("ATX error", http.responseText);
|
||||||
__stopProcess();
|
__stopProcess();
|
||||||
@ -317,12 +317,12 @@ export function Recorder() {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} else if (["gpio_switch", "gpio_pulse"].includes(event.event_type)) {
|
} else if (["gpio_switch", "gpio_pulse"].includes(ev.event_type)) {
|
||||||
let path = "api/gpio";
|
let path = "api/gpio";
|
||||||
let params = {"channel": event.event.channel};
|
let params = {"channel": ev.event.channel};
|
||||||
if (event.event_type === "gpio_switch") {
|
if (ev.event_type === "gpio_switch") {
|
||||||
path += "/switch";
|
path += "/switch";
|
||||||
params["state"] = event.event.to;
|
params["state"] = ev.event.to;
|
||||||
} else { // gpio_pulse
|
} else { // gpio_pulse
|
||||||
path += "/pulse";
|
path += "/pulse";
|
||||||
}
|
}
|
||||||
@ -336,19 +336,19 @@ export function Recorder() {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} else if (event.event_type === "key") {
|
} else if (ev.event_type === "key") {
|
||||||
event.event.finish = $("hid-keyboard-bad-link-switch").checked;
|
ev.event.finish = $("hid-keyboard-bad-link-switch").checked;
|
||||||
__ws.sendHidEvent(event);
|
__ws.sendHidEvent(ev);
|
||||||
|
|
||||||
} else if (["mouse_button", "mouse_move", "mouse_wheel", "mouse_relative"].includes(event.event_type)) {
|
} else if (["mouse_button", "mouse_move", "mouse_wheel", "mouse_relative"].includes(ev.event_type)) {
|
||||||
__ws.sendHidEvent(event);
|
__ws.sendHidEvent(ev);
|
||||||
|
|
||||||
} else if (event.event_type === "mouse_move_random") {
|
} else if (ev.event_type === "mouse_move_random") {
|
||||||
__ws.sendHidEvent({
|
__ws.sendHidEvent({
|
||||||
"event_type": "mouse_move",
|
"event_type": "mouse_move",
|
||||||
"event": {"to": {
|
"event": {"to": {
|
||||||
"x": tools.getRandomInt(event.event.range.min, event.event.range.max),
|
"x": tools.getRandomInt(ev.event.range.min, ev.event.range.max),
|
||||||
"y": tools.getRandomInt(event.event.range.min, event.event.range.max),
|
"y": tools.getRandomInt(ev.event.range.min, ev.event.range.max),
|
||||||
}},
|
}},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,15 +72,15 @@ export function Session() {
|
|||||||
tools.httpGet("api/auth/check", null, function(http) {
|
tools.httpGet("api/auth/check", null, function(http) {
|
||||||
if (http.status === 200) {
|
if (http.status === 200) {
|
||||||
__ws = new WebSocket(tools.makeWsUrl("api/ws"));
|
__ws = new WebSocket(tools.makeWsUrl("api/ws"));
|
||||||
__ws.sendHidEvent = (event) => __sendHidEvent(__ws, event.event_type, event.event);
|
__ws.sendHidEvent = (ev) => __sendHidEvent(__ws, ev.event_type, ev.event);
|
||||||
__ws.binaryType = "arraybuffer";
|
__ws.binaryType = "arraybuffer";
|
||||||
__ws.onopen = __wsOpenHandler;
|
__ws.onopen = __wsOpenHandler;
|
||||||
__ws.onmessage = async (event) => {
|
__ws.onmessage = async (ev) => {
|
||||||
if (typeof event.data === "string") {
|
if (typeof ev.data === "string") {
|
||||||
event = JSON.parse(event.data);
|
ev = JSON.parse(ev.data);
|
||||||
__wsJsonHandler(event.event_type, event.event);
|
__wsJsonHandler(ev.event_type, ev.event);
|
||||||
} else { // Binary
|
} else { // Binary
|
||||||
__wsBinHandler(event.data);
|
__wsBinHandler(ev.data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
__ws.onerror = __wsErrorHandler;
|
__ws.onerror = __wsErrorHandler;
|
||||||
@ -96,8 +96,8 @@ export function Session() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsOpenHandler = function(event) {
|
var __wsOpenHandler = function(ev) {
|
||||||
tools.debug("Session: socket opened:", event);
|
tools.debug("Session: socket opened:", ev);
|
||||||
$("link-led").className = "led-green";
|
$("link-led").className = "led-green";
|
||||||
$("link-led").title = "Connected";
|
$("link-led").title = "Connected";
|
||||||
__recorder.setSocket(__ws);
|
__recorder.setSocket(__ws);
|
||||||
@ -113,36 +113,36 @@ export function Session() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsJsonHandler = function(event_type, event) {
|
var __wsJsonHandler = function(ev_type, ev) {
|
||||||
switch (event_type) {
|
switch (ev_type) {
|
||||||
case "info": __info.setState(event); break;
|
case "info": __info.setState(ev); break;
|
||||||
case "gpio": __gpio.setState(event); break;
|
case "gpio": __gpio.setState(ev); break;
|
||||||
case "hid": __hid.setState(event); break;
|
case "hid": __hid.setState(ev); break;
|
||||||
case "hid_keymaps": __paste.setState(event); break;
|
case "hid_keymaps": __paste.setState(ev); break;
|
||||||
case "atx": __atx.setState(event); break;
|
case "atx": __atx.setState(ev); break;
|
||||||
case "streamer": __streamer.setState(event); break;
|
case "streamer": __streamer.setState(ev); break;
|
||||||
case "ocr": __ocr.setState(event); break;
|
case "ocr": __ocr.setState(ev); break;
|
||||||
|
|
||||||
case "msd":
|
case "msd":
|
||||||
if (event.online === false) {
|
if (ev.online === false) {
|
||||||
__switch.setMsdConnected(false);
|
__switch.setMsdConnected(false);
|
||||||
} else if (event.drive !== undefined) {
|
} else if (ev.drive !== undefined) {
|
||||||
__switch.setMsdConnected(event.drive.connected);
|
__switch.setMsdConnected(ev.drive.connected);
|
||||||
}
|
}
|
||||||
__msd.setState(event);
|
__msd.setState(ev);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "switch":
|
case "switch":
|
||||||
if (event.model) {
|
if (ev.model) {
|
||||||
__atx.setHasSwitch(event.model.ports.length > 0);
|
__atx.setHasSwitch(ev.model.ports.length > 0);
|
||||||
}
|
}
|
||||||
__switch.setState(event);
|
__switch.setState(ev);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsErrorHandler = function(event) {
|
var __wsErrorHandler = function(ev) {
|
||||||
tools.error("Session: socket error:", event);
|
tools.error("Session: socket error:", ev);
|
||||||
if (__ws) {
|
if (__ws) {
|
||||||
__ws.onclose = null;
|
__ws.onclose = null;
|
||||||
__ws.close();
|
__ws.close();
|
||||||
@ -150,8 +150,8 @@ export function Session() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsCloseHandler = function(event) {
|
var __wsCloseHandler = function(ev) {
|
||||||
tools.debug("Session: socket closed:", event);
|
tools.debug("Session: socket closed:", ev);
|
||||||
$("link-led").className = "led-gray";
|
$("link-led").className = "led-gray";
|
||||||
|
|
||||||
if (__ping_timer) {
|
if (__ping_timer) {
|
||||||
@ -190,43 +190,43 @@ export function Session() {
|
|||||||
|
|
||||||
var __ascii_encoder = new TextEncoder("ascii");
|
var __ascii_encoder = new TextEncoder("ascii");
|
||||||
|
|
||||||
var __sendHidEvent = function(ws, event_type, event) {
|
var __sendHidEvent = function(ws, ev_type, ev) {
|
||||||
if (event_type === "key") {
|
if (ev_type === "key") {
|
||||||
let data = __ascii_encoder.encode("\x01\x00" + event.key);
|
let data = __ascii_encoder.encode("\x01\x00" + ev.key);
|
||||||
data[1] = (event.state ? 1 : 0);
|
data[1] = (ev.state ? 1 : 0);
|
||||||
if (event.finish === true) { // Optional
|
if (ev.finish === true) { // Optional
|
||||||
data[1] |= 0x02;
|
data[1] |= 0x02;
|
||||||
}
|
}
|
||||||
ws.send(data);
|
ws.send(data);
|
||||||
|
|
||||||
} else if (event_type === "mouse_button") {
|
} else if (ev_type === "mouse_button") {
|
||||||
let data = __ascii_encoder.encode("\x02\x00" + event.button);
|
let data = __ascii_encoder.encode("\x02\x00" + ev.button);
|
||||||
data[1] = (event.state ? 1 : 0);
|
data[1] = (ev.state ? 1 : 0);
|
||||||
ws.send(data);
|
ws.send(data);
|
||||||
|
|
||||||
} else if (event_type === "mouse_move") {
|
} else if (ev_type === "mouse_move") {
|
||||||
let data = new Uint8Array([
|
let data = new Uint8Array([
|
||||||
3,
|
3,
|
||||||
(event.to.x >> 8) & 0xFF, event.to.x & 0xFF,
|
(ev.to.x >> 8) & 0xFF, ev.to.x & 0xFF,
|
||||||
(event.to.y >> 8) & 0xFF, event.to.y & 0xFF,
|
(ev.to.y >> 8) & 0xFF, ev.to.y & 0xFF,
|
||||||
]);
|
]);
|
||||||
ws.send(data);
|
ws.send(data);
|
||||||
|
|
||||||
} else if (event_type === "mouse_relative" || event_type === "mouse_wheel") {
|
} else if (ev_type === "mouse_relative" || ev_type === "mouse_wheel") {
|
||||||
let data;
|
let data;
|
||||||
if (Array.isArray(event.delta)) {
|
if (Array.isArray(ev.delta)) {
|
||||||
data = new Int8Array(2 + event.delta.length * 2);
|
data = new Int8Array(2 + ev.delta.length * 2);
|
||||||
let index = 0;
|
let index = 0;
|
||||||
for (let delta of event.delta) {
|
for (let delta of ev.delta) {
|
||||||
data[index + 2] = delta["x"];
|
data[index + 2] = delta["x"];
|
||||||
data[index + 3] = delta["y"];
|
data[index + 3] = delta["y"];
|
||||||
index += 2;
|
index += 2;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
data = new Int8Array([0, 0, event.delta.x, event.delta.y]);
|
data = new Int8Array([0, 0, ev.delta.x, ev.delta.y]);
|
||||||
}
|
}
|
||||||
data[0] = (event_type === "mouse_relative" ? 4 : 5);
|
data[0] = (ev_type === "mouse_relative" ? 4 : 5);
|
||||||
data[1] = (event.squash ? 1 : 0);
|
data[1] = (ev.squash ? 1 : 0);
|
||||||
ws.send(data);
|
ws.send(data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -87,13 +87,13 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
|
|||||||
__ws.onopen = __wsOpenHandler;
|
__ws.onopen = __wsOpenHandler;
|
||||||
__ws.onerror = __wsErrorHandler;
|
__ws.onerror = __wsErrorHandler;
|
||||||
__ws.onclose = __wsCloseHandler;
|
__ws.onclose = __wsCloseHandler;
|
||||||
__ws.onmessage = async (event) => {
|
__ws.onmessage = async (ev) => {
|
||||||
try {
|
try {
|
||||||
if (typeof event.data === "string") {
|
if (typeof ev.data === "string") {
|
||||||
event = JSON.parse(event.data);
|
ev = JSON.parse(ev.data);
|
||||||
__wsJsonHandler(event.event_type, event.event);
|
__wsJsonHandler(ev.event_type, ev.event);
|
||||||
} else { // Binary
|
} else { // Binary
|
||||||
await __wsBinHandler(event.data);
|
await __wsBinHandler(ev.data);
|
||||||
}
|
}
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
__wsErrorHandler(ex);
|
__wsErrorHandler(ex);
|
||||||
@ -102,8 +102,8 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsOpenHandler = function(event) {
|
var __wsOpenHandler = function(ev) {
|
||||||
__logInfo("Socket opened:", event);
|
__logInfo("Socket opened:", ev);
|
||||||
__missed_heartbeats = 0;
|
__missed_heartbeats = 0;
|
||||||
__ping_timer = setInterval(__ping, 1000);
|
__ping_timer = setInterval(__ping, 1000);
|
||||||
};
|
};
|
||||||
@ -136,14 +136,14 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
|
|||||||
__setInactive();
|
__setInactive();
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsErrorHandler = function(event) {
|
var __wsErrorHandler = function(ev) {
|
||||||
__logInfo("Socket error:", event);
|
__logInfo("Socket error:", ev);
|
||||||
__setInfo(false, false, event);
|
__setInfo(false, false, ev);
|
||||||
__wsForceClose();
|
__wsForceClose();
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsCloseHandler = function(event) {
|
var __wsCloseHandler = function(ev) {
|
||||||
__logInfo("Socket closed:", event);
|
__logInfo("Socket closed:", ev);
|
||||||
if (__ping_timer) {
|
if (__ping_timer) {
|
||||||
clearInterval(__ping_timer);
|
clearInterval(__ping_timer);
|
||||||
__ping_timer = null;
|
__ping_timer = null;
|
||||||
@ -157,9 +157,9 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __wsJsonHandler = function(event_type, event) {
|
var __wsJsonHandler = function(ev_type, ev) {
|
||||||
if (event_type === "media") {
|
if (ev_type === "media") {
|
||||||
__setupCodec(event.video);
|
__setupCodec(ev.video);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -40,9 +40,9 @@ export function main() {
|
|||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
tools.el.setOnClick($("login-button"), __login);
|
tools.el.setOnClick($("login-button"), __login);
|
||||||
$("user-input").onkeyup = $("passwd-input").onkeyup = $("code-input").onkeyup = function(event) {
|
$("user-input").onkeyup = $("passwd-input").onkeyup = $("code-input").onkeyup = function(ev) {
|
||||||
if (event.code === "Enter") {
|
if (ev.code === "Enter") {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
$("login-button").click();
|
$("login-button").click();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -152,25 +152,25 @@ export var tools = new function() {
|
|||||||
self.el = new function() {
|
self.el = new function() {
|
||||||
return {
|
return {
|
||||||
"setOnClick": function(el, callback, prevent_default=true) {
|
"setOnClick": function(el, callback, prevent_default=true) {
|
||||||
el.onclick = el.ontouchend = function(event) {
|
el.onclick = el.ontouchend = function(ev) {
|
||||||
if (prevent_default) {
|
if (prevent_default) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
"setOnDown": function(el, callback, prevent_default=true) {
|
"setOnDown": function(el, callback, prevent_default=true) {
|
||||||
el.onmousedown = el.ontouchstart = function(event) {
|
el.onmousedown = el.ontouchstart = function(ev) {
|
||||||
if (prevent_default) {
|
if (prevent_default) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
"setOnUp": function(el, callback, prevent_default=true) {
|
"setOnUp": function(el, callback, prevent_default=true) {
|
||||||
el.onmouseup = el.ontouchend = function(event) {
|
el.onmouseup = el.ontouchend = function(ev) {
|
||||||
if (prevent_default) {
|
if (prevent_default) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
};
|
};
|
||||||
@ -210,9 +210,9 @@ export var tools = new function() {
|
|||||||
el.__pressed = true;
|
el.__pressed = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
el.onmouseup = el.ontouchend = function(event) {
|
el.onmouseup = el.ontouchend = function(ev) {
|
||||||
let value = self.slider.getValue(el);
|
let value = self.slider.getValue(el);
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
clear_timer();
|
clear_timer();
|
||||||
el.__execution_timer = setTimeout(function() {
|
el.__execution_timer = setTimeout(function() {
|
||||||
el.__pressed = false;
|
el.__pressed = false;
|
||||||
|
|||||||
@ -145,8 +145,8 @@ function __WindowManager() {
|
|||||||
window.addEventListener("mouseup", __globalMouseButtonHandler);
|
window.addEventListener("mouseup", __globalMouseButtonHandler);
|
||||||
window.addEventListener("touchend", __globalMouseButtonHandler);
|
window.addEventListener("touchend", __globalMouseButtonHandler);
|
||||||
|
|
||||||
window.addEventListener("focusin", (event) => __focusInOut(event.target, true));
|
window.addEventListener("focusin", (ev) => __focusInOut(ev.target, true));
|
||||||
window.addEventListener("focusout", (event) => __focusInOut(event.target, false));
|
window.addEventListener("focusout", (ev) => __focusInOut(ev.target, false));
|
||||||
|
|
||||||
// Окна с iframe нуждаются в особенной логике для подсветки,
|
// Окна с iframe нуждаются в особенной логике для подсветки,
|
||||||
// потому что из iframe не приходят события фокуса.
|
// потому что из iframe не приходят события фокуса.
|
||||||
@ -183,9 +183,9 @@ function __WindowManager() {
|
|||||||
|
|
||||||
document.addEventListener("fullscreenchange", __onFullScreenChange);
|
document.addEventListener("fullscreenchange", __onFullScreenChange);
|
||||||
|
|
||||||
document.addEventListener("keyup", function(event) {
|
document.addEventListener("keyup", function(ev) {
|
||||||
if (__catch_menu_esc && event.code === "Escape") {
|
if (__catch_menu_esc && ev.code === "Escape") {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
__closeAllMenues();
|
__closeAllMenues();
|
||||||
__activateLastWindow();
|
__activateLastWindow();
|
||||||
}
|
}
|
||||||
@ -302,11 +302,11 @@ function __WindowManager() {
|
|||||||
el_cancel_bt.className = "row50";
|
el_cancel_bt.className = "row50";
|
||||||
}
|
}
|
||||||
|
|
||||||
el_win.addEventListener("keyup", function (event) {
|
el_win.addEventListener("keyup", function (ev) {
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
if (ok && event.code === "Enter") {
|
if (ok && ev.code === "Enter") {
|
||||||
el_ok_bt.click();
|
el_ok_bt.click();
|
||||||
} else if (cancel && event.code === "Escape") {
|
} else if (cancel && ev.code === "Escape") {
|
||||||
el_cancel_bt.click();
|
el_cancel_bt.click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -464,13 +464,13 @@ function __WindowManager() {
|
|||||||
return el_parent;
|
return el_parent;
|
||||||
};
|
};
|
||||||
|
|
||||||
var __globalMouseButtonHandler = function(event) {
|
var __globalMouseButtonHandler = function(ev) {
|
||||||
if (
|
if (
|
||||||
event.target.closest
|
ev.target.closest
|
||||||
&& !event.target.closest(".menu-button")
|
&& !ev.target.closest(".menu-button")
|
||||||
&& !event.target.closest(".modal")
|
&& !ev.target.closest(".modal")
|
||||||
) {
|
) {
|
||||||
for (let el = event.target; el && el !== document; el = el.parentNode) {
|
for (let el = ev.target; el && el !== document; el = el.parentNode) {
|
||||||
if (el.classList.contains("menu")) {
|
if (el.classList.contains("menu")) {
|
||||||
return;
|
return;
|
||||||
} else if (el.hasAttribute("data-force-hide-menu")) {
|
} else if (el.hasAttribute("data-force-hide-menu")) {
|
||||||
@ -607,41 +607,41 @@ function __WindowManager() {
|
|||||||
let prev_pos = {"x": 0, "y": 0};
|
let prev_pos = {"x": 0, "y": 0};
|
||||||
let moving = false;
|
let moving = false;
|
||||||
|
|
||||||
function startMoving(event) {
|
function startMoving(ev) {
|
||||||
// При перетаскивании resizable-окна за правый кран экрана оно ужимается.
|
// При перетаскивании resizable-окна за правый кран экрана оно ужимается.
|
||||||
// Этот костыль фиксит это.
|
// Этот костыль фиксит это.
|
||||||
el_win.style.width = el_win.offsetWidth + "px";
|
el_win.style.width = el_win.offsetWidth + "px";
|
||||||
|
|
||||||
__closeAllMenues();
|
__closeAllMenues();
|
||||||
__activateWindow(el_win);
|
__activateWindow(el_win);
|
||||||
event = (event || window.event);
|
ev = (ev || window.ev);
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
|
|
||||||
if (!event.touches || event.touches.length === 1) {
|
if (!ev.touches || ev.touches.length === 1) {
|
||||||
el_header.classList.add("window-header-grabbed");
|
el_header.classList.add("window-header-grabbed");
|
||||||
prev_pos = getEventPosition(event);
|
prev_pos = getEventPosition(ev);
|
||||||
moving = true;
|
moving = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function doMoving(event) {
|
function doMoving(ev) {
|
||||||
if (!moving) {
|
if (!moving) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
el_win.removeAttribute("data-centered");
|
el_win.removeAttribute("data-centered");
|
||||||
|
|
||||||
event = (event || window.event);
|
ev = (ev || window.ev);
|
||||||
event.preventDefault();
|
ev.preventDefault();
|
||||||
|
|
||||||
let event_pos = getEventPosition(event);
|
let ev_pos = getEventPosition(ev);
|
||||||
let x = prev_pos.x - event_pos.x;
|
let x = prev_pos.x - ev_pos.x;
|
||||||
let y = prev_pos.y - event_pos.y;
|
let y = prev_pos.y - ev_pos.y;
|
||||||
|
|
||||||
el_win.style.top = (el_win.offsetTop - y) + "px";
|
el_win.style.top = (el_win.offsetTop - y) + "px";
|
||||||
el_win.style.left = (el_win.offsetLeft - x) + "px";
|
el_win.style.left = (el_win.offsetLeft - x) + "px";
|
||||||
|
|
||||||
prev_pos = event_pos;
|
prev_pos = ev_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
function stopMoving() {
|
function stopMoving() {
|
||||||
@ -649,11 +649,11 @@ function __WindowManager() {
|
|||||||
moving = false;
|
moving = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEventPosition(event) {
|
function getEventPosition(ev) {
|
||||||
if (event.touches) {
|
if (ev.touches) {
|
||||||
return {"x": event.touches[0].clientX, "y": event.touches[0].clientY};
|
return {"x": ev.touches[0].clientX, "y": ev.touches[0].clientY};
|
||||||
} else {
|
} else {
|
||||||
return {"x": event.clientX, "y": event.clientY};
|
return {"x": ev.clientX, "y": ev.clientY};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,8 +672,8 @@ function __WindowManager() {
|
|||||||
el_grab.addEventListener("touchstart", startMoving);
|
el_grab.addEventListener("touchstart", startMoving);
|
||||||
};
|
};
|
||||||
|
|
||||||
var __onFullScreenChange = function(event) {
|
var __onFullScreenChange = function(ev) {
|
||||||
let el_win = event.target;
|
let el_win = ev.target;
|
||||||
if (!document.fullscreenElement) {
|
if (!document.fullscreenElement) {
|
||||||
let rect = el_win.before_full_screen;
|
let rect = el_win.before_full_screen;
|
||||||
if (rect) {
|
if (rect) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user