From ada4358d611a6e2b3fde3217b90b1d168fdc54b8 Mon Sep 17 00:00:00 2001 From: mrsang Date: Wed, 31 Mar 2021 23:09:40 +0200 Subject: [PATCH] Update apps categories --- About/README.md | 3 + About/build/debug/README.md | 3 + About/build/debug/package.json | 4 +- About/build/release/About.zip | Bin 2870 -> 2919 bytes About/package.json | 4 +- Archive/README.md | 3 + Archive/build/debug/README.md | 3 + Archive/build/debug/package.json | 4 +- Archive/build/release/Archive.zip | Bin 9000 -> 9045 bytes Archive/package.json | 4 +- Booklet/README.md | 2 + Booklet/build/debug/README.md | 6 +- Booklet/build/debug/package.json | 6 +- Booklet/build/release/Booklet.zip | Bin 15424 -> 15464 bytes Booklet/package.json | 6 +- Clipper/README.md | 1 + Clipper/build/debug/README.md | 1 + Clipper/build/debug/package.json | 4 +- Clipper/build/release/Clipper.zip | Bin 179123 -> 179156 bytes Clipper/package.json | 4 +- DiffEditor/build/debug/package.json | 6 +- DiffEditor/build/release/DiffEditor.zip | Bin 7305 -> 7322 bytes DiffEditor/package.json | 6 +- Docify/README.md | 1 + Docify/build/debug/README.md | 1 + Docify/build/debug/main.js | 2 +- Docify/build/debug/package.json | 6 +- Docify/build/release/Docify.zip | Bin 32752 -> 32865 bytes Docify/package.json | 6 +- Dockman/README.md | 15 + Dockman/api.lua | 141 +++++++++ Dockman/build/debug/README.md | 15 + Dockman/build/debug/api.lua | 141 +++++++++ Dockman/build/debug/main.css | 34 +++ Dockman/build/debug/main.js | 1 + Dockman/build/debug/package.json | 16 + Dockman/build/debug/scheme.html | 25 ++ Dockman/build/release/Dockman.zip | Bin 0 -> 12253 bytes Dockman/main.coffee | 283 ++++++++++++++++++ Dockman/main.css | 33 ++ Dockman/package.json | 16 + Dockman/project.json | 7 + Dockman/scheme.html | 25 ++ GPClient/README.md | 4 +- GPClient/build/debug/README.md | 4 +- GPClient/build/debug/main.js | 2 +- GPClient/build/debug/package.json | 4 +- GPClient/build/release/GPClient.zip | Bin 4656 -> 4656 bytes GPClient/package.json | 4 +- GraphEditor/README.md | 2 +- GraphEditor/build/debug/README.md | 2 +- GraphEditor/build/debug/package.json | 4 +- GraphEditor/build/release/GraphEditor.zip | Bin 796676 -> 796705 bytes GraphEditor/package.json | 4 +- LuaPlayground/README.md | 1 + LuaPlayground/build/debug/README.md | 1 + LuaPlayground/build/debug/package.json | 6 +- LuaPlayground/build/release/LuaPlayground.zip | Bin 213431 -> 213475 bytes LuaPlayground/package.json | 6 +- MarkOn/build/debug/package.json | 4 +- MarkOn/build/release/MarkOn.zip | Bin 4524 -> 4525 bytes MarkOn/package.json | 4 +- MediaPlayer/package.json | 2 +- OpenPage/build/debug/main.js | 2 +- OpenPage/build/debug/package.json | 4 +- OpenPage/build/release/OpenPage.zip | Bin 581961 -> 582052 bytes OpenPage/package.json | 4 +- RemoteCamera/README.md | 1 + RemoteCamera/build/debug/README.md | 1 + RemoteCamera/build/debug/package.json | 4 +- RemoteCamera/build/release/RemoteCamera.zip | Bin 8345 -> 8380 bytes RemoteCamera/package.json | 4 +- RemoteDesktop/README.md | 2 +- RemoteDesktop/build/debug/README.md | 6 +- RemoteDesktop/build/debug/package.json | 4 +- RemoteDesktop/build/release/RemoteDesktop.zip | Bin 301978 -> 302040 bytes RemoteDesktop/package.json | 4 +- ShowCase/build/debug/package.json | 4 +- ShowCase/build/release/ShowCase.zip | Bin 9433 -> 9435 bytes ShowCase/package.json | 4 +- SystemControl/build/debug/package.json | 4 +- SystemControl/build/release/SystemControl.zip | Bin 294512 -> 294516 bytes SystemControl/package.json | 4 +- VizApp/build/debug/package.json | 4 +- VizApp/build/release/VizApp.zip | Bin 1444320 -> 1444327 bytes VizApp/package.json | 4 +- packages.json | 74 +++-- vTerm/README.md | 1 + vTerm/build/debug/README.md | 1 + vTerm/build/debug/package.json | 4 +- vTerm/build/release/vTerm.zip | Bin 5272 -> 5306 bytes vTerm/package.json | 4 +- 92 files changed, 912 insertions(+), 124 deletions(-) create mode 100644 Dockman/README.md create mode 100644 Dockman/api.lua create mode 100644 Dockman/build/debug/README.md create mode 100644 Dockman/build/debug/api.lua create mode 100644 Dockman/build/debug/main.css create mode 100644 Dockman/build/debug/main.js create mode 100644 Dockman/build/debug/package.json create mode 100644 Dockman/build/debug/scheme.html create mode 100644 Dockman/build/release/Dockman.zip create mode 100644 Dockman/main.coffee create mode 100644 Dockman/main.css create mode 100644 Dockman/package.json create mode 100644 Dockman/project.json create mode 100644 Dockman/scheme.html diff --git a/About/README.md b/About/README.md index 291e6b3..c006e4f 100644 --- a/About/README.md +++ b/About/README.md @@ -5,6 +5,9 @@ It is used to show the change logs of the current AntOS version ## Change logs +### v0.0.7-a +* Change app category to Utility + ### v0.0.6-a * Use README page available on github diff --git a/About/build/debug/README.md b/About/build/debug/README.md index 291e6b3..c006e4f 100644 --- a/About/build/debug/README.md +++ b/About/build/debug/README.md @@ -5,6 +5,9 @@ It is used to show the change logs of the current AntOS version ## Change logs +### v0.0.7-a +* Change app category to Utility + ### v0.0.6-a * Use README page available on github diff --git a/About/build/debug/package.json b/About/build/debug/package.json index 6e634e4..9becbb0 100644 --- a/About/build/debug/package.json +++ b/About/build/debug/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.0.6-a", - "category":"Other", + "version":"0.0.7-a", + "category":"Utility", "iconclass":"fa fa-question-circle", "mimes":["none"], "locales": { diff --git a/About/build/release/About.zip b/About/build/release/About.zip index b04fdb6db904e28c34663c5433c1e0de064e77e6..15ff1e9fbaaa234cb2e751e7f00c35907a4bdc9d 100644 GIT binary patch delta 334 zcmdlc_FRlNz?+$civa|VFR9(4Gbgj8a&j}%ez4XXb_+ZA1GVm-?9Y5j7N}K8hf4tn zlwg{atdwASY*^kh1FhSv!y3#4W;C%+1v4f~aT%jIB#KMR7UVRz`9M2(zz&BI>C6la z1&PVoiRr0&S;hHz0p5&EA`EcPO+Lsa9TmXJz>u4mnFmyWCLJWW1FH;48_SAsky0o86~+n0p6@^AaPb86a~7%25bcYph;Rc delta 284 zcmaDZwoQyTz?+$civa}IY_8nMdx()2NC&;KmK674WMJ@_e1~z<#n1la*M z4QL_{*aa}cf|-G#ATc>RF+Ei;t2jR|z?+dtgaPi#AhDThv4%_x3?R%7(*&mFC-ZTO wIfG0W-0@X97bp+H+$d^Ffm(`_Gg5O?^)gCwa{|0s*+BBFKqv}y3OCpu0R3u3;s5{u diff --git a/About/package.json b/About/package.json index 6e634e4..9becbb0 100644 --- a/About/package.json +++ b/About/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.0.6-a", - "category":"Other", + "version":"0.0.7-a", + "category":"Utility", "iconclass":"fa fa-question-circle", "mimes":["none"], "locales": { diff --git a/Archive/README.md b/Archive/README.md index eb79f22..e6200e8 100644 --- a/Archive/README.md +++ b/Archive/README.md @@ -9,6 +9,9 @@ Small application for zip file manager ## Changle log +### v0.0.2-a +* Change category to utility + ### v0.0.2-a * Adapt to the new AntOS string API diff --git a/Archive/build/debug/README.md b/Archive/build/debug/README.md index eb79f22..e6200e8 100644 --- a/Archive/build/debug/README.md +++ b/Archive/build/debug/README.md @@ -9,6 +9,9 @@ Small application for zip file manager ## Changle log +### v0.0.2-a +* Change category to utility + ### v0.0.2-a * Adapt to the new AntOS string API diff --git a/Archive/build/debug/package.json b/Archive/build/debug/package.json index 96e6401..584a401 100644 --- a/Archive/build/debug/package.json +++ b/Archive/build/debug/package.json @@ -7,8 +7,8 @@ "author": "Xuan Sang LE", "email": "mrsang@lxsang.me" }, - "version":"0.0.2-a", - "category":"Other", + "version":"0.0.3-a", + "category":"Utility", "iconclass":"fa fa-archive", "mimes":["application/zip"], "locale": {} diff --git a/Archive/build/release/Archive.zip b/Archive/build/release/Archive.zip index 438422836e58407a271b03126c616bf0759a8194..0a826ba9d8042e22fe3d89964462041daee99cec 100644 GIT binary patch delta 394 zcmZ4CcGZn9z?+$civa|_FR2gO?9LL�O$U9$vFVgOPzjgK@Gh^I0k9jKsY3RE6Zk zlGOD4qDqC5e1+1I%$&@U%E>R8qj-M+b%2={6Fytm?=IJFD7o)3~{7^|MdKw#4K^BHQ+_yj<^PpH< krNF>YkeHmEn4YSaRh*v};LQp&hJk?<2t|Ra|0;rb05P~&U;qFB diff --git a/Archive/package.json b/Archive/package.json index 96e6401..584a401 100644 --- a/Archive/package.json +++ b/Archive/package.json @@ -7,8 +7,8 @@ "author": "Xuan Sang LE", "email": "mrsang@lxsang.me" }, - "version":"0.0.2-a", - "category":"Other", + "version":"0.0.3-a", + "category":"Utility", "iconclass":"fa fa-archive", "mimes":["application/zip"], "locale": {} diff --git a/Booklet/README.md b/Booklet/README.md index 63664d2..d34fb51 100644 --- a/Booklet/README.md +++ b/Booklet/README.md @@ -3,6 +3,8 @@ A back-end tool for my online document hub [https://doc.iohub.dev/antos/](https: ## Change logs +### v0.2.3-a +* Chage app category name ### v0.2.1-a * Chage libraries load order ### v0.2.1-a diff --git a/Booklet/build/debug/README.md b/Booklet/build/debug/README.md index 49427ca..d34fb51 100644 --- a/Booklet/build/debug/README.md +++ b/Booklet/build/debug/README.md @@ -1,8 +1,10 @@ # Booklet -A back-end tool for my online document hub [https://doc.iohub.dev/antos/](https://doc.iohub.dev/antos/) +A back-end tool for my online document hub [https://doc.iohub.dev/antos/](https://doc.iohub.dev/) ## Change logs +### v0.2.3-a +* Chage app category name ### v0.2.1-a * Chage libraries load order ### v0.2.1-a @@ -23,4 +25,4 @@ A back-end tool for my online document hub [https://doc.iohub.dev/antos/](https: ### v0.0.2-a * First public release -* \ No newline at end of file +* diff --git a/Booklet/build/debug/package.json b/Booklet/build/debug/package.json index 17edbcb..f282314 100644 --- a/Booklet/build/debug/package.json +++ b/Booklet/build/debug/package.json @@ -6,9 +6,9 @@ "author": "Xuan Sang LE", "email": "mrsang@lxsang.me" }, - "version":"0.2.2-a", - "category":"Other", - "iconclass":"fa fa-adn", + "version":"0.2.3-a", + "category":"Office", + "iconclass":"bi bi-journals", "dependencies": ["SimpleMDE@1.11.2-r","Katex@0.11.1-r"], "mimes":["dir"] } \ No newline at end of file diff --git a/Booklet/build/release/Booklet.zip b/Booklet/build/release/Booklet.zip index fcd8292f3e5265101a244ca4ec496a4750112ef3..919b517e7a60076dc5fa03564bc11af319a0afc9 100644 GIT binary patch delta 396 zcmX?5@uGq^z?+$civa{)FRkBv%FKh27sv>5c9_m=%*?=GJb8|B)npkH8Chf9L@q4_ z=ZwVkRE5NX0)^znlGOD4qDqCl#N5=)dM5o$5?m;T1Br=op^OAECi;ICWNtp^snYvl|rA2v(ImMHuEaREqEUn+j z+hh!)H`iD$Wn>1rbn*mi>3Wd!a}zW3^pcB<1H2iTL>S;+Lihye8%~fyIPeC#Ey&f; z#n)9YHw9fA-0?s~Ja8=_#!?mrhJwW8Y+yj>WfkY=1$b*AYy>(jNIZLrbAmAg0|>LD cXcc0c>}V|ta{nY7X~yZ3Wo+cwY^^~`0CfaoR{#J2 delta 376 zcmaD+aiD@Xz?+$civa`zoD4V1vo#s>0vSPdCz<;NnHd-aCnqshP2R`IHu(;t%w~C} zRwh&(8+kn#!5YlY{bsXeWMHtJyocp5qtWCBRx!nrjMO3}9WDhRP|8fs&r8lpEG|~E zQc6oyNK4dBOv#(Pmo=UlWbYEorHl$7d&RS-I42l0Fn};S*jWf-vVe^!SP|TDKnHRn zZpP1VaN$;}Z9@MdKLDPRRcQJ`v3 HYY-0r@ij}k diff --git a/Booklet/package.json b/Booklet/package.json index 17edbcb..f282314 100644 --- a/Booklet/package.json +++ b/Booklet/package.json @@ -6,9 +6,9 @@ "author": "Xuan Sang LE", "email": "mrsang@lxsang.me" }, - "version":"0.2.2-a", - "category":"Other", - "iconclass":"fa fa-adn", + "version":"0.2.3-a", + "category":"Office", + "iconclass":"bi bi-journals", "dependencies": ["SimpleMDE@1.11.2-r","Katex@0.11.1-r"], "mimes":["dir"] } \ No newline at end of file diff --git a/Clipper/README.md b/Clipper/README.md index e71ce42..56f00b0 100644 --- a/Clipper/README.md +++ b/Clipper/README.md @@ -6,6 +6,7 @@ Clipper use `html2canvas` to capture AntOS desktop or a specific window. It is able to crop the captured image before saving to a file ## Change logs +* v0.1.3-a change app category * v0.1.2-a use ALT-S as global shortcut for screen capture * v0.1.1-a use CTRL-S as global shortcut for screen capture * v0.1.0-a initial version diff --git a/Clipper/build/debug/README.md b/Clipper/build/debug/README.md index e71ce42..56f00b0 100644 --- a/Clipper/build/debug/README.md +++ b/Clipper/build/debug/README.md @@ -6,6 +6,7 @@ Clipper use `html2canvas` to capture AntOS desktop or a specific window. It is able to crop the captured image before saving to a file ## Change logs +* v0.1.3-a change app category * v0.1.2-a use ALT-S as global shortcut for screen capture * v0.1.1-a use CTRL-S as global shortcut for screen capture * v0.1.0-a initial version diff --git a/Clipper/build/debug/package.json b/Clipper/build/debug/package.json index e126fa2..5e04d2a 100644 --- a/Clipper/build/debug/package.json +++ b/Clipper/build/debug/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.1.2-a", - "category":"Other", + "version":"0.1.3-a", + "category":"Utility", "iconclass":"fa fa-scissors", "mimes":["none"], "locale": {} diff --git a/Clipper/build/release/Clipper.zip b/Clipper/build/release/Clipper.zip index 06d037e5a15e44eee33f611ea931cabff676eb2d..37d2e3585f96837e65c58a13e8701304d1e6131d 100644 GIT binary patch delta 416 zcmdn|o$JbXF1`S7W)?065Qth@AGG-mi#`)Ch-D;N_&(yk0ttvp?6Hq#kKgA>ccr!AIFd%#gcPUUC4~jMx7KZ6DyO|`x z&Y8}&n@P$dkd=WUH!(9$FRK{cod1ivt(ln_7(kdC#T@UMOw${8F-h2gT**8C$;?}_ m3=AO5hN7%|4iiICx?Wa6dVn`8Sc(m(!V~DM(p^9gFaQ8Qv|!%= delta 364 zcmcceoon-VF1`S7W)?065U5`LE?|4)OePIxUJ#S(o%M}wMh1rN$zDvCC)+SzVgZS6 z7Zj$>H2N6kfl_i}Nosn2QKgcVl1pk?YEFJZZfai1WCd{%k)%w8q)gqk%$!u+l+3g=5G!Z0 zt#~ZR;ElYVA|QJ6T=BEaV4H4AOIv`f&rQtC(@QQc4)A7V5@CQlDd^e5HGz6Sc@X9V zDTIR(#>xAo#T8JT33MtCTmgu2l5w(*j1<_WTxn^kP-du2S?Cr`_LPxUT`11LP@J5R bnwzSZQIeYz;LXYgGK3WfMS(`=OM`d-p$JUo delta 328 zcmbPb*=fle;LXg!#Q*|XJ}R4&m_0?9vwc)1H!=o+=#9LEjJ!ZPXxi%j+kuP>41tp$ zFy6E<(oIy-;ZgtsrR2nt)b#wKN+l~L|B{Tthis.openDialog("PromptDialog",{title:__("Owner"),label:__("Name")}).then(t=>this.parent.exec("insert",{table:"owners",data:{name:t}}).then(t=>t.error?this.error(t.error):this.owner_refresh()).catch(t=>this.error(__("Unable to insert owner: {0}",t.toString()),t))).catch(t=>this.error(t.toString(),t))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var e;if(e=this.oview.selectedItem)return this.ask({text:__("Do you realy want to delete: `{0}`",e.data.text)}).then(t=>{if(t)return this.parent.exec("delete",{table:"owners",id:parseInt(e.data.id)}).then(t=>t.error?this.error(t.error):this.owner_refresh()).catch(t=>this.error(__("Unable delete category: {0}",t.toString()),t))})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:t=>{var e;if(e=this.oview.selectedItem)return this.openDialog("PromptDialog",{title:__("Owner"),label:__("Name"),value:e.data.name}).then(t=>this.parent.exec("update",{table:"owners",data:{id:parseInt(e.data.id),name:t}}).then(t=>t.error?this.error(t.error):this.owner_refresh()).catch(t=>this.error(__("Unable to update owner: {0}",t.toString()),t))).catch(t=>this.error(t.toString()))}}],this.owner_refresh()}owner_refresh(){return this.parent.exec("fetch","owners").then(t=>{var e,i,a,r;for(e=0,i=(a=t.result).length;ethis.error(__("Unable to fetch owners: {0}",t.toString()),e))}}).scheme="\n \n \n \n",(t=class t extends this.OS.GUI.BasicDialog{constructor(){super("DocDialog",t.scheme)}main(){var t,e,i,r,n,s,h,l;for(super.main(),this.flist=this.find("file-list"),this.dlist=this.find("dlist"),this.mlist=this.find("mlist"),this.ylist=this.find("ylist"),this.olist=this.find("olist"),this.setting=this.parent.setting,this.exec=this.parent.exec,this.preview=this.parent.preview,this.exec("fetch","owners").then(t=>{var e,i,a,r,n,s,h;if(t.error)return this.error(t.error);for(e=0,a=(n=t.result).length;ethis.error(__("Unable to fetch owner list: {0}",t.toString()),t)),this.dlist.push({text:"None",value:0}),h=0,t=i=1;i<=31;t=++i)this.dlist.push({text:""+t,value:t}),this.data&&parseInt(this.data.day)===t&&(h=t);for(this.dlist.selected=h,this.mlist.push({text:"None",value:0}),h=0,t=r=1;r<=12;t=++r)this.mlist.push({text:""+t,value:t}),this.data&&parseInt(this.data.month)===t&&(h=t);for(this.mlist.selected=h,this.ylist.push({text:"None",value:0}),this.ylist.selected=0,l=n=1960,s=(new Date).getFullYear();1960<=s?n<=s:n>=s;l=1960<=s?++n:--n)this.ylist.push({text:""+l,value:l,selected:this.data&&parseInt(this.data.year)===l});if(this.flist.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:t=>this.openDialog(new a).then(t=>(t.text=t.filename,this.flist.push(t)))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var e;if(e=this.flist.selectedItem)return this.flist.delete(e)}}],this.flist.onlistselect=t=>this.parent.preview(t.data.item.data.path,this.find("preview-canvas")),this.find("btsave").onbtclick=t=>{var e,i;return(e={name:this.find("title").value.trim(),day:this.dlist.selectedItem.data.value,month:this.mlist.selectedItem.data.value,year:this.ylist.selectedItem.data.value,file:function(){var t,e,a,r;for(r=[],t=0,e=(a=this.flist.data).length;t0?(this.handle&&this.handle(e),this.quit()):this.notify(__("Please attach files to the entry")):this.notify(__("Please enter title"))},this.data)return this.find("title").value=this.data.name,this.find("note").value=this.data.note,this.find("tag").value=this.data.tags,(e=this.data.file.asFileHandle()).text=e.filename,this.flist.data=[e]}}).scheme='\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
\n \n
\n
\n
\n
',(a=class t extends this.OS.GUI.BasicDialog{constructor(){super("FilePreviewDialog",t.scheme)}main(){return super.main(),this.flist=this.find("file-list"),this.flist.buttons=[{text:"",iconclass:"fa fa-refresh",onbtclick:t=>this.refresh()}],this.flist.onlistselect=t=>this.parent.preview(t.data.item.data.path,this.find("preview-canvas")),this.find("btok").onbtclick=t=>{var e;return(e=this.flist.selectedItem)?(this.handle&&this.handle(e.data),this.quit()):this.quit()},this.refresh()}refresh(){return(this.parent.setting.docpath+"/unclassified").asFileHandle().read().then(t=>{var e,i,a,r;if(t.error)return this.error(t.error);for(e=0,i=(a=t.result).length;ethis.error(__("Unable to fetch unclassified file list: {0}",t.toString()),t))}}).scheme='\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n
\n
\n
',(n=class t extends this.OS.GUI.BasicDialog{constructor(){super("PrintDialog",t.scheme)}main(){return super.main(),this.find("printerName").value=this.parent.setting.printer,this.find("btnprint").onbtclick=t=>{var e;return(e={}).range=parseInt($("input[name=range]:checked",this.scheme).val()),e.pages=this.find("txtPageRange").value,e.printer=this.find("printerName").value,e.orientation=parseInt($("input[name=orientation]:checked",this.scheme).val()),e.side=parseInt($("input[name=side]:checked",this.scheme).val()),this.handle&&this.handle(e),this.quit()}}}).scheme='\n \n \n \n \n
\n \n
\n \n \n \n
\n \n
\n \n
\n \n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n \n
\n
\n
',i=class extends this.OS.application.BaseApplication{constructor(t){super("Docify",t)}main(){return this.setting.printer||(this.setting.printer=""),this.catview=this.find("catview"),this.docview=this.find("docview"),this.docpreview=this.find("preview-canvas"),this.docgrid=this.find("docgrid"),this.docgrid.header=[{text:"",width:100},{text:""}],this.find("btdld").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return e.data.file.asFileHandle().download().catch(t=>this.error(__("Unable to download: {}",t.toString()),t))},this.find("btopen").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return e.data.file.asFileHandle().meta().then(t=>t.error?this.error(t.error):this._gui.openWith(t.result)).catch(t=>this.error(t.toString(),t))},this.find("btprint").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return this.openDialog(new n,{}).then(t=>{if(t)return t.file=e.data.file,this.exec("printdoc",t).then(t=>t.error?this.error(t.error):this.notify(t.result)).catch(t=>this.error(__("Unable to insert category: {0}",t.toString()),t))})},this.catview.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:t=>this.openDialog("PromptDialog",{title:__("Category"),label:__("Name")}).then(t=>this.exec("insert",{table:"categories",data:{name:t}}).then(t=>t.error?this.error(t.error):this.cat_refresh()).catch(t=>this.error(__("Unable to insert category: {0}",t.toString()),t))).catch(t=>this.error(t.toString(),t))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var e;if(e=this.catview.selectedItem)return this.ask({text:__("Do you realy want to delete: `{0}`",e.data.text)}).then(t=>{if(t)return this.exec("delete",{table:"categories",id:parseInt(e.data.id)}).then(t=>t.error?this.error(t.error):this.cat_refresh()).catch(t=>this.error(__("Unable delete category: {0}",t.toString()),t))})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:t=>{var e;if(e=this.catview.selectedItem)return this.openDialog("PromptDialog",{title:__("Category"),label:__("Name"),value:e.data.name}).then(t=>this.exec("update",{table:"categories",data:{id:parseInt(e.data.id),name:t}}).then(t=>t.error?this.error(t.error):this.cat_refresh()).catch(t=>this.error(__("Unable to update category: {0}",t.toString()),t))).catch(t=>this.error(t.toString(),t))}}],this.docview.onlistselect=t=>{var e;if(this.clear_preview(),e=t.data.item)return this.exec("get_doc",e.data.id).then(t=>{var e,i,a,r,n,s;if(t.error)return this.error(t.error);for(i in this.preview(t.result.file,this.docpreview),n=[],t.result.fileinfo&&(t.result.size=(t.result.fileinfo.size/1024).toFixed(2)+" Kb"),a={ctime:"Created on",mtime:"Modified on",note:"Note",tags:"Tags",name:"Title",owner:"Owner",edate:"Effective date",file:"File",size:"Size"},t.result.edate=`${t.result.day}/${t.result.month}/${t.result.year}`,r=t.result)s=r[i],(e=a[i])&&n.push([{text:e},{text:s}]);return this.docgrid.rows=n}).catch(t=>this.error(t.toString(),t))},this.catview.onlistselect=t=>{var e;if(this.clear_preview(),e=t.data.item)return this.update_doclist(e.data.id)},this.find("bt-add-doc").onbtclick=e=>{var i;return(i=this.catview.selectedItem)?this.openDialog(new t).then(t=>(t.cid=parseInt(i.data.id),this.exec("insertdoc",t).then(t=>t.error?this.error(t.error):(t.result&&this.notify(t.result),this.update_doclist(i.data.id),this.clear_preview())).catch(t=>this.error(t.toString(),t)))):this.notify(__("Please select a category"))},this.find("bt-del-doc").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return this.ask({text:__("Do you really want to delete: `{0}`",e.data.name)}).then(t=>{if(t)return this.exec("deletedoc",{id:e.data.id,file:e.data.file}).then(t=>t.error?this.error(t.error):(this.notify(t.result),this.update_doclist(e.data.cid),this.clear_preview())).catch(t=>this.error(t.toString(),t))})},this.find("bt-edit-doc").onbtclick=e=>{var i,a;if(a=this.docview.selectedItem,i=this.catview.selectedItem,a)return this.openDialog(new t,a.data).then(t=>(t.cid=parseInt(i.data.id),t.id=a.data.id,this.exec("updatedoc",{data:t,rm:!t.file.includes(a.data.file)&&a.data.file}).then(t=>t.error?this.error(t.error):(t.result&&this.notify(t.result),this.update_doclist(i.data.id),this.clear_preview())).catch(t=>this.error(t.toString(),t))))},this.initialize()}update_doclist(t){return this.exec("select",{table:"docs",cond:`cid = ${t} ORDER BY year DESC, month DESC, day DESC`}).then(t=>{var e,i,a,r;if(t.error)return this.error(t.error);for(e=0,i=(a=t.result).length;ethis.error(t.toString(),t))}clear_preview(){return this.docpreview.getContext("2d").clearRect(0,0,this.docpreview.width,this.docpreview.height),this.docgrid.rows=[]}preview(t,e){return this.exec("preview",t).then(t=>{var i;return t.error?this.error(t.error):(i=t.result.asFileHandle()).read("binary").then(t=>{var a,r;return(r=new Image).onload=()=>{var t;return t=e.getContext("2d"),e.height=r.height,e.width=r.width,t.drawImage(r,0,0)},a=new Blob([t],{type:i.info.mime}),r.src=URL.createObjectURL(a)}).catch(t=>this.error(t.toString(),t))}).catch(t=>this.error(t.toString(),t))}cat_refresh(){return this.docview.data=[],this.clear_preview(),this.exec("fetch","categories").then(t=>{var e,i,a,r;for(e=0,i=(a=t.result).length;ethis.error(__("Unable to fetch categories: {0}",t.toString()),t))}initialize(){return this.setting.docpath?this.initdb():this.openDialog("FileDialog",{title:__("Please select a doc path"),mimes:["dir"]}).then(t=>(this.setting.docpath=t.file.path,this._api.setting(),this.initdb())).catch(t=>this.error(t.toString(),t))}exec(t,e){var i;return i={path:this.path()+"/api.lua",parameters:{action:t,docpath:this.setting.docpath,args:e}},this.call(i)}initdb(){return this.setting.docpath?this.exec("init").then(t=>t.error?this.error(t.error):(this.notify(t.result),this.cat_refresh())).catch(t=>this.error(__("Unable to init database: {0}",t.toString()),t)):this.error(__("No configured docpath"))}menu(){return[{text:"__(Options)",nodes:[{text:"__(Owners)",id:"owners"},{text:"__(Preview)",id:"preview"},{text:"__(Change doc path)",id:"setdocp"},{text:"__(Set default printer)",id:"setprinter"}],onchildselect:t=>this.fileMenuHandle(t.data.item.data.id)}]}fileMenuHandle(t){switch(t){case"owners":return this.openDialog(new r,{title:__("Owners")});case"preview":return this.openDialog(new a).then(t=>this.notify(t.path));case"setdocp":return this.setting.docpath=void 0,this.initialize();case"setprinter":return this.openDialog("PromptDialog",{title:__("Default Printer"),label:__("Enter printer name")}).then(t=>this.setting.printer=t)}}},this.OS.register("Docify",i)}).call(this); \ No newline at end of file +(function(){var t,i,a,r,n;(r=class t extends this.OS.GUI.BasicDialog{constructor(){super("OwnerDialog",t.scheme)}main(){return super.main(),this.oview=this.find("ownview"),this.oview.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:t=>this.openDialog("PromptDialog",{title:__("Owner"),label:__("Name")}).then(t=>this.parent.exec("insert",{table:"owners",data:{name:t}}).then(t=>t.error?this.error(t.error):this.owner_refresh()).catch(t=>this.error(__("Unable to insert owner: {0}",t.toString()),t))).catch(t=>this.error(t.toString(),t))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var e;if(e=this.oview.selectedItem)return this.ask({text:__("Do you realy want to delete: `{0}`",e.data.text)}).then(t=>{if(t)return this.parent.exec("delete",{table:"owners",id:parseInt(e.data.id)}).then(t=>t.error?this.error(t.error):this.owner_refresh()).catch(t=>this.error(__("Unable delete category: {0}",t.toString()),t))})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:t=>{var e;if(e=this.oview.selectedItem)return this.openDialog("PromptDialog",{title:__("Owner"),label:__("Name"),value:e.data.name}).then(t=>this.parent.exec("update",{table:"owners",data:{id:parseInt(e.data.id),name:t}}).then(t=>t.error?this.error(t.error):this.owner_refresh()).catch(t=>this.error(__("Unable to update owner: {0}",t.toString()),t))).catch(t=>this.error(t.toString()))}}],this.owner_refresh()}owner_refresh(){return this.parent.exec("fetch","owners").then(t=>{var e,i,a,r;for(e=0,i=(a=t.result).length;ethis.error(__("Unable to fetch owners: {0}",t.toString()),e))}}).scheme="\n \n \n \n",(t=class t extends this.OS.GUI.BasicDialog{constructor(){super("DocDialog",t.scheme)}main(){var t,e,i,r,n,s,h,l;for(super.main(),this.flist=this.find("file-list"),this.dlist=this.find("dlist"),this.mlist=this.find("mlist"),this.ylist=this.find("ylist"),this.olist=this.find("olist"),this.setting=this.parent.setting,this.exec=this.parent.exec,this.preview=this.parent.preview,this.exec("fetch","owners").then(t=>{var e,i,a,r,n,s,h;if(t.error)return this.error(t.error);for(e=0,a=(n=t.result).length;ethis.error(__("Unable to fetch owner list: {0}",t.toString()),t)),this.dlist.push({text:"None",value:0}),h=0,t=i=1;i<=31;t=++i)this.dlist.push({text:""+t,value:t}),this.data&&parseInt(this.data.day)===t&&(h=t);for(this.dlist.selected=h,this.mlist.push({text:"None",value:0}),h=0,t=r=1;r<=12;t=++r)this.mlist.push({text:""+t,value:t}),this.data&&parseInt(this.data.month)===t&&(h=t);for(this.mlist.selected=h,this.ylist.push({text:"None",value:0}),this.ylist.selected=0,l=n=1960,s=(new Date).getFullYear();1960<=s?n<=s:n>=s;l=1960<=s?++n:--n)this.ylist.push({text:""+l,value:l,selected:this.data&&parseInt(this.data.year)===l});if(this.flist.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:t=>this.openDialog(new a).then(t=>(t.text=t.filename,this.flist.push(t)))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var e;if(e=this.flist.selectedItem)return this.flist.delete(e)}}],this.flist.onlistselect=t=>this.parent.preview(t.data.item.data.path,this.find("preview-canvas")),this.find("btsave").onbtclick=t=>{var e,i;return(e={name:this.find("title").value.trim(),day:this.dlist.selectedItem.data.value,month:this.mlist.selectedItem.data.value,year:this.ylist.selectedItem.data.value,file:function(){var t,e,a,r;for(r=[],t=0,e=(a=this.flist.data).length;t0?(this.handle&&this.handle(e),this.quit()):this.notify(__("Please attach files to the entry")):this.notify(__("Please enter title"))},this.data)return this.find("title").value=this.data.name,this.find("note").value=this.data.note,this.find("tag").value=this.data.tags,(e=this.data.file.asFileHandle()).text=e.filename,this.flist.data=[e]}}).scheme='\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
\n \n
\n
\n
\n
',(a=class t extends this.OS.GUI.BasicDialog{constructor(){super("FilePreviewDialog",t.scheme)}main(){return super.main(),this.flist=this.find("file-list"),this.flist.buttons=[{text:"",iconclass:"fa fa-refresh",onbtclick:t=>this.refresh()}],this.flist.onlistselect=t=>this.parent.preview(t.data.item.data.path,this.find("preview-canvas")),this.find("btok").onbtclick=t=>{var e;return(e=this.flist.selectedItem)?(this.handle&&this.handle(e.data),this.quit()):this.quit()},this.refresh()}refresh(){return(this.parent.setting.docpath+"/unclassified").asFileHandle().read().then(t=>{var e,i,a,r;if(t.error)return this.error(t.error);for(e=0,i=(a=t.result).length;ethis.error(__("Unable to fetch unclassified file list: {0}",t.toString()),t))}}).scheme='\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n
\n
\n
',(n=class t extends this.OS.GUI.BasicDialog{constructor(){super("PrintDialog",t.scheme)}main(){return super.main(),this.find("printerName").value=this.parent.setting.printer,this.find("btnprint").onbtclick=t=>{var e;return(e={}).range=parseInt($("input[name=range]:checked",this.scheme).val()),e.pages=this.find("txtPageRange").value,e.printer=this.find("printerName").value,e.orientation=parseInt($("input[name=orientation]:checked",this.scheme).val()),e.side=parseInt($("input[name=side]:checked",this.scheme).val()),this.handle&&this.handle(e),this.quit()}}}).scheme='\n \n \n \n \n
\n \n
\n \n \n \n
\n \n
\n \n
\n \n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n \n
\n
\n
',i=class extends this.OS.application.BaseApplication{constructor(t){super("Docify",t)}main(){return this.setting.printer||(this.setting.printer=""),this.catview=this.find("catview"),this.docview=this.find("docview"),this.docpreview=this.find("preview-canvas"),this.docgrid=this.find("docgrid"),this.docgrid.header=[{text:"",width:100},{text:""}],this.find("btdld").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return e.data.file.asFileHandle().download().catch(t=>this.error(__("Unable to download: {}",t.toString()),t))},this.find("btopen").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return e.data.file.asFileHandle().meta().then(t=>t.error?this.error(t.error):this._gui.openWith(t.result)).catch(t=>this.error(t.toString(),t))},this.find("btprint").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return this.openDialog(new n,{}).then(t=>{if(t)return t.file=e.data.file,this.exec("printdoc",t).then(t=>t.error?this.error(t.error):this.notify(t.result)).catch(t=>this.error(__("Unable to insert category: {0}",t.toString()),t))})},this.catview.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:t=>this.openDialog("PromptDialog",{title:__("Category"),label:__("Name")}).then(t=>this.exec("insert",{table:"categories",data:{name:t}}).then(t=>t.error?this.error(t.error):this.cat_refresh()).catch(t=>this.error(__("Unable to insert category: {0}",t.toString()),t))).catch(t=>this.error(t.toString(),t))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var e;if(e=this.catview.selectedItem)return this.ask({text:__("Do you realy want to delete: `{0}`",e.data.text)}).then(t=>{if(t)return this.exec("delete",{table:"categories",id:parseInt(e.data.id)}).then(t=>t.error?this.error(t.error):this.cat_refresh()).catch(t=>this.error(__("Unable delete category: {0}",t.toString()),t))})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:t=>{var e;if(e=this.catview.selectedItem)return this.openDialog("PromptDialog",{title:__("Category"),label:__("Name"),value:e.data.name}).then(t=>this.exec("update",{table:"categories",data:{id:parseInt(e.data.id),name:t}}).then(t=>t.error?this.error(t.error):this.cat_refresh()).catch(t=>this.error(__("Unable to update category: {0}",t.toString()),t))).catch(t=>this.error(t.toString(),t))}}],this.docview.onlistselect=t=>{var e;if(this.clear_preview(),e=t.data.item)return this.exec("get_doc",e.data.id).then(t=>{var e,i,a,r,n,s;if(t.error)return this.error(t.error);for(i in this.preview(t.result.file,this.docpreview),n=[],t.result.fileinfo&&(t.result.size=(t.result.fileinfo.size/1024).toFixed(2)+" Kb"),a={ctime:"Created on",mtime:"Modified on",note:"Note",tags:"Tags",name:"Title",owner:"Owner",edate:"Effective date",file:"File",size:"Size"},t.result.edate=`${t.result.day}/${t.result.month}/${t.result.year}`,r=t.result)s=r[i],(e=a[i])&&n.push([{text:e},{text:s}]);return this.docgrid.rows=n}).catch(t=>this.error(t.toString(),t))},this.catview.onlistselect=t=>{var e;if(this.clear_preview(),e=t.data.item)return this.update_doclist(e.data.id)},this.find("bt-add-doc").onbtclick=e=>{var i;return(i=this.catview.selectedItem)?this.openDialog(new t).then(t=>(t.cid=parseInt(i.data.id),this.exec("insertdoc",t).then(t=>t.error?this.error(t.error):(t.result&&this.notify(t.result),this.update_doclist(i.data.id),this.clear_preview())).catch(t=>this.error(t.toString(),t)))):this.notify(__("Please select a category"))},this.find("bt-del-doc").onbtclick=t=>{var e;if(e=this.docview.selectedItem)return this.ask({text:__("Do you really want to delete: `{0}`",e.data.name)}).then(t=>{if(t)return this.exec("deletedoc",{id:e.data.id,file:e.data.file}).then(t=>t.error?this.error(t.error):(this.notify(t.result),this.update_doclist(e.data.cid),this.clear_preview())).catch(t=>this.error(t.toString(),t))})},this.find("bt-edit-doc").onbtclick=e=>{var i,a;if(a=this.docview.selectedItem,i=this.catview.selectedItem,a)return this.openDialog(new t,a.data).then(t=>(t.cid=parseInt(i.data.id),t.id=a.data.id,this.exec("updatedoc",{data:t,rm:!t.file.includes(a.data.file)&&a.data.file}).then(t=>t.error?this.error(t.error):(t.result&&this.notify(t.result),this.update_doclist(i.data.id),this.clear_preview())).catch(t=>this.error(t.toString(),t))))},this.initialize()}update_doclist(t){return this.exec("select",{table:"docs",cond:`cid = ${t} ORDER BY year DESC, month DESC, day DESC`}).then(t=>{var e,i,a,r;if(t.error)return this.error(t.error);for(e=0,i=(a=t.result).length;ethis.error(t.toString(),t))}clear_preview(){return this.docpreview.getContext("2d").clearRect(0,0,this.docpreview.width,this.docpreview.height),this.docgrid.rows=[]}preview(t,e){return this.exec("preview",t).then(t=>{var i;return t.error?this.error(t.error):(i=t.result.asFileHandle()).read("binary").then(t=>{var a,r;return(r=new Image).onload=()=>{var t;return t=e.getContext("2d"),e.height=r.height,e.width=r.width,t.drawImage(r,0,0)},a=new Blob([t],{type:i.info.mime}),r.src=URL.createObjectURL(a)}).catch(t=>this.error(t.toString(),t))}).catch(t=>this.error(t.toString(),t))}cat_refresh(){return this.docview.data=[],this.clear_preview(),this.exec("fetch","categories").then(t=>{var e,i,a,r;for(e=0,i=(a=t.result).length;ethis.error(__("Unable to fetch categories: {0}",t.toString()),t))}initialize(){return this.setting.docpath?this.initdb():this.openDialog("FileDialog",{title:__("Please select a doc path"),mimes:["dir"]}).then(t=>(this.setting.docpath=t.file.path,this._api.setting(),this.initdb())).catch(t=>this.error(t.toString(),t))}exec(t,e){var i;return i={path:this.path()+"/api.lua",parameters:{action:t,docpath:this.setting.docpath,args:e}},this.call(i)}initdb(){return this.setting.docpath?this.exec("init").then(t=>t.error?this.error(t.error):(this.notify(t.result),this.cat_refresh())).catch(t=>this.error(__("Unable to init database: {0}",t.toString()),t)):this.error(__("No configured docpath"))}menu(){return[{text:"__(Options)",nodes:[{text:"__(Owners)",id:"owners"},{text:"__(Preview)",id:"preview"},{text:"__(Change doc path)",id:"setdocp"},{text:"__(Set default printer)",id:"setprinter"}],onchildselect:t=>this.fileMenuHandle(t.data.item.data.id)}]}fileMenuHandle(t){switch(t){case"owners":return this.openDialog(new r,{title:__("Owners")});case"preview":return this.openDialog(new a).then(t=>this.notify(t.path));case"setdocp":return this.setting.docpath=void 0,this.initialize();case"setprinter":return this.openDialog("PromptDialog",{title:__("Default Printer"),label:__("Enter printer name")}).then(t=>this.setting.printer=t)}}},this.OS.register("Docify",i)}).call(this); \ No newline at end of file diff --git a/Docify/build/debug/package.json b/Docify/build/debug/package.json index 9300c0c..749ee9e 100644 --- a/Docify/build/debug/package.json +++ b/Docify/build/debug/package.json @@ -7,9 +7,9 @@ "author": "", "email": "" }, - "version":"0.0.6-a", - "category":"Other", - "iconclass":"fa fa-adn", + "version":"0.0.7-a", + "category":"Office", + "iconclass":"bi bi-collection-fill", "mimes":["none"], "locale": {} } \ No newline at end of file diff --git a/Docify/build/release/Docify.zip b/Docify/build/release/Docify.zip index ae146e2e78980b71d47b92f87075743f5a592386..983118468f826d9c74b6d3a08a392f541917bda5 100644 GIT binary patch delta 632 zcmezHpYdS>6K{YwGYc032z*~!zd79c6(cW@5p=f7G?&K3W<3s3Yp3Id6S)t?|}6rJ)cyr2-KrE`GDaOSD+px9WDhRP=aYu zvQqL-OUq17g-L+4C+8#<7XxLIG8K|Cb(8aRa#E8^GV}9v(=u~%Chsva<^2J4&&SpL z62*=T48@!MY_}+K*xBf3<`tBdOfHO5oU9UGKKVhg#N;*c5m1_YvO}X!zzb9j!rUmDl-z(}o}7`I zo2r*llAD9J1S_1_qJIVa!J?%ybi#bhs3N zKq)z~BsD$1s8Y#F$-g8cwFoAjnVg@OoRe5w43tPqR7gwIO-#v~9M59P3p77yOJU_( zHlT5AlUbO2CYLf@VFuZ%?`F&nVr=An#RyimENoG$i6aAp$>xPDTND}fCkJRMPOeic z2eSUEWdO-s^)w*qplLXnN23`mDmQtnMkrWDZnA;qI;a?nRyb6wQ7Z;4CcQ~pMLM35 zNrVCJ>!8qs>IN-_3=AO54h{=sBC#M-FQ+syz#CN)JY<00;XziRc6#oJh zaiS=CZp6S4#CQVf@b#QH}%qTA|?zB#mO0|xv6>?CAm51N(Abq!@aB-7;+Oc o^YoI7i_zqR;6VrsMpQqU+d_3^0X4C*fn3D~gkC@=PN)O%05i6KjQ{`u diff --git a/Docify/package.json b/Docify/package.json index 9300c0c..749ee9e 100644 --- a/Docify/package.json +++ b/Docify/package.json @@ -7,9 +7,9 @@ "author": "", "email": "" }, - "version":"0.0.6-a", - "category":"Other", - "iconclass":"fa fa-adn", + "version":"0.0.7-a", + "category":"Office", + "iconclass":"bi bi-collection-fill", "mimes":["none"], "locale": {} } \ No newline at end of file diff --git a/Dockman/README.md b/Dockman/README.md new file mode 100644 index 0000000..cd47507 --- /dev/null +++ b/Dockman/README.md @@ -0,0 +1,15 @@ +# Dockman +This is an example project, generated by AntOS Development Kit + +## Howto +Use the CodePad command palette to access to the SDK functionalities: + +1. Create new project +2. Init the project from the current folder located in side bar +3. Build and run the project +4. Release the project in zip package + +## Set up build target + +Open the `project.json` file from the current project tree and add/remove +build target entries. Save the file \ No newline at end of file diff --git a/Dockman/api.lua b/Dockman/api.lua new file mode 100644 index 0000000..13dca0a --- /dev/null +++ b/Dockman/api.lua @@ -0,0 +1,141 @@ +local args=... + +local handle = {} + +local result = function(data) + return { error = false, result = data } +end + +local error = function(msg) + return {error = msg, result = false} +end + +local exec = function(host, rcmd, decode) + local user = SESSION.user + if not user then return nil end + local cmd = "ssh -tt "..user.."@"..host.." "..rcmd + if decode then + cmd = cmd.." --format \\'{{json .}}\\'" + end + local f = assert(io.popen(cmd, 'r')) + local s = assert(f:read('*a')) + f:close() + if decode then + s = s:gsub('[\n\r]+', ',') + return JSON.decodeString("["..s.."null]") + else + return s + end +end + +handle.list_image = function(data) + local res = exec(data.host, "docker image ls", true) + if not res then + return error("Unable to fetch image list") + end + -- inspect images + for i,v in ipairs(res) do + v.Detail = exec(data.host, "docker image inspect "..v.ID, true)[1] + v.text = v.Detail.RepoTags[1] + if not v.text or v.text == "" then + v.text = v.ID + end + end + return result(res) +end + +handle.list_container = function(data) + local res = exec(data.host, "docker ps -a -f ancestor="..data.image, true) + if not res then + return error("Unable to fetch container list") + end + for i,v in ipairs(res) do + v.Detail = exec(data.host, "docker container inspect "..v.ID, true)[1] + v.text = v.Names + + if v.Detail.State.Running then + v.iconclass = "fa fa-circle running" + else + v.iconclass = "fa fa-circle stop" + end + end + return result(res) +end + +handle.run_container = function(data) + local res = exec(data.host, "docker start "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + return result("OK") + else + return error(res) + end +end + +handle.pull_image = function(data) + local res = exec(data.host, "docker pull "..data.image, false) + return result(std.b64encode(res)) +end + + +handle.rm_image = function(data) + local res = exec(data.host, "docker rmi "..data.id.."; sleep 2", false) + return result(res) +end + +handle.create_container = function(data) + local cmd = "docker run " + for k,v in pairs(data.parameters) do + k = k:gsub(" ", "") + if k:len() == 1 then + cmd = cmd.." -"..k.." \""..v.."\" " + else + if k:match("^e_.*") then + cmd = cmd.." -e \""..k:gsub("e_","").."="..v.."\" " + else + cmd = cmd.." --"..k + if v ~= "" then + cmd = cmd.."=\""..v.."\" " + end + end + end + end + + cmd = cmd.."--detach=true "..data.image + + local res = exec(data.host, cmd, false) + return result(res) +end + +handle.stop_container = function(data) + local res = exec(data.host, "docker stop "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + return result("OK") + else + return error(res) + end +end + + +handle.rm_container = function(data) + local res = exec(data.host, "docker stop "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + local res = exec(data.host, "docker rm "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + return result("OK") + else + error(res) + end + else + return error(res) + end +end + +if args.action and handle[args.action] then + return handle[args.action](args.args) +else + return error("Invalid action parameter") +end \ No newline at end of file diff --git a/Dockman/build/debug/README.md b/Dockman/build/debug/README.md new file mode 100644 index 0000000..cd47507 --- /dev/null +++ b/Dockman/build/debug/README.md @@ -0,0 +1,15 @@ +# Dockman +This is an example project, generated by AntOS Development Kit + +## Howto +Use the CodePad command palette to access to the SDK functionalities: + +1. Create new project +2. Init the project from the current folder located in side bar +3. Build and run the project +4. Release the project in zip package + +## Set up build target + +Open the `project.json` file from the current project tree and add/remove +build target entries. Save the file \ No newline at end of file diff --git a/Dockman/build/debug/api.lua b/Dockman/build/debug/api.lua new file mode 100644 index 0000000..13dca0a --- /dev/null +++ b/Dockman/build/debug/api.lua @@ -0,0 +1,141 @@ +local args=... + +local handle = {} + +local result = function(data) + return { error = false, result = data } +end + +local error = function(msg) + return {error = msg, result = false} +end + +local exec = function(host, rcmd, decode) + local user = SESSION.user + if not user then return nil end + local cmd = "ssh -tt "..user.."@"..host.." "..rcmd + if decode then + cmd = cmd.." --format \\'{{json .}}\\'" + end + local f = assert(io.popen(cmd, 'r')) + local s = assert(f:read('*a')) + f:close() + if decode then + s = s:gsub('[\n\r]+', ',') + return JSON.decodeString("["..s.."null]") + else + return s + end +end + +handle.list_image = function(data) + local res = exec(data.host, "docker image ls", true) + if not res then + return error("Unable to fetch image list") + end + -- inspect images + for i,v in ipairs(res) do + v.Detail = exec(data.host, "docker image inspect "..v.ID, true)[1] + v.text = v.Detail.RepoTags[1] + if not v.text or v.text == "" then + v.text = v.ID + end + end + return result(res) +end + +handle.list_container = function(data) + local res = exec(data.host, "docker ps -a -f ancestor="..data.image, true) + if not res then + return error("Unable to fetch container list") + end + for i,v in ipairs(res) do + v.Detail = exec(data.host, "docker container inspect "..v.ID, true)[1] + v.text = v.Names + + if v.Detail.State.Running then + v.iconclass = "fa fa-circle running" + else + v.iconclass = "fa fa-circle stop" + end + end + return result(res) +end + +handle.run_container = function(data) + local res = exec(data.host, "docker start "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + return result("OK") + else + return error(res) + end +end + +handle.pull_image = function(data) + local res = exec(data.host, "docker pull "..data.image, false) + return result(std.b64encode(res)) +end + + +handle.rm_image = function(data) + local res = exec(data.host, "docker rmi "..data.id.."; sleep 2", false) + return result(res) +end + +handle.create_container = function(data) + local cmd = "docker run " + for k,v in pairs(data.parameters) do + k = k:gsub(" ", "") + if k:len() == 1 then + cmd = cmd.." -"..k.." \""..v.."\" " + else + if k:match("^e_.*") then + cmd = cmd.." -e \""..k:gsub("e_","").."="..v.."\" " + else + cmd = cmd.." --"..k + if v ~= "" then + cmd = cmd.."=\""..v.."\" " + end + end + end + end + + cmd = cmd.."--detach=true "..data.image + + local res = exec(data.host, cmd, false) + return result(res) +end + +handle.stop_container = function(data) + local res = exec(data.host, "docker stop "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + return result("OK") + else + return error(res) + end +end + + +handle.rm_container = function(data) + local res = exec(data.host, "docker stop "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + local res = exec(data.host, "docker rm "..data.id, false) + res = res:gsub('[\n\r]+', '') + if res == data.id then + return result("OK") + else + error(res) + end + else + return error(res) + end +end + +if args.action and handle[args.action] then + return handle[args.action](args.args) +else + return error("Invalid action parameter") +end \ No newline at end of file diff --git a/Dockman/build/debug/main.css b/Dockman/build/debug/main.css new file mode 100644 index 0000000..edf1e08 --- /dev/null +++ b/Dockman/build/debug/main.css @@ -0,0 +1,34 @@ + +afx-app-window[data-id="Dockman"] .tab-wrapper button { + width: 100%; + height: 100%; +} + +afx-app-window[data-id="Dockman"] .header .label-text { + font-weight: bold; +} + +afx-app-window[data-id="Dockman"] afx-label.header +{ + border-bottom: 1px solid #116cd6; +} + +afx-app-window[data-id="Dockman"] .tab-wrapper { + border-bottom: 1px solid #116cd6; +} + +afx-app-window[data-id="Dockman"] .tab-wrapper afx-list-view> .list-container { + overflow: hidden; +} + +afx-app-window[data-id="Dockman"] afx-tree-view .afx_folder_item .itemname .label-text { + font-weight: bold; +} + +afx-app-window[data-id="Dockman"] .running:before{ + color: green; +} + +afx-app-window[data-id="Dockman"] .stop:before{ + color: red; +} \ No newline at end of file diff --git a/Dockman/build/debug/main.js b/Dockman/build/debug/main.js new file mode 100644 index 0000000..96b666e --- /dev/null +++ b/Dockman/build/debug/main.js @@ -0,0 +1 @@ +(function(){var t;t=class extends this.OS.application.BaseApplication{constructor(t){super("Dockman",t)}main(){var t,e,i,s;for(this.setting.hosts||(this.setting.hosts=[]),this.treeview=this.find("obj-view"),this.currenthost=void 0,this.tabbar=this.find("host-tab-bar"),this.tabbar.ontabselect=t=>(this.currenthost=t.data.item.data,this.loadHost()),this.tabbar.ontabclose=t=>{var e,i;return(e=this.setting.hosts.indexOf(t.data.item.data))>=0&&(this.tabbar.selected===e&&(i=e+1,e>=this.setting.hosts.length-1&&(i=e-1),this.tabbar.selected=i),this.setting.hosts.splice(e,1),!0)},this.find("add").onbtclick=t=>this.openDialog("MultiInputDialog",{title:"__(Add new Docker host)",model:{text:"__(Name)",url:"__(Host url)"},allow_empty:!1}).then(t=>this.addTab(t,!0)),this.imglist=this.find("img-list"),this.imglist.onlistselect=t=>{var e;return this.loadContainer(t.data.item.data.text,!1),e={text:t.data.item.data.text,nodes:this.getTreeData(t.data.item.data)},this.treeview.data=e,this.treeview.expandAll()},this.ctnlist=this.find("container-list"),this.ctnlist.onlistselect=t=>{var e;return e={text:t.data.item.data.text,nodes:this.getTreeData(t.data.item.data)},this.treeview.data=e,this.treeview.expandAll(),this.imglist.selected=-1},this.imglist.buttons=[{text:"",iconclass:"fa fa-arrow-down",onbtclick:()=>{var t,e;return t="",(e=this.imglist.selectedItem)&&(t=e.data.text),this.openDialog("PromptDialog",{title:__("Pull image"),label:__("Pull image:"),value:t}).then(t=>{if(""!==t)return this.exec("pull_image",{host:this.currenthost.url,image:t}).then(t=>t.error?this.error(t.error):this.openDialog("TextDialog",{title:__("Command output"),disable:!0,value:atob(t.result)}).then(t=>this.loadHost()))})}},{text:"",iconclass:"fa fa-refresh",onbtclick:()=>this.loadHost()},{text:"",iconclass:"fa fa-minus",onbtclick:()=>{var t;if(t=this.imglist.selectedItem)return this.ask({title:__("Comfirm delete"),text:__("Are you sure?")}).then(e=>{if(e)return this.exec("rm_image",{host:this.currenthost.url,id:t.data.ID}).then(t=>t.error?this.error(t.error):this.openDialog("TextDialog",{title:__("Command output"),disable:!0,value:t.result}).then(t=>this.loadHost()))})}}],this.ctnlist.buttons=[{text:"",iconclass:"fa fa-play",onbtclick:()=>{var t,e;if((e=this.ctnlist.selectedItem)&&e.data&&!(t=e.data).Detail.State.Running)return this.exec("run_container",{host:this.currenthost.url,id:t.ID}).then(e=>e.error?this.error(e.error):(this.notify(__("Container {0} started",t.ID)),this.loadContainer(t.Image,!0)))}},{text:"",iconclass:"fa fa-stop",onbtclick:()=>{var t,e;if((e=this.ctnlist.selectedItem)&&e.data&&(t=e.data).Detail.State.Running)return this.exec("stop_container",{host:this.currenthost.url,id:t.ID}).then(e=>e.error?this.error(e.error):(this.notify(__("Container {0} stopped",t.ID)),this.loadContainer(t.Image,!0)))}},{text:"",iconclass:"fa fa-refresh",onbtclick:()=>{var t,e,i;if(t=this.ctnlist.data[0])e=t.Image;else{if(!(i=this.imglist.selectedItem))return;e=i.data.text}return this.loadContainer(e,!0)}},{text:"",iconclass:"fa fa-plus",onbtclick:()=>{var t;if(this.ctnlist.data[0])t=this.ctnlist.data[0].Image;else{if(!this.imglist.selectedItem)return;t=this.imglist.selectedItem.data.text}return console.log(t),this.openDialog("KeyValueDialog",{title:__("Container parameters"),data:{p:"8080:80",restart:"always",name:"Container_Name",memory:"200m",cpus:"1",hostname:"Container_HostNamed"}}).then(e=>this.exec("create_container",{host:this.currenthost.url,image:t,parameters:e}).then(e=>e.error?this.error(e.error):this.openDialog("TextDialog",{title:__("Command output"),disable:!0,value:e.result}).then(e=>this.loadContainer(t,!0))))}},{text:"",iconclass:"fa fa-minus",onbtclick:()=>{var t,e;if((e=this.ctnlist.selectedItem)&&e.data)return t=e.data,this.ask({title:__("Comfirm delete"),text:__("Are you sure?")}).then(e=>{if(e)return this.exec("rm_container",{host:this.currenthost.url,id:t.ID}).then(e=>e.error?this.error(e.error):(this.notify(__("Container {0} removed",t.ID)),this.loadContainer(t.Image,!0)))})}}],t=0,e=(i=this.setting.hosts).length;tt.error?this.notify(t.error):this.imglist.data=t.result).catch(t=>this.error(t.toString(),t))}loadContainer(t,e){return this.exec("list_container",{host:this.currenthost.url,image:t}).then(t=>t.error?this.notify(t.error):(e&&(this.treeview.data={},this.ctnlist.data=[]),this.ctnlist.data=t.result)).catch(t=>this.error(t.toString(),t))}getTreeData(t){var e,i,s;switch(i=[],typeof t){case"object":for(e in t)s=t[e],"selected"!==e&&"domel"!==e&&("object"!=typeof s?i.push({text:`${e}: ${s}`}):i.push({text:e,nodes:this.getTreeData(s)}));return i;default:return[]}}resetView(){return this.imglist.data=[],this.ctnlist.data=[],this.treeview.data={}}},this.OS.register("Dockman",t)}).call(this); \ No newline at end of file diff --git a/Dockman/build/debug/package.json b/Dockman/build/debug/package.json new file mode 100644 index 0000000..e44a304 --- /dev/null +++ b/Dockman/build/debug/package.json @@ -0,0 +1,16 @@ +{ + "pkgname": "Dockman", + "app":"Dockman", + "name":"Remote Docker Manager", + "description":"Remote Docker Manager", + "info":{ + "author": "Xuan Sang LE", + "email": "xsang.le@gmail.com" + }, + "version":"0.1.0-b", + "category":"Development", + "iconclass":"fa fa-cubes", + "mimes":["none"], + "dependencies":[], + "locale": {} +} \ No newline at end of file diff --git a/Dockman/build/debug/scheme.html b/Dockman/build/debug/scheme.html new file mode 100644 index 0000000..58ff71f --- /dev/null +++ b/Dockman/build/debug/scheme.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ +
\ No newline at end of file diff --git a/Dockman/build/release/Dockman.zip b/Dockman/build/release/Dockman.zip new file mode 100644 index 0000000000000000000000000000000000000000..3e90fba4f3eda53eb7c3cdef0a1fb5b576b2f671 GIT binary patch literal 12253 zcmc&)&2uD2R@W}xU1$hS8$kpYQt8F2@>G{wUa!NHT;rX!Oze2@&ctYTg9we#R99tp z*QmOxsLIyI_BPx&!;u3KoH%nLf*XGUC+?iM!GQ?4^LzPGUutPI!+0%Qn(nO3m+$lU zUcRg+kACBw(GLB%|L~Vj|NdY8_?>_K_RbFd{wBtjQJVX4U5}#K^#l>+F z$!MG=AwMkQvt^X?6XwfkI=-kdNmOjQlCsFzdc^Q^ktT8xu>Hy84-eG9LZtJBv?H6* zU8pZalz_0GMN^TDrMQ%a`mD(1_`*<}7FlvIx)Vi`ND=cj>5*o3T2$C)JS`x=5-gUN ztS+)NVejtme;g+t-;sJx8($w~B}7`w@p&pP?n68DIfh1HH)u<5T%3z)mK7HPTck-M z@;iz^v}GlPqRo7KJ)J?lqB>2bSTdjf=Fw8TMVt85D$mn=9!$losDx%eF0!Hu*c`0f zm36w^{H>iG`u#2V{L?QU9DenMzf9g`#=A$)7HQ4! zf0Q$E87<39u(B#%idcGVE}-d1iiAzC*n?a?K4ORBTx3PL6uD%NQaKvE`!4%waUqM* z&uhWtLa@(^L_CQS78grIPr}M56H?+?!J;@8bxogW;?dzFHe2PfOp83qQkjZ67>)LQ z_IV|+Da*x$Wo7iC&mQKfRO<|TY*rOZH4v|=iulncWLXg_p3|JwX(HG(szyKb*-ut! zmO#ve!4h3UqmO*{RAeGD0$BQ3|I4%l|M6Kg7fRA2A=#<~1Q011RdWFiJT8T%_rk37 zU)Dwbg3VIs@*0ztI=P?XCQ6bIDzStokGgajB&whipB+W#TC+s3Z{HXH_&5Jq!M61K zJFu_eRWYDFjF)F~@?;*c2GBf(R2*=|gW;f_%b$WFn1GxFvG!GzLjx5z3lmYtRa%nW zK;YJ?X+A4>pjjcjULci85O#FR+GM-xg$o%u7x+3XXcePJbU`U)rb&bcfh_P8Tj#pDr+vm%4i7&x1 z&x>5}lSXD(82}T*BzS0t$=5Pc?s_wfy}z#i?ytW5{>~2le$VEcm$hSE-f`FGQN`qe z3>7;FKZz|69*9W)@sSVvWGQ5UjQ&sHoDbUXYsgT`Y8A_(a-_SiSIA6GYfI^FD81P& zJmIBYeE{5X6!97X2`KUxMJ?-J{c6i#czoh|YA*RHA#kX^&5$DD# z;87Zid;6Zazm04r^0{1$_w}^#exJ{VP-@2eJk{g_!Vw;p?M~c{7FwGD$iZFcZ7O3- zIwLuiR0Ul1FpaWe?(nZxnM@z%PTYT2$wGBl*hX+ zfuS*tS$8l~AQz3c4xvqG45)*IZ2!5f2(FpUCkeb=C{Bc0nxSF!j2!aTfzllC{2BcH z5Po)zoYlPz2<3yJ=tqe!E=#1C2U+IW`LR@jbVY8en4aKf;wuFIW@OP)TGKQ>JKi@A zX`krgxDJnv`*5#;+Xii;swytVD7AC$HO?D2u8C6ViN?qw=bnvKyM^8SA!;<2qB0a3 z7|7hl&AJir1Z6@w^nN%$f3nIlmM)Rm;CiZD4*J6Z#?PZ{B?8%T?R7eHINuFJ>1r_1 zz9=q5?C=saPc=<%P4T4tssm#_LdR1xdQ_z^pqA=0<%a4b98mr1Y7$+MoC+0o#mNi5aLYh87&q zxs}8+%~!~}+g#uPIyNA&)$CoxNA;OwFwH1omR3s!3=@(pt7M=j4=TZ~iWRF@mH3P| z(hK+dSuO8k%Oo(k^6;>$(O-)}tu4D7Q(_yM@y|ho-M4CoDaCcQn;|#Q z2|O=kI=gbTuQaF0$%fS^=yBHJ9+9*OYnWml5?-i;_KEe&uNSP!J~@OX0KqPX*woeo4+3kvRC6le;XwxWq~!2=PdZ6?`tF{bYY z%Ko>*W0~CwZ4{zIt_|J|hKGXOEQRJ5r->VGxyu1c#LHS6g z;RJ^Y3o5-6n~RPGo%aspr{X}~yXV$ndMr);HHSwy_rj^&rpzTc7@jMY`FoTNVbt8s z!Aj^Jf&xQ>aNCw>+x4F)9&F5a`NCMg78-JvZd8<^PPe-os7%9k8KE7nSf@{pdyjt* zm8qYtBHj(Kb)>p}h&uGpYQ&p4MxdFJIjOs8%NIg#MXysrH?B!~1H1_N3p6MkgI^i~ z=2+=OuFt6YNZYi2x~ZrY*u9&?y`!{t6y1fYFH%xi ziWZY6uS!wO7&=%n8eG&@LidLU)Tj~+{a1k_gBOJ1NwE}}`Jx(9v~V{x z1nbXIUpcrw!MymvT5JOLgLS=mv2lamGvVEE{;zRDXhJkSNW?6{p()U2J3iTsL@D3tIlWMn5*;?^*X(WSoY>*{4s z>qV<%@0t;eP88vrHiZ-FOR~lWaBtnVvdit18%Q8b(qG~dK@rd{Kms%-G0$&UeNF17 zZv6F2-azwRVk(+l@j{CKN{)p3-ow#xfjy4j~RkVksdJA-0zUXyNW%N>eoy)^k`0m zgQ>@wH8hoNM!5d5<0}ncs6y-i8G$y-j5wKxFyi7ba$zn9WHC-*) zsz#`W?C6W5qlb@w=F?XtLONq8ikNy#O@8oB7bz@HGu%`rYL2D=!XUuwdcnq0GVUuP zzR!P*kF+^H(kO9YNozjnQZ`pZWKT^8e`)@BjGAB>N%s8t-g-^J#zE{$iIzAqEH9(dNp>s3BdBrtt~aE2v}9sK6|()d0z;97H>x zdLKepxZq)n(`jqK#qe0wm*iy103Jj6q%L+~ol}vQmQh;O4)$|dQdr^7O}Frs z+*{&M<~bU7Mv~+Gla>-y44`94`cFk!Jd5UaXOi*nb9E)ez?}IM!j(~SbR82i*@yV> z@X+ql#DVojqc9!iO1|p`Y;ww*8?mg}IAY@&-X_576}S-&p$cVeW#0e4XT++a8t5xsU za`d`xfvwxl)th^TYPu25YEJ|!oE!wzTKCy=9&CyZI)?{J8-0Ie;@Wx&M!zB}M~KV8G`&M0p`=L(j6{v7n$i0CFc z3MNGy=^cFm{%7LUf1kV8HlTTfU4*7@ITokf1IO5x5bzxT_I9Q9*TVQZ(J}Gfuu9MA zhj4}c#nxn?C*W^a1>ttd?OdB8wtTmb?7xbYF6r?&!97~M2q|T^Zbn|O=BhupWq%NR z9WU%(DBb3R3NdahHi%Bk?vMp4Q?UM<1f)*)YSox%u^T95FjT_GR?$s%94;Ily4!_+ az?viYlSkjd);l}j#eZMoMc0i_-~JCkls{qs literal 0 HcmV?d00001 diff --git a/Dockman/main.coffee b/Dockman/main.coffee new file mode 100644 index 0000000..97c6f29 --- /dev/null +++ b/Dockman/main.coffee @@ -0,0 +1,283 @@ +class Dockman extends this.OS.application.BaseApplication + constructor: ( args ) -> + super "Dockman", args + + main: () -> + @setting.hosts = [] unless @setting.hosts + @treeview = @find "obj-view" + @currenthost = undefined + @tabbar = @find "host-tab-bar" + @tabbar.ontabselect = (e) => + @currenthost = e.data.item.data + @loadHost() + + @tabbar.ontabclose = (e) => + id = @setting.hosts.indexOf e.data.item.data + return false unless id >= 0 + selid = @tabbar.selected + + if selid is id + nid = id + 1 + nid = id - 1 if id >= @setting.hosts.length - 1 + @tabbar.selected = nid + + @setting.hosts.splice id, 1 + return true + + @find("add").onbtclick = (e) => + @openDialog("MultiInputDialog", { + title: "__(Add new Docker host)", + model: { + text: "__(Name)", + url: "__(Host url)" + }, + allow_empty: false + }) + .then (d) => + @addTab d, true + + @imglist = @find "img-list" + @imglist.onlistselect = (e) => + @loadContainer e.data.item.data.text, false + tdata = { text: e.data.item.data.text, nodes: @getTreeData e.data.item.data } + @treeview.data = tdata + @treeview.expandAll() + + @ctnlist = @find "container-list" + @ctnlist.onlistselect = (e) => + tdata = { text: e.data.item.data.text, nodes: @getTreeData e.data.item.data } + @treeview.data = tdata + @treeview.expandAll() + @imglist.selected = -1 + + @imglist.buttons = [ + { + text: "", + iconclass: "fa fa-arrow-down", + onbtclick: () => + sel = @imglist.selectedItem + image = "" + image = sel.data.text if sel + @openDialog "PromptDialog", { + title: __("Pull image"), + label: __("Pull image:"), + value: image + } + .then (img) => + return if img is "" + @exec("pull_image", { + host: @currenthost.url, + image: img + }) + .then (r) => + return @error r.error if r.error + @openDialog "TextDialog", { + title:__("Command output"), + disable: true, + value: atob(r.result) + } + .then (_d_) => + @loadHost() + }, + { + text: "", + iconclass: "fa fa-refresh", + onbtclick: () => + @loadHost() + }, + { + text: "", + iconclass: "fa fa-minus", + onbtclick: () => + sel = @imglist.selectedItem + return unless sel + @ask({ title: __("Comfirm delete"), text: __("Are you sure?")}) + .then (r) => + return unless r + @exec("rm_image", { + host: @currenthost.url, + id: sel.data.ID + }) + .then (r) => + return @error r.error if r.error + @openDialog "TextDialog", { + title:__("Command output"), + disable: true, + value: r.result + } + .then (_d_) => + @loadHost() + } + ] + + @ctnlist.buttons = [ + { + text: "", + iconclass: "fa fa-play", + onbtclick: () => + sel = @ctnlist.selectedItem + return unless sel and sel.data + data = sel.data + return if data.Detail.State.Running + @exec("run_container", { + host: @currenthost.url, + id: data.ID + }) + .then (r) => + return @error r.error if r.error + @notify __("Container {0} started", data.ID) + @loadContainer(data.Image, true) + }, + { + text: "", + iconclass: "fa fa-stop", + onbtclick: () => + sel = @ctnlist.selectedItem + return unless sel and sel.data + data = sel.data + return unless data.Detail.State.Running + @exec("stop_container", { + host: @currenthost.url, + id: data.ID + }) + .then (r) => + return @error r.error if r.error + @notify __("Container {0} stopped", data.ID) + @loadContainer(data.Image, true) + }, + { + text: "", + iconclass: "fa fa-refresh", + onbtclick: () => + data = @ctnlist.data[0] + if not data + sel = @imglist.selectedItem + return unless sel + image = sel.data.text + else + image = data.Image + @loadContainer(image, true) + }, + { + text: "", + iconclass: "fa fa-plus", + onbtclick: () => + if not @ctnlist.data[0] + return unless @imglist.selectedItem + image = @imglist.selectedItem.data.text + else + image = @ctnlist.data[0].Image + console.log image + @openDialog "KeyValueDialog", { + title: __("Container parameters"), + data: { + p: "8080:80", + restart: "always", + name: "Container_Name", + memory: "200m", + cpus: "1", + hostname: "Container_HostNamed" + } + } + .then (d) => + @exec("create_container", { + host: @currenthost.url, + image: image, + parameters: d + }) + .then (r) => + return @error r.error if r.error + @openDialog "TextDialog", { + title:__("Command output"), + disable: true, + value: r.result + } + .then (_d_) => + @loadContainer(image,true) + }, + { + text: "", + iconclass: "fa fa-minus", + onbtclick: () => + sel = @ctnlist.selectedItem + return unless sel and sel.data + data = sel.data + @ask({ title: __("Comfirm delete"), text: __("Are you sure?")}) + .then (r) => + return unless r + @exec("rm_container", { + host: @currenthost.url, + id: data.ID + }) + .then (r) => + return @error r.error if r.error + @notify __("Container {0} removed", data.ID) + @loadContainer(data.Image, true) + } + ] + + @tabbar.push v for v in @setting.hosts + @tabbar.selected = @setting.hosts.length - 1 + + addTab: (data, refresh) -> + id = @setting.hosts.length + @setting.hosts.push data + @tabbar.push data + return unless refresh + @tabbar.selected = id + + exec: (action, args) -> + cmd = + path: "#{@path()}/api.lua", + parameters: + action: action, + args: args + return @call(cmd) + + loadHost: () -> + return unless @currenthost + @resetView() + @exec("list_image", { + host: @currenthost.url + }) + .then (d) => + return @notify d.error if d.error + @imglist.data = d.result + .catch (e) => + @error e.toString(), e + + loadContainer: (data, cleanup) -> + @exec("list_container", { + host:@currenthost.url, + image: data + }) + .then (d) => + return @notify d.error if d.error + if cleanup + @treeview.data = {} + @ctnlist.data = [] + @ctnlist.data = d.result + .catch (e) => + @error e.toString(), e + + getTreeData: (data) -> + type = typeof data + nodes = [] + switch type + when "object" + for key, value of data + if key isnt "selected" and key isnt "domel" + if typeof value isnt "object" + nodes.push { text: "#{key}: #{value}" } + else + nodes.push { text: key, nodes: @getTreeData(value) } + return nodes + else + return [] + + resetView: () -> + @imglist.data = [] + @ctnlist.data = [] + @treeview.data = {} + +this.OS.register "Dockman", Dockman \ No newline at end of file diff --git a/Dockman/main.css b/Dockman/main.css new file mode 100644 index 0000000..f1ce977 --- /dev/null +++ b/Dockman/main.css @@ -0,0 +1,33 @@ +afx-app-window[data-id="Dockman"] .tab-wrapper button { + width: 100%; + height: 100%; +} + +afx-app-window[data-id="Dockman"] .header .label-text { + font-weight: bold; +} + +afx-app-window[data-id="Dockman"] afx-label.header +{ + border-bottom: 1px solid #116cd6; +} + +afx-app-window[data-id="Dockman"] .tab-wrapper { + border-bottom: 1px solid #116cd6; +} + +afx-app-window[data-id="Dockman"] .tab-wrapper afx-list-view> .list-container { + overflow: hidden; +} + +afx-app-window[data-id="Dockman"] afx-tree-view .afx_folder_item .itemname .label-text { + font-weight: bold; +} + +afx-app-window[data-id="Dockman"] .running:before{ + color: green; +} + +afx-app-window[data-id="Dockman"] .stop:before{ + color: red; +} \ No newline at end of file diff --git a/Dockman/package.json b/Dockman/package.json new file mode 100644 index 0000000..e44a304 --- /dev/null +++ b/Dockman/package.json @@ -0,0 +1,16 @@ +{ + "pkgname": "Dockman", + "app":"Dockman", + "name":"Remote Docker Manager", + "description":"Remote Docker Manager", + "info":{ + "author": "Xuan Sang LE", + "email": "xsang.le@gmail.com" + }, + "version":"0.1.0-b", + "category":"Development", + "iconclass":"fa fa-cubes", + "mimes":["none"], + "dependencies":[], + "locale": {} +} \ No newline at end of file diff --git a/Dockman/project.json b/Dockman/project.json new file mode 100644 index 0000000..313f15f --- /dev/null +++ b/Dockman/project.json @@ -0,0 +1,7 @@ +{ + "name": "Dockman", + "css": ["main.css"], + "javascripts": [], + "coffees": ["main.coffee"], + "copies": ["scheme.html", "api.lua", "package.json", "README.md"] +} \ No newline at end of file diff --git a/Dockman/scheme.html b/Dockman/scheme.html new file mode 100644 index 0000000..58ff71f --- /dev/null +++ b/Dockman/scheme.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ +
\ No newline at end of file diff --git a/GPClient/README.md b/GPClient/README.md index 674a9c2..156fd3a 100644 --- a/GPClient/README.md +++ b/GPClient/README.md @@ -1,3 +1,3 @@ -# IOMail +# GPClient -Simple Mail client wrapper for https://mail.iohub.dev/ +Simple Multi purpose client wrapper diff --git a/GPClient/build/debug/README.md b/GPClient/build/debug/README.md index 674a9c2..156fd3a 100644 --- a/GPClient/build/debug/README.md +++ b/GPClient/build/debug/README.md @@ -1,3 +1,3 @@ -# IOMail +# GPClient -Simple Mail client wrapper for https://mail.iohub.dev/ +Simple Multi purpose client wrapper diff --git a/GPClient/build/debug/main.js b/GPClient/build/debug/main.js index 360bdda..355be7d 100644 --- a/GPClient/build/debug/main.js +++ b/GPClient/build/debug/main.js @@ -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;ithis.quit(),this.find("btnok").onbtclick=i=>{var n,a,s;for(n={},a=0,s=e.length;a\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n
\n
\n',(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='\n \n \n
\n \n
\n \n',(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); \ No newline at end of file +(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;ithis.quit(),this.find("btnok").onbtclick=i=>{var n,a,s;for(n={},a=0,s=e.length;a\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n
\n
\n',(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='\n \n \n
\n \n
\n \n',(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); \ No newline at end of file diff --git a/GPClient/build/debug/package.json b/GPClient/build/debug/package.json index 5fb1e98..83d9b62 100644 --- a/GPClient/build/debug/package.json +++ b/GPClient/build/debug/package.json @@ -7,9 +7,9 @@ "author": "Xuan Sang LE", "email": "mrsang@iohub.dev" }, - "version":"0.1.0-a", + "version":"0.1.2-a", "category":"Internet", - "iconclass":"fa fa-globe", + "iconclass":"bi bi-hurricane", "mimes":["none"], "dependencies":[], "locale": {} diff --git a/GPClient/build/release/GPClient.zip b/GPClient/build/release/GPClient.zip index d95db4721c5f491cf6b117bec9deabe41628d4e4..efb6dadd132347fcbe81dcac23201031a905b55a 100644 GIT binary patch delta 467 zcmdm>vO%Rjz?+$civa|7EvpaOQ<83G0AzzOClCj@I=c9}>gA>=E4T+Z=VYelm2hzd zXXX~E9=9FYA6qFVfU3Q~)>P>sFk{Kcz;k%0k(d4R?iBqnDk zrl;y<6;IUo%xE-OhS88ODN`XSQ#Yfus3i7Nqc1PWMPe0!E*g9c3>uqPGvzXK z*xBf3<`tBdOipBtpIpJ_k1U|L`6b&IPG+F4$txJ&)iW}QFyQtX&=p7k?#}>kRBh-k zN9YL$G7vOz^Wz?+$civa|3g42R7)@aWzWMp6{+?dD0$Y?ORn9-0sEm1)sEm1c;CqHTO zCPrW8+~Bmy{sQkrVfujlAeT%geknc%2C2#CQVqO9QQ@0*yJ!^IVxnOl&PssQ3BBFu=oP#6CR*VP$>|LVe(u-X|NYQ z2ujz_1}Z2{&PdHo)ypW!%|SK?#aBR|v4eHPh$&1A3_w@p>17q8YeM%XObY|UWdS5l U2Y9ox34!ETfbc$$wiX2O0Nf&1*Z=?k diff --git a/GPClient/package.json b/GPClient/package.json index 5fb1e98..83d9b62 100644 --- a/GPClient/package.json +++ b/GPClient/package.json @@ -7,9 +7,9 @@ "author": "Xuan Sang LE", "email": "mrsang@iohub.dev" }, - "version":"0.1.0-a", + "version":"0.1.2-a", "category":"Internet", - "iconclass":"fa fa-globe", + "iconclass":"bi bi-hurricane", "mimes":["none"], "dependencies":[], "locale": {} diff --git a/GraphEditor/README.md b/GraphEditor/README.md index a930687..bee530f 100644 --- a/GraphEditor/README.md +++ b/GraphEditor/README.md @@ -3,7 +3,7 @@ Generate graph from text using mermaid ## Change logs - +* v0.0.9-a: Change category * v0.0.8-a: Fix ace path * v0.0.7-a: Fix worker path * v0.0.6-a: Fix unable to export image from tainted canvas diff --git a/GraphEditor/build/debug/README.md b/GraphEditor/build/debug/README.md index a930687..bee530f 100644 --- a/GraphEditor/build/debug/README.md +++ b/GraphEditor/build/debug/README.md @@ -3,7 +3,7 @@ Generate graph from text using mermaid ## Change logs - +* v0.0.9-a: Change category * v0.0.8-a: Fix ace path * v0.0.7-a: Fix worker path * v0.0.6-a: Fix unable to export image from tainted canvas diff --git a/GraphEditor/build/debug/package.json b/GraphEditor/build/debug/package.json index 3dab430..227e373 100644 --- a/GraphEditor/build/debug/package.json +++ b/GraphEditor/build/debug/package.json @@ -7,8 +7,8 @@ "email": "xsang.le@gmail.com", "licences": "GPLv3" }, - "version":"0.0.8-a", - "category":"Office", + "version":"0.0.9-a", + "category":"Graphics", "iconclass": "fa fa-sitemap", "mimes":["text/.*graphviz"] } diff --git a/GraphEditor/build/release/GraphEditor.zip b/GraphEditor/build/release/GraphEditor.zip index 187c0c56fefee2e74784f220e1f1ecc4171fcf76..9ee61e6471b29d4ac7f727bbb8f3741f03868f26 100644 GIT binary patch delta 469 zcmZp^i+l9#FEtX{G!UuQ<;q!!CLG;JeidS)RMM6NtH*0Q4XkDNry`T2$W!o zm8_K9ixLYmGLws^Pg3LYNR9)DIf0l9 zh`G1hvGa(_v4C`LNh{8W@V0rrW9Wh}(g}2JTUyDjpP7$}9{F1&PVoiRr0&S;hHz$mW9_I=x?=M=EMF zD+2@A1z9K#04Z=TouK|7=wuM)Mlt%FG7m#>az<)ys$ND(ZcczVD;r3j6$nLv?)at# GatQz!A8eoi delta 440 zcmZ2@!Jy@W0bhVOGYc032y9fS4cvZ5nMa0M6j{jp{*0OVj0_CQ%1!=S;;z!2o>=;G_Dmz#pFZJuel*mobGWgyIfqHiAy z14C|NW}aShaWS$skf)}vRp*h4HeiRU$ih$n_chQtJSfI`tMV`uBqnDkrl;y<73b## Tc(byB6tDuJC{XoHHIRA$mGNF! diff --git a/GraphEditor/package.json b/GraphEditor/package.json index 3dab430..227e373 100644 --- a/GraphEditor/package.json +++ b/GraphEditor/package.json @@ -7,8 +7,8 @@ "email": "xsang.le@gmail.com", "licences": "GPLv3" }, - "version":"0.0.8-a", - "category":"Office", + "version":"0.0.9-a", + "category":"Graphics", "iconclass": "fa fa-sitemap", "mimes":["text/.*graphviz"] } diff --git a/LuaPlayground/README.md b/LuaPlayground/README.md index 6ea5a50..574946a 100644 --- a/LuaPlayground/README.md +++ b/LuaPlayground/README.md @@ -5,5 +5,6 @@ Application for serverside code testing and analytics tool. It allows to execute lua code on the server from the browser ## Change logs +* 0.0.7-a: Change icon and category * 0.0.6-a: Fix ace path error * 0.0.5-a: Fix worker path error \ No newline at end of file diff --git a/LuaPlayground/build/debug/README.md b/LuaPlayground/build/debug/README.md index 6ea5a50..574946a 100644 --- a/LuaPlayground/build/debug/README.md +++ b/LuaPlayground/build/debug/README.md @@ -5,5 +5,6 @@ Application for serverside code testing and analytics tool. It allows to execute lua code on the server from the browser ## Change logs +* 0.0.7-a: Change icon and category * 0.0.6-a: Fix ace path error * 0.0.5-a: Fix worker path error \ No newline at end of file diff --git a/LuaPlayground/build/debug/package.json b/LuaPlayground/build/debug/package.json index ee377c4..88023f3 100644 --- a/LuaPlayground/build/debug/package.json +++ b/LuaPlayground/build/debug/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LEs", "email": "xsang.le@gmail.com" }, - "version":"0.0.6-a", - "category":"System", - "iconclass":"fa fa-adn", + "version":"0.0.7-a", + "category":"Development", + "iconclass":"bi gear-full", "mimes":["none"] } \ No newline at end of file diff --git a/LuaPlayground/build/release/LuaPlayground.zip b/LuaPlayground/build/release/LuaPlayground.zip index f7539f5aa4790a57f70f091f04947162a28e337f..30503c7b0ec3d57f841473982ed2bee816644858 100644 GIT binary patch delta 480 zcmdnq%=@^RmoLDZnT3l11T2=<2W@6!X=LUFu{=wUmHYvU{+TSmyg}AnH_=MLIU_MI zJyjtyIX_P!F)u|SIk6-)J-?`O@=j(i9-x-pIh#DK7#SF>rn}oSf6f5vQPSa300JeL zN+l~Lm(;SO1im!Fra z6w6hM>gMKd_V#XeMj&R|-p$Uu-kb&G{*8QZnfMr)L>LgBo6h6NEM)=mYHng?o?dcs zaez0f3b?0%YB)g(;h>dy`bP(5iF#yj0=>!uR{&zHU}0b=NKDR7Oi$IzD$dVCH=g;2 zfPJ4iGXn^-qv+&egE}e;!%edkDmgDOF))BI_wk delta 469 zcmaFd%)7mrmoLDZnT3l11S}M41Gk^GWq!*fiY)a1LWaf-p!AK&bC@?wE?{wH2CCc0 z*T~Fb31l=&v9(LFF#<8ub}2UI_2#@F(alrVc^NS>Fc?kV&+@t6OgB+Uhf4tnl#&xm zQq%K`DwV91f-8$lQgdMvnaTNi$vKI|#Xy;~M1{0O-NckUm}G8dZYoeBS}89-FI6d) zt2V%!kx7IB;p|xom7Eut7#Kj98|)b*qMo5RIU_YURWG9?HwRrO+;>0?oJg7&7=8lH z3UYOH@paY9O+nWt^HS$jJTn6W2y>ul`vDZmP0Y;GOD-;k>Vmiv6fV>A9hs$~YuTYn yvS2E}CZGfyFz|R#%r&rQW++HZ&Q45E)ypc*&kOKoWdkW-1wv7v>K+H6#S8#q2V%tl diff --git a/LuaPlayground/package.json b/LuaPlayground/package.json index ee377c4..88023f3 100644 --- a/LuaPlayground/package.json +++ b/LuaPlayground/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LEs", "email": "xsang.le@gmail.com" }, - "version":"0.0.6-a", - "category":"System", - "iconclass":"fa fa-adn", + "version":"0.0.7-a", + "category":"Development", + "iconclass":"bi gear-full", "mimes":["none"] } \ No newline at end of file diff --git a/MarkOn/build/debug/package.json b/MarkOn/build/debug/package.json index 9fb7580..260dbea 100644 --- a/MarkOn/build/debug/package.json +++ b/MarkOn/build/debug/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.0.7-a", - "category":"Utils", + "version":"0.0.8-a", + "category":"Office", "iconclass":"fa fa-leanpub", "dependencies": ["SimpleMDE@1.11.2-r"], "mimes":["text/.*"] diff --git a/MarkOn/build/release/MarkOn.zip b/MarkOn/build/release/MarkOn.zip index 5ba2cd831fe85d3e22edac56958a760500052652..35ff798edb180a331b44cd425ededcc02dc046d5 100644 GIT binary patch delta 325 zcmZ3ZyjGbnz?+$civa|Dme&VOZfC4v2GMGaaXdh}q4UkI5Jm=ukjc{gk7O)#6P0wh z6o5b}Ik6-)J-?_@$x6vTEiE%Sb+Uv&HV?8P9x zVX~~CIM}vR0#fz$KqmybI=c9}>gA>cc%y27y94MJ9RF+Ei;t2jRo zUFS8%Yv-N=wSX`?OcR)n1G*qLF*6US4XBA1)qxWQq*Sx`85oL_Gg5O?^)gCwa{|0s R*+3duflw6ajwS&R4*+F8M!5h0 delta 376 zcmZ3hyhfQXz?+$civa|D7EcP?T*1%7$b&30u{VwxC^3<*21ISnVdCWF0W#!_qfZ1g zGB5;B{QgMVTsKikhf4tnl#&xmQq%K`DwV91LQ67piYI?%%;sZc5@A5tF*#3Asvcxv zadJj#ZmM2JNp4PnH>#TQil{0ppb`+~1gV7s381Axu8uCgu6nsC=-M1hGc+QBN0?this.open(this.args[0].path):this.newdoc(),this.resource={fonts:[],formats:[]},this.bindKey("ALT-N",()=>this.actionFile(this.name+"-New")),this.bindKey("ALT-O",()=>this.actionFile(this.name+"-Open")),this.bindKey("CTRL-S",()=>this.actionFile(this.name+"-Save")),this.bindKey("ALT-W",()=>this.actionFile(this.name+"-Saveas"))}menu(){return[{text:"__(File)",nodes:[{text:"__(New)",dataid:this.name+"-New",shortcut:"A-N"},{text:"__(Open)",dataid:this.name+"-Open",shortcut:"A-O"},{text:"__(Save)",dataid:this.name+"-Save",shortcut:"C-S"},{text:"__(Save as)",dataid:this.name+"-Saveas",shortcut:"A-W"}],onchildselect:e=>this.actionFile(e.data.item.data.dataid)}]}actionFile(e){var t;switch(t=()=>this.openDialog("FileDialog",{title:__("Save as"),file:this.currfile}).then(e=>{var t;return t=e.file.path.asFileHandle(),"file"===e.file.type&&(t=t.parent()),this.currfile.setPath(`${t.path}/${e.name}`),this.save()}),e){case this.name+"-Open":return this.openDialog("FileDialog",{title:__("Open file"),mimes:this.meta().mimes}).then(e=>this.open(e.file.path));case this.name+"-Save":return this.currfile.basename?this.save():t();case this.name+"-Saveas":return t();case this.name+"-New":return this.newdoc()}}newdoc(){var e;return e=this.meta().path+"/blank.odt",this.open(e,!0)}open(e,t){return this.pathAsDataURL(e).then(n=>(this.editorSession&&this.closeDocument(),this.initCanvas(),new odf.OdfContainer(n.data,n=>(this.canvas.setOdfContainer(n,!1),t?this.currfile="Untitled".asFileHandle():(this.currfile?this.currfile.setPath(e):this.currfile=e.asFileHandle(),this.scheme.apptitle=this.currfile.basename,this.notify(__("File {0} opened",e))))))).catch(e=>this.error(__("Problem read file {0}",e.toString()),e))}save(){var e;if(this.editorSession)return(e=this.canvas.odfContainer())?e.createByteArray(e=>(this.currfile.cache=new Blob([e],{type:"application/vnd.oasis.opendocument.text"}),this.currfile.write("application/vnd.oasis.opendocument.text").then(e=>(this.notify(__("File {0} saved",this.currfile.basename)),this.scheme.apptitle=this.currfile.basename,this.currfile.dirty=!1,this.editorFocus())).catch(e=>this.error(__("Cannot save file: {0}",e.toString()),e))),e=>this.error(__("Cannot create byte array from container: {0}",e.toString()||""),e)):this.error(__("No document container found"))}initToolbox(){var e,t,n;for(t in this.basictool={undo:this.find("btundo"),redo:this.find("btredo"),bold:this.find("btbold"),italic:this.find("btitalic"),underline:this.find("btunderline"),strike:this.find("btstrike"),note:this.find("btnote"),link:this.find("btlink"),unlink:this.find("btunlink"),image:this.find("btimage"),ac:this.find("btac"),al:this.find("btal"),ar:this.find("btar"),aj:this.find("btaj"),indent:this.find("btindent"),outdent:this.find("btoutdent"),fonts:this.find("font-list"),fontsize:this.find("font-size"),styles:this.find("format-list"),zoom:this.find("slzoom"),format:this.find("btformat")},e=(e,t)=>t["fonts"===e||"styles"===e?"onlistselect":"fontsize"===e||"zoom"===e?"onvaluechange":"onbtclick"]=t=>{if(this.directFormattingCtl&&this[e])return this[e](t),this.editorFocus()},n=this.basictool)e(t,n[t]);return this.find("btzoomfix").onbtclick=e=>this.zoom({data:100}),this.basictool.zoom.onvaluechanging=e=>this.find("lbzoom").text=Math.floor(e.data)+"%"}initCanvas(){var e;return(e=this.find("odfcanvas")).setAttribute("translate","no"),e.classList.add("notranslate"),this.canvas=new odf.OdfCanvas(e),this.documentChanged=e=>{if(!this.currfile.dirty)return this.currfile.dirty=!0,this.scheme.apptitle=this.currfile.basename+"*"},this.metaChanged=e=>{if(!this.currfile.dirty)return this.currfile.dirty=!0,this.scheme.apptitle=this.currfile.basename+"*"},this.textStylingChanged=e=>this.updateToolbar(e),this.paragrahStyleChanged=e=>{var t,n,i,o,r;if("style"===e.type){for(t=o=0,r=(i=this.basictool.styles.data).length;o{var n,i,o,r,a,s;if("paragraph"===t.family){for(r=0,a=(o=this.basictool.styles.data).length;r{var t;return t=Math.floor(100*e),this.basictool.zoom.value=t,this.find("lbzoom").text=t+"%"},this.canvas.enableAnnotations(!0,!0),this.canvas.addListener("statereadychange",()=>{var e,t;return this.session=new ops.Session(this.canvas),t={editInfoMarkersInitiallyVisible:!1,caretAvatarsInitiallyVisible:!1,caretBlinksOnRangeSelect:!0},this.editorSession=new n.EditorSession(this.session,this.userid,{viewOptions:t,directTextStylingEnabled:!0,directParagraphStylingEnabled:!0,paragraphStyleSelectingEnabled:!0,paragraphStyleEditingEnabled:!0,imageEditingEnabled:!0,hyperlinkEditingEnabled:!0,annotationsEnabled:!0,zoomingEnabled:!0,reviewModeEnabled:!1}),this.initFontList(this.editorSession.getDeclaredFonts()),this.initStyles(this.editorSession.getAvailableParagraphStyles()),this.directFormattingCtl=this.editorSession.sessionController.getDirectFormattingController(),this.directFormattingCtl.subscribe(gui.DirectFormattingController.textStylingChanged,this.textStylingChanged),this.directFormattingCtl.subscribe(gui.DirectFormattingController.paragraphStylingChanged,this.textStylingChanged),this.editorSession.subscribe(n.EditorSession.signalParagraphChanged,this.paragrahStyleChanged),this.hyperlinkController=this.editorSession.sessionController.getHyperlinkController(),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalCursorMoved,()=>this.updateHyperlinkButtons()),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalParagraphChanged,()=>this.updateHyperlinkButtons()),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalParagraphStyleModified,()=>this.updateHyperlinkButtons()),this.annotationController=this.editorSession.sessionController.getAnnotationController(),this.imageController=this.editorSession.sessionController.getImageController(),this.textController=this.editorSession.sessionController.getTextController(),this.zoomHelper=this.editorSession.getOdfCanvas().getZoomHelper(),this.zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged,this.updateSlider),this.updateSlider(this.zoomHelper.getZoomLevel()),this.editorSession.subscribe(n.EditorSession.signalCommonStyleCreated,this.styleAdded),this.editorSession.sessionController.setUndoManager(new gui.TrivialUndoManager),this.editorSession.sessionController.getUndoManager().subscribe(gui.UndoManager.signalDocumentModifiedChanged,this.documentChanged),this.editorSession.sessionController.getMetadataController().subscribe(gui.MetadataController.signalMetadataChanged,this.metaChanged),(e=new ops.OpAddMember).init({memberid:this.userid,setProperties:{fullName:this.userid,color:"blue"}}),this.session.enqueue([e]),this.editorSession.sessionController.insertLocalCursor(),this.editorSession.sessionController.startEditing(),this.fontsize({data:this.basictool.fontsize.value})})}initFontList(e){var t,n,i,o,r;for(t=0,i=e.length;t0}selectFont(e){var t,n,i,o,r;for(t=o=0,r=(i=this.basictool.fonts.data).length;o{var t,n;return n=this.editorSession.sessionController.getSelectionController(),e.readonly?("edit"===e.action&&((t=o.cloneRange()).selectNode(i[0]),n.selectRange(t,!0)),this.hyperlinkController.removeHyperlinks(),this.hyperlinkController.addHyperlink(e.link)):(this.hyperlinkController.addHyperlink(e.link,e.text),i=this.editorSession.getSelectedHyperlinks(),(t=o.cloneRange()).selectNode(i[0]),n.selectRange(t,!0))})}unlink(e){return this.hyperlinkController.removeHyperlinks()}undo(e){return this.editorSession.undo()}redo(e){return this.editorSession.redo()}pathAsDataURL(e){return new Promise((t,n)=>{var i;return(i=e.asFileHandle()).read("binary").then(o=>{var r,a;return r=new Blob([o],{type:i.info.mime}),(a=new FileReader).onloadend=()=>2!==a.readyState?n(this.throwe(__("Unable to load file {0}",e))):t({data:a.result,fp:i}),a.readAsDataURL(r)}).catch(e=>n(__e(e)))})}image(e){return this.openDialog("FileDialog",{title:__("Select image file"),mimes:["image/.*"]}).then(e=>{var t;return t=e.file.path,this.pathAsDataURL(t).then(e=>{var t;return(t=new Image).style.position="absolute",t.style.left="-99999px",document.body.appendChild(t),t.onload=()=>{var n;return n=e.data.substring(e.data.indexOf(",")+1),this.textController.removeCurrentSelection(),this.imageController.insertImage(e.fp.info.mime,n,t.width,t.height),document.body.removeChild(t)},t.src=e.data}).catch(e=>this.error(__("Couldnt load image {0}",t),e))})}styles(e){if(e.data.item.data.name!==this.currentStyle)return this.editorSession.setCurrentParagraphStyle(e.data.item.data.name)}zoom(e){if(this.zoomHelper)return this.zoomHelper.setZoomLevel(e.data/100)}format(t){return this.openDialog(new e,{title:__("Add/Modify paragraph format"),data:this.resource}).then(e=>{})}closeDocument(e){var t;if(this.editorSession&&this.session)return this.eventSubscriptions.unsubscribeAll(),this.editorSession.sessionController.endEditing(),this.editorSession.sessionController.removeLocalCursor(),(t=new ops.OpRemoveMember).init({memberid:this.userid}),this.session.enqueue([t]),this.session.close(t=>t?this.error(__("Cannot close session {0}",t.toString()),t):(this.editorSession.sessionController.getMetadataController().unsubscribe(gui.MetadataController.signalMetadataChanged,this.metaChanged),this.editorSession.sessionController.getUndoManager().unsubscribe(gui.UndoManager.signalDocumentModifiedChanged,this.documentChanged),this.directFormattingCtl.unsubscribe(gui.DirectFormattingController.textStylingChanged,this.textStylingChanged),this.directFormattingCtl.unsubscribe(gui.DirectFormattingController.paragraphStylingChanged,this.textStylingChanged),this.editorSession.unsubscribe(n.EditorSession.signalParagraphChanged,this.paragrahStyleChanged),this.zoomHelper.unsubscribe(gui.ZoomHelper.signalZoomChanged,this.updateSlider),this.editorSession.unsubscribe(n.EditorSession.signalCommonStyleCreated,this.styleAdded),this.editorSession.destroy(t=>t?this.error(__("Cannot destroy editor session {0}",t.toString()),t):(this.editorSession=void 0,this.session.destroy(t=>t?this.error(__("Cannot destroy document session {0}",t.toString()),t):(core.Async.destroyAll([this.canvas.destroy],t=>t?this.error(__("Cannot destroy canvas {0}",t.toString()),t):(this.notify("Document closed"),e?e():void 0)),this.session=void 0,this.annotationController=void 0,this.directFormattingCtl=void 0,this.textController=void 0,this.imageController=void 0,this.ZoomHelper=void 0,this.metaChanged=void 0,this.documentChanged=void 0,this.textStylingChanged=void 0,this.paragrahStyleChanged=void 0,this.updateSlider=void 0,this.styleAdded=void 0,this.basictool.fonts.selected=-1,this.basictool.styles.selected=-1))))))}cleanup(e){if(this.editorSession)return e.preventDefault(),this.closeDocument(()=>this.quit())}},this.OS.register("OpenPage",n),(t=class e extends this.OS.GUI.BasicDialog{constructor(){super("HyperLinkDialog",e.scheme)}main(){var e,t;return super.main(),t=this.find("txtText"),e=this.find("txtLink"),this.data&&this.data.data&&(t.value=this.data.data.text,e.value=this.data.data.link,$(t).prop("disabled",this.data.data.readonly)),this.find("btnCancel").onbtclick=e=>this.quit(),this.find("btnOk").onbtclick=n=>{var i;return i={text:t.value,link:e.value,readonly:this.data.data.readonly,action:this.data.data.action},this.handle&&this.handle(i),this.quit()}}}).scheme='\n \n \n
\n \n
\n \n \n \n \n
\n \n
\n \n \n
\n \n \n
\n \n \n',(e=class e extends this.OS.GUI.BasicDialog{constructor(){super("FormatDialog",e.scheme)}main(){return super.main(),this.ui={aligment:{left:this.find("swleft"),right:this.find("swright"),center:this.find("swcenter"),justify:this.find("swjustify")},spacing:{left:this.find("spnleft"),right:this.find("spnright"),top:this.find("spntop"),bottom:this.find("spnbottom"),lineheight:this.find("spnlheight")},padding:{left:this.find("pspnleft"),right:this.find("pspnright"),top:this.find("pspntop"),bottom:this.find("pspnbottom")},style:{bold:this.find("swbold"),italic:this.find("switalic"),underline:this.find("swunderline"),color:this.find("txtcolor"),bgcolor:this.find("bgcolor")},font:{family:this.find("lstfont"),size:this.find("spnfsize")},formats:this.find("lstformats")},this.initStyleObject(),this.preview=$(this.find("preview")).find("p")[0],$(this.preview).css("padding","0").css("margin","0"),this.initUIEvent()}initStyleObject(){return this.currentStyle={aligment:this._api.switcher("left","right","center","justify"),spacing:{left:0,top:0,right:0,bottom:0,lineheight:0},padding:{left:0,top:0,right:0,bottom:0},style:{bold:!1,italic:!1,underline:!1,color:void 0,bgcolor:void 0},font:{family:void 0,size:12}}}initUIEvent(){var e,t,n,i,o,r;for(e in r=(e,t,n,i)=>this.ui[t][n][e]=e=>{var o;return o=e,i&&(o=i(e)),this.currentStyle[t][n]=o,this.previewStyle()},t=this.ui.aligment)t[e],r("onswchange","aligment",e,e=>e.data);for(e in n=this.ui.spacing)n[e],r("onvaluechange","spacing",e,e=>e.data);for(e in i=this.ui.padding)i[e],r("onvaluechange","padding",e,e=>e.data);for(e in o=this.ui.style)o[e],"color"!==e&&"bgcolor"!==e&&r("onswchange","style",e,e=>e.data);return r("onvaluechange","font","size"),$(this.ui.style.color).click(e=>this.openDialog("ColorPickerDialog").then(e=>(this.currentStyle.style.color=e,this.previewStyle()))),$(this.ui.style.bgcolor).click(e=>this.openDialog("ColorPickerDialog").then(e=>(this.currentStyle.style.bgcolor=e,this.previewStyle()))),this.data.data&&this.data.data.fonts&&(this.ui.font.family.data=this.data.data.fonts),r("onlistselect","font","family",e=>e.data.item.data),this.ui.formats.selected=-1,this.data.data&&this.data.data.formats&&(this.ui.formats.data=this.data.data.formats),this.ui.formats.onlistselect=e=>this.fromODFStyleFormat(e.data.item.data),this.ui.formats.selected=0,this.find("btok").onbtclick=e=>this.saveCurrentStyle(),this.find("btx").onbtclick=e=>this.quit(),this.find("bt-clone").onbtclick=e=>this.clone()}clone(){var e;if(e=this.ui.formats.selectedItem)return e=e.data,this.openDialog("PromptDialog",{title:__("Clone style: {0}",e.text),label:__("New style name:")}).then(t=>{var n;return t&&""!==t.trim()?(n=this.parent.editorSession.cloneParagraphStyle(e.name,t),this.ui.formats.push({text:t,name:n}),this.ui.formats.selected=this.ui.formats.data.length-1,this.notify(__("New style: {0} added",n))):this.notify(__("Abort: no style name is specified"))})}saveCurrentStyle(){var e,t;if(t=this.ui.formats.selectedItem)return t=t.data,e={"style:paragraph-properties":{"fo:margin-top":this.currentStyle.spacing.top+"mm","fo:margin-left":this.currentStyle.spacing.left+"mm","fo:margin-bottom":this.currentStyle.spacing.bottom+"mm","fo:margin-right":this.currentStyle.spacing.right+"mm","fo:padding-top":this.currentStyle.padding.top+"mm","fo:padding-left":this.currentStyle.padding.left+"mm","fo:padding-bottom":this.currentStyle.padding.bottom+"mm","fo:padding-right":this.currentStyle.padding.right+"mm","fo:line-height":this.currentStyle.spacing.lineheight>0?this.currentStyle.spacing.lineheight+"mm":"normal","fo:text-align":this.currentStyle.aligment.selected||"left"},"style:text-properties":{"fo:font-weight":this.currentStyle.style.bold?"bold":"normal","fo:font-style":this.currentStyle.style.italic?"italic":"normal","style:text-underline-style":this.currentStyle.style.underline?"solid":"none","fo:font-size":this.currentStyle.font.size+"pt","fo:font-name":this.currentStyle.font.family.text,"fo:color":this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000","fo:background-color":this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"}},this.parent.editorSession.updateParagraphStyle(t.name,e),this.notify(__("Paragraph format [{0}] is saved",t.text))}fromODFStyleFormat(e){var t,n,i;return this.initStyleObject(),t=new core.CSSUnits,n=e=>{var t,n,i,o,r;for(i=0,o=(n=this.ui.font.family.data).length;i=0&&(this.ui.font.family.selected=n)}if($(this.ui.style.color).css("background-color",this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000"),$(this.ui.style.bgcolor).css("background-color",this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"),(e=$(this.preview)).css("text-align",this.currentStyle.aligment.selected?this.currentStyle.aligment.selected:"left"),e.css("margin-left",this.currentStyle.spacing.left+"mm"),e.css("margin-right",this.currentStyle.spacing.right+"mm"),e.css("margin-top",this.currentStyle.spacing.top+"mm"),e.css("margin-bottom",this.currentStyle.spacing.bottom+"mm"),e.css("padding-left",this.currentStyle.padding.left+"mm"),e.css("padding-right",this.currentStyle.padding.right+"mm"),e.css("padding-top",this.currentStyle.padding.top+"mm"),e.css("padding-bottom",this.currentStyle.padding.bottom+"mm"),e.css("font-weight","normal").css("font-style","normal").css("text-decoration","none").css("line-height","normal"),this.currentStyle.style.bold&&e.css("font-weight","bold"),this.currentStyle.style.italic&&e.css("font-style","italic"),this.currentStyle.style.underline&&e.css("text-decoration","underline"),e.css("color",this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000"),e.css("background-color",this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"),e.css("font-size",this.currentStyle.font.size+"pt"),this.currentStyle.font.family&&e.css("font-family",this.currentStyle.font.family.name),this.currentStyle.spacing.lineheight>0)return e.css("line-height",this.currentStyle.spacing.lineheight+"mm")}}).scheme='\n \n
\n \n
\n \n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n \n
\n \n
\n \n
\n \n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n
\n \n
\n \n
\n \n
\n \n \n
\n \n \n
\n
\n
\n \n
\n \n
\n
\n

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce laoreet diam vestibulum massa malesuada quis dignissim libero blandit. Duis sit amet volutpat nisl.

\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n
'}).call(this); +(function(){var e,t,n;n=class n extends this.OS.application.BaseApplication{constructor(e){super("OpenPage",e)}main(){return this.eventSubscriptions=new core.EventSubscriptions,this.initToolbox(),this.userid=`${this.systemsetting.user.username}@${this.pid}`,this.currentStyle="",this.args&&this.args.length>0?this.open(this.args[0].path):this.newdoc(),this.resource={fonts:[],formats:[]},this.bindKey("ALT-N",()=>this.actionFile(this.name+"-New")),this.bindKey("ALT-O",()=>this.actionFile(this.name+"-Open")),this.bindKey("CTRL-S",()=>this.actionFile(this.name+"-Save")),this.bindKey("ALT-W",()=>this.actionFile(this.name+"-Saveas"))}menu(){return[{text:"__(File)",nodes:[{text:"__(New)",dataid:this.name+"-New",shortcut:"A-N"},{text:"__(Open)",dataid:this.name+"-Open",shortcut:"A-O"},{text:"__(Save)",dataid:this.name+"-Save",shortcut:"C-S"},{text:"__(Save as)",dataid:this.name+"-Saveas",shortcut:"A-W"}],onchildselect:e=>this.actionFile(e.data.item.data.dataid)}]}actionFile(e){var t;switch(t=()=>this.openDialog("FileDialog",{title:__("Save as"),file:this.currfile}).then(e=>{var t;return t=e.file.path.asFileHandle(),"file"===e.file.type&&(t=t.parent()),this.currfile.setPath(`${t.path}/${e.name}`),this.save()}),e){case this.name+"-Open":return this.openDialog("FileDialog",{title:__("Open file"),mimes:this.meta().mimes}).then(e=>this.open(e.file.path));case this.name+"-Save":return this.currfile.basename?this.save():t();case this.name+"-Saveas":return t();case this.name+"-New":return this.newdoc()}}newdoc(){var e;return e=this.meta().path+"/blank.odt",this.open(e,!0)}open(e,t){return this.pathAsDataURL(e).then(n=>(this.editorSession&&this.closeDocument(),this.initCanvas(),new odf.OdfContainer(n.data,n=>(this.canvas.setOdfContainer(n,!1),t?this.currfile="Untitled".asFileHandle():(this.currfile?this.currfile.setPath(e):this.currfile=e.asFileHandle(),this.scheme.apptitle=this.currfile.basename,this.notify(__("File {0} opened",e))))))).catch(e=>this.error(__("Problem read file {0}",e.toString()),e))}save(){var e;if(this.editorSession)return(e=this.canvas.odfContainer())?e.createByteArray(e=>(this.currfile.cache=new Blob([e],{type:"application/vnd.oasis.opendocument.text"}),this.currfile.write("application/vnd.oasis.opendocument.text").then(e=>(this.notify(__("File {0} saved",this.currfile.basename)),this.scheme.apptitle=this.currfile.basename,this.currfile.dirty=!1,this.editorFocus())).catch(e=>this.error(__("Cannot save file: {0}",e.toString()),e))),e=>this.error(__("Cannot create byte array from container: {0}",e.toString()||""),e)):this.error(__("No document container found"))}initToolbox(){var e,t,n;for(t in this.basictool={undo:this.find("btundo"),redo:this.find("btredo"),bold:this.find("btbold"),italic:this.find("btitalic"),underline:this.find("btunderline"),strike:this.find("btstrike"),note:this.find("btnote"),link:this.find("btlink"),unlink:this.find("btunlink"),image:this.find("btimage"),ac:this.find("btac"),al:this.find("btal"),ar:this.find("btar"),aj:this.find("btaj"),indent:this.find("btindent"),outdent:this.find("btoutdent"),fonts:this.find("font-list"),fontsize:this.find("font-size"),styles:this.find("format-list"),zoom:this.find("slzoom"),format:this.find("btformat")},e=(e,t)=>t["fonts"===e||"styles"===e?"onlistselect":"fontsize"===e||"zoom"===e?"onvaluechange":"onbtclick"]=t=>{if(this.directFormattingCtl&&this[e])return this[e](t),this.editorFocus()},n=this.basictool)e(t,n[t]);return this.find("btzoomfix").onbtclick=e=>this.zoom({data:100}),this.basictool.zoom.onvaluechanging=e=>this.find("lbzoom").text=Math.floor(e.data)+"%"}initCanvas(){var e;return(e=this.find("odfcanvas")).setAttribute("translate","no"),e.classList.add("notranslate"),this.canvas=new odf.OdfCanvas(e),this.documentChanged=e=>{if(!this.currfile.dirty)return this.currfile.dirty=!0,this.scheme.apptitle=this.currfile.basename+"*"},this.metaChanged=e=>{if(!this.currfile.dirty)return this.currfile.dirty=!0,this.scheme.apptitle=this.currfile.basename+"*"},this.textStylingChanged=e=>this.updateToolbar(e),this.paragrahStyleChanged=e=>{var t,n,i,o,r;if("style"===e.type){for(t=o=0,r=(i=this.basictool.styles.data).length;o{var n,i,o,r,a,s;if("paragraph"===t.family){for(r=0,a=(o=this.basictool.styles.data).length;r{var t;return t=Math.floor(100*e),this.basictool.zoom.value=t,this.find("lbzoom").text=t+"%"},this.canvas.enableAnnotations(!0,!0),this.canvas.addListener("statereadychange",()=>{var e,t;return this.session=new ops.Session(this.canvas),t={editInfoMarkersInitiallyVisible:!1,caretAvatarsInitiallyVisible:!1,caretBlinksOnRangeSelect:!0},this.editorSession=new n.EditorSession(this.session,this.userid,{viewOptions:t,directTextStylingEnabled:!0,directParagraphStylingEnabled:!0,paragraphStyleSelectingEnabled:!0,paragraphStyleEditingEnabled:!0,imageEditingEnabled:!0,hyperlinkEditingEnabled:!0,annotationsEnabled:!0,zoomingEnabled:!0,reviewModeEnabled:!1}),this.initFontList(this.editorSession.getDeclaredFonts()),this.initStyles(this.editorSession.getAvailableParagraphStyles()),this.directFormattingCtl=this.editorSession.sessionController.getDirectFormattingController(),this.directFormattingCtl.subscribe(gui.DirectFormattingController.textStylingChanged,this.textStylingChanged),this.directFormattingCtl.subscribe(gui.DirectFormattingController.paragraphStylingChanged,this.textStylingChanged),this.editorSession.subscribe(n.EditorSession.signalParagraphChanged,this.paragrahStyleChanged),this.hyperlinkController=this.editorSession.sessionController.getHyperlinkController(),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalCursorMoved,()=>this.updateHyperlinkButtons()),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalParagraphChanged,()=>this.updateHyperlinkButtons()),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalParagraphStyleModified,()=>this.updateHyperlinkButtons()),this.annotationController=this.editorSession.sessionController.getAnnotationController(),this.imageController=this.editorSession.sessionController.getImageController(),this.textController=this.editorSession.sessionController.getTextController(),this.zoomHelper=this.editorSession.getOdfCanvas().getZoomHelper(),this.zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged,this.updateSlider),this.updateSlider(this.zoomHelper.getZoomLevel()),this.editorSession.subscribe(n.EditorSession.signalCommonStyleCreated,this.styleAdded),this.editorSession.sessionController.setUndoManager(new gui.TrivialUndoManager),this.editorSession.sessionController.getUndoManager().subscribe(gui.UndoManager.signalDocumentModifiedChanged,this.documentChanged),this.editorSession.sessionController.getMetadataController().subscribe(gui.MetadataController.signalMetadataChanged,this.metaChanged),(e=new ops.OpAddMember).init({memberid:this.userid,setProperties:{fullName:this.userid,color:"blue"}}),this.session.enqueue([e]),this.editorSession.sessionController.insertLocalCursor(),this.editorSession.sessionController.startEditing(),this.fontsize({data:this.basictool.fontsize.value})})}initFontList(e){var t,n,i,o,r;for(t=0,i=e.length;t0}selectFont(e){var t,n,i,o,r;for(t=o=0,r=(i=this.basictool.fonts.data).length;o{var t,n;return n=this.editorSession.sessionController.getSelectionController(),e.readonly?("edit"===e.action&&((t=o.cloneRange()).selectNode(i[0]),n.selectRange(t,!0)),this.hyperlinkController.removeHyperlinks(),this.hyperlinkController.addHyperlink(e.link)):(this.hyperlinkController.addHyperlink(e.link,e.text),i=this.editorSession.getSelectedHyperlinks(),(t=o.cloneRange()).selectNode(i[0]),n.selectRange(t,!0))})}unlink(e){return this.hyperlinkController.removeHyperlinks()}undo(e){return this.editorSession.undo()}redo(e){return this.editorSession.redo()}pathAsDataURL(e){return new Promise((t,n)=>{var i;return(i=e.asFileHandle()).read("binary").then(o=>{var r,a;return r=new Blob([o],{type:i.info.mime}),(a=new FileReader).onloadend=()=>2!==a.readyState?n(this.throwe(__("Unable to load file {0}",e))):t({data:a.result,fp:i}),a.readAsDataURL(r)}).catch(e=>n(__e(e)))})}image(e){return this.openDialog("FileDialog",{title:__("Select image file"),mimes:["image/.*"]}).then(e=>{var t;return t=e.file.path,this.pathAsDataURL(t).then(e=>{var t;return(t=new Image).style.position="absolute",t.style.left="-99999px",document.body.appendChild(t),t.onload=()=>{var n;return n=e.data.substring(e.data.indexOf(",")+1),this.textController.removeCurrentSelection(),this.imageController.insertImage(e.fp.info.mime,n,t.width,t.height),document.body.removeChild(t)},t.src=e.data}).catch(e=>this.error(__("Couldnt load image {0}",t),e))})}styles(e){if(e.data.item.data.name!==this.currentStyle)return this.editorSession.setCurrentParagraphStyle(e.data.item.data.name)}zoom(e){if(this.zoomHelper)return this.zoomHelper.setZoomLevel(e.data/100)}format(t){return this.openDialog(new e,{title:__("Add/Modify paragraph format"),data:this.resource}).then(e=>{})}closeDocument(e){var t;if(this.editorSession&&this.session)return this.eventSubscriptions.unsubscribeAll(),this.editorSession.sessionController.endEditing(),this.editorSession.sessionController.removeLocalCursor(),(t=new ops.OpRemoveMember).init({memberid:this.userid}),this.session.enqueue([t]),this.session.close(t=>t?this.error(__("Cannot close session {0}",t.toString()),t):(this.editorSession.sessionController.getMetadataController().unsubscribe(gui.MetadataController.signalMetadataChanged,this.metaChanged),this.editorSession.sessionController.getUndoManager().unsubscribe(gui.UndoManager.signalDocumentModifiedChanged,this.documentChanged),this.directFormattingCtl.unsubscribe(gui.DirectFormattingController.textStylingChanged,this.textStylingChanged),this.directFormattingCtl.unsubscribe(gui.DirectFormattingController.paragraphStylingChanged,this.textStylingChanged),this.editorSession.unsubscribe(n.EditorSession.signalParagraphChanged,this.paragrahStyleChanged),this.zoomHelper.unsubscribe(gui.ZoomHelper.signalZoomChanged,this.updateSlider),this.editorSession.unsubscribe(n.EditorSession.signalCommonStyleCreated,this.styleAdded),this.editorSession.destroy(t=>t?this.error(__("Cannot destroy editor session {0}",t.toString()),t):(this.editorSession=void 0,this.session.destroy(t=>t?this.error(__("Cannot destroy document session {0}",t.toString()),t):(core.Async.destroyAll([this.canvas.destroy],t=>t?this.error(__("Cannot destroy canvas {0}",t.toString()),t):(this.notify("Document closed"),e?e():void 0)),this.session=void 0,this.annotationController=void 0,this.directFormattingCtl=void 0,this.textController=void 0,this.imageController=void 0,this.ZoomHelper=void 0,this.metaChanged=void 0,this.documentChanged=void 0,this.textStylingChanged=void 0,this.paragrahStyleChanged=void 0,this.updateSlider=void 0,this.styleAdded=void 0,this.basictool.fonts.selected=-1,this.basictool.styles.selected=-1))))))}cleanup(e){if(this.editorSession)return e.preventDefault(),this.closeDocument(()=>this.quit())}},this.OS.register("OpenPage",n),(t=class e extends this.OS.GUI.BasicDialog{constructor(){super("HyperLinkDialog",e.scheme)}main(){var e,t;return super.main(),t=this.find("txtText"),e=this.find("txtLink"),this.data&&this.data.data&&(t.value=this.data.data.text,e.value=this.data.data.link,$(t).prop("disabled",this.data.data.readonly)),this.find("btnCancel").onbtclick=e=>this.quit(),this.find("btnOk").onbtclick=n=>{var i;return i={text:t.value,link:e.value,readonly:this.data.data.readonly,action:this.data.data.action},this.handle&&this.handle(i),this.quit()}}}).scheme='\n \n \n
\n \n
\n \n \n \n \n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n
',(e=class e extends this.OS.GUI.BasicDialog{constructor(){super("FormatDialog",e.scheme)}main(){return super.main(),this.ui={aligment:{left:this.find("swleft"),right:this.find("swright"),center:this.find("swcenter"),justify:this.find("swjustify")},spacing:{left:this.find("spnleft"),right:this.find("spnright"),top:this.find("spntop"),bottom:this.find("spnbottom"),lineheight:this.find("spnlheight")},padding:{left:this.find("pspnleft"),right:this.find("pspnright"),top:this.find("pspntop"),bottom:this.find("pspnbottom")},style:{bold:this.find("swbold"),italic:this.find("switalic"),underline:this.find("swunderline"),color:this.find("txtcolor"),bgcolor:this.find("bgcolor")},font:{family:this.find("lstfont"),size:this.find("spnfsize")},formats:this.find("lstformats")},this.initStyleObject(),this.preview=$(this.find("preview")).find("p")[0],$(this.preview).css("padding","0").css("margin","0"),this.initUIEvent()}initStyleObject(){return this.currentStyle={aligment:this._api.switcher("left","right","center","justify"),spacing:{left:0,top:0,right:0,bottom:0,lineheight:0},padding:{left:0,top:0,right:0,bottom:0},style:{bold:!1,italic:!1,underline:!1,color:void 0,bgcolor:void 0},font:{family:void 0,size:12}}}initUIEvent(){var e,t,n,i,o,r;for(e in r=(e,t,n,i)=>this.ui[t][n][e]=e=>{var o;return o=e,i&&(o=i(e)),this.currentStyle[t][n]=o,this.previewStyle()},t=this.ui.aligment)t[e],r("onswchange","aligment",e,e=>e.data);for(e in n=this.ui.spacing)n[e],r("onvaluechange","spacing",e,e=>e.data);for(e in i=this.ui.padding)i[e],r("onvaluechange","padding",e,e=>e.data);for(e in o=this.ui.style)o[e],"color"!==e&&"bgcolor"!==e&&r("onswchange","style",e,e=>e.data);return r("onvaluechange","font","size"),$(this.ui.style.color).click(e=>this.openDialog("ColorPickerDialog").then(e=>(this.currentStyle.style.color=e,this.previewStyle()))),$(this.ui.style.bgcolor).click(e=>this.openDialog("ColorPickerDialog").then(e=>(this.currentStyle.style.bgcolor=e,this.previewStyle()))),this.data.data&&this.data.data.fonts&&(this.ui.font.family.data=this.data.data.fonts),r("onlistselect","font","family",e=>e.data.item.data),this.ui.formats.selected=-1,this.data.data&&this.data.data.formats&&(this.ui.formats.data=this.data.data.formats),this.ui.formats.onlistselect=e=>this.fromODFStyleFormat(e.data.item.data),this.ui.formats.selected=0,this.find("btok").onbtclick=e=>this.saveCurrentStyle(),this.find("btx").onbtclick=e=>this.quit(),this.find("bt-clone").onbtclick=e=>this.clone()}clone(){var e;if(e=this.ui.formats.selectedItem)return e=e.data,this.openDialog("PromptDialog",{title:__("Clone style: {0}",e.text),label:__("New style name:")}).then(t=>{var n;return t&&""!==t.trim()?(n=this.parent.editorSession.cloneParagraphStyle(e.name,t),this.ui.formats.push({text:t,name:n}),this.ui.formats.selected=this.ui.formats.data.length-1,this.notify(__("New style: {0} added",n))):this.notify(__("Abort: no style name is specified"))})}saveCurrentStyle(){var e,t;if(t=this.ui.formats.selectedItem)return t=t.data,e={"style:paragraph-properties":{"fo:margin-top":this.currentStyle.spacing.top+"mm","fo:margin-left":this.currentStyle.spacing.left+"mm","fo:margin-bottom":this.currentStyle.spacing.bottom+"mm","fo:margin-right":this.currentStyle.spacing.right+"mm","fo:padding-top":this.currentStyle.padding.top+"mm","fo:padding-left":this.currentStyle.padding.left+"mm","fo:padding-bottom":this.currentStyle.padding.bottom+"mm","fo:padding-right":this.currentStyle.padding.right+"mm","fo:line-height":this.currentStyle.spacing.lineheight>0?this.currentStyle.spacing.lineheight+"mm":"normal","fo:text-align":this.currentStyle.aligment.selected||"left"},"style:text-properties":{"fo:font-weight":this.currentStyle.style.bold?"bold":"normal","fo:font-style":this.currentStyle.style.italic?"italic":"normal","style:text-underline-style":this.currentStyle.style.underline?"solid":"none","fo:font-size":this.currentStyle.font.size+"pt","fo:font-name":this.currentStyle.font.family.text,"fo:color":this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000","fo:background-color":this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"}},this.parent.editorSession.updateParagraphStyle(t.name,e),this.notify(__("Paragraph format [{0}] is saved",t.text))}fromODFStyleFormat(e){var t,n,i;return this.initStyleObject(),t=new core.CSSUnits,n=e=>{var t,n,i,o,r;for(i=0,o=(n=this.ui.font.family.data).length;i=0&&(this.ui.font.family.selected=n)}if($(this.ui.style.color).css("background-color",this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000"),$(this.ui.style.bgcolor).css("background-color",this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"),(e=$(this.preview)).css("text-align",this.currentStyle.aligment.selected?this.currentStyle.aligment.selected:"left"),e.css("margin-left",this.currentStyle.spacing.left+"mm"),e.css("margin-right",this.currentStyle.spacing.right+"mm"),e.css("margin-top",this.currentStyle.spacing.top+"mm"),e.css("margin-bottom",this.currentStyle.spacing.bottom+"mm"),e.css("padding-left",this.currentStyle.padding.left+"mm"),e.css("padding-right",this.currentStyle.padding.right+"mm"),e.css("padding-top",this.currentStyle.padding.top+"mm"),e.css("padding-bottom",this.currentStyle.padding.bottom+"mm"),e.css("font-weight","normal").css("font-style","normal").css("text-decoration","none").css("line-height","normal"),this.currentStyle.style.bold&&e.css("font-weight","bold"),this.currentStyle.style.italic&&e.css("font-style","italic"),this.currentStyle.style.underline&&e.css("text-decoration","underline"),e.css("color",this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000"),e.css("background-color",this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"),e.css("font-size",this.currentStyle.font.size+"pt"),this.currentStyle.font.family&&e.css("font-family",this.currentStyle.font.family.name),this.currentStyle.spacing.lineheight>0)return e.css("line-height",this.currentStyle.spacing.lineheight+"mm")}}).scheme='\n \n
\n \n
\n \n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n \n
\n \n
\n \n
\n \n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n
\n \n
\n \n
\n \n
\n \n \n
\n \n \n
\n
\n
\n \n
\n \n
\n
\n

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce laoreet diam vestibulum massa malesuada quis dignissim libero blandit. Duis sit amet volutpat nisl.

\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n
'}).call(this); /* This is a generated file. DO NOT EDIT. diff --git a/OpenPage/build/debug/package.json b/OpenPage/build/debug/package.json index c67ada6..ebb23c3 100644 --- a/OpenPage/build/debug/package.json +++ b/OpenPage/build/debug/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.1.3-a", - "category":"Other", + "version":"0.1.4-a", + "category":"Office", "icon":"icon.png", "mimes":["application/vnd.oasis.opendocument.text"] } \ No newline at end of file diff --git a/OpenPage/build/release/OpenPage.zip b/OpenPage/build/release/OpenPage.zip index 9c51df264a029e7c1ab05552551a7666f84d8e94..7125c2df95676e15348af5b3d89bbd2999ace5f1 100644 GIT binary patch delta 716 zcmX?kNO{R&WxfD!W)?06Fj!F^wEgiu4ntlR1`u=lS&j%+2-ABH#}p=BkSG_I_?s|B z28OWdif1@}$(ZOSD(P@30D)3+Vo7Rxeo>{8m6Cs2T4r+UbhEP@vAm2xP3rLpJQKFC zF-+Jf{=#Zcf}Mw2(DOHVen(V2YC znvL7eMn5yJptQs;CT}|9eGX}$0;$QoHWE-pMkop<-roDJvngex2ZlVfZ-C-d5>O|DClK^8QJ3h++eU@HW4sOaRUg_4sWl(I~IZ)-4l zf2LBija|Eq9U~Ak0WmWWvj8#cb{ji3%`z5{U$=k0#IcWu2NtLxq4vxzY(UJuJ#!1k zHFj-ACJ_cih_8%V#mvvkzyQJ=ka$3l(;FXfh$@1@-6f&+q!}v%0|=ukGv#HN{t>7Q z98=S^A8<(3PZVNc@GnTs3rI{))yqu@@J6)~9*4kqlWNC^rFcc&vXM^-*73b$6 z>qLo2U}UnR=v*nrz>u4mnFrJsz>j1fNY`|(ha6Hdai`fBijy-^b5r#)N^*11jkfFg sabq_-69Wiyq8P1lgN-36CowNuFF&Ouz?+o~B+CwjEkO5kJphFU0I8$B+yDRo delta 673 zcmZ2-So!23W$^%SW)?065V+BFGoWLyT8G&dHU_iJ2gF`jG3rlVSRpbwE0BM3Oc3Yv zgzIdalVgH;fWm=6BGU`5v9U~!uV$OPBS>npZjc06*b!6G2rOjH?vt69t)u|ai^Ztv zyl2?BCQk@f2P#(#F`WD^SPjgI2a^&Y+xaFh2;=~A4~E15$%h>>&Gw<~_MwbG%ml>D zK+FQftlRBF*)+>oKptv0yTJy;?Ay(5a9m^OLH6tB`9f2eSZ)FpZR9iLh`8@t(=7(kd4Sv^BE(3qs0#Jp_1 z{FD-OZMP>}Se$Rd#K4db#M~(QZ1-?5_!p$+1tg}Y>gA>&>jZgwy3_*>Da)(-I2gb# zN-jom5=y`T1BVC2Xs$CH)9*askOYUp^Z=kiGM#5R7&4Rd^YjYx(lM;kd&nWB`t%Y9 hLveCOYHq4tMoDf?fHx}}$WV45YysM^{yqng2LO_tz*_(S diff --git a/OpenPage/package.json b/OpenPage/package.json index c67ada6..ebb23c3 100644 --- a/OpenPage/package.json +++ b/OpenPage/package.json @@ -6,8 +6,8 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.1.3-a", - "category":"Other", + "version":"0.1.4-a", + "category":"Office", "icon":"icon.png", "mimes":["application/vnd.oasis.opendocument.text"] } \ No newline at end of file diff --git a/RemoteCamera/README.md b/RemoteCamera/README.md index 978b415..ebdb26d 100644 --- a/RemoteCamera/README.md +++ b/RemoteCamera/README.md @@ -8,4 +8,5 @@ This application reauires the **tunel plugin** and the **ant-tunnel v4l2 publish on the server-side ## Change log +* v0.1.4-a: change app category * v0.1.2-a: user worker for jpeg decoding diff --git a/RemoteCamera/build/debug/README.md b/RemoteCamera/build/debug/README.md index 978b415..ebdb26d 100644 --- a/RemoteCamera/build/debug/README.md +++ b/RemoteCamera/build/debug/README.md @@ -8,4 +8,5 @@ This application reauires the **tunel plugin** and the **ant-tunnel v4l2 publish on the server-side ## Change log +* v0.1.4-a: change app category * v0.1.2-a: user worker for jpeg decoding diff --git a/RemoteCamera/build/debug/package.json b/RemoteCamera/build/debug/package.json index 65cf923..09eeaa5 100644 --- a/RemoteCamera/build/debug/package.json +++ b/RemoteCamera/build/debug/package.json @@ -7,8 +7,8 @@ "author": "", "email": "" }, - "version":"0.1.3-a", - "category":"Other", + "version":"0.1.4-a", + "category":"Graphics", "iconclass":"fa fa-camera", "mimes":["none"], "dependencies":["libjpeg@0.1.1-a", "Antunnel@0.1.8-a"], diff --git a/RemoteCamera/build/release/RemoteCamera.zip b/RemoteCamera/build/release/RemoteCamera.zip index 73542e7c9baf9f4296e3156ff0ca3f7e7778eac2..32fb901509822928fcb0d50fcf72a8997e321486 100644 GIT binary patch delta 477 zcmbQ~xW|z%z?+$civa|bR@4V=e#>`?nFY+!7GY%M1+fx8P5zU~$iR@f`G}AiqlAfW zqLo5&Mq*xiszPExfkJX(Nosn2QRU=M!lq#L49SU!9YFORlPyKRF`7&^5EJEaFG?)P z$V@Jt>?JmlMHysKvs5(;56o(i$VR@~d=RPoVl$Ze7@0&E5bm1nC@;mtz%V&hUP=Mv zCi9&E%=dwA24N16#CQV65x$$7u@|o zZ9FL2lGzv-3KEmE6Vp@mvWoNbkadE*5N#Nq7!Nc$o@H{Xf`FVT&}Av9$@wX%ML^}~ ziYN2POGV8AT9BKVnTJJw?fF?7tC<-XK$siF8P(DZ48_SAsky0o86~+n0p6@YcQG)q N17SPR&GPaf9svEXY&`$~ delta 457 zcmdnvIMb0Yz?+$civbMU=LK$F#dDjFg%QZw$ajjF7sNPXH1WA7BLjoy=2t9cjFTPM zbiwkQ?=Ukm@-hJx7<_$tycMXRb#fKkH%8;hh3ulN{v{cyMU(s3C$fN4Z0?kv!OR1* zhZ!WI%u&ta%*Z6dfUsL#jHz@N9|HpjvqM~jMCK-D=ILb>2Y4eifm}CPUtWsoKHp?- zd8v97*8&~HiKLx@VXY7YLy)VZi?6F*ZVI|F<~swJ?*o;CFb9e@SrG;Xu-(bUD3+u6 z9B3I2gATGjB~b>3g2d$P#Pn34tMl`aEd*(uT&o}@e^HEqp*T4sH8)i+qa-&6Sq&(V kCJQJ?sgz1FFr=g==cl9=fxXYl2C{}72-|_S{*eRm0BMF{y#N3J diff --git a/RemoteCamera/package.json b/RemoteCamera/package.json index 65cf923..09eeaa5 100644 --- a/RemoteCamera/package.json +++ b/RemoteCamera/package.json @@ -7,8 +7,8 @@ "author": "", "email": "" }, - "version":"0.1.3-a", - "category":"Other", + "version":"0.1.4-a", + "category":"Graphics", "iconclass":"fa fa-camera", "mimes":["none"], "dependencies":["libjpeg@0.1.1-a", "Antunnel@0.1.8-a"], diff --git a/RemoteDesktop/README.md b/RemoteDesktop/README.md index 2edaf2b..9dad03b 100644 --- a/RemoteDesktop/README.md +++ b/RemoteDesktop/README.md @@ -7,6 +7,6 @@ Further information on **wvnc**: [https://blog.lxsang.me/post/id/23](https://blo ## Change logs - +* v0.1.6 - Change category * v0.1.5 - add package dependencies and use the new **libwvnc** * v0.1.0 - adapt to the new AntOS API diff --git a/RemoteDesktop/build/debug/README.md b/RemoteDesktop/build/debug/README.md index bcfc2f0..9dad03b 100644 --- a/RemoteDesktop/build/debug/README.md +++ b/RemoteDesktop/build/debug/README.md @@ -1,5 +1,5 @@ # WVNC remote desktop -![](https://os.lxsang.me/repo/RemoteDesktop/RemoteDesktop.png) +![](https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteDesktop/screenshot.jpg) A web based VNC client allowing to control remote VNC desktop from browser. The application is based on **wvnc**, a protocol and API that uses web socket to communicate with remote VNC server. @@ -7,6 +7,6 @@ Further information on **wvnc**: [https://blog.lxsang.me/post/id/23](https://blo ## Change logs - +* v0.1.6 - Change category * v0.1.5 - add package dependencies and use the new **libwvnc** -* v0.1.0 - adapt to the new AntOS API \ No newline at end of file +* v0.1.0 - adapt to the new AntOS API diff --git a/RemoteDesktop/build/debug/package.json b/RemoteDesktop/build/debug/package.json index 5422089..9271086 100644 --- a/RemoteDesktop/build/debug/package.json +++ b/RemoteDesktop/build/debug/package.json @@ -6,9 +6,9 @@ "author": "", "email": "" }, - "version":"0.1.5-a", + "version":"0.1.6-a", "dependencies": ["libwvnc@0.1.2-a"], - "category":"Other", + "category":"Internet", "icon": "icon.png", "mimes":["none"] } \ No newline at end of file diff --git a/RemoteDesktop/build/release/RemoteDesktop.zip b/RemoteDesktop/build/release/RemoteDesktop.zip index c903c3673df54860bf9cdf627dab787c3791fc67..ef698a93b011b624611b4317c67b5b6f1696a81a 100644 GIT binary patch delta 693 zcmbQWUFgPkA-(`_W)?065O7~nAGH01KFje;9+;2^P-wEF*nd6{!^ZwZf)Nt~gAvnY zT@k~8qQr8&^vsfs(xlSj)S~44ypq(s620X7T>YGi;>5gk{lvVI{Nj{s-Nb@|V*T92 z;*!)N{h-v`{E}3c)Z*-t`~v;rEm4N|- zQEk%CWnjnz#))1*UOKw_;6VipE*=z{6pE)u&tj1RhsbmVpjVkPN~YV)W|6i5+2+r7 z-}(wxp3=Q&&^>QkT z6Z6vba#Qt-QVa6+gHm(zOHy4@i?d7e3s8A_1$mqEv+WrtpU6o=vLO*@?Bs`;|9L@- zri?X*q=Dv3Pc|>!$!I$HW3e5pe@RAa(PZ-yYZj1-&9=F3S;4IB`)9E5G4jA%3X6m7<0 z(+y^^h}ofd9q4@?6jf&83=9Q{$=QkNsd`z(`FZH(Pj8&XA{AOK!N8E2oSz2_=5%xw zc{@Mxegv8c!rUlk=g2WI6enk-=BDapl;q~1Yn-k#n?*{lO`d@vB{exeCAA3X0Aw|w zke>b#Xg$*^<>|b$S){=sJpJ}e7Ae(T`Ya6PWqHZ*iN(2KZLDk{t2u!Xl!SU`vH*Di DG0~)X diff --git a/RemoteDesktop/package.json b/RemoteDesktop/package.json index 5422089..9271086 100644 --- a/RemoteDesktop/package.json +++ b/RemoteDesktop/package.json @@ -6,9 +6,9 @@ "author": "", "email": "" }, - "version":"0.1.5-a", + "version":"0.1.6-a", "dependencies": ["libwvnc@0.1.2-a"], - "category":"Other", + "category":"Internet", "icon": "icon.png", "mimes":["none"] } \ No newline at end of file diff --git a/ShowCase/build/debug/package.json b/ShowCase/build/debug/package.json index 1e470fe..2014f94 100644 --- a/ShowCase/build/debug/package.json +++ b/ShowCase/build/debug/package.json @@ -7,8 +7,8 @@ "email": "xsang.le@gmail.com", "licences": "GPLv3" }, - "version":"0.0.6-a", - "category":"Other", + "version":"0.0.7-a", + "category":"Utility", "mimes":["none"], "iconclass": "fa fa-delicious", "locales": { diff --git a/ShowCase/build/release/ShowCase.zip b/ShowCase/build/release/ShowCase.zip index addad24d745a63fddb21e7f680f60eb344b12544..1d1b1124552a002fc4a5c7f31672da9d8e4b1cea 100644 GIT binary patch delta 358 zcmccVdE3(@z?+$civa|ZR@4VgX1i|02xNmW2N35bX6ET77Z-D(D4Q&-T*sRXR6eQ8 z`fwRgZQ14};>?V)=DLYWI$R1spp=|glA4}hRHk;-Y#(v zz1c$Y0w*sclL!Oc`pI)tr0apU!mSPPMv)H+dhtgo3Mdc4oFIj8pblgOxjMS|y6WYo zAZtT$CeW!oa4jIl3Lq{>OwLYBPu0sR&d&?*o-D7z1#;fxy~@&39!yZTWEG>CIaxRF+CNiFFy}mC%4n&c`6d2 z+L8?CAm51s)AnpQHlbZ3&NZz=Cdg?Fa)_ey7;>4<))x%o4j9HTB#kV a0PO1IVxY5G*+9Bkflw6a)OA2P1_l7i8ByW@ diff --git a/ShowCase/package.json b/ShowCase/package.json index 1e470fe..2014f94 100644 --- a/ShowCase/package.json +++ b/ShowCase/package.json @@ -7,8 +7,8 @@ "email": "xsang.le@gmail.com", "licences": "GPLv3" }, - "version":"0.0.6-a", - "category":"Other", + "version":"0.0.7-a", + "category":"Utility", "mimes":["none"], "iconclass": "fa fa-delicious", "locales": { diff --git a/SystemControl/build/debug/package.json b/SystemControl/build/debug/package.json index e36b7c5..3613156 100644 --- a/SystemControl/build/debug/package.json +++ b/SystemControl/build/debug/package.json @@ -14,8 +14,8 @@ "Antunnel@0.1.8-a" ], "version":"0.1.9-a", - "category":"Other", - "iconclass":"fa fa-android", + "category":"System", + "iconclass":"fa fa-tachometer", "mimes":["none"], "locale": {} } \ No newline at end of file diff --git a/SystemControl/build/release/SystemControl.zip b/SystemControl/build/release/SystemControl.zip index d1855eb35f7dec24c1ad18a3481504e12774f6d0..55cf59f334ebabde05fa0aa24818368b6a40942b 100644 GIT binary patch delta 209 zcmezHNASxZLEZpwW)?065SX;0zL9q;FXMM+W*~DrI}76(MqVH*C`GZudle%C!>a8M zSQ#@I*@7#JOHy;E`?51iag`({XXNLmmZTO<&tqpa1?g;G#?A=DOhC-MeHlB8W8ER1bis1JYgweF=CU&~17oMcr!AIFu+|p W-Jp&|n(^dxpE?#fHqTlXp!)&(>O+qJ delta 226 zcmezJNASZRLEZpwW)?065ZF4qtdVysFXMM+W*~DrI}76(MqVH*=o4#1~PSeL@kRkn9*0uVuEV=^z*eWx*+A#|JSleo6TfrWXMg-%+t#%4)A7V5@CS2 j5-1-uL+|DFa5e@85atHE9Y!3T9#F?3$L3ng0u%uN=SoL% diff --git a/SystemControl/package.json b/SystemControl/package.json index e36b7c5..3613156 100644 --- a/SystemControl/package.json +++ b/SystemControl/package.json @@ -14,8 +14,8 @@ "Antunnel@0.1.8-a" ], "version":"0.1.9-a", - "category":"Other", - "iconclass":"fa fa-android", + "category":"System", + "iconclass":"fa fa-tachometer", "mimes":["none"], "locale": {} } \ No newline at end of file diff --git a/VizApp/build/debug/package.json b/VizApp/build/debug/package.json index f63ba9d..0215429 100644 --- a/VizApp/build/debug/package.json +++ b/VizApp/build/debug/package.json @@ -8,7 +8,7 @@ "licences": "GPLv3" }, "version":"0.0.2-a", - "category":"Office", - "iconclass": "fa fa-sitemap", + "category":"Graphics", + "iconclass": "bi bi-bounding-box", "mimes":["text/.*graphviz"] } diff --git a/VizApp/build/release/VizApp.zip b/VizApp/build/release/VizApp.zip index 3233d780c19b2cad333267852798aa15558272b8..1e78156bb354914c8af6967c7e2c8d0c59d0f060 100644 GIT binary patch delta 465 zcmaDbIpX=`2)+PsW)?065V*dgK4^0za~=~5h&A~d({f%AgSEnuA(D}SA#!^FyO;!{ zzI#z(K}KeBv62p#0uU%=CgHUKWD;ROct~P8W5#?Y1_lu32742kC{E5u%}v$ID9OzU@J7{mknxsx z3s5Zxb0X_uI5Az8Q%nLJ64TFch)G!#Gcz#cCT8a8B^MW?8}s()+2i_*VhkY6j$+JH z*6ID6Vxlf6{ssD(2St@7yBI@3Vsdt3da7PlaeiKaH!B-R0V@!S0#$G25Cif6Q~hGG diff --git a/VizApp/package.json b/VizApp/package.json index f63ba9d..0215429 100644 --- a/VizApp/package.json +++ b/VizApp/package.json @@ -8,7 +8,7 @@ "licences": "GPLv3" }, "version":"0.0.2-a", - "category":"Office", - "iconclass": "fa fa-sitemap", + "category":"Graphics", + "iconclass": "bi bi-bounding-box", "mimes":["text/.*graphviz"] } diff --git a/packages.json b/packages.json index ae87a92..58193f5 100644 --- a/packages.json +++ b/packages.json @@ -3,9 +3,9 @@ "pkgname": "About", "name": "About AntOS", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/README.md", - "category": "Other", + "category": "Utility", "author": "Xuan Sang LE", - "version": "0.0.6-a", + "version": "0.0.7-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/build/release/About.zip" }, @@ -43,9 +43,9 @@ "pkgname": "Archive", "name": "Archive", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Archive/README.md", - "category": "Other", + "category": "Utility", "author": "Xuan Sang LE", - "version": "0.0.2-a", + "version": "0.0.3-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Archive/build/release/Archive.zip" }, @@ -63,9 +63,9 @@ "pkgname": "Booklet", "name": "Booklet", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Booklet/README.md", - "category": "Other", + "category": "Office", "author": "Xuan Sang LE", - "version": "0.2.2-a", + "version": "0.2.3-a", "dependencies": ["SimpleMDE@1.11.2-r","Katex@0.11.1-r"],"mimes":["dir"], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Booklet/build/release/Booklet.zip" }, @@ -73,9 +73,9 @@ "pkgname": "Clipper", "name": "Clipper", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Clipper/README.md", - "category": "Other", + "category": "Utility", "author": "Xuan Sang LE", - "version": "0.1.2-a", + "version": "0.1.3-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Clipper/build/release/Clipper.zip" }, @@ -93,9 +93,9 @@ "pkgname": "DiffEditor", "name": "Diff Editor", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/DiffEditor/README.md", - "category": "Other", + "category": "Development", "author": "", - "version": "0.1.2-a", + "version": "0.1.3-a", "dependencies": ["AceDiff@3.0.3-r"], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/DiffEditor/build/release/DiffEditor.zip" }, @@ -103,19 +103,29 @@ "pkgname": "Docify", "name": "Docify", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/README.md", - "category": "Other", + "category": "Office", "author": "", - "version": "0.0.6-a", + "version": "0.0.7-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/build/release/Docify.zip" }, + { + "pkgname": "Dockman", + "name": "Remote Docker Manager", + "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Dockman/README.md", + "category": "Development", + "author": "Xuan Sang LE", + "version": "0.1.0-b", + "dependencies": [], + "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Dockman/build/release/Dockman.zip" + }, { "pkgname": "GPClient", "name": "Generic Purpose client", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GPClient/README.md", "category": "Internet", "author": "Xuan Sang LE", - "version": "0.1.0-a", + "version": "0.1.2-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GPClient/build/release/GPClient.zip" }, @@ -123,9 +133,9 @@ "pkgname": "GraphEditor", "name": "Graph Editor", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GraphEditor/README.md", - "category": "Office", + "category": "Graphics", "author": "Xuan Sang LE", - "version": "0.0.8-a", + "version": "0.0.9-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GraphEditor/build/release/GraphEditor.zip" }, @@ -173,9 +183,9 @@ "pkgname": "LuaPlayground", "name": "LuaPlayground", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/README.md", - "category": "System", + "category": "Development", "author": "Xuan Sang LEs", - "version": "0.0.6-a", + "version": "0.0.7-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/build/release/LuaPlayground.zip" }, @@ -183,9 +193,9 @@ "pkgname": "MarkOn", "name": "Markdown editor", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/README.md", - "category": "Utils", + "category": "Office", "author": "Xuan Sang LE", - "version": "0.0.7-a", + "version": "0.0.8-a", "dependencies": ["SimpleMDE@1.11.2-r"],"mimes":["text/.*"], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/build/release/MarkOn.zip" }, @@ -203,9 +213,9 @@ "pkgname": "OpenPage", "name": "OpenPage", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/OpenPage/README.md", - "category": "Other", + "category": "Office", "author": "Xuan Sang LE", - "version": "0.1.3-a", + "version": "0.1.4-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/OpenPage/build/release/OpenPage.zip" }, @@ -223,9 +233,9 @@ "pkgname": "RemoteCamera", "name": "Remote Camera", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteCamera/README.md", - "category": "Other", + "category": "Graphics", "author": "", - "version": "0.1.3-a", + "version": "0.1.4-a", "dependencies": ["libjpeg@0.1.1-a","Antunnel@0.1.8-a"], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteCamera/build/release/RemoteCamera.zip" }, @@ -233,19 +243,19 @@ "pkgname": "RemoteDesktop", "name": "WVNC remote desktop", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteDesktop/README.md", - "category": "Other", + "category": "Internet", "author": "", - "version": "0.1.5-a", - "dependencies": ["libwvnc@0.1.2-a"],"category":"Other","icon":"icon.png","mimes":["none"], + "version": "0.1.6-a", + "dependencies": ["libwvnc@0.1.2-a"],"category":"Internet","icon":"icon.png","mimes":["none"], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteDesktop/build/release/RemoteDesktop.zip" }, { "pkgname": "ShowCase", "name": "ShowCase", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/README.md", - "category": "Other", + "category": "Utility", "author": "Xuan Sang LE", - "version": "0.0.6-a", + "version": "0.0.7-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/build/release/ShowCase.zip" }, @@ -263,10 +273,10 @@ "pkgname": "SystemControl", "name": "System monitoring", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/SystemControl/README.md", - "category": "Other", + "category": "System", "author": "", "version": "0.1.9-a", - "dependencies": ["Antunnel@0.1.8-a"],"version":"0.1.9-a","category":"Other","iconclass":"fafa-android","mimes":["none"], + "dependencies": ["Antunnel@0.1.8-a"],"version":"0.1.9-a","category":"System","iconclass":"fafa-tachometer","mimes":["none"], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/SystemControl/build/release/SystemControl.zip" }, { @@ -283,7 +293,7 @@ "pkgname": "VizApp", "name": "Viz editor", "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/VizApp/README.md", - "category": "Office", + "category": "Graphics", "author": "Xuan Sang LE", "version": "0.0.2-a", "dependencies": [], @@ -295,7 +305,7 @@ "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/vTerm/README.md", "category": "System", "author": "Xuan Sang LE", - "version": "0.1.13-a", + "version": "0.1.14-a", "dependencies": ["Antunnel@0.1.8-a","xTerm@4.8.1-r"], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/vTerm/build/release/vTerm.zip" }, diff --git a/vTerm/README.md b/vTerm/README.md index 72412c6..1e95ff7 100644 --- a/vTerm/README.md +++ b/vTerm/README.md @@ -12,6 +12,7 @@ VTerm depends on the server side **tunnel** plugin and the AntOS **Antunnel** client side package ## Change logs +- v0.1.14-a: Change app icon - v0.1.12-a: Add copy/paste shortcuts (CTRL+SHIFT+C/ CTRL+SHIFT+V) - v0.1.9-a: Update dependencies to latest - v0.1.6-a: Add dependencies to package meta-data \ No newline at end of file diff --git a/vTerm/build/debug/README.md b/vTerm/build/debug/README.md index 72412c6..1e95ff7 100644 --- a/vTerm/build/debug/README.md +++ b/vTerm/build/debug/README.md @@ -12,6 +12,7 @@ VTerm depends on the server side **tunnel** plugin and the AntOS **Antunnel** client side package ## Change logs +- v0.1.14-a: Change app icon - v0.1.12-a: Add copy/paste shortcuts (CTRL+SHIFT+C/ CTRL+SHIFT+V) - v0.1.9-a: Update dependencies to latest - v0.1.6-a: Add dependencies to package meta-data \ No newline at end of file diff --git a/vTerm/build/debug/package.json b/vTerm/build/debug/package.json index e3fc5d6..b62db2d 100644 --- a/vTerm/build/debug/package.json +++ b/vTerm/build/debug/package.json @@ -6,9 +6,9 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.1.13-a", + "version":"0.1.14-a", "category":"System", - "iconclass":"fa fa-terminal", + "iconclass":"bi bi-terminal-fill", "mimes":["none"], "dependencies": [ "Antunnel@0.1.8-a", diff --git a/vTerm/build/release/vTerm.zip b/vTerm/build/release/vTerm.zip index 84a62c9401306487cd69f94327c1871a8604dc60..2e70a76dcfde7cde2ffd31461f4d1f745816a419 100644 GIT binary patch delta 317 zcmbQCxl5Bbz?+$civa}KSJqGDRpA9vL5&l|BBn4gFihEK_mNS=L^sh&!8s!_FFjQu zv7kU9GdVwRvKrG$u+p%}59?n6mA;yMhv^lg$>ihA`a(&W3Q3u|C8-u#gDFb{|^dAZOfFkK^TjB4lPJ;GX%AXmVR1{%);b|Q>;1QaPqOwLYB zPu0sR&d&?*W@Hj!fO{h-^~dua3xQfdm>s4GOn;kfFCyj)GW}bsYv3xN7zlHtsM#aL hz)+l=k(!&Tmr;_N6X4Ct29jq5LQzHrhJIlX4*=~)Q-%Nl delta 244 zcmdm`IYW~-z?+$civa}sr<6_PRpA9vLH{k^XO=TDFqCh!`^Y%ihiL&=^l$IdhNnQ$ zr;~p&y<#+;{DfJbH!V>iEm5~5wJ0|;FLARf%WXzxpaGki*$(r77?V#5T>{hdgpE;6 zo_tSOD-vWE+*F{+JYa{wh@(J}g2d$P#Pn3Xtm6E<0B=Sn5eB$pgHnGy-?0#=1%%mQ dn!xmx$%!IjV0)`Xq#0*To+cv4mMaXB0syKrO1S_4 diff --git a/vTerm/package.json b/vTerm/package.json index e3fc5d6..b62db2d 100644 --- a/vTerm/package.json +++ b/vTerm/package.json @@ -6,9 +6,9 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.1.13-a", + "version":"0.1.14-a", "category":"System", - "iconclass":"fa fa-terminal", + "iconclass":"bi bi-terminal-fill", "mimes":["none"], "dependencies": [ "Antunnel@0.1.8-a",