@openc3/vue-common 5.21.0-beta0
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.
- package/LICENSE.txt +729 -0
- package/README.md +25 -0
- package/dist/ArrayWidget-ChaMDaRA.js +105 -0
- package/dist/ArrayWidget-ChaMDaRA.js.map +1 -0
- package/dist/ArrayWidget-x7le0X73.cjs +3 -0
- package/dist/ArrayWidget-x7le0X73.cjs.map +1 -0
- package/dist/AstroStatus-CILMWL6F.cjs +2 -0
- package/dist/AstroStatus-CILMWL6F.cjs.map +1 -0
- package/dist/AstroStatus-CY9VkeTN.js +40 -0
- package/dist/AstroStatus-CY9VkeTN.js.map +1 -0
- package/dist/BarColumn-CqXfFAQ9.js +106 -0
- package/dist/BarColumn-CqXfFAQ9.js.map +1 -0
- package/dist/BarColumn-Ct4izXqV.cjs +2 -0
- package/dist/BarColumn-Ct4izXqV.cjs.map +1 -0
- package/dist/BlockWidget-BPefRY_h.cjs +3 -0
- package/dist/BlockWidget-BPefRY_h.cjs.map +1 -0
- package/dist/BlockWidget-DjiPs6ID.js +111 -0
- package/dist/BlockWidget-DjiPs6ID.js.map +1 -0
- package/dist/ButtonWidget-Dd80CjGt.js +165 -0
- package/dist/ButtonWidget-Dd80CjGt.js.map +1 -0
- package/dist/ButtonWidget-SoiP15gH.cjs +3 -0
- package/dist/ButtonWidget-SoiP15gH.cjs.map +1 -0
- package/dist/CanvasWidget-ALHiDq5o.js +39 -0
- package/dist/CanvasWidget-ALHiDq5o.js.map +1 -0
- package/dist/CanvasWidget-JapjwSXd.cjs +2 -0
- package/dist/CanvasWidget-JapjwSXd.cjs.map +1 -0
- package/dist/CanvasdotWidget-BU42MGW6.cjs +2 -0
- package/dist/CanvasdotWidget-BU42MGW6.cjs.map +1 -0
- package/dist/CanvasdotWidget-JkDXGoHm.js +19 -0
- package/dist/CanvasdotWidget-JkDXGoHm.js.map +1 -0
- package/dist/CanvasimageWidget-CQ_ZlEFj.cjs +2 -0
- package/dist/CanvasimageWidget-CQ_ZlEFj.cjs.map +1 -0
- package/dist/CanvasimageWidget-CTXlEJgA.js +58 -0
- package/dist/CanvasimageWidget-CTXlEJgA.js.map +1 -0
- package/dist/CanvasimagevalueWidget-CihOXOHH.js +107 -0
- package/dist/CanvasimagevalueWidget-CihOXOHH.js.map +1 -0
- package/dist/CanvasimagevalueWidget-DKejEVKr.cjs +2 -0
- package/dist/CanvasimagevalueWidget-DKejEVKr.cjs.map +1 -0
- package/dist/CanvaslabelWidget-2uD1FRT0.js +23 -0
- package/dist/CanvaslabelWidget-2uD1FRT0.js.map +1 -0
- package/dist/CanvaslabelWidget-zKoAOaaE.cjs +2 -0
- package/dist/CanvaslabelWidget-zKoAOaaE.cjs.map +1 -0
- package/dist/CanvaslabelvalueWidget-BCd0ssW9.js +42 -0
- package/dist/CanvaslabelvalueWidget-BCd0ssW9.js.map +1 -0
- package/dist/CanvaslabelvalueWidget-ZnyvNaVM.cjs +2 -0
- package/dist/CanvaslabelvalueWidget-ZnyvNaVM.cjs.map +1 -0
- package/dist/CanvaslineWidget-BRFrT-9r.cjs +2 -0
- package/dist/CanvaslineWidget-BRFrT-9r.cjs.map +1 -0
- package/dist/CanvaslineWidget-Cc8vj_vu.js +28 -0
- package/dist/CanvaslineWidget-Cc8vj_vu.js.map +1 -0
- package/dist/CanvaslinevalueWidget-CJTmkXEr.js +44 -0
- package/dist/CanvaslinevalueWidget-CJTmkXEr.js.map +1 -0
- package/dist/CanvaslinevalueWidget-DgIU-2d6.cjs +2 -0
- package/dist/CanvaslinevalueWidget-DgIU-2d6.cjs.map +1 -0
- package/dist/CheckbuttonWidget-BrUBiJWn.cjs +2 -0
- package/dist/CheckbuttonWidget-BrUBiJWn.cjs.map +1 -0
- package/dist/CheckbuttonWidget-lZD4wLcB.js +37 -0
- package/dist/CheckbuttonWidget-lZD4wLcB.js.map +1 -0
- package/dist/ComboboxWidget-BUMleWlR.cjs +2 -0
- package/dist/ComboboxWidget-BUMleWlR.cjs.map +1 -0
- package/dist/ComboboxWidget-D-nVY2Zf.js +37 -0
- package/dist/ComboboxWidget-D-nVY2Zf.js.map +1 -0
- package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs +2 -0
- package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs.map +1 -0
- package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js +10 -0
- package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js.map +1 -0
- package/dist/CriticalCmdDialog-BvPQYRie.cjs +2 -0
- package/dist/CriticalCmdDialog-BvPQYRie.cjs.map +1 -0
- package/dist/CriticalCmdDialog-ChYR9_7n.js +270 -0
- package/dist/CriticalCmdDialog-ChYR9_7n.js.map +1 -0
- package/dist/DateWidget-3e2qqqxw.cjs +2 -0
- package/dist/DateWidget-3e2qqqxw.cjs.map +1 -0
- package/dist/DateWidget-Bs2NufYI.js +40 -0
- package/dist/DateWidget-Bs2NufYI.js.map +1 -0
- package/dist/DetailsDialog-8ixZ1oPd.cjs +2 -0
- package/dist/DetailsDialog-8ixZ1oPd.cjs.map +1 -0
- package/dist/DetailsDialog-ScKx0N2e.js +767 -0
- package/dist/DetailsDialog-ScKx0N2e.js.map +1 -0
- package/dist/DynamicWidget-3wHr6Ng-.cjs +2 -0
- package/dist/DynamicWidget-3wHr6Ng-.cjs.map +1 -0
- package/dist/DynamicWidget-m9EliUR2.js +35 -0
- package/dist/DynamicWidget-m9EliUR2.js.map +1 -0
- package/dist/FormatvalueWidget-DEj59HDj.js +44 -0
- package/dist/FormatvalueWidget-DEj59HDj.js.map +1 -0
- package/dist/FormatvalueWidget-DK0tTvcs.cjs +2 -0
- package/dist/FormatvalueWidget-DK0tTvcs.cjs.map +1 -0
- package/dist/Graph-D2frd7mZ.js +1999 -0
- package/dist/Graph-D2frd7mZ.js.map +1 -0
- package/dist/Graph-DFEMzAGq.cjs +2 -0
- package/dist/Graph-DFEMzAGq.cjs.map +1 -0
- package/dist/GraphWidget-CbyYREVa.cjs +2 -0
- package/dist/GraphWidget-CbyYREVa.cjs.map +1 -0
- package/dist/GraphWidget-CvlfqTgn.js +129 -0
- package/dist/GraphWidget-CvlfqTgn.js.map +1 -0
- package/dist/HorizontalWidget-BEOYwm8D.js +41 -0
- package/dist/HorizontalWidget-BEOYwm8D.js.map +1 -0
- package/dist/HorizontalWidget-xEd4ZLsc.cjs +2 -0
- package/dist/HorizontalWidget-xEd4ZLsc.cjs.map +1 -0
- package/dist/HorizontalboxWidget-C2wA9_HA.js +38 -0
- package/dist/HorizontalboxWidget-C2wA9_HA.js.map +1 -0
- package/dist/HorizontalboxWidget-xwLnkDXf.cjs +2 -0
- package/dist/HorizontalboxWidget-xwLnkDXf.cjs.map +1 -0
- package/dist/HorizontallineWidget-BCKOQase.cjs +2 -0
- package/dist/HorizontallineWidget-BCKOQase.cjs.map +1 -0
- package/dist/HorizontallineWidget-BdlNB951.js +11 -0
- package/dist/HorizontallineWidget-BdlNB951.js.map +1 -0
- package/dist/IframeWidget-C42hZbe_.cjs +2 -0
- package/dist/IframeWidget-C42hZbe_.cjs.map +1 -0
- package/dist/IframeWidget-qwGlLyoS.js +29 -0
- package/dist/IframeWidget-qwGlLyoS.js.map +1 -0
- package/dist/ImageLoader-BSTQyLlJ.cjs +2 -0
- package/dist/ImageLoader-BSTQyLlJ.cjs.map +1 -0
- package/dist/ImageLoader-CQAyutzR.js +36 -0
- package/dist/ImageLoader-CQAyutzR.js.map +1 -0
- package/dist/ImageviewerWidget-B0HJk4Tf.cjs +2 -0
- package/dist/ImageviewerWidget-B0HJk4Tf.cjs.map +1 -0
- package/dist/ImageviewerWidget-CDeYB2QG.js +37 -0
- package/dist/ImageviewerWidget-CDeYB2QG.js.map +1 -0
- package/dist/InterfacesTab-D-VIrHHf.js +92 -0
- package/dist/InterfacesTab-D-VIrHHf.js.map +1 -0
- package/dist/InterfacesTab-NTrgd1dN.cjs +2 -0
- package/dist/InterfacesTab-NTrgd1dN.cjs.map +1 -0
- package/dist/LabelWidget-B1-se7_B.cjs +2 -0
- package/dist/LabelWidget-B1-se7_B.cjs.map +1 -0
- package/dist/LabelWidget-C5_cj8pA.js +48 -0
- package/dist/LabelWidget-C5_cj8pA.js.map +1 -0
- package/dist/LabelledWidget-3aDkVYzF.cjs +2 -0
- package/dist/LabelledWidget-3aDkVYzF.cjs.map +1 -0
- package/dist/LabelledWidget-DWOPmkyP.js +42 -0
- package/dist/LabelledWidget-DWOPmkyP.js.map +1 -0
- package/dist/LabelprogressbarWidget-DFPXYOTH.js +43 -0
- package/dist/LabelprogressbarWidget-DFPXYOTH.js.map +1 -0
- package/dist/LabelprogressbarWidget-Dsiw-uBJ.cjs +2 -0
- package/dist/LabelprogressbarWidget-Dsiw-uBJ.cjs.map +1 -0
- package/dist/LabelsparklineWidget-DG_Q8WOZ.js +44 -0
- package/dist/LabelsparklineWidget-DG_Q8WOZ.js.map +1 -0
- package/dist/LabelsparklineWidget-w6pdf_eu.cjs +2 -0
- package/dist/LabelsparklineWidget-w6pdf_eu.cjs.map +1 -0
- package/dist/LabelvalueWidget-CRtYLZfm.cjs +2 -0
- package/dist/LabelvalueWidget-CRtYLZfm.cjs.map +1 -0
- package/dist/LabelvalueWidget-CxL0zxQr.js +58 -0
- package/dist/LabelvalueWidget-CxL0zxQr.js.map +1 -0
- package/dist/LabelvaluedescWidget-CF9py8m9.cjs +2 -0
- package/dist/LabelvaluedescWidget-CF9py8m9.cjs.map +1 -0
- package/dist/LabelvaluedescWidget-ClWPSOeN.js +59 -0
- package/dist/LabelvaluedescWidget-ClWPSOeN.js.map +1 -0
- package/dist/LabelvaluelimitsbarWidget-DFUH0HNe.cjs +2 -0
- package/dist/LabelvaluelimitsbarWidget-DFUH0HNe.cjs.map +1 -0
- package/dist/LabelvaluelimitsbarWidget-DUyZ7KXT.js +55 -0
- package/dist/LabelvaluelimitsbarWidget-DUyZ7KXT.js.map +1 -0
- package/dist/LabelvaluelimitscolumnWidget-DdCNjIEm.js +45 -0
- package/dist/LabelvaluelimitscolumnWidget-DdCNjIEm.js.map +1 -0
- package/dist/LabelvaluelimitscolumnWidget-k0hVnMUV.cjs +2 -0
- package/dist/LabelvaluelimitscolumnWidget-k0hVnMUV.cjs.map +1 -0
- package/dist/LabelvaluerangebarWidget-CRqMQa_x.cjs +2 -0
- package/dist/LabelvaluerangebarWidget-CRqMQa_x.cjs.map +1 -0
- package/dist/LabelvaluerangebarWidget-DGJv44i4.js +79 -0
- package/dist/LabelvaluerangebarWidget-DGJv44i4.js.map +1 -0
- package/dist/Layout-C1uMy2Sd.js +14 -0
- package/dist/Layout-C1uMy2Sd.js.map +1 -0
- package/dist/Layout-C2VWUn33.cjs +2 -0
- package/dist/Layout-C2VWUn33.cjs.map +1 -0
- package/dist/LedWidget-C8LEesIO.js +69 -0
- package/dist/LedWidget-C8LEesIO.js.map +1 -0
- package/dist/LedWidget-tnHC12fA.cjs +2 -0
- package/dist/LedWidget-tnHC12fA.cjs.map +1 -0
- package/dist/LimitsbarWidget-DSJvR91d.cjs +2 -0
- package/dist/LimitsbarWidget-DSJvR91d.cjs.map +1 -0
- package/dist/LimitsbarWidget-DV94AaXX.js +52 -0
- package/dist/LimitsbarWidget-DV94AaXX.js.map +1 -0
- package/dist/LimitscolorWidget-BWfffXvj.cjs +2 -0
- package/dist/LimitscolorWidget-BWfffXvj.cjs.map +1 -0
- package/dist/LimitscolorWidget-DT_WG8Jb.js +59 -0
- package/dist/LimitscolorWidget-DT_WG8Jb.js.map +1 -0
- package/dist/LimitscolumnWidget-Ci2DqqsC.cjs +2 -0
- package/dist/LimitscolumnWidget-Ci2DqqsC.cjs.map +1 -0
- package/dist/LimitscolumnWidget-yGBCsGuc.js +49 -0
- package/dist/LimitscolumnWidget-yGBCsGuc.js.map +1 -0
- package/dist/LinegraphWidget-BG43_kkA.js +38 -0
- package/dist/LinegraphWidget-BG43_kkA.js.map +1 -0
- package/dist/LinegraphWidget-ByTUdpDj.cjs +2 -0
- package/dist/LinegraphWidget-ByTUdpDj.cjs.map +1 -0
- package/dist/MatrixbycolumnsWidget-Cfp2S5QC.js +56 -0
- package/dist/MatrixbycolumnsWidget-Cfp2S5QC.js.map +1 -0
- package/dist/MatrixbycolumnsWidget-GHZ6cCcr.cjs +2 -0
- package/dist/MatrixbycolumnsWidget-GHZ6cCcr.cjs.map +1 -0
- package/dist/MicroservicesTab-BuIftbHc.js +159 -0
- package/dist/MicroservicesTab-BuIftbHc.js.map +1 -0
- package/dist/MicroservicesTab-CdCozCVI.cjs +2 -0
- package/dist/MicroservicesTab-CdCozCVI.cjs.map +1 -0
- package/dist/OutputDialog-CjFsDUYh.js +244 -0
- package/dist/OutputDialog-CjFsDUYh.js.map +1 -0
- package/dist/OutputDialog-Dkn9Fli9.cjs +2 -0
- package/dist/OutputDialog-Dkn9Fli9.cjs.map +1 -0
- package/dist/PackagesTab-BwTViRcm.js +339 -0
- package/dist/PackagesTab-BwTViRcm.js.map +1 -0
- package/dist/PackagesTab-DPaJ_JbE.cjs +2 -0
- package/dist/PackagesTab-DPaJ_JbE.cjs.map +1 -0
- package/dist/PluginsTab-C7GizpA1.cjs +6 -0
- package/dist/PluginsTab-C7GizpA1.cjs.map +1 -0
- package/dist/PluginsTab-fld_-DT-.js +598 -0
- package/dist/PluginsTab-fld_-DT-.js.map +1 -0
- package/dist/ProgressbarWidget-BSPuQNU_.js +46 -0
- package/dist/ProgressbarWidget-BSPuQNU_.js.map +1 -0
- package/dist/ProgressbarWidget-D1wbbnow.cjs +2 -0
- package/dist/ProgressbarWidget-D1wbbnow.cjs.map +1 -0
- package/dist/RadiobuttonWidget-B4rrjT9j.js +34 -0
- package/dist/RadiobuttonWidget-B4rrjT9j.js.map +1 -0
- package/dist/RadiobuttonWidget-Bhcj3WY5.cjs +2 -0
- package/dist/RadiobuttonWidget-Bhcj3WY5.cjs.map +1 -0
- package/dist/RadiogroupWidget-CQrEv3Qs.cjs +2 -0
- package/dist/RadiogroupWidget-CQrEv3Qs.cjs.map +1 -0
- package/dist/RadiogroupWidget-VncDKxiZ.js +48 -0
- package/dist/RadiogroupWidget-VncDKxiZ.js.map +1 -0
- package/dist/RangebarWidget-Btu0oj_O.js +67 -0
- package/dist/RangebarWidget-Btu0oj_O.js.map +1 -0
- package/dist/RangebarWidget-CKmh0GEh.cjs +2 -0
- package/dist/RangebarWidget-CKmh0GEh.cjs.map +1 -0
- package/dist/RedisTab-BPFEQDx-.js +135 -0
- package/dist/RedisTab-BPFEQDx-.js.map +1 -0
- package/dist/RedisTab-DpbDcxH5.cjs +2 -0
- package/dist/RedisTab-DpbDcxH5.cjs.map +1 -0
- package/dist/RollupWidget-Bh-Gpi5l.cjs +2 -0
- package/dist/RollupWidget-Bh-Gpi5l.cjs.map +1 -0
- package/dist/RollupWidget-CIp8Akqq.js +81 -0
- package/dist/RollupWidget-CIp8Akqq.js.map +1 -0
- package/dist/RoutersTab-CTpmfcgq.js +94 -0
- package/dist/RoutersTab-CTpmfcgq.js.map +1 -0
- package/dist/RoutersTab-DLQ-_xsb.cjs +2 -0
- package/dist/RoutersTab-DLQ-_xsb.cjs.map +1 -0
- package/dist/ScriptChooser-Cku5i9C6.cjs +2 -0
- package/dist/ScriptChooser-Cku5i9C6.cjs.map +1 -0
- package/dist/ScriptChooser-Cx985GFr.js +199 -0
- package/dist/ScriptChooser-Cx985GFr.js.map +1 -0
- package/dist/ScrollwindowWidget-BIYEL78X.js +45 -0
- package/dist/ScrollwindowWidget-BIYEL78X.js.map +1 -0
- package/dist/ScrollwindowWidget-DWBLVHz1.cjs +2 -0
- package/dist/ScrollwindowWidget-DWBLVHz1.cjs.map +1 -0
- package/dist/SecretsTab-CV5WYD3N.cjs +2 -0
- package/dist/SecretsTab-CV5WYD3N.cjs.map +1 -0
- package/dist/SecretsTab-DfBaqZw2.js +202 -0
- package/dist/SecretsTab-DfBaqZw2.js.map +1 -0
- package/dist/SettingsTab-B1DNmvM5.js +1282 -0
- package/dist/SettingsTab-B1DNmvM5.js.map +1 -0
- package/dist/SettingsTab-BKD5vVwv.cjs +2 -0
- package/dist/SettingsTab-BKD5vVwv.cjs.map +1 -0
- package/dist/SignalWidget-f_2K-phy.js +61 -0
- package/dist/SignalWidget-f_2K-phy.js.map +1 -0
- package/dist/SignalWidget-vsx411XW.cjs +2 -0
- package/dist/SignalWidget-vsx411XW.cjs.map +1 -0
- package/dist/SimpleTextDialog-BLlux8b4.js +108 -0
- package/dist/SimpleTextDialog-BLlux8b4.js.map +1 -0
- package/dist/SimpleTextDialog-D2R3WQXD.cjs +2 -0
- package/dist/SimpleTextDialog-D2R3WQXD.cjs.map +1 -0
- package/dist/SpacerWidget-DGo6ZjYn.cjs +2 -0
- package/dist/SpacerWidget-DGo6ZjYn.cjs.map +1 -0
- package/dist/SpacerWidget-YhsM7srQ.js +19 -0
- package/dist/SpacerWidget-YhsM7srQ.js.map +1 -0
- package/dist/SparklineWidget-Bkx8nwqY.cjs +2 -0
- package/dist/SparklineWidget-Bkx8nwqY.cjs.map +1 -0
- package/dist/SparklineWidget-CuGChXzf.js +47 -0
- package/dist/SparklineWidget-CuGChXzf.js.map +1 -0
- package/dist/TabbookWidget-BlDW3n54.js +66 -0
- package/dist/TabbookWidget-BlDW3n54.js.map +1 -0
- package/dist/TabbookWidget-CDUj7RHp.cjs +2 -0
- package/dist/TabbookWidget-CDUj7RHp.cjs.map +1 -0
- package/dist/TargetsTab-B2Jw5Kec.js +128 -0
- package/dist/TargetsTab-B2Jw5Kec.js.map +1 -0
- package/dist/TargetsTab-fON6-iJc.cjs +2 -0
- package/dist/TargetsTab-fON6-iJc.cjs.map +1 -0
- package/dist/TextBoxDialog-CZ3h4LP-.js +110 -0
- package/dist/TextBoxDialog-CZ3h4LP-.js.map +1 -0
- package/dist/TextBoxDialog-DvUf3Cak.cjs +2 -0
- package/dist/TextBoxDialog-DvUf3Cak.cjs.map +1 -0
- package/dist/TextboxWidget-CWXCNL8K.js +92 -0
- package/dist/TextboxWidget-CWXCNL8K.js.map +1 -0
- package/dist/TextboxWidget-LhNzbjQI.cjs +2 -0
- package/dist/TextboxWidget-LhNzbjQI.cjs.map +1 -0
- package/dist/TextfieldWidget-AbalSObh.cjs +2 -0
- package/dist/TextfieldWidget-AbalSObh.cjs.map +1 -0
- package/dist/TextfieldWidget-CRVUO3wk.js +37 -0
- package/dist/TextfieldWidget-CRVUO3wk.js.map +1 -0
- package/dist/TimeWidget-BUMtokM-.cjs +2 -0
- package/dist/TimeWidget-BUMtokM-.cjs.map +1 -0
- package/dist/TimeWidget-CDo0yWlB.js +40 -0
- package/dist/TimeWidget-CDo0yWlB.js.map +1 -0
- package/dist/TitleWidget-Cvjndegg.js +26 -0
- package/dist/TitleWidget-Cvjndegg.js.map +1 -0
- package/dist/TitleWidget-DWieiIfq.cjs +2 -0
- package/dist/TitleWidget-DWieiIfq.cjs.map +1 -0
- package/dist/ToolsTab-Bu4syVrX.js +1519 -0
- package/dist/ToolsTab-Bu4syVrX.js.map +1 -0
- package/dist/ToolsTab-rS3KG7M5.cjs +7 -0
- package/dist/ToolsTab-rS3KG7M5.cjs.map +1 -0
- package/dist/TopBar-B1dOQ1W9.js +253 -0
- package/dist/TopBar-B1dOQ1W9.js.map +1 -0
- package/dist/TopBar-_j4ndwSi.cjs +2 -0
- package/dist/TopBar-_j4ndwSi.cjs.map +1 -0
- package/dist/UpgradeToEnterpriseDialog--cLHsvir.cjs +2 -0
- package/dist/UpgradeToEnterpriseDialog--cLHsvir.cjs.map +1 -0
- package/dist/UpgradeToEnterpriseDialog-CY9g4hzD.js +95 -0
- package/dist/UpgradeToEnterpriseDialog-CY9g4hzD.js.map +1 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-BrapmXxi.js +25215 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-BrapmXxi.js.map +1 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DdL5xG80.cjs +1416 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DdL5xG80.cjs.map +1 -0
- package/dist/VWidget-BRkvqAVS.cjs +2 -0
- package/dist/VWidget-BRkvqAVS.cjs.map +1 -0
- package/dist/VWidget-D9Wk0N9r.js +323 -0
- package/dist/VWidget-D9Wk0N9r.js.map +1 -0
- package/dist/ValueWidget-D3EJcN4C.js +115 -0
- package/dist/ValueWidget-D3EJcN4C.js.map +1 -0
- package/dist/ValueWidget-DxY7IZvc.cjs +2 -0
- package/dist/ValueWidget-DxY7IZvc.cjs.map +1 -0
- package/dist/ValuelimitsbarWidget-C5revcun.js +39 -0
- package/dist/ValuelimitsbarWidget-C5revcun.js.map +1 -0
- package/dist/ValuelimitsbarWidget-Dk6L7fl3.cjs +2 -0
- package/dist/ValuelimitsbarWidget-Dk6L7fl3.cjs.map +1 -0
- package/dist/ValuelimitscolumnWidget-BBEGOlON.js +38 -0
- package/dist/ValuelimitscolumnWidget-BBEGOlON.js.map +1 -0
- package/dist/ValuelimitscolumnWidget-YD_Xd3tD.cjs +2 -0
- package/dist/ValuelimitscolumnWidget-YD_Xd3tD.cjs.map +1 -0
- package/dist/ValuerangebarWidget-BtoenJky.cjs +2 -0
- package/dist/ValuerangebarWidget-BtoenJky.cjs.map +1 -0
- package/dist/ValuerangebarWidget-D70Xk8rM.js +65 -0
- package/dist/ValuerangebarWidget-D70Xk8rM.js.map +1 -0
- package/dist/VerticalWidget-Dw11Ey1R.cjs +2 -0
- package/dist/VerticalWidget-Dw11Ey1R.cjs.map +1 -0
- package/dist/VerticalWidget-RIOu-NI3.js +41 -0
- package/dist/VerticalWidget-RIOu-NI3.js.map +1 -0
- package/dist/VerticalboxWidget-BUjeAxtO.js +37 -0
- package/dist/VerticalboxWidget-BUjeAxtO.js.map +1 -0
- package/dist/VerticalboxWidget-DT-OCuyc.cjs +2 -0
- package/dist/VerticalboxWidget-DT-OCuyc.cjs.map +1 -0
- package/dist/Widget-C-EiCtmV.cjs +2 -0
- package/dist/Widget-C-EiCtmV.cjs.map +1 -0
- package/dist/Widget-C5V53T-a.js +197 -0
- package/dist/Widget-C5V53T-a.js.map +1 -0
- package/dist/addMonths-Be4oiWXO.js +19 -0
- package/dist/addMonths-Be4oiWXO.js.map +1 -0
- package/dist/addMonths-foItT0GW.cjs +2 -0
- package/dist/addMonths-foItT0GW.cjs.map +1 -0
- package/dist/axios-CXDYiOMX.js +1705 -0
- package/dist/axios-CXDYiOMX.js.map +1 -0
- package/dist/axios-tuVKNgv9.cjs +7 -0
- package/dist/axios-tuVKNgv9.cjs.map +1 -0
- package/dist/components.cjs +7 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.js +2936 -0
- package/dist/components.js.map +1 -0
- package/dist/fileIcon-BduOQcTc.cjs +2 -0
- package/dist/fileIcon-BduOQcTc.cjs.map +1 -0
- package/dist/fileIcon-DqRHb1_Z.js +22 -0
- package/dist/fileIcon-DqRHb1_Z.js.map +1 -0
- package/dist/format-BDZ4AOJt.cjs +2 -0
- package/dist/format-BDZ4AOJt.cjs.map +1 -0
- package/dist/format-Da42caYw.js +1229 -0
- package/dist/format-Da42caYw.js.map +1 -0
- package/dist/icons/status-dark.png +0 -0
- package/dist/icons/status-dark.xcf +0 -0
- package/dist/icons/status-light.png +0 -0
- package/dist/icons.cjs +2 -0
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.js +157 -0
- package/dist/icons.js.map +1 -0
- package/dist/parse-BO9ihK1v.cjs +2 -0
- package/dist/parse-BO9ihK1v.cjs.map +1 -0
- package/dist/parse-dDr1Btat.js +1556 -0
- package/dist/parse-dDr1Btat.js.map +1 -0
- package/dist/plugins.cjs +9 -0
- package/dist/plugins.cjs.map +1 -0
- package/dist/plugins.js +771 -0
- package/dist/plugins.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/timeFilters-CN3Tdo2Z.js +607 -0
- package/dist/timeFilters-CN3Tdo2Z.js.map +1 -0
- package/dist/timeFilters-DwWhNG4a.cjs +2 -0
- package/dist/timeFilters-DwWhNG4a.cjs.map +1 -0
- package/dist/tools/admin.cjs +13 -0
- package/dist/tools/admin.cjs.map +1 -0
- package/dist/tools/admin.js +1909 -0
- package/dist/tools/admin.js.map +1 -0
- package/dist/tools/base.cjs +2 -0
- package/dist/tools/base.cjs.map +1 -0
- package/dist/tools/base.js +1580 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/calendar.cjs +2 -0
- package/dist/tools/calendar.cjs.map +1 -0
- package/dist/tools/calendar.js +1591 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/util.cjs +2 -0
- package/dist/util.cjs.map +1 -0
- package/dist/util.js +9 -0
- package/dist/util.js.map +1 -0
- package/dist/widgets.cjs +2 -0
- package/dist/widgets.cjs.map +1 -0
- package/dist/widgets.js +130 -0
- package/dist/widgets.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { n as v } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-BrapmXxi.js";
|
|
2
|
+
import { resolveComponent as a, openBlock as p, createElementBlock as d, createVNode as o, withCtx as e, createTextVNode as r, createElementVNode as c, toDisplayString as f, createBlock as N, Fragment as C, renderList as D, createSlots as B, normalizeClass as M, mergeProps as b, createCommentVNode as R } from "vue";
|
|
3
|
+
import { _ as j } from "./CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js";
|
|
4
|
+
import { S as H } from "./SimpleTextDialog-BLlux8b4.js";
|
|
5
|
+
import { DownloadDialog as z } from "./tools/admin.js";
|
|
6
|
+
import { f as E, t as G } from "./format-Da42caYw.js";
|
|
7
|
+
const q = {
|
|
8
|
+
components: {
|
|
9
|
+
DownloadDialog: z,
|
|
10
|
+
SimpleTextDialog: H
|
|
11
|
+
},
|
|
12
|
+
data() {
|
|
13
|
+
return {
|
|
14
|
+
showDownloadDialog: !1,
|
|
15
|
+
showProcessOutput: !1,
|
|
16
|
+
processOutput: "",
|
|
17
|
+
files: [],
|
|
18
|
+
loadingPackage: !1,
|
|
19
|
+
progress: 0,
|
|
20
|
+
gems: [],
|
|
21
|
+
python: [],
|
|
22
|
+
processes: {},
|
|
23
|
+
alert: "",
|
|
24
|
+
alertType: "success",
|
|
25
|
+
showAlert: !1
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
mounted() {
|
|
29
|
+
this.update(), this.updateProcesses();
|
|
30
|
+
},
|
|
31
|
+
methods: {
|
|
32
|
+
showOutput: function(n) {
|
|
33
|
+
this.processOutput = n.output, this.showProcessOutput = !0;
|
|
34
|
+
},
|
|
35
|
+
update() {
|
|
36
|
+
v.get("/openc3-api/packages").then((n) => {
|
|
37
|
+
this.gems = n.data.ruby, this.python = n.data.python;
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
updateProcesses: function() {
|
|
41
|
+
v.get("/openc3-api/process_status/package_?substr=true").then(
|
|
42
|
+
(n) => {
|
|
43
|
+
this.processes = n.data, Object.keys(this.processes).length > 0 && setTimeout(() => {
|
|
44
|
+
this.updateProcesses(), this.update();
|
|
45
|
+
}, 1e4);
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
},
|
|
49
|
+
formatDate(n) {
|
|
50
|
+
return E(
|
|
51
|
+
G(parseInt(n) / 1e6),
|
|
52
|
+
"yyyy-MM-dd HH:mm:ss.SSS"
|
|
53
|
+
);
|
|
54
|
+
},
|
|
55
|
+
selectFile() {
|
|
56
|
+
this.progress = 0, this.$refs.fileInput.click();
|
|
57
|
+
},
|
|
58
|
+
fileChange(n) {
|
|
59
|
+
const t = n.target.files;
|
|
60
|
+
if (t.length > 0) {
|
|
61
|
+
this.loadingPackage = !0;
|
|
62
|
+
let O = this;
|
|
63
|
+
const T = [...t].map((l) => {
|
|
64
|
+
const i = new FormData();
|
|
65
|
+
return i.append("package", l, l.name), v.post("/openc3-api/packages", {
|
|
66
|
+
data: i,
|
|
67
|
+
headers: { "Content-Type": "multipart/form-data" },
|
|
68
|
+
onUploadProgress: function(_) {
|
|
69
|
+
let u = Math.round(
|
|
70
|
+
_.loaded * 100 / _.total
|
|
71
|
+
);
|
|
72
|
+
O.progress = u;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
Promise.all(T).then((l) => {
|
|
77
|
+
this.progress = 100, this.alert = `Uploaded ${l.length} package${l.length > 1 ? "s" : ""}`, this.alertType = "success", this.showAlert = !0, this.loadingPackage = !1, this.files = [], setTimeout(() => {
|
|
78
|
+
this.showAlert = !1, this.updateProcesses();
|
|
79
|
+
}, 5e3), this.update();
|
|
80
|
+
}).catch((l) => {
|
|
81
|
+
this.loadingPackage = !1;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
deletePackage: function(n) {
|
|
86
|
+
this.$dialog.confirm(`Are you sure you want to remove: ${n}`, {
|
|
87
|
+
okText: "Delete",
|
|
88
|
+
cancelText: "Cancel"
|
|
89
|
+
}).then(function(t) {
|
|
90
|
+
return v.delete(`/openc3-api/packages/${n}`);
|
|
91
|
+
}).then((t) => {
|
|
92
|
+
this.alert = `Removed package ${n}`, this.alertType = "success", this.showAlert = !0, setTimeout(() => {
|
|
93
|
+
this.showAlert = !1;
|
|
94
|
+
}, 5e3), this.update();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}, J = ["textContent"], K = ["textContent"];
|
|
99
|
+
function Q(n, t, O, T, l, i) {
|
|
100
|
+
const _ = a("v-btn"), u = a("v-col"), A = a("rux-progress"), g = a("v-row"), S = a("v-alert"), k = a("v-list-item-title"), U = a("v-list-item-subtitle"), y = a("v-icon"), w = a("v-tooltip"), P = a("v-list-item"), x = a("v-divider"), V = a("v-list"), I = a("download-dialog"), F = a("simple-text-dialog");
|
|
101
|
+
return p(), d("div", null, [
|
|
102
|
+
o(g, {
|
|
103
|
+
"no-gutters": "",
|
|
104
|
+
align: "center",
|
|
105
|
+
class: "px-2"
|
|
106
|
+
}, {
|
|
107
|
+
default: e(() => [
|
|
108
|
+
o(u, { class: "pa-2 mt-2" }, {
|
|
109
|
+
default: e(() => [
|
|
110
|
+
o(_, { onClick: i.selectFile }, {
|
|
111
|
+
default: e(() => t[4] || (t[4] = [
|
|
112
|
+
r("Install Package")
|
|
113
|
+
])),
|
|
114
|
+
_: 1
|
|
115
|
+
}, 8, ["onClick"]),
|
|
116
|
+
c("input", {
|
|
117
|
+
style: { display: "none" },
|
|
118
|
+
type: "file",
|
|
119
|
+
ref: "fileInput",
|
|
120
|
+
onChange: t[0] || (t[0] = (...s) => i.fileChange && i.fileChange(...s))
|
|
121
|
+
}, null, 544)
|
|
122
|
+
]),
|
|
123
|
+
_: 1
|
|
124
|
+
}),
|
|
125
|
+
o(u, {
|
|
126
|
+
class: "ml-4 mr-2",
|
|
127
|
+
cols: "4"
|
|
128
|
+
}, {
|
|
129
|
+
default: e(() => [
|
|
130
|
+
o(A, { value: l.progress }, null, 8, ["value"])
|
|
131
|
+
]),
|
|
132
|
+
_: 1
|
|
133
|
+
})
|
|
134
|
+
]),
|
|
135
|
+
_: 1
|
|
136
|
+
}),
|
|
137
|
+
o(S, {
|
|
138
|
+
modelValue: l.showAlert,
|
|
139
|
+
"onUpdate:modelValue": t[1] || (t[1] = (s) => l.showAlert = s),
|
|
140
|
+
closable: "",
|
|
141
|
+
type: l.alertType
|
|
142
|
+
}, {
|
|
143
|
+
default: e(() => [
|
|
144
|
+
r(f(l.alert), 1)
|
|
145
|
+
]),
|
|
146
|
+
_: 1
|
|
147
|
+
}, 8, ["modelValue", "type"]),
|
|
148
|
+
Object.keys(l.processes).length > 0 ? (p(), N(V, {
|
|
149
|
+
key: 0,
|
|
150
|
+
class: "list",
|
|
151
|
+
"data-test": "process-list"
|
|
152
|
+
}, {
|
|
153
|
+
default: e(() => [
|
|
154
|
+
o(g, {
|
|
155
|
+
"no-gutters": "",
|
|
156
|
+
class: "px-4"
|
|
157
|
+
}, {
|
|
158
|
+
default: e(() => [
|
|
159
|
+
o(u, { class: "text-h6" }, {
|
|
160
|
+
default: e(() => t[5] || (t[5] = [
|
|
161
|
+
r("Process List")
|
|
162
|
+
])),
|
|
163
|
+
_: 1
|
|
164
|
+
}),
|
|
165
|
+
o(u, { align: "right" }, {
|
|
166
|
+
default: e(() => t[6] || (t[6] = [
|
|
167
|
+
c("div", null, "Showing last 10 min of activity", -1)
|
|
168
|
+
])),
|
|
169
|
+
_: 1
|
|
170
|
+
})
|
|
171
|
+
]),
|
|
172
|
+
_: 1
|
|
173
|
+
}),
|
|
174
|
+
(p(!0), d(C, null, D(l.processes, (s) => (p(), d("div", {
|
|
175
|
+
key: s.name
|
|
176
|
+
}, [
|
|
177
|
+
o(P, null, B({
|
|
178
|
+
default: e(() => [
|
|
179
|
+
o(k, null, {
|
|
180
|
+
default: e(() => [
|
|
181
|
+
c("span", {
|
|
182
|
+
class: M(s.state.toLowerCase()),
|
|
183
|
+
textContent: f(
|
|
184
|
+
`Processing ${s.process_type}: ${s.detail} - ${s.state}`
|
|
185
|
+
)
|
|
186
|
+
}, null, 10, J)
|
|
187
|
+
]),
|
|
188
|
+
_: 2
|
|
189
|
+
}, 1024),
|
|
190
|
+
o(U, null, {
|
|
191
|
+
default: e(() => [
|
|
192
|
+
c("span", {
|
|
193
|
+
textContent: f(" Updated At: " + i.formatDate(s.updated_at))
|
|
194
|
+
}, null, 8, K)
|
|
195
|
+
]),
|
|
196
|
+
_: 2
|
|
197
|
+
}, 1024)
|
|
198
|
+
]),
|
|
199
|
+
_: 2
|
|
200
|
+
}, [
|
|
201
|
+
s.state !== "Running" ? {
|
|
202
|
+
name: "append",
|
|
203
|
+
fn: e(() => [
|
|
204
|
+
o(w, { location: "bottom" }, {
|
|
205
|
+
activator: e(({ props: m }) => [
|
|
206
|
+
o(y, b({ ref_for: !0 }, m, {
|
|
207
|
+
onClick: (h) => i.showOutput(s)
|
|
208
|
+
}), {
|
|
209
|
+
default: e(() => t[7] || (t[7] = [
|
|
210
|
+
r(" mdi-eye ")
|
|
211
|
+
])),
|
|
212
|
+
_: 2
|
|
213
|
+
}, 1040, ["onClick"])
|
|
214
|
+
]),
|
|
215
|
+
default: e(() => [
|
|
216
|
+
t[8] || (t[8] = c("span", null, "Show Output", -1))
|
|
217
|
+
]),
|
|
218
|
+
_: 2
|
|
219
|
+
}, 1024)
|
|
220
|
+
]),
|
|
221
|
+
key: "0"
|
|
222
|
+
} : void 0
|
|
223
|
+
]), 1024),
|
|
224
|
+
o(x)
|
|
225
|
+
]))), 128))
|
|
226
|
+
]),
|
|
227
|
+
_: 1
|
|
228
|
+
})) : R("", !0),
|
|
229
|
+
o(V, {
|
|
230
|
+
class: "list",
|
|
231
|
+
"data-test": "packageList"
|
|
232
|
+
}, {
|
|
233
|
+
default: e(() => [
|
|
234
|
+
o(g, { class: "px-4" }, {
|
|
235
|
+
default: e(() => [
|
|
236
|
+
o(u, { class: "text-h6" }, {
|
|
237
|
+
default: e(() => t[9] || (t[9] = [
|
|
238
|
+
r("Ruby Gems")
|
|
239
|
+
])),
|
|
240
|
+
_: 1
|
|
241
|
+
})
|
|
242
|
+
]),
|
|
243
|
+
_: 1
|
|
244
|
+
}),
|
|
245
|
+
(p(!0), d(C, null, D(l.gems, (s, m) => (p(), d("div", { key: m }, [
|
|
246
|
+
o(P, null, {
|
|
247
|
+
append: e(() => [
|
|
248
|
+
o(w, { location: "bottom" }, {
|
|
249
|
+
activator: e(({ props: h }) => [
|
|
250
|
+
o(y, b({ ref_for: !0 }, h, {
|
|
251
|
+
onClick: (L) => i.deletePackage(s)
|
|
252
|
+
}), {
|
|
253
|
+
default: e(() => t[10] || (t[10] = [
|
|
254
|
+
r(" mdi-delete ")
|
|
255
|
+
])),
|
|
256
|
+
_: 2
|
|
257
|
+
}, 1040, ["onClick"])
|
|
258
|
+
]),
|
|
259
|
+
default: e(() => [
|
|
260
|
+
t[11] || (t[11] = c("span", null, "Delete Package", -1))
|
|
261
|
+
]),
|
|
262
|
+
_: 2
|
|
263
|
+
}, 1024)
|
|
264
|
+
]),
|
|
265
|
+
default: e(() => [
|
|
266
|
+
o(k, null, {
|
|
267
|
+
default: e(() => [
|
|
268
|
+
r(f(s), 1)
|
|
269
|
+
]),
|
|
270
|
+
_: 2
|
|
271
|
+
}, 1024)
|
|
272
|
+
]),
|
|
273
|
+
_: 2
|
|
274
|
+
}, 1024),
|
|
275
|
+
o(x)
|
|
276
|
+
]))), 128)),
|
|
277
|
+
o(g, { class: "px-4" }, {
|
|
278
|
+
default: e(() => [
|
|
279
|
+
o(u, { class: "text-h6" }, {
|
|
280
|
+
default: e(() => t[12] || (t[12] = [
|
|
281
|
+
r("Python Packages")
|
|
282
|
+
])),
|
|
283
|
+
_: 1
|
|
284
|
+
})
|
|
285
|
+
]),
|
|
286
|
+
_: 1
|
|
287
|
+
}),
|
|
288
|
+
(p(!0), d(C, null, D(l.python, (s, m) => (p(), d("div", { key: m }, [
|
|
289
|
+
o(P, null, {
|
|
290
|
+
append: e(() => [
|
|
291
|
+
o(w, { location: "bottom" }, {
|
|
292
|
+
activator: e(({ props: h }) => [
|
|
293
|
+
o(y, b({ ref_for: !0 }, h, {
|
|
294
|
+
onClick: (L) => i.deletePackage(s)
|
|
295
|
+
}), {
|
|
296
|
+
default: e(() => t[13] || (t[13] = [
|
|
297
|
+
r(" mdi-delete ")
|
|
298
|
+
])),
|
|
299
|
+
_: 2
|
|
300
|
+
}, 1040, ["onClick"])
|
|
301
|
+
]),
|
|
302
|
+
default: e(() => [
|
|
303
|
+
t[14] || (t[14] = c("span", null, "Delete Package", -1))
|
|
304
|
+
]),
|
|
305
|
+
_: 2
|
|
306
|
+
}, 1024)
|
|
307
|
+
]),
|
|
308
|
+
default: e(() => [
|
|
309
|
+
o(k, null, {
|
|
310
|
+
default: e(() => [
|
|
311
|
+
r(f(s), 1)
|
|
312
|
+
]),
|
|
313
|
+
_: 2
|
|
314
|
+
}, 1024)
|
|
315
|
+
]),
|
|
316
|
+
_: 2
|
|
317
|
+
}, 1024),
|
|
318
|
+
o(x)
|
|
319
|
+
]))), 128))
|
|
320
|
+
]),
|
|
321
|
+
_: 1
|
|
322
|
+
}),
|
|
323
|
+
o(I, {
|
|
324
|
+
modelValue: l.showDownloadDialog,
|
|
325
|
+
"onUpdate:modelValue": t[2] || (t[2] = (s) => l.showDownloadDialog = s)
|
|
326
|
+
}, null, 8, ["modelValue"]),
|
|
327
|
+
o(F, {
|
|
328
|
+
modelValue: l.showProcessOutput,
|
|
329
|
+
"onUpdate:modelValue": t[3] || (t[3] = (s) => l.showProcessOutput = s),
|
|
330
|
+
title: "Process Output",
|
|
331
|
+
text: l.processOutput
|
|
332
|
+
}, null, 8, ["modelValue", "text"])
|
|
333
|
+
]);
|
|
334
|
+
}
|
|
335
|
+
const et = /* @__PURE__ */ j(q, [["render", Q], ["__scopeId", "data-v-4acca623"]]);
|
|
336
|
+
export {
|
|
337
|
+
et as default
|
|
338
|
+
};
|
|
339
|
+
//# sourceMappingURL=PackagesTab-BwTViRcm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackagesTab-BwTViRcm.js","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n style=\"display: none\"\n type=\"file\"\n ref=\"fileInput\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-alert v-model=\"showAlert\" closable :type=\"alertType\">{{\n alert\n }}</v-alert>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\"\n ><v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-slot:append v-if=\"process.state !== 'Running'\">\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"showOutput(process)\">\n mdi-eye\n </v-icon>\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template v-slot:append>\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"deletePackage(gem)\">\n mdi-delete\n </v-icon>\n </template>\n <span>Delete Package</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template v-slot:append>\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"deletePackage(pkg)\">\n mdi-delete\n </v-icon>\n </template>\n <span>Delete Package</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 10000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.progress = 100\n this.alert = `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`\n this.alertType = 'success'\n this.showAlert = true\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage: function (pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then(function (dialog) {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.alert = `Removed package ${pkg}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_hoisted_1","_hoisted_2","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_rux_progress","$data","_component_v_alert","$event","_toDisplayString","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_component_v_list_item_subtitle","_component_v_tooltip","props","_component_v_icon","_mergeProps","_component_v_divider","_createCommentVNode","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DdL5xG80.cjs"),e=require("vue"),D=require("./CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs"),T=require("./SimpleTextDialog-D2R3WQXD.cjs"),b=require("./tools/admin.cjs"),w=require("./format-BDZ4AOJt.cjs"),B={components:{DownloadDialog:b.DownloadDialog,SimpleTextDialog:T.SimpleTextDialog},data(){return{showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",files:[],loadingPackage:!1,progress:0,gems:[],python:[],processes:{},alert:"",alertType:"success",showAlert:!1}},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(s){this.processOutput=s.output,this.showProcessOutput=!0},update(){u.nr.get("/openc3-api/packages").then(s=>{this.gems=s.data.ruby,this.python=s.data.python})},updateProcesses:function(){u.nr.get("/openc3-api/process_status/package_?substr=true").then(s=>{this.processes=s.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},1e4)})},formatDate(s){return w.format(w.toDate(parseInt(s)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},selectFile(){this.progress=0,this.$refs.fileInput.click()},fileChange(s){const t=s.target.files;if(t.length>0){this.loadingPackage=!0;let f=this;const x=[...t].map(l=>{const n=new FormData;return n.append("package",l,l.name),u.nr.post("/openc3-api/packages",{data:n,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(i){let a=Math.round(i.loaded*100/i.total);f.progress=a}})});Promise.all(x).then(l=>{this.progress=100,this.alert=`Uploaded ${l.length} package${l.length>1?"s":""}`,this.alertType="success",this.showAlert=!0,this.loadingPackage=!1,this.files=[],setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3),this.update()}).catch(l=>{this.loadingPackage=!1})}},deletePackage:function(s){this.$dialog.confirm(`Are you sure you want to remove: ${s}`,{okText:"Delete",cancelText:"Cancel"}).then(function(t){return u.nr.delete(`/openc3-api/packages/${s}`)}).then(t=>{this.alert=`Removed package ${s}`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update()})}}},S=["textContent"],E=["textContent"];function O(s,t,f,x,l,n){const i=e.resolveComponent("v-btn"),a=e.resolveComponent("v-col"),v=e.resolveComponent("rux-progress"),d=e.resolveComponent("v-row"),V=e.resolveComponent("v-alert"),p=e.resolveComponent("v-list-item-title"),k=e.resolveComponent("v-list-item-subtitle"),m=e.resolveComponent("v-icon"),_=e.resolveComponent("v-tooltip"),g=e.resolveComponent("v-list-item"),h=e.resolveComponent("v-divider"),C=e.resolveComponent("v-list"),N=e.resolveComponent("download-dialog"),y=e.resolveComponent("simple-text-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(d,{"no-gutters":"",align:"center",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"pa-2 mt-2"},{default:e.withCtx(()=>[e.createVNode(i,{onClick:n.selectFile},{default:e.withCtx(()=>t[4]||(t[4]=[e.createTextVNode("Install Package")])),_:1},8,["onClick"]),e.createElementVNode("input",{style:{display:"none"},type:"file",ref:"fileInput",onChange:t[0]||(t[0]=(...o)=>n.fileChange&&n.fileChange(...o))},null,544)]),_:1}),e.createVNode(a,{class:"ml-4 mr-2",cols:"4"},{default:e.withCtx(()=>[e.createVNode(v,{value:l.progress},null,8,["value"])]),_:1})]),_:1}),e.createVNode(V,{modelValue:l.showAlert,"onUpdate:modelValue":t[1]||(t[1]=o=>l.showAlert=o),closable:"",type:l.alertType},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.alert),1)]),_:1},8,["modelValue","type"]),Object.keys(l.processes).length>0?(e.openBlock(),e.createBlock(C,{key:0,class:"list","data-test":"process-list"},{default:e.withCtx(()=>[e.createVNode(d,{"no-gutters":"",class:"px-4"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-h6"},{default:e.withCtx(()=>t[5]||(t[5]=[e.createTextVNode("Process List")])),_:1}),e.createVNode(a,{align:"right"},{default:e.withCtx(()=>t[6]||(t[6]=[e.createElementVNode("div",null,"Showing last 10 min of activity",-1)])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.processes,o=>(e.openBlock(),e.createElementBlock("div",{key:o.name},[e.createVNode(g,null,e.createSlots({default:e.withCtx(()=>[e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(o.state.toLowerCase()),textContent:e.toDisplayString(`Processing ${o.process_type}: ${o.detail} - ${o.state}`)},null,10,S)]),_:2},1024),e.createVNode(k,null,{default:e.withCtx(()=>[e.createElementVNode("span",{textContent:e.toDisplayString(" Updated At: "+n.formatDate(o.updated_at))},null,8,E)]),_:2},1024)]),_:2},[o.state!=="Running"?{name:"append",fn:e.withCtx(()=>[e.createVNode(_,{location:"bottom"},{activator:e.withCtx(({props:r})=>[e.createVNode(m,e.mergeProps({ref_for:!0},r,{onClick:c=>n.showOutput(o)}),{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode(" mdi-eye ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[8]||(t[8]=e.createElementVNode("span",null,"Show Output",-1))]),_:2},1024)]),key:"0"}:void 0]),1024),e.createVNode(h)]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(C,{class:"list","data-test":"packageList"},{default:e.withCtx(()=>[e.createVNode(d,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-h6"},{default:e.withCtx(()=>t[9]||(t[9]=[e.createTextVNode("Ruby Gems")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.gems,(o,r)=>(e.openBlock(),e.createElementBlock("div",{key:r},[e.createVNode(g,null,{append:e.withCtx(()=>[e.createVNode(_,{location:"bottom"},{activator:e.withCtx(({props:c})=>[e.createVNode(m,e.mergeProps({ref_for:!0},c,{onClick:P=>n.deletePackage(o)}),{default:e.withCtx(()=>t[10]||(t[10]=[e.createTextVNode(" mdi-delete ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[11]||(t[11]=e.createElementVNode("span",null,"Delete Package",-1))]),_:2},1024)]),default:e.withCtx(()=>[e.createVNode(p,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(h)]))),128)),e.createVNode(d,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-h6"},{default:e.withCtx(()=>t[12]||(t[12]=[e.createTextVNode("Python Packages")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.python,(o,r)=>(e.openBlock(),e.createElementBlock("div",{key:r},[e.createVNode(g,null,{append:e.withCtx(()=>[e.createVNode(_,{location:"bottom"},{activator:e.withCtx(({props:c})=>[e.createVNode(m,e.mergeProps({ref_for:!0},c,{onClick:P=>n.deletePackage(o)}),{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" mdi-delete ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[14]||(t[14]=e.createElementVNode("span",null,"Delete Package",-1))]),_:2},1024)]),default:e.withCtx(()=>[e.createVNode(p,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(h)]))),128))]),_:1}),e.createVNode(N,{modelValue:l.showDownloadDialog,"onUpdate:modelValue":t[2]||(t[2]=o=>l.showDownloadDialog=o)},null,8,["modelValue"]),e.createVNode(y,{modelValue:l.showProcessOutput,"onUpdate:modelValue":t[3]||(t[3]=o=>l.showProcessOutput=o),title:"Process Output",text:l.processOutput},null,8,["modelValue","text"])])}const A=D._export_sfc(B,[["render",O],["__scopeId","data-v-4acca623"]]);exports.default=A;
|
|
2
|
+
//# sourceMappingURL=PackagesTab-DPaJ_JbE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackagesTab-DPaJ_JbE.cjs","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n style=\"display: none\"\n type=\"file\"\n ref=\"fileInput\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-alert v-model=\"showAlert\" closable :type=\"alertType\">{{\n alert\n }}</v-alert>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\"\n ><v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-slot:append v-if=\"process.state !== 'Running'\">\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"showOutput(process)\">\n mdi-eye\n </v-icon>\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template v-slot:append>\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"deletePackage(gem)\">\n mdi-delete\n </v-icon>\n </template>\n <span>Delete Package</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template v-slot:append>\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"deletePackage(pkg)\">\n mdi-delete\n </v-icon>\n </template>\n <span>Delete Package</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 10000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.progress = 100\n this.alert = `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`\n this.alertType = 'success'\n this.showAlert = true\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage: function (pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then(function (dialog) {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.alert = `Removed package ${pkg}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_hoisted_1","_hoisted_2","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_rux_progress","$data","_component_v_alert","$event","_toDisplayString","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_component_v_list_item_subtitle","_component_v_tooltip","props","_component_v_icon","_mergeProps","_component_v_divider","_createCommentVNode","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DdL5xG80.cjs"),e=require("vue"),E=require("./CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs"),S=require("./SimpleTextDialog-D2R3WQXD.cjs"),N=require("./tools/admin.cjs"),P=require("./format-BDZ4AOJt.cjs"),A={components:{PluginDialog:N.PluginDialog,ModifiedPluginDialog:N.ModifiedPluginDialog,SimpleTextDialog:S.SimpleTextDialog},data(){return{file:null,currentPlugin:null,plugins:[],targets:[],processes:{},alert:"",alertType:"success",showAlert:!1,pluginName:null,variables:{},pluginTxt:"",pluginHashTmp:null,existingPluginTxt:null,showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",showPluginDialog:!1,showModifiedPluginDialog:!1,showDefaultTools:!1,progress:0,pluginDelete:!1,defaultPlugins:["openc3-cosmos-tool-admin","openc3-cosmos-tool-bucketexplorer","openc3-cosmos-tool-cmdsender","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-enterprise-tool-base","openc3-tool-base"]}},watch:{showPluginDialog:function(l,t){l===!1&&(this.file=null,this.$refs.fileInput.value=null)}},computed:{shownPlugins(){let l=[];for(let t of this.plugins){let r=t.split("__")[0].split("-");r=r.slice(0,-1);let o=r.join("-");(!this.defaultPlugins.includes(o)||this.showDefaultTools)&&l.push(t)}return l},pluginTargets(){return l=>{let t=[];for(const s in this.targets)this.targets[s].plugin===l&&t.push(this.targets[s]);return t}},isModified(){return l=>{let t=!1;for(const s in this.targets)if(this.targets[s].plugin===l&&this.targets[s].modified===!0){t=!0;break}return t}}},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(l){this.processOutput=l.output,this.showProcessOutput=!0},update:function(){c.nr.get("/openc3-api/plugins").then(l=>{this.plugins=l.data}),c.nr.get("/openc3-api/targets_modified").then(l=>{this.targets=l.data})},updateProcesses:function(){c.nr.get("openc3-api/process_status/plugin_?substr=true").then(l=>{this.processes=l.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},5e3)})},formatDate(l){return P.format(P.toDate(parseInt(l)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},upload:function(l=null){const t=l?"put":"post",s=l?`/openc3-api/plugins/${l}`:"/openc3-api/plugins",r=new FormData;r.append("plugin",this.file,this.file.name);let o=this;c.nr[t](s,{data:r,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(a){let d=Math.round(a.loaded*100/a.total);o.progress=d}}).then(a=>{this.progress=100,this.alert="Uploaded file",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update();let d=null;a.data.existing_plugin_txt_lines!==void 0&&(d=a.data.existing_plugin_txt_lines.join(`
|
|
2
|
+
`));let p=a.data.plugin_txt_lines.join(`
|
|
3
|
+
`);this.pluginName=a.data.name,this.variables=a.data.variables,this.pluginTxt=p,this.existingPluginTxt=d,this.showPluginDialog=!0,this.file=void 0}).catch(a=>{this.currentPlugin=null,this.file=void 0})},pluginCallback:function(l){this.showPluginDialog=!1,this.currentPlugin!==null&&(l.name=this.currentPlugin),this.pluginHashTmp=l,this.isModified(this.currentPlugin)?(this.pluginDelete=!1,this.showModifiedPluginDialog=!0):this.pluginInstall()},modifiedSubmit:async function(l){if(l===!0)for(let t of this.pluginTargets(this.currentPlugin))t.modified==!0&&await c.nr.post(`/openc3-api/targets/${t.name}/delete_modified`);this.pluginDelete?this.deletePlugin(this.currentPlugin):this.pluginInstall()},pluginInstall:function(){c.nr.post(`/openc3-api/plugins/install/${this.pluginName}`,{data:{plugin_hash:JSON.stringify(this.pluginHashTmp)}}).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,setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3),this.update()})},downloadTarget:function(l){c.nr.post(`/openc3-api/targets/${l}/download`).then(t=>{const s=window.atob(t.data.contents),r=new Uint8Array(s.length);for(let a=0;a<s.length;++a)r[a]=s.charCodeAt(a);const o=new Blob([r],{type:"application/zip"}),n=document.createElement("a");n.href=URL.createObjectURL(o),n.setAttribute("download",t.data.filename),n.click()})},downloadPlugin:function(l){c.nr.post(`/openc3-api/packages/${l}/download`).then(t=>{const s=window.atob(t.data.contents),r=new Uint8Array(s.length);for(let a=0;a<s.length;++a)r[a]=s.charCodeAt(a);const o=new Blob([r],{type:"application/zip"}),n=document.createElement("a");n.href=URL.createObjectURL(o),n.setAttribute("download",t.data.filename),n.click()})},editPlugin:function(l){c.nr.get(`/openc3-api/plugins/${l}`).then(t=>{let s=null;t.data.existing_plugin_txt_lines!==void 0&&(s=t.data.existing_plugin_txt_lines.join(`
|
|
4
|
+
`));let r=t.data.plugin_txt_lines.join(`
|
|
5
|
+
`);this.pluginName=t.data.name,this.variables=t.data.variables,this.pluginTxt=r,this.existingPluginTxt=s,this.showPluginDialog=!0})},deletePrompt:function(l){this.$dialog.confirm(`Are you sure you want to remove: ${l}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{this.isModified(l)?(this.currentPlugin=l,this.pluginDelete=!0,this.showModifiedPluginDialog=!0):this.deletePlugin(l)})},deletePlugin:function(l){this.alert=`Removing plugin ${l} ...`,this.alertType="success",this.showAlert=!0,c.nr.delete(`/openc3-api/plugins/${l}`).then(t=>{setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3)}),this.update()},upgradePlugin(l){this.file=null,this.currentPlugin=l,this.progress=0,this.$refs.fileInput.click()},selectFile(){this.file=null,this.currentPlugin=null,this.progress=0,this.$refs.fileInput.click()},fileChange(l){const t=l.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(s=>{});else{let s=this.file.name.split("-"),r=s.findIndex(a=>a.includes(".")),o=s.slice(0,r).join("-");s=this.currentPlugin.split("-"),r=s.findIndex(a=>a.includes("."));let n=s.slice(0,r).join("-");o!==n?this.$dialog.confirm(`The new gem base name ${o} doesn't match the existing ${n}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}):this.upload(this.currentPlugin)}else this.upload();else this.$refs.fileInput.value=null}}},O=["textContent"],I=["textContent"],M={key:0},U={key:0},j=["onClick"],L={key:1},F={class:"mx-3"},R={class:"mx-3"},q={class:"mx-3"},H={class:"mx-3"};function z(l,t,s,r,o,n){const a=e.resolveComponent("v-btn"),d=e.resolveComponent("v-icon"),p=e.resolveComponent("v-col"),k=e.resolveComponent("rux-progress"),f=e.resolveComponent("v-row"),V=e.resolveComponent("v-checkbox"),x=e.resolveComponent("v-divider"),T=e.resolveComponent("v-alert"),_=e.resolveComponent("v-list-item-title"),w=e.resolveComponent("v-list-item-subtitle"),b=e.resolveComponent("v-progress-circular"),g=e.resolveComponent("v-tooltip"),C=e.resolveComponent("v-list-item"),v=e.resolveComponent("v-list"),y=e.resolveComponent("plugin-dialog"),D=e.resolveComponent("modified-plugin-dialog"),B=e.resolveComponent("simple-text-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(f,{"no-gutters":"",align:"center",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,{class:"pa-2 mt-2"},{default:e.withCtx(()=>[e.createVNode(a,{onClick:n.selectFile},{default:e.withCtx(()=>t[6]||(t[6]=[e.createTextVNode("Install New Plugin")])),_:1},8,["onClick"]),e.createElementVNode("input",{style:{display:"none"},type:"file",ref:"fileInput",onChange:t[0]||(t[0]=(...i)=>n.fileChange&&n.fileChange(...i))},null,544),t[8]||(t[8]=e.createTextVNode(" Note: Use ")),e.createVNode(d,null,{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode("mdi-update")])),_:1}),t[9]||(t[9]=e.createTextVNode(" to upgrade existing plugins "))]),_:1}),e.createVNode(p,{class:"ml-4 mr-2",cols:"4"},{default:e.withCtx(()=>[e.createVNode(k,{value:o.progress},null,8,["value"])]),_:1})]),_:1}),e.createVNode(f,{"no-gutters":"",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,null,{default:e.withCtx(()=>[e.createVNode(V,{modelValue:o.showDefaultTools,"onUpdate:modelValue":t[1]||(t[1]=i=>o.showDefaultTools=i),label:"Show Default Tools",class:"mt-0","data-test":"show-default-tools"},null,8,["modelValue"])]),_:1}),e.createVNode(p,{align:"right",class:"mr-2"},{default:e.withCtx(()=>t[10]||(t[10]=[e.createElementVNode("div",null,"* indicates a modified plugin",-1),e.createElementVNode("div",null,"Click target link to download modifications",-1)])),_:1})]),_:1}),e.createVNode(x),e.createVNode(T,{closable:"",type:o.alertType,modelValue:o.showAlert,"onUpdate:modelValue":t[2]||(t[2]=i=>o.showAlert=i),"data-test":"plugin-alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.alert),1)]),_:1},8,["type","modelValue"]),Object.keys(o.processes).length>0?(e.openBlock(),e.createBlock(v,{key:0,class:"list","data-test":"process-list"},{default:e.withCtx(()=>[e.createVNode(f,{"no-gutters":"",class:"px-4"},{default:e.withCtx(()=>[e.createVNode(p,{class:"text-h6"},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode("Process List")])),_:1}),e.createVNode(p,{align:"right"},{default:e.withCtx(()=>t[12]||(t[12]=[e.createElementVNode("div",null,"Showing last 10 min of activity",-1)])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.processes,i=>(e.openBlock(),e.createElementBlock("div",{key:i.name},[e.createVNode(C,null,{append:e.withCtx(()=>[i.state==="Running"?(e.openBlock(),e.createElementBlock("div",M,[e.createVNode(b,{indeterminate:"",color:"primary"})])):(e.openBlock(),e.createBlock(g,{key:1,location:"bottom"},{activator:e.withCtx(({props:m})=>[e.createVNode(d,e.mergeProps({ref_for:!0},m,{onClick:u=>n.showOutput(i),"data-test":"show-output"}),{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" mdi-eye ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[14]||(t[14]=e.createElementVNode("span",null,"Show Output",-1))]),_:2},1024))]),default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(i.state.toLowerCase()),textContent:e.toDisplayString(`Processing ${i.process_type}: ${i.detail} - ${i.state}`)},null,10,O)]),_:2},1024),e.createVNode(w,null,{default:e.withCtx(()=>[e.createElementVNode("span",{textContent:e.toDisplayString(" Updated At: "+n.formatDate(i.updated_at))},null,8,I)]),_:2},1024)]),_:2},1024),e.createVNode(x)]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(v,{class:"list","data-test":"plugin-list"},{default:e.withCtx(()=>[e.createVNode(f,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(p,{class:"text-h6"},{default:e.withCtx(()=>t[15]||(t[15]=[e.createTextVNode("Plugin List")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.shownPlugins,(i,m)=>(e.openBlock(),e.createElementBlock("div",{key:m},[e.createVNode(C,null,{append:e.withCtx(()=>[e.createElementVNode("div",F,[e.createVNode(g,{location:"bottom"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>n.downloadPlugin(i),"data-test":"download-plugin"}),{default:e.withCtx(()=>t[16]||(t[16]=[e.createTextVNode(" mdi-download ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[17]||(t[17]=e.createElementVNode("span",null,"Download Plugin",-1))]),_:2},1024)]),e.createElementVNode("div",R,[e.createVNode(g,{location:"bottom"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>n.editPlugin(i),"data-test":"edit-plugin"}),{default:e.withCtx(()=>t[18]||(t[18]=[e.createTextVNode(" mdi-pencil ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[19]||(t[19]=e.createElementVNode("span",null,"Edit Plugin Details",-1))]),_:2},1024)]),e.createElementVNode("div",q,[e.createVNode(g,{location:"bottom"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>n.upgradePlugin(i),"data-test":"upgrade-plugin"}),{default:e.withCtx(()=>t[20]||(t[20]=[e.createTextVNode(" mdi-update ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[21]||(t[21]=e.createElementVNode("span",null,"Upgrade Plugin",-1))]),_:2},1024)]),e.createElementVNode("div",H,[e.createVNode(g,{location:"bottom"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>n.deletePrompt(i),"data-test":"delete-plugin"}),{default:e.withCtx(()=>t[22]||(t[22]=[e.createTextVNode(" mdi-delete ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[23]||(t[23]=e.createElementVNode("span",null,"Delete Plugin",-1))]),_:2},1024)])]),default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[n.isModified(i)?(e.openBlock(),e.createElementBlock("span",U,"* ")):e.createCommentVNode("",!0),e.createTextVNode(e.toDisplayString(i),1)]),_:2},1024),n.pluginTargets(i).length!==0?(e.openBlock(),e.createBlock(w,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.pluginTargets(i),(u,h)=>(e.openBlock(),e.createElementBlock("span",{key:h,class:"mr-2"},[u.modified?(e.openBlock(),e.createElementBlock("a",{key:0,onClick:e.withModifiers(G=>n.downloadTarget(u.name),["prevent"])},e.toDisplayString(u.name),9,j)):(e.openBlock(),e.createElementBlock("span",L,e.toDisplayString(u.name),1))]))),128))]),_:2},1024)):e.createCommentVNode("",!0)]),_:2},1024),m<o.plugins.length-1?(e.openBlock(),e.createBlock(x,{key:m})):e.createCommentVNode("",!0)]))),128))]),_:1}),o.showPluginDialog?(e.openBlock(),e.createBlock(y,{key:1,modelValue:o.showPluginDialog,"onUpdate:modelValue":t[3]||(t[3]=i=>o.showPluginDialog=i),pluginName:o.pluginName,variables:o.variables,pluginTxt:o.pluginTxt,existingPluginTxt:o.existingPluginTxt,onCallback:n.pluginCallback},null,8,["modelValue","pluginName","variables","pluginTxt","existingPluginTxt","onCallback"])):e.createCommentVNode("",!0),o.showModifiedPluginDialog?(e.openBlock(),e.createBlock(D,{key:2,modelValue:o.showModifiedPluginDialog,"onUpdate:modelValue":t[4]||(t[4]=i=>o.showModifiedPluginDialog=i),pluginName:o.currentPlugin,targets:n.pluginTargets(o.currentPlugin),pluginDelete:o.pluginDelete,onSubmit:n.modifiedSubmit},null,8,["modelValue","pluginName","targets","pluginDelete","onSubmit"])):e.createCommentVNode("",!0),e.createVNode(B,{modelValue:o.showProcessOutput,"onUpdate:modelValue":t[5]||(t[5]=i=>o.showProcessOutput=i),title:"Process Output",text:o.processOutput},null,8,["modelValue","text"])])}const J=E._export_sfc(A,[["render",z],["__scopeId","data-v-96b87348"]]);exports.default=J;
|
|
6
|
+
//# sourceMappingURL=PluginsTab-C7GizpA1.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginsTab-C7GizpA1.cjs","sources":["../src/tools/admin/tabs/PluginsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install New Plugin</v-btn>\n <input\n style=\"display: none\"\n type=\"file\"\n ref=\"fileInput\"\n @change=\"fileChange\"\n />\n Note: Use <v-icon>mdi-update</v-icon> to upgrade existing plugins\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-row no-gutters class=\"px-2\">\n <v-col>\n <v-checkbox\n v-model=\"showDefaultTools\"\n label=\"Show Default Tools\"\n class=\"mt-0\"\n data-test=\"show-default-tools\"\n />\n </v-col>\n <v-col align=\"right\" class=\"mr-2\">\n <div>* indicates a modified plugin</div>\n <div>Click target link to download modifications</div>\n </v-col>\n </v-row>\n <v-divider />\n <!-- TODO This alert shows both success and failure. Make consistent with rest of OpenC3. -->\n <v-alert\n closable\n :type=\"alertType\"\n v-model=\"showAlert\"\n data-test=\"plugin-alert\"\n >{{ alert }}</v-alert\n >\n <v-list\n class=\"list\"\n v-if=\"Object.keys(processes).length > 0\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\"\n ><v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\"\n /></v-list-item-subtitle>\n\n <template v-slot:append>\n <div v-if=\"process.state === 'Running'\">\n <v-progress-circular indeterminate color=\"primary\" />\n </div>\n <v-tooltip v-else location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"showOutput(process)\"\n data-test=\"show-output\"\n >\n mdi-eye\n </v-icon>\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"plugin-list\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Plugin List</v-col></v-row>\n <div v-for=\"(plugin, index) in shownPlugins\" :key=\"index\">\n <v-list-item>\n <v-list-item-title\n ><span v-if=\"isModified(plugin)\">* </span\n >{{ plugin }}</v-list-item-title\n >\n <v-list-item-subtitle v-if=\"pluginTargets(plugin).length !== 0\">\n <span\n v-for=\"(target, index) in pluginTargets(plugin)\"\n :key=\"index\"\n class=\"mr-2\"\n >\n <a\n v-if=\"target.modified\"\n @click.prevent=\"downloadTarget(target.name)\"\n >{{ target.name }}\n </a>\n <span v-else>{{ target.name }} </span>\n </span>\n </v-list-item-subtitle>\n\n <template v-slot:append>\n <div class=\"mx-3\">\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"downloadPlugin(plugin)\"\n data-test=\"download-plugin\"\n >\n mdi-download\n </v-icon>\n </template>\n <span>Download Plugin</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"editPlugin(plugin)\"\n data-test=\"edit-plugin\"\n >\n mdi-pencil\n </v-icon>\n </template>\n <span>Edit Plugin Details</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"upgradePlugin(plugin)\"\n data-test=\"upgrade-plugin\"\n >\n mdi-update\n </v-icon>\n </template>\n <span>Upgrade Plugin</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"bottom\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"deletePrompt(plugin)\"\n data-test=\"delete-plugin\"\n >\n mdi-delete\n </v-icon>\n </template>\n <span>Delete Plugin</span>\n </v-tooltip>\n </div>\n </template>\n </v-list-item>\n <v-divider v-if=\"index < plugins.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n <plugin-dialog\n v-if=\"showPluginDialog\"\n v-model=\"showPluginDialog\"\n :pluginName=\"pluginName\"\n :variables=\"variables\"\n :pluginTxt=\"pluginTxt\"\n :existingPluginTxt=\"existingPluginTxt\"\n @callback=\"pluginCallback\"\n />\n <modified-plugin-dialog\n v-if=\"showModifiedPluginDialog\"\n v-model=\"showModifiedPluginDialog\"\n :pluginName=\"currentPlugin\"\n :targets=\"pluginTargets(currentPlugin)\"\n :pluginDelete=\"pluginDelete\"\n @submit=\"modifiedSubmit\"\n />\n <!-- <download-dialog v-model=\"showDownloadDialog\" /> -->\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { ModifiedPluginDialog, PluginDialog } from '@/tools/admin'\n\nexport default {\n components: {\n PluginDialog,\n ModifiedPluginDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n file: null,\n currentPlugin: null,\n plugins: [],\n targets: [],\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n pluginName: null,\n variables: {},\n pluginTxt: '',\n pluginHashTmp: null,\n existingPluginTxt: null,\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n showPluginDialog: false,\n showModifiedPluginDialog: false,\n showDefaultTools: false,\n progress: 0,\n pluginDelete: false,\n // When updating update local_mode.rb, local_mode.py, plugins.spec.ts\n defaultPlugins: [\n 'openc3-cosmos-tool-admin',\n 'openc3-cosmos-tool-bucketexplorer',\n 'openc3-cosmos-tool-cmdsender',\n 'openc3-cosmos-tool-cmdhistory', // Enterprise only\n 'openc3-cosmos-tool-cmdtlmserver',\n 'openc3-cosmos-tool-dataextractor',\n 'openc3-cosmos-tool-dataviewer',\n 'openc3-cosmos-tool-docs',\n 'openc3-cosmos-tool-handbooks',\n 'openc3-cosmos-tool-iframe',\n 'openc3-cosmos-tool-limitsmonitor',\n 'openc3-cosmos-tool-packetviewer',\n 'openc3-cosmos-tool-scriptrunner',\n 'openc3-cosmos-tool-tablemanager',\n 'openc3-cosmos-tool-tlmgrapher',\n 'openc3-cosmos-tool-tlmviewer',\n 'openc3-cosmos-enterprise-tool-admin', // Enterprise only\n 'openc3-cosmos-tool-autonomic', // Enterprise only\n 'openc3-cosmos-tool-calendar', // Enterprise only\n 'openc3-cosmos-tool-grafana', // Enterprise only\n 'openc3-enterprise-tool-base', // Enterprise only\n 'openc3-tool-base',\n ],\n }\n },\n watch: {\n // watcher to reset the file input when the dialog is closed\n showPluginDialog: function (newValue, oldValue) {\n if (newValue === false) {\n this.file = null\n this.$refs.fileInput.value = null\n }\n },\n },\n computed: {\n shownPlugins() {\n let result = []\n for (let plugin of this.plugins) {\n let pluginNameFirst = plugin.split('__')[0]\n let pluginNameSplit = pluginNameFirst.split('-')\n pluginNameSplit = pluginNameSplit.slice(0, -1)\n let pluginName = pluginNameSplit.join('-')\n if (\n !this.defaultPlugins.includes(pluginName) ||\n this.showDefaultTools\n ) {\n result.push(plugin)\n }\n }\n return result\n },\n pluginTargets() {\n return (plugin) => {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n }\n },\n isModified() {\n return (plugin) => {\n let result = false\n for (const target in this.targets) {\n if (\n this.targets[target]['plugin'] === plugin &&\n this.targets[target]['modified'] === true\n ) {\n result = true\n break\n }\n }\n return result\n }\n },\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update: function () {\n Api.get('/openc3-api/plugins').then((response) => {\n this.plugins = response.data\n })\n Api.get('/openc3-api/targets_modified').then((response) => {\n this.targets = response.data\n })\n },\n updateProcesses: function () {\n Api.get('openc3-api/process_status/plugin_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 5000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n upload: function (existing = null) {\n const method = existing ? 'put' : 'post'\n const path = existing\n ? `/openc3-api/plugins/${existing}`\n : '/openc3-api/plugins'\n const formData = new FormData()\n formData.append('plugin', this.file, this.file.name)\n let self = this\n const promise = Api[method](path, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n promise\n .then((response) => {\n this.progress = 100\n this.alert = 'Uploaded file'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt =\n response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n this.file = undefined\n })\n .catch((error) => {\n this.currentPlugin = null\n this.file = undefined\n })\n },\n pluginCallback: function (pluginHash) {\n this.showPluginDialog = false\n if (this.currentPlugin !== null) {\n pluginHash['name'] = this.currentPlugin\n }\n this.pluginHashTmp = pluginHash\n if (this.isModified(this.currentPlugin)) {\n this.pluginDelete = false\n this.showModifiedPluginDialog = true\n } else {\n this.pluginInstall()\n }\n },\n modifiedSubmit: async function (deleteModified) {\n if (deleteModified === true) {\n for (let target of this.pluginTargets(this.currentPlugin)) {\n if (target.modified == true) {\n await Api.post(`/openc3-api/targets/${target.name}/delete_modified`)\n }\n }\n }\n if (this.pluginDelete) {\n this.deletePlugin(this.currentPlugin)\n } else {\n this.pluginInstall()\n }\n },\n pluginInstall: function () {\n Api.post(`/openc3-api/plugins/install/${this.pluginName}`, {\n data: {\n plugin_hash: JSON.stringify(this.pluginHashTmp),\n },\n }).then((response) => {\n this.alert = `Started installing plugin ${this.pluginName} ...`\n this.alertType = 'success'\n this.showAlert = true\n this.currentPlugin = null\n this.file = undefined\n this.variables = {}\n this.pluginTxt = ''\n this.existingPluginTxt = null\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n },\n downloadTarget: function (name) {\n Api.post(`/openc3-api/targets/${name}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadPlugin: function (plugin) {\n Api.post(`/openc3-api/packages/${plugin}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n editPlugin: function (plugin) {\n Api.get(`/openc3-api/plugins/${plugin}`).then((response) => {\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt = response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n })\n },\n deletePrompt: function (plugin) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${plugin}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.isModified(plugin)) {\n this.currentPlugin = plugin\n this.pluginDelete = true\n this.showModifiedPluginDialog = true\n } else {\n this.deletePlugin(plugin)\n }\n })\n },\n deletePlugin: function (plugin) {\n this.alert = `Removing plugin ${plugin} ...`\n this.alertType = 'success'\n this.showAlert = true\n Api.delete(`/openc3-api/plugins/${plugin}`).then((response) => {\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n })\n this.update()\n },\n upgradePlugin(plugin) {\n this.file = null\n this.currentPlugin = plugin\n this.progress = 0\n this.$refs.fileInput.click()\n },\n selectFile() {\n this.file = null\n this.currentPlugin = null\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.file = files[0]\n if (this.currentPlugin !== null) {\n if (\n this.file.name.split('.gem')[0] ==\n this.currentPlugin.split('.gem')[0]\n ) {\n this.$dialog\n .confirm(\n `The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n .catch((error) => {\n // do nothing\n })\n } else {\n // Split up the gem name to determine if this is an upgrade\n // or mistakenly trying to install a different gem\n // Gems are named like openc3-cosmos-demo-5.3.2.gem or\n // openc3-cosmos-pw-test-1.0.0.20230213074527.gem\n // So split on - and match everything until the first .\n let parts = this.file.name.split('-')\n let i = parts.findIndex((x) => x.includes('.'))\n let newName = parts.slice(0, i).join('-')\n parts = this.currentPlugin.split('-')\n i = parts.findIndex((x) => x.includes('.'))\n let existingName = parts.slice(0, i).join('-')\n if (newName !== existingName) {\n this.$dialog\n .confirm(\n `The new gem base name ${newName} doesn't match the existing ${existingName}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n } else {\n this.upload(this.currentPlugin)\n }\n }\n } else {\n this.upload()\n }\n } else {\n // Reset the input element\n this.$refs.fileInput.value = null\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.crashed {\n color: red;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","PluginDialog","ModifiedPluginDialog","SimpleTextDialog","newValue","oldValue","result","plugin","pluginNameSplit","pluginName","target","process","Api","response","nanoSecs","format","toDate","existing","method","path","formData","self","progressEvent","percentCompleted","existingPluginTxt","pluginTxt","error","pluginHash","deleteModified","name","decodedData","uInt8Array","i","blob","link","dialog","event","files","parts","x","newName","existingName","_hoisted_1","_hoisted_2","_hoisted_5","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_v_icon","_component_rux_progress","$data","_component_v_checkbox","$event","_component_v_divider","_component_v_alert","_toDisplayString","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_hoisted_3","_component_v_progress_circular","_component_v_tooltip","props","_mergeProps","_component_v_list_item_title","_normalizeClass","_component_v_list_item_subtitle","_createCommentVNode","index","_hoisted_4","_withModifiers","_hoisted_6","_component_plugin_dialog","_component_modified_plugin_dialog","_component_simple_text_dialog"],"mappings":"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"}
|