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 b04fdb6..15ff1e9 100644 Binary files a/About/build/release/About.zip and b/About/build/release/About.zip differ 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 4384228..0a826ba 100644 Binary files a/Archive/build/release/Archive.zip and b/Archive/build/release/Archive.zip differ 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 fcd8292..919b517 100644 Binary files a/Booklet/build/release/Booklet.zip and b/Booklet/build/release/Booklet.zip differ 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 06d037e..37d2e35 100644 Binary files a/Clipper/build/release/Clipper.zip and b/Clipper/build/release/Clipper.zip differ diff --git a/Clipper/package.json b/Clipper/package.json index e126fa2..5e04d2a 100644 --- a/Clipper/package.json +++ b/Clipper/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/DiffEditor/build/debug/package.json b/DiffEditor/build/debug/package.json index f6b0c77..f4df451 100644 --- a/DiffEditor/build/debug/package.json +++ b/DiffEditor/build/debug/package.json @@ -7,9 +7,9 @@ "author": "", "edsdmail": "" }, - "version":"0.1.2-a", - "category":"Other", - "iconclass":"fa fa-adn", + "version":"0.1.3-a", + "category":"Development", + "iconclass":"bi bi-file-diff-fill", "mimes":["none"], "dependencies":["AceDiff@3.0.3-r"], "locale": {} diff --git a/DiffEditor/build/release/DiffEditor.zip b/DiffEditor/build/release/DiffEditor.zip index 516aed2..bd5d411 100644 Binary files a/DiffEditor/build/release/DiffEditor.zip and b/DiffEditor/build/release/DiffEditor.zip differ diff --git a/DiffEditor/package.json b/DiffEditor/package.json index f6b0c77..f4df451 100644 --- a/DiffEditor/package.json +++ b/DiffEditor/package.json @@ -7,9 +7,9 @@ "author": "", "edsdmail": "" }, - "version":"0.1.2-a", - "category":"Other", - "iconclass":"fa fa-adn", + "version":"0.1.3-a", + "category":"Development", + "iconclass":"bi bi-file-diff-fill", "mimes":["none"], "dependencies":["AceDiff@3.0.3-r"], "locale": {} diff --git a/Docify/README.md b/Docify/README.md index 6b3a96f..f87a810 100644 --- a/Docify/README.md +++ b/Docify/README.md @@ -2,6 +2,7 @@ Simple PDF document manager ## Change logs +- v0.0.7-a: Change category and icon - v0.0.6-a: Add print dialog (support server side printing) - v0.0.5-a: Fix delete file bug - v0.0.4-a: Display file size in entry meta-data diff --git a/Docify/build/debug/README.md b/Docify/build/debug/README.md index 6b3a96f..f87a810 100644 --- a/Docify/build/debug/README.md +++ b/Docify/build/debug/README.md @@ -2,6 +2,7 @@ Simple PDF document manager ## Change logs +- v0.0.7-a: Change category and icon - v0.0.6-a: Add print dialog (support server side printing) - v0.0.5-a: Fix delete file bug - v0.0.4-a: Display file size in entry meta-data diff --git a/Docify/build/debug/main.js b/Docify/build/debug/main.js index a851837..6a5f844 100644 --- a/Docify/build/debug/main.js +++ b/Docify/build/debug/main.js @@ -1 +1 @@ -(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 +(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 ae146e2..9831184 100644 Binary files a/Docify/build/release/Docify.zip and b/Docify/build/release/Docify.zip differ 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 0000000..3e90fba Binary files /dev/null and b/Dockman/build/release/Dockman.zip differ 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 d95db47..efb6dad 100644 Binary files a/GPClient/build/release/GPClient.zip and b/GPClient/build/release/GPClient.zip differ 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 187c0c5..9ee61e6 100644 Binary files a/GraphEditor/build/release/GraphEditor.zip and b/GraphEditor/build/release/GraphEditor.zip differ 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 f7539f5..30503c7 100644 Binary files a/LuaPlayground/build/release/LuaPlayground.zip and b/LuaPlayground/build/release/LuaPlayground.zip differ 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 5ba2cd8..35ff798 100644 Binary files a/MarkOn/build/release/MarkOn.zip and b/MarkOn/build/release/MarkOn.zip differ diff --git a/MarkOn/package.json b/MarkOn/package.json index 9fb7580..260dbea 100644 --- a/MarkOn/package.json +++ b/MarkOn/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/MediaPlayer/package.json b/MediaPlayer/package.json index e48bd71..aab4e34 100644 --- a/MediaPlayer/package.json +++ b/MediaPlayer/package.json @@ -7,7 +7,7 @@ "email": "xsang.le@gmail.com" }, "version":"0.0.8-a", - "category":"Multimedia", + "category":"Media", "iconclass":"fa fa-headphones", "mimes":["none"] } \ No newline at end of file diff --git a/OpenPage/build/debug/main.js b/OpenPage/build/debug/main.js index 1af1e8d..f25515a 100644 --- a/OpenPage/build/debug/main.js +++ b/OpenPage/build/debug/main.js @@ -1,4 +1,4 @@ -(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); +(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 9c51df2..7125c2d 100644 Binary files a/OpenPage/build/release/OpenPage.zip and b/OpenPage/build/release/OpenPage.zip differ 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 73542e7..32fb901 100644 Binary files a/RemoteCamera/build/release/RemoteCamera.zip and b/RemoteCamera/build/release/RemoteCamera.zip differ 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 c903c36..ef698a9 100644 Binary files a/RemoteDesktop/build/release/RemoteDesktop.zip and b/RemoteDesktop/build/release/RemoteDesktop.zip differ 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 addad24..1d1b112 100644 Binary files a/ShowCase/build/release/ShowCase.zip and b/ShowCase/build/release/ShowCase.zip differ 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 d1855eb..55cf59f 100644 Binary files a/SystemControl/build/release/SystemControl.zip and b/SystemControl/build/release/SystemControl.zip differ 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 3233d78..1e78156 100644 Binary files a/VizApp/build/release/VizApp.zip and b/VizApp/build/release/VizApp.zip differ 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 84a62c9..2e70a76 100644 Binary files a/vTerm/build/release/vTerm.zip and b/vTerm/build/release/vTerm.zip differ 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",