diff --git a/src/ui/ab.js b/src/ui/ab.js
index 6b6aa0ca7..646b0357f 100644
--- a/src/ui/ab.js
+++ b/src/ui/ab.js
@@ -1,4 +1,4 @@
-import { handler, string2RGB, platformSvg, msgbox,translate } from "./common.js";
+import { handler, string2RGB, platformSvg, msgbox,translate,is_win,OS } from "./common.js";
import { app, formatId, createNewConnect,svg_menu } from "./index.js"; // TODO check app obj
// TODO transform
const svg_tile = ;
@@ -20,10 +20,10 @@ export function getSessionsStyle(type) {
// function stupidUpdate(me) {
// /* hidden is workaround of stupid sciter bug */
// me.hidden = true;
-// me.update();
+// me.componentUpdate();
// self.timer(60ms, function() {
// me.hidden = false;
-// me.update();
+// me.componentUpdate();
// });
// }
@@ -56,7 +56,7 @@ export class SearchBar extends Element {
onChange(v) {
this.value = v;
- this.update(); // TODO update()
+ this.componentUpdate();
this.parent.filter(v);
}
}
@@ -81,7 +81,7 @@ export class SessionStyle extends Element {
let sessionsStyle = getSessionsStyle(this.type);
handler.xcall("set_option", option, sessionsStyle == "tile" ? "list" : "tile");
//stupidUpdate(app); // seems fixed in new sciter
- app.update();
+ app.componentUpdate();
}
}
@@ -99,7 +99,7 @@ export class SessionList extends Element {
filter(v) {
this.filterPattern = v;
- this.update(); // TODO update
+ this.componentUpdate();
}
getSessions() {
@@ -117,14 +117,15 @@ export class SessionList extends Element {
let sessions = this.getSessions();
if (!sessions || sessions.length == 0) return ; // TODO property 'length' of undefined
sessions = sessions.map((x) => this.getSession(x));
- // TODO is_win
+ // TODO is_win
+ // TODO
RDP
return
);
}
- // TEST dbclick
- ["on dbclick at div.remote-session-link"](evt, me) {
+ ["on doubleclick at div.remote-session-link"](evt, me) {
createNewConnect(me.id, "connect");
}
- // TODO #menu
["on click at #menu"](_, me) {
- let id = me.parent.parent.id;
- let platform = me.parent.parent.attributes["platform"]; // TODO attributes["platform"]
- this.$("#rdp").style.setProperty("display", (platform == "Windows" && is_win) ? "block" : "none");
+ let id = me.parentElement.parentElement.id;
+ let platform = me.parentElement.parentElement.getAttribute("platform");
+ console.log("menu id,platform:",id,platform);
+ // TODO rdp
+ // this.$("#rdp").style.setProperty("display", (platform == "Windows" && is_win) ? "block" : "none");
// https://sciter.com/forums/topic/replacecustomize-context-menu/
let menu = this.$("menu#remote-context");
- menu.attributes["remote-id"] = id; // // TODO attributes["remote-id"]
+ menu.setAttribute("remote-id",id);
me.popup(menu);
}
// TODO li
["on click at menu#remote-context li"](evt, me) {
let action = me.id;
- let id = me.parent.attributes["remote-id"];
+ let id = me.parentElement.getAttribute("remote-id");
+ console.log("click li",id);
if (action == "connect") {
createNewConnect(id, "connect");
} else if (action == "transfer") {
@@ -194,7 +196,7 @@ export class SessionList extends Element {
} else if (action == "remove") {
if (!this.type) {
handler.xcall("remove_peer", id);
- app.update(); // TODO app.update()
+ app.componentUpdate();
}
} else if (action == "forget-password") {
handler.forget_password(id);
diff --git a/src/ui/index.js b/src/ui/index.js
index 933038fc9..2d9328cd6 100644
--- a/src/ui/index.js
+++ b/src/ui/index.js
@@ -4,9 +4,9 @@ if (is_osx) view.blurBehind = "light";
console.log("current platform:", OS);
// html min-width, min-height not working on mac, below works for all
-view.minSize = [500, 300]; // TODO TEST
+view.minSize = [500, 300]; // TODO not work on ubuntu
-export var app;
+export var app; // 注意判空
var tmp = handler.xcall("get_connect_status");
var connect_status = tmp[0];
var service_stopped = false;
@@ -54,6 +54,10 @@ class ConnectStatus extends Element {
// TODO** SearchBar SessionStyle sessionsStyle SessionList
// TODO @{this.sessionList} {!app.hidden && }
class RecentSessions extends Element {
+ sessionList;
+ componentDidMount(){
+ this.sessionList = this.$("#SessionList")
+ }
render() {
let sessions = handler.xcall("get_recent_sessions");
if (sessions.length == 0) return ;
@@ -62,10 +66,10 @@ class RecentSessions extends Element {
{translate("Recent Sessions")}
-
+ {!app.hidden && }
{!app.hidden && }
- {!app.hidden && }
+ {!app.hidden && }
);
}
// TODO TEST
@@ -137,7 +141,7 @@ class AudioInputs extends Element {
toggleMenuState() {
let v = this.get_value();
- for (let el in this.$$("menu#audio-input>li")) {
+ for (let el of this.$$("menu#audio-input>li")) {
let selected = el.id == v;
el.classList.toggle("selected", selected);
}
@@ -185,7 +189,7 @@ class MyIdMenu extends Element {
// TEST svg#menu // .popup()
["on click at svg#menu"](_, me) {
- audioInputMenu.update({ show: true });
+ audioInputMenu.componentUpdate({ show: true });
this.toggleMenuState();
let menu = this.$("menu#config-options");
me.popup(menu);
@@ -299,10 +303,19 @@ class MyIdMenu extends Element {
}
class App extends Element{
+ remote_id;
+ recent_sessions;
+ connect_status;
this() {
app = this;
}
+ componentDidMount(){
+ this.remote_id = this.$("#ID");
+ this.recent_sessions = this.$("#RecentSessions");
+ this.connect_status = this.$("#ConnectStatus");
+ }
+
render() {
let is_can_screen_recording = handler.xcall("is_can_screen_recording",false);
// TODO ${}
@@ -339,15 +352,15 @@ class App extends Element{
{translate('Control Remote Desktop')}
-
+
-
+
-
+
);
}
@@ -543,7 +556,7 @@ class FixWayland extends Element {
["on click at #fix-wayland"] () {
handler.xcall("fix_login_wayland");
- app.update(); //TODO app.update()
+ app.componentUpdate();
}
}
@@ -566,7 +579,7 @@ class ModifyDefaultLogin extends Element {
if (r) {
msgbox("custom-error", "Error", r);
}
- app.update(); // TODO
+ app.componentUpdate();
}
}
@@ -593,20 +606,17 @@ class PasswordEyeArea extends Element {
);
}
- // TEST
["on mouseenter"]() {
this.leaved = false;
setTimeout(()=> {
if (this.leaved) return;
- // TODO TEST input need $?
- this.input.value = handler.xcall("get_password");
+ this.$("input").value = handler.xcall("get_password");
},300);
}
- // TEST
["on mouseleave"]() {
this.leaved = true;
- this.input.value = "******";
+ this.$("input").value = "******";
}
}
@@ -618,7 +628,7 @@ class Password extends Element {
);
}
- // TEST popup
+ // TODO expecting element to popup
["on click at svg#edit"](_,me) {
let menu = this.$("menu#edit-password-context");
me.popup(menu);
@@ -626,7 +636,7 @@ class Password extends Element {
["on click at li#refresh-password"] () {
handler.xcall("update_password");
- this.update(); // TODO
+ this.componentUpdate();
}
["on click at li#set-password"] () {
@@ -647,7 +657,7 @@ class Password extends Element {
return translate("The confirmation is not identical.");
}
handler.xcall("update_password",p0);
- this.update(); // TODO
+ this.componentUpdate();
});
}
}
@@ -716,34 +726,34 @@ setInterval(() => {
let tmp = !!handler.xcall("get_option","stop-service");
if (tmp != service_stopped) {
service_stopped = tmp;
- app.connect_status.update(); // TDOD
- myIdMenu.update(); // TDOD
+ app.connect_status.componentUpdate();
+ myIdMenu.componentUpdate();
}
tmp = handler.xcall("get_connect_status");
if (tmp[0] != connect_status) {
connect_status = tmp[0];
- app.connect_status.update(); // TDOD
+ app.connect_status.componentUpdate();
}
if (tmp[1] != key_confirmed) {
key_confirmed = tmp[1];
- app.update(); // TDOD
+ app.componentUpdate();
}
if (tmp[2] && tmp[2] != my_id) {
console.log("id updated");
- app.update(); // TDOD
+ app.componentUpdate();
}
tmp = handler.xcall("get_error");
if (system_error != tmp) {
system_error = tmp;
- app.update(); // TDOD
+ app.componentUpdate();
}
tmp = handler.xcall("get_software_update_url");
if (tmp != software_update_url) {
software_update_url = tmp;
- app.update(); // TDOD
+ app.componentUpdate();
}
if (handler.xcall("recent_sessions_updated")) {
console.log("recent sessions updated");
- app.recent_sessions.update(); // TDOD
+ app.recent_sessions.componentUpdate();
}
}, 1000);