fix(GPClient): do not assign directly the setting object as data to an UI element

This commit is contained in:
DanyLE 2023-07-18 18:28:34 +02:00
parent 3b14ff5b9f
commit 5618965d3c
5 changed files with 19 additions and 8 deletions

View File

@ -1 +1 @@
(function(){var t,i,e;(t=class t extends this.OS.GUI.BasicDialog{constructor(){super("ClientDialog",t.scheme)}main(){var t,i,e,n;if(super.main(),e=$(this.scheme).find("input[type=text]"),this.data)for(i=0,n=e.length;i<n;i++)t=e[i],this.data[t.name]&&(t.value=this.data[t.name]);return this.find("btncancel").onbtclick=()=>this.quit(),this.find("btnok").onbtclick=i=>{var n,a,s;for(n={},a=0,s=e.length;a<s;a++){if(""===(t=e[a]).value)return this.notify(__("Please enter all the fields"));n[t.name]=t.value}return this.handle&&this.handle(n),this.quit()}}}).scheme='<afx-app-window width=\'400\' height=\'300\'>\n <afx-vbox padding="5">\n <afx-label data-height="25" text = "__(Client name)"></afx-label>\n <input type="text" name="text" data-height="30" ></input>\n <div data-height="5"></div>\n <afx-label data-height="25" text = "__(URL)"></afx-label>\n <input type="text" name="url" data-height="30" ></input>\n <div></div>\n <div data-height="35" style="text-align: right;">\n <afx-button data-id="btnok" text="__(Ok)"></afx-button>\n <afx-button data-id="btncancel" text="__(Cancel)"></afx-button>\n </div>\n </afx-vbox>\n</afx-app-window>',(i=class i extends this.OS.GUI.BasicDialog{constructor(){super("ClientListDialog",i.scheme)}main(){return super.main(),this.clist=this.find("client-list"),this.clist.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:i=>this.openDialog(new t,{title:__("Add new client")}).then(t=>(this.parent.setting.clients.push(t),this.clist.data=this.parent.setting.clients))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var i,e;if(e=this.clist.selectedItem,i=this.clist.selected,e)return this.ask({text:__("Do you realy want to delete: `{0}`",e.data.text)}).then(t=>{if(t)return this.parent.setting.clients.splice(i,1),this.clist.data=this.parent.setting.clients})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:i=>{var e;if(e=this.clist.selectedItem)return this.openDialog(new t,{title:__("Add new client"),text:e.data.text,url:e.data.url}).then(t=>{if(t)return e.data.text=t.text,e.data.url=t.url,this.clist.data=this.parent.setting.clients})}}],this.find("btnswitch").onbtclick=t=>{var i;if(i=this.clist.selectedItem)return this.parent.setting.curl=i.data.url,this.parent.setting.cname=i.data.text,this.parent.switchClient(),this.quit()},this.clist.data=this.parent.setting.clients}}).scheme='<afx-app-window width=\'400\' height=\'300\'>\n <afx-vbox padding="5">\n <afx-list-view data-id="client-list"></afx-list-view>\n <div data-height="35" style="text-align: right;">\n <afx-button text="__(Switch client)" data-id="btnswitch"></afx-button>\n <div>\n </afx-vbox>\n</afx-app-window>',(e=class extends this.OS.application.BaseApplication{constructor(t){super("GPClient",t)}main(){return this.setting.clients||(this.setting.clients=[]),this.container=this.find("container"),this.bindKey("CTRL-M",()=>this.openDialog(new i,{title:__("Client Manager")})),this.switchClient()}switchClient(){return this.setting.curl?(this.container.src=this.setting.curl,this.scheme.apptitle=this.setting.cname):this.notify(__("No client selected, manager client in menu Options > Client manager"))}menu(){return[{text:"__(Options)",nodes:[{text:"__(Client manager)",shortcut:"C-M"}],onchildselect:t=>this.openDialog(new i,{title:__("Client Manager")})}]}}).singleton=!0,this.OS.register("GPClient",e)}).call(this); (function(){var t,e,i;(t=class t extends this.OS.GUI.BasicDialog{constructor(){super("ClientDialog",t.scheme)}main(){var t,e,i,n;if(super.main(),i=$(this.scheme).find("input[type=text]"),this.data)for(e=0,n=i.length;e<n;e++)t=i[e],this.data[t.name]&&(t.value=this.data[t.name]);return this.find("btncancel").onbtclick=()=>this.quit(),this.find("btnok").onbtclick=e=>{var n,a,s;for(n={},a=0,s=i.length;a<s;a++){if(""===(t=i[a]).value)return this.notify(__("Please enter all the fields"));n[t.name]=t.value}return this.handle&&this.handle(n),this.quit()}}}).scheme='<afx-app-window width=\'400\' height=\'300\'>\n <afx-vbox padding="5">\n <afx-label data-height="25" text = "__(Client name)"></afx-label>\n <input type="text" name="text" data-height="30" ></input>\n <div data-height="5"></div>\n <afx-label data-height="25" text = "__(URL)"></afx-label>\n <input type="text" name="url" data-height="30" ></input>\n <div></div>\n <div data-height="35" style="text-align: right;">\n <afx-button data-id="btnok" text="__(Ok)"></afx-button>\n <afx-button data-id="btncancel" text="__(Cancel)"></afx-button>\n </div>\n </afx-vbox>\n</afx-app-window>',(e=class e extends this.OS.GUI.BasicDialog{constructor(){super("ClientListDialog",e.scheme)}refresh_list(){return this.clist.data=this.parent.setting.clients.map(t=>({text:t.text,url:t.url}))}main(){return super.main(),this.clist=this.find("client-list"),this.clist.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:e=>this.openDialog(new t,{title:__("Add new client")}).then(t=>(console.log(t),this.parent.setting.clients.push(t),this.clist.data=this.parent.setting.clients.map(t=>({text:t.text,url:t.url}))))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var e,i;if(i=this.clist.selectedItem,e=this.clist.selected,i)return this.ask({text:__("Do you realy want to delete: `{0}`",i.data.text)}).then(t=>{if(t)return this.parent.setting.clients.splice(e,1),this.refresh_list()})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:e=>{var i;if(i=this.clist.selectedItem)return this.openDialog(new t,{title:__("Add new client"),text:i.data.text,url:i.data.url}).then(t=>{if(t)return i.data.text=t.text,i.data.url=t.url,this.refresh_list()})}}],this.find("btnswitch").onbtclick=t=>{var e;if(e=this.clist.selectedItem)return this.parent.setting.curl=e.data.url,this.parent.setting.cname=e.data.text,this.parent.switchClient(),this.quit()},this.refresh_list()}}).scheme='<afx-app-window width=\'400\' height=\'300\'>\n <afx-vbox padding="5">\n <afx-list-view data-id="client-list"></afx-list-view>\n <div data-height="35" style="text-align: right;">\n <afx-button text="__(Switch client)" data-id="btnswitch"></afx-button>\n <div>\n </afx-vbox>\n</afx-app-window>',(i=class extends this.OS.application.BaseApplication{constructor(t){super("GPClient",t)}main(){return this.setting.clients||(this.setting.clients=[]),this.container=this.find("container"),this.bindKey("CTRL-M",()=>this.openDialog(new e,{title:__("Client Manager")})),this.switchClient()}switchClient(){return this.setting.curl?(this.container.src=this.setting.curl,this.scheme.apptitle=this.setting.cname):this.notify(__("No client selected, manager client in menu Options > Client manager"))}menu(){return[{text:"__(Options)",nodes:[{text:"__(Client manager)",shortcut:"C-M"}],onchildselect:t=>this.openDialog(new e,{title:__("Client Manager")})}]}}).singleton=!0,this.OS.register("GPClient",i)}).call(this);

Binary file not shown.

View File

@ -43,7 +43,14 @@ ClientDialog.scheme = """
class ClientListDialog extends this.OS.GUI.BasicDialog class ClientListDialog extends this.OS.GUI.BasicDialog
constructor: () -> constructor: () ->
super "ClientListDialog", ClientListDialog.scheme super "ClientListDialog", ClientListDialog.scheme
refresh_list: () ->
@clist.data = @parent.setting.clients.map (e) =>
{
text: e.text,
url: e.url
}
main: () -> main: () ->
super.main() super.main()
@clist = @find("client-list") @clist = @find("client-list")
@ -56,9 +63,13 @@ class ClientListDialog extends this.OS.GUI.BasicDialog
title: __("Add new client") title: __("Add new client")
}) })
.then (data) => .then (data) =>
#console.log(data) console.log(data)
@parent.setting.clients.push(data) @parent.setting.clients.push(data)
@clist.data = @parent.setting.clients @clist.data = @parent.setting.clients.map (e) =>
{
text: e.text,
url: e.url
}
}, },
{ {
@ -72,7 +83,7 @@ class ClientListDialog extends this.OS.GUI.BasicDialog
.then (d) => .then (d) =>
return unless d return unless d
@parent.setting.clients.splice(index,1) @parent.setting.clients.splice(index,1)
@clist.data = @parent.setting.clients @refresh_list()
}, },
{ {
text: "", text: "",
@ -90,7 +101,7 @@ class ClientListDialog extends this.OS.GUI.BasicDialog
return unless data return unless data
item.data.text = data.text item.data.text = data.text
item.data.url = data.url item.data.url = data.url
@clist.data = @parent.setting.clients @refresh_list()
} }
] ]
@find("btnswitch").onbtclick = (e) => @find("btnswitch").onbtclick = (e) =>
@ -100,7 +111,7 @@ class ClientListDialog extends this.OS.GUI.BasicDialog
@parent.setting.cname = item.data.text @parent.setting.cname = item.data.text
@parent.switchClient() @parent.switchClient()
@quit() @quit()
@clist.data = @parent.setting.clients @refresh_list()
ClientListDialog.scheme = """ ClientListDialog.scheme = """
<afx-app-window width='400' height='300'> <afx-app-window width='400' height='300'>

Binary file not shown.

File diff suppressed because one or more lines are too long