@openc3/vue-common 6.6.0 → 6.8.0
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/dist/{ArrayWidget-Bb_Ldxq7.cjs → ArrayWidget-DaONH8Iv.cjs} +2 -2
- package/dist/{ArrayWidget-Bb_Ldxq7.cjs.map → ArrayWidget-DaONH8Iv.cjs.map} +1 -1
- package/dist/{ArrayWidget-Ck6pzAyW.js → ArrayWidget-j3ncPuPx.js} +4 -4
- package/dist/{ArrayWidget-Ck6pzAyW.js.map → ArrayWidget-j3ncPuPx.js.map} +1 -1
- package/dist/ArrayplotWidget-DPMVlst7.cjs +2 -0
- package/dist/ArrayplotWidget-DPMVlst7.cjs.map +1 -0
- package/dist/{ArrayplotWidget-ntRLh6-B.js → ArrayplotWidget-DuLaiGa9.js} +22 -22
- package/dist/ArrayplotWidget-DuLaiGa9.js.map +1 -0
- package/dist/{BarColumn-Bgz2YJ59.js → BarColumn-BWJ0Dd4O.js} +3 -3
- package/dist/{BarColumn-Bgz2YJ59.js.map → BarColumn-BWJ0Dd4O.js.map} +1 -1
- package/dist/{BarColumn-DtRNuOpa.cjs → BarColumn-CchXr_ex.cjs} +2 -2
- package/dist/{BarColumn-DtRNuOpa.cjs.map → BarColumn-CchXr_ex.cjs.map} +1 -1
- package/dist/{BlockWidget-DGH3Zz5p.js → BlockWidget-Bf5Dd6Cr.js} +4 -4
- package/dist/{BlockWidget-DGH3Zz5p.js.map → BlockWidget-Bf5Dd6Cr.js.map} +1 -1
- package/dist/{BlockWidget-DOY5lVfa.cjs → BlockWidget-CeDueZQ0.cjs} +2 -2
- package/dist/{BlockWidget-DOY5lVfa.cjs.map → BlockWidget-CeDueZQ0.cjs.map} +1 -1
- package/dist/{ButtonWidget-CFyZXGt6.cjs → ButtonWidget-BZulfQct.cjs} +3 -3
- package/dist/{ButtonWidget-CFyZXGt6.cjs.map → ButtonWidget-BZulfQct.cjs.map} +1 -1
- package/dist/{ButtonWidget-D_tupiPB.js → ButtonWidget-bl_mGFYh.js} +17 -17
- package/dist/{ButtonWidget-D_tupiPB.js.map → ButtonWidget-bl_mGFYh.js.map} +1 -1
- package/dist/{CanvasWidget-C6dc7mUw.cjs → CanvasWidget-DwAXTAyn.cjs} +2 -2
- package/dist/{CanvasWidget-C6dc7mUw.cjs.map → CanvasWidget-DwAXTAyn.cjs.map} +1 -1
- package/dist/{CanvasWidget-CzG2jYQb.js → CanvasWidget-boDemgx1.js} +2 -2
- package/dist/{CanvasWidget-CzG2jYQb.js.map → CanvasWidget-boDemgx1.js.map} +1 -1
- package/dist/{CanvasdotWidget-0FAaw4G2.js → CanvasdotWidget-BZBbJcER.js} +2 -2
- package/dist/{CanvasdotWidget-0FAaw4G2.js.map → CanvasdotWidget-BZBbJcER.js.map} +1 -1
- package/dist/{CanvasdotWidget-9bBVHC1l.cjs → CanvasdotWidget-ByJp9ZIa.cjs} +2 -2
- package/dist/{CanvasdotWidget-9bBVHC1l.cjs.map → CanvasdotWidget-ByJp9ZIa.cjs.map} +1 -1
- package/dist/{CanvasimageWidget-CNJlzLqo.js → CanvasimageWidget-6ywvT5jd.js} +3 -3
- package/dist/{CanvasimageWidget-CNJlzLqo.js.map → CanvasimageWidget-6ywvT5jd.js.map} +1 -1
- package/dist/{CanvasimageWidget-DjvdDCRS.cjs → CanvasimageWidget-BDprHuH3.cjs} +2 -2
- package/dist/{CanvasimageWidget-DjvdDCRS.cjs.map → CanvasimageWidget-BDprHuH3.cjs.map} +1 -1
- package/dist/{CanvasimagevalueWidget-C1fI-ftP.cjs → CanvasimagevalueWidget-Cl_EuzNC.cjs} +2 -2
- package/dist/{CanvasimagevalueWidget-C1fI-ftP.cjs.map → CanvasimagevalueWidget-Cl_EuzNC.cjs.map} +1 -1
- package/dist/{CanvasimagevalueWidget-DudwwOD6.js → CanvasimagevalueWidget-DjWrA3gX.js} +3 -3
- package/dist/{CanvasimagevalueWidget-DudwwOD6.js.map → CanvasimagevalueWidget-DjWrA3gX.js.map} +1 -1
- package/dist/{CanvaslabelWidget-BZQp16dH.js → CanvaslabelWidget-Bq4V2BQh.js} +2 -2
- package/dist/{CanvaslabelWidget-BZQp16dH.js.map → CanvaslabelWidget-Bq4V2BQh.js.map} +1 -1
- package/dist/{CanvaslabelWidget--6Sjc4E8.cjs → CanvaslabelWidget-aalWFBxK.cjs} +2 -2
- package/dist/{CanvaslabelWidget--6Sjc4E8.cjs.map → CanvaslabelWidget-aalWFBxK.cjs.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-CHS36Te9.js → CanvaslabelvalueWidget-C8oNcFLi.js} +2 -2
- package/dist/{CanvaslabelvalueWidget-CHS36Te9.js.map → CanvaslabelvalueWidget-C8oNcFLi.js.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-DZCxsIKk.cjs → CanvaslabelvalueWidget-DIO0fADo.cjs} +2 -2
- package/dist/{CanvaslabelvalueWidget-DZCxsIKk.cjs.map → CanvaslabelvalueWidget-DIO0fADo.cjs.map} +1 -1
- package/dist/{CanvaslineWidget-Bn83Rb10.cjs → CanvaslineWidget-CqNOzV_A.cjs} +2 -2
- package/dist/{CanvaslineWidget-Bn83Rb10.cjs.map → CanvaslineWidget-CqNOzV_A.cjs.map} +1 -1
- package/dist/{CanvaslineWidget-nhKEAGhs.js → CanvaslineWidget-nvbL2GoL.js} +2 -2
- package/dist/{CanvaslineWidget-nhKEAGhs.js.map → CanvaslineWidget-nvbL2GoL.js.map} +1 -1
- package/dist/{CanvaslinevalueWidget-C6x_4Gc9.cjs → CanvaslinevalueWidget-D0kOhxXn.cjs} +2 -2
- package/dist/{CanvaslinevalueWidget-C6x_4Gc9.cjs.map → CanvaslinevalueWidget-D0kOhxXn.cjs.map} +1 -1
- package/dist/{CanvaslinevalueWidget-DsyIDkJy.js → CanvaslinevalueWidget-ZACQedKx.js} +2 -2
- package/dist/{CanvaslinevalueWidget-DsyIDkJy.js.map → CanvaslinevalueWidget-ZACQedKx.js.map} +1 -1
- package/dist/{CheckbuttonWidget-DCam7Jd0.js → CheckbuttonWidget-B82UE8AB.js} +2 -2
- package/dist/{CheckbuttonWidget-DCam7Jd0.js.map → CheckbuttonWidget-B82UE8AB.js.map} +1 -1
- package/dist/{CheckbuttonWidget-BvggsGZY.cjs → CheckbuttonWidget-L9xyRwfS.cjs} +2 -2
- package/dist/{CheckbuttonWidget-BvggsGZY.cjs.map → CheckbuttonWidget-L9xyRwfS.cjs.map} +1 -1
- package/dist/ClassificationBanners-ZF9Ab7D0.cjs +2 -0
- package/dist/ClassificationBanners-ZF9Ab7D0.cjs.map +1 -0
- package/dist/ClassificationBanners-jiqWjTAZ.js +35 -0
- package/dist/ClassificationBanners-jiqWjTAZ.js.map +1 -0
- package/dist/{ComboboxWidget-ZX-k-_aK.js → ComboboxWidget-4OFiSkI6.js} +2 -2
- package/dist/{ComboboxWidget-ZX-k-_aK.js.map → ComboboxWidget-4OFiSkI6.js.map} +1 -1
- package/dist/{ComboboxWidget-BS5WSbrK.cjs → ComboboxWidget-6hmnB_mK.cjs} +2 -2
- package/dist/{ComboboxWidget-BS5WSbrK.cjs.map → ComboboxWidget-6hmnB_mK.cjs.map} +1 -1
- package/dist/{CriticalCmdDialog-7tOK2XQk.cjs → CriticalCmdDialog-C-UGhtjE.cjs} +2 -2
- package/dist/{CriticalCmdDialog-7tOK2XQk.cjs.map → CriticalCmdDialog-C-UGhtjE.cjs.map} +1 -1
- package/dist/{CriticalCmdDialog-Dylpoz_4.js → CriticalCmdDialog-FhXDdBn4.js} +9 -9
- package/dist/{CriticalCmdDialog-Dylpoz_4.js.map → CriticalCmdDialog-FhXDdBn4.js.map} +1 -1
- package/dist/CustomIcon-Bop2mEnu.cjs.map +1 -1
- package/dist/CustomIcon-h5X7369N.js.map +1 -1
- package/dist/{DateWidget-DuJ5uC2t.js → DateWidget-BmwtdirF.js} +2 -2
- package/dist/{DateWidget-DuJ5uC2t.js.map → DateWidget-BmwtdirF.js.map} +1 -1
- package/dist/{DateWidget-jejbk2-G.cjs → DateWidget-CmSp7svA.cjs} +2 -2
- package/dist/{DateWidget-jejbk2-G.cjs.map → DateWidget-CmSp7svA.cjs.map} +1 -1
- package/dist/{DetailsDialog-BQE0TraI.js → DetailsDialog-CLKEfU0s.js} +89 -89
- package/dist/DetailsDialog-CLKEfU0s.js.map +1 -0
- package/dist/DetailsDialog-DEicfRO1.cjs +2 -0
- package/dist/DetailsDialog-DEicfRO1.cjs.map +1 -0
- package/dist/DynamicWidget-BWEVCUfd.cjs.map +1 -1
- package/dist/DynamicWidget-CfMtj7H8.js.map +1 -1
- package/dist/{EventListDialog-CGUFCrJF.js → EventListDialog-BvSMSn7J.js} +52 -52
- package/dist/{EventListDialog-CGUFCrJF.js.map → EventListDialog-BvSMSn7J.js.map} +1 -1
- package/dist/EventListDialog-Em1RcH7I.cjs +2 -0
- package/dist/{EventListDialog-CDcJcxy5.cjs.map → EventListDialog-Em1RcH7I.cjs.map} +1 -1
- package/dist/{FormatvalueWidget-DYICPNcx.js → FormatvalueWidget-C8exC3bj.js} +3 -3
- package/dist/{FormatvalueWidget-DYICPNcx.js.map → FormatvalueWidget-C8exC3bj.js.map} +1 -1
- package/dist/{FormatvalueWidget-wu7Q3sXu.cjs → FormatvalueWidget-auKALSPC.cjs} +2 -2
- package/dist/{FormatvalueWidget-wu7Q3sXu.cjs.map → FormatvalueWidget-auKALSPC.cjs.map} +1 -1
- package/dist/Graph-BJqtVAaV.cjs +2 -0
- package/dist/Graph-BJqtVAaV.cjs.map +1 -0
- package/dist/Graph-CWcrowaT.js +2662 -0
- package/dist/Graph-CWcrowaT.js.map +1 -0
- package/dist/GraphWidget-BroqS0SO.cjs +2 -0
- package/dist/{GraphWidget-CQjKAMPR.cjs.map → GraphWidget-BroqS0SO.cjs.map} +1 -1
- package/dist/{GraphWidget-cTVq29cY.js → GraphWidget-CvzxZYVx.js} +31 -44
- package/dist/{GraphWidget-cTVq29cY.js.map → GraphWidget-CvzxZYVx.js.map} +1 -1
- package/dist/{HorizontalWidget-v1pfd94Z.js → HorizontalWidget-Ck151zVw.js} +6 -6
- package/dist/{HorizontalWidget-v1pfd94Z.js.map → HorizontalWidget-Ck151zVw.js.map} +1 -1
- package/dist/HorizontalWidget-DBeyBZCp.cjs +2 -0
- package/dist/{HorizontalWidget--AkRJPlL.cjs.map → HorizontalWidget-DBeyBZCp.cjs.map} +1 -1
- package/dist/HorizontalboxWidget-CuWtYdgh.cjs +2 -0
- package/dist/{HorizontalboxWidget-synL-Bar.cjs.map → HorizontalboxWidget-CuWtYdgh.cjs.map} +1 -1
- package/dist/{HorizontalboxWidget-B06-c_n4.js → HorizontalboxWidget-D3P-cl9V.js} +15 -15
- package/dist/{HorizontalboxWidget-B06-c_n4.js.map → HorizontalboxWidget-D3P-cl9V.js.map} +1 -1
- package/dist/{HorizontallineWidget-DEODVJCk.js → HorizontallineWidget-BE1TjPU8.js} +2 -2
- package/dist/{HorizontallineWidget-DEODVJCk.js.map → HorizontallineWidget-BE1TjPU8.js.map} +1 -1
- package/dist/{HorizontallineWidget-lTr2JTFY.cjs → HorizontallineWidget-QUFjdOSu.cjs} +2 -2
- package/dist/{HorizontallineWidget-lTr2JTFY.cjs.map → HorizontallineWidget-QUFjdOSu.cjs.map} +1 -1
- package/dist/{IframeWidget-n8lNXrpt.js → IframeWidget-BgJCgues.js} +2 -2
- package/dist/{IframeWidget-n8lNXrpt.js.map → IframeWidget-BgJCgues.js.map} +1 -1
- package/dist/{IframeWidget-ByhwW9yG.cjs → IframeWidget-DOZ1YyS2.cjs} +2 -2
- package/dist/{IframeWidget-ByhwW9yG.cjs.map → IframeWidget-DOZ1YyS2.cjs.map} +1 -1
- package/dist/{ImageLoader-DBWVFtNu.cjs → ImageLoader-AGF0VbZ5.cjs} +2 -2
- package/dist/{ImageLoader-DBWVFtNu.cjs.map → ImageLoader-AGF0VbZ5.cjs.map} +1 -1
- package/dist/{ImageLoader-CfcErydq.js → ImageLoader-CWn-PLOk.js} +2 -2
- package/dist/{ImageLoader-CfcErydq.js.map → ImageLoader-CWn-PLOk.js.map} +1 -1
- package/dist/{ImageviewerWidget-DE8fj06Z.js → ImageviewerWidget-BlhFZD2f.js} +2 -2
- package/dist/{ImageviewerWidget-DE8fj06Z.js.map → ImageviewerWidget-BlhFZD2f.js.map} +1 -1
- package/dist/{ImageviewerWidget-D4mU6wLX.cjs → ImageviewerWidget-DnmhYP68.cjs} +2 -2
- package/dist/{ImageviewerWidget-D4mU6wLX.cjs.map → ImageviewerWidget-DnmhYP68.cjs.map} +1 -1
- package/dist/{InterfacesTab-DTAAIx-y.cjs → InterfacesTab-76UJTIwF.cjs} +2 -2
- package/dist/{InterfacesTab-DTAAIx-y.cjs.map → InterfacesTab-76UJTIwF.cjs.map} +1 -1
- package/dist/{InterfacesTab-BF-Wx5gk.js → InterfacesTab-Cwz-zG7j.js} +3 -3
- package/dist/{InterfacesTab-BF-Wx5gk.js.map → InterfacesTab-Cwz-zG7j.js.map} +1 -1
- package/dist/{LabelWidget-DQZqRxKF.cjs → LabelWidget-C0DhD9Mn.cjs} +2 -2
- package/dist/{LabelWidget-DQZqRxKF.cjs.map → LabelWidget-C0DhD9Mn.cjs.map} +1 -1
- package/dist/{LabelWidget-iUIJLhdA.js → LabelWidget-Cwosk4x2.js} +2 -2
- package/dist/{LabelWidget-iUIJLhdA.js.map → LabelWidget-Cwosk4x2.js.map} +1 -1
- package/dist/{LabelledWidget-9HWChRmv.cjs → LabelledWidget-D8-aKfA_.cjs} +2 -2
- package/dist/{LabelledWidget-9HWChRmv.cjs.map → LabelledWidget-D8-aKfA_.cjs.map} +1 -1
- package/dist/{LabelledWidget-KI6fMlsr.js → LabelledWidget-Dl6rAFTQ.js} +4 -4
- package/dist/{LabelledWidget-KI6fMlsr.js.map → LabelledWidget-Dl6rAFTQ.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-DwzTP73u.cjs → LabelprogressbarWidget-DosPhvaY.cjs} +2 -2
- package/dist/{LabelprogressbarWidget-DwzTP73u.cjs.map → LabelprogressbarWidget-DosPhvaY.cjs.map} +1 -1
- package/dist/{LabelprogressbarWidget-C2lzmqBH.js → LabelprogressbarWidget-MuAKesOz.js} +4 -4
- package/dist/{LabelprogressbarWidget-C2lzmqBH.js.map → LabelprogressbarWidget-MuAKesOz.js.map} +1 -1
- package/dist/{LabelsparklineWidget-Ci6GGm29.js → LabelsparklineWidget-6LA6Ox3d.js} +4 -4
- package/dist/{LabelsparklineWidget-Ci6GGm29.js.map → LabelsparklineWidget-6LA6Ox3d.js.map} +1 -1
- package/dist/{LabelsparklineWidget-DMjBshq8.cjs → LabelsparklineWidget-CLU8722I.cjs} +2 -2
- package/dist/{LabelsparklineWidget-DMjBshq8.cjs.map → LabelsparklineWidget-CLU8722I.cjs.map} +1 -1
- package/dist/{LabelvalueWidget-oiW-JDw6.js → LabelvalueWidget-BxAXx-Tf.js} +4 -4
- package/dist/{LabelvalueWidget-oiW-JDw6.js.map → LabelvalueWidget-BxAXx-Tf.js.map} +1 -1
- package/dist/{LabelvalueWidget-mAb0eLA8.cjs → LabelvalueWidget-WP4gK29n.cjs} +2 -2
- package/dist/{LabelvalueWidget-mAb0eLA8.cjs.map → LabelvalueWidget-WP4gK29n.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-CZJ0kZN-.cjs → LabelvaluedescWidget-BQ-6OXHc.cjs} +2 -2
- package/dist/{LabelvaluedescWidget-CZJ0kZN-.cjs.map → LabelvaluedescWidget-BQ-6OXHc.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-Ck0AJ9g0.js → LabelvaluedescWidget-Dwwlnd1g.js} +5 -5
- package/dist/{LabelvaluedescWidget-Ck0AJ9g0.js.map → LabelvaluedescWidget-Dwwlnd1g.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-aaVLaejn.js → LabelvaluelimitsbarWidget-Dv8Qk8kK.js} +4 -4
- package/dist/{LabelvaluelimitsbarWidget-aaVLaejn.js.map → LabelvaluelimitsbarWidget-Dv8Qk8kK.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-DjBqYxRr.cjs → LabelvaluelimitsbarWidget-Z_7ARnvo.cjs} +2 -2
- package/dist/{LabelvaluelimitsbarWidget-DjBqYxRr.cjs.map → LabelvaluelimitsbarWidget-Z_7ARnvo.cjs.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-Uur6aqOg.js → LabelvaluelimitscolumnWidget-D-_gl6fq.js} +5 -5
- package/dist/{LabelvaluelimitscolumnWidget-Uur6aqOg.js.map → LabelvaluelimitscolumnWidget-D-_gl6fq.js.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-GputlDZq.cjs → LabelvaluelimitscolumnWidget-DiO1b01N.cjs} +2 -2
- package/dist/{LabelvaluelimitscolumnWidget-GputlDZq.cjs.map → LabelvaluelimitscolumnWidget-DiO1b01N.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-Bs9locqu.js → LabelvaluerangebarWidget-B3MKT-3Y.js} +4 -4
- package/dist/{LabelvaluerangebarWidget-Bs9locqu.js.map → LabelvaluerangebarWidget-B3MKT-3Y.js.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-Ci-n_hxk.cjs → LabelvaluerangebarWidget-DtajHP0b.cjs} +2 -2
- package/dist/{LabelvaluerangebarWidget-Ci-n_hxk.cjs.map → LabelvaluerangebarWidget-DtajHP0b.cjs.map} +1 -1
- package/dist/{Layout-1z8iJV5-.js → Layout-Bkb6VP3e.js} +2 -2
- package/dist/{Layout-1z8iJV5-.js.map → Layout-Bkb6VP3e.js.map} +1 -1
- package/dist/Layout-CSbYbZWA.cjs +2 -0
- package/dist/{Layout-kOQnicRa.cjs.map → Layout-CSbYbZWA.cjs.map} +1 -1
- package/dist/{LedWidget-BN8IgAxJ.js → LedWidget-DOuDD8LI.js} +6 -6
- package/dist/LedWidget-DOuDD8LI.js.map +1 -0
- package/dist/LedWidget-DeREi8-u.cjs +2 -0
- package/dist/LedWidget-DeREi8-u.cjs.map +1 -0
- package/dist/LimitsbarWidget-BHr3IcIx.cjs +2 -0
- package/dist/{LimitsbarWidget-Co5GAHro.cjs.map → LimitsbarWidget-BHr3IcIx.cjs.map} +1 -1
- package/dist/{LimitsbarWidget-BxxoKTjp.js → LimitsbarWidget-D1U6SvVL.js} +4 -4
- package/dist/{LimitsbarWidget-BxxoKTjp.js.map → LimitsbarWidget-D1U6SvVL.js.map} +1 -1
- package/dist/{LimitscolorWidget-BpTcgqRC.cjs → LimitscolorWidget-BUkKRrSL.cjs} +2 -2
- package/dist/{LimitscolorWidget-BpTcgqRC.cjs.map → LimitscolorWidget-BUkKRrSL.cjs.map} +1 -1
- package/dist/{LimitscolorWidget-DFDwf4In.js → LimitscolorWidget-iSMGusqt.js} +2 -2
- package/dist/{LimitscolorWidget-DFDwf4In.js.map → LimitscolorWidget-iSMGusqt.js.map} +1 -1
- package/dist/{LimitscolumnWidget-CqJJKDzz.cjs → LimitscolumnWidget-COfNnb6f.cjs} +2 -2
- package/dist/{LimitscolumnWidget-CqJJKDzz.cjs.map → LimitscolumnWidget-COfNnb6f.cjs.map} +1 -1
- package/dist/{LimitscolumnWidget-CdBh2mJu.js → LimitscolumnWidget-DjxZTt_r.js} +4 -4
- package/dist/{LimitscolumnWidget-CdBh2mJu.js.map → LimitscolumnWidget-DjxZTt_r.js.map} +1 -1
- package/dist/{LinegraphWidget-jXksfbPb.js → LinegraphWidget-BHKU6zlT.js} +13 -13
- package/dist/LinegraphWidget-BHKU6zlT.js.map +1 -0
- package/dist/LinegraphWidget-RleSRWKa.cjs +2 -0
- package/dist/LinegraphWidget-RleSRWKa.cjs.map +1 -0
- package/dist/{MatrixbycolumnsWidget-DCwxPjwS.js → MatrixbycolumnsWidget-BKO-A2QD.js} +4 -4
- package/dist/{MatrixbycolumnsWidget-DCwxPjwS.js.map → MatrixbycolumnsWidget-BKO-A2QD.js.map} +1 -1
- package/dist/MatrixbycolumnsWidget-DWouVj7A.cjs +2 -0
- package/dist/{MatrixbycolumnsWidget-DxRhvPGv.cjs.map → MatrixbycolumnsWidget-DWouVj7A.cjs.map} +1 -1
- package/dist/{MicroservicesTab-DGaTcj-y.cjs → MicroservicesTab-L6qMAy4x.cjs} +2 -2
- package/dist/{MicroservicesTab-DGaTcj-y.cjs.map → MicroservicesTab-L6qMAy4x.cjs.map} +1 -1
- package/dist/{MicroservicesTab-B-SdMwek.js → MicroservicesTab-xLup6THU.js} +4 -4
- package/dist/{MicroservicesTab-B-SdMwek.js.map → MicroservicesTab-xLup6THU.js.map} +1 -1
- package/dist/{Openc3Screen-BZN0Wtrm.js → Openc3Screen-1rQ_Dbp4.js} +585 -452
- package/dist/Openc3Screen-1rQ_Dbp4.js.map +1 -0
- package/dist/Openc3Screen-BHHnSEoI.cjs +6 -0
- package/dist/Openc3Screen-BHHnSEoI.cjs.map +1 -0
- package/dist/{OutputDialog-CxKDhrg6.cjs → OutputDialog-DgM7aoa-.cjs} +2 -2
- package/dist/{OutputDialog-CxKDhrg6.cjs.map → OutputDialog-DgM7aoa-.cjs.map} +1 -1
- package/dist/{OutputDialog-CcSp-Uqo.js → OutputDialog-Ut5cXGxQ.js} +12 -12
- package/dist/{OutputDialog-CcSp-Uqo.js.map → OutputDialog-Ut5cXGxQ.js.map} +1 -1
- package/dist/{PackagesTab-Dx25CfF0.js → PackagesTab-ChJDyU3Z.js} +17 -17
- package/dist/{PackagesTab-Dx25CfF0.js.map → PackagesTab-ChJDyU3Z.js.map} +1 -1
- package/dist/PackagesTab-jqsRJEcJ.cjs +2 -0
- package/dist/{PackagesTab-B4V2n4io.cjs.map → PackagesTab-jqsRJEcJ.cjs.map} +1 -1
- package/dist/PluginsTab-CayzDij0.js +1340 -0
- package/dist/PluginsTab-CayzDij0.js.map +1 -0
- package/dist/PluginsTab-DYEv8EPg.cjs +6 -0
- package/dist/PluginsTab-DYEv8EPg.cjs.map +1 -0
- package/dist/{ProgressbarWidget-C0AkbX_o.cjs → ProgressbarWidget-Xba7gDbW.cjs} +2 -2
- package/dist/{ProgressbarWidget-C0AkbX_o.cjs.map → ProgressbarWidget-Xba7gDbW.cjs.map} +1 -1
- package/dist/{ProgressbarWidget-Cdu5nJC3.js → ProgressbarWidget-fbr2qu_N.js} +2 -2
- package/dist/{ProgressbarWidget-Cdu5nJC3.js.map → ProgressbarWidget-fbr2qu_N.js.map} +1 -1
- package/dist/{RadiobuttonWidget-DslmJO31.cjs → RadiobuttonWidget-CdpKw7jr.cjs} +2 -2
- package/dist/{RadiobuttonWidget-DslmJO31.cjs.map → RadiobuttonWidget-CdpKw7jr.cjs.map} +1 -1
- package/dist/{RadiobuttonWidget-CZZGbvdG.js → RadiobuttonWidget-DL08zcQT.js} +2 -2
- package/dist/{RadiobuttonWidget-CZZGbvdG.js.map → RadiobuttonWidget-DL08zcQT.js.map} +1 -1
- package/dist/{RadiogroupWidget-DKgBAR9E.cjs → RadiogroupWidget-DSA8ENmw.cjs} +2 -2
- package/dist/{RadiogroupWidget-DKgBAR9E.cjs.map → RadiogroupWidget-DSA8ENmw.cjs.map} +1 -1
- package/dist/{RadiogroupWidget-CQN3v8Ip.js → RadiogroupWidget-DW9Xpj3c.js} +2 -2
- package/dist/{RadiogroupWidget-CQN3v8Ip.js.map → RadiogroupWidget-DW9Xpj3c.js.map} +1 -1
- package/dist/{RangebarWidget-Tq80I5zA.cjs → RangebarWidget-B4oRyUwG.cjs} +2 -2
- package/dist/{RangebarWidget-Tq80I5zA.cjs.map → RangebarWidget-B4oRyUwG.cjs.map} +1 -1
- package/dist/{RangebarWidget-dZN9WjoZ.js → RangebarWidget-o9q55kjc.js} +4 -4
- package/dist/{RangebarWidget-dZN9WjoZ.js.map → RangebarWidget-o9q55kjc.js.map} +1 -1
- package/dist/RedisTab-BGz2ZN9T.js +171 -0
- package/dist/RedisTab-BGz2ZN9T.js.map +1 -0
- package/dist/RedisTab-Uqcfgux1.cjs +2 -0
- package/dist/RedisTab-Uqcfgux1.cjs.map +1 -0
- package/dist/{RollupWidget-CHdZAUCb.cjs → RollupWidget-43v3NX_Z.cjs} +2 -2
- package/dist/{RollupWidget-CHdZAUCb.cjs.map → RollupWidget-43v3NX_Z.cjs.map} +1 -1
- package/dist/{RollupWidget-i9DnNJl6.js → RollupWidget-BHnjj-DF.js} +2 -2
- package/dist/{RollupWidget-i9DnNJl6.js.map → RollupWidget-BHnjj-DF.js.map} +1 -1
- package/dist/{RoutersTab-Cp8wM-mS.cjs → RoutersTab-Be53r61Y.cjs} +2 -2
- package/dist/{RoutersTab-Cp8wM-mS.cjs.map → RoutersTab-Be53r61Y.cjs.map} +1 -1
- package/dist/{RoutersTab-DiYEI1Nq.js → RoutersTab-CCEPlZ_Y.js} +3 -3
- package/dist/{RoutersTab-DiYEI1Nq.js.map → RoutersTab-CCEPlZ_Y.js.map} +1 -1
- package/dist/{ScriptChooser-BnTP6ucF.cjs → ScriptChooser-B6TGFTBN.cjs} +2 -2
- package/dist/{ScriptChooser-BnTP6ucF.cjs.map → ScriptChooser-B6TGFTBN.cjs.map} +1 -1
- package/dist/{ScriptChooser-Cua8ObYv.js → ScriptChooser-CXjcm3bN.js} +2 -2
- package/dist/{ScriptChooser-Cua8ObYv.js.map → ScriptChooser-CXjcm3bN.js.map} +1 -1
- package/dist/{ScrollwindowWidget-54GU96Ve.js → ScrollwindowWidget-D-QVwztC.js} +15 -15
- package/dist/ScrollwindowWidget-D-QVwztC.js.map +1 -0
- package/dist/ScrollwindowWidget-D6ZHZr3o.cjs +2 -0
- package/dist/ScrollwindowWidget-D6ZHZr3o.cjs.map +1 -0
- package/dist/{SecretsTab-DY16usGc.cjs → SecretsTab-DDZ1VoUf.cjs} +2 -2
- package/dist/{SecretsTab-DY16usGc.cjs.map → SecretsTab-DDZ1VoUf.cjs.map} +1 -1
- package/dist/{SecretsTab-uWRVI1EE.js → SecretsTab-vVy356vr.js} +7 -7
- package/dist/{SecretsTab-uWRVI1EE.js.map → SecretsTab-vVy356vr.js.map} +1 -1
- package/dist/SettingsTab-CbWrf7U9.js +1763 -0
- package/dist/SettingsTab-CbWrf7U9.js.map +1 -0
- package/dist/SettingsTab-DsIVE5UL.cjs +3 -0
- package/dist/SettingsTab-DsIVE5UL.cjs.map +1 -0
- package/dist/{SignalWidget-B_kA9eCJ.js → SignalWidget-CsWuufdx.js} +2 -2
- package/dist/{SignalWidget-B_kA9eCJ.js.map → SignalWidget-CsWuufdx.js.map} +1 -1
- package/dist/{SignalWidget-COL8kXSJ.cjs → SignalWidget-CysAE9ZG.cjs} +2 -2
- package/dist/{SignalWidget-COL8kXSJ.cjs.map → SignalWidget-CysAE9ZG.cjs.map} +1 -1
- package/dist/{SimpleTextDialog-BWUqPlTv.cjs → SimpleTextDialog-CU6G5CBY.cjs} +2 -2
- package/dist/{SimpleTextDialog-BWUqPlTv.cjs.map → SimpleTextDialog-CU6G5CBY.cjs.map} +1 -1
- package/dist/{SimpleTextDialog-BulqUrdH.js → SimpleTextDialog-ChV5vRcV.js} +5 -5
- package/dist/{SimpleTextDialog-BulqUrdH.js.map → SimpleTextDialog-ChV5vRcV.js.map} +1 -1
- package/dist/{SpacerWidget-D_Ya_b1j.cjs → SpacerWidget-ChNk5TFU.cjs} +2 -2
- package/dist/{SpacerWidget-D_Ya_b1j.cjs.map → SpacerWidget-ChNk5TFU.cjs.map} +1 -1
- package/dist/{SpacerWidget-XoMPHak8.js → SpacerWidget-Di9-qunj.js} +2 -2
- package/dist/{SpacerWidget-XoMPHak8.js.map → SpacerWidget-Di9-qunj.js.map} +1 -1
- package/dist/{SparklineWidget-DQNsvEj9.js → SparklineWidget-B6-zhdPW.js} +4 -4
- package/dist/{SparklineWidget-DQNsvEj9.js.map → SparklineWidget-B6-zhdPW.js.map} +1 -1
- package/dist/{SparklineWidget-CRzXTS5z.cjs → SparklineWidget-D1tVqSRL.cjs} +2 -2
- package/dist/{SparklineWidget-CRzXTS5z.cjs.map → SparklineWidget-D1tVqSRL.cjs.map} +1 -1
- package/dist/{TabbookWidget-_HVA72t5.js → TabbookWidget-B1E1_mzA.js} +2 -2
- package/dist/{TabbookWidget-_HVA72t5.js.map → TabbookWidget-B1E1_mzA.js.map} +1 -1
- package/dist/{TabbookWidget-Bh-GDBXg.cjs → TabbookWidget-Btg-Axid.cjs} +2 -2
- package/dist/{TabbookWidget-Bh-GDBXg.cjs.map → TabbookWidget-Btg-Axid.cjs.map} +1 -1
- package/dist/{TargetsTab-BfoRYnTP.js → TargetsTab-DbbQcBuK.js} +3 -3
- package/dist/{TargetsTab-BfoRYnTP.js.map → TargetsTab-DbbQcBuK.js.map} +1 -1
- package/dist/{TargetsTab-CGE-jQAz.cjs → TargetsTab-pbmAAkOA.cjs} +2 -2
- package/dist/{TargetsTab-CGE-jQAz.cjs.map → TargetsTab-pbmAAkOA.cjs.map} +1 -1
- package/dist/{TextBoxDialog-C60jmnyN.js → TextBoxDialog-CdFHdj5W.js} +4 -4
- package/dist/{TextBoxDialog-C60jmnyN.js.map → TextBoxDialog-CdFHdj5W.js.map} +1 -1
- package/dist/{TextBoxDialog-DWt30tB8.cjs → TextBoxDialog-DbD8P4Xc.cjs} +2 -2
- package/dist/{TextBoxDialog-DWt30tB8.cjs.map → TextBoxDialog-DbD8P4Xc.cjs.map} +1 -1
- package/dist/{TextboxWidget-0JXn4bMH.js → TextboxWidget-CBVEXPw_.js} +4 -4
- package/dist/{TextboxWidget-0JXn4bMH.js.map → TextboxWidget-CBVEXPw_.js.map} +1 -1
- package/dist/{TextboxWidget-uDptDK_z.cjs → TextboxWidget-CHXcR8lA.cjs} +2 -2
- package/dist/{TextboxWidget-uDptDK_z.cjs.map → TextboxWidget-CHXcR8lA.cjs.map} +1 -1
- package/dist/{TextfieldWidget-BXr9MkVW.js → TextfieldWidget-DZMHrtQa.js} +2 -2
- package/dist/{TextfieldWidget-BXr9MkVW.js.map → TextfieldWidget-DZMHrtQa.js.map} +1 -1
- package/dist/{TextfieldWidget-B0FCskrL.cjs → TextfieldWidget-vSJ9CtKs.cjs} +2 -2
- package/dist/{TextfieldWidget-B0FCskrL.cjs.map → TextfieldWidget-vSJ9CtKs.cjs.map} +1 -1
- package/dist/{TimeWidget-q5tUvHC6.cjs → TimeWidget-ClkxS_oo.cjs} +2 -2
- package/dist/{TimeWidget-q5tUvHC6.cjs.map → TimeWidget-ClkxS_oo.cjs.map} +1 -1
- package/dist/{TimeWidget-C67uwMGH.js → TimeWidget-K4MNmJ7J.js} +2 -2
- package/dist/{TimeWidget-C67uwMGH.js.map → TimeWidget-K4MNmJ7J.js.map} +1 -1
- package/dist/{TitleWidget-t_YLgUMB.js → TitleWidget-8IcwweFE.js} +2 -2
- package/dist/{TitleWidget-t_YLgUMB.js.map → TitleWidget-8IcwweFE.js.map} +1 -1
- package/dist/{TitleWidget-REsd7MqR.cjs → TitleWidget-DJJ17ATm.cjs} +2 -2
- package/dist/{TitleWidget-REsd7MqR.cjs.map → TitleWidget-DJJ17ATm.cjs.map} +1 -1
- package/dist/ToolsTab-BkabqeR_.cjs +7 -0
- package/dist/{ToolsTab-CGztf9_j.cjs.map → ToolsTab-BkabqeR_.cjs.map} +1 -1
- package/dist/{ToolsTab-DKYeIlXu.js → ToolsTab-tkganPCk.js} +6 -6
- package/dist/{ToolsTab-DKYeIlXu.js.map → ToolsTab-tkganPCk.js.map} +1 -1
- package/dist/{TopBar-BrCfgCxc.js → TopBar-BoI8SRaF.js} +10 -10
- package/dist/{TopBar-BrCfgCxc.js.map → TopBar-BoI8SRaF.js.map} +1 -1
- package/dist/TopBar-zJvwq8pr.cjs +2 -0
- package/dist/{TopBar-B0UcAtIW.cjs.map → TopBar-zJvwq8pr.cjs.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog-CGyR2v7U.js → UpgradeToEnterpriseDialog-BYz9YoyY.js} +9 -9
- package/dist/{UpgradeToEnterpriseDialog-CGyR2v7U.js.map → UpgradeToEnterpriseDialog-BYz9YoyY.js.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog-DJ3oth3I.cjs → UpgradeToEnterpriseDialog-BxHUptQB.cjs} +2 -2
- package/dist/{UpgradeToEnterpriseDialog-DJ3oth3I.cjs.map → UpgradeToEnterpriseDialog-BxHUptQB.cjs.map} +1 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs +1498 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs.map +1 -0
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-NIAkCgU6.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js} +12916 -12652
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js.map +1 -0
- package/dist/VWidget-3ziiUuPM.cjs +2 -0
- package/dist/VWidget-3ziiUuPM.cjs.map +1 -0
- package/dist/VWidget-CoIgX3hM.js +190 -0
- package/dist/VWidget-CoIgX3hM.js.map +1 -0
- package/dist/{ValueWidget-3jNtnh5i.js → ValueWidget-BvT1ASar.js} +4 -4
- package/dist/{ValueWidget-3jNtnh5i.js.map → ValueWidget-BvT1ASar.js.map} +1 -1
- package/dist/{ValueWidget-CjZeSiPQ.cjs → ValueWidget-RU-vFOh9.cjs} +2 -2
- package/dist/{ValueWidget-CjZeSiPQ.cjs.map → ValueWidget-RU-vFOh9.cjs.map} +1 -1
- package/dist/{ValuelimitsbarWidget-CkLbRP8P.cjs → ValuelimitsbarWidget-B5UtwjJW.cjs} +2 -2
- package/dist/{ValuelimitsbarWidget-CkLbRP8P.cjs.map → ValuelimitsbarWidget-B5UtwjJW.cjs.map} +1 -1
- package/dist/{ValuelimitsbarWidget-JSceOzGS.js → ValuelimitsbarWidget-C5lBnUmB.js} +4 -4
- package/dist/{ValuelimitsbarWidget-JSceOzGS.js.map → ValuelimitsbarWidget-C5lBnUmB.js.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-DpU4BoB7.cjs → ValuelimitscolumnWidget-BruOZb26.cjs} +2 -2
- package/dist/{ValuelimitscolumnWidget-DpU4BoB7.cjs.map → ValuelimitscolumnWidget-BruOZb26.cjs.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-HR1TNHwQ.js → ValuelimitscolumnWidget-DHYI0WBL.js} +4 -4
- package/dist/{ValuelimitscolumnWidget-HR1TNHwQ.js.map → ValuelimitscolumnWidget-DHYI0WBL.js.map} +1 -1
- package/dist/{ValuerangebarWidget-DnZrho8S.js → ValuerangebarWidget-BSszZhlE.js} +4 -4
- package/dist/{ValuerangebarWidget-DnZrho8S.js.map → ValuerangebarWidget-BSszZhlE.js.map} +1 -1
- package/dist/{ValuerangebarWidget-CpZYmUl_.cjs → ValuerangebarWidget-BhQVRHhm.cjs} +2 -2
- package/dist/{ValuerangebarWidget-CpZYmUl_.cjs.map → ValuerangebarWidget-BhQVRHhm.cjs.map} +1 -1
- package/dist/{VerticalWidget-DJvoxqLE.js → VerticalWidget-1GhgYrC3.js} +13 -13
- package/dist/{VerticalWidget-DJvoxqLE.js.map → VerticalWidget-1GhgYrC3.js.map} +1 -1
- package/dist/VerticalWidget-XZrIw9zV.cjs +2 -0
- package/dist/{VerticalWidget-CcJMMaK_.cjs.map → VerticalWidget-XZrIw9zV.cjs.map} +1 -1
- package/dist/VerticalboxWidget-BV-onQ8m.cjs +2 -0
- package/dist/{VerticalboxWidget-CJR_mOLa.cjs.map → VerticalboxWidget-BV-onQ8m.cjs.map} +1 -1
- package/dist/{VerticalboxWidget-CYYyLBoO.js → VerticalboxWidget-DYHJqEzd.js} +13 -13
- package/dist/{VerticalboxWidget-CYYyLBoO.js.map → VerticalboxWidget-DYHJqEzd.js.map} +1 -1
- package/dist/{Widget-Bn_S-zBo.js → Widget-B8t93Oid.js} +4 -4
- package/dist/Widget-B8t93Oid.js.map +1 -0
- package/dist/{Widget-O7wkmc39.cjs → Widget-Blq-k5SB.cjs} +2 -2
- package/dist/{Widget-O7wkmc39.cjs.map → Widget-Blq-k5SB.cjs.map} +1 -1
- package/dist/cmdUtilities-BMsSNjt_.js +46 -0
- package/dist/cmdUtilities-BMsSNjt_.js.map +1 -0
- package/dist/cmdUtilities-ChD8v8-7.cjs +2 -0
- package/dist/cmdUtilities-ChD8v8-7.cjs.map +1 -0
- package/dist/components.cjs +3 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +685 -823
- package/dist/components.js.map +1 -1
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js.map +1 -1
- package/dist/{index-qCq0L4jN.js → index-DDjz5VQq.js} +345 -327
- package/dist/index-DDjz5VQq.js.map +1 -0
- package/dist/index-DZh4NjG5.cjs +7 -0
- package/dist/index-DZh4NjG5.cjs.map +1 -0
- package/dist/plugins.cjs +2 -2
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.js +184 -177
- package/dist/plugins.js.map +1 -1
- package/dist/settings-DyvFSj59.cjs +2 -0
- package/dist/settings-DyvFSj59.cjs.map +1 -0
- package/dist/settings-UZsgbUSr.js +34 -0
- package/dist/settings-UZsgbUSr.js.map +1 -0
- package/dist/tools/admin.cjs +3 -3
- package/dist/tools/admin.cjs.map +1 -1
- package/dist/tools/admin.js +84 -76
- package/dist/tools/admin.js.map +1 -1
- package/dist/tools/base.cjs +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.js +504 -473
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calendar.cjs +1 -1
- package/dist/tools/calendar.js +1 -1
- package/dist/tools/scriptrunner.cjs +34 -34
- package/dist/tools/scriptrunner.cjs.map +1 -1
- package/dist/tools/scriptrunner.js +945 -876
- package/dist/tools/scriptrunner.js.map +1 -1
- package/dist/util.cjs +1 -1
- package/dist/util.js +4 -2
- package/dist/util.js.map +1 -1
- package/dist/vue-common.css +1 -1
- package/dist/widgets.cjs +1 -1
- package/dist/widgets.js +63 -63
- package/package.json +15 -15
- package/dist/ArrayplotWidget-DC41cpv1.cjs +0 -2
- package/dist/ArrayplotWidget-DC41cpv1.cjs.map +0 -1
- package/dist/ArrayplotWidget-ntRLh6-B.js.map +0 -1
- package/dist/DetailsDialog-BQE0TraI.js.map +0 -1
- package/dist/DetailsDialog-DmKpPDNn.cjs +0 -2
- package/dist/DetailsDialog-DmKpPDNn.cjs.map +0 -1
- package/dist/EventListDialog-CDcJcxy5.cjs +0 -2
- package/dist/Graph-DCihpnT0.js +0 -1853
- package/dist/Graph-DCihpnT0.js.map +0 -1
- package/dist/Graph-mSqImgca.cjs +0 -2
- package/dist/Graph-mSqImgca.cjs.map +0 -1
- package/dist/GraphWidget-CQjKAMPR.cjs +0 -2
- package/dist/HorizontalWidget--AkRJPlL.cjs +0 -2
- package/dist/HorizontalboxWidget-synL-Bar.cjs +0 -2
- package/dist/Layout-kOQnicRa.cjs +0 -2
- package/dist/LedWidget-BN8IgAxJ.js.map +0 -1
- package/dist/LedWidget-BUTbyEBi.cjs +0 -2
- package/dist/LedWidget-BUTbyEBi.cjs.map +0 -1
- package/dist/LimitsbarWidget-Co5GAHro.cjs +0 -2
- package/dist/LinegraphWidget-Bay0EtbI.cjs +0 -2
- package/dist/LinegraphWidget-Bay0EtbI.cjs.map +0 -1
- package/dist/LinegraphWidget-jXksfbPb.js.map +0 -1
- package/dist/MatrixbycolumnsWidget-DxRhvPGv.cjs +0 -2
- package/dist/Openc3Screen-BZN0Wtrm.js.map +0 -1
- package/dist/Openc3Screen-dtpBWZdA.cjs +0 -5
- package/dist/Openc3Screen-dtpBWZdA.cjs.map +0 -1
- package/dist/PackagesTab-B4V2n4io.cjs +0 -2
- package/dist/PluginsTab-DHO1tK2S.cjs +0 -6
- package/dist/PluginsTab-DHO1tK2S.cjs.map +0 -1
- package/dist/PluginsTab-lHDR5v6S.js +0 -562
- package/dist/PluginsTab-lHDR5v6S.js.map +0 -1
- package/dist/RedisTab-CdiSo-CO.cjs +0 -2
- package/dist/RedisTab-CdiSo-CO.cjs.map +0 -1
- package/dist/RedisTab-CkSwEwTZ.js +0 -135
- package/dist/RedisTab-CkSwEwTZ.js.map +0 -1
- package/dist/ScrollwindowWidget-54GU96Ve.js.map +0 -1
- package/dist/ScrollwindowWidget-C5_X-KwQ.cjs +0 -2
- package/dist/ScrollwindowWidget-C5_X-KwQ.cjs.map +0 -1
- package/dist/SettingsTab-BVnr4OtU.js +0 -1445
- package/dist/SettingsTab-BVnr4OtU.js.map +0 -1
- package/dist/SettingsTab-BkwaDhYo.cjs +0 -3
- package/dist/SettingsTab-BkwaDhYo.cjs.map +0 -1
- package/dist/ToolsTab-CGztf9_j.cjs +0 -7
- package/dist/TopBar-B0UcAtIW.cjs +0 -2
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs +0 -1497
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs.map +0 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-NIAkCgU6.js.map +0 -1
- package/dist/VWidget-BMxLXtSO.cjs +0 -2
- package/dist/VWidget-BMxLXtSO.cjs.map +0 -1
- package/dist/VWidget-j2GIGGSX.js +0 -326
- package/dist/VWidget-j2GIGGSX.js.map +0 -1
- package/dist/VerticalWidget-CcJMMaK_.cjs +0 -2
- package/dist/VerticalboxWidget-CJR_mOLa.cjs +0 -2
- package/dist/Widget-Bn_S-zBo.js.map +0 -1
- package/dist/index-DcL65Mqb.cjs +0 -7
- package/dist/index-DcL65Mqb.cjs.map +0 -1
- package/dist/index-qCq0L4jN.js.map +0 -1
package/dist/components.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("./OutputDialog-CxKDhrg6.cjs"),T=require("./TopBar-B0UcAtIW.cjs"),_=require("./Openc3Screen-dtpBWZdA.cjs"),f=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs"),e=require("vue"),C=require("./CustomIcon-Bop2mEnu.cjs"),D=require("./CriticalCmdDialog-7tOK2XQk.cjs"),I=require("./DetailsDialog-DmKpPDNn.cjs"),k=require("./ScriptChooser-BnTP6ucF.cjs"),V=require("./Graph-mSqImgca.cjs"),y=require("./icons.cjs"),S=require("./timeFilters-CJFxfjqN.cjs"),A=require("./format-B22VpiOS.cjs"),E=require("single-spa"),L=require("./SimpleTextDialog-BWUqPlTv.cjs"),R=require("./TextBoxDialog-DWt30tB8.cjs"),U=require("./UpgradeToEnterpriseDialog-DJ3oth3I.cjs"),P={data:{configKey:"",dontSaveDefaultConfig:!1},methods:{loadDefaultConfig:function(){return localStorage[`${this.configKey}__default`]?JSON.parse(localStorage[`${this.configKey}__default`]):{}},saveDefaultConfig:function(s){this.dontSaveDefaultConfig!==!0&&(localStorage[`${this.configKey}__default`]=JSON.stringify(s))},openConfigBase:function(s,t=!1,a=null){new f.pi().load_config(this.configKey,s).then(o=>{o?(this.$notify.normal({title:"Loading configuration",body:s}),a&&a(JSON.parse(o)),t||this.$route.fullPath.includes(s)||this.$router.push({query:{config:s}})):this.$notify.caution({title:"Unknown configuration",body:s})}).catch(o=>{o&&this.$notify.serious({title:`Error opening configuration: ${s}`,body:o})})},saveConfigBase:function(s,t){new f.pi().save_config(this.configKey,s,JSON.stringify(t)).then(()=>{this.$notify.normal({title:"Saved configuration",body:s})}).catch(a=>{a&&this.$notify.serious({title:`Error saving configuration: ${s}`,body:a})})},resetConfigBase:function(){localStorage.removeItem(`${this.configKey}__default`);const s={...this.$route.query};delete s.config,this.$router.replace({query:s})}}},O={props:{configKey:String,modelValue:Boolean},data(){return{configs:[],headers:[{title:"Configuration",value:"config"},{title:"Actions",value:"actions",align:"end",sortable:!1}],search:null,selectedRows:[]}},computed:{selectedItem:function(){return this.selectedRows.length?this.configs.find(s=>s.configId===this.selectedRows[0]):null},error:function(){return this.selectedItem===""||this.selectedItem===null?"Must select a config":null},show:{get(){return this.modelValue},set(s){this.$emit("update:modelValue",s)}}},mounted(){let s=-1;new f.pi().list_configs(this.configKey).then(t=>{this.configs=t.map(a=>(s+=1,{configId:s,config:a}))}).catch(t=>{this.$emit("warning",`Failed to connect to OpenC3. ${t}`)})},methods:{selectRow:function(s){this.selectedRows=[s.item.configId]},success:function(){this.selectedItem&&(this.$emit("success",this.selectedItem.config),this.show=!1,this.search=null,this.selectedRows=[])},cancel:function(){this.show=!1,this.search=null,this.selectedRows=[]},deleteConfig:function(s){this.$dialog.confirm(`Are you sure you want to delete: ${s.config}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{var a;((a=this.selectedItem)==null?void 0:a.config)===s.config&&(this.selectedRows=[]),this.configs.splice(this.configs.indexOf(s),1),new f.pi().delete_config(this.configKey,s.config)}).catch(t=>{t!==!0&&this.$emit("warning",`Failed to delete config ${s.config} Error: ${t}`)})}}},B={class:"mt-4 pa-3"},K=["textContent"];function M(s,t,a,o,l,i){const d=e.resolveComponent("v-spacer"),r=e.resolveComponent("v-toolbar"),h=e.resolveComponent("v-text-field"),p=e.resolveComponent("v-row"),u=e.resolveComponent("v-btn"),N=e.resolveComponent("v-data-table"),g=e.resolveComponent("v-card-text"),n=e.resolveComponent("v-card-actions"),m=e.resolveComponent("v-card"),w=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(w,{modelValue:i.show,"onUpdate:modelValue":t[4]||(t[4]=c=>i.show=c),width:"600",onKeydown:e.withKeys(i.cancel,["esc"])},{default:e.withCtx(()=>[e.createVNode(m,null,{default:e.withCtx(()=>[e.createElementVNode("form",{onSubmit:t[3]||(t[3]=e.withModifiers((...c)=>i.success&&i.success(...c),["prevent"]))},[e.createVNode(r,{height:"24"},{default:e.withCtx(()=>[e.createVNode(d),t[5]||(t[5]=e.createElementVNode("span",null,"Open Configuration",-1)),e.createVNode(d)]),_:1}),e.createVNode(g,null,{default:e.withCtx(()=>[e.createElementVNode("div",B,[e.createVNode(p,{dense:""},{default:e.withCtx(()=>[e.createVNode(h,{modelValue:l.search,"onUpdate:modelValue":t[0]||(t[0]=c=>l.search=c),label:"search",type:"text","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","clear-icon":"mdi-close-circle-outline",autofocus:"","single-line":"","hide-details":"","data-test":"search"},null,8,["modelValue"])]),_:1}),e.createVNode(N,{modelValue:l.selectedRows,"onUpdate:modelValue":t[1]||(t[1]=c=>l.selectedRows=c),"show-select":"","select-strategy":"single","item-value":"configId",search:l.search,headers:l.headers,items:l.configs,"items-per-page":5,"items-per-page-options":[5],"onClick:row":t[2]||(t[2]=(c,v)=>i.selectRow(v))},{"item.actions":e.withCtx(({item:c})=>[e.createVNode(u,{class:"mt-1",icon:"mdi-delete",variant:"text","data-test":"item-delete",onClick:v=>i.deleteConfig(c)},null,8,["onClick"])]),_:1},8,["modelValue","search","headers","items"]),e.createVNode(p,{dense:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(i.error)},null,8,K),[[e.vShow,i.error]])]),_:1})])]),_:1}),e.createVNode(n,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(d),e.createVNode(u,{variant:"outlined","data-test":"open-config-cancel-btn",onClick:i.cancel},{default:e.withCtx(()=>t[6]||(t[6]=[e.createTextVNode(" Cancel ")])),_:1},8,["onClick"]),e.createVNode(u,{variant:"flat",type:"submit","data-test":"open-config-submit-btn",disabled:!!i.error,onClick:e.withModifiers(i.success,["prevent"])},{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode(" Ok ")])),_:1},8,["disabled","onClick"])]),_:1})],32)]),_:1})]),_:1},8,["modelValue","onKeydown"])}const W=C._export_sfc(O,[["render",M]]),q={props:{configKey:String,modelValue:Boolean},data(){return{configName:"",configs:[],headers:[{title:"Configuration",value:"config"},{title:"Actions",value:"actions",align:"end",sortable:!1}],search:null,selectedRows:[]}},computed:{selectedItem:function(){return this.selectedRows.length?this.configs.find(s=>s.configId===this.selectedRows[0]):null},error:function(){return this.configName?null:"Config must have a name"},show:{get(){return this.modelValue},set(s){this.$emit("update:modelValue",s)}}},watch:{selectedItem:function(s){s&&(this.configName=s.config)}},mounted(){let s=-1;new f.pi().list_configs(this.configKey).then(t=>{this.configs=t.map(a=>(s+=1,{configId:s,config:a}))}).catch(t=>{this.$emit("warning",`Failed to connect to OpenC3. ${t}`)})},methods:{selectRow:function(s){this.selectedRows=[s.item.configId]},success:function(){this.$emit("success",this.configName),this.show=!1,this.search=null,this.selectedRows=[],this.configName=""},cancel:function(){this.show=!1,this.search=null,this.selectedRows=[],this.configName=""},deleteConfig:function(s){this.$dialog.confirm(`Are you sure you want to delete: ${s.config}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{var a;((a=this.selectedItem)==null?void 0:a.config)===s.config&&(this.selectedRows=[],this.configName=""),this.configs.splice(this.configs.indexOf(s),1),new f.pi().delete_config(this.configKey,s.config)}).catch(t=>{t!==!0&&this.$emit("warning",`Failed to delete config ${s.config} Error: ${t}`)})}}},F={class:"mt-4 pa-3"},z=["textContent"];function G(s,t,a,o,l,i){const d=e.resolveComponent("v-spacer"),r=e.resolveComponent("v-toolbar"),h=e.resolveComponent("v-text-field"),p=e.resolveComponent("v-row"),u=e.resolveComponent("v-btn"),N=e.resolveComponent("v-data-table"),g=e.resolveComponent("v-card-text"),n=e.resolveComponent("v-card-actions"),m=e.resolveComponent("v-card"),w=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(w,{modelValue:i.show,"onUpdate:modelValue":t[5]||(t[5]=c=>i.show=c),width:"600",onKeydown:e.withKeys(i.cancel,["esc"])},{default:e.withCtx(()=>[e.createVNode(m,null,{default:e.withCtx(()=>[e.createElementVNode("form",{onSubmit:t[4]||(t[4]=e.withModifiers((...c)=>i.success&&i.success(...c),["prevent"]))},[e.createVNode(r,{height:"24"},{default:e.withCtx(()=>[e.createVNode(d),t[6]||(t[6]=e.createElementVNode("span",null,"Save Configuration",-1)),e.createVNode(d)]),_:1}),e.createVNode(g,null,{default:e.withCtx(()=>[e.createElementVNode("div",F,[e.createVNode(p,{dense:""},{default:e.withCtx(()=>[e.createVNode(h,{modelValue:l.search,"onUpdate:modelValue":t[0]||(t[0]=c=>l.search=c),label:"search",type:"text","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","clear-icon":"mdi-close-circle-outline","single-line":"","hide-details":"","data-test":"search"},null,8,["modelValue"])]),_:1}),e.createVNode(N,{modelValue:l.selectedRows,"onUpdate:modelValue":t[1]||(t[1]=c=>l.selectedRows=c),"show-select":"","select-strategy":"single","item-value":"configId",search:l.search,headers:l.headers,items:l.configs,"items-per-page":5,"items-per-page-options":[5],"onClick:row":t[2]||(t[2]=(c,v)=>i.selectRow(v))},{"item.actions":e.withCtx(({item:c})=>[e.createVNode(u,{class:"mt-1",icon:"mdi-delete",variant:"text","data-test":"item-delete",onClick:v=>i.deleteConfig(c)},null,8,["onClick"])]),_:1},8,["modelValue","search","headers","items"]),e.createVNode(p,{dense:""},{default:e.withCtx(()=>[e.createVNode(h,{modelValue:l.configName,"onUpdate:modelValue":t[3]||(t[3]=c=>l.configName=c),"hide-details":"",autofocus:"",disabled:!!i.selectedItem,label:"Configuration Name","data-test":"name-input-save-config-dialog"},null,8,["modelValue","disabled"])]),_:1}),e.createVNode(p,{dense:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(i.error)},null,8,z),[[e.vShow,i.error]])]),_:1})])]),_:1}),e.createVNode(n,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(d),e.createVNode(u,{variant:"outlined",onClick:i.cancel},{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode(" Cancel ")])),_:1},8,["onClick"]),e.createVNode(u,{variant:"flat",type:"submit","data-test":"save-config-submit-btn",disabled:!!i.error,onClick:e.withModifiers(i.success,["prevent"])},{default:e.withCtx(()=>t[8]||(t[8]=[e.createTextVNode(" Ok ")])),_:1},8,["disabled","onClick"])]),_:1})],32)]),_:1})]),_:1},8,["modelValue","onKeydown"])}const H=C._export_sfc(q,[["render",G]]),j={mixins:[S.TimeFilters],props:{historyCount:{type:Number,default:200},timeZone:{type:String,default:"local"}},data(){return{AstroStatusColors:y.AstroStatusColors,data:[],shownData:[],logLevels:["DEBUG","INFO","WARN","ERROR","FATAL"],logLevel:"INFO",search:"",headers:[{title:"Time",value:"timestamp",nowrap:!0},{title:"Level",value:"level"},{title:"Source",value:"microservice_name"},{title:"Message",value:"message"}],cable:new f.di,subscription:null,paused:!1}},computed:{buttonIcon:function(){return this.paused?"mdi-play":"mdi-pause"}},watch:{logLevel:function(s,t){this.createSubscription()}},created(){this.createSubscription()},unmounted(){this.subscription&&this.subscription.unsubscribe(),this.cable.disconnect()},methods:{pause:function(){this.paused=!this.paused},createSubscription(){this.subscription&&(this.subscription.unsubscribe(),this.data=[],this.shownData=this.data),this.cable.createSubscription("MessagesChannel",window.openc3Scope,{received:s=>{this.cable.recordPing(),s.length>this.historyCount&&s.splice(0,s.length-this.historyCount),s=s.filter(t=>{switch(this.logLevel){case"DEBUG":return!0;case"INFO":if(t.level!=="DEBUG")return!0;break;case"WARN":if(t.level!=="DEBUG"&&t.level!=="INFO")return!0;break;case"ERROR":if(t.level!=="DEBUG"&&t.level!=="INFO"&&t.level!=="WARN")return!0;break;case"FATAL":if(t.level!=="DEBUG"&&t.level!=="INFO"&&t.level!=="WARN"&&t.level!=="ERROR")return!0;break}return!1}),s.map(t=>{if(t.timestamp=this.formatTimestamp(t["@timestamp"],this.timeZone),t.message.raw&&t.message.json_class==="String"){let a="0x";for(let o=0;o<t.message.raw.length;o++){let l=t.message.raw[o].toString(16).toUpperCase();l.length<2&&(l="0"+l),a+=l}t.message=a}else t.message=t.message.replaceAll("\\n",`
|
|
2
|
-
`)}),this.data=
|
|
3
|
-
`),t=new Blob([s],{type:"text/plain"}),a=document.createElement("a");a.href=URL.createObjectURL(t),a.setAttribute("download",A.format(Date.now(),"yyyy_MM_dd_HH_mm_ss")+"_message_log.txt"),a.click()},clearLog:function(){this.$dialog.confirm("Are you sure you want to clear the log?",{okText:"Clear",cancelText:"Cancel"}).then(s=>{this.data=[],this.shownData=[]}).catch(function(s){})}}},J={class:"d-flex align-baseline"},Z=["title","datetime"],Y={style:{"white-space":"pre-wrap"}};function X(s,t,a,o,l,i){const d=e.resolveComponent("v-btn"),r=e.resolveComponent("v-spacer"),h=e.resolveComponent("v-select"),p=e.resolveComponent("v-text-field"),u=e.resolveComponent("v-card-title"),N=e.resolveComponent("rux-status"),g=e.resolveComponent("v-data-table"),n=e.resolveComponent("v-card");return e.openBlock(),e.createBlock(n,null,{default:e.withCtx(()=>[e.createVNode(u,{class:"d-flex align-center justify-content-space-between"},{default:e.withCtx(()=>[e.createElementVNode("div",J,[e.createVNode(d,{icon:"mdi-download",variant:"text",size:"small",class:"mr-2","data-test":"download-log",onClick:i.downloadLog},null,8,["onClick"]),t[2]||(t[2]=e.createElementVNode("span",null," Log Messages ",-1)),e.createVNode(d,{icon:i.buttonIcon,variant:"text","data-test":"pause",onClick:i.pause},null,8,["icon","onClick"])]),e.createVNode(r),e.createVNode(h,{modelValue:l.logLevel,"onUpdate:modelValue":t[0]||(t[0]=m=>l.logLevel=m),label:"Filter by log level","hide-details":"",variant:"outlined",density:"compact",items:l.logLevels,class:"mr-2",style:{"max-width":"150px"},"data-test":"log-messages-level"},null,8,["modelValue","items"]),e.createVNode(r),e.createVNode(p,{modelValue:l.search,"onUpdate:modelValue":t[1]||(t[1]=m=>l.search=m),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"",style:{"max-width":"300px"},class:"search","data-test":"search-log-messages"},null,8,["modelValue"]),e.createVNode(d,{icon:"mdi-delete-sweep",variant:"text",class:"ml-2","data-test":"clear-log",onClick:i.clearLog},null,8,["onClick"])]),_:1}),e.createVNode(g,{headers:l.headers,items:l.shownData,search:l.search,"items-per-page":-1,"hide-default-footer":"","multi-sort":"",density:"compact",sticky:"",hover:"","data-test":"log-messages"},{"item.timestamp":e.withCtx(({item:m})=>[e.createElementVNode("time",{title:m.timestamp,datetime:m.timestamp},e.toDisplayString(m.timestamp),9,Z)]),"item.level":e.withCtx(({item:m})=>[e.createElementVNode("span",{style:e.normalizeStyle("display: inline-flex; color:"+i.getColor(m.level))},[e.createVNode(N,{class:"mr-1",status:i.getStatus(m.level)},null,8,["status"]),e.createTextVNode(" "+e.toDisplayString(m.level),1)],4)]),"item.message":e.withCtx(({item:m})=>[e.createElementVNode("div",Y,e.toDisplayString(m.message),1)]),_:1},8,["headers","items","search"])]),_:1})}const Q=C._export_sfc(j,[["render",X],["__scopeId","data-v-081e936f"]]),x="single-spa:app-change",$={data(){return{show:!1}},created(){window.addEventListener(x,this.handleAppChange)},mounted(){setTimeout(()=>{this.show=E.getMountedApps().length===0},150)},unmounted(){window.removeEventListener(x,this.handleAppChange)},methods:{handleAppChange:function(s){this.show=!s.detail.appsByNewStatus.MOUNTED}}},ee={class:"mx-1"};function te(s,t,a,o,l,i){const d=e.resolveComponent("v-card-title"),r=e.resolveComponent("v-card-text"),h=e.resolveComponent("v-card");return l.show?(e.openBlock(),e.createBlock(h,{key:0},{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>t[0]||(t[0]=[e.createTextVNode(" 404 Not Found ")])),_:1}),e.createVNode(r,{class:"d-flex align-center mt-3"},{default:e.withCtx(()=>[t[1]||(t[1]=e.createTextVNode(" The requested URL ")),e.createElementVNode("code",ee,e.toDisplayString(s.$route.fullPath),1),t[2]||(t[2]=e.createTextVNode(" was not routable. ")),t[3]||(t[3]=e.createElementVNode("span",{class:"text-h3 mx-1"}," 🦄 ",-1))]),_:1})]),_:1})):e.createCommentVNode("",!0)}const se=C._export_sfc($,[["render",te]]),le={props:{allowAll:{type:Boolean,default:!1},allowAllTargets:{type:Boolean,default:!1},allowAllArrayIndex:{type:Boolean,default:!1},buttonText:{type:String,default:null},chooseItem:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},initialTargetName:{type:String,default:""},initialPacketName:{type:String,default:""},initialItemName:{type:String,default:""},selectTypes:{type:Boolean,default:!1},showLatest:{type:Boolean,default:!1},mode:{type:String,default:"tlm",validator:s=>["cmd","tlm"].includes(s)},unknown:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},hidden:{type:Boolean,default:!1}},emits:["on-set","addItem"],data(){var s,t,a;return{targetNames:[],selectedTargetName:(s=this.initialTargetName)==null?void 0:s.toUpperCase(),packetNames:[],selectedPacketName:(t=this.initialPacketName)==null?void 0:t.toUpperCase(),itemNames:[],selectedItemName:(a=this.initialItemName)==null?void 0:a.toUpperCase(),valueTypes:["CONVERTED","RAW"],selectedValueType:"CONVERTED",reductionModes:[{title:"NONE",value:"DECOM"},{title:"REDUCED_MINUTE",value:"REDUCED_MINUTE"},{title:"REDUCED_HOUR",value:"REDUCED_HOUR"},{title:"REDUCED_DAY",value:"REDUCED_DAY"}],selectedArrayIndex:null,selectedReduced:"DECOM",reducedTypes:["MIN","MAX","AVG","STDDEV"],selectedReducedType:"AVG",description:"",hazardous:!1,internalDisabled:!1,packetsDisabled:!1,itemsDisabled:!1,api:null,ALL:{label:"[ ALL ]",value:"ALL",description:"ALL"},UNKNOWN:{label:"[ UNKNOWN ]",value:"UNKNOWN",description:"UNKNOWN"}}},computed:{actualButtonText:function(){return this.selectedPacketName==="ALL"?"Add Target":this.selectedItemName==="ALL"?"Add Packet":this.buttonText},autocompleteDisabled:function(){return this.disabled||this.internalDisabled},buttonDisabled:function(){return this.disabled||this.internalDisabled||this.selectedTargetName===null||this.selectedPacketName===null||this.selectedItemNameWIndex===null},colSize:function(){return this.vertical?12:!1},selectedItemNameWIndex:function(){return this.itemIsArray&&this.selectedArrayIndex!==null&&this.selectedArrayIndex!==this.ALL.label?`${this.selectedItemName}[${this.selectedArrayIndex}]`:this.selectedItemName},includeLatestPacketInDropdown:function(){return this.showLatest&&this.mode==="tlm"},arrayIndexes:function(){let s=this.itemNames.findIndex(a=>a.value===this.selectedItemName),t=[...Array(this.itemNames[s].array).keys()];return(this.allowAll||this.allowAllArrayIndex)&&t.unshift(this.ALL.label),t},itemIsArray:function(){let s=this.itemNames.findIndex(t=>t.value===this.selectedItemName);return!(s===-1||isNaN(this.itemNames[s].array))}},watch:{initialTargetName:function(s){s&&(this.selectedTargetName=s.toUpperCase())},initialPacketName:function(s){s&&(this.selectedPacketName=s.toUpperCase())},initialItemName:function(s){s&&(this.selectedItemName=s.toUpperCase())},mode:function(s,t){this.selectedPacketName=null,this.selectedItemName=null,this.targetNameChanged(this.selectedTargetName)},chooseItem:function(s,t){s?this.updateItems():this.itemNames=[]},itemIsArray:function(s){s?this.selectedArrayIndex||(this.selectedArrayIndex=0):this.selectedArrayIndex=null}},created(){this.internalDisabled=!0,this.api=new f.pi,this.api.get_target_names().then(s=>{this.targetNames=s.flatMap(t=>t=="UNKNOWN"?[]:{label:t,value:t}),this.allowAllTargets&&this.targetNames.unshift(this.ALL),this.selectedTargetName?this.updatePackets():(this.selectedTargetName=this.targetNames[0].value,this.targetNameChanged(this.selectedTargetName)),this.unknown&&this.targetNames.push(this.UNKNOWN)})},methods:{updatePackets:function(){if(this.selectedTargetName==="UNKNOWN"){this.packetNames=[this.UNKNOWN],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.UNKNOWN.value),this.description="UNKNOWN";return}if(this.selectedTargetName==="ALL"){this.packetNames=[this.ALL],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.ALL.value),this.description="ALL";return}this.internalDisabled=!0;const s=this.mode==="tlm"?"get_all_tlm_names":"get_all_cmd_names";this.api[s](this.selectedTargetName,this.hidden).then(t=>{this.packetNames=t.map(o=>({label:o,value:o})),this.allowAll&&this.packetNames.unshift(this.ALL),this.selectedPacketName||(this.packetNames.length===0?this.selectedPacketName=null:this.selectedPacketName=this.packetNames[0].value),this.updatePacketDetails(this.selectedPacketName),this.packetNames.find(o=>o.value===this.selectedPacketName)&&this.chooseItem&&this.updateItems(),this.internalDisabled=!1})},updateItems:function(){if(this.selectedPacketName!=="ALL")if(this.internalDisabled=!0,this.selectedPacketName==="LATEST")this.api.get_all_tlm_item_names(this.selectedTargetName).then(s=>{this.itemNames=s.map(t=>({label:t,value:t,description:`LATEST ${t}`})),this.finishUpdateItems()});else{const s=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[s](this.selectedTargetName,this.selectedPacketName).then(t=>{this.itemNames=t.items.map(a=>{let o=a.name;return a.data_type=="DERIVED"&&(o+=" *"),{label:o,value:a.name,description:a.description,array:a.array_size/a.bit_size}}),this.itemNames.sort((a,o)=>a.label>o.label?1:-1),this.finishUpdateItems()})}},finishUpdateItems:function(){this.allowAll&&this.itemNames.unshift(this.ALL),this.selectedItemName||(this.selectedItemName=this.itemNames[0].value),this.description=this.itemNames[0].description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}),this.internalDisabled=!1},targetNameChanged:function(s){this.selectedTargetName=s,this.selectedPacketName="",this.selectedItemName="",s!==null&&this.updatePackets()},packetNameChanged:function(s){this.selectedItemName="",s!==null&&this.updatePacketDetails(s)},updatePacketDetails:function(s){if(s==="ALL")this.itemsDisabled=!0,this.internalDisabled=!1;else if(s==="LATEST")this.itemsDisabled=!1,this.selectedPacketName="LATEST";else{this.itemsDisabled=!1;const t=this.packetNames.find(a=>s===a.value);if(t){this.selectedPacketName=t.value;const a=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[a](this.selectedTargetName,this.selectedPacketName).then(o=>{this.description=o.description,this.hazardous=o.hazardous})}}this.chooseItem?this.updateItems():this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},itemNameChanged:function(s){const t=this.itemNames.find(a=>s===a.value);t&&(this.selectedItemName=t.value,this.description=t.description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}))},indexChanged:function(s){this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},buttonPressed:function(){this.selectedPacketName==="ALL"?this.allTargetPacketItems():this.selectedItemName==="ALL"?this.allPacketItems():this.chooseItem?this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}):this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},allTargetPacketItems:function(){this.packetNames.forEach(s=>{if(s===this.ALL)return;const t=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[t](this.selectedTargetName,s.value).then(a=>{a.items.forEach(o=>{this.$emit("addItem",{targetName:this.selectedTargetName,packetName:s.value,itemName:o.name,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})})})},allPacketItems:function(){this.itemNames.forEach(s=>{s!==this.ALL&&this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:s.value,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})}}},ie={class:"pt-4 pb-4"};function ae(s,t,a,o,l,i){const d=e.resolveComponent("v-autocomplete"),r=e.resolveComponent("v-col"),h=e.resolveComponent("v-list-item"),p=e.resolveComponent("v-divider"),u=e.resolveComponent("v-combobox"),N=e.resolveComponent("v-btn"),g=e.resolveComponent("v-row");return e.openBlock(),e.createElementBlock("div",ie,[e.createVNode(g,{"no-gutters":!a.vertical},{default:e.withCtx(()=>[e.createVNode(r,{cols:i.colSize,class:"tpic-select pr-4","data-test":"select-target"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.selectedTargetName,"onUpdate:modelValue":[t[0]||(t[0]=n=>l.selectedTargetName=n),i.targetNameChanged],label:"Select Target","hide-details":"",density:"compact",variant:"outlined",items:l.targetNames,"item-title":"label","item-value":"value"},null,8,["modelValue","items","onUpdate:modelValue"])]),_:1},8,["cols"]),e.createVNode(r,{cols:i.colSize,class:"tpic-select pr-4","data-test":"select-packet"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.selectedPacketName,"onUpdate:modelValue":[t[2]||(t[2]=n=>l.selectedPacketName=n),i.packetNameChanged],label:"Select Packet","hide-details":"",density:"compact",variant:"outlined",disabled:l.packetsDisabled||i.autocompleteDisabled,items:l.packetNames,"item-title":"label","item-value":"value"},e.createSlots({_:2},[i.includeLatestPacketInDropdown?{name:"prepend-item",fn:e.withCtx(()=>[e.createVNode(h,{title:"LATEST",onClick:t[1]||(t[1]=n=>i.packetNameChanged("LATEST"))}),e.createVNode(p)]),key:"0"}:void 0]),1032,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"]),a.chooseItem?(e.openBlock(),e.createBlock(r,{key:0,cols:i.colSize,class:"tpic-select pr-4","data-test":"select-item"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.selectedItemName,"onUpdate:modelValue":[t[3]||(t[3]=n=>l.selectedItemName=n),t[4]||(t[4]=n=>i.itemNameChanged(n))],label:"Select Item","hide-details":"",density:"compact",variant:"outlined",disabled:l.itemsDisabled||i.autocompleteDisabled,items:l.itemNames,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"])):e.createCommentVNode("",!0),a.chooseItem&&i.itemIsArray?(e.openBlock(),e.createBlock(r,{key:1,cols:"1",class:"tpic-select pr-4","data-test":"array-index",style:{"min-width":"105px"}},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:l.selectedArrayIndex,"onUpdate:modelValue":[t[5]||(t[5]=n=>l.selectedArrayIndex=n),t[6]||(t[6]=n=>i.indexChanged(n))],label:"Index","hide-details":"",density:"compact",variant:"outlined",disabled:l.itemsDisabled||i.autocompleteDisabled,items:i.arrayIndexes,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items"])]),_:1})):e.createCommentVNode("",!0),a.buttonText?(e.openBlock(),e.createBlock(r,{key:2,cols:i.colSize,style:{"max-width":"140px"}},{default:e.withCtx(()=>[e.createVNode(N,{disabled:i.buttonDisabled,color:"primary","data-test":"select-send",onClick:i.buttonPressed},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.actualButtonText),1)]),_:1},8,["disabled","onClick"])]),_:1},8,["cols"])):e.createCommentVNode("",!0)]),_:1},8,["no-gutters"]),a.selectTypes?(e.openBlock(),e.createBlock(g,{key:0,class:"pt-6","no-gutters":""},{default:e.withCtx(()=>[e.createVNode(r,{cols:i.colSize,class:"tpic-select pr-4","data-test":"data-type"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.selectedValueType,"onUpdate:modelValue":t[7]||(t[7]=n=>l.selectedValueType=n),label:"Value Type","hide-details":"",density:"compact",variant:"outlined",items:l.valueTypes},null,8,["modelValue","items"])]),_:1},8,["cols"]),e.createVNode(r,{cols:i.colSize,class:"tpic-select pr-4","data-test":"reduced"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.selectedReduced,"onUpdate:modelValue":t[8]||(t[8]=n=>l.selectedReduced=n),label:"Reduced","hide-details":"",density:"compact",variant:"outlined",items:l.reductionModes},null,8,["modelValue","items"])]),_:1},8,["cols"]),e.createVNode(r,{cols:i.colSize,class:"tpic-select pr-4","data-test":"reduced-type"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:l.selectedReducedType,"onUpdate:modelValue":t[9]||(t[9]=n=>l.selectedReducedType=n),label:"Reduced Type","hide-details":"",density:"compact",variant:"outlined",disabled:l.selectedReduced==="DECOM",items:l.reducedTypes},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"]),e.createVNode(r,{cols:i.colSize,style:{"max-width":"140px"}},null,8,["cols"])]),_:1})):e.createCommentVNode("",!0),e.createVNode(g,{"no-gutters":"",class:"pa-3"},{default:e.withCtx(()=>[e.createVNode(r,{cols:i.colSize,class:e.normalizeClass({"openc3-yellow":l.hazardous})},{default:e.withCtx(()=>[e.createTextVNode(" Description: "+e.toDisplayString(l.description)+" ",1),l.hazardous?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" (HAZARDOUS) ")],64)):e.createCommentVNode("",!0)]),_:1},8,["cols","class"])]),_:1})])}const oe=C._export_sfc(le,[["render",ae],["__scopeId","data-v-4e03f389"]]);exports.AceEditorModes=b.AceEditorModes;exports.OutputDialog=b.OutputDialog;exports.AceEditorUtils=T.AceEditorUtils;exports.TopBar=T.TopBar;exports.EditScreenDialog=_.EditScreenDialog;exports.EnvironmentDialog=_.EnvironmentDialog;exports.FileOpenSaveDialog=_.FileOpenSaveDialog;exports.Openc3Screen=_.Openc3Screen;exports.ScreenCompleter=_.ScreenCompleter;exports.DataViewerComponent=f.DataViewerComponent;exports.DataViewerHistoryComponent=f.DataViewerHistoryComponent;exports.CriticalCmdDialog=D.CriticalCmdDialog;exports.DetailsDialog=I.DetailsDialog;exports.EnvironmentChooser=k.EnvironmentChooser;exports.ScriptChooser=k.ScriptChooser;exports.Graph=V.Graph;exports.GraphEditDialog=V.GraphEditDialog;exports.GraphEditItemDialog=V.GraphEditItemDialog;exports.SimpleTextDialog=L.SimpleTextDialog;exports.TextBoxDialog=R.TextBoxDialog;exports.UpgradeToEnterpriseDialog=U.UpgradeToEnterpriseDialog;exports.Config=P;exports.LogMessages=Q;exports.NotFound=se;exports.OpenConfigDialog=W;exports.SaveConfigDialog=H;exports.TargetPacketItemChooser=oe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./OutputDialog-DgM7aoa-.cjs"),k=require("./TopBar-zJvwq8pr.cjs"),N=require("./Openc3Screen-BHHnSEoI.cjs"),g=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs"),e=require("vue"),w=require("./CustomIcon-Bop2mEnu.cjs"),V=require("./Graph-BJqtVAaV.cjs"),I=require("./cmdUtilities-ChD8v8-7.cjs"),T=require("./DetailsDialog-DEicfRO1.cjs"),B=require("./CriticalCmdDialog-C-UGhtjE.cjs"),R=require("./ScriptChooser-B6TGFTBN.cjs"),y=require("./icons.cjs"),U=require("./timeFilters-CJFxfjqN.cjs"),A=require("./format-B22VpiOS.cjs"),S=require("single-spa"),M=require("./SimpleTextDialog-CU6G5CBY.cjs"),P=require("./TextBoxDialog-DbD8P4Xc.cjs"),F=require("./UpgradeToEnterpriseDialog-BxHUptQB.cjs"),L={data:{configKey:"",dontSaveDefaultConfig:!1},methods:{loadDefaultConfig:function(){return localStorage[`${this.configKey}__default`]?JSON.parse(localStorage[`${this.configKey}__default`]):{}},saveDefaultConfig:function(o){this.dontSaveDefaultConfig!==!0&&(localStorage[`${this.configKey}__default`]=JSON.stringify(o))},openConfigBase:function(o,t=!1,i=null){new g.di().load_config(this.configKey,o).then(s=>{s?(this.$notify.normal({title:"Loading configuration",body:o}),i&&i(JSON.parse(s)),t||this.$route.fullPath.includes(o)||this.$router.push({query:{config:o}})):this.$notify.caution({title:"Unknown configuration",body:o})}).catch(s=>{s&&this.$notify.serious({title:`Error opening configuration: ${o}`,body:s})})},saveConfigBase:function(o,t){new g.di().save_config(this.configKey,o,JSON.stringify(t)).then(()=>{this.$notify.normal({title:"Saved configuration",body:o})}).catch(i=>{i&&this.$notify.serious({title:`Error saving configuration: ${o}`,body:i})})},resetConfigBase:function(){localStorage.removeItem(`${this.configKey}__default`);const o={...this.$route.query};delete o.config,this.$router.replace({query:o})}}},q={props:{configKey:String,modelValue:Boolean},data(){return{configs:[],headers:[{title:"Configuration",value:"config"},{title:"Actions",value:"actions",align:"end",sortable:!1}],search:null,selectedRows:[]}},computed:{selectedItem:function(){return this.selectedRows.length?this.configs.find(o=>o.configId===this.selectedRows[0]):null},error:function(){return this.selectedItem===""||this.selectedItem===null?"Must select a config":null},show:{get(){return this.modelValue},set(o){this.$emit("update:modelValue",o)}}},mounted(){let o=-1;new g.di().list_configs(this.configKey).then(t=>{this.configs=t.map(i=>(o+=1,{configId:o,config:i}))}).catch(t=>{this.$emit("warning",`Failed to connect to OpenC3. ${t}`)})},methods:{selectRow:function(o){this.selectedRows=[o.item.configId]},success:function(){this.selectedItem&&(this.$emit("success",this.selectedItem.config),this.show=!1,this.search=null,this.selectedRows=[])},cancel:function(){this.show=!1,this.search=null,this.selectedRows=[]},deleteConfig:function(o){this.$dialog.confirm(`Are you sure you want to delete: ${o.config}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{var i;((i=this.selectedItem)==null?void 0:i.config)===o.config&&(this.selectedRows=[]),this.configs.splice(this.configs.indexOf(o),1),new g.di().delete_config(this.configKey,o.config)}).catch(t=>{t!==!0&&this.$emit("warning",`Failed to delete config ${o.config} Error: ${t}`)})}}},K={class:"mt-4 pa-3"},G=["textContent"];function $(o,t,i,s,n,a){const c=e.resolveComponent("v-spacer"),p=e.resolveComponent("v-toolbar"),m=e.resolveComponent("v-text-field"),r=e.resolveComponent("v-row"),h=e.resolveComponent("v-btn"),v=e.resolveComponent("v-data-table"),f=e.resolveComponent("v-card-text"),_=e.resolveComponent("v-card-actions"),d=e.resolveComponent("v-card"),x=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(x,{modelValue:a.show,"onUpdate:modelValue":t[4]||(t[4]=l=>a.show=l),width:"600",onKeydown:e.withKeys(a.cancel,["esc"])},{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[e.createElementVNode("form",{onSubmit:t[3]||(t[3]=e.withModifiers((...l)=>a.success&&a.success(...l),["prevent"]))},[e.createVNode(p,{height:"24"},{default:e.withCtx(()=>[e.createVNode(c),t[5]||(t[5]=e.createElementVNode("span",null,"Open Configuration",-1)),e.createVNode(c)]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",K,[e.createVNode(r,{dense:""},{default:e.withCtx(()=>[e.createVNode(m,{modelValue:n.search,"onUpdate:modelValue":t[0]||(t[0]=l=>n.search=l),label:"search",type:"text","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","clear-icon":"mdi-close-circle-outline",autofocus:"","single-line":"","hide-details":"","data-test":"search"},null,8,["modelValue"])]),_:1}),e.createVNode(v,{modelValue:n.selectedRows,"onUpdate:modelValue":t[1]||(t[1]=l=>n.selectedRows=l),"show-select":"","select-strategy":"single","item-value":"configId",search:n.search,headers:n.headers,items:n.configs,"items-per-page":5,"items-per-page-options":[5],"onClick:row":t[2]||(t[2]=(l,C)=>a.selectRow(C))},{"item.actions":e.withCtx(({item:l})=>[e.createVNode(h,{class:"mt-1",icon:"mdi-delete",variant:"text","data-test":"item-delete",onClick:C=>a.deleteConfig(l)},null,8,["onClick"])]),_:1},8,["modelValue","search","headers","items"]),e.createVNode(r,{dense:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(a.error)},null,8,G),[[e.vShow,a.error]])]),_:1})])]),_:1}),e.createVNode(_,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(c),e.createVNode(h,{variant:"outlined","data-test":"open-config-cancel-btn",onClick:a.cancel},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode(" Cancel ",-1)])]),_:1},8,["onClick"]),e.createVNode(h,{variant:"flat",type:"submit","data-test":"open-config-submit-btn",disabled:!!a.error,onClick:e.withModifiers(a.success,["prevent"])},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Ok ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})],32)]),_:1})]),_:1},8,["modelValue","onKeydown"])}const j=w._export_sfc(q,[["render",$]]),H={props:{configKey:String,modelValue:Boolean},data(){return{configName:"",configs:[],headers:[{title:"Configuration",value:"config"},{title:"Actions",value:"actions",align:"end",sortable:!1}],search:null,selectedRows:[]}},computed:{selectedItem:function(){return this.selectedRows.length?this.configs.find(o=>o.configId===this.selectedRows[0]):null},error:function(){return this.configName?null:"Config must have a name"},show:{get(){return this.modelValue},set(o){this.$emit("update:modelValue",o)}}},watch:{selectedItem:function(o){o&&(this.configName=o.config)}},mounted(){let o=-1;new g.di().list_configs(this.configKey).then(t=>{this.configs=t.map(i=>(o+=1,{configId:o,config:i}))}).catch(t=>{this.$emit("warning",`Failed to connect to OpenC3. ${t}`)})},methods:{selectRow:function(o){this.selectedRows=[o.item.configId]},success:function(){this.$emit("success",this.configName),this.show=!1,this.search=null,this.selectedRows=[],this.configName=""},cancel:function(){this.show=!1,this.search=null,this.selectedRows=[],this.configName=""},deleteConfig:function(o){this.$dialog.confirm(`Are you sure you want to delete: ${o.config}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{var i;((i=this.selectedItem)==null?void 0:i.config)===o.config&&(this.selectedRows=[],this.configName=""),this.configs.splice(this.configs.indexOf(o),1),new g.di().delete_config(this.configKey,o.config)}).catch(t=>{t!==!0&&this.$emit("warning",`Failed to delete config ${o.config} Error: ${t}`)})}}},z={class:"mt-4 pa-3"},W=["textContent"];function J(o,t,i,s,n,a){const c=e.resolveComponent("v-spacer"),p=e.resolveComponent("v-toolbar"),m=e.resolveComponent("v-text-field"),r=e.resolveComponent("v-row"),h=e.resolveComponent("v-btn"),v=e.resolveComponent("v-data-table"),f=e.resolveComponent("v-card-text"),_=e.resolveComponent("v-card-actions"),d=e.resolveComponent("v-card"),x=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(x,{modelValue:a.show,"onUpdate:modelValue":t[5]||(t[5]=l=>a.show=l),width:"600",onKeydown:e.withKeys(a.cancel,["esc"])},{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[e.createElementVNode("form",{onSubmit:t[4]||(t[4]=e.withModifiers((...l)=>a.success&&a.success(...l),["prevent"]))},[e.createVNode(p,{height:"24"},{default:e.withCtx(()=>[e.createVNode(c),t[6]||(t[6]=e.createElementVNode("span",null,"Save Configuration",-1)),e.createVNode(c)]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",z,[e.createVNode(r,{dense:""},{default:e.withCtx(()=>[e.createVNode(m,{modelValue:n.search,"onUpdate:modelValue":t[0]||(t[0]=l=>n.search=l),label:"search",type:"text","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","clear-icon":"mdi-close-circle-outline","single-line":"","hide-details":"","data-test":"search"},null,8,["modelValue"])]),_:1}),e.createVNode(v,{modelValue:n.selectedRows,"onUpdate:modelValue":t[1]||(t[1]=l=>n.selectedRows=l),"show-select":"","select-strategy":"single","item-value":"configId",search:n.search,headers:n.headers,items:n.configs,"items-per-page":5,"items-per-page-options":[5],"onClick:row":t[2]||(t[2]=(l,C)=>a.selectRow(C))},{"item.actions":e.withCtx(({item:l})=>[e.createVNode(h,{class:"mt-1",icon:"mdi-delete",variant:"text","data-test":"item-delete",onClick:C=>a.deleteConfig(l)},null,8,["onClick"])]),_:1},8,["modelValue","search","headers","items"]),e.createVNode(r,{dense:""},{default:e.withCtx(()=>[e.createVNode(m,{modelValue:n.configName,"onUpdate:modelValue":t[3]||(t[3]=l=>n.configName=l),"hide-details":"",autofocus:"",disabled:!!a.selectedItem,label:"Configuration Name","data-test":"name-input-save-config-dialog"},null,8,["modelValue","disabled"])]),_:1}),e.createVNode(r,{dense:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(a.error)},null,8,W),[[e.vShow,a.error]])]),_:1})])]),_:1}),e.createVNode(_,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(c),e.createVNode(h,{variant:"outlined",onClick:a.cancel},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Cancel ",-1)])]),_:1},8,["onClick"]),e.createVNode(h,{variant:"flat",type:"submit","data-test":"save-config-submit-btn",disabled:!!a.error,onClick:e.withModifiers(a.success,["prevent"])},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Ok ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})],32)]),_:1})]),_:1},8,["modelValue","onKeydown"])}const Z=w._export_sfc(H,[["render",J]]),X={name:"CommandParameterEditor",mixins:[I.CmdUtilities],props:{modelValue:{type:[String,Number],default:void 0},states:{type:Object,default:()=>null},statesInHex:{type:Boolean,default:!1}},emits:["update:modelValue"],computed:{textFieldValue(){return this.convertToString(this.modelValue)},stateValue(){return this.statesInHex?"0x"+this.modelValue.toString(16):this.modelValue},selectValue(){return this.modelValue===""?null:this.modelValue},stateOptions(){return this.states?Object.keys(this.states).map(o=>({label:o,...this.states[o]})):null},hazardous(){var o,t;return((t=(o=Object.entries(this.states).find(([i,s])=>s.value===this.modelValue))==null?void 0:o.at(1))==null?void 0:t.hazardous)!==void 0},stateClass(){return this.hazardous?"hazardous mr-4":"mr-4"}},methods:{handleChange(o){this.$emit("update:modelValue",o)}}},Y={key:1,class:"d-flex align-center"};function Q(o,t,i,s,n,a){const c=e.resolveComponent("v-text-field"),p=e.resolveComponent("v-select");return e.openBlock(),e.createElementBlock("div",null,[i.states?(e.openBlock(),e.createElementBlock("div",Y,[e.createVNode(p,{items:a.stateOptions,"model-value":a.selectValue,"item-title":"label",class:e.normalizeClass(a.stateClass),"hide-details":"",density:"compact",variant:"outlined",placeholder:"Select...","min-width":"120px","data-test":"cmd-param-select","onUpdate:modelValue":a.handleChange},null,8,["items","model-value","class","onUpdate:modelValue"]),e.createVNode(c,{"model-value":a.stateValue,disabled:"","hide-details":"",density:"compact",variant:"outlined","min-width":"60px","data-test":"cmd-param-value"},null,8,["model-value"])])):(e.openBlock(),e.createBlock(c,{key:0,"model-value":a.textFieldValue,"hide-details":"",density:"compact",variant:"filled","data-test":"cmd-param-value","onUpdate:modelValue":a.handleChange},null,8,["model-value","onUpdate:modelValue"]))])}const O=w._export_sfc(X,[["render",Q],["__scopeId","data-v-b38d5e7f"]]),ee={name:"CommandEditor",components:{TargetPacketItemChooser:V.TargetPacketItemChooser,CommandParameterEditor:O,DetailsDialog:T.DetailsDialog},mixins:[I.CmdUtilities],props:{initialTargetName:{type:String,default:null},initialPacketName:{type:String,default:null},cmdString:{type:String,default:null},sendDisabled:{type:Boolean,default:!1},statesInHex:{type:Boolean,default:!1},showIgnoredParams:{type:Boolean,default:!1},cmdRaw:{type:Boolean,default:!1},showCommandButton:{type:Boolean,default:!0}},emits:["command-changed","build-cmd"],data(){return{search:"",headers:[{title:"Name",value:"parameter_name"},{title:"Value or State",value:"val"},{title:"Units",value:"units"},{title:"Range",value:"range"},{title:"Description",value:"description"}],api:null,targetName:"",commandName:"",commandDescription:"",ignoredParams:[],computedRows:[],reservedItemNames:["PACKET_TIMESECONDS","PACKET_TIMEFORMATTED","RECEIVED_TIMESECONDS","RECEIVED_TIMEFORMATTED","RECEIVED_COUNT"],contextMenuShown:!1,viewDetails:!1,parameterName:"",x:0,y:0,contextMenuOptions:[{title:"Details",action:()=>{this.contextMenuShown=!1,this.viewDetails=!0}}]}},created(){this.api=new g.di,this.cmdString?this.processCmdString():(this.targetName=this.initialTargetName,this.commandName=this.initialPacketName,this.updateCmdParams())},methods:{commandChanged(o){(this.targetName!==o.targetName||this.commandName!==o.packetName)&&(this.targetName=o.targetName,this.commandName=o.packetName,this.updateCmdParams()),this.$emit("command-changed",o)},buildCmd(o){this.$emit("build-cmd",o)},showContextMenu(o,t){o.preventDefault(),this.parameterName=t.item.parameter_name,this.contextMenuShown=!1,this.x=o.clientX,this.y=o.clientY,this.$nextTick(()=>{this.contextMenuShown=!0})},updateCmdParams(){this.ignoredParams=[],this.computedRows=[],this.targetName&&this.commandName&&this.api.get_target(this.targetName).then(o=>(this.ignoredParams=o.ignored_parameters,this.api.get_cmd(this.targetName,this.commandName)),o=>{console.error("Error getting ignored parameters:",o)}).then(o=>{o&&(o.items.forEach(t=>{if(!this.reservedItemNames.includes(t.name)&&(!this.ignoredParams.includes(t.name)||this.showIgnoredParams)){let i=t.default;!t.states&&t.data_type==="STRING"&&typeof t.default=="string"&&(i=`'${i}'`),t.required&&(i=null),t.format_string&&t.default&&(i=sprintf(t.format_string,t.default));let s="N/A";t.minimum!=null&&t.maximum!=null&&(t.data_type==="FLOAT"&&(t.minimum<-1e6&&Number.isSafeInteger(t.minimum)&&(t.minimum=t.minimum.toExponential(3)),t.maximum>1e6&&Number.isSafeInteger(t.maximum)&&(t.maximum=t.maximum.toExponential(3))),s=`${t.minimum}..${t.maximum}`),this.computedRows.push({parameter_name:t.name,val:i,states:t.states,description:t.description,range:s,units:t.units,type:t.data_type})}}),this.commandDescription=o.description,this.populateParametersFromParsed())},o=>{console.error("Error getting command parameters:",o)})},triggerUpdateCmdParams(){this.updateCmdParams()},getRows(){return this.computedRows},getCmdString(){let o=`${this.targetName} ${this.commandName}`;if(this.computedRows.length===0)return o;o+=" with ";for(const t of this.computedRows){if(t.val===null)throw new Error(`Required parameter ${t.parameter_name} not set`);if(t.val!==null&&t.val!==void 0&&t.val!==""){if(t.states){const s=Object.entries(t.states).find(([,n])=>n.value===t.val);if(s){o+=` ${t.parameter_name} '${s[0]}',`;continue}}let i=this.convertToString(t.val);i.includes(" ")&&!this.isArray(i)?o+=` ${t.parameter_name} '${i}',`:o+=` ${t.parameter_name} ${i},`}}return o.slice(0,-1)},parseCmdString(o){const t=o.split(" ");if(t.length<2)return{target:"",command:"",params:{}};if(t.length===2)return{target:t[0],command:t[1],params:{}};if(t[2]!=="with")return{target:"",command:"",params:{}};const i=t[0],s=t[1];let n={};const a=o.split(" with ")[1];let c=[],p=0,m="";for(let r of a)r==="["?(p++,m+=r):r==="]"?(p--,m+=r):r===","&&p===0?(c.push(m.trim()),m=""):m+=r;m.trim()!==""&&c.push(m.trim());for(let r of c){let h=r.indexOf(" ");if(h>0){let v=r.substring(0,h).trim(),f=r.substring(h+1).trim();n[v]=f}}return{target:i,command:s,params:n}},processCmdString(){const o=this.parseCmdString(this.cmdString);o.target&&o.command&&(this.targetName=o.target,this.commandName=o.command,this.parsedParameters=o.params,this.updateCmdParams())},populateParametersFromParsed(){!this.parsedParameters||Object.keys(this.parsedParameters).length===0||this.$nextTick(()=>{setTimeout(()=>{this.computedRows.forEach(o=>{if(this.parsedParameters.hasOwnProperty(o.parameter_name)){const t=this.parsedParameters[o.parameter_name];if(o.states&&typeof t=="string"){const i=Object.keys(o.states).find(s=>s===t||s.toLowerCase()===t.toLowerCase());i?o.val=o.states[i].value:o.val=t}else o.type==="STRING"&&typeof t=="string"?o.val=t.startsWith("'")||t.startsWith('"')?t:`'${t}'`:o.val=t}})},100)})}}},te={style:{padding:"10px"}};function oe(o,t,i,s,n,a){const c=e.resolveComponent("target-packet-item-chooser"),p=e.resolveComponent("v-spacer"),m=e.resolveComponent("v-text-field"),r=e.resolveComponent("v-card-title"),h=e.resolveComponent("command-parameter-editor"),v=e.resolveComponent("v-data-table"),f=e.resolveComponent("v-card"),_=e.resolveComponent("v-list-item-title"),d=e.resolveComponent("v-list-item"),x=e.resolveComponent("v-list"),l=e.resolveComponent("v-menu"),C=e.resolveComponent("details-dialog");return e.openBlock(),e.createBlock(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",te,[e.createVNode(c,{"initial-target-name":n.targetName,"initial-packet-name":n.commandName,disabled:i.sendDisabled,"button-text":i.showCommandButton?"Send":null,mode:"cmd",onOnSet:t[0]||(t[0]=u=>a.commandChanged(u)),onAddItem:t[1]||(t[1]=u=>a.buildCmd(u))},null,8,["initial-target-name","initial-packet-name","disabled","button-text"])]),n.computedRows.length!==0?(e.openBlock(),e.createBlock(f,{key:0},{default:e.withCtx(()=>[e.createVNode(r,{class:"d-flex align-center justify-content-space-between"},{default:e.withCtx(()=>[t[5]||(t[5]=e.createTextVNode(" Parameters ",-1)),e.createVNode(p),e.createVNode(m,{modelValue:n.search,"onUpdate:modelValue":t[2]||(t[2]=u=>n.search=u),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"",class:"search"},null,8,["modelValue"])]),_:1}),e.createVNode(v,{headers:n.headers,items:n.computedRows,search:n.search,"items-per-page":-1,"hide-default-footer":"","multi-sort":"",density:"compact","onContextmenu:row":a.showContextMenu},{"item.val":e.withCtx(({item:u})=>[e.renderSlot(o.$slots,"parameter-editor",{item:u,statesInHex:i.statesInHex},()=>[e.createVNode(h,{modelValue:u.val,"onUpdate:modelValue":b=>u.val=b,states:u.states,"states-in-hex":i.statesInHex},null,8,["modelValue","onUpdate:modelValue","states","states-in-hex"])])]),_:3},8,["headers","items","search","onContextmenu:row"])]),_:3})):e.createCommentVNode("",!0),e.createVNode(l,{modelValue:n.contextMenuShown,"onUpdate:modelValue":t[3]||(t[3]=u=>n.contextMenuShown=u),target:[n.x,n.y]},{default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.contextMenuOptions,(u,b)=>(e.openBlock(),e.createBlock(d,{key:b,onClick:e.withModifiers(u.action,["stop"])},{default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.title),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1},8,["modelValue","target"]),e.createVNode(C,{modelValue:n.viewDetails,"onUpdate:modelValue":t[4]||(t[4]=u=>n.viewDetails=u),"target-name":n.targetName,"packet-name":n.commandName,"item-name":n.parameterName,type:"cmd"},null,8,["modelValue","target-name","packet-name","item-name"])]),_:3})}const ne=w._export_sfc(ee,[["render",oe]]),ie={mixins:[U.TimeFilters],props:{historyCount:{type:Number,default:200},timeZone:{type:String,default:"local"}},data(){return{AstroStatusColors:y.AstroStatusColors,data:[],shownData:[],logLevels:["DEBUG","INFO","WARN","ERROR","FATAL"],logLevel:"INFO",search:"",headers:[{title:"Time",value:"timestamp",nowrap:!0},{title:"Level",value:"level"},{title:"Source",value:"microservice_name"},{title:"Message",value:"message"}],cable:new g.ui,subscription:null,paused:!1}},computed:{buttonIcon:function(){return this.paused?"mdi-play":"mdi-pause"}},watch:{logLevel:function(o,t){this.createSubscription()}},created(){this.createSubscription()},unmounted(){this.subscription&&this.subscription.unsubscribe(),this.cable.disconnect()},methods:{pause:function(){this.paused=!this.paused},createSubscription(){this.subscription&&(this.subscription.unsubscribe(),this.data=[],this.shownData=this.data),this.cable.createSubscription("MessagesChannel",window.openc3Scope,{received:o=>{this.cable.recordPing(),o.length>this.historyCount&&o.splice(0,o.length-this.historyCount),o=o.filter(t=>{switch(this.logLevel){case"DEBUG":return!0;case"INFO":if(t.level!=="DEBUG")return!0;break;case"WARN":if(t.level!=="DEBUG"&&t.level!=="INFO")return!0;break;case"ERROR":if(t.level!=="DEBUG"&&t.level!=="INFO"&&t.level!=="WARN")return!0;break;case"FATAL":if(t.level!=="DEBUG"&&t.level!=="INFO"&&t.level!=="WARN"&&t.level!=="ERROR")return!0;break}return!1}),o.map(t=>{if(t.timestamp=this.formatTimestamp(t["@timestamp"],this.timeZone),t.message.raw&&t.message.json_class==="String"){let i="0x";for(let s=0;s<t.message.raw.length;s++){let n=t.message.raw[s].toString(16).toUpperCase();n.length<2&&(n="0"+n),i+=n}t.message=i}else t.message=t.message.replaceAll("\\n",`
|
|
2
|
+
`)}),this.data=o.reverse().concat(this.data),this.data.length>this.historyCount&&(this.data.length=this.historyCount),this.paused||(this.shownData=this.data)}},{history_count:this.historyCount,types:["log","notification","alert"]}).then(o=>{this.subscription=o})},getColor(o){return y.AstroStatusColors[y.UnknownToAstroStatus[o]]},getStatus(o){return y.UnknownToAstroStatus[o]},downloadLog(){const o=this.shownData.map(s=>`${s.timestamp} | ${s.level} | ${s.microservice_name} | ${s.message}`).join(`
|
|
3
|
+
`),t=new Blob([o],{type:"text/plain"}),i=document.createElement("a");i.href=URL.createObjectURL(t),i.setAttribute("download",A.format(Date.now(),"yyyy_MM_dd_HH_mm_ss")+"_message_log.txt"),i.click()},clearLog:function(){this.$dialog.confirm("Are you sure you want to clear the log?",{okText:"Clear",cancelText:"Cancel"}).then(o=>{this.data=[],this.shownData=[]}).catch(function(o){})}}},ae={class:"d-flex align-baseline"},se=["title","datetime"],le={style:{"white-space":"pre-wrap"}};function re(o,t,i,s,n,a){const c=e.resolveComponent("v-btn"),p=e.resolveComponent("v-spacer"),m=e.resolveComponent("v-select"),r=e.resolveComponent("v-text-field"),h=e.resolveComponent("v-card-title"),v=e.resolveComponent("rux-status"),f=e.resolveComponent("v-data-table"),_=e.resolveComponent("v-card");return e.openBlock(),e.createBlock(_,null,{default:e.withCtx(()=>[e.createVNode(h,{class:"d-flex align-center justify-content-space-between"},{default:e.withCtx(()=>[e.createElementVNode("div",ae,[e.createVNode(c,{icon:"mdi-download",variant:"text",size:"small",class:"mr-2","data-test":"download-log",onClick:a.downloadLog},null,8,["onClick"]),t[2]||(t[2]=e.createElementVNode("span",null," Log Messages ",-1)),e.createVNode(c,{icon:a.buttonIcon,variant:"text","data-test":"pause",onClick:a.pause},null,8,["icon","onClick"])]),e.createVNode(p),e.createVNode(m,{modelValue:n.logLevel,"onUpdate:modelValue":t[0]||(t[0]=d=>n.logLevel=d),label:"Filter by log level","hide-details":"",variant:"outlined",density:"compact",items:n.logLevels,class:"mr-2",style:{"max-width":"150px"},"data-test":"log-messages-level"},null,8,["modelValue","items"]),e.createVNode(p),e.createVNode(r,{modelValue:n.search,"onUpdate:modelValue":t[1]||(t[1]=d=>n.search=d),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"",style:{"max-width":"300px"},class:"search","data-test":"search-log-messages"},null,8,["modelValue"]),e.createVNode(c,{icon:"mdi-delete-sweep",variant:"text",class:"ml-2","data-test":"clear-log",onClick:a.clearLog},null,8,["onClick"])]),_:1}),e.createVNode(f,{headers:n.headers,items:n.shownData,search:n.search,"items-per-page":-1,"hide-default-footer":"","multi-sort":"",density:"compact",sticky:"",hover:"","data-test":"log-messages"},{"item.timestamp":e.withCtx(({item:d})=>[e.createElementVNode("time",{title:d.timestamp,datetime:d.timestamp},e.toDisplayString(d.timestamp),9,se)]),"item.level":e.withCtx(({item:d})=>[e.createElementVNode("span",{style:e.normalizeStyle("display: inline-flex; color:"+a.getColor(d.level))},[e.createVNode(v,{class:"mr-1",status:a.getStatus(d.level)},null,8,["status"]),e.createTextVNode(" "+e.toDisplayString(d.level),1)],4)]),"item.message":e.withCtx(({item:d})=>[e.createElementVNode("div",le,e.toDisplayString(d.message),1)]),_:1},8,["headers","items","search"])]),_:1})}const ce=w._export_sfc(ie,[["render",re],["__scopeId","data-v-081e936f"]]),de=50,me=2e3,E="single-spa:app-change",ue={data(){return{appsMounted:!1,show:!1,hideSpinner:!1,pollInterval:null}},computed:{showSpinner:function(){return!this.hideSpinner&&!this.show}},created(){window.addEventListener(E,this.handleAppChange)},mounted(){this.pollForMountedApps(),setTimeout(()=>{this.appsMounted||(this.show=!0,this.pollInterval&&clearInterval(this.pollInterval))},me)},unmounted(){window.removeEventListener(E,this.handleAppChange),this.pollInterval&&clearInterval(this.pollInterval)},methods:{handleAppChange:function(o){this.show=!o.detail.appsByNewStatus.MOUNTED},pollForMountedApps:function(){this.pollInterval=setInterval(()=>{this.appsMounted=S.getMountedApps().length>0,S.getMountedApps().length>0&&(this.hideSpinner=!0,clearInterval(this.pollInterval))},de)}}},pe={class:"mx-1"},he={key:1,class:"d-flex justify-center align-center"};function fe(o,t,i,s,n,a){const c=e.resolveComponent("v-card-title"),p=e.resolveComponent("v-card-text"),m=e.resolveComponent("v-card"),r=e.resolveComponent("v-progress-circular");return e.openBlock(),e.createElementBlock(e.Fragment,null,[n.show?(e.openBlock(),e.createBlock(m,{key:0},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[...t[0]||(t[0]=[e.createTextVNode(" 404 Not Found ",-1)])]),_:1}),e.createVNode(p,{class:"d-flex align-center mt-3"},{default:e.withCtx(()=>[t[1]||(t[1]=e.createTextVNode(" The requested URL ",-1)),e.createElementVNode("code",pe,e.toDisplayString(o.$route.fullPath),1),t[2]||(t[2]=e.createTextVNode(" was not routable. ",-1)),t[3]||(t[3]=e.createElementVNode("span",{class:"text-h3 mx-1"}," 🦄 ",-1))]),_:1})]),_:1})):e.createCommentVNode("",!0),a.showSpinner?(e.openBlock(),e.createElementBlock("div",he,[e.createVNode(r,{indeterminate:""})])):e.createCommentVNode("",!0)],64)}const ge=w._export_sfc(ue,[["render",fe]]);exports.AceEditorModes=D.AceEditorModes;exports.OutputDialog=D.OutputDialog;exports.AceEditorUtils=k.AceEditorUtils;exports.TopBar=k.TopBar;exports.EditScreenDialog=N.EditScreenDialog;exports.EnvironmentDialog=N.EnvironmentDialog;exports.FileOpenSaveDialog=N.FileOpenSaveDialog;exports.Openc3Screen=N.Openc3Screen;exports.ScreenCompleter=N.ScreenCompleter;exports.DataViewerComponent=g.DataViewerComponent;exports.DataViewerHistoryComponent=g.DataViewerHistoryComponent;exports.Graph=V.Graph;exports.GraphEditDialog=V.GraphEditDialog;exports.GraphEditItemDialog=V.GraphEditItemDialog;exports.TargetPacketItemChooser=V.TargetPacketItemChooser;exports.DetailsDialog=T.DetailsDialog;exports.CriticalCmdDialog=B.CriticalCmdDialog;exports.EnvironmentChooser=R.EnvironmentChooser;exports.ScriptChooser=R.ScriptChooser;exports.SimpleTextDialog=M.SimpleTextDialog;exports.TextBoxDialog=P.TextBoxDialog;exports.UpgradeToEnterpriseDialog=F.UpgradeToEnterpriseDialog;exports.CommandEditor=ne;exports.CommandParameterEditor=O;exports.Config=L;exports.LogMessages=ce;exports.NotFound=ge;exports.OpenConfigDialog=j;exports.SaveConfigDialog=Z;
|
|
4
4
|
//# sourceMappingURL=components.cjs.map
|
package/dist/components.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.cjs","sources":["../src/components/config/Config.js","../src/components/config/OpenConfigDialog.vue","../src/components/config/SaveConfigDialog.vue","../src/components/LogMessages.vue","../src/components/NotFound.vue","../src/components/TargetPacketItemChooser.vue"],"sourcesContent":["/*\n# Copyright 2023 OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n data: {\n configKey: '',\n // Applications can set to avoid persisting default config\n // Useful when loading and setting existing config\n dontSaveDefaultConfig: false,\n },\n methods: {\n loadDefaultConfig: function () {\n if (localStorage[`${this.configKey}__default`]) {\n return JSON.parse(localStorage[`${this.configKey}__default`])\n } else {\n return {}\n }\n },\n saveDefaultConfig: function (config) {\n if (this.dontSaveDefaultConfig === true) {\n return\n }\n localStorage[`${this.configKey}__default`] = JSON.stringify(config)\n },\n openConfigBase: function (name, routed = false, callback = null) {\n new OpenC3Api()\n .load_config(this.configKey, name)\n .then((response) => {\n if (response) {\n this.$notify.normal({\n title: 'Loading configuration',\n body: name,\n })\n if (callback) callback(JSON.parse(response))\n if (!routed) {\n if (!this.$route.fullPath.includes(name)) {\n this.$router.push({\n query: {\n config: name,\n },\n })\n }\n }\n } else {\n this.$notify.caution({\n title: 'Unknown configuration',\n body: name,\n })\n }\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error opening configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n saveConfigBase: function (name, config) {\n new OpenC3Api()\n .save_config(this.configKey, name, JSON.stringify(config))\n .then(() => {\n this.$notify.normal({\n title: 'Saved configuration',\n body: name,\n })\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error saving configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n resetConfigBase: function () {\n localStorage.removeItem(`${this.configKey}__default`)\n\n const query = { ...this.$route.query }\n delete query.config\n this.$router.replace({ query })\n },\n },\n}\n","<!--\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 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n autofocus\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"open-config-cancel-btn\"\n @click=\"cancel\"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n if (!this.selectedItem) return\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\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 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (!this.configName) {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n watch: {\n selectedItem: function (val) {\n if (val) {\n this.configName = val.config\n }\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\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 <v-card>\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n <div class=\"d-flex align-baseline\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"download-log\"\n @click=\"downloadLog\"\n />\n <span> Log Messages </span>\n <v-btn\n :icon=\"buttonIcon\"\n variant=\"text\"\n data-test=\"pause\"\n @click=\"pause\"\n />\n </div>\n <v-spacer />\n <v-select\n v-model=\"logLevel\"\n label=\"Filter by log level\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n :items=\"logLevels\"\n class=\"mr-2\"\n style=\"max-width: 150px\"\n data-test=\"log-messages-level\"\n />\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n style=\"max-width: 300px\"\n class=\"search\"\n data-test=\"search-log-messages\"\n />\n <v-btn\n icon=\"mdi-delete-sweep\"\n variant=\"text\"\n class=\"ml-2\"\n data-test=\"clear-log\"\n @click=\"clearLog\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"shownData\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n sticky\n hover\n data-test=\"log-messages\"\n >\n <template #item.timestamp=\"{ item }\">\n <time :title=\"item.timestamp\" :datetime=\"item.timestamp\">\n {{ item.timestamp }}\n </time>\n </template>\n <template #item.level=\"{ item }\">\n <span :style=\"'display: inline-flex; color:' + getColor(item.level)\">\n <rux-status class=\"mr-1\" :status=\"getStatus(item.level)\"></rux-status>\n {{ item.level }}</span\n >\n </template>\n <template #item.message=\"{ item }\">\n <div style=\"white-space: pre-wrap\">{{ item.message }}</div>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { format } from 'date-fns'\nimport { Cable } from '@openc3/js-common/services'\nimport { AstroStatusColors, UnknownToAstroStatus } from '@/icons'\nimport { TimeFilters } from '@/util'\n\nexport default {\n mixins: [TimeFilters],\n props: {\n historyCount: {\n type: Number,\n default: 200,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n AstroStatusColors,\n data: [],\n shownData: [],\n logLevels: ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],\n logLevel: 'INFO',\n search: '',\n headers: [\n { title: 'Time', value: 'timestamp', nowrap: true },\n { title: 'Level', value: 'level' },\n { title: 'Source', value: 'microservice_name' },\n { title: 'Message', value: 'message' },\n ],\n cable: new Cable(),\n subscription: null,\n paused: false,\n }\n },\n computed: {\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n },\n watch: {\n logLevel: function (newVal, oldVal) {\n this.createSubscription()\n },\n },\n created() {\n this.createSubscription()\n },\n unmounted() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n pause: function () {\n this.paused = !this.paused\n },\n createSubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.data = []\n this.shownData = this.data\n }\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (messages) => {\n this.cable.recordPing()\n if (messages.length > this.historyCount) {\n messages.splice(0, messages.length - this.historyCount)\n }\n // Filter messages before they're added to the table\n // This prevents a bunch of invisible 'INFO' messages from pushing\n // off the 'WARN' or 'ERROR' messages if we filter inside the data-table\n messages = messages.filter((message) => {\n switch (this.logLevel) {\n case 'DEBUG':\n return true\n case 'INFO':\n if (message.level !== 'DEBUG') {\n return true\n }\n break\n case 'WARN':\n if (message.level !== 'DEBUG' && message.level !== 'INFO') {\n return true\n }\n break\n case 'ERROR':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN'\n ) {\n return true\n }\n break\n case 'FATAL':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN' &&\n message.level !== 'ERROR'\n ) {\n return true\n }\n break\n }\n return false\n })\n messages.map((message) => {\n message.timestamp = this.formatTimestamp(\n message['@timestamp'],\n this.timeZone,\n )\n if (\n message.message.raw &&\n message.message.json_class === 'String'\n ) {\n // This is binary data, display in hex.\n let result = '0x'\n for (let i = 0; i < message.message.raw.length; i++) {\n let nibble = message.message.raw[i]\n .toString(16)\n .toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n result += nibble\n }\n message.message = result\n } else {\n message.message = message.message.replaceAll('\\\\n', '\\n')\n }\n })\n this.data = messages.reverse().concat(this.data)\n if (this.data.length > this.historyCount) {\n this.data.length = this.historyCount\n }\n if (!this.paused) {\n this.shownData = this.data\n }\n },\n },\n {\n // Channel parameter is history_count with underscore\n history_count: this.historyCount,\n types: ['log', 'notification', 'alert'],\n },\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n getColor(level) {\n return AstroStatusColors[UnknownToAstroStatus[level]]\n },\n getStatus(level) {\n return UnknownToAstroStatus[level]\n },\n downloadLog() {\n const output = this.shownData\n .map(\n (entry) =>\n // Other fields are available like container_name, msg_id ... probably not useful\n `${entry.timestamp} | ${entry.level} | ${entry.microservice_name} | ${entry.message}`,\n )\n .join('\\n')\n const blob = new Blob([output], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute(\n 'download',\n format(Date.now(), 'yyyy_MM_dd_HH_mm_ss') + '_message_log.txt',\n )\n link.click()\n },\n clearLog: function () {\n this.$dialog\n .confirm('Are you sure you want to clear the log?', {\n okText: 'Clear',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n this.data = []\n this.shownData = []\n })\n .catch(function (err) {\n // Canceling the dialog forces catch and sets err to true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n /* take up any remaining vertical space\n (e.g. whatever is left after the tabs in cmdtlmserver)\n */\n flex-grow: 1;\n\n /* flex so the table can grow without making the card itself scroll */\n display: flex;\n flex-direction: column;\n}\n.v-data-table {\n height: 25vh; /* give it at least a bit of height to start with */\n flex-grow: 1; /* and then grow to fill all the space it can */\n}\n</style>\n","<!--\n# Copyright 2024 OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card v-if=\"show\">\n <v-card-title> 404 Not Found </v-card-title>\n <v-card-text class=\"d-flex align-center mt-3\">\n The requested URL\n <code class=\"mx-1\"> {{ $route.fullPath }} </code>\n was not routable.\n <span class=\"text-h3 mx-1\"> 🦄 </span>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { getMountedApps } from 'single-spa'\n\nconst SINGLE_SPA_APP_CHANGE_EVENT = 'single-spa:app-change'\n\n// This component is actually always loaded for every route other than /login\n// because of the catch-all path in tool-base's router, so we need logic to\n// hide it when a tool is loaded.\nexport default {\n data() {\n return {\n show: false,\n }\n },\n created() {\n window.addEventListener(SINGLE_SPA_APP_CHANGE_EVENT, this.handleAppChange)\n },\n mounted() {\n // Give single-spa some time to get an app mounted to avoid flashing this\n setTimeout(() => {\n this.show = getMountedApps().length === 0\n }, 150)\n },\n unmounted() {\n window.removeEventListener(\n SINGLE_SPA_APP_CHANGE_EVENT,\n this.handleAppChange,\n )\n },\n methods: {\n handleAppChange: function (event) {\n this.show = !event.detail.appsByNewStatus.MOUNTED\n },\n },\n}\n</script>\n","<!--\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 2025, 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# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div class=\"pt-4 pb-4\">\n <v-row :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n v-model=\"selectedTargetName\"\n label=\"Select Target\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"targetNameChanged\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n v-model=\"selectedPacketName\"\n label=\"Select Packet\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"packetsDisabled || autocompleteDisabled\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"packetNameChanged\"\n >\n <template v-if=\"includeLatestPacketInDropdown\" #prepend-item>\n <v-list-item title=\"LATEST\" @click=\"packetNameChanged('LATEST')\" />\n <v-divider />\n </template>\n </v-autocomplete>\n </v-col>\n <v-col\n v-if=\"chooseItem\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n v-model=\"selectedItemName\"\n label=\"Select Item\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"itemNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"itemNameChanged($event)\"\n />\n </v-col>\n <!-- min-width: 105px is enough to display a 2 digit index -->\n <v-col\n v-if=\"chooseItem && itemIsArray\"\n cols=\"1\"\n class=\"tpic-select pr-4\"\n data-test=\"array-index\"\n style=\"min-width: 105px\"\n >\n <v-combobox\n v-model=\"selectedArrayIndex\"\n label=\"Index\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"arrayIndexes\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"indexChanged($event)\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\" style=\"max-width: 140px\">\n <v-btn\n :disabled=\"buttonDisabled\"\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row v-if=\"selectTypes\" class=\"pt-6\" no-gutters>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n v-model=\"selectedValueType\"\n label=\"Value Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n v-model=\"selectedReduced\"\n label=\"Reduced\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n v-model=\"selectedReducedType\"\n label=\"Reduced Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pa-3\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': hazardous }\">\n Description: {{ description }}\n <template v-if=\"hazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n allowAllTargets: {\n type: Boolean,\n default: false,\n },\n allowAllArrayIndex: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n selectTypes: {\n type: Boolean,\n default: false,\n },\n showLatest: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['on-set', 'addItem'],\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n itemNames: [],\n selectedItemName: this.initialItemName?.toUpperCase(),\n valueTypes: ['CONVERTED', 'RAW'],\n selectedValueType: 'CONVERTED',\n reductionModes: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n selectedArrayIndex: null,\n selectedReduced: 'DECOM',\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n selectedReducedType: 'AVG',\n description: '',\n hazardous: false,\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n }\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n autocompleteDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n buttonDisabled: function () {\n return (\n this.disabled ||\n this.internalDisabled ||\n this.selectedTargetName === null ||\n this.selectedPacketName === null ||\n this.selectedItemNameWIndex === null\n )\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n selectedItemNameWIndex: function () {\n if (\n this.itemIsArray &&\n this.selectedArrayIndex !== null &&\n this.selectedArrayIndex !== this.ALL.label\n ) {\n return `${this.selectedItemName}[${this.selectedArrayIndex}]`\n } else {\n return this.selectedItemName\n }\n },\n includeLatestPacketInDropdown: function () {\n return this.showLatest && this.mode === 'tlm' // because LATEST cmd doesn't have much use and thus isn't currently implemented\n },\n arrayIndexes: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n let indexes = [...Array(this.itemNames[i].array).keys()]\n if (this.allowAll || this.allowAllArrayIndex) {\n indexes.unshift(this.ALL.label)\n }\n return indexes\n },\n itemIsArray: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n if (i === -1 || isNaN(this.itemNames[i].array)) {\n return false\n } else {\n return true\n }\n },\n },\n watch: {\n initialTargetName: function (val) {\n // These three \"initial\" watchers are here in case the parent component doesn't figure out its initial values\n // until after this component has already been created. All this logic incl. the \"on-set\" events could be\n // simplified with a refactor to use named v-models, but that's probably a significant breaking change.\n if (val) {\n this.selectedTargetName = val.toUpperCase()\n }\n },\n initialPacketName: function (val) {\n if (val) {\n this.selectedPacketName = val.toUpperCase()\n }\n },\n initialItemName: function (val) {\n if (val) {\n this.selectedItemName = val.toUpperCase()\n }\n },\n mode: function (newVal, oldVal) {\n this.selectedPacketName = null\n this.selectedItemName = null\n // This also updates packets and items as needed\n this.targetNameChanged(this.selectedTargetName)\n },\n chooseItem: function (newVal, oldVal) {\n if (newVal) {\n this.updateItems()\n } else {\n this.itemNames = []\n }\n },\n itemIsArray: function (val) {\n if (val) {\n this.selectedArrayIndex ||= 0\n } else {\n this.selectedArrayIndex = null\n }\n },\n },\n created() {\n this.internalDisabled = true\n this.api = new OpenC3Api()\n this.api.get_target_names().then((result) => {\n this.targetNames = result.flatMap((target) => {\n // Ignore the UNKNOWN target as it doesn't make sense to select this\n if (target == 'UNKNOWN') {\n return []\n }\n return { label: target, value: target }\n })\n // TODO: This is a nice enhancement but results in logs of API calls for many targets\n // See if we can reduce this to a single API call\n // Filter out any targets without packets\n // for (let i = this.targetNames.length - 1; i >= 0; i--) {\n // const cmd =\n // this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n // await this.api[cmd](this.targetNames[i].value).then((names) => {\n // if (names.length === 0) {\n // this.targetNames.splice(i, 1)\n // }\n // })\n // }\n if (this.allowAllTargets) {\n this.targetNames.unshift(this.ALL)\n }\n // If the initial target name is not set, default to the first target\n // which also updates packets and items as needed\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n } else {\n // Selected target name was set but we still have to update packets\n this.updatePackets()\n }\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n methods: {\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n if (this.selectedTargetName === 'ALL') {\n this.packetNames = [this.ALL]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.ALL.value)\n this.description = 'ALL'\n return\n }\n this.internalDisabled = true\n const cmd =\n this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n this.api[cmd](this.selectedTargetName, this.hidden).then((names) => {\n this.packetNames = names.map((name) => {\n return {\n label: name,\n value: name,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (!this.selectedPacketName) {\n if (this.packetNames.length === 0) {\n this.selectedPacketName = null\n } else {\n this.selectedPacketName = this.packetNames[0].value\n }\n }\n this.updatePacketDetails(this.selectedPacketName)\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n if (item && this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n\n if (this.selectedPacketName === 'LATEST') {\n this.api\n .get_all_tlm_item_names(this.selectedTargetName)\n .then((items) => {\n this.itemNames = items.map((item) => {\n return {\n label: item,\n value: item,\n description: `LATEST ${item}`,\n // Don't handle array for LATEST\n }\n })\n this.finishUpdateItems()\n })\n } else {\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.itemNames = packet.items.map((item) => {\n let label = item.name\n if (item.data_type == 'DERIVED') {\n label += ' *'\n }\n return {\n label: label,\n value: item.name,\n description: item.description,\n array: item.array_size / item.bit_size,\n }\n })\n this.itemNames.sort((a, b) => (a.label > b.label ? 1 : -1))\n this.finishUpdateItems()\n },\n )\n }\n },\n finishUpdateItems: function () {\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n this.internalDisabled = false\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n // When the target name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packets\n if (value !== null) {\n this.updatePackets()\n }\n },\n\n packetNameChanged: function (value) {\n this.selectedItemName = ''\n // When the packet name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packet details\n if (value !== null) {\n this.updatePacketDetails(value)\n }\n },\n\n updatePacketDetails: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else if (value === 'LATEST') {\n this.itemsDisabled = false\n this.selectedPacketName = 'LATEST'\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n if (packet) {\n this.selectedPacketName = packet.value\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.description = packet.description\n this.hazardous = packet.hazardous\n },\n )\n }\n }\n if (this.chooseItem) {\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n if (item) {\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n indexChanged: function (value) {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n } else {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n },\n}\n</script>\n<style scoped>\n.button {\n padding: 4px;\n}\n.tpic-select {\n max-width: 300px;\n}\n</style>\n"],"names":["Config","config","name","routed","callback","OpenC3Api","response","error","query","_sfc_main","value","configId","row","item","dialog","_a","_hoisted_1","_hoisted_2","_createBlock","_component_v_dialog","$options","_cache","$event","_withKeys","_withCtx","_createVNode","_component_v_card","_createElementVNode","_withModifiers","args","_component_v_toolbar","_component_v_spacer","_component_v_card_text","_component_v_row","_component_v_text_field","$data","_component_v_data_table","_component_v_btn","_toDisplayString","_component_v_card_actions","_createTextVNode","val","TimeFilters","AstroStatusColors","Cable","newVal","oldVal","messages","message","result","i","nibble","subscription","level","UnknownToAstroStatus","output","entry","blob","link","format","err","_hoisted_3","_component_v_card_title","_component_v_select","_normalizeStyle","_component_rux_status","SINGLE_SPA_APP_CHANGE_EVENT","getMountedApps","event","_openBlock","_ctx","_createCommentVNode","propValue","_b","_c","indexes","target","cmd","names","packet","items","label","b","packetName","_createElementBlock","$props","_component_v_col","_component_v_autocomplete","_createSlots","_component_v_list_item","_component_v_divider","_component_v_combobox","_normalizeClass","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.cjs","sources":["../src/components/config/Config.js","../src/components/config/OpenConfigDialog.vue","../src/components/config/SaveConfigDialog.vue","../src/components/CommandParameterEditor.vue","../src/components/CommandEditor.vue","../src/components/LogMessages.vue","../src/components/NotFound.vue"],"sourcesContent":["/*\n# Copyright 2023 OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n data: {\n configKey: '',\n // Applications can set to avoid persisting default config\n // Useful when loading and setting existing config\n dontSaveDefaultConfig: false,\n },\n methods: {\n loadDefaultConfig: function () {\n if (localStorage[`${this.configKey}__default`]) {\n return JSON.parse(localStorage[`${this.configKey}__default`])\n } else {\n return {}\n }\n },\n saveDefaultConfig: function (config) {\n if (this.dontSaveDefaultConfig === true) {\n return\n }\n localStorage[`${this.configKey}__default`] = JSON.stringify(config)\n },\n openConfigBase: function (name, routed = false, callback = null) {\n new OpenC3Api()\n .load_config(this.configKey, name)\n .then((response) => {\n if (response) {\n this.$notify.normal({\n title: 'Loading configuration',\n body: name,\n })\n if (callback) callback(JSON.parse(response))\n if (!routed) {\n if (!this.$route.fullPath.includes(name)) {\n this.$router.push({\n query: {\n config: name,\n },\n })\n }\n }\n } else {\n this.$notify.caution({\n title: 'Unknown configuration',\n body: name,\n })\n }\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error opening configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n saveConfigBase: function (name, config) {\n new OpenC3Api()\n .save_config(this.configKey, name, JSON.stringify(config))\n .then(() => {\n this.$notify.normal({\n title: 'Saved configuration',\n body: name,\n })\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error saving configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n resetConfigBase: function () {\n localStorage.removeItem(`${this.configKey}__default`)\n\n const query = { ...this.$route.query }\n delete query.config\n this.$router.replace({ query })\n },\n },\n}\n","<!--\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 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n autofocus\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"open-config-cancel-btn\"\n @click=\"cancel\"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n if (!this.selectedItem) return\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\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 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (!this.configName) {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n watch: {\n selectedItem: function (val) {\n if (val) {\n this.configName = val.config\n }\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\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 2025, 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-text-field\n v-if=\"!states\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"filled\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <div v-else class=\"d-flex align-center\">\n <v-select\n :items=\"stateOptions\"\n :model-value=\"selectValue\"\n item-title=\"label\"\n :class=\"stateClass\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n placeholder=\"Select...\"\n min-width=\"120px\"\n data-test=\"cmd-param-select\"\n @update:model-value=\"handleChange\"\n />\n <v-text-field\n :model-value=\"stateValue\"\n disabled\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport { CmdUtilities } from '../util'\nexport default {\n name: 'CommandParameterEditor',\n mixins: [CmdUtilities],\n props: {\n modelValue: {\n type: [String, Number],\n default: undefined,\n },\n states: {\n type: Object,\n default: () => null,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n textFieldValue() {\n return this.convertToString(this.modelValue)\n },\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.modelValue.toString(16)\n } else {\n return this.modelValue\n }\n },\n selectValue() {\n // this makes the placeholder prop work\n return this.modelValue === '' ? null : this.modelValue\n },\n stateOptions() {\n if (!this.states) {\n return null\n }\n return Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n },\n hazardous() {\n return (\n Object.entries(this.states)\n .find(([label, state]) => state.value === this.modelValue)\n ?.at(1)?.hazardous !== undefined\n )\n },\n stateClass() {\n return this.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n },\n}\n</script>\n<style scoped>\n/* This allows Value or State selection to be wider and show state names */\n.container :deep(.v-select__selections) {\n width: auto;\n}\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n.hazardous :deep(.v-select__selection-text) {\n color: rgb(255, 220, 0) !important;\n}\n</style>\n","<!--\n# Copyright 2025, OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <div style=\"padding: 10px\">\n <target-packet-item-chooser\n :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n mode=\"cmd\"\n @on-set=\"commandChanged($event)\"\n @add-item=\"buildCmd($event)\"\n />\n </div>\n\n <v-card v-if=\"computedRows.length !== 0\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"computedRows\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n @contextmenu:row=\"showContextMenu\"\n >\n <template #item.val=\"{ item }\">\n <slot\n name=\"parameter-editor\"\n :item=\"item\"\n :states-in-hex=\"statesInHex\"\n >\n <!-- Default parameter editor if slot not provided -->\n <command-parameter-editor\n v-model=\"item.val\"\n :states=\"item.states\"\n :states-in-hex=\"statesInHex\"\n />\n </slot>\n </template>\n </v-data-table>\n </v-card>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n v-model=\"viewDetails\"\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n />\n </v-card>\n</template>\n\n<script>\nimport 'sprintf-js'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport CommandParameterEditor from './CommandParameterEditor.vue'\nimport DetailsDialog from './DetailsDialog.vue'\nimport { CmdUtilities } from '../util'\n\nexport default {\n name: 'CommandEditor',\n components: {\n TargetPacketItemChooser,\n CommandParameterEditor,\n DetailsDialog,\n },\n mixins: [CmdUtilities],\n props: {\n initialTargetName: {\n type: String,\n default: null,\n },\n initialPacketName: {\n type: String,\n default: null,\n },\n cmdString: {\n type: String,\n default: null,\n },\n sendDisabled: {\n type: Boolean,\n default: false,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n showIgnoredParams: {\n type: Boolean,\n default: false,\n },\n cmdRaw: {\n type: Boolean,\n default: false,\n },\n showCommandButton: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['command-changed', 'build-cmd'],\n data() {\n return {\n search: '',\n headers: [\n { title: 'Name', value: 'parameter_name' },\n { title: 'Value or State', value: 'val' },\n { title: 'Units', value: 'units' },\n { title: 'Range', value: 'range' },\n { title: 'Description', value: 'description' },\n ],\n api: null,\n targetName: '',\n commandName: '',\n commandDescription: '',\n ignoredParams: [],\n computedRows: [],\n reservedItemNames: [\n 'PACKET_TIMESECONDS',\n 'PACKET_TIMEFORMATTED',\n 'RECEIVED_TIMESECONDS',\n 'RECEIVED_TIMEFORMATTED',\n 'RECEIVED_COUNT',\n ],\n contextMenuShown: false,\n viewDetails: false,\n parameterName: '',\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n }\n },\n created() {\n this.api = new OpenC3Api()\n if (this.cmdString) {\n this.processCmdString()\n } else {\n this.targetName = this.initialTargetName\n this.commandName = this.initialPacketName\n this.updateCmdParams()\n }\n },\n methods: {\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n this.updateCmdParams()\n }\n this.$emit('command-changed', event)\n },\n buildCmd(event) {\n this.$emit('build-cmd', event)\n },\n showContextMenu(event, row) {\n event.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = event.clientX\n this.y = event.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n updateCmdParams() {\n this.ignoredParams = []\n this.computedRows = []\n if (this.targetName && this.commandName) {\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_cmd(this.targetName, this.commandName)\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting ignored parameters:', error)\n },\n )\n .then(\n (command) => {\n if (command) {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n if (\n !parameter.states &&\n parameter.data_type === 'STRING' &&\n typeof parameter.default === 'string'\n ) {\n val = `'${val}'`\n }\n if (parameter.required) {\n val = null // Special marker for required parameters\n }\n if (parameter.format_string && parameter.default) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n let range = 'N/A'\n if (\n parameter.minimum != null &&\n parameter.maximum != null\n ) {\n if (parameter.data_type === 'FLOAT') {\n if (parameter.minimum < -1e6) {\n if (Number.isSafeInteger(parameter.minimum)) {\n parameter.minimum =\n parameter.minimum.toExponential(3)\n }\n }\n if (parameter.maximum > 1e6) {\n if (Number.isSafeInteger(parameter.maximum)) {\n parameter.maximum =\n parameter.maximum.toExponential(3)\n }\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n this.computedRows.push({\n parameter_name: parameter.name,\n val: val,\n states: parameter.states,\n description: parameter.description,\n range: range,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n },\n )\n }\n },\n triggerUpdateCmdParams() {\n this.updateCmdParams()\n },\n getRows() {\n return this.computedRows\n },\n getCmdString() {\n let cmd = `${this.targetName} ${this.commandName}`\n if (this.computedRows.length === 0) return cmd\n cmd += ' with '\n for (const row of this.computedRows) {\n // null value indicates required parameter not set, see updateCmdParams\n if (row.val === null) {\n throw new Error(`Required parameter ${row.parameter_name} not set`)\n }\n if (row.val !== null && row.val !== undefined && row.val !== '') {\n if (row.states) {\n // If states exist, find the state name for the value\n const stateEntry = Object.entries(row.states).find(\n ([, state]) => state.value === row.val,\n )\n if (stateEntry) {\n // Although not always necessary, always quote states\n cmd += ` ${row.parameter_name} '${stateEntry[0]}',`\n continue\n }\n }\n // We only put the param value in quotes if it is a string with spaces\n // Check for array syntax because we do NOT quote arrays\n let value = this.convertToString(row.val)\n if (value.includes(' ') && !this.isArray(value)) {\n cmd += ` ${row.parameter_name} '${value}',`\n } else {\n cmd += ` ${row.parameter_name} ${value},`\n }\n }\n }\n // Remove trailing comma\n return cmd.slice(0, -1)\n },\n parseCmdString(cmdString) {\n // Parse commands in format: \"TARGET COMMAND with PARAM1 value1, PARAM2 value2\"\n const parts = cmdString.split(' ')\n if (parts.length < 2) return { target: '', command: '', params: {} }\n if (parts.length === 2) {\n return { target: parts[0], command: parts[1], params: {} }\n }\n // Check for a malformed command string that doesn't have 'with'\n if (parts[2] !== 'with') return { target: '', command: '', params: {} }\n\n const target = parts[0]\n const command = parts[1]\n let params = {}\n\n const paramsString = cmdString.split(' with ')[1]\n let paramPairs = []\n let bracketLevel = 0\n let current = ''\n // Parse the params char by char to handle commas inside brackets\n for (let char of paramsString) {\n if (char === '[') {\n bracketLevel++\n current += char\n } else if (char === ']') {\n bracketLevel--\n current += char\n } else if (char === ',' && bracketLevel === 0) {\n paramPairs.push(current.trim())\n current = ''\n } else {\n current += char\n }\n }\n if (current.trim() !== '') {\n paramPairs.push(current.trim())\n }\n\n for (let pair of paramPairs) {\n let firstSpace = pair.indexOf(' ')\n if (firstSpace > 0) {\n let key = pair.substring(0, firstSpace).trim()\n let value = pair.substring(firstSpace + 1).trim()\n params[key] = value\n }\n }\n return { target: target, command: command, params: params }\n },\n processCmdString() {\n const parsed = this.parseCmdString(this.cmdString)\n if (parsed.target && parsed.command) {\n this.targetName = parsed.target\n this.commandName = parsed.command\n this.parsedParameters = parsed.params\n this.updateCmdParams()\n }\n },\n populateParametersFromParsed() {\n // Populate parameters after command parameters are loaded\n if (\n !this.parsedParameters ||\n Object.keys(this.parsedParameters).length === 0\n ) {\n return\n }\n\n this.$nextTick(() => {\n // Give time for parameters to load\n setTimeout(() => {\n this.computedRows.forEach((row) => {\n if (this.parsedParameters.hasOwnProperty(row.parameter_name)) {\n const value = this.parsedParameters[row.parameter_name]\n // Set the value based on parameter type\n if (row.states && typeof value === 'string') {\n // For state parameters, try to match the state name\n const stateKey = Object.keys(row.states).find(\n (key) =>\n key === value || key.toLowerCase() === value.toLowerCase(),\n )\n if (stateKey) {\n row.val = row.states[stateKey].value\n } else {\n row.val = value\n }\n } else if (row.type === 'STRING' && typeof value === 'string') {\n // For string parameters, add quotes if not present\n row.val =\n value.startsWith(\"'\") || value.startsWith('\"')\n ? value\n : `'${value}'`\n } else {\n row.val = value\n }\n }\n })\n }, 100) // Shorter delay since we're already in the component\n })\n },\n },\n}\n</script>\n","<!--\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 <v-card>\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n <div class=\"d-flex align-baseline\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"download-log\"\n @click=\"downloadLog\"\n />\n <span> Log Messages </span>\n <v-btn\n :icon=\"buttonIcon\"\n variant=\"text\"\n data-test=\"pause\"\n @click=\"pause\"\n />\n </div>\n <v-spacer />\n <v-select\n v-model=\"logLevel\"\n label=\"Filter by log level\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n :items=\"logLevels\"\n class=\"mr-2\"\n style=\"max-width: 150px\"\n data-test=\"log-messages-level\"\n />\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n style=\"max-width: 300px\"\n class=\"search\"\n data-test=\"search-log-messages\"\n />\n <v-btn\n icon=\"mdi-delete-sweep\"\n variant=\"text\"\n class=\"ml-2\"\n data-test=\"clear-log\"\n @click=\"clearLog\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"shownData\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n sticky\n hover\n data-test=\"log-messages\"\n >\n <template #item.timestamp=\"{ item }\">\n <time :title=\"item.timestamp\" :datetime=\"item.timestamp\">\n {{ item.timestamp }}\n </time>\n </template>\n <template #item.level=\"{ item }\">\n <span :style=\"'display: inline-flex; color:' + getColor(item.level)\">\n <rux-status class=\"mr-1\" :status=\"getStatus(item.level)\"></rux-status>\n {{ item.level }}</span\n >\n </template>\n <template #item.message=\"{ item }\">\n <div style=\"white-space: pre-wrap\">{{ item.message }}</div>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { format } from 'date-fns'\nimport { Cable } from '@openc3/js-common/services'\nimport { AstroStatusColors, UnknownToAstroStatus } from '@/icons'\nimport { TimeFilters } from '@/util'\n\nexport default {\n mixins: [TimeFilters],\n props: {\n historyCount: {\n type: Number,\n default: 200,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n AstroStatusColors,\n data: [],\n shownData: [],\n logLevels: ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],\n logLevel: 'INFO',\n search: '',\n headers: [\n { title: 'Time', value: 'timestamp', nowrap: true },\n { title: 'Level', value: 'level' },\n { title: 'Source', value: 'microservice_name' },\n { title: 'Message', value: 'message' },\n ],\n cable: new Cable(),\n subscription: null,\n paused: false,\n }\n },\n computed: {\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n },\n watch: {\n logLevel: function (newVal, oldVal) {\n this.createSubscription()\n },\n },\n created() {\n this.createSubscription()\n },\n unmounted() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n pause: function () {\n this.paused = !this.paused\n },\n createSubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.data = []\n this.shownData = this.data\n }\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (messages) => {\n this.cable.recordPing()\n if (messages.length > this.historyCount) {\n messages.splice(0, messages.length - this.historyCount)\n }\n // Filter messages before they're added to the table\n // This prevents a bunch of invisible 'INFO' messages from pushing\n // off the 'WARN' or 'ERROR' messages if we filter inside the data-table\n messages = messages.filter((message) => {\n switch (this.logLevel) {\n case 'DEBUG':\n return true\n case 'INFO':\n if (message.level !== 'DEBUG') {\n return true\n }\n break\n case 'WARN':\n if (message.level !== 'DEBUG' && message.level !== 'INFO') {\n return true\n }\n break\n case 'ERROR':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN'\n ) {\n return true\n }\n break\n case 'FATAL':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN' &&\n message.level !== 'ERROR'\n ) {\n return true\n }\n break\n }\n return false\n })\n messages.map((message) => {\n message.timestamp = this.formatTimestamp(\n message['@timestamp'],\n this.timeZone,\n )\n if (\n message.message.raw &&\n message.message.json_class === 'String'\n ) {\n // This is binary data, display in hex.\n let result = '0x'\n for (let i = 0; i < message.message.raw.length; i++) {\n let nibble = message.message.raw[i]\n .toString(16)\n .toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n result += nibble\n }\n message.message = result\n } else {\n message.message = message.message.replaceAll('\\\\n', '\\n')\n }\n })\n this.data = messages.reverse().concat(this.data)\n if (this.data.length > this.historyCount) {\n this.data.length = this.historyCount\n }\n if (!this.paused) {\n this.shownData = this.data\n }\n },\n },\n {\n // Channel parameter is history_count with underscore\n history_count: this.historyCount,\n types: ['log', 'notification', 'alert'],\n },\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n getColor(level) {\n return AstroStatusColors[UnknownToAstroStatus[level]]\n },\n getStatus(level) {\n return UnknownToAstroStatus[level]\n },\n downloadLog() {\n const output = this.shownData\n .map(\n (entry) =>\n // Other fields are available like container_name, msg_id ... probably not useful\n `${entry.timestamp} | ${entry.level} | ${entry.microservice_name} | ${entry.message}`,\n )\n .join('\\n')\n const blob = new Blob([output], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute(\n 'download',\n format(Date.now(), 'yyyy_MM_dd_HH_mm_ss') + '_message_log.txt',\n )\n link.click()\n },\n clearLog: function () {\n this.$dialog\n .confirm('Are you sure you want to clear the log?', {\n okText: 'Clear',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n this.data = []\n this.shownData = []\n })\n .catch(function (err) {\n // Canceling the dialog forces catch and sets err to true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n /* take up any remaining vertical space\n (e.g. whatever is left after the tabs in cmdtlmserver)\n */\n flex-grow: 1;\n\n /* flex so the table can grow without making the card itself scroll */\n display: flex;\n flex-direction: column;\n}\n.v-data-table {\n height: 25vh; /* give it at least a bit of height to start with */\n flex-grow: 1; /* and then grow to fill all the space it can */\n}\n</style>\n","<!--\n# Copyright 2024 OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card v-if=\"show\">\n <v-card-title> 404 Not Found </v-card-title>\n <v-card-text class=\"d-flex align-center mt-3\">\n The requested URL\n <code class=\"mx-1\"> {{ $route.fullPath }} </code>\n was not routable.\n <span class=\"text-h3 mx-1\"> 🦄 </span>\n </v-card-text>\n </v-card>\n <div v-if=\"showSpinner\" class=\"d-flex justify-center align-center\">\n <v-progress-circular indeterminate />\n </div>\n</template>\n\n<script>\nimport { getMountedApps } from 'single-spa'\n\nconst POLL_INTERVAL_MS = 50\nconst NOT_FOUND_TIMEOUT_MS = 2000\nconst SINGLE_SPA_APP_CHANGE_EVENT = 'single-spa:app-change'\n\n// This component is actually always loaded for every route other than /login\n// because of the catch-all path in tool-base's router, so we need logic to\n// hide it when a tool is loaded.\nexport default {\n data() {\n return {\n appsMounted: false,\n show: false,\n hideSpinner: false,\n pollInterval: null,\n }\n },\n computed: {\n showSpinner: function () {\n return !this.hideSpinner && !this.show\n },\n },\n created() {\n window.addEventListener(SINGLE_SPA_APP_CHANGE_EVENT, this.handleAppChange)\n },\n mounted() {\n this.pollForMountedApps()\n // This gives some time to allow slow connections to find the apps before flashing the 404\n setTimeout(() => {\n if (!this.appsMounted) {\n this.show = true\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n }\n }\n }, NOT_FOUND_TIMEOUT_MS)\n },\n unmounted() {\n window.removeEventListener(\n SINGLE_SPA_APP_CHANGE_EVENT,\n this.handleAppChange,\n )\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n }\n },\n methods: {\n handleAppChange: function (event) {\n this.show = !event.detail.appsByNewStatus.MOUNTED\n },\n pollForMountedApps: function () {\n // Check to see if there are single-spa apps that matched the route.\n // The app-change event doesn't cover this case...\n this.pollInterval = setInterval(() => {\n this.appsMounted = getMountedApps().length > 0\n if (getMountedApps().length > 0) {\n this.hideSpinner = true\n clearInterval(this.pollInterval)\n }\n }, POLL_INTERVAL_MS)\n },\n },\n}\n</script>\n"],"names":["Config","config","name","routed","callback","OpenC3Api","response","error","query","_sfc_main","value","configId","row","item","dialog","_a","_hoisted_1","_createBlock","_component_v_dialog","$options","$event","_createVNode","_component_v_card","_createElementVNode","args","_component_v_toolbar","_component_v_spacer","_cache","_component_v_card_text","_component_v_row","_component_v_text_field","$data","_component_v_data_table","_withCtx","_component_v_btn","_toDisplayString","_component_v_card_actions","val","CmdUtilities","label","_b","state","_createElementBlock","$props","_openBlock","_component_v_select","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","event","target","command","parameter","range","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_target_packet_item_chooser","_component_v_card_title","_renderSlot","_ctx","_component_command_parameter_editor","_component_v_menu","_component_v_list","_Fragment","_renderList","index","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_component_details_dialog","TimeFilters","AstroStatusColors","Cable","newVal","oldVal","messages","message","result","i","nibble","subscription","level","UnknownToAstroStatus","output","entry","blob","link","format","err","_hoisted_3","_hoisted_2","_normalizeStyle","_component_rux_status","POLL_INTERVAL_MS","NOT_FOUND_TIMEOUT_MS","SINGLE_SPA_APP_CHANGE_EVENT","getMountedApps","_component_v_progress_circular"],"mappings":"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"}
|