openc3-cosmos-tool-admin 7.4.0 → 7.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/tools/admin/{ArrayWidget-CIDdZjk3-ec1730c4177a34566ed5.js → ArrayWidget-_X_afgHR-c362b2dc96501ef17923.js} +2 -2
- data/tools/admin/{ArrayplotWidget-BfO1atvG-de9fd2732649b1be4d3c.js → ArrayplotWidget-BUH82FI4-22a43e9e82d6ae48dd0f.js} +1 -1
- data/tools/admin/{BarColumn-CHX_3ye3-7dd61cd495a0c538da4c.js → BarColumn-B_V83WMV-f4bed304b04724bc62a7.js} +1 -1
- data/tools/admin/{BlockWidget-DSbunlY_-62d6727a1d5a31c3a0ef.js → BlockWidget-DKedrbWf-eafb2c3b2a733d52603b.js} +2 -2
- data/tools/admin/{BridgesTab-DDuKJPFX-388b57d1ea5f49094fc6.js → BridgesTab-DDuKJPFX-163e7f948c558ff19580.js} +1 -1
- data/tools/admin/{ButtonWidget-BB4ZOCI8-c9853dafa3d8751b4799.js → ButtonWidget-DB3HWmyA-f1cf159391eba950cb0b.js} +1 -1
- data/tools/admin/{CanvasWidget-DsyMt7xW-4bef82b3023c55f379f3.js → CanvasWidget-D9EH5pzn-a20e8e0b72fdede3e077.js} +1 -1
- data/tools/admin/CanvasdotWidget-BlE7J1N4-04958b3ce7522ce1ef01.js +1 -0
- data/tools/admin/{CanvasimageWidget-DY1DDf0a-447454aee48d92185e98.js → CanvasimageWidget-BlIBXSax-f45992326ae677ab5910.js} +1 -1
- data/tools/admin/{CanvasimagevalueWidget-0lc2cCPV-d5f0cd5f3d5a93a5b051.js → CanvasimagevalueWidget-DXxbcD-Q-b4cfb354ad7afed39499.js} +1 -1
- data/tools/admin/{CanvaslabelWidget-C6TDW9WO-58c1646a49fa5fe5a3ff.js → CanvaslabelWidget-3GsIsHNJ-17b7d5c93d51c2c28bb0.js} +1 -1
- data/tools/admin/{CanvaslabelvalueWidget-Cf_dcDW2-7f2990654255dcf30ddb.js → CanvaslabelvalueWidget-Cccis43F-949ff2d521268924a9c8.js} +1 -1
- data/tools/admin/CanvaslineWidget-w07GyddB-2868f75c0aa64dc31d7c.js +1 -0
- data/tools/admin/{CanvaslinevalueWidget-CKpjqlKA-8f34f70483fe2793c37b.js → CanvaslinevalueWidget-CuTyiORB-9f7914e65566e3373a43.js} +1 -1
- data/tools/admin/{CheckbuttonWidget-BWXinMaT-14d2dd4b439cbbaccdb9.js → CheckbuttonWidget-7b-uK9Tk-8313dac77046352b829d.js} +1 -1
- data/tools/admin/ComboboxWidget-CdmrG6UT-6d83bad12c9f2790ac0c.js +1 -0
- data/tools/admin/{DateWidget-qUbLzQsX-708e35a5b74dec88415b.js → DateWidget-D1pxOAks-c15a0d6f74bb171728bc.js} +1 -1
- data/tools/admin/{DetailsDialog-CLPj0nP0-9dcc472124933da9a31b.js → DetailsDialog-CrP3epOv-70a8888fb41c092f2202.js} +1 -1
- data/tools/admin/{DynamicWidget-yna_ejyc-2d713c62a6c8060e206c.js → DynamicWidget-yna_ejyc-5ff7d869eaf296e87b56.js} +1 -1
- data/tools/admin/{FilechecksumWidget-DqNThsOX-2bc76d97aea4fc77908f.js → FilechecksumWidget-eMy16t1i-c197ff1a5da62dc3a3e5.js} +1 -1
- data/tools/admin/{FiledisplayWidget-BRhhiVEs-75f94e57b68943abb2d9.js → FiledisplayWidget-B-hR67mo-2a79cdf08ab6e7d2d544.js} +1 -1
- data/tools/admin/{FormatvalueWidget-pEjAh0h2-c0d99c24a0e3e13cbbd7.js → FormatvalueWidget-lUNlLWlR-cbde2c8a1ec187b609b8.js} +1 -1
- data/tools/admin/Graph--wiWQKh0-5a71bbaa336ac4303aba.js +1 -0
- data/tools/admin/{GraphWidget-BZjBkefj-3075e0b9efe04ad89afa.js → GraphWidget-BvyRvV66-1ace5c9e6415d0462ca4.js} +1 -1
- data/tools/admin/{HorizontalWidget-Brag6E4y-666e6bb436ada6d4e41a.js → HorizontalWidget-DKjAFowf-873af6a0530882a6ddea.js} +1 -1
- data/tools/admin/{HorizontalboxWidget-BnkH4cVq-71cecf05179743285077.js → HorizontalboxWidget-ge9b4747-6bbb3c38cd7033cc9511.js} +1 -1
- data/tools/admin/HorizontallineWidget-BX8YItd_-8ed648fadbcd356e9a5f.js +1 -0
- data/tools/admin/{IframeWidget-Ciu5u58E-2687a1f57329be92f03b.js → IframeWidget-B6WC_SMn-b39f62ab72cf5bcd92ee.js} +1 -1
- data/tools/admin/ImageLoader-QC6TN_Tu-f219c473d3a7fe3fc24e.js +1 -0
- data/tools/admin/{ImageviewerWidget-vWMGPveb-a385eaff6f50e2d9cc5b.js → ImageviewerWidget-CLcPtNkW-1941e6d4b8b1ae9fc491.js} +1 -1
- data/tools/admin/InterfacesTab-BfJI6QLb-7649b9679d8f42b48593.js +1 -0
- data/tools/admin/{LabelWidget-DVp0CmFH-17faef5b4045503f36d3.js → LabelWidget-BMxEJEgT-3f24f2cf10bdfe99f58a.js} +1 -1
- data/tools/admin/{LabelledWidget-1DeE1-6G-7c92e912f90e430d5ffa.js → LabelledWidget-DyLep7BJ-08d22c0b38c8a1f55027.js} +1 -1
- data/tools/admin/LabelprogressbarWidget-CQVg9bpz-1ca05836bce14937259a.js +1 -0
- data/tools/admin/LabelsparklineWidget-Dq4ZFHs0-3744bcbe280f845e8276.js +1 -0
- data/tools/admin/LabelvalueWidget-17PcoD2V-f0b865a88633f79085f9.js +1 -0
- data/tools/admin/{LabelvaluedescWidget-c5BUCRxB-1ea411e36238588b5f85.js → LabelvaluedescWidget-zpeZoPGi-60963521d2ba4b471294.js} +1 -1
- data/tools/admin/{LabelvaluelimitsbarWidget-DBKZLpXJ-0dcf794ea95c72b24cf9.js → LabelvaluelimitsbarWidget-CAX0dGi5-e5d88e2d2c084d9314c5.js} +1 -1
- data/tools/admin/LabelvaluelimitscolumnWidget-Bi-ROV2g-9affbae22ee772d56203.js +1 -0
- data/tools/admin/LabelvaluerangebarWidget-D8zuio3--78f00d6089e836c98f3c.js +1 -0
- data/tools/admin/{Layout-Df-lJgpB-228411e9ed7160bf6079.js → Layout-740AmQLZ-a0d301b9d3e04a4ff8ef.js} +1 -1
- data/tools/admin/{LedWidget-C97EJXBo-56495e50ec081af2ea63.js → LedWidget-Bg65XQ0l-8cf10c625a9cd5349698.js} +1 -1
- data/tools/admin/{LimitsBar-DNV39okL-ac8e562bdd6f80498856.js → LimitsBar-DoRwFPYW-14943fd2bac950966efe.js} +1 -1
- data/tools/admin/{LimitsbarWidget-BIO6xztx-cc81832a022263a5e69b.js → LimitsbarWidget-BJcc_1qa-bd69f49803609e566938.js} +1 -1
- data/tools/admin/{LimitscolorWidget-BGrNA65J-ef93a3f98c358c1f0a0a.js → LimitscolorWidget-Dzz0Qxet-a90bbd04d6c0f29d6665.js} +1 -1
- data/tools/admin/{LimitscolumnWidget-Bw6EXJs9-c2197c3b589893051f83.js → LimitscolumnWidget-CwzHaKP4-f6755a93f9b34fbfec53.js} +1 -1
- data/tools/admin/{LinegraphWidget-Drf9tTPN-0ee1a5578ba7a90a7663.js → LinegraphWidget-C6tb4yDb-33cb272b1adf59a180ae.js} +1 -1
- data/tools/admin/{MatrixbycolumnsWidget-C33-g7kK-564fbacd8735d346c3dd.js → MatrixbycolumnsWidget-B18dc43U-64207a1ea9e6a2cecd46.js} +1 -1
- data/tools/admin/{MicroservicesTab-DoQUKC5u-4e2dd5bf175f95bc042e.js → MicroservicesTab-5HWQT6hL-9366c68548506c1dee47.js} +2 -2
- data/tools/admin/{OpenC3TimePicker-cOr0aOVn-087aabac5576efaa78e2.js → OpenC3TimePicker-CM2VG1mS-2e8697ee7b5d80c3135c.js} +1 -1
- data/tools/admin/{OutputDialog-C9rGeLM5-02a56bb7f4eb6b0500ac.js → OutputDialog-DTHjbZfd-9a44dcc4c3b292594f6a.js} +1 -1
- data/tools/admin/{PackagesTab-DbaQtAyw-069925c696f2ace3987d.js → PackagesTab-BEDdbQqy-e9bb313d9344f3fa07c9.js} +2 -2
- data/tools/admin/{PluginsTab-BdwfQ8KF-99de05c6db3780e0af31.js → PluginsTab-CAuvARQK-c87d66d376ed86c4545e.js} +2 -2
- data/tools/admin/{ProgressbarWidget-DqfSMI10-18ce49d7a36649fa0cd0.js → ProgressbarWidget-DXMt6dar-45fdc7c2bff1b3c54b51.js} +1 -1
- data/tools/admin/{RadiobuttonWidget-CSQeEacF-fb889eddc717bdc4e487.js → RadiobuttonWidget-zxv884Z8-0683d3d7b15d3b9c47b7.js} +1 -1
- data/tools/admin/RadiogroupWidget-BVE6wpmw-1bdef633f9a5fee5c1a6.js +1 -0
- data/tools/admin/{RangebarWidget-CJSUof1--7cd1a9bb578d66c95e4c.js → RangebarWidget-B43rOEnA-1fc1026e954011fbf052.js} +1 -1
- data/tools/admin/{RedisTab-DI1cFzQm-4191ec0c06598cfab2a9.js → RedisTab-DI1cFzQm-ab894fb5e953ea41c16b.js} +1 -1
- data/tools/admin/{RollupWidget-C977Lkcx-079e4bfc754edd8b4947.js → RollupWidget-BEEjvyua-9ed768c628de10b9c5fb.js} +1 -1
- data/tools/admin/RoutersTab-uV7IskQ4-c0d04feb794953a2c0ac.js +1 -0
- data/tools/admin/{ScrollwindowWidget-BFxz61oW-70d1f967d82154e8fed2.js → ScrollwindowWidget-CUUtkAh4-1d1d5406353e6254f4c6.js} +1 -1
- data/tools/admin/{SecretsTab-But8EOAR-ccdc47f33efa6d921ef4.js → SecretsTab-But8EOAR-c87f495021009bb3347d.js} +1 -1
- data/tools/admin/{SettingsTab-dnzckAY4-4b3c92cabb74b7eb0e0e.js → SettingsTab-vvvyFV5F-666802c33c1a84bdee8f.js} +1 -1
- data/tools/admin/{SignalWidget-BT6AcbBx-a2b901a2ae183bb8a7da.js → SignalWidget-CbvidVbl-6fe9b8155a6abf5ac651.js} +1 -1
- data/tools/admin/{SimpleTextDialog-Ccqw4mzt-bc4caae5dd1d7e6f0d3b.js → SimpleTextDialog-B0Gv-5gr-aad99302ca279859996d.js} +1 -1
- data/tools/admin/{SpacerWidget-B_f09KAi-541cf0e73343ba06aac8.js → SpacerWidget-BukDoKlv-afb648715340f25d0ed3.js} +1 -1
- data/tools/admin/SparklineWidget-BjSNHLGS-6c1573b51ce88eff13be.js +1 -0
- data/tools/admin/TabbookWidget-5Dz5n4sQ-151128234049151786c0.js +1 -0
- data/tools/admin/{TargetsTab-GzwX75ns-64006815ed7073dd19d5.js → TargetsTab-DbryihYL-9f17a487683fb033bc7b.js} +1 -1
- data/tools/admin/TextboxWidget-QzrrHB9s-9161faae9e8c54b252cf.js +1 -0
- data/tools/admin/TextfieldWidget-BpDBnDUq-c7da6f81b1dec27ba386.js +1 -0
- data/tools/admin/{TimeWidget-BTaXBxVm-a4d5024a76726c8735f6.js → TimeWidget-CjZInJFT-79e9c7ea6c6b5f235e21.js} +1 -1
- data/tools/admin/TitleWidget-C9VC8OUI-990c119d4bb0ba59826a.js +1 -0
- data/tools/admin/{ToolsTab-DA2T_Zxc-7f97be0c87aac3bcfff1.js → ToolsTab-DCg-vy89-c3f43ad5c0d1c26f1ad9.js} +1 -1
- data/tools/admin/{TsdbTab-DSLXk5QZ-414e4cb23545085c895f.js → TsdbTab-DSLXk5QZ-05aee72e7daba8093b4d.js} +1 -1
- data/tools/admin/{VWidget-C4VLQ7-b-07b1f80f82f119fc5285.js → VWidget-D8HzcrTo-0d37b3624fd89b5457fe.js} +1 -1
- data/tools/admin/ValueWidget-CGOhPtMG-cad7042399b16fa0f096.js +1 -0
- data/tools/admin/ValuelimitsbarWidget-Lfq0cbnZ-61e5c585ad408ceed5b8.js +1 -0
- data/tools/admin/ValuelimitscolumnWidget-BH333HsT-6a74d612425fde8dec88.js +1 -0
- data/tools/admin/{ValuerangebarWidget-DJtrknKH-3e744c7243efe0774ee0.js → ValuerangebarWidget-95AG0gex-483a4f737954cbd4b52f.js} +1 -1
- data/tools/admin/{VerticalWidget-CoJiy2TT-ecfccfcccdb20287fb94.js → VerticalWidget-fxittOB1-e8e928c17a24d0147392.js} +1 -1
- data/tools/admin/{VerticalboxWidget-BD5Eq3BH-151b5238c6236f51977c.js → VerticalboxWidget-CKnoHa-u-df6ed50b3d8f1a1633ab.js} +1 -1
- data/tools/admin/{Widget-ClRi417b-c819f8641946506d7602.js → Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js} +1 -1
- data/tools/admin/{main-f0865abbd006d9b2cc5a.js → main-815790959203f3124f00.js} +2 -2
- data/tools/admin/main.js +1 -1
- data/tools/admin/{settings-CF2_iY3N-2c1b3aa6b738e9889263.js → settings-CF2_iY3N-2fd04d1950495151ab9b.js} +1 -1
- data/tools/admin/{useDownloadFile-DASMZ_Dl-d13e01890d2f8843337e.js → useDownloadFile-DASMZ_Dl-e85a91e7267f608667a5.js} +1 -1
- metadata +87 -87
- data/tools/admin/CanvasdotWidget-BZpkCAoH-656bb49b1eb23c38df64.js +0 -1
- data/tools/admin/CanvaslineWidget-jg2ozQ0N-0871afe4dad8f1654b07.js +0 -1
- data/tools/admin/ComboboxWidget-BzKkyRDT-4ce17162f0ef6bd8170f.js +0 -1
- data/tools/admin/Graph-GVQZltap-a6075477922f4a556620.js +0 -1
- data/tools/admin/HorizontallineWidget-k7fL4EPN-a86818418ba8f3cc191e.js +0 -1
- data/tools/admin/ImageLoader-DH5e4lg8-03c656b21fa2caca8324.js +0 -1
- data/tools/admin/InterfacesTab-DeTu93l7-4311e906061ab7c82971.js +0 -1
- data/tools/admin/LabelprogressbarWidget-DME-BrZe-aaf6c31eb90e3058d1da.js +0 -1
- data/tools/admin/LabelsparklineWidget-4iDHGnPL-58ec5912433194d1fb6a.js +0 -1
- data/tools/admin/LabelvalueWidget-C6NQSHTb-54fa502577d5c013235a.js +0 -1
- data/tools/admin/LabelvaluelimitscolumnWidget-NdEu06go-a35e19fa1f086588f8e0.js +0 -1
- data/tools/admin/LabelvaluerangebarWidget-CL5HLK0t-dba160f5c4621270ba82.js +0 -1
- data/tools/admin/RadiogroupWidget-DlQN9z-Z-4bb03443c0620c83be9b.js +0 -1
- data/tools/admin/RoutersTab-ChadLN6X-abf9a717481d1732b150.js +0 -1
- data/tools/admin/SparklineWidget-Bji9DILO-b919fae8ac59aa487849.js +0 -1
- data/tools/admin/TabbookWidget-B74U8t2i-22e1b62104907789d9c0.js +0 -1
- data/tools/admin/TextboxWidget-CbKE9aSW-ef89ab0e5e4580dae966.js +0 -1
- data/tools/admin/TextfieldWidget-CpdmfNk5-941ec2c3426b7d6a5b84.js +0 -1
- data/tools/admin/TitleWidget-ulO_gdVY-c51481a664353e350ca8.js +0 -1
- data/tools/admin/ValueWidget-B3-Jjoux-9a088d512207d0da3dbd.js +0 -1
- data/tools/admin/ValuelimitsbarWidget-CqRkPwWS-61183b64087fcac11052.js +0 -1
- data/tools/admin/ValuelimitscolumnWidget-CF4CN14a-d7a8f5655caea3581ddb.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./main-
|
|
1
|
+
System.register(["./main-815790959203f3124f00.js","vue","./DetailsDialog-CrP3epOv-70a8888fb41c092f2202.js","single-spa","./VWidget-D8HzcrTo-0d37b3624fd89b5457fe.js","vue-router","pinia","vuetify","./LimitsBar-DoRwFPYW-14943fd2bac950966efe.js","./LimitsColor-CBcpB-la-3bd861951380f642016e.js","./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js"],(function(V,j){"use strict";var f,i,n,o,c,d,u,h,p,y,C,x,w,g,S,v,k,M,D;return{setters:[e=>{f=e.f},e=>{i=e.resolveComponent,n=e.openBlock,o=e.createElementBlock,c=e.normalizeStyle,d=e.normalizeClass,u=e.createVNode,h=e.createBlock,p=e.withCtx,y=e.createElementVNode,C=e.toDisplayString,x=e.mergeProps,w=e.createCommentVNode,g=e.Fragment,S=e.renderList,v=e.withModifiers,k=e.createTextVNode},e=>{M=e.Z},null,e=>{D=e.T},null,null,null,null,null,null],execute:(function(){const e={components:{DetailsDialog:M},mixins:[D],data(){return{astro:!1,radius:15,fullLabelDisplay:!1,displayLabel:!0,viewDetails:!1,contextMenuShown:!1,x:0,y:0,contextMenuOptions:[{title:"Details",action:()=>{this.contextMenuShown=!1,this.viewDetails=!0}},{title:"Graph",action:()=>{window.open("/tools/tlmgrapher/"+encodeURIComponent(this.parameters[0])+"/"+encodeURIComponent(this.parameters[1])+"/"+encodeURIComponent(this.parameters[2])+"/","_blank")}}]}},computed:{labelName(){return this.fullLabelDisplay?[this.parameters[0]+" "+this.parameters[1]+" "+this.parameters[2]]:[this.parameters[2]]},fullName(){return this.parameters[0]+" "+this.parameters[1]+" "+this.parameters[2]},ledClass(){let t=`led align-self-center ${this.limitsColor}`;return this._limitsState==="STALE"&&(t+=" stale"),t},cssProps(){return{"--height":this.radius+"px","--width":this.radius+"px"}},staleClass(){return this._limitsState==="STALE"?"stale":""},myComputedStyle(){const t={...this.computedStyle};return delete t.flex,t}},created(){this.appliedSettings.forEach(t=>{t[0]==="ASTRO"&&(this.astro=t[1]?.toLowerCase()!=="false")}),this.parameters[4]&&(this.radius=Number.parseInt(this.parameters[4])),this.parameters[5]&&(this.parameters[5].toLowerCase()==="true"?this.fullLabelDisplay=!0:this.parameters[5].toLowerCase()==="nil"?this.displayLabel=!1:this.parameters[5].toLowerCase()==="none"&&(this.displayLabel=!1))},methods:{getType(){let t="CONVERTED";return this.parameters[3]&&(t=this.parameters[3]),t},showContextMenu(t){t.preventDefault(),this.contextMenuShown=!1,this.x=t.clientX,this.y=t.clientY,this.$nextTick(()=>{this.contextMenuShown=!0})}}};function N(t,l,I,O,r,s){const L=i("rux-status"),b=i("v-tooltip"),T=i("label-widget"),_=i("v-list-item-title"),B=i("v-list-item"),E=i("v-list"),P=i("v-menu"),R=i("details-dialog");return n(),o("div",{ref:"container",class:"d-flex flex-row",style:c(s.myComputedStyle)},[t.tooltipText?r.astro?(n(),o("div",{key:2,class:d(["astroled align-self-center",s.staleClass]),onContextmenu:l[3]||(l[3]=(...a)=>s.showContextMenu&&s.showContextMenu(...a))},[u(L,{status:t.astroStatus},null,8,["status"])],34)):(n(),o("div",{key:1,class:d(s.ledClass),style:c(s.cssProps),onContextmenu:l[2]||(l[2]=(...a)=>s.showContextMenu&&s.showContextMenu(...a))},null,38)):(n(),h(b,{key:0,"open-delay":600,location:"top"},{activator:p(({props:a})=>[r.astro?(n(),o("div",x({key:1,class:["astroled align-self-center",s.staleClass]},a,{onContextmenu:l[1]||(l[1]=(...m)=>s.showContextMenu&&s.showContextMenu(...m))}),[u(L,{status:t.astroStatus},null,8,["status"])],16)):(n(),o("div",x({key:0,class:s.ledClass,style:s.cssProps},a,{onContextmenu:l[0]||(l[0]=(...m)=>s.showContextMenu&&s.showContextMenu(...m))}),null,16))]),default:p(()=>[y("span",null,C(s.fullName),1)]),_:1})),r.displayLabel?(n(),h(T,{key:3,parameters:s.labelName,settings:t.appliedSettings,style:c(t.computedStyle),"widget-index":1},null,8,["parameters","settings","style"])):w("",!0),u(P,{modelValue:r.contextMenuShown,"onUpdate:modelValue":l[4]||(l[4]=a=>r.contextMenuShown=a),target:[r.x,r.y],style:{"z-index":"3000"}},{default:p(()=>[u(E,null,{default:p(()=>[(n(!0),o(g,null,S(r.contextMenuOptions,(a,m)=>(n(),h(B,{key:m,onClick:v(a.action,["stop"])},{default:p(()=>[u(_,null,{default:p(()=>[k(C(a.title),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1},8,["modelValue","target"]),u(R,{modelValue:r.viewDetails,"onUpdate:modelValue":l[5]||(l[5]=a=>r.viewDetails=a),"target-name":t.parameters[0],"packet-name":t.parameters[1],"item-name":t.parameters[2]},null,8,["modelValue","target-name","packet-name","item-name"])],4)}const z=V("default",f(e,[["render",N],["__scopeId","data-v-d4f5103d"]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./BarColumn-
|
|
1
|
+
System.register(["./BarColumn-B_V83WMV-f4bed304b04724bc62a7.js","vue","./main-815790959203f3124f00.js","./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js","vue-router","pinia","single-spa","vuetify"],(function(n,v){"use strict";var s,a,l,h,r,d;return{setters:[i=>{s=i.l},i=>{a=i.openBlock,l=i.createElementBlock,h=i.normalizeStyle,r=i.createStaticVNode},i=>{d=i.f},null,null,null,null,null],execute:(function(){const i={mixins:[s],data(){return{width:22,height:120}},computed:{cssProps:function(){if(!this.screenValues[this.valueId])return{};let e=this.screenValues[this.valueId][0],t=this.modifyLimits(this.limitsSettings[this.selectedLimitsSet]);if(t)return this.calcLimits(t),{"--height":this.height+"px","--width":this.width+"px","--container-width":this.width-5+"px","--position":this.calcPosition(e,t)+"%","--redlow-height":this.redLow+"%","--redhigh-height":this.redHigh+"%","--yellowlow-height":this.yellowLow+"%","--yellowhigh-height":this.yellowHigh+"%","--greenlow-height":this.greenLow+"%","--greenhigh-height":this.greenHigh+"%","--blue-height":this.blue+"%"};throw this.screenError("LIMITSCOLUMN","Item has no limits settings","Only items with limits")}},created(){this.verifyNumParams("LIMITSCOLUMN",3,6,"LIMITSCOLUMN <TARGET> <PACKET> <ITEM> <TYPE> <WIDTH> <HEIGHT>")}};function o(e,t,u,g,w,c){return a(),l("div",{class:"limitsbar",style:h([c.cssProps,e.computedStyle])},[...t[0]||(t[0]=[r('<div class="limitsbar__container" data-v-60707a15><div class="limitsbar__redlow" data-v-60707a15></div><div class="limitsbar__redhigh" data-v-60707a15></div><div class="limitsbar__yellowlow" data-v-60707a15></div><div class="limitsbar__yellowhigh" data-v-60707a15></div><div class="limitsbar__greenlow" data-v-60707a15></div><div class="limitsbar__greenhigh" data-v-60707a15></div><div class="limitsbar__blue" data-v-60707a15></div><div class="limitsbar__line" data-v-60707a15></div><div class="limitsbar__arrow" data-v-60707a15></div></div>',1)])],4)}const m=n("default",d(i,[["render",o],["__scopeId","data-v-60707a15"]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./GraphWidget-
|
|
1
|
+
System.register(["./GraphWidget-BvyRvV66-1ace5c9e6415d0462ca4.js","./main-815790959203f3124f00.js","vue","./Graph--wiWQKh0-5a71bbaa336ac4303aba.js","single-spa","./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js","vue-router","pinia","vuetify","./OpenC3TimePicker-CM2VG1mS-2e8697ee7b5d80c3135c.js"],(function(c,u){"use strict";var s,r,n,o,a,l,d;return{setters:[t=>{s=t.M},t=>{r=t.f},t=>{n=t.resolveComponent,o=t.openBlock,a=t.createBlock,l=t.normalizeStyle},t=>{d=t.q},null,null,null,null,null,null],execute:(function(){const t={components:{Graph:d},mixins:[s]};function h(e,i,v,S,f,y){const m=n("graph");return o(),a(m,{id:e.id,ref:"graph"+e.id,state:e.state,"selected-graph-id":e.id,"start-time":e.startTime,"seconds-graphed":e.secondsGraphed,"points-saved":e.pointsSaved,"points-graphed":e.pointsGraphed,"initial-items":e.items,height:e.size.height,width:e.size.width,style:l(e.computedStyle),"time-zone":e.screenTimeZone,"hide-toolbar":"","hide-overview":"",onPause:i[0]||(i[0]=()=>e.state="pause"),onStart:i[1]||(i[1]=()=>e.state="start"),onError:i[2]||(i[2]=p=>e.emitScreenError(p.message,p)),onRecovered:i[3]||(i[3]=()=>e.clearScreenErrors())},null,8,["id","state","selected-graph-id","start-time","seconds-graphed","points-saved","points-graphed","initial-items","height","width","style","time-zone"])}const g=c("default",r(t,[["render",h]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./Layout-
|
|
1
|
+
System.register(["./Layout-740AmQLZ-a0d301b9d3e04a4ff8ef.js","./main-815790959203f3124f00.js","vue","./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js","vue-router","pinia","single-spa","vuetify"],(function(w,z){"use strict";var g,y,v,d,r,s,f,l,o,i,c,h,k,p,u;return{setters:[t=>{g=t.r},t=>{y=t.f,v=t.L},t=>{d=t.resolveComponent,r=t.openBlock,s=t.createElementBlock,f=t.normalizeStyle,l=t.Fragment,o=t.renderList,i=t.createBlock,c=t.withCtx,h=t.createElementVNode,k=t.toDisplayString,p=t.resolveDynamicComponent,u=t.mergeProps},null,null,null,null,null],execute:(function(){const t={mixins:[g],computed:{columns(){return Number.parseInt(this.parameters[0])},widgetChunks(){return v.chunk(this.widgets,this.columns)}},created:function(){if(this.parameters[1]){let n=this.parameters[1];this.widgets.forEach(m=>{m.settings.find(a=>a[0]==="MARGIN"||a[0].startsWith("RAW")&&a[1].toUpperCase().includes("MARGIN"))===void 0&&m.settings.push(["MARGIN",n])})}}};function C(n,m,a,B,D,b){const N=d("v-tooltip");return r(),s("table",{style:f(n.computedStyle),role:"presentation"},[(r(!0),s(l,null,o(b.widgetChunks,(S,T)=>(r(),s("tr",{key:"r"+T},[(r(!0),s(l,null,o(S,(e,L)=>(r(),s("td",{key:"c"+L},[n.getTooltipText(e)?(r(),i(N,{key:0,"open-delay":n.getTooltipDelay(e),location:"top","activator-props":n.getTooltipActivatorProps(e)},{activator:c(({props:x})=>[(r(),i(p(e.type),u({ref_for:!0},{...n.listeners,...x},{target:e.target,parameters:e.parameters,settings:e.settings,"screen-values":n.screenValues,"screen-time-zone":n.screenTimeZone,widgets:e.widgets,name:e.name,line:e.line,"line-number":e.lineNumber}),null,16,["target","parameters","settings","screen-values","screen-time-zone","widgets","name","line","line-number"]))]),default:c(()=>[h("span",null,k(n.getTooltipText(e)),1)]),_:2},1032,["open-delay","activator-props"])):(r(),i(p(e.type),u({key:1,ref_for:!0},n.listeners,{target:e.target,parameters:e.parameters,settings:e.settings,"screen-values":n.screenValues,"screen-time-zone":n.screenTimeZone,widgets:e.widgets,name:e.name,line:e.line,"line-number":e.lineNumber}),null,16,["target","parameters","settings","screen-values","screen-time-zone","widgets","name","line","line-number"]))]))),128))]))),128))],4)}const A=w("default",y(t,[["render",C]]))})}}));
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
System.register(["./main-
|
|
1
|
+
System.register(["./main-815790959203f3124f00.js","vue","single-spa","./OutputDialog-DTHjbZfd-9a44dcc4c3b292594f6a.js","vue-router","pinia","vuetify"],(function(U,Q){"use strict";var M,D,v,A,l,u,f,o,s,b,p,h,g,C,w,F,N,R,T,j;return{setters:[n=>{M=n.f,D=n.R,v=n.q,A=n.O},n=>{l=n.resolveComponent,u=n.openBlock,f=n.createBlock,o=n.withCtx,s=n.createVNode,b=n.createElementVNode,p=n.toDisplayString,h=n.createTextVNode,g=n.createElementBlock,C=n.Fragment,w=n.createCommentVNode,F=n.renderList,N=n.withDirectives,R=n.vShow,T=n.mergeProps},null,n=>{j=n.S},null,null,null],execute:(function(){const n={props:{modelValue:Boolean,text:{type:String,default:null},title:{type:String,default:null}},emits:["update:modelValue"],computed:{dialogText:function(){return this.text},show:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{download:function(){const e=new Blob([this.dialogText],{type:"text/plain"}),t=document.createElement("a");t.href=URL.createObjectURL(e),t.setAttribute("download",`${this.title}__error.txt`),t.click()}}},P={class:"mx-2"},I={class:"pa-2"};function L(e,t,c,d,a,i){const _=l("v-spacer"),m=l("v-btn"),k=l("v-toolbar"),O=l("v-textarea"),V=l("v-card-text"),$=l("v-card-actions"),E=l("v-card"),x=l("v-dialog");return u(),f(x,{modelValue:i.show,"onUpdate:modelValue":t[2]||(t[2]=S=>i.show=S),width:"600"},{default:o(()=>[s(E,null,{default:o(()=>[s(k,{height:"24"},{default:o(()=>[s(_),b("span",null,p(c.title),1),s(_),b("div",P,[s(m,{icon:"mdi-download",variant:"text",density:"compact","data-test":"downloadIcon",onClick:i.download},null,8,["onClick"])])]),_:1}),b("div",I,[s(V,null,{default:o(()=>[s(O,{modelValue:i.dialogText,"onUpdate:modelValue":t[0]||(t[0]=S=>i.dialogText=S),readonly:"",rows:"15","data-test":"dialogText"},null,8,["modelValue"])]),_:1})]),s($,{class:"px-2"},{default:o(()=>[s(_),s(m,{variant:"flat",onClick:t[1]||(t[1]=S=>i.show=!i.show)},{default:o(()=>[...t[3]||(t[3]=[h(" Ok ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])}const Z={components:{OutputDialog:j,TextBoxDialog:M(n,[["render",L]])},mixins:[D],data(){return{filteredMicroservices:[],allMicroservices:[],microservice_status:{},microservice_id:null,jsonContent:"",dialogTitle:"",showDialog:!1,showError:!1,alert:"",alertType:"success",showAlert:!1,updater:null,timeZone:"local",microserviceOperations:{}}},computed:{serviceFilter(){const e=this.$route.query.services;return e?e.split(",").map(t=>t.trim()).filter(t=>t):null},hasServiceFilter(){return this.serviceFilter&&this.serviceFilter.length>0},totalServiceCount(){return this.allMicroservices.length},filteredServiceCount(){return this.filteredMicroservices.length}},watch:{"$route.query.services":function(){this.applyServiceFilter()}},created(){new A().get_setting("time_zone").then(e=>{e&&(this.timeZone=e)}).catch(()=>{})},mounted(){this.update(),this.updater=setInterval(()=>{this.update()},2e3)},beforeUnmount(){clearInterval(this.updater),this.updater=null},methods:{isOperationInProgress:function(e){return!!this.microserviceOperations[e]},isEnabled:function(e){return this.allMicroservices.find(t=>t.name===e)?.enabled!==!1},isRestarting:function(e){return this.microserviceOperations[e]?.operation==="restarting"},isStarting:function(e){return this.microserviceOperations[e]?.operation==="starting"},isStopping:function(e){return this.microserviceOperations[e]?.operation==="stopping"},update:function(){v.get("/openc3-api/microservice_status/all").then(e=>{this.microservice_status=e.data,this.checkOperationCompletion()}).catch(console.error),v.get("/openc3-api/microservices/all").then(e=>{this.allMicroservices=Object.values(e.data).sort((t,c)=>t.name.localeCompare(c.name)),this.applyServiceFilter()}).catch(console.error)},checkOperationCompletion:function(){for(const[e,t]of Object.entries(this.microserviceOperations)){const c=this.allMicroservices.find(i=>i.name===e);if(!c)continue;const d=c.enabled!==!1,a=t.enabled_states[t.enabled_states.length-1];d!==a&&t.enabled_states.push(d),this.isOperationComplete(e,t)&&delete this.microserviceOperations[e]}},isOperationComplete:function(e,t){if(Date.now()-t.time_started>3e4)return this.alert=`${e} timed out when ${t.operation}.`,this.alertType="error",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),delete this.microserviceOperations[e],!0;if(t.operation==="stopping")return t.enabled_states.includes(!1);if(t.operation==="starting")return t.enabled_states.includes(!0);if(t.operation==="restarting"){const c=this.microservice_status[e]?.updated_at;return c&&t.initial_updated_at?c!==t.initial_updated_at:!1}return!1},applyServiceFilter:function(){this.hasServiceFilter?this.filteredMicroservices=this.allMicroservices.filter(e=>this.serviceFilter.includes(e.name)):this.filteredMicroservices=this.allMicroservices},clearServiceFilter:function(){this.$router.push({query:{}})},startService:async function(e){try{await v.post(`/openc3-api/microservices/${e}/start`)}catch(t){this.alert=`Start command failed for ${e}: ${t}`,this.alertType="error",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),delete this.microserviceOperations[e]}},bulkRestartServices:async function(){const e=this.filteredMicroservices.map(d=>d.name),t=e.join(", "),c=`Are you sure you want to restart ${e.length} microservice(s)? ${t}`;try{await this.$dialog.confirm(c,{okText:"Restart",cancelText:"Cancel"}),e.forEach(d=>{const a=this.allMicroservices.find(_=>_.name===d)?.enabled!==!1,i=this.microservice_status[d]?.updated_at;this.microserviceOperations[d]={operation:"restarting",enabled_states:[a],initial_updated_at:i,time_started:Date.now()},this.startService(d)})}catch{}},stopService:async function(e){try{await v.post(`/openc3-api/microservices/${e}/stop`)}catch(t){this.alert=`Stop command failed for ${e}: ${t}`,this.alertType="error",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),delete this.microserviceOperations[e]}},bulkStopServices:async function(){const e=this.filteredMicroservices.map(d=>d.name),t=e.join(", "),c=`Are you sure you want to stop ${e.length} microservice(s)?
|
|
2
2
|
|
|
3
|
-
${t}`;try{await this.$dialog.confirm(c,{okText:"Stop",cancelText:"Cancel"}),e.forEach(d=>{const a=this.allMicroservices.find(i=>i.name===d)?.enabled!==!1;this.microserviceOperations[d]={operation:"stopping",enabled_states:[a],time_started:Date.now()},this.stopService(d)})}catch{}},stopMicroservice:async function(e){try{await this.$dialog.confirm(`Are you sure you want to stop microservice: ${e}?`,{okText:"Stop",cancelText:"Cancel"});const t=this.allMicroservices.find(c=>c.name===e)?.enabled!==!1;this.microserviceOperations[e]={operation:"stopping",enabled_states:[t],time_started:Date.now()},this.stopService(e)}catch{}},restartMicroservice:async function(e){try{await this.$dialog.confirm(`Are you sure you want to restart microservice: ${e}?`,{okText:"Restart",cancelText:"Cancel"});const t=this.allMicroservices.find(c=>c.name===e)?.enabled!==!1;this.microserviceOperations[e]={operation:"restarting",enabled_states:[t],initial_updated_at:this.microservice_status[e]?.updated_at,time_started:Date.now()},this.startService(e)}catch{}},showMicroservice:async function(e){const t=await v.get(`/openc3-api/microservices/${e}`);this.microservice_id=e,this.dialogTitle=e,this.jsonContent=JSON.stringify(t.data,null," "),this.showDialog=!0},showMicroserviceError:function(e){this.dialogTitle=e;const t=this.microservice_status[e].error;this.jsonContent=JSON.stringify(t,null," "),this.showError=!0},getStateColor(e){const t=this.microservice_status[e];return t?t.error?"red":!this.isEnabled(e)||t.state==="STOPPED"?"yellow":t.state==="RUNNING"?"green":"grey":"grey"},getStateText(e){return this.isEnabled(e)?this.microservice_status[e].state:"STOPPED"},dialogCallback:async function(e){if(this.showDialog=!1,e!==null){let t=JSON.parse(e),c="put",d=`/openc3-api/microservices/${this.microservice_id}`;t.name!==this.microservice_id&&(c="post",d="/openc3-api/microservices"),await v[c](d,{data:{json:e}}),this.alert="Modified Microservice",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update()}}}},
|
|
3
|
+
${t}`;try{await this.$dialog.confirm(c,{okText:"Stop",cancelText:"Cancel"}),e.forEach(d=>{const a=this.allMicroservices.find(i=>i.name===d)?.enabled!==!1;this.microserviceOperations[d]={operation:"stopping",enabled_states:[a],time_started:Date.now()},this.stopService(d)})}catch{}},stopMicroservice:async function(e){try{await this.$dialog.confirm(`Are you sure you want to stop microservice: ${e}?`,{okText:"Stop",cancelText:"Cancel"});const t=this.allMicroservices.find(c=>c.name===e)?.enabled!==!1;this.microserviceOperations[e]={operation:"stopping",enabled_states:[t],time_started:Date.now()},this.stopService(e)}catch{}},restartMicroservice:async function(e){try{await this.$dialog.confirm(`Are you sure you want to restart microservice: ${e}?`,{okText:"Restart",cancelText:"Cancel"});const t=this.allMicroservices.find(c=>c.name===e)?.enabled!==!1;this.microserviceOperations[e]={operation:"restarting",enabled_states:[t],initial_updated_at:this.microservice_status[e]?.updated_at,time_started:Date.now()},this.startService(e)}catch{}},showMicroservice:async function(e){const t=await v.get(`/openc3-api/microservices/${e}`);this.microservice_id=e,this.dialogTitle=e,this.jsonContent=JSON.stringify(t.data,null," "),this.showDialog=!0},showMicroserviceError:function(e){this.dialogTitle=e;const t=this.microservice_status[e].error;this.jsonContent=JSON.stringify(t,null," "),this.showError=!0},getStateColor(e){const t=this.microservice_status[e];return t?t.error?"red":!this.isEnabled(e)||t.state==="STOPPED"?"yellow":t.state==="RUNNING"?"green":"grey":"grey"},getStateText(e){return this.isEnabled(e)?this.microservice_status[e].state:"STOPPED"},dialogCallback:async function(e){if(this.showDialog=!1,e!==null){let t=JSON.parse(e),c="put",d=`/openc3-api/microservices/${this.microservice_id}`;t.name!==this.microservice_id&&(c="post",d="/openc3-api/microservices"),await v[c](d,{data:{json:e}}),this.alert="Modified Microservice",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update()}}}},q={class:"text-caption text-medium-emphasis mt-2 mb-2 ml-4"};function J(e,t,c,d,a,i){const _=l("v-alert"),m=l("v-btn"),k=l("v-col"),O=l("v-row"),V=l("v-list-item-title"),$=l("v-list-item-subtitle"),E=l("v-chip"),x=l("v-tooltip"),S=l("v-list-item"),z=l("v-divider"),G=l("v-list"),H=l("output-dialog"),K=l("text-box-dialog");return u(),g("div",null,[s(_,{modelValue:a.showAlert,"onUpdate:modelValue":t[0]||(t[0]=r=>a.showAlert=r),closable:"",type:a.alertType},{default:o(()=>[h(p(a.alert),1)]),_:1},8,["modelValue","type"]),b("div",q,[i.hasServiceFilter&&i.filteredServiceCount===0?(u(),g(C,{key:0},[h(" No microservices match filter (showing 0 / "+p(i.totalServiceCount)+") ",1)],64)):i.hasServiceFilter?(u(),g(C,{key:1},[h(" Showing "+p(i.filteredServiceCount)+" / "+p(i.totalServiceCount)+" microservices ",1)],64)):(u(),g(C,{key:2},[h(p(i.totalServiceCount)+" microservices ",1)],64))]),i.hasServiceFilter?(u(),f(O,{key:0,class:"ml-1 mb-1"},{default:o(()=>[s(k,{cols:"auto"},{default:o(()=>[s(m,{color:"primary","prepend-icon":"mdi-filter-off","aria-label":"Filter applied. Click to clear filter and show all services.",onClick:i.clearServiceFilter},{default:o(()=>[...t[3]||(t[3]=[h(" Show All ",-1)])]),_:1},8,["onClick"])]),_:1}),s(k,{cols:"auto"},{default:o(()=>[s(m,{color:"warning","prepend-icon":"mdi-refresh",disabled:i.filteredServiceCount===0,onClick:i.bulkRestartServices},{default:o(()=>[...t[4]||(t[4]=[h(" Restart All ",-1)])]),_:1},8,["disabled","onClick"])]),_:1}),s(k,{cols:"auto"},{default:o(()=>[s(m,{color:"error","prepend-icon":"mdi-stop",disabled:i.filteredServiceCount===0,onClick:i.bulkStopServices},{default:o(()=>[...t[5]||(t[5]=[h(" Stop All ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})):w("",!0),s(G,{class:"list","data-test":"microserviceList"},{default:o(()=>[(u(!0),g(C,null,F(a.filteredMicroservices,r=>(u(),g("div",{key:r.name},[s(S,null,{append:o(()=>[N(s(m,{icon:"mdi-alert",variant:"text",onClick:y=>i.showMicroserviceError(r.name)},null,8,["onClick"]),[[R,a.microservice_status[r.name]?.error]]),a.microservice_status[r.name]?(u(),f(E,{key:0,color:i.getStateColor(r.name),size:"small",label:""},{default:o(()=>[h(p(i.getStateText(r.name)),1)]),_:2},1032,["color"])):w("",!0),s(x,{text:i.isEnabled(r.name)?"Restart":"Start",location:"top"},{activator:o(({props:y})=>[s(m,T({ref_for:!0},y,{"aria-label":i.isEnabled(r.name)?"Restart Microservice":"Start Microservice",icon:i.isRestarting(r.name)||i.isStarting(r.name)?"mdi-loading":i.isEnabled(r.name)?"mdi-refresh":"mdi-play",class:{"rotating-icon":i.isRestarting(r.name)||i.isStarting(r.name)},variant:"text",disabled:i.isOperationInProgress(r.name),onClick:B=>i.restartMicroservice(r.name)}),null,16,["aria-label","icon","class","disabled","onClick"])]),_:2},1032,["text"]),s(x,{text:"Stop",location:"top"},{activator:o(({props:y})=>[s(m,T({ref_for:!0},y,{"aria-label":"Stop Microservice",icon:i.isStopping(r.name)?"mdi-loading":"mdi-stop",class:{"rotating-icon":i.isStopping(r.name)},variant:"text",disabled:i.isOperationInProgress(r.name),onClick:B=>i.stopMicroservice(r.name)}),null,16,["icon","class","disabled","onClick"])]),_:2},1024),s(x,{text:"Show Details",location:"top"},{activator:o(({props:y})=>[s(m,T({ref_for:!0},y,{"aria-label":"Show Microservice Details",icon:"mdi-eye",variant:"text",onClick:B=>i.showMicroservice(r.name)}),null,16,["onClick"])]),_:2},1024)]),default:o(()=>[s(V,null,{default:o(()=>[h(p(r.name),1)]),_:2},1024),a.microservice_status[r.name]?(u(),f($,{key:0},{default:o(()=>[h(" Updated: "+p(e.formatNanoseconds(a.microservice_status[r.name].updated_at,a.timeZone))+", Enabled: "+p(i.isEnabled(r.name)?"True":"False")+", Count: "+p(a.microservice_status[r.name].count),1)]),_:2},1024)):w("",!0)]),_:2},1024),s(z)]))),128))]),_:1}),a.showDialog?(u(),f(H,{key:1,modelValue:a.showDialog,"onUpdate:modelValue":t[1]||(t[1]=r=>a.showDialog=r),content:a.jsonContent,type:"Microservice",name:a.dialogTitle,onSubmit:i.dialogCallback},null,8,["modelValue","content","name","onSubmit"])):w("",!0),a.showError?(u(),f(K,{key:2,modelValue:a.showError,"onUpdate:modelValue":t[2]||(t[2]=r=>a.showError=r),text:a.jsonContent,title:a.dialogTitle},null,8,["modelValue","text","title"])):w("",!0)])}const X=U("default",M(Z,[["render",J],["__scopeId","data-v-5cc2a138"]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./main-
|
|
1
|
+
System.register(["./main-815790959203f3124f00.js","vue"],(function(I,K){"use strict";var V,g,n,S,N,b,v,$,o,u,c,T;return{setters:[s=>{V=s.O,g=s.f},s=>{n=s.resolveComponent,S=s.openBlock,N=s.createBlock,b=s.withKeys,v=s.normalizeClass,$=s.normalizeStyle,o=s.withCtx,u=s.createVNode,c=s.createTextVNode,T=s.mergeProps}],execute:(function(){const s=new Map,h=new Map;let d=null,w=0;function k(e,t,a,r=!0){h.delete(e.name),r&&s.set(e.name,t),e.resolve(t)}function C(e,t){d===e&&(d=null),new V().get_settings(e.map(a=>a.name)).then(a=>{e.forEach((r,i)=>{k(r,a?.[i]??r.fallback)})}).catch(()=>{e.forEach(a=>k(a,a.fallback,t,!1))})}function _(e,t){if(s.has(e))return Promise.resolve(s.get(e));if(!h.has(e)){let a;if(h.set(e,new Promise(r=>{a=r})),d===null){const r=[],i=w;d=r,queueMicrotask(()=>C(r,i))}d.push({name:e,fallback:t,resolve:a})}return h.get(e)}function x(e){return s.has(e)?s.get(e):void 0}const B={inheritAttrs:!1,props:{modelValue:{type:String,default:""},label:{type:String,default:"Time"},rules:{type:Array,default:()=>[]},errorMessages:{type:[String,Array],default:()=>[]},hideDetails:{type:[Boolean,String],default:!1},variant:{type:String,default:"filled"},density:{type:String,default:"default"},style:{type:[String,Object],default:""},textFieldClass:{type:String,default:""},dataTest:{type:String,default:""},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","focus"],data(){return{menu:!1,timeFormat:x("time_format")??null,tempTime:null,inputValue:""}},computed:{computedStyle(){return typeof this.style=="string"?this.style:this.style},computedRules(){return this.rules.map(e=>()=>e(this.modelValue))}},watch:{modelValue:{immediate:!0,handler(e){!this.menu&&this.timeFormat!==null&&(this.inputValue=this.formatForDisplay(e))}},inputValue(e){e===""&&this.modelValue!==""&&this.$emit("update:modelValue","")},menu(e){e&&(this.tempTime=this.normalizeTime(this.modelValue)||"00:00:00")},tempTime(e){this.menu&&e&&(this.inputValue=this.formatForDisplay(e))}},async created(){if(this.timeFormat!==null)return;const e=this.inputValue;this.timeFormat=await _("time_format","ampm"),!this.menu&&this.inputValue===e&&(this.inputValue=this.formatForDisplay(this.modelValue))},methods:{formatForDisplay(e){return e?this.timeFormat==="24hr"?e:this.convertTo12Hour(e):""},handleBlur(){const e=this.parseTimeInput(this.inputValue);e?(this.$emit("update:modelValue",e),this.inputValue=this.formatForDisplay(e)):this.inputValue===""?this.$emit("update:modelValue",""):this.inputValue=this.formatForDisplay(this.modelValue)},parseTimeInput(e){if(!e||e.trim()==="")return"";const t=e.match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/);if(t){const r=Number.parseInt(t[1],10),i=Number.parseInt(t[2],10),l=t[3]?Number.parseInt(t[3],10):0;if(r>=0&&r<=23&&i>=0&&i<=59&&l>=0&&l<=59)return`${r.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}`}const a=e.match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?\s*(AM|PM|am|pm)$/i);if(a){let r=Number.parseInt(a[1],10);const i=Number.parseInt(a[2],10),l=a[3]?Number.parseInt(a[3],10):0,p=a[4].toUpperCase();if(r>=1&&r<=12&&i>=0&&i<=59&&l>=0&&l<=59)return p==="AM"?r===12&&(r=0):r!==12&&(r+=12),`${r.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}`}return null},save(){this.$emit("update:modelValue",this.tempTime),this.inputValue=this.formatForDisplay(this.tempTime),this.menu=!1},cancel(){this.tempTime=this.normalizeTime(this.modelValue)||"00:00:00",this.menu=!1},normalizeTime(e){if(!e)return"";const t=e.split(":");if(t.length<2)return e;const a=Number.parseInt(t[0],10),r=Number.parseInt(t[1],10),i=t.length>2?Number.parseInt(t[2],10):0;return Number.isNaN(a)||Number.isNaN(r)||Number.isNaN(i)?"":`${a.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`},convertTo12Hour(e){if(!e)return"";const t=e.split(":");if(t.length<2)return e;let a=Number.parseInt(t[0],10);const r=Number.parseInt(t[1],10),i=t.length>2?Number.parseInt(t[2],10):0;if(Number.isNaN(a)||Number.isNaN(r)||Number.isNaN(i))return e;const l=a>=12?"PM":"AM";a=a%12,a=a||12;const p=a.toString().padStart(2,"0"),f=r.toString().padStart(2,"0"),y=i.toString().padStart(2,"0");return`${p}:${f}:${y} ${l}`}}};function M(e,t,a,r,i,l){const p=n("v-icon"),f=n("v-time-picker"),y=n("v-spacer"),F=n("v-btn"),D=n("v-card-actions"),z=n("v-card"),A=n("v-menu"),P=n("v-text-field");return S(),N(P,{modelValue:i.inputValue,"onUpdate:modelValue":t[2]||(t[2]=m=>i.inputValue=m),label:a.label,rules:l.computedRules,"error-messages":a.errorMessages,"hide-details":a.hideDetails,variant:a.variant,density:a.density,style:$(l.computedStyle),class:v(a.textFieldClass),disabled:a.disabled,"data-test":a.dataTest,onBlur:l.handleBlur,onFocus:t[3]||(t[3]=m=>e.$emit("focus",m)),onKeydown:b(l.handleBlur,["enter"])},{"prepend-inner":o(()=>[u(A,{modelValue:i.menu,"onUpdate:modelValue":t[1]||(t[1]=m=>i.menu=m),"close-on-content-click":!1,transition:"scale-transition",offset:"16"},{activator:o(({props:m})=>[u(p,T(m,{class:"cursor-pointer"}),{default:o(()=>[...t[4]||(t[4]=[c(" mdi-clock-outline ",-1)])]),_:1},16)]),default:o(()=>[u(z,{class:"time-picker-card"},{default:o(()=>[u(f,{modelValue:i.tempTime,"onUpdate:modelValue":t[0]||(t[0]=m=>i.tempTime=m),format:i.timeFormat,scrollable:"","use-seconds":"","hide-header":""},null,8,["modelValue","format"]),u(D,null,{default:o(()=>[u(y),u(F,{variant:"text",onClick:l.cancel},{default:o(()=>[...t[5]||(t[5]=[c("Cancel",-1)])]),_:1},8,["onClick"]),u(F,{color:"primary",variant:"text",onClick:l.save},{default:o(()=>[...t[6]||(t[6]=[c("OK",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue","label","rules","error-messages","hide-details","variant","density","style","class","disabled","data-test","onBlur","onKeydown"])}const O=I("w",g(B,[["render",M],["__scopeId","data-v-3a6a70ee"]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./main-
|
|
1
|
+
System.register(["./main-815790959203f3124f00.js","vue"],(function(M,O){"use strict";var g,i,f,a,w,b,l,r,u,_,y;return{setters:[n=>{g=n.f,i=n.m,f=n.O},n=>{a=n.resolveComponent,w=n.openBlock,b=n.createBlock,l=n.withCtx,r=n.createVNode,u=n.createElementVNode,_=n.toDisplayString,y=n.createTextVNode}],execute:(function(){const n={methods:{buildLanguageMode(t,e){let o=i.require("ace/lib/oop"),h=Object.getOwnPropertyNames(f.prototype).filter(d=>d!=="constructor").filter(d=>d!=="exec").concat(["check","check_raw","check_formatted","check_exception","check_tolerance","check_expression","wait","wait_tolerance","wait_expression","wait_check","wait_check_tolerance","wait_check_expression","wait_packet","wait_check_packet","disable_instrumentation","set_line_delay","get_line_delay","set_max_output","get_max_output"]),p=new RegExp(`(\\b${h.join("\\b|\\b")}\\b)`),s=function(){t.call(this);for(let d in this.$rules)this.$rules[d].unshift({regex:p,token:"support.function"})};o.inherits(s,t);let c=i.require("ace/mode/matching_brace_outdent").MatchingBraceOutdent,m=i.require("ace/mode/behaviour/cstyle").CstyleBehaviour;return[o,function(){this.HighlightRules=s,this.$outdent=new c,this.$behaviour=new m,this.foldingRules=new e,this.indentKeywords=this.foldingRules.indentKeywords}]},buildRubyMode(){const[t,e]=this.buildLanguageMode(i.require("ace/mode/ruby_highlight_rules").RubyHighlightRules,i.require("ace/mode/folding/ruby").FoldMode);let o=i.require("ace/mode/ruby").Mode;return t.inherits(e,o),(function(){this.$id="ace/mode/openc3"}).call(e.prototype),e},buildPythonMode(){const[t,e]=this.buildLanguageMode(i.require("ace/mode/python_highlight_rules").PythonHighlightRules,i.require("ace/mode/folding/pythonic").FoldMode);let o=i.require("ace/mode/python").Mode;return t.inherits(e,o),(function(){this.$id="ace/mode/openc3"}).call(e.prototype),e},buildJsonMode(){const[t,e]=this.buildLanguageMode(i.require("ace/mode/json_highlight_rules").JsonHighlightRules,i.require("ace/mode/folding/ruby").FoldMode);let o=i.require("ace/mode/json").Mode;return t.inherits(e,o),(function(){this.$id="ace/mode/openc3"}).call(e.prototype),e},buildMarkdownMode(){const[t,e]=this.buildLanguageMode(i.require("ace/mode/markdown_highlight_rules").MarkdownHighlightRules,i.require("ace/mode/folding/markdown").FoldMode);let o=i.require("ace/mode/markdown").Mode;return t.inherits(e,o),(function(){this.$id="ace/mode/openc3"}).call(e.prototype),e}}},x={mixins:[n],props:{content:{type:String,required:!0},type:{type:String,default:null},name:{type:String,default:null},modelValue:Boolean,filename:{type:String,default:null}},emits:["update:modelValue"],data(){return{editor:null,mode:null}},computed:{show:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},title:function(){return`${this.type}: ${this.name}`}},mounted(){this.editor=ace.edit(this.$refs.editor),this.editor.setTheme("ace/theme/twilight");let t=null;switch(this.filename?this.filename.split(".").pop():"txt"){case"json":const e=this.buildJsonMode();t=new e,this.editor.setOptions({useWorker:!1});break;case"py":case"pyi":const o=this.buildPythonMode();t=new o;break;case"md":const h=this.buildMarkdownMode();t=new h;break;default:const p=this.buildRubyMode();t=new p;break}this.editor.session.setMode(t),this.editor.session.setUseWrapMode(!0),this.editor.$blockScrolling=1/0,this.editor.setHighlightActiveLine(!1),this.editor.setValue(this.content),this.editor.clearSelection(),this.editor.focus(),this.editor.setReadOnly(!0)},beforeUnmount(){this.editor&&this.editor.destroy()},methods:{close:function(){this.show=!this.show},download:function(){const t=new Blob([this.editor.getValue()],{type:"text/plain"});let e=`${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`;this.filename&&(e=this.filename);const o=document.createElement("a");o.href=URL.createObjectURL(t),o.setAttribute("download",e),o.click()}}},v=["textContent"],q={class:"mx-2"},$={ref:"editor",class:"editor"};function V(t,e,o,h,p,s){const c=a("v-spacer"),m=a("v-btn"),d=a("v-toolbar"),R=a("v-card-text"),C=a("v-card-actions"),S=a("v-card"),L=a("v-dialog");return w(),b(L,{modelValue:s.show,"onUpdate:modelValue":e[1]||(e[1]=k=>s.show=k),width:"85vw"},{default:l(()=>[r(S,null,{default:l(()=>[r(d,{height:"24"},{default:l(()=>[r(c),u("span",{textContent:_(s.title)},null,8,v),r(c),u("div",q,[r(m,{icon:"mdi-download",variant:"text",density:"compact","data-test":"downloadIcon",onClick:s.download},null,8,["onClick"])])]),_:1}),r(R,null,{default:l(()=>[u("pre",$,null,512)]),_:1}),r(C,{class:"pr-6 pb-4 pt-0"},{default:l(()=>[r(c),r(m,{variant:"flat",onClick:e[0]||(e[0]=k=>s.show=!s.show)},{default:l(()=>[...e[2]||(e[2]=[y(" Ok ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])}const j=M("S",g(x,[["render",V],["__scopeId","data-v-a87eb5ef"]]))})}}));
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./main-
|
|
2
|
-
`),r=[];for(const u of t){const s=u.trim();if(!s||s.startsWith("Package")||s.startsWith("---"))continue;const o=s.split(/\s+/);o.length>=2&&r.push(`${o[0]}==${o[1]}`)}return r},formatPluginName(e){return e==="cached"?"Cached":e==="shared"?"Shared":e.replace(/-\d[\d_a-z]*_gem__\d+$/,"").replace(/__\d+$/,"")},venvPath(e){return e==="cached"?"/gems/uv":e==="shared"?"/gems/python_packages":`/gems/plugin_venvs/${e}/.venv`},confirmAndDeletePackage(e,t){this.$dialog.confirm(`Are you sure you want to remove: ${e}`,{okText:"Delete",cancelText:"Cancel"}).then(()=>P.delete(t)).then(()=>{this.$notify.normal({body:`Removed package ${e}`}),setTimeout(()=>{this.updateProcesses()},2500)}).catch(r=>{r&&this.$notify.serious({body:`Failed to remove package ${e}`})})},deletePackage(e){this.confirmAndDeletePackage(e,`/openc3-api/packages/${e}`)},deletePythonPackage(e,t){const r=e.replace("==","-");this.confirmAndDeletePackage(e,`/openc3-api/packages/${r}?plugin=${t}`)}}},
|
|
1
|
+
System.register(["./main-815790959203f3124f00.js","vue","single-spa","./SimpleTextDialog-B0Gv-5gr-aad99302ca279859996d.js","vue-router","pinia","vuetify"],(function(U,le){"use strict";var S,D,T,P,N,c,d,h,a,l,p,v,F,y,_,C,g,I,j,w,B;return{setters:[i=>{S=i.f,D=i.R,T=i.r,P=i.q,N=i.O},i=>{c=i.resolveComponent,d=i.openBlock,h=i.createElementBlock,a=i.createVNode,l=i.withCtx,p=i.createTextVNode,v=i.createElementVNode,F=i.createBlock,y=i.Fragment,_=i.renderList,C=i.createSlots,g=i.toDisplayString,I=i.normalizeClass,j=i.mergeProps,w=i.createCommentVNode},null,i=>{B=i.E},null,null,null],execute:(function(){const i={components:{DownloadDialog:T,SimpleTextDialog:B},mixins:[D],data(){return{showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",files:[],loadingPackage:!1,progress:0,gems:[],python:{},pythonTrees:{},expandedPlugins:{},processes:{},timeZone:"local",showPluginSelect:!1,selectedPlugin:null,pendingFiles:null}},computed:{pythonVenvOptions(){return Object.keys(this.python).filter(e=>e!=="cached"&&e!=="shared")},orderedPluginNames(){const e=Object.keys(this.python),t=new Set(["cached","shared"]),r=e.filter(o=>o==="cached"),u=e.filter(o=>!t.has(o)).sort(),s=e.filter(o=>o==="shared");return[...r,...u,...s]}},created(){new N().get_setting("time_zone").then(e=>{e&&(this.timeZone=e)}).catch(()=>{})},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(e){this.processOutput=e.output,this.showProcessOutput=!0},update(){P.get("/openc3-api/packages").then(e=>{this.gems=e.data.ruby,this.python=e.data.python}).catch(console.error),P.get("/openc3-api/packages/trees").then(e=>{this.pythonTrees=e.data}).catch(console.error)},updateProcesses:function(){P.get("/openc3-api/process_status/package_?substr=true").then(e=>{this.processes=e.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},2500)}).catch(console.error)},selectFile(){this.progress=0,this.$refs.fileInput.click()},fileChange(e){const t=e.target.files;if(t.length>0){const r=[...t].some(s=>!s.name.endsWith(".gem")),u=Object.keys(this.python).filter(s=>s!=="shared");r&&u.length>0?(this.pendingFiles=t,this.selectedPlugin=null,this.showPluginSelect=!0):this.uploadFiles(t)}},uploadFiles(e,t=null){this.loadingPackage=!0;const r=[...e].map(u=>{const s=new FormData;return s.append("package",u,u.name),t&&!u.name.endsWith(".gem")&&s.append("plugin",t),P.post("/openc3-api/packages",{data:s,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:o=>{let m=Math.round(o.loaded*100/o.total);this.progress=m}})});Promise.all(r).then(u=>{this.$notify.normal({body:`Uploaded ${u.length} package${u.length>1?"s":""}`}),this.loadingPackage=!1,this.files=[],setTimeout(()=>{this.updateProcesses()},2500)}).catch(u=>{this.loadingPackage=!1})},confirmPluginInstall(){const e=this.pendingFiles,t=this.selectedPlugin;this.showPluginSelect=!1,this.pendingFiles=null,this.uploadFiles(e,t)},cancelPluginSelect(){this.showPluginSelect=!1,this.pendingFiles=null,this.selectedPlugin=null,this.$refs.fileInput.value=""},togglePlugin(e){this.expandedPlugins[e]=!this.expandedPlugins[e]},formattedPackages(e,t){return this.pythonTrees[e]?this.parseTreeOutput(this.pythonTrees[e]):t.map(r=>this.formatPackageName(r))},formatPackageName(e){const t=e.match(/^(.+?)-(\d.*)$/);return t?`${t[1]}==${t[2]}`:e},parseTreeOutput(e){const t=e.split(`
|
|
2
|
+
`),r=[];for(const u of t){const s=u.trim();if(!s||s.startsWith("Package")||s.startsWith("---"))continue;const o=s.split(/\s+/);o.length>=2&&r.push(`${o[0]}==${o[1]}`)}return r},formatPluginName(e){return e==="cached"?"Cached":e==="shared"?"Shared":e.replace(/-\d[\d_a-z]*_gem__\d+$/,"").replace(/__\d+$/,"")},venvPath(e){return e==="cached"?"/gems/uv":e==="shared"?"/gems/python_packages":`/gems/plugin_venvs/${e}/.venv`},confirmAndDeletePackage(e,t){this.$dialog.confirm(`Are you sure you want to remove: ${e}`,{okText:"Delete",cancelText:"Cancel"}).then(()=>P.delete(t)).then(()=>{this.$notify.normal({body:`Removed package ${e}`}),setTimeout(()=>{this.updateProcesses()},2500)}).catch(r=>{r&&this.$notify.serious({body:`Failed to remove package ${e}`})})},deletePackage(e){this.confirmAndDeletePackage(e,`/openc3-api/packages/${e}`)},deletePythonPackage(e,t){const r=e.replace("==","-");this.confirmAndDeletePackage(e,`/openc3-api/packages/${r}?plugin=${t}`)}}},R=["textContent"],z=["textContent"],A={key:0};function L(e,t,r,u,s,o){const m=c("v-btn"),k=c("v-col"),W=c("rux-progress"),x=c("v-row"),$=c("v-list-item-title"),Z=c("v-list-item-subtitle"),G=c("v-tooltip"),b=c("v-list-item"),O=c("v-divider"),E=c("v-list"),q=c("v-icon"),K=c("v-list-subheader"),M=c("download-dialog"),X=c("simple-text-dialog"),Y=c("v-card-title"),H=c("v-select"),J=c("v-card-text"),Q=c("v-spacer"),ee=c("v-card-actions"),te=c("v-card"),ae=c("v-dialog");return d(),h("div",null,[a(x,{"no-gutters":"",align:"center",class:"px-2"},{default:l(()=>[a(k,{class:"pa-2 mt-2"},{default:l(()=>[a(m,{onClick:o.selectFile},{default:l(()=>[...t[5]||(t[5]=[p("Install Package",-1)])]),_:1},8,["onClick"]),v("input",{ref:"fileInput",style:{display:"none"},type:"file",onChange:t[0]||(t[0]=(...n)=>o.fileChange&&o.fileChange(...n))},null,544)]),_:1}),a(k,{class:"ml-4 mr-2",cols:"4"},{default:l(()=>[a(W,{value:s.progress},null,8,["value"])]),_:1})]),_:1}),Object.keys(s.processes).length>0?(d(),F(E,{key:0,class:"list","data-test":"process-list"},{default:l(()=>[a(x,{"no-gutters":"",class:"px-4"},{default:l(()=>[a(k,{class:"text-h6"},{default:l(()=>[...t[6]||(t[6]=[p("Process List",-1)])]),_:1}),a(k,{align:"right"},{default:l(()=>[...t[7]||(t[7]=[v("div",null,"Showing last 10 min of activity",-1)])]),_:1})]),_:1}),(d(!0),h(y,null,_(s.processes,n=>(d(),h("div",{key:n.name},[a(b,null,C({default:l(()=>[a($,null,{default:l(()=>[v("span",{class:I(n.state.toLowerCase()),textContent:g(`Processing ${n.process_type}: ${n.detail} - ${n.state}`)},null,10,R)]),_:2},1024),a(Z,null,{default:l(()=>[v("span",{textContent:g(" Updated At: "+e.formatNanoseconds(n.updated_at,s.timeZone))},null,8,z)]),_:2},1024)]),_:2},[n.state!=="Running"?{name:"append",fn:l(()=>[a(G,{"open-delay":600,location:"top"},{activator:l(({props:f})=>[a(m,j({ref_for:!0},f,{icon:"mdi-eye",variant:"text","aria-label":"Show Output",onClick:V=>o.showOutput(n)}),null,16,["onClick"])]),default:l(()=>[t[8]||(t[8]=v("span",null,"Show Output",-1))]),_:2},1024)]),key:"0"}:void 0]),1024),a(O)]))),128))]),_:1})):w("",!0),a(E,{class:"list","data-test":"packageList"},{default:l(()=>[a(x,{class:"px-4"},{default:l(()=>[a(k,{class:"text-h6"},{default:l(()=>[...t[9]||(t[9]=[p("Ruby Gems",-1)])]),_:1})]),_:1}),(d(!0),h(y,null,_(s.gems,(n,f)=>(d(),h("div",{key:f},[a(b,null,{append:l(()=>[a(m,{icon:"mdi-delete",variant:"text","aria-label":"Delete Ruby Gem",onClick:V=>o.deletePackage(n)},null,8,["onClick"])]),default:l(()=>[a($,null,{default:l(()=>[p(g(n),1)]),_:2},1024)]),_:2},1024),a(O)]))),128)),a(x,{class:"px-4"},{default:l(()=>[a(k,{class:"text-h6"},{default:l(()=>[...t[10]||(t[10]=[p("Python Packages",-1)])]),_:1})]),_:1}),(d(!0),h(y,null,_(o.orderedPluginNames,n=>(d(),h("div",{key:n},[a(K,{class:"font-weight-bold plugin-header",onClick:f=>o.togglePlugin(n)},{default:l(()=>[a(q,{size:"small",class:"mr-1"},{default:l(()=>[p(g(s.expandedPlugins[n]?"mdi-chevron-down":"mdi-chevron-right"),1)]),_:2},1024),p(" "+g(o.formatPluginName(n))+" ("+g(s.python[n].length)+") ["+g(o.venvPath(n))+"] ",1)]),_:2},1032,["onClick"]),s.expandedPlugins[n]?(d(),h("div",A,[(d(!0),h(y,null,_(o.formattedPackages(n,s.python[n]),(f,V)=>(d(),h("div",{key:`${n}-${V}`},[a(b,{class:"pl-8"},C({default:l(()=>[a($,null,{default:l(()=>[p(g(f),1)]),_:2},1024)]),_:2},[n!=="cached"&&n!=="shared"?{name:"append",fn:l(()=>[a(m,{icon:"mdi-delete",variant:"text","aria-label":"Delete Python Package",onClick:se=>o.deletePythonPackage(f,n)},null,8,["onClick"])]),key:"0"}:void 0]),1024),a(O)]))),128))])):w("",!0)]))),128))]),_:1}),a(M,{modelValue:s.showDownloadDialog,"onUpdate:modelValue":t[1]||(t[1]=n=>s.showDownloadDialog=n)},null,8,["modelValue"]),a(X,{modelValue:s.showProcessOutput,"onUpdate:modelValue":t[2]||(t[2]=n=>s.showProcessOutput=n),title:"Process Output",text:s.processOutput},null,8,["modelValue","text"]),a(ae,{modelValue:s.showPluginSelect,"onUpdate:modelValue":t[4]||(t[4]=n=>s.showPluginSelect=n),"max-width":"500",persistent:""},{default:l(()=>[a(te,null,{default:l(()=>[a(Y,null,{default:l(()=>[...t[11]||(t[11]=[p("Select Plugin Environment",-1)])]),_:1}),a(J,null,{default:l(()=>[a(H,{modelValue:s.selectedPlugin,"onUpdate:modelValue":t[3]||(t[3]=n=>s.selectedPlugin=n),items:o.pythonVenvOptions,label:"Install into python venv",density:"comfortable","data-test":"python-venv-select"},null,8,["modelValue","items"])]),_:1}),a(ee,null,{default:l(()=>[a(Q),a(m,{variant:"text",onClick:o.cancelPluginSelect},{default:l(()=>[...t[12]||(t[12]=[p("Cancel",-1)])]),_:1},8,["onClick"]),a(m,{color:"primary",variant:"flat",disabled:!s.selectedPlugin,onClick:o.confirmPluginInstall},{default:l(()=>[...t[13]||(t[13]=[p(" OK ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const ne=U("default",S(i,[["render",L],["__scopeId","data-v-684ffe54"]]))})}}));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
System.register(["./main-f0865abbd006d9b2cc5a.js","vue","single-spa","./SimpleTextDialog-Ccqw4mzt-bc4caae5dd1d7e6f0d3b.js","./useDownloadFile-DASMZ_Dl-d13e01890d2f8843337e.js","./settings-CF2_iY3N-2c1b3aa6b738e9889263.js","vue-router","pinia","vuetify"],(function(se,it){"use strict";var A,Z,Y,W,b,N,G,o,r,_,n,a,m,u,p,I,E,f,B,O,v,j,L,R,J,Q,X;return{setters:[g=>{A=g.f,Z=g.R,Y=g.a,W=g.T,b=g.q,N=g.O,G=g.i},g=>{o=g.resolveComponent,r=g.openBlock,_=g.createElementBlock,n=g.createVNode,a=g.withCtx,m=g.createTextVNode,u=g.createElementVNode,p=g.createBlock,I=g.Fragment,E=g.renderList,f=g.toDisplayString,B=g.normalizeClass,O=g.mergeProps,v=g.createCommentVNode,j=g.normalizeProps,L=g.guardReactiveProps,R=g.withModifiers},null,g=>{J=g.E},g=>{Q=g.w},g=>{X=g.r},null,null,null],execute:(function(){const g="store_url",ee="https://store.openc3.com",K={props:{id:Number,name:String,title:String,author:String,author_extra:Object,description:String,keywords:Array,img_path:String,image_url:String,licenses:Array,homepage:String,repository:String,gem_url:String,minimum_cosmos_version:String,checksum:String,versions:Array,current_version_id:Number,access:String,entitled:Boolean,installAllowed:{type:Boolean,default:!0}},data:function(){return{_api:new N,_storeUrl:"",imageContents:null}},computed:{plugin:function(){return{id:this.id,name:this.name,title:this.title,author:this.author,author_extra:this.author_extra,description:this.description,keywords:this.keywords,img_path:this.img_path,image_url:this.image_url,licenses:this.licenses,homepage:this.homepage,repository:this.repository,gem_url:this.gem_url,minimum_cosmos_version:this.minimum_cosmos_version,checksum:this.checksum,versions:this.versions,current_version_id:this.current_version_id,access:this.access,entitled:this.entitled,installAllowed:this.installAllowed}},canInstall:function(){return this.entitled&&this.installAllowed},installTooltip:function(){return this.installAllowed?this.accessTooltip:"Only admin users can install plugins."},imageContentsWithMimeType:function(){if(this.imageContents){const e={"image/bmp":[66,77],"image/jpeg":[255,216,255],"image/png":[137,80,78,71],"image/gif":[71,73,70,56],"image/webp":[82,73,70,70]},t=new TextEncoder().encode(globalThis.atob(this.imageContents.slice(0,6))).slice(1),l=Object.entries(e).find(([d,s])=>s.every((i,h)=>i===t[h]));if(l){const[d]=l;return`data:${d};base64,${this.imageContents}`}}},_navigableStoreUrl:function(){return this._storeUrl.replace("host.docker.internal","localhost")},storeLink:function(){return this.hasStoreListing&&this._navigableStoreUrl?new URL(`/cosmos_plugins/${this.id}`,this._navigableStoreUrl):null},hasStoreListing:function(){return!!this.id},hasDetails:function(){return this.hasStoreListing?!0:!!this.title&&!!this.description},isPluginInstalled:function(){return!!this.name},accessTooltip:function(){return this.entitled?"":localStorage.getItem("pluginStore.isApiKeySet")!=="true"?"Please add your OpenC3 Store API key using the settings cog icon.":this.access==="enterprise"?"A COSMOS Enterprise license is required for this plugin.":"Please contact sales@openc3.com for access to this plugin."}},created:async function(){try{this._storeUrl=await this._api.get_setting(g)||ee}catch{this._storeUrl=ee}if(this.img_path)try{const e=new URLSearchParams({volume:"OPENC3_GEMS_VOLUME",scope:globalThis.openc3Scope}),{data:t}=await b.get(`/openc3-api/storage/download_file/${encodeURIComponent(this.img_path)}?${e}`);this.imageContents=t.contents}catch{}}},ne={mixins:[K],props:{modelValue:Boolean},emits:["triggerInstall","triggerUninstall","update:modelValue"],data(){return{showDialog:!1,showCopiedTooltip:!1,installedCosmosVersion:null,selectedVersionId:null}},computed:{isDialogOpen:{get:function(){return this.modelValue||this.showDialog},set:function(e){this.showDialog=e,this.$emit("update:modelValue",e)}},hasVersions:function(){return this.versions&&this.versions.length>0},selectedVersion:function(){if(!this.hasVersions)return null;const e=this.selectedVersionId||this.current_version_id;return this.versions.find(t=>t.id===e)||this.versions[0]},versionOptions:function(){return this.hasVersions?this.versions.map(e=>({title:e.version_number,value:e.id})):[]},versionTitle:function(){return this.selectedVersion?.title||this.title},versionDescription:function(){return this.selectedVersion?.description||this.description},versionKeywords:function(){return this.selectedVersion?.keywords||this.keywords},versionLicenses:function(){return this.selectedVersion?.licenses||this.licenses},versionHomepage:function(){return this.selectedVersion?.homepage||this.homepage},versionRepository:function(){return this.selectedVersion?.repository||this.repository},versionGemUrl:function(){return this.selectedVersion?.gem_url||this.gem_url},versionMinimumCosmosVersion:function(){return this.selectedVersion?.minimum_cosmos_version||this.minimum_cosmos_version},versionChecksum:function(){return this.selectedVersion?.checksum||this.checksum},versionImageUrl:function(){return this.selectedVersion?.image_url||this.image_url},formattedStoreLink:function(){return this._navigableStoreUrl.split("://").at(-1)},versionsAreCompatible:function(){return!this.installedCosmosVersion||!this.versionMinimumCosmosVersion?null:G.gte(this.installedCosmosVersion,this.versionMinimumCosmosVersion)}},created:function(){b.get("/openc3-api/info").then(({data:e})=>{this.installedCosmosVersion=e.version}).catch(console.error)},mounted:function(){this.selectedVersionId=this.current_version_id},methods:{openDialog:function(){this.isDialogOpen=!0},closeDialog:function(){this.isDialogOpen=!1},install:function(){this.$emit("triggerInstall",{id:this.id,version_id:this.selectedVersionId||this.current_version_id})},uninstall:function(){this.$emit("triggerUninstall",{id:this.id,version_id:this.selectedVersionId||this.current_version_id})},copyChecksum:function(){navigator.clipboard.writeText(this.versionChecksum).catch(console.error),this.showCopiedTooltip=!0,setTimeout(()=>{this.showCopiedTooltip=!1},1e3)}}},oe=["textContent"],le={key:0,class:"ml-1 font-italic"},ae={class:"plugin-image-backdrop"},re=["textContent"],ue={class:"mt-3 text-caption font-italic"},ce={key:1,class:"font-italic"},de={class:"mt-3 text-caption font-italic"},pe={class:"mt-3"},ge={key:0},he={key:1};function me(e,t,l,d,s,i){const h=o("v-spacer"),w=o("v-btn"),c=o("v-tooltip"),S=o("v-toolbar"),P=o("v-icon"),V=o("v-select"),C=o("v-card-subtitle"),T=o("v-img"),D=o("v-chip"),k=o("v-text-field"),M=o("v-card-text"),$=o("v-card-actions"),F=o("v-card"),U=o("v-dialog");return r(),p(U,{modelValue:i.isDialogOpen,"onUpdate:modelValue":t[3]||(t[3]=x=>i.isDialogOpen=x),"max-width":"500"},{default:a(()=>[n(F,null,{default:a(()=>[n(S,{height:"24"},{default:a(()=>[n(h),u("span",{textContent:f(i.versionTitle)},null,8,oe),n(h),n(c,{location:"top"},{activator:a(({props:x})=>[u("div",j(L(x)),[n(w,{href:e.storeLink,target:"_blank",icon:"mdi-open-in-new",size:"small",variant:"plain"},null,8,["href"])],16)]),default:a(()=>[u("span",null," View at "+f(i.formattedStoreLink),1)]),_:1}),n(w,{icon:"mdi-close-box",variant:"text",density:"compact",onClick:i.closeDialog},null,8,["onClick"])]),_:1}),n(C,{class:"d-flex align-center justify-space-between subtitle-with-version"},{default:a(()=>[u("div",null,[t[4]||(t[4]=m(" By ",-1)),u("strong",null,f(e.author),1),e.author_extra?.badge_text?(r(),_("span",le,f(e.author_extra.badge_text),1)):v("",!0),e.author_extra?.badge_icon?(r(),p(P,{key:1,icon:e.author_extra.badge_icon,size:18,class:"ml-1"},null,8,["icon"])):v("",!0)]),i.hasVersions?(r(),p(V,{key:0,modelValue:s.selectedVersionId,"onUpdate:modelValue":t[0]||(t[0]=x=>s.selectedVersionId=x),items:i.versionOptions,"item-title":"title","item-value":"value",label:"Version",density:"compact",variant:"outlined","hide-details":"",class:"mt-1 version-select"},null,8,["modelValue","items"])):v("",!0)]),_:1}),n(M,null,{default:a(()=>[u("div",ae,[e.imageContentsWithMimeType?(r(),p(T,{key:0,src:e.imageContentsWithMimeType},null,8,["src"])):i.versionImageUrl?(r(),p(T,{key:1,src:i.versionImageUrl},null,8,["src"])):v("",!0)]),u("div",{class:"mt-3",textContent:f(i.versionDescription)},null,8,re),u("div",ue,[t[5]||(t[5]=m(" Keywords: ",-1)),i.versionKeywords?(r(!0),_(I,{key:0},E(i.versionKeywords,x=>(r(),p(D,{key:x,variant:"flat",color:"primary",size:"x-small",class:"ml-1"},{default:a(()=>[m(f(x),1)]),_:2},1024))),128)):(r(),_("span",ce," none "))]),u("div",de,[t[6]||(t[6]=m(" Licenses: ",-1)),(r(!0),_(I,null,E(i.versionLicenses,x=>(r(),p(D,{key:x,size:"x-small",class:"ml-1"},{default:a(()=>[m(f(x),1)]),_:2},1024))),128))]),u("div",pe,[t[7]||(t[7]=u("span",{class:"text-caption font-italic"}," Minimum COSMOS version: ",-1)),m(" "+f(i.versionMinimumCosmosVersion)+" ",1),i.versionsAreCompatible!==null?(r(),p(c,{key:0,"open-delay":600,location:"top"},{activator:a(({props:x})=>[u("span",j(L(x)),[n(P,{icon:i.versionsAreCompatible?"mdi-check-circle":"mdi-alert",size:"small"},null,8,["icon"])],16)]),default:a(()=>[i.versionsAreCompatible?(r(),_("span",ge," Your version of COSMOS meets the requirements. ")):(r(),_("span",he," Your version of COSMOS is out of date. You can still install this plugin, but it might not work correctly. "))]),_:1})):v("",!0)]),n(k,{modelValue:i.versionChecksum,"onUpdate:modelValue":t[2]||(t[2]=x=>i.versionChecksum=x),class:"mt-3",label:"SHA256",variant:"solo",density:"compact","hide-details":"",readonly:""},{append:a(()=>[n(c,{modelValue:s.showCopiedTooltip,"onUpdate:modelValue":t[1]||(t[1]=x=>s.showCopiedTooltip=x),location:"top","open-on-hover":!1},{activator:a(({props:x})=>[n(w,O(x,{icon:"mdi-content-copy",variant:"text",density:"compact",onClick:i.copyChecksum}),null,16,["onClick"])]),default:a(()=>[t[8]||(t[8]=u("span",null,"Copied!",-1))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1}),n($,{class:"justify-start px-6"},{default:a(()=>[e.isPluginInstalled?(r(),p(w,{key:0,text:"Uninstall","append-icon":"mdi-puzzle-remove",variant:"outlined",color:"red",onClick:i.uninstall},null,8,["onClick"])):(r(),p(c,{key:1,"open-delay":600,location:"top"},{activator:a(({props:x})=>[u("span",j(L(e.canInstall?null:x)),[n(w,{text:"Install","append-icon":"mdi-puzzle-plus",variant:"elevated",disabled:!e.canInstall,onClick:i.install},null,8,["disabled","onClick"])],16)]),default:a(()=>[u("span",null,f(e.installTooltip),1)]),_:1})),i.versionRepository?(r(),p(w,{key:2,text:"Repository","append-icon":"mdi-open-in-new",variant:"outlined",href:i.versionRepository,target:"_blank"},null,8,["href"])):v("",!0),i.versionHomepage?(r(),p(w,{key:3,text:"Homepage","append-icon":"mdi-open-in-new",variant:"outlined",href:i.versionHomepage,target:"_blank"},null,8,["href"])):v("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"])}const te=A(ne,[["render",me],["__scopeId","data-v-53414ca0"]]),fe={components:{PluginDetailsDialog:te},mixins:[K],emits:["triggerInstall"],data(){return{showDialog:!1}},methods:{openDialog:function(){this.showDialog=!0},install:function(e){this.$emit("triggerInstall",{id:this.id,version_id:e?.version_id||this.current_version_id})}}},ve={key:0,class:"ml-1 font-italic"},ye={class:"plugin-image-backdrop"},_e=["textContent"];function we(e,t,l,d,s,i){const h=o("v-card-title"),w=o("v-icon"),c=o("v-card-subtitle"),S=o("v-img"),P=o("v-card-text"),V=o("v-spacer"),C=o("v-btn"),T=o("v-tooltip"),D=o("v-card-actions"),k=o("v-card"),M=o("plugin-details-dialog");return r(),_(I,null,[n(k,{height:"350",class:"d-flex flex-column",onClick:i.openDialog},{default:a(()=>[n(h,{class:"d-flex align-center justify-content-space-between"},{default:a(()=>[m(f(e.title),1)]),_:1}),n(c,{class:"d-flex align-center justify-content-space-between"},{default:a(()=>[u("div",null,[t[1]||(t[1]=m(" By ",-1)),u("strong",null,f(e.author),1),e.author_extra?.badge_text?(r(),_("span",ve,f(e.author_extra.badge_text),1)):v("",!0),e.author_extra?.badge_icon?(r(),p(w,{key:1,icon:e.author_extra.badge_icon,size:18,class:"ml-1"},null,8,["icon"])):v("",!0)])]),_:1}),n(P,null,{default:a(()=>[u("div",ye,[e.image_url?(r(),p(S,{key:0,src:e.image_url,"max-height":"160"},null,8,["src"])):v("",!0)]),u("div",{class:B({"truncate-description":!0,"truncate-2":!!e.image_url,"truncate-10":!e.image_url}),textContent:f(e.description)},null,10,_e)]),_:1}),n(V),n(D,{class:"flex-wrap"},{default:a(()=>[n(T,{"open-delay":600,location:"top"},{activator:a(({props:$})=>[u("span",j(L(e.canInstall?null:$)),[n(C,{text:"Install","append-icon":"mdi-puzzle-plus",variant:"elevated",disabled:!e.canInstall,onClick:R(i.install,["stop"])},null,8,["disabled","onClick"])],16)]),default:a(()=>[u("span",null,f(e.installTooltip),1)]),_:1})]),_:1})]),_:1},8,["onClick"]),s.showDialog?(r(),p(M,O({key:0,modelValue:s.showDialog,"onUpdate:modelValue":t[0]||(t[0]=$=>s.showDialog=$)},e.plugin,{onTriggerInstall:i.install}),null,16,["modelValue","onTriggerInstall"])):v("",!0)],64)}const xe=A(fe,[["render",we],["__scopeId","data-v-825f4373"]]),H="store_url",q="store_api_key",z="DEFAULT",Ce="https://store.openc3.com",be={mixins:[X],props:{modelValue:Boolean},emits:["update:modelValue","update:storeUrl"],data(){return{showDialog:!1,storeUrl:"",apiKey:null,rules:{required:e=>!!e||"Required",url:e=>{try{new URL(e)}catch{return"Not a valid URL"}return!0}}}},watch:{apiKey:function(e){localStorage.setItem("pluginStore.isApiKeySet",!!e)},modelValue:function(e){e&&(this.showDialog=e)},showDialog:function(e){e||this.$emit("update:modelValue",e)}},created:function(){this.loadSetting(H,{scope:z}),this.loadSetting(q,{scope:z}),this.$emit("update:storeUrl",this.storeUrl)},methods:{save:function(){this.saveSetting(H,this.storeUrl,{scope:z}),this.saveSetting(q,this.apiKey,{scope:z}),this.$emit("update:storeUrl",this.storeUrl),this.showDialog=!1},parseSetting:function(e,{setting:t}){switch(t){case H:this.storeUrl=e||Ce;break;case q:this.apiKey=e||"";break}}}};function ke(e,t,l,d,s,i){const h=o("v-spacer"),w=o("v-toolbar"),c=o("v-alert"),S=o("v-text-field"),P=o("v-card-text"),V=o("v-btn"),C=o("v-card-actions"),T=o("v-card"),D=o("v-dialog");return r(),p(D,{modelValue:s.showDialog,"onUpdate:modelValue":t[4]||(t[4]=k=>s.showDialog=k),width:"600"},{default:a(()=>[n(w,{height:"24"},{default:a(()=>[n(h),t[5]||(t[5]=u("span",null,"Plugin Store Settings",-1)),n(h)]),_:1}),n(T,{class:"pa-3"},{default:a(()=>[n(c,{modelValue:e.errorLoading,"onUpdate:modelValue":t[0]||(t[0]=k=>e.errorLoading=k),type:"error",closable:"",density:"compact"},{default:a(()=>[m(" Error loading previous configuration due to "+f(e.errorText),1)]),_:1},8,["modelValue"]),n(c,{modelValue:e.errorSaving,"onUpdate:modelValue":t[1]||(t[1]=k=>e.errorSaving=k),type:"error",closable:"",density:"compact"},{default:a(()=>[m(" Error saving due to "+f(e.errorText),1)]),_:1},8,["modelValue"]),n(P,null,{default:a(()=>[n(S,{modelValue:s.storeUrl,"onUpdate:modelValue":t[2]||(t[2]=k=>s.storeUrl=k),label:"Store URL",rules:[s.rules.required,s.rules.url]},null,8,["modelValue","rules"]),n(S,{modelValue:s.apiKey,"onUpdate:modelValue":t[3]||(t[3]=k=>s.apiKey=k),type:"password",label:"API Key"},null,8,["modelValue"])]),_:1}),n(C,null,{default:a(()=>[n(V,{color:"success",variant:"text",text:"Save","data-test":"save-store-settings-btn",onClick:i.save},null,8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const Pe=A(be,[["render",ke]]),ie="https://store.openc3.com",Ve={components:{PluginCard:xe,PluginStoreSettingsDialog:Pe},emits:["close","triggerInstall"],data(){return{api:new N,search:"",showSettingsDialog:!1,plugins:[],storeError:null,storeUrl:ie,isEnterprise:!1,isAdmin:!0,isApiKeySet:localStorage.getItem("pluginStore.isApiKeySet")==="true",loading:!1}},computed:{showApiKeyBanner:function(){return this.isEnterprise&&!this.isApiKeySet},accountSettingsUrl:function(){const e=(this.storeUrl||ie).replace("host.docker.internal","localhost");return new URL("account",e)},filteredPlugins:function(){let e=this.plugins;return this.search.length&&(e=e.filter(t=>t.title.toLowerCase().includes(this.search.toLowerCase()))),e},formattedStoreUrl:function(){return this.storeUrl.split("://").at(-1)},installAllowed:function(){return!this.isEnterprise||this.isAdmin}},watch:{showSettingsDialog:function(e){e||(this.isApiKeySet=localStorage.getItem("pluginStore.isApiKeySet")==="true")}},mounted:function(){this.fetchPluginStoreData(),this.fetchUserContext()},methods:{fetchPluginStoreData:function(){this.loading=!0,b.get("/openc3-api/pluginstore").then(({data:e})=>{if(e.error){const{title:t,body:l}=e;this.storeError={title:t,body:l},this.plugins=[]}else this.storeError=null,this.plugins=e}).catch(console.error).finally(()=>{this.loading=!1})},fetchUserContext:function(){b.get("/openc3-api/info").then(({data:t})=>{this.isEnterprise=!!t.enterprise}).catch(console.error);const e=OpenC3Auth.userroles()||[];this.isAdmin=e.includes("admin")},close:function(){this.$emit("close")},install:function(e){this.$emit("triggerInstall",e),this.close()},openSettings:function(){this.showSettingsDialog=!0},updatePluginStore:function(e){this.storeUrl=e,this.loading=!0,this.api.update_plugin_store().then(t=>{this.fetchPluginStoreData()})}}},Se={class:"d-flex justify-content-space-between"},Te={class:"d-inline-flex align-center w-100"},Ue=["href"],De={key:2,class:"d-flex justify-center align-center py-12","data-test":"plugin-store-loading"};function Ie(e,t,l,d,s,i){const h=o("v-spacer"),w=o("v-btn"),c=o("v-tooltip"),S=o("v-text-field"),P=o("v-icon"),V=o("v-alert"),C=o("v-progress-circular"),T=o("plugin-card"),D=o("v-col"),k=o("v-row"),M=o("v-container"),$=o("v-sheet"),F=o("plugin-store-settings-dialog");return r(),_(I,null,[n($,{class:"pb-11 pt-8 px-8",height:"100%"},{default:a(()=>[u("div",Se,[t[2]||(t[2]=u("div",null,[u("div",{class:"text-h3 mb-3"},"OpenC3 Plugin Store"),u("div",{class:"text-subtitle-1"}," Browse plugins made by OpenC3 and the COSMOS community ")],-1)),n(h),n(w,{icon:"mdi-cog",variant:"text",onClick:i.openSettings},null,8,["onClick"]),n(c,{location:"top"},{activator:a(({props:U})=>[u("div",j(L(U)),[n(w,{href:s.storeUrl,target:"_blank",icon:"mdi-open-in-new",variant:"text",class:"mx-2"},null,8,["href"])],16)]),default:a(()=>[u("span",null," Open "+f(i.formattedStoreUrl),1)]),_:1}),n(w,{icon:"mdi-close",variant:"text",onClick:i.close},null,8,["onClick"])]),u("div",Te,[n(S,{modelValue:s.search,"onUpdate:modelValue":t[0]||(t[0]=U=>s.search=U),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"","data-test":"search-plugin-store"},null,8,["modelValue"])]),n(h),i.showApiKeyBanner?(r(),p(V,{key:0,class:"my-3",type:"info",density:"compact","data-test":"api-key-banner"},{default:a(()=>[t[4]||(t[4]=m(" You're using COSMOS Enterprise, but you haven't set an OpenC3 Store API key yet. You must set this to access Enterprise plugins. ",-1)),t[5]||(t[5]=u("br",null,null,-1)),t[6]||(t[6]=m(" Visit the ",-1)),u("a",{href:i.accountSettingsUrl,target:"_blank",class:"text-white"},[t[3]||(t[3]=m(" OpenC3 Store account settings",-1)),n(P,{icon:"mdi-open-in-new",size:"x-small"})],8,Ue),t[7]||(t[7]=m(" to generate an API key. Then, return here and open the Plugin Store settings with the ",-1)),n(P,{icon:"mdi-cog",size:"small"}),t[8]||(t[8]=m(" icon above, and finally paste your API key into the API key field. ",-1))]),_:1})):v("",!0),t[10]||(t[10]=u("span",{class:""}," Click on a plugin to see more information about it ",-1)),s.storeError?(r(),p(V,{key:1,class:"mt-6",color:"error",title:s.storeError.title,text:s.storeError.body},null,8,["title","text"])):s.loading?(r(),_("div",De,[n(C,{indeterminate:"",color:"primary",size:"48"}),t[9]||(t[9]=u("span",{class:"ml-4 text-subtitle-1"},"Loading plugins...",-1))])):(r(),p(M,{key:3},{default:a(()=>[n(k,null,{default:a(()=>[(r(!0),_(I,null,E(i.filteredPlugins,U=>(r(),p(D,{key:U.id,cols:"4"},{default:a(()=>[n(T,O({ref_for:!0},U,{"install-allowed":i.installAllowed,onTriggerInstall:i.install}),null,16,["install-allowed","onTriggerInstall"])]),_:2},1024))),128))]),_:1})]),_:1}))]),_:1}),n(F,{modelValue:s.showSettingsDialog,"onUpdate:modelValue":t[1]||(t[1]=U=>s.showSettingsDialog=U),"onUpdate:storeUrl":i.updatePluginStore},null,8,["modelValue","onUpdate:storeUrl"])],64)}const $e=A(Ve,[["render",Ie]]),Ae={components:{PluginDetailsDialog:te},mixins:[K],props:{targets:{type:Array,default:()=>[]},isModified:Boolean,needsUvMigration:Boolean,microservices:{type:Object,default:()=>({})},scriptVersionsEnabled:Boolean},emits:["edit","delete","upgrade","migrate-to-uv"],setup(){return{downloadZip:Q()}},data(){return{showCard:!1,exporting:!1,importing:!1}},computed:{pluginBaseName:function(){return this.name.split("__")[0].split("-").slice(0,-1).join("-")},displayTitle:function(){return this.title?this.title:this.name.replace(/^openc3-cosmos-/,"").replace(/-?\d+\.\d+\.\d+(?:\.pre\.beta\d+\.\d+)?\.gem(?:__\d+)?$/,"")},getMicroservicesForPlugin:function(){const e=[];for(const[t,l]of Object.entries(this.microservices))l.plugin===this.name&&e.push(t);return e},microserviceCount:function(){return this.getMicroservicesForPlugin.length}},methods:{openDetails:function(){this.hasDetails&&(this.showCard=!0)},downloadPlugin:async function(){await this.downloadZip(`/openc3-api/packages/${this.name}/download`)},downloadTarget:async function(e){await this.downloadZip(`/openc3-api/targets/${e}/download`)},async exportHistory(){this.exporting=!0;try{const e=await b.get(`/script-api/scripts/plugin/${this.pluginBaseName}/history-export`,{responseType:"blob",headers:{Accept:"application/octet-stream"}});let t=`${this.pluginBaseName}-history.bundle`;const l=e.headers?.["content-disposition"];if(l){const i=/filename="?([^";]+)"?/.exec(l);i&&(t=i[1])}const d=URL.createObjectURL(e.data),s=document.createElement("a");s.href=d,s.download=t,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(d),this.$notify.normal({title:"History Exported",body:`Saved ${t}. Apply with: git clone ${t} local-repo`})}catch({response:e}){this.$notify.caution({title:"Export Failed",body:e?.data?.message||e?.statusText||"unknown"})}finally{this.exporting=!1}},pickImportFile(){this.$refs.importFileInput&&(this.$refs.importFileInput.value="",this.$refs.importFileInput.click())},async onImportFileSelected(e){const t=e.target.files&&e.target.files[0];if(t){this.importing=!0;try{const l=new FormData;l.append("bundle",t);const d=(await b.post(`/script-api/scripts/plugin/${this.pluginBaseName}/history-import`,{data:l,headers:{Accept:"application/json"}})).data||{};this.$notify.normal({title:d.reconciled?"History Imported (Reconciled)":"History Imported",body:d.message||"Imported."})}catch({response:l}){this.$notify.caution({title:"Import Failed",body:l?.data?.message||l?.statusText||"unknown"})}finally{this.importing=!1}}},edit:function(){this.$emit("edit")},upgrade:function(){this.$emit("upgrade")},viewMicroservices:function(){const e=this.getMicroservicesForPlugin.join(",");this.$router.push({path:"/tools/admin/microservices",query:{services:e}})},migrateToUv:function(){this.$emit("migrate-to-uv")},deletePrompt:function(){this.showCard=!1,this.$emit("delete")}}},Oe=["textContent"],Me={class:"text-subtitle-2 v-list-item-subtitle pl-0"},Ee={key:0},je=["onClick","textContent"],Le=["textContent"],Fe=["data-test"];function Ne(e,t,l,d,s,i){const h=o("v-img"),w=o("v-icon"),c=o("v-list-item"),S=o("v-list"),P=o("v-menu"),V=o("plugin-details-dialog");return r(),_(I,null,[u("tr",{class:B({"cursor-pointer":e.hasDetails}),"data-test":"plugin-list-item"},[u("td",null,[e.imageContentsWithMimeType?(r(),p(h,{key:0,src:e.imageContentsWithMimeType,"max-height":"56","min-width":"56"},null,8,["src"])):v("",!0)]),u("td",null,[u("div",{class:"text-h6",onClick:t[0]||(t[0]=(...C)=>i.openDetails&&i.openDetails(...C)),textContent:f(i.displayTitle)},null,8,Oe),u("div",Me,[l.isModified?(r(),_(I,{key:0},[m(" * ")],64)):v("",!0),m(" "+f(e.name),1)]),l.targets?.length?(r(),_("div",Ee,[(r(!0),_(I,null,E(l.targets,(C,T)=>(r(),_("span",{key:T,class:"mr-2"},[C.modified?(r(),_("a",{key:0,style:{cursor:"pointer"},onClick:R(D=>i.downloadTarget(C.name),["prevent"]),textContent:f(C.name)},null,8,je)):(r(),_("span",{key:1,textContent:f(C.name)},null,8,Le))]))),128))])):v("",!0)]),u("td",null,[n(P,null,{activator:a(({props:C})=>[n(w,O(C,{icon:"mdi-dots-horizontal","data-test":"plugin-actions"}),null,16)]),default:a(()=>[n(S,null,{default:a(()=>[n(c,{title:"Download","prepend-icon":"mdi-download","data-test":"download-plugin",onClick:i.downloadPlugin},null,8,["onClick"]),n(c,{title:"Edit Details","prepend-icon":"mdi-pencil","data-test":"edit-plugin",onClick:i.edit},null,8,["onClick"]),n(c,{title:"Upgrade","prepend-icon":"mdi-update","data-test":"upgrade-plugin",onClick:i.upgrade},null,8,["onClick"]),l.scriptVersionsEnabled?(r(),p(c,{key:0,title:"Export History","prepend-icon":"mdi-export",disabled:s.exporting||s.importing,"data-test":"export-plugin-history",onClick:i.exportHistory},null,8,["disabled","onClick"])):v("",!0),l.scriptVersionsEnabled?(r(),p(c,{key:1,title:"Import History","prepend-icon":"mdi-import",disabled:s.exporting||s.importing,"data-test":"import-plugin-history",onClick:i.pickImportFile},null,8,["disabled","onClick"])):v("",!0),n(c,{title:`View Microservices (${i.microserviceCount})`,"prepend-icon":"mdi-tab","data-test":"view-microservices",onClick:i.viewMicroservices},null,8,["title","onClick"]),l.needsUvMigration?(r(),p(c,{key:2,title:"Migrate to UV","prepend-icon":"mdi-swap-horizontal","data-test":"migrate-to-uv",onClick:i.migrateToUv},null,8,["onClick"])):v("",!0),n(c,{title:"Delete","prepend-icon":"mdi-delete","data-test":"delete-plugin",onClick:i.deletePrompt},null,8,["onClick"])]),_:1})]),_:1})])],2),s.showCard?(r(),p(V,O({key:0,modelValue:s.showCard,"onUpdate:modelValue":t[1]||(t[1]=C=>s.showCard=C)},e.plugin,{onTriggerUninstall:i.deletePrompt}),null,16,["modelValue","onTriggerUninstall"])):v("",!0),l.scriptVersionsEnabled?(r(),_("input",{key:1,ref:"importFileInput",type:"file",accept:".bundle,application/octet-stream",style:{display:"none"},"data-test":`import-plugin-history-file-${e.name}`,onChange:t[2]||(t[2]=(...C)=>i.onImportFileSelected&&i.onImportFileSelected(...C))},null,40,Fe)):v("",!0)],64)}const Be=A(Ae,[["render",Ne]]),ze={components:{PluginListItem:Be},props:{plugins:{type:Array,required:!0},targets:{type:Object,required:!0},showDefaultTools:{type:Boolean,default:!1},defaultPlugins:{type:Array,required:!0},scriptVersionsEnabled:{type:Boolean,default:!1}},emits:["edit","delete","upgrade","migrate-to-uv"],data(){return{showPluginDetails:!1,detailPlugin:null,microservices:{}}},computed:{shownPlugins(){const e=[],t=[];return this.plugins.forEach(l=>{const d=l.name.split("__")[0].split("-").slice(0,-1).join("-");this.defaultPlugins.includes(d)?t.push(l):e.push(l)}),e.sort((l,d)=>l.name<d.name?-1:l.name>d.name?1:0),this.showDefaultTools?(t.sort((l,d)=>l.name<d.name?-1:l.name>d.name?1:0),e.concat(t)):e}},mounted(){this.fetchMicroservices()},methods:{showDetails:function(e){this.detailPlugin=e,this.showPluginDetails=!0},pluginTargets:function(e){let t=[];for(const l in this.targets)this.targets[l].plugin===e&&t.push(this.targets[l]);return t},isModified:function(e){return Object.entries(this.targets).some(([t,l])=>l.plugin===e&&l.modified===!0)},editPlugin:function(e){this.$emit("edit",e)},upgradePlugin(e){this.$emit("upgrade",e)},migrateToUv:function(e){this.$emit("migrate-to-uv",e)},deletePrompt:function(e){this.$emit("delete",e)},fetchMicroservices:async function(){const e=await b.get("/openc3-api/microservices/all");this.microservices=e.data}}};function Re(e,t,l,d,s,i){const h=o("plugin-list-item"),w=o("v-data-table");return r(),p(w,{headers:[],items:i.shownPlugins,density:"compact",class:"list","data-test":"plugin-list"},{item:a(({item:c})=>[(r(),p(h,O({key:c.name},c,{targets:i.pluginTargets(c.name),"is-modified":i.isModified(c.name),microservices:s.microservices,"script-versions-enabled":l.scriptVersionsEnabled,onEdit:()=>i.editPlugin(c.name),onUpgrade:()=>i.upgradePlugin(c.name),onMigrateToUv:()=>i.migrateToUv(c.name),onDelete:()=>i.deletePrompt(c.name)}),null,16,["targets","is-modified","microservices","script-versions-enabled","onEdit","onUpgrade","onMigrateToUv","onDelete"]))]),_:1},8,["items"])}const Ke=A(ze,[["render",Re],["__scopeId","data-v-4f7d64b0"]]),He={components:{PluginDialog:W,PluginList:Ke,PluginStore:$e,ModifiedPluginDialog:Y,SimpleTextDialog:J},mixins:[Z],data(){return{pluginName:null,variables:{},storePluginId:null,storeVersionId:null,minCosmosVersion:null,pluginTxt:"",file:null,currentPlugin:null,pluginHashTmp:null,existingPluginTxt:null,progress:0,pluginDelete:!1,api:new N,plugins:[],targets:{},processes:{},alert:"",alertType:"success",showAlert:!1,showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",showPluginStore:!1,showPluginDialog:!1,showModifiedPluginDialog:!1,showDefaultTools:!1,scriptVersionsEnabled:!1,timeZone:"local",defaultPlugins:["openc3-cosmos-tool-admin","openc3-cosmos-tool-bucketexplorer","openc3-cosmos-tool-cmdsender","openc3-cosmos-tool-cmdqueue","openc3-cosmos-tool-cmdhistory","openc3-cosmos-tool-cmdtlmserver","openc3-cosmos-tool-dataextractor","openc3-cosmos-tool-dataviewer","openc3-cosmos-tool-docs","openc3-cosmos-tool-handbooks","openc3-cosmos-tool-iframe","openc3-cosmos-tool-limitsmonitor","openc3-cosmos-tool-packetviewer","openc3-cosmos-tool-scriptrunner","openc3-cosmos-tool-tablemanager","openc3-cosmos-tool-tlmgrapher","openc3-cosmos-tool-tlmviewer","openc3-cosmos-enterprise-tool-admin","openc3-cosmos-tool-autonomic","openc3-cosmos-tool-calendar","openc3-cosmos-tool-grafana","openc3-cosmos-tool-logexplorer","openc3-cosmos-tool-notebooks","openc3-cosmos-tool-systemhealth","openc3-enterprise-tool-base","openc3-tool-base"]}},watch:{showPluginDialog:function(e,t){e===!1&&(this.file=null,this.$refs.fileInput.value=null)}},created(){this.api.update_plugin_store(),this.api.get_setting("time_zone").then(e=>{e&&(this.timeZone=e)}).catch(()=>{})},mounted(){this.update(),this.updateProcesses(),b.get("/openc3-api/info").then(e=>{this.scriptVersionsEnabled=!!e.data?.script_versions}).catch(()=>{this.scriptVersionsEnabled=!1}),window.onpopstate=()=>{this.showPluginStore&&(this.showPluginStore=!1,history.go(1))}},methods:{resetControlState:function(){this.pluginName=null,this.variables={},this.storePluginId=null,this.storeVersionId=null,this.minCosmosVersion=null,this.pluginTxt="",this.file=null,this.currentPlugin=null,this.pluginHashTmp=null,this.existingPluginTxt=null,this.progress=0,this.pluginDelete=!1},pluginTargets:function(e){let t=[];for(const l in this.targets)this.targets[l].plugin===e&&t.push(this.targets[l]);return t},isModified:function(e){return Object.entries(this.targets).some(([t,l])=>l.plugin===e&&l.modified===!0)},showOutput:function(e){this.processOutput=e.output,this.showProcessOutput=!0},update:function(){b.get("/openc3-api/plugins/all").then(e=>{this.plugins=Object.entries(e.data).map(([t,l])=>l)}).catch(console.error),b.get("/openc3-api/targets_modified").then(e=>{this.targets=e.data}).catch(console.error)},updateProcesses:function(){b.get("openc3-api/process_status/plugin_?substr=true").then(e=>{this.processes=e.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},5e3)}).catch(console.error)},upload:function(e=null,t=null){const l=e?"put":"post",d=e?`/openc3-api/plugins/${e}`:"/openc3-api/plugins",s=new FormData;t===null?s.append("plugin",this.file,this.file.name):(s.append("store_plugin_id",t.id),s.append("store_version_id",t.version_id)),b[l](d,{data:s,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:i=>{let h=Math.round(i.loaded*100/i.total);this.progress=h}}).then(i=>{this.progress=100,this.alert="Uploaded file",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update();let h=null;i.data.existing_plugin_txt_lines!==void 0&&(h=i.data.existing_plugin_txt_lines.join(`
|
|
1
|
+
System.register(["./main-815790959203f3124f00.js","vue","single-spa","./SimpleTextDialog-B0Gv-5gr-aad99302ca279859996d.js","./useDownloadFile-DASMZ_Dl-e85a91e7267f608667a5.js","./settings-CF2_iY3N-2fd04d1950495151ab9b.js","vue-router","pinia","vuetify"],(function(se,it){"use strict";var A,Z,Y,W,b,B,G,o,r,_,n,a,m,u,p,I,E,f,N,O,v,j,L,z,J,Q,X;return{setters:[g=>{A=g.f,Z=g.R,Y=g.a,W=g.T,b=g.q,B=g.O,G=g.i},g=>{o=g.resolveComponent,r=g.openBlock,_=g.createElementBlock,n=g.createVNode,a=g.withCtx,m=g.createTextVNode,u=g.createElementVNode,p=g.createBlock,I=g.Fragment,E=g.renderList,f=g.toDisplayString,N=g.normalizeClass,O=g.mergeProps,v=g.createCommentVNode,j=g.normalizeProps,L=g.guardReactiveProps,z=g.withModifiers},null,g=>{J=g.E},g=>{Q=g.w},g=>{X=g.r},null,null,null],execute:(function(){const g="store_url",ee="https://store.openc3.com",K={props:{id:Number,name:String,title:String,author:String,author_extra:Object,description:String,keywords:Array,img_path:String,image_url:String,licenses:Array,homepage:String,repository:String,gem_url:String,minimum_cosmos_version:String,checksum:String,versions:Array,current_version_id:Number,access:String,entitled:Boolean,installAllowed:{type:Boolean,default:!0}},data:function(){return{_api:new B,_storeUrl:"",imageContents:null}},computed:{plugin:function(){return{id:this.id,name:this.name,title:this.title,author:this.author,author_extra:this.author_extra,description:this.description,keywords:this.keywords,img_path:this.img_path,image_url:this.image_url,licenses:this.licenses,homepage:this.homepage,repository:this.repository,gem_url:this.gem_url,minimum_cosmos_version:this.minimum_cosmos_version,checksum:this.checksum,versions:this.versions,current_version_id:this.current_version_id,access:this.access,entitled:this.entitled,installAllowed:this.installAllowed}},canInstall:function(){return this.entitled&&this.installAllowed},installTooltip:function(){return this.installAllowed?this.accessTooltip:"Only admin users can install plugins."},imageContentsWithMimeType:function(){if(this.imageContents){const e={"image/bmp":[66,77],"image/jpeg":[255,216,255],"image/png":[137,80,78,71],"image/gif":[71,73,70,56],"image/webp":[82,73,70,70]},t=new TextEncoder().encode(globalThis.atob(this.imageContents.slice(0,6))).slice(1),l=Object.entries(e).find(([d,s])=>s.every((i,h)=>i===t[h]));if(l){const[d]=l;return`data:${d};base64,${this.imageContents}`}}},_navigableStoreUrl:function(){return this._storeUrl.replace("host.docker.internal","localhost")},storeLink:function(){return this.hasStoreListing&&this._navigableStoreUrl?new URL(`/cosmos_plugins/${this.id}`,this._navigableStoreUrl):null},hasStoreListing:function(){return!!this.id},hasDetails:function(){return this.hasStoreListing?!0:!!this.title&&!!this.description},isPluginInstalled:function(){return!!this.name},accessTooltip:function(){return this.entitled?"":localStorage.getItem("pluginStore.isApiKeySet")!=="true"?"Please add your OpenC3 Store API key using the settings cog icon.":this.access==="enterprise"?"A COSMOS Enterprise license is required for this plugin.":"Please contact sales@openc3.com for access to this plugin."}},created:async function(){try{this._storeUrl=await this._api.get_setting(g)||ee}catch{this._storeUrl=ee}if(this.img_path)try{const e=new URLSearchParams({volume:"OPENC3_GEMS_VOLUME",scope:globalThis.openc3Scope}),{data:t}=await b.get(`/openc3-api/storage/download_file/${encodeURIComponent(this.img_path)}?${e}`);this.imageContents=t.contents}catch{}}},ne={mixins:[K],props:{modelValue:Boolean},emits:["triggerInstall","triggerUninstall","update:modelValue"],data(){return{showDialog:!1,showCopiedTooltip:!1,installedCosmosVersion:null,selectedVersionId:null}},computed:{isDialogOpen:{get:function(){return this.modelValue||this.showDialog},set:function(e){this.showDialog=e,this.$emit("update:modelValue",e)}},hasVersions:function(){return this.versions&&this.versions.length>0},selectedVersion:function(){if(!this.hasVersions)return null;const e=this.selectedVersionId||this.current_version_id;return this.versions.find(t=>t.id===e)||this.versions[0]},versionOptions:function(){return this.hasVersions?this.versions.map(e=>({title:e.version_number,value:e.id})):[]},versionTitle:function(){return this.selectedVersion?.title||this.title},versionDescription:function(){return this.selectedVersion?.description||this.description},versionKeywords:function(){return this.selectedVersion?.keywords||this.keywords},versionLicenses:function(){return this.selectedVersion?.licenses||this.licenses},versionHomepage:function(){return this.selectedVersion?.homepage||this.homepage},versionRepository:function(){return this.selectedVersion?.repository||this.repository},versionGemUrl:function(){return this.selectedVersion?.gem_url||this.gem_url},versionMinimumCosmosVersion:function(){return this.selectedVersion?.minimum_cosmos_version||this.minimum_cosmos_version},versionChecksum:function(){return this.selectedVersion?.checksum||this.checksum},versionImageUrl:function(){return this.selectedVersion?.image_url||this.image_url},formattedStoreLink:function(){return this._navigableStoreUrl.split("://").at(-1)},versionsAreCompatible:function(){return!this.installedCosmosVersion||!this.versionMinimumCosmosVersion?null:G.gte(this.installedCosmosVersion,this.versionMinimumCosmosVersion)}},created:function(){b.get("/openc3-api/info").then(({data:e})=>{this.installedCosmosVersion=e.version}).catch(console.error)},mounted:function(){this.selectedVersionId=this.current_version_id},methods:{openDialog:function(){this.isDialogOpen=!0},closeDialog:function(){this.isDialogOpen=!1},install:function(){this.$emit("triggerInstall",{id:this.id,version_id:this.selectedVersionId||this.current_version_id})},uninstall:function(){this.$emit("triggerUninstall",{id:this.id,version_id:this.selectedVersionId||this.current_version_id})},copyChecksum:function(){navigator.clipboard.writeText(this.versionChecksum).catch(console.error),this.showCopiedTooltip=!0,setTimeout(()=>{this.showCopiedTooltip=!1},1e3)}}},oe=["textContent"],le={key:0,class:"ml-1 font-italic"},ae={class:"plugin-image-backdrop"},re=["textContent"],ue={class:"mt-3 text-caption font-italic"},ce={key:1,class:"font-italic"},de={class:"mt-3 text-caption font-italic"},pe={class:"mt-3"},ge={key:0},he={key:1};function me(e,t,l,d,s,i){const h=o("v-spacer"),w=o("v-btn"),c=o("v-tooltip"),S=o("v-toolbar"),P=o("v-icon"),V=o("v-select"),C=o("v-card-subtitle"),T=o("v-img"),D=o("v-chip"),k=o("v-text-field"),M=o("v-card-text"),$=o("v-card-actions"),F=o("v-card"),U=o("v-dialog");return r(),p(U,{modelValue:i.isDialogOpen,"onUpdate:modelValue":t[3]||(t[3]=x=>i.isDialogOpen=x),"max-width":"500"},{default:a(()=>[n(F,null,{default:a(()=>[n(S,{height:"24"},{default:a(()=>[n(h),u("span",{textContent:f(i.versionTitle)},null,8,oe),n(h),n(c,{location:"top"},{activator:a(({props:x})=>[u("div",j(L(x)),[n(w,{href:e.storeLink,target:"_blank",icon:"mdi-open-in-new",size:"small",variant:"plain"},null,8,["href"])],16)]),default:a(()=>[u("span",null," View at "+f(i.formattedStoreLink),1)]),_:1}),n(w,{icon:"mdi-close-box",variant:"text",density:"compact",onClick:i.closeDialog},null,8,["onClick"])]),_:1}),n(C,{class:"d-flex align-center justify-space-between subtitle-with-version"},{default:a(()=>[u("div",null,[t[4]||(t[4]=m(" By ",-1)),u("strong",null,f(e.author),1),e.author_extra?.badge_text?(r(),_("span",le,f(e.author_extra.badge_text),1)):v("",!0),e.author_extra?.badge_icon?(r(),p(P,{key:1,icon:e.author_extra.badge_icon,size:18,class:"ml-1"},null,8,["icon"])):v("",!0)]),i.hasVersions?(r(),p(V,{key:0,modelValue:s.selectedVersionId,"onUpdate:modelValue":t[0]||(t[0]=x=>s.selectedVersionId=x),items:i.versionOptions,"item-title":"title","item-value":"value",label:"Version",density:"compact",variant:"outlined","hide-details":"",class:"mt-1 version-select"},null,8,["modelValue","items"])):v("",!0)]),_:1}),n(M,null,{default:a(()=>[u("div",ae,[e.imageContentsWithMimeType?(r(),p(T,{key:0,src:e.imageContentsWithMimeType},null,8,["src"])):i.versionImageUrl?(r(),p(T,{key:1,src:i.versionImageUrl},null,8,["src"])):v("",!0)]),u("div",{class:"mt-3",textContent:f(i.versionDescription)},null,8,re),u("div",ue,[t[5]||(t[5]=m(" Keywords: ",-1)),i.versionKeywords?(r(!0),_(I,{key:0},E(i.versionKeywords,x=>(r(),p(D,{key:x,variant:"flat",color:"primary",size:"x-small",class:"ml-1"},{default:a(()=>[m(f(x),1)]),_:2},1024))),128)):(r(),_("span",ce," none "))]),u("div",de,[t[6]||(t[6]=m(" Licenses: ",-1)),(r(!0),_(I,null,E(i.versionLicenses,x=>(r(),p(D,{key:x,size:"x-small",class:"ml-1"},{default:a(()=>[m(f(x),1)]),_:2},1024))),128))]),u("div",pe,[t[7]||(t[7]=u("span",{class:"text-caption font-italic"}," Minimum COSMOS version: ",-1)),m(" "+f(i.versionMinimumCosmosVersion)+" ",1),i.versionsAreCompatible!==null?(r(),p(c,{key:0,"open-delay":600,location:"top"},{activator:a(({props:x})=>[u("span",j(L(x)),[n(P,{icon:i.versionsAreCompatible?"mdi-check-circle":"mdi-alert",size:"small"},null,8,["icon"])],16)]),default:a(()=>[i.versionsAreCompatible?(r(),_("span",ge," Your version of COSMOS meets the requirements. ")):(r(),_("span",he," Your version of COSMOS is out of date. You can still install this plugin, but it might not work correctly. "))]),_:1})):v("",!0)]),n(k,{modelValue:i.versionChecksum,"onUpdate:modelValue":t[2]||(t[2]=x=>i.versionChecksum=x),class:"mt-3",label:"SHA256",variant:"solo",density:"compact","hide-details":"",readonly:""},{append:a(()=>[n(c,{modelValue:s.showCopiedTooltip,"onUpdate:modelValue":t[1]||(t[1]=x=>s.showCopiedTooltip=x),location:"top","open-on-hover":!1},{activator:a(({props:x})=>[n(w,O(x,{icon:"mdi-content-copy",variant:"text",density:"compact",onClick:i.copyChecksum}),null,16,["onClick"])]),default:a(()=>[t[8]||(t[8]=u("span",null,"Copied!",-1))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1}),n($,{class:"justify-start px-6"},{default:a(()=>[e.isPluginInstalled?(r(),p(w,{key:0,text:"Uninstall","append-icon":"mdi-puzzle-remove",variant:"outlined",color:"red",onClick:i.uninstall},null,8,["onClick"])):(r(),p(c,{key:1,"open-delay":600,location:"top"},{activator:a(({props:x})=>[u("span",j(L(e.canInstall?null:x)),[n(w,{text:"Install","append-icon":"mdi-puzzle-plus",variant:"elevated",disabled:!e.canInstall,onClick:i.install},null,8,["disabled","onClick"])],16)]),default:a(()=>[u("span",null,f(e.installTooltip),1)]),_:1})),i.versionRepository?(r(),p(w,{key:2,text:"Repository","append-icon":"mdi-open-in-new",variant:"outlined",href:i.versionRepository,target:"_blank"},null,8,["href"])):v("",!0),i.versionHomepage?(r(),p(w,{key:3,text:"Homepage","append-icon":"mdi-open-in-new",variant:"outlined",href:i.versionHomepage,target:"_blank"},null,8,["href"])):v("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"])}const te=A(ne,[["render",me],["__scopeId","data-v-53414ca0"]]),fe={components:{PluginDetailsDialog:te},mixins:[K],emits:["triggerInstall"],data(){return{showDialog:!1}},methods:{openDialog:function(){this.showDialog=!0},install:function(e){this.$emit("triggerInstall",{id:this.id,version_id:e?.version_id||this.current_version_id})}}},ve={key:0,class:"ml-1 font-italic"},ye={class:"plugin-image-backdrop"},_e=["textContent"];function we(e,t,l,d,s,i){const h=o("v-card-title"),w=o("v-icon"),c=o("v-card-subtitle"),S=o("v-img"),P=o("v-card-text"),V=o("v-spacer"),C=o("v-btn"),T=o("v-tooltip"),D=o("v-card-actions"),k=o("v-card"),M=o("plugin-details-dialog");return r(),_(I,null,[n(k,{height:"350",class:"d-flex flex-column",onClick:i.openDialog},{default:a(()=>[n(h,{class:"d-flex align-center justify-content-space-between"},{default:a(()=>[m(f(e.title),1)]),_:1}),n(c,{class:"d-flex align-center justify-content-space-between"},{default:a(()=>[u("div",null,[t[1]||(t[1]=m(" By ",-1)),u("strong",null,f(e.author),1),e.author_extra?.badge_text?(r(),_("span",ve,f(e.author_extra.badge_text),1)):v("",!0),e.author_extra?.badge_icon?(r(),p(w,{key:1,icon:e.author_extra.badge_icon,size:18,class:"ml-1"},null,8,["icon"])):v("",!0)])]),_:1}),n(P,null,{default:a(()=>[u("div",ye,[e.image_url?(r(),p(S,{key:0,src:e.image_url,"max-height":"160"},null,8,["src"])):v("",!0)]),u("div",{class:N({"truncate-description":!0,"truncate-2":!!e.image_url,"truncate-10":!e.image_url}),textContent:f(e.description)},null,10,_e)]),_:1}),n(V),n(D,{class:"flex-wrap"},{default:a(()=>[n(T,{"open-delay":600,location:"top"},{activator:a(({props:$})=>[u("span",j(L(e.canInstall?null:$)),[n(C,{text:"Install","append-icon":"mdi-puzzle-plus",variant:"elevated",disabled:!e.canInstall,onClick:z(i.install,["stop"])},null,8,["disabled","onClick"])],16)]),default:a(()=>[u("span",null,f(e.installTooltip),1)]),_:1})]),_:1})]),_:1},8,["onClick"]),s.showDialog?(r(),p(M,O({key:0,modelValue:s.showDialog,"onUpdate:modelValue":t[0]||(t[0]=$=>s.showDialog=$)},e.plugin,{onTriggerInstall:i.install}),null,16,["modelValue","onTriggerInstall"])):v("",!0)],64)}const xe=A(fe,[["render",we],["__scopeId","data-v-825f4373"]]),H="store_url",q="store_api_key",R="DEFAULT",Ce="https://store.openc3.com",be={mixins:[X],props:{modelValue:Boolean},emits:["update:modelValue","update:storeUrl"],data(){return{showDialog:!1,storeUrl:"",apiKey:null,rules:{required:e=>!!e||"Required",url:e=>{try{new URL(e)}catch{return"Not a valid URL"}return!0}}}},watch:{apiKey:function(e){localStorage.setItem("pluginStore.isApiKeySet",!!e)},modelValue:function(e){e&&(this.showDialog=e)},showDialog:function(e){e||this.$emit("update:modelValue",e)}},created:function(){this.loadSetting(H,{scope:R}),this.loadSetting(q,{scope:R}),this.$emit("update:storeUrl",this.storeUrl)},methods:{save:function(){this.saveSetting(H,this.storeUrl,{scope:R}),this.saveSetting(q,this.apiKey,{scope:R}),this.$emit("update:storeUrl",this.storeUrl),this.showDialog=!1},parseSetting:function(e,{setting:t}){switch(t){case H:this.storeUrl=e||Ce;break;case q:this.apiKey=e||"";break}}}};function ke(e,t,l,d,s,i){const h=o("v-spacer"),w=o("v-toolbar"),c=o("v-alert"),S=o("v-text-field"),P=o("v-card-text"),V=o("v-btn"),C=o("v-card-actions"),T=o("v-card"),D=o("v-dialog");return r(),p(D,{modelValue:s.showDialog,"onUpdate:modelValue":t[4]||(t[4]=k=>s.showDialog=k),width:"600"},{default:a(()=>[n(w,{height:"24"},{default:a(()=>[n(h),t[5]||(t[5]=u("span",null,"Plugin Store Settings",-1)),n(h)]),_:1}),n(T,{class:"pa-3"},{default:a(()=>[n(c,{modelValue:e.errorLoading,"onUpdate:modelValue":t[0]||(t[0]=k=>e.errorLoading=k),type:"error",closable:"",density:"compact"},{default:a(()=>[m(" Error loading previous configuration due to "+f(e.errorText),1)]),_:1},8,["modelValue"]),n(c,{modelValue:e.errorSaving,"onUpdate:modelValue":t[1]||(t[1]=k=>e.errorSaving=k),type:"error",closable:"",density:"compact"},{default:a(()=>[m(" Error saving due to "+f(e.errorText),1)]),_:1},8,["modelValue"]),n(P,null,{default:a(()=>[n(S,{modelValue:s.storeUrl,"onUpdate:modelValue":t[2]||(t[2]=k=>s.storeUrl=k),label:"Store URL",rules:[s.rules.required,s.rules.url]},null,8,["modelValue","rules"]),n(S,{modelValue:s.apiKey,"onUpdate:modelValue":t[3]||(t[3]=k=>s.apiKey=k),type:"password",label:"API Key"},null,8,["modelValue"])]),_:1}),n(C,null,{default:a(()=>[n(V,{color:"success",variant:"text",text:"Save","data-test":"save-store-settings-btn",onClick:i.save},null,8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const Pe=A(be,[["render",ke]]),ie="https://store.openc3.com",Ve={components:{PluginCard:xe,PluginStoreSettingsDialog:Pe},emits:["close","triggerInstall"],data(){return{api:new B,search:"",showSettingsDialog:!1,plugins:[],storeError:null,storeUrl:ie,isEnterprise:!1,isAdmin:!0,isApiKeySet:localStorage.getItem("pluginStore.isApiKeySet")==="true",loading:!1}},computed:{showApiKeyBanner:function(){return this.isEnterprise&&!this.isApiKeySet},accountSettingsUrl:function(){const e=(this.storeUrl||ie).replace("host.docker.internal","localhost");return new URL("account",e)},filteredPlugins:function(){let e=this.plugins;return this.search.length&&(e=e.filter(t=>t.title.toLowerCase().includes(this.search.toLowerCase()))),e},formattedStoreUrl:function(){return this.storeUrl.split("://").at(-1)},installAllowed:function(){return!this.isEnterprise||this.isAdmin}},watch:{showSettingsDialog:function(e){e||(this.isApiKeySet=localStorage.getItem("pluginStore.isApiKeySet")==="true")}},mounted:function(){this.fetchPluginStoreData(),this.fetchUserContext()},methods:{fetchPluginStoreData:function(){this.loading=!0,b.get("/openc3-api/pluginstore").then(({data:e})=>{if(e.error){const{title:t,body:l}=e;this.storeError={title:t,body:l},this.plugins=[]}else this.storeError=null,this.plugins=e}).catch(console.error).finally(()=>{this.loading=!1})},fetchUserContext:function(){b.get("/openc3-api/info").then(({data:t})=>{this.isEnterprise=!!t.enterprise}).catch(console.error);const e=OpenC3Auth.userroles()||[];this.isAdmin=e.includes("admin")},close:function(){this.$emit("close")},install:function(e){this.$emit("triggerInstall",e),this.close()},openSettings:function(){this.showSettingsDialog=!0},updatePluginStore:function(e){this.storeUrl=e,this.loading=!0,this.api.update_plugin_store().then(t=>{this.fetchPluginStoreData()})}}},Se={class:"d-flex justify-content-space-between"},Te={class:"d-inline-flex align-center w-100"},Ue=["href"],De={key:2,class:"d-flex justify-center align-center py-12","data-test":"plugin-store-loading"};function Ie(e,t,l,d,s,i){const h=o("v-spacer"),w=o("v-btn"),c=o("v-tooltip"),S=o("v-text-field"),P=o("v-icon"),V=o("v-alert"),C=o("v-progress-circular"),T=o("plugin-card"),D=o("v-col"),k=o("v-row"),M=o("v-container"),$=o("v-sheet"),F=o("plugin-store-settings-dialog");return r(),_(I,null,[n($,{class:"pb-11 pt-8 px-8",height:"100%"},{default:a(()=>[u("div",Se,[t[2]||(t[2]=u("div",null,[u("div",{class:"text-h3 mb-3"},"OpenC3 Plugin Store"),u("div",{class:"text-subtitle-1"}," Browse plugins made by OpenC3 and the COSMOS community ")],-1)),n(h),n(w,{icon:"mdi-cog",variant:"text",onClick:i.openSettings},null,8,["onClick"]),n(c,{location:"top"},{activator:a(({props:U})=>[u("div",j(L(U)),[n(w,{href:s.storeUrl,target:"_blank",icon:"mdi-open-in-new",variant:"text",class:"mx-2"},null,8,["href"])],16)]),default:a(()=>[u("span",null," Open "+f(i.formattedStoreUrl),1)]),_:1}),n(w,{icon:"mdi-close",variant:"text",onClick:i.close},null,8,["onClick"])]),u("div",Te,[n(S,{modelValue:s.search,"onUpdate:modelValue":t[0]||(t[0]=U=>s.search=U),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"","data-test":"search-plugin-store"},null,8,["modelValue"])]),n(h),i.showApiKeyBanner?(r(),p(V,{key:0,class:"my-3",type:"info",density:"compact","data-test":"api-key-banner"},{default:a(()=>[t[4]||(t[4]=m(" You're using COSMOS Enterprise, but you haven't set an OpenC3 Store API key yet. You must set this to access Enterprise plugins. ",-1)),t[5]||(t[5]=u("br",null,null,-1)),t[6]||(t[6]=m(" Visit the ",-1)),u("a",{href:i.accountSettingsUrl,target:"_blank",class:"text-white"},[t[3]||(t[3]=m(" OpenC3 Store account settings",-1)),n(P,{icon:"mdi-open-in-new",size:"x-small"})],8,Ue),t[7]||(t[7]=m(" to generate an API key. Then, return here and open the Plugin Store settings with the ",-1)),n(P,{icon:"mdi-cog",size:"small"}),t[8]||(t[8]=m(" icon above, and finally paste your API key into the API key field. ",-1))]),_:1})):v("",!0),t[10]||(t[10]=u("span",{class:""}," Click on a plugin to see more information about it ",-1)),s.storeError?(r(),p(V,{key:1,class:"mt-6",color:"error",title:s.storeError.title,text:s.storeError.body},null,8,["title","text"])):s.loading?(r(),_("div",De,[n(C,{indeterminate:"",color:"primary",size:"48"}),t[9]||(t[9]=u("span",{class:"ml-4 text-subtitle-1"},"Loading plugins...",-1))])):(r(),p(M,{key:3},{default:a(()=>[n(k,null,{default:a(()=>[(r(!0),_(I,null,E(i.filteredPlugins,U=>(r(),p(D,{key:U.id,cols:"4"},{default:a(()=>[n(T,O({ref_for:!0},U,{"install-allowed":i.installAllowed,onTriggerInstall:i.install}),null,16,["install-allowed","onTriggerInstall"])]),_:2},1024))),128))]),_:1})]),_:1}))]),_:1}),n(F,{modelValue:s.showSettingsDialog,"onUpdate:modelValue":t[1]||(t[1]=U=>s.showSettingsDialog=U),"onUpdate:storeUrl":i.updatePluginStore},null,8,["modelValue","onUpdate:storeUrl"])],64)}const $e=A(Ve,[["render",Ie]]),Ae={components:{PluginDetailsDialog:te},mixins:[K],props:{targets:{type:Array,default:()=>[]},isModified:Boolean,needsUvMigration:Boolean,microservices:{type:Object,default:()=>({})},scriptVersionsEnabled:Boolean},emits:["edit","delete","upgrade","migrate-to-uv"],setup(){return{downloadZip:Q()}},data(){return{showCard:!1,exporting:!1,importing:!1}},computed:{pluginBaseName:function(){return this.name.split("__")[0].split("-").slice(0,-1).join("-")},displayTitle:function(){return this.title?this.title:this.name.replace(/^openc3-cosmos-/,"").replace(/-?\d+\.\d+\.\d+(?:\.pre\.beta\d+\.\d+)?\.gem(?:__\d+)?$/,"")},getMicroservicesForPlugin:function(){const e=[];for(const[t,l]of Object.entries(this.microservices))l.plugin===this.name&&e.push(t);return e},microserviceCount:function(){return this.getMicroservicesForPlugin.length}},methods:{openDetails:function(){this.hasDetails&&(this.showCard=!0)},downloadPlugin:async function(){await this.downloadZip(`/openc3-api/packages/${this.name}/download`)},downloadTarget:async function(e){await this.downloadZip(`/openc3-api/targets/${e}/download`)},async exportHistory(){this.exporting=!0;try{const e=await b.get(`/script-api/scripts/plugin/${this.pluginBaseName}/history-export`,{responseType:"blob",headers:{Accept:"application/octet-stream"}});let t=`${this.pluginBaseName}-history.bundle`;const l=e.headers?.["content-disposition"];if(l){const i=/filename="?([^";]+)"?/.exec(l);i&&(t=i[1])}const d=URL.createObjectURL(e.data),s=document.createElement("a");s.href=d,s.download=t,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(d),this.$notify.normal({title:"History Exported",body:`Saved ${t}. Apply with: git clone ${t} local-repo`})}catch({response:e}){this.$notify.caution({title:"Export Failed",body:e?.data?.message||e?.statusText||"unknown"})}finally{this.exporting=!1}},pickImportFile(){this.$refs.importFileInput&&(this.$refs.importFileInput.value="",this.$refs.importFileInput.click())},async onImportFileSelected(e){const t=e.target.files&&e.target.files[0];if(t){this.importing=!0;try{const l=new FormData;l.append("bundle",t);const d=(await b.post(`/script-api/scripts/plugin/${this.pluginBaseName}/history-import`,{data:l,headers:{Accept:"application/json"}})).data||{};this.$notify.normal({title:d.reconciled?"History Imported (Reconciled)":"History Imported",body:d.message||"Imported."})}catch({response:l}){this.$notify.caution({title:"Import Failed",body:l?.data?.message||l?.statusText||"unknown"})}finally{this.importing=!1}}},edit:function(){this.$emit("edit")},upgrade:function(){this.$emit("upgrade")},viewMicroservices:function(){const e=this.getMicroservicesForPlugin.join(",");this.$router.push({path:"/tools/admin/microservices",query:{services:e}})},migrateToUv:function(){this.$emit("migrate-to-uv")},deletePrompt:function(){this.showCard=!1,this.$emit("delete")}}},Oe=["textContent"],Me={class:"text-subtitle-2 v-list-item-subtitle pl-0"},Ee={key:0},je=["onClick","textContent"],Le=["textContent"],Fe=["data-test"];function Be(e,t,l,d,s,i){const h=o("v-img"),w=o("v-icon"),c=o("v-list-item"),S=o("v-list"),P=o("v-menu"),V=o("plugin-details-dialog");return r(),_(I,null,[u("tr",{class:N({"cursor-pointer":e.hasDetails}),"data-test":"plugin-list-item"},[u("td",null,[e.imageContentsWithMimeType?(r(),p(h,{key:0,src:e.imageContentsWithMimeType,"max-height":"56","min-width":"56"},null,8,["src"])):v("",!0)]),u("td",null,[u("div",{class:"text-h6",onClick:t[0]||(t[0]=(...C)=>i.openDetails&&i.openDetails(...C)),textContent:f(i.displayTitle)},null,8,Oe),u("div",Me,[l.isModified?(r(),_(I,{key:0},[m(" * ")],64)):v("",!0),m(" "+f(e.name),1)]),l.targets?.length?(r(),_("div",Ee,[(r(!0),_(I,null,E(l.targets,(C,T)=>(r(),_("span",{key:T,class:"mr-2"},[C.modified?(r(),_("a",{key:0,style:{cursor:"pointer"},onClick:z(D=>i.downloadTarget(C.name),["prevent"]),textContent:f(C.name)},null,8,je)):(r(),_("span",{key:1,textContent:f(C.name)},null,8,Le))]))),128))])):v("",!0)]),u("td",null,[n(P,null,{activator:a(({props:C})=>[n(w,O(C,{icon:"mdi-dots-horizontal","data-test":"plugin-actions"}),null,16)]),default:a(()=>[n(S,null,{default:a(()=>[n(c,{title:"Download","prepend-icon":"mdi-download","data-test":"download-plugin",onClick:i.downloadPlugin},null,8,["onClick"]),n(c,{title:"Edit Details","prepend-icon":"mdi-pencil","data-test":"edit-plugin",onClick:i.edit},null,8,["onClick"]),n(c,{title:"Upgrade","prepend-icon":"mdi-update","data-test":"upgrade-plugin",onClick:i.upgrade},null,8,["onClick"]),l.scriptVersionsEnabled?(r(),p(c,{key:0,title:"Export History","prepend-icon":"mdi-export",disabled:s.exporting||s.importing,"data-test":"export-plugin-history",onClick:i.exportHistory},null,8,["disabled","onClick"])):v("",!0),l.scriptVersionsEnabled?(r(),p(c,{key:1,title:"Import History","prepend-icon":"mdi-import",disabled:s.exporting||s.importing,"data-test":"import-plugin-history",onClick:i.pickImportFile},null,8,["disabled","onClick"])):v("",!0),n(c,{title:`View Microservices (${i.microserviceCount})`,"prepend-icon":"mdi-tab","data-test":"view-microservices",onClick:i.viewMicroservices},null,8,["title","onClick"]),l.needsUvMigration?(r(),p(c,{key:2,title:"Migrate to UV","prepend-icon":"mdi-swap-horizontal","data-test":"migrate-to-uv",onClick:i.migrateToUv},null,8,["onClick"])):v("",!0),n(c,{title:"Delete","prepend-icon":"mdi-delete","data-test":"delete-plugin",onClick:i.deletePrompt},null,8,["onClick"])]),_:1})]),_:1})])],2),s.showCard?(r(),p(V,O({key:0,modelValue:s.showCard,"onUpdate:modelValue":t[1]||(t[1]=C=>s.showCard=C)},e.plugin,{onTriggerUninstall:i.deletePrompt}),null,16,["modelValue","onTriggerUninstall"])):v("",!0),l.scriptVersionsEnabled?(r(),_("input",{key:1,ref:"importFileInput",type:"file",accept:".bundle,application/octet-stream",style:{display:"none"},"data-test":`import-plugin-history-file-${e.name}`,onChange:t[2]||(t[2]=(...C)=>i.onImportFileSelected&&i.onImportFileSelected(...C))},null,40,Fe)):v("",!0)],64)}const Ne=A(Ae,[["render",Be]]),Re={components:{PluginListItem:Ne},props:{plugins:{type:Array,required:!0},targets:{type:Object,required:!0},showDefaultTools:{type:Boolean,default:!1},defaultPlugins:{type:Array,required:!0},scriptVersionsEnabled:{type:Boolean,default:!1}},emits:["edit","delete","upgrade","migrate-to-uv"],data(){return{showPluginDetails:!1,detailPlugin:null,microservices:{}}},computed:{shownPlugins(){const e=[],t=[];return this.plugins.forEach(l=>{const d=l.name.split("__")[0].split("-").slice(0,-1).join("-");this.defaultPlugins.includes(d)?t.push(l):e.push(l)}),e.sort((l,d)=>l.name<d.name?-1:l.name>d.name?1:0),this.showDefaultTools?(t.sort((l,d)=>l.name<d.name?-1:l.name>d.name?1:0),e.concat(t)):e}},mounted(){this.fetchMicroservices()},methods:{showDetails:function(e){this.detailPlugin=e,this.showPluginDetails=!0},pluginTargets:function(e){let t=[];for(const l in this.targets)this.targets[l].plugin===e&&t.push(this.targets[l]);return t},isModified:function(e){return Object.entries(this.targets).some(([t,l])=>l.plugin===e&&l.modified===!0)},editPlugin:function(e){this.$emit("edit",e)},upgradePlugin(e){this.$emit("upgrade",e)},migrateToUv:function(e){this.$emit("migrate-to-uv",e)},deletePrompt:function(e){this.$emit("delete",e)},fetchMicroservices:async function(){const e=await b.get("/openc3-api/microservices/all");this.microservices=e.data}}};function ze(e,t,l,d,s,i){const h=o("plugin-list-item"),w=o("v-data-table");return r(),p(w,{headers:[],items:i.shownPlugins,density:"compact",class:"list","data-test":"plugin-list"},{item:a(({item:c})=>[(r(),p(h,O({key:c.name},c,{targets:i.pluginTargets(c.name),"is-modified":i.isModified(c.name),microservices:s.microservices,"script-versions-enabled":l.scriptVersionsEnabled,onEdit:()=>i.editPlugin(c.name),onUpgrade:()=>i.upgradePlugin(c.name),onMigrateToUv:()=>i.migrateToUv(c.name),onDelete:()=>i.deletePrompt(c.name)}),null,16,["targets","is-modified","microservices","script-versions-enabled","onEdit","onUpgrade","onMigrateToUv","onDelete"]))]),_:1},8,["items"])}const Ke=A(Re,[["render",ze],["__scopeId","data-v-4f7d64b0"]]),He={components:{PluginDialog:W,PluginList:Ke,PluginStore:$e,ModifiedPluginDialog:Y,SimpleTextDialog:J},mixins:[Z],data(){return{pluginName:null,variables:{},storePluginId:null,storeVersionId:null,minCosmosVersion:null,pluginTxt:"",file:null,currentPlugin:null,pluginHashTmp:null,existingPluginTxt:null,progress:0,pluginDelete:!1,api:new B,plugins:[],targets:{},processes:{},alert:"",alertType:"success",showAlert:!1,showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",showPluginStore:!1,showPluginDialog:!1,showModifiedPluginDialog:!1,showDefaultTools:!1,scriptVersionsEnabled:!1,timeZone:"local",defaultPlugins:["openc3-cosmos-tool-admin","openc3-cosmos-tool-bucketexplorer","openc3-cosmos-tool-cmdsender","openc3-cosmos-tool-cmdqueue","openc3-cosmos-tool-cmdhistory","openc3-cosmos-tool-cmdtlmserver","openc3-cosmos-tool-dataextractor","openc3-cosmos-tool-dataviewer","openc3-cosmos-tool-docs","openc3-cosmos-tool-handbooks","openc3-cosmos-tool-iframe","openc3-cosmos-tool-limitsmonitor","openc3-cosmos-tool-packetviewer","openc3-cosmos-tool-scriptrunner","openc3-cosmos-tool-tablemanager","openc3-cosmos-tool-tlmgrapher","openc3-cosmos-tool-tlmviewer","openc3-cosmos-enterprise-tool-admin","openc3-cosmos-tool-autonomic","openc3-cosmos-tool-calendar","openc3-cosmos-tool-grafana","openc3-cosmos-tool-logexplorer","openc3-cosmos-tool-notebooks","openc3-cosmos-tool-systemhealth","openc3-enterprise-tool-base","openc3-tool-base"]}},watch:{showPluginDialog:function(e,t){e===!1&&(this.file=null,this.$refs.fileInput.value=null)}},created(){this.api.update_plugin_store(),this.api.get_setting("time_zone").then(e=>{e&&(this.timeZone=e)}).catch(()=>{})},mounted(){this.update(),this.updateProcesses(),b.get("/openc3-api/info").then(e=>{this.scriptVersionsEnabled=!!e.data?.script_versions}).catch(()=>{this.scriptVersionsEnabled=!1}),window.onpopstate=()=>{this.showPluginStore&&(this.showPluginStore=!1,history.go(1))}},methods:{resetControlState:function(){this.pluginName=null,this.variables={},this.storePluginId=null,this.storeVersionId=null,this.minCosmosVersion=null,this.pluginTxt="",this.file=null,this.currentPlugin=null,this.pluginHashTmp=null,this.existingPluginTxt=null,this.progress=0,this.pluginDelete=!1},pluginTargets:function(e){let t=[];for(const l in this.targets)this.targets[l].plugin===e&&t.push(this.targets[l]);return t},isModified:function(e){return Object.entries(this.targets).some(([t,l])=>l.plugin===e&&l.modified===!0)},showOutput:function(e){this.processOutput=e.output,this.showProcessOutput=!0},update:function(){b.get("/openc3-api/plugins/all").then(e=>{this.plugins=Object.entries(e.data).map(([t,l])=>l)}).catch(console.error),b.get("/openc3-api/targets_modified").then(e=>{this.targets=e.data}).catch(console.error)},updateProcesses:function(){b.get("openc3-api/process_status/plugin_?substr=true").then(e=>{this.processes=e.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},5e3)}).catch(console.error)},upload:function(e=null,t=null){const l=e?"put":"post",d=e?`/openc3-api/plugins/${e}`:"/openc3-api/plugins",s=new FormData;t===null?s.append("plugin",this.file,this.file.name):(s.append("store_plugin_id",t.id),s.append("store_version_id",t.version_id)),b[l](d,{data:s,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:i=>{let h=Math.round(i.loaded*100/i.total);this.progress=h}}).then(i=>{this.progress=100,this.alert="Uploaded file",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update();let h=null;i.data.existing_plugin_txt_lines!==void 0&&(h=i.data.existing_plugin_txt_lines.join(`
|
|
2
2
|
`));let w=i.data.plugin_txt_lines.join(`
|
|
3
3
|
`);this.pluginName=i.data.name,this.variables=i.data.variables,this.storePluginId=i.data.store_plugin_id,this.storeVersionId=i.data.store_version_id,this.minCosmosVersion=i.data.minimum_cosmos_version,this.pluginTxt=w,this.existingPluginTxt=h,this.showPluginDialog=!0,this.file=void 0}).catch(i=>{this.currentPlugin=null,this.file=void 0})},pluginCallback:function(e){this.showPluginDialog=!1,this.currentPlugin!==null&&(e.name=this.currentPlugin),this.pluginHashTmp=e,this.isModified(this.currentPlugin)?(this.pluginDelete=!1,this.showModifiedPluginDialog=!0):this.pluginInstall()},modifiedSubmit:async function(e){const t=e.deleteFiles||[];if(t.length){const l={};for(const d of t){const s=d.split("/")[0];l[s]||=[],l[s].push(d)}for(const[d,s]of Object.entries(l))await b.post(`/openc3-api/targets/${d}/delete_modified`,{data:{files:s}})}this.pluginDelete?this.deletePlugin(this.currentPlugin):this.pluginInstall(e.installFromPlugin||[])},pluginInstall:function(e=[]){const t={...this.pluginHashTmp};e.length&&(t.version_history_files=e),b.post(`/openc3-api/plugins/install/${this.pluginName}`,{data:{plugin_hash:JSON.stringify(t)}}).then(l=>{this.alert=`Started installing plugin ${this.pluginName} ...`,this.alertType="success",this.showAlert=!0,this.currentPlugin=null,this.file=void 0,this.variables={},this.pluginTxt="",this.existingPluginTxt=null,this.storePluginId=null,this.storeVersionId=null,setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3),this.update()}).catch(console.error)},editPlugin:function(e){this.resetControlState(),b.get(`/openc3-api/plugins/${e}`).then(t=>{let l=null;t.data.existing_plugin_txt_lines!==void 0&&(l=t.data.existing_plugin_txt_lines.join(`
|
|
4
4
|
`)),this.pluginName=t.data.name,this.variables=t.data.variables,this.pluginTxt=t.data.plugin_txt_lines.join(`
|
|
5
|
-
`),this.existingPluginTxt=l,this.showPluginDialog=!0}).catch(console.error)},deletePrompt:function(e){this.resetControlState(),this.$dialog.confirm(`Are you sure you want to remove: ${e}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{this.isModified(e)?(this.currentPlugin=e,this.pluginDelete=!0,this.showModifiedPluginDialog=!0):this.deletePlugin(e)})},deletePlugin:function(e){this.alert=`Removing plugin ${e} ...`,this.alertType="success",this.showAlert=!0,b.delete(`/openc3-api/plugins/${e}`).then(t=>{setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3)}).catch(console.error),this.update()},migrateToUv:function(e){this.$dialog.confirm(`Migrate plugin ${e} to a per-plugin UV virtual environment?`,{okText:"Migrate",cancelText:"Cancel"}).then(()=>{b.post(`/openc3-api/plugins/${e}/migrate_to_uv`).then(t=>{this.alert=`Started migrating plugin ${e} to UV ...`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3)}).catch(console.error)})},upgradePlugin(e){this.resetControlState(),this.currentPlugin=e,this.$refs.fileInput.click()},selectFile(){this.resetControlState(),this.$refs.fileInput.click()},fileChange(e){const t=e.target.files;if(t.length>0)if(this.file=t[0],this.currentPlugin!==null)if(this.file.name.split(".gem")[0]==this.currentPlugin.split(".gem")[0])this.$dialog.confirm(`The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}).catch(l=>{});else{let l=this.file.name.split("-"),d=l.findIndex(h=>h.includes(".")),s=l.slice(0,d).join("-");l=this.currentPlugin.split("-"),d=l.findIndex(h=>h.includes("."));let i=l.slice(0,d).join("-");s!==i?this.$dialog.confirm(`The new gem base name ${s} doesn't match the existing ${i}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}):this.upload(this.currentPlugin)}else this.upload();else this.$refs.fileInput.value=null},openStore(){this.resetControlState(),this.showPluginStore=!0}}},qe={class:"mt-2"},Ze=["textContent"],Ye=["textContent"];function We(e,t,l,d,s,i){const h=o("v-btn"),w=o("v-icon"),c=o("v-col"),S=o("rux-progress"),P=o("v-row"),V=o("v-divider"),C=o("v-alert"),T=o("v-list-item-title"),D=o("v-list-item-subtitle"),k=o("v-progress-circular"),M=o("v-tooltip"),$=o("v-list-item"),F=o("v-list"),U=o("v-switch"),x=o("plugin-list"),Ge=o("plugin-dialog"),Je=o("modified-plugin-dialog"),Qe=o("simple-text-dialog"),Xe=o("plugin-store"),et=o("v-bottom-sheet");return r(),_("div",null,[n(P,{"no-gutters":"",align:"center",class:"px-2"},{default:a(()=>[n(c,{class:"pa-2 mt-2"},{default:a(()=>[n(h,{"append-icon":"mdi-store",onClick:i.openStore},{default:a(()=>[...t[9]||(t[9]=[m(" Browse Plugins ",-1)])]),_:1},8,["onClick"]),n(h,{"append-icon":"mdi-paperclip",class:"mx-2",onClick:i.selectFile},{default:a(()=>[...t[10]||(t[10]=[m(" Install From File ",-1)])]),_:1},8,["onClick"]),u("input",{ref:"fileInput",accept:".gem",style:{display:"none"},type:"file",onChange:t[0]||(t[0]=(...y)=>i.fileChange&&i.fileChange(...y))},null,544),t[14]||(t[14]=u("br",null,null,-1)),u("p",qe,[t[12]||(t[12]=m(" Note: Use ",-1)),n(w,null,{default:a(()=>[...t[11]||(t[11]=[m(" mdi-dots-horizontal ",-1)])]),_:1}),t[13]||(t[13]=m(" in the Installed Plugins list to upgrade existing plugins ",-1))])]),_:1}),n(c,{class:"ml-4 mr-2",cols:"4"},{default:a(()=>[n(S,{value:s.progress},null,8,["value"])]),_:1})]),_:1}),n(P,{"no-gutters":"",class:"px-2"},{default:a(()=>[n(c,{align:"right",class:"mr-2"},{default:a(()=>[...t[15]||(t[15]=[u("div",null,"* indicates a modified plugin",-1),u("div",null,"Click target link to download modifications",-1)])]),_:1})]),_:1}),n(V),n(C,{modelValue:s.showAlert,"onUpdate:modelValue":t[1]||(t[1]=y=>s.showAlert=y),closable:"",type:s.alertType,text:s.alert,"data-test":"plugin-alert"},null,8,["modelValue","type","text"]),Object.keys(s.processes).length>0?(r(),p(F,{key:0,class:"list","data-test":"process-list"},{default:a(()=>[n(P,{"no-gutters":"",class:"px-4"},{default:a(()=>[n(c,{class:"text-h5"},{default:a(()=>[...t[16]||(t[16]=[m(" Process List ",-1)])]),_:1}),n(c,{align:"right"},{default:a(()=>[...t[17]||(t[17]=[u("div",null,"Showing last 10 min of activity",-1)])]),_:1})]),_:1}),(r(!0),_(I,null,E(s.processes,y=>(r(),_("div",{key:y.name},[n($,null,{append:a(()=>[y.state==="Running"?(r(),p(k,{key:0,indeterminate:"",color:"primary"})):(r(),p(M,{key:1,"open-delay":600,location:"top"},{activator:a(({props:tt})=>[n(h,O({ref_for:!0},tt,{icon:"mdi-eye",variant:"text","aria-label":"Show Output","data-test":"show-output",onClick:nt=>i.showOutput(y)}),null,16,["onClick"])]),default:a(()=>[t[18]||(t[18]=u("span",null," Show Output ",-1))]),_:2},1024))]),default:a(()=>[n(T,null,{default:a(()=>[u("span",{class:
|
|
5
|
+
`),this.existingPluginTxt=l,this.showPluginDialog=!0}).catch(console.error)},deletePrompt:function(e){this.resetControlState(),this.$dialog.confirm(`Are you sure you want to remove: ${e}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{this.isModified(e)?(this.currentPlugin=e,this.pluginDelete=!0,this.showModifiedPluginDialog=!0):this.deletePlugin(e)})},deletePlugin:function(e){this.alert=`Removing plugin ${e} ...`,this.alertType="success",this.showAlert=!0,b.delete(`/openc3-api/plugins/${e}`).then(t=>{setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3)}).catch(console.error),this.update()},migrateToUv:function(e){this.$dialog.confirm(`Migrate plugin ${e} to a per-plugin UV virtual environment?`,{okText:"Migrate",cancelText:"Cancel"}).then(()=>{b.post(`/openc3-api/plugins/${e}/migrate_to_uv`).then(t=>{this.alert=`Started migrating plugin ${e} to UV ...`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3)}).catch(console.error)})},upgradePlugin(e){this.resetControlState(),this.currentPlugin=e,this.$refs.fileInput.click()},selectFile(){this.resetControlState(),this.$refs.fileInput.click()},fileChange(e){const t=e.target.files;if(t.length>0)if(this.file=t[0],this.currentPlugin!==null)if(this.file.name.split(".gem")[0]==this.currentPlugin.split(".gem")[0])this.$dialog.confirm(`The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}).catch(l=>{});else{let l=this.file.name.split("-"),d=l.findIndex(h=>h.includes(".")),s=l.slice(0,d).join("-");l=this.currentPlugin.split("-"),d=l.findIndex(h=>h.includes("."));let i=l.slice(0,d).join("-");s!==i?this.$dialog.confirm(`The new gem base name ${s} doesn't match the existing ${i}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}):this.upload(this.currentPlugin)}else this.upload();else this.$refs.fileInput.value=null},openStore(){this.resetControlState(),this.showPluginStore=!0}}},qe={class:"mt-2"},Ze=["textContent"],Ye=["textContent"];function We(e,t,l,d,s,i){const h=o("v-btn"),w=o("v-icon"),c=o("v-col"),S=o("rux-progress"),P=o("v-row"),V=o("v-divider"),C=o("v-alert"),T=o("v-list-item-title"),D=o("v-list-item-subtitle"),k=o("v-progress-circular"),M=o("v-tooltip"),$=o("v-list-item"),F=o("v-list"),U=o("v-switch"),x=o("plugin-list"),Ge=o("plugin-dialog"),Je=o("modified-plugin-dialog"),Qe=o("simple-text-dialog"),Xe=o("plugin-store"),et=o("v-bottom-sheet");return r(),_("div",null,[n(P,{"no-gutters":"",align:"center",class:"px-2"},{default:a(()=>[n(c,{class:"pa-2 mt-2"},{default:a(()=>[n(h,{"append-icon":"mdi-store",onClick:i.openStore},{default:a(()=>[...t[9]||(t[9]=[m(" Browse Plugins ",-1)])]),_:1},8,["onClick"]),n(h,{"append-icon":"mdi-paperclip",class:"mx-2",onClick:i.selectFile},{default:a(()=>[...t[10]||(t[10]=[m(" Install From File ",-1)])]),_:1},8,["onClick"]),u("input",{ref:"fileInput",accept:".gem",style:{display:"none"},type:"file",onChange:t[0]||(t[0]=(...y)=>i.fileChange&&i.fileChange(...y))},null,544),t[14]||(t[14]=u("br",null,null,-1)),u("p",qe,[t[12]||(t[12]=m(" Note: Use ",-1)),n(w,null,{default:a(()=>[...t[11]||(t[11]=[m(" mdi-dots-horizontal ",-1)])]),_:1}),t[13]||(t[13]=m(" in the Installed Plugins list to upgrade existing plugins ",-1))])]),_:1}),n(c,{class:"ml-4 mr-2",cols:"4"},{default:a(()=>[n(S,{value:s.progress},null,8,["value"])]),_:1})]),_:1}),n(P,{"no-gutters":"",class:"px-2"},{default:a(()=>[n(c,{align:"right",class:"mr-2"},{default:a(()=>[...t[15]||(t[15]=[u("div",null,"* indicates a modified plugin",-1),u("div",null,"Click target link to download modifications",-1)])]),_:1})]),_:1}),n(V),n(C,{modelValue:s.showAlert,"onUpdate:modelValue":t[1]||(t[1]=y=>s.showAlert=y),closable:"",type:s.alertType,text:s.alert,"data-test":"plugin-alert"},null,8,["modelValue","type","text"]),Object.keys(s.processes).length>0?(r(),p(F,{key:0,class:"list","data-test":"process-list"},{default:a(()=>[n(P,{"no-gutters":"",class:"px-4"},{default:a(()=>[n(c,{class:"text-h5"},{default:a(()=>[...t[16]||(t[16]=[m(" Process List ",-1)])]),_:1}),n(c,{align:"right"},{default:a(()=>[...t[17]||(t[17]=[u("div",null,"Showing last 10 min of activity",-1)])]),_:1})]),_:1}),(r(!0),_(I,null,E(s.processes,y=>(r(),_("div",{key:y.name},[n($,null,{append:a(()=>[y.state==="Running"?(r(),p(k,{key:0,indeterminate:"",color:"primary"})):(r(),p(M,{key:1,"open-delay":600,location:"top"},{activator:a(({props:tt})=>[n(h,O({ref_for:!0},tt,{icon:"mdi-eye",variant:"text","aria-label":"Show Output","data-test":"show-output",onClick:nt=>i.showOutput(y)}),null,16,["onClick"])]),default:a(()=>[t[18]||(t[18]=u("span",null," Show Output ",-1))]),_:2},1024))]),default:a(()=>[n(T,null,{default:a(()=>[u("span",{class:N(y.state.toLowerCase()),textContent:f(`Processing ${y.process_type}: ${y.detail} - ${y.state}`)},null,10,Ze)]),_:2},1024),n(D,null,{default:a(()=>[u("span",{textContent:f(" Updated At: "+e.formatNanoseconds(y.updated_at,s.timeZone))},null,8,Ye)]),_:2},1024)]),_:2},1024),n(V)]))),128))]),_:1})):v("",!0),n(P,{"no-gutters":"",class:"px-4"},{default:a(()=>[n(c,{class:"text-h5"},{default:a(()=>[...t[19]||(t[19]=[m(" Installed Plugins ",-1)])]),_:1}),n(c,{class:"v-col-auto"},{default:a(()=>[n(U,{modelValue:s.showDefaultTools,"onUpdate:modelValue":t[2]||(t[2]=y=>s.showDefaultTools=y),label:"Show Default Tools",density:"compact","hide-details":"","data-test":"show-default-tools"},null,8,["modelValue"])]),_:1})]),_:1}),n(x,{plugins:s.plugins,targets:s.targets,"show-default-tools":s.showDefaultTools,"default-plugins":s.defaultPlugins,"script-versions-enabled":s.scriptVersionsEnabled,onEdit:i.editPlugin,onUpgrade:i.upgradePlugin,onMigrateToUv:i.migrateToUv,onDelete:i.deletePrompt},null,8,["plugins","targets","show-default-tools","default-plugins","script-versions-enabled","onEdit","onUpgrade","onMigrateToUv","onDelete"]),s.showPluginDialog?(r(),p(Ge,{key:1,modelValue:s.showPluginDialog,"onUpdate:modelValue":t[3]||(t[3]=y=>s.showPluginDialog=y),"plugin-name":s.pluginName,variables:s.variables,"plugin-txt":s.pluginTxt,"existing-plugin-txt":s.existingPluginTxt,"store-plugin-id":s.storePluginId,"store-version-id":s.storeVersionId,"min-cosmos-version":s.minCosmosVersion,onCallback:i.pluginCallback},null,8,["modelValue","plugin-name","variables","plugin-txt","existing-plugin-txt","store-plugin-id","store-version-id","min-cosmos-version","onCallback"])):v("",!0),s.showModifiedPluginDialog?(r(),p(Je,{key:2,modelValue:s.showModifiedPluginDialog,"onUpdate:modelValue":t[4]||(t[4]=y=>s.showModifiedPluginDialog=y),plugin:s.currentPlugin,targets:i.pluginTargets(s.currentPlugin),"plugin-hash":s.pluginHashTmp,"plugin-delete":s.pluginDelete,onSubmit:i.modifiedSubmit},null,8,["modelValue","plugin","targets","plugin-hash","plugin-delete","onSubmit"])):v("",!0),n(Qe,{modelValue:s.showProcessOutput,"onUpdate:modelValue":t[5]||(t[5]=y=>s.showProcessOutput=y),title:"Process Output",text:s.processOutput},null,8,["modelValue","text"]),n(et,{modelValue:s.showPluginStore,"onUpdate:modelValue":t[8]||(t[8]=y=>s.showPluginStore=y),fullscreen:""},{default:a(()=>[n(Xe,{onClose:t[6]||(t[6]=()=>s.showPluginStore=!1),onTriggerInstall:t[7]||(t[7]=y=>i.upload(null,y))})]),_:1},8,["modelValue"])])}const st=se("default",A(He,[["render",We],["__scopeId","data-v-a7c43eb5"]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./Widget-
|
|
1
|
+
System.register(["./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js","vue","./main-815790959203f3124f00.js","vue-router","pinia","single-spa","vuetify"],(function(u,d){"use strict";var s,a,r,l,i,n;return{setters:[e=>{s=e.f},e=>{a=e.resolveComponent,r=e.openBlock,l=e.createBlock,i=e.normalizeStyle},e=>{n=e.f},null,null,null,null],execute:(function(){const e={mixins:[s],props:{value:{type:[Number,String],default:null}},emits:["addItem","deleteItem"],data:function(){return{valueId:null,scaleFactor:1,width:150}},computed:{_value:function(){let t=this.value;if(t===null){if(!this.screenValues[this.valueId])return 0;t=this.screenValues[this.valueId][0]}return Number.parseInt(Number.parseFloat(t)*this.scaleFactor)}},created:function(){if(this.parameters[3]&&(this.scaleFactor=Number.parseFloat(this.parameters[3])),this.width=this.setWidth(this.parameters[4],"px",this.width),this.value===null){let t="CONVERTED";this.parameters[5]&&(t=this.parameters[5]),this.valueId=`${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${t}`,this.$emit("addItem",this.valueId)}},unmounted:function(){this.$emit("deleteItem",this.valueId)}};function o(t,p,v,f,I,c){const h=a("rux-progress");return r(),l(h,{value:c._value,class:"progress",style:i(t.computedStyle)},null,8,["value","style"])}const m=u("default",n(e,[["render",o],["__scopeId","data-v-af1daff2"]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./Widget-
|
|
1
|
+
System.register(["./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js","vue","./main-815790959203f3124f00.js","vue-router","pinia","single-spa","vuetify"],(function(s,v){"use strict";var l,t,n,a,r,u;return{setters:[e=>{l=e.f},e=>{t=e.resolveComponent,n=e.openBlock,a=e.createBlock,r=e.normalizeStyle},e=>{u=e.f},null,null,null,null],execute:(function(){const e={mixins:[l],props:{value:{type:Number,default:null}},data(){return{label:"Radio"}},created(){this.label=this.parameters[0]}};function o(i,m,c,y,p,b){const d=t("v-radio");return n(),a(d,{"hide-details":"",dense:"",label:p.label,style:r(i.computedStyle),value:c.value},null,8,["label","style","value"])}const f=s("default",u(e,[["render",o]]))})}}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
System.register(["./Layout-740AmQLZ-a0d301b9d3e04a4ff8ef.js","vue","./main-815790959203f3124f00.js","./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js","vue-router","pinia","single-spa","vuetify"],(function(x,C){"use strict";var a,l,r,s,i,c,o,m,u,d,p,g;return{setters:[e=>{a=e.r},e=>{l=e.resolveComponent,r=e.openBlock,s=e.createBlock,i=e.normalizeStyle,c=e.withCtx,o=e.createElementBlock,m=e.Fragment,u=e.renderList,d=e.resolveDynamicComponent,p=e.mergeProps},e=>{g=e.f},null,null,null,null,null],execute:(function(){const e={mixins:[a],data(){return{selectedIndex:0}},created(){this.parameters[0]&&(this.selectedIndex=Number.parseInt(this.parameters[0]))},methods:{selected(){return this.selectedIndex}}};function f(n,v,B,S,y,L){const k=l("v-radio-group");return r(),s(k,{modelValue:y.selectedIndex,"onUpdate:modelValue":v[0]||(v[0]=t=>y.selectedIndex=t),"hide-details":"",density:"compact",style:i(n.computedStyle)},{default:c(()=>[(r(!0),o(m,null,u(n.widgets,(t,h)=>(r(),s(d(t.type),p({ref_for:!0},n.listeners,{key:h,value:h,target:t.target,parameters:t.parameters,settings:t.settings,"screen-values":n.screenValues,"screen-time-zone":n.screenTimeZone,name:t.name}),null,16,["value","target","parameters","settings","screen-values","screen-time-zone","name"]))),128))]),_:1},8,["modelValue","style"])}const I=x("default",g(e,[["render",f]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./Widget-
|
|
1
|
+
System.register(["./Widget-lYL8eSaS-586a13a17eeb5aaa67f6.js","vue","./main-815790959203f3124f00.js","vue-router","pinia","single-spa","vuetify"],(function(u,m){"use strict";var r,a,n,h,s,l;return{setters:[e=>{r=e.f},e=>{a=e.openBlock,n=e.createElementBlock,h=e.normalizeStyle,s=e.createElementVNode},e=>{l=e.f},null,null,null,null],execute:(function(){const e={mixins:[r],emits:["addItem","deleteItem"],data(){return{width:160,height:22}},computed:{cssProps(){return{"--height":this.height+"px","--width":this.width+"px","--container-height":this.height-5+"px","--position":this.calcPosition()+"%"}},min(){return Number.parseInt(this.parameters[3])},max(){return Number.parseInt(this.parameters[4])},range(){return this.max-this.min}},created(){const t=this.parameters[5]?this.parameters[5]:"CONVERTED";this.valueId=`${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${t}`,this.$emit("addItem",this.valueId),this.width=this.setWidth(this.parameters[6],"px",this.width),this.height=this.setHeight(this.parameters[7],"px",this.height)},unmounted(){this.$emit("deleteItem",this.valueId)},methods:{calcPosition(){if(!this.screenValues[this.valueId])return 0;let t=this.screenValues[this.valueId][0];if(t==null)return 0;if(t.raw)return t.raw==="-Infinity"?0:100;const i=(t-this.min)/this.range*100;return i>100?100:i<0?0:i}}};function c(t,i,p,g,v,d){return a(),n("div",{class:"rangebar",style:h([d.cssProps,t.computedStyle])},[...i[0]||(i[0]=[s("div",{class:"rangebar__container"},[s("div",{class:"rangebar__line"}),s("div",{class:"rangebar__arrow"})],-1)])],4)}const o=u("default",l(e,[["render",c],["__scopeId","data-v-276a618a"]]))})}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register(["./main-
|
|
1
|
+
System.register(["./main-815790959203f3124f00.js","vue","vue-router","pinia","single-spa","vuetify"],(function(_,D){"use strict";var y,f,d,o,c,n,l,i,p,v,m,x;return{setters:[a=>{y=a.f,f=a.q},a=>{d=a.resolveComponent,o=a.openBlock,c=a.createElementBlock,n=a.createVNode,l=a.withCtx,i=a.createTextVNode,p=a.createElementVNode,v=a.Fragment,m=a.toDisplayString,x=a.createCommentVNode},null,null,null,null],execute:(function(){const a={data(){return{redisCommandText:"",redisResponse:null,redisEndpoint:"persistent",db_shard:0,prettyPrint:!1,headers:[{text:"Redis",value:"redis",width:150},{text:"Command",value:"command"},{text:"Response",value:"response"}],commands:[]}},computed:{formattedResponse:function(){let t=this.redisResponse;if(this.redisResponse&&this.prettyPrint){if(typeof t=="string")try{t=JSON.parse(t)}catch{}if(Array.isArray(t)){for(let e=0;e<t.length;e++)if(typeof t[e]=="string")try{t[e]=JSON.parse(t[e])}catch{}}}return t=JSON.stringify(t,null,2),`Response: ${t}`}},methods:{commandKeydown:function(t){t.key==="Enter"&&this.executeRaw()},executeRaw:function(){this.redisResponse=null;let t="/openc3-api/redis/exec";const e=[];this.redisEndpoint==="ephemeral"&&e.push("ephemeral=1"),this.db_shard&&this.db_shard!==0&&e.push(`db_shard=${this.db_shard}`),e.length&&(t+="?"+e.join("&")),f.post(t,{data:this.redisCommandText,headers:{Accept:"application/json","Content-Type":"text/plain"}}).then(b=>{this.redisResponse=b.data.result;let u=this.redisEndpoint==="ephemeral"?"Ephemeral":"Persistent";this.db_shard!==0&&(u+=` (db_shard ${this.db_shard})`),this.commands.unshift({redis:u,command:this.redisCommandText,response:this.redisResponse})}).catch(console.error)}}},g=["textContent"],V={key:1,class:"monospace"};function C(t,e,b,u,s,h){const w=d("v-card-title"),k=d("v-card-subtitle"),E=d("v-text-field"),N=d("v-checkbox"),S=d("v-card-text"),T=d("v-btn"),R=d("v-radio"),P=d("v-radio-group"),U=d("v-number-input"),A=d("v-card-actions"),B=d("v-data-table"),K=d("v-card");return o(),c("div",null,[n(K,null,{default:l(()=>[n(w,null,{default:l(()=>[...e[4]||(e[4]=[i(" Send Raw Redis Commands ",-1)])]),_:1}),n(k,null,{default:l(()=>[...e[5]||(e[5]=[i(" THIS IS DANGEROUS. This allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. ",-1),p("br",null,null,-1),p("br",null,null,-1),i(" Enter commands like you would at the Redis cli prompt: ",-1),p("code",null,"ping",-1),i(" or ",-1),p("code",null,"hget openc3__settings version",-1)])]),_:1}),n(S,{class:"pb-0 ml-2"},{default:l(()=>[n(E,{modelValue:s.redisCommandText,"onUpdate:modelValue":e[0]||(e[0]=r=>s.redisCommandText=r),"hide-details":"",label:"Redis command",class:"monospace",onKeydown:h.commandKeydown},null,8,["modelValue","onKeydown"]),n(N,{modelValue:s.prettyPrint,"onUpdate:modelValue":e[1]||(e[1]=r=>s.prettyPrint=r),label:"Pretty print",density:"compact","hide-details":"",class:"mb-2"},null,8,["modelValue"]),s.redisResponse?(o(),c(v,{key:0},[s.prettyPrint?(o(),c("pre",{key:0,textContent:m(h.formattedResponse)},null,8,g)):(o(),c("span",V," Response: "+m(s.redisResponse),1))],64)):x("",!0)]),_:1}),n(A,{class:"px-2"},{default:l(()=>[n(T,{disabled:!s.redisCommandText.length,color:"success",variant:"text",onClick:h.executeRaw},{default:l(()=>[...e[6]||(e[6]=[i(" Execute ",-1)])]),_:1},8,["disabled","onClick"]),n(P,{modelValue:s.redisEndpoint,"onUpdate:modelValue":e[2]||(e[2]=r=>s.redisEndpoint=r),inline:"","hide-details":"",class:"mt-0"},{default:l(()=>[n(R,{label:"Persistent",value:"persistent","data-test":"persistent-radio"}),n(R,{label:"Ephemeral",value:"ephemeral","data-test":"ephemeral-radio"})]),_:1},8,["modelValue"]),n(U,{modelValue:s.db_shard,"onUpdate:modelValue":e[3]||(e[3]=r=>s.db_shard=r),"control-variant":"stacked",min:0,label:"DB Shard","hide-details":"",density:"compact",style:{"max-width":"100px"},class:"ml-4"},null,8,["modelValue"])]),_:1}),n(B,{headers:s.headers,items:s.commands,class:"monospace","items-per-page":-1,"hide-default-footer":"",density:"compact",height:"45vh"},null,8,["headers","items"])]),_:1})])}const I=_("default",y(a,[["render",C],["__scopeId","data-v-e04990a5"]]))})}}));
|