@openc3/vue-common 6.10.2 → 6.10.4
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-ByKRAWXn.cjs → ArrayWidget-CIMbQsGW.cjs} +3 -3
- package/dist/{ArrayWidget-ByKRAWXn.cjs.map → ArrayWidget-CIMbQsGW.cjs.map} +1 -1
- package/dist/{ArrayWidget-CR7Wpw3N.js → ArrayWidget-DfiusKpM.js} +11 -11
- package/dist/{ArrayWidget-CR7Wpw3N.js.map → ArrayWidget-DfiusKpM.js.map} +1 -1
- package/dist/{ArrayplotWidget-Cty7KQ_h.cjs → ArrayplotWidget-DrrqqJEu.cjs} +2 -2
- package/dist/{ArrayplotWidget-Cty7KQ_h.cjs.map → ArrayplotWidget-DrrqqJEu.cjs.map} +1 -1
- package/dist/{ArrayplotWidget-DDEd-jRJ.js → ArrayplotWidget-DsvOovu9.js} +4 -4
- package/dist/{ArrayplotWidget-DDEd-jRJ.js.map → ArrayplotWidget-DsvOovu9.js.map} +1 -1
- package/dist/BarColumn-CWgcL5w1.cjs +2 -0
- package/dist/BarColumn-CWgcL5w1.cjs.map +1 -0
- package/dist/{BarColumn-XWs-3Cwb.js → BarColumn-DHHJBR3V.js} +11 -11
- package/dist/BarColumn-DHHJBR3V.js.map +1 -0
- package/dist/{BlockWidget-BDzoqpxO.cjs → BlockWidget-7Ecn_42c.cjs} +3 -3
- package/dist/{BlockWidget-BDzoqpxO.cjs.map → BlockWidget-7Ecn_42c.cjs.map} +1 -1
- package/dist/{BlockWidget-CfFgdNSv.js → BlockWidget-BdYXWS_0.js} +14 -14
- package/dist/{BlockWidget-CfFgdNSv.js.map → BlockWidget-BdYXWS_0.js.map} +1 -1
- package/dist/{ButtonWidget-BBMDS_YF.cjs → ButtonWidget-DFxBj0MG.cjs} +3 -3
- package/dist/ButtonWidget-DFxBj0MG.cjs.map +1 -0
- package/dist/{ButtonWidget-BaSvtElA.js → ButtonWidget-zpSJmiQT.js} +15 -15
- package/dist/ButtonWidget-zpSJmiQT.js.map +1 -0
- package/dist/{CanvasWidget-CFNpgqfW.cjs → CanvasWidget-C5-iZ-YT.cjs} +2 -2
- package/dist/{CanvasWidget-CFNpgqfW.cjs.map → CanvasWidget-C5-iZ-YT.cjs.map} +1 -1
- package/dist/{CanvasWidget-DcwDi5Zk.js → CanvasWidget-DaUB1G9X.js} +4 -4
- package/dist/{CanvasWidget-DcwDi5Zk.js.map → CanvasWidget-DaUB1G9X.js.map} +1 -1
- package/dist/{CanvasdotWidget--awMOWyz.js → CanvasdotWidget-C255aTVc.js} +3 -3
- package/dist/{CanvasdotWidget--awMOWyz.js.map → CanvasdotWidget-C255aTVc.js.map} +1 -1
- package/dist/{CanvasdotWidget-BZ9TrTvw.cjs → CanvasdotWidget-CCrgS1yO.cjs} +2 -2
- package/dist/{CanvasdotWidget-BZ9TrTvw.cjs.map → CanvasdotWidget-CCrgS1yO.cjs.map} +1 -1
- package/dist/CanvasimageWidget-B2Mm0dYq.cjs +2 -0
- package/dist/CanvasimageWidget-B2Mm0dYq.cjs.map +1 -0
- package/dist/{CanvasimageWidget-YP1pCtvb.js → CanvasimageWidget-CFlUUFqr.js} +8 -7
- package/dist/CanvasimageWidget-CFlUUFqr.js.map +1 -0
- package/dist/CanvasimagevalueWidget-B1xVa3FB.cjs +2 -0
- package/dist/CanvasimagevalueWidget-B1xVa3FB.cjs.map +1 -0
- package/dist/{CanvasimagevalueWidget-CjVHb2uj.js → CanvasimagevalueWidget-s4gR3fo5.js} +5 -4
- package/dist/CanvasimagevalueWidget-s4gR3fo5.js.map +1 -0
- package/dist/{CanvaslabelWidget-Dw1YmiY0.cjs → CanvaslabelWidget-CAtE3qq_.cjs} +2 -2
- package/dist/{CanvaslabelWidget-Dw1YmiY0.cjs.map → CanvaslabelWidget-CAtE3qq_.cjs.map} +1 -1
- package/dist/{CanvaslabelWidget-DoMplTTO.js → CanvaslabelWidget-CaOc-lTQ.js} +3 -3
- package/dist/{CanvaslabelWidget-DoMplTTO.js.map → CanvaslabelWidget-CaOc-lTQ.js.map} +1 -1
- package/dist/CanvaslabelvalueWidget-CvVMrZsu.cjs +2 -0
- package/dist/CanvaslabelvalueWidget-CvVMrZsu.cjs.map +1 -0
- package/dist/{CanvaslabelvalueWidget-Dyo_ogHn.js → CanvaslabelvalueWidget-hqJoPekq.js} +4 -3
- package/dist/CanvaslabelvalueWidget-hqJoPekq.js.map +1 -0
- package/dist/{CanvaslineWidget-tm194dw1.cjs → CanvaslineWidget-CjPnyDod.cjs} +2 -2
- package/dist/{CanvaslineWidget-tm194dw1.cjs.map → CanvaslineWidget-CjPnyDod.cjs.map} +1 -1
- package/dist/{CanvaslineWidget-D7W1TIxm.js → CanvaslineWidget-DebP2L43.js} +3 -3
- package/dist/{CanvaslineWidget-D7W1TIxm.js.map → CanvaslineWidget-DebP2L43.js.map} +1 -1
- package/dist/{CanvaslinevalueWidget-BOZyJuLE.js → CanvaslinevalueWidget-BkPG5Vtx.js} +11 -10
- package/dist/CanvaslinevalueWidget-BkPG5Vtx.js.map +1 -0
- package/dist/CanvaslinevalueWidget-Caadjtan.cjs +2 -0
- package/dist/CanvaslinevalueWidget-Caadjtan.cjs.map +1 -0
- package/dist/CheckbuttonWidget-CEOWZkt6.cjs +2 -0
- package/dist/{CheckbuttonWidget-BSvTWD3x.cjs.map → CheckbuttonWidget-CEOWZkt6.cjs.map} +1 -1
- package/dist/{CheckbuttonWidget-B1E4BC6v.js → CheckbuttonWidget-eQIcPATf.js} +6 -6
- package/dist/{CheckbuttonWidget-B1E4BC6v.js.map → CheckbuttonWidget-eQIcPATf.js.map} +1 -1
- package/dist/{ClassificationBanners-CzZoKcRy.cjs → ClassificationBanners--l3qMxLo.cjs} +2 -2
- package/dist/{ClassificationBanners-CzZoKcRy.cjs.map → ClassificationBanners--l3qMxLo.cjs.map} +1 -1
- package/dist/{ClassificationBanners-DQeVwmYp.js → ClassificationBanners-CFLQaZJ2.js} +2 -2
- package/dist/{ClassificationBanners-DQeVwmYp.js.map → ClassificationBanners-CFLQaZJ2.js.map} +1 -1
- package/dist/{ComboboxWidget-BExUBH57.js → ComboboxWidget-B5kzYxFk.js} +6 -6
- package/dist/{ComboboxWidget-BExUBH57.js.map → ComboboxWidget-B5kzYxFk.js.map} +1 -1
- package/dist/ComboboxWidget-BSs59QzI.cjs +2 -0
- package/dist/{ComboboxWidget-B_KAnIVB.cjs.map → ComboboxWidget-BSs59QzI.cjs.map} +1 -1
- package/dist/{CriticalCmdDialog-BtzhxuZi.js → CriticalCmdDialog-BYHZbX2w.js} +62 -52
- package/dist/CriticalCmdDialog-BYHZbX2w.js.map +1 -0
- package/dist/CriticalCmdDialog-BhjiJIo5.cjs +2 -0
- package/dist/CriticalCmdDialog-BhjiJIo5.cjs.map +1 -0
- package/dist/{CustomIcon-DTfsnDJn.js → CustomIcon-B9m73Gqm.js} +5 -4
- package/dist/{CustomIcon-DTfsnDJn.js.map → CustomIcon-B9m73Gqm.js.map} +1 -1
- package/dist/CustomIcon-CEc927h0.cjs +2 -0
- package/dist/{CustomIcon-eie3rPKh.cjs.map → CustomIcon-CEc927h0.cjs.map} +1 -1
- package/dist/{DateWidget-_ZmPsi2l.js → DateWidget-1IZOe50K.js} +3 -3
- package/dist/{DateWidget-_ZmPsi2l.js.map → DateWidget-1IZOe50K.js.map} +1 -1
- package/dist/{DateWidget-kTJBAHVp.cjs → DateWidget-DkVxE7Xj.cjs} +2 -2
- package/dist/{DateWidget-kTJBAHVp.cjs.map → DateWidget-DkVxE7Xj.cjs.map} +1 -1
- package/dist/{DetailsDialog-Bq7SS7bc.js → DetailsDialog-D-rjL4oc.js} +130 -100
- package/dist/DetailsDialog-D-rjL4oc.js.map +1 -0
- package/dist/DetailsDialog-lJG8eclU.cjs +2 -0
- package/dist/DetailsDialog-lJG8eclU.cjs.map +1 -0
- package/dist/DynamicWidget-C4V2H2VJ.cjs +2 -0
- package/dist/DynamicWidget-C4V2H2VJ.cjs.map +1 -0
- package/dist/{DynamicWidget-DHL7pbgW.js → DynamicWidget-DEHWYr8i.js} +7 -7
- package/dist/DynamicWidget-DEHWYr8i.js.map +1 -0
- package/dist/EventListDialog-5UXvnmNE.cjs +2 -0
- package/dist/EventListDialog-5UXvnmNE.cjs.map +1 -0
- package/dist/{EventListDialog-jdNF3szO.js → EventListDialog-Id3rEQKY.js} +242 -242
- package/dist/EventListDialog-Id3rEQKY.js.map +1 -0
- package/dist/FilechecksumWidget-D-5GSjyV.cjs +2 -0
- package/dist/FilechecksumWidget-D-5GSjyV.cjs.map +1 -0
- package/dist/FilechecksumWidget-F_FX1Kjx.js +158 -0
- package/dist/FilechecksumWidget-F_FX1Kjx.js.map +1 -0
- package/dist/FiledisplayWidget-BF3G22jF.js +114 -0
- package/dist/FiledisplayWidget-BF3G22jF.js.map +1 -0
- package/dist/FiledisplayWidget-BHLOY_cM.cjs +2 -0
- package/dist/FiledisplayWidget-BHLOY_cM.cjs.map +1 -0
- package/dist/{FormatvalueWidget-4C0vrL2i.js → FormatvalueWidget-BkF9iiHs.js} +4 -4
- package/dist/{FormatvalueWidget-4C0vrL2i.js.map → FormatvalueWidget-BkF9iiHs.js.map} +1 -1
- package/dist/{FormatvalueWidget-CVoJgFJA.cjs → FormatvalueWidget-DTsP7isW.cjs} +2 -2
- package/dist/{FormatvalueWidget-CVoJgFJA.cjs.map → FormatvalueWidget-DTsP7isW.cjs.map} +1 -1
- package/dist/{Graph-B7KPo9Ul.js → Graph-C-7C2Jq5.js} +194 -187
- package/dist/Graph-C-7C2Jq5.js.map +1 -0
- package/dist/Graph-YYieRGo0.cjs +2 -0
- package/dist/Graph-YYieRGo0.cjs.map +1 -0
- package/dist/{GraphWidget-D3HueIZi.cjs → GraphWidget-C7hqdqL-.cjs} +2 -2
- package/dist/{GraphWidget-D3HueIZi.cjs.map → GraphWidget-C7hqdqL-.cjs.map} +1 -1
- package/dist/{GraphWidget-BpkPpAbd.js → GraphWidget-DRkDn8za.js} +2 -2
- package/dist/{GraphWidget-BpkPpAbd.js.map → GraphWidget-DRkDn8za.js.map} +1 -1
- package/dist/HorizontalWidget-DB64wzZB.js +69 -0
- package/dist/HorizontalWidget-DB64wzZB.js.map +1 -0
- package/dist/HorizontalWidget-h-U8i3G-.cjs +2 -0
- package/dist/HorizontalWidget-h-U8i3G-.cjs.map +1 -0
- package/dist/{HorizontalboxWidget-CTomf_Iy.js → HorizontalboxWidget-BsHsGlvK.js} +6 -6
- package/dist/{HorizontalboxWidget-CTomf_Iy.js.map → HorizontalboxWidget-BsHsGlvK.js.map} +1 -1
- package/dist/{HorizontalboxWidget-ysq7slso.cjs → HorizontalboxWidget-E4LUf2eN.cjs} +2 -2
- package/dist/{HorizontalboxWidget-ysq7slso.cjs.map → HorizontalboxWidget-E4LUf2eN.cjs.map} +1 -1
- package/dist/{HorizontallineWidget-B7xx7ofY.js → HorizontallineWidget-CyiexzIu.js} +3 -3
- package/dist/{HorizontallineWidget-B7xx7ofY.js.map → HorizontallineWidget-CyiexzIu.js.map} +1 -1
- package/dist/{HorizontallineWidget-BgXZZymr.cjs → HorizontallineWidget-LibmHnAf.cjs} +2 -2
- package/dist/{HorizontallineWidget-BgXZZymr.cjs.map → HorizontallineWidget-LibmHnAf.cjs.map} +1 -1
- package/dist/{IframeWidget-DK7rbULe.js → IframeWidget-D9Vh0w2c.js} +3 -3
- package/dist/{IframeWidget-DK7rbULe.js.map → IframeWidget-D9Vh0w2c.js.map} +1 -1
- package/dist/{IframeWidget-fV9e-Nm1.cjs → IframeWidget-xeXTxP_G.cjs} +2 -2
- package/dist/{IframeWidget-fV9e-Nm1.cjs.map → IframeWidget-xeXTxP_G.cjs.map} +1 -1
- package/dist/{ImageLoader-C9rN_pSY.js → ImageLoader-B4iBPFyi.js} +2 -2
- package/dist/{ImageLoader-C9rN_pSY.js.map → ImageLoader-B4iBPFyi.js.map} +1 -1
- package/dist/{ImageLoader-CJxiBXAL.cjs → ImageLoader-Cc4-BNJv.cjs} +2 -2
- package/dist/{ImageLoader-CJxiBXAL.cjs.map → ImageLoader-Cc4-BNJv.cjs.map} +1 -1
- package/dist/{ImageviewerWidget-6d6Kl3W_.js → ImageviewerWidget-DqV4SClv.js} +10 -9
- package/dist/ImageviewerWidget-DqV4SClv.js.map +1 -0
- package/dist/ImageviewerWidget-KVt487SJ.cjs +2 -0
- package/dist/ImageviewerWidget-KVt487SJ.cjs.map +1 -0
- package/dist/{InterfacesTab-BCqTanhV.js → InterfacesTab-C310FRIP.js} +4 -4
- package/dist/{InterfacesTab-BCqTanhV.js.map → InterfacesTab-C310FRIP.js.map} +1 -1
- package/dist/{InterfacesTab-0pmK3KNu.cjs → InterfacesTab-nZwg-ByS.cjs} +2 -2
- package/dist/{InterfacesTab-0pmK3KNu.cjs.map → InterfacesTab-nZwg-ByS.cjs.map} +1 -1
- package/dist/{LabelWidget-D71FfOSw.js → LabelWidget-BDukcPet.js} +3 -3
- package/dist/{LabelWidget-D71FfOSw.js.map → LabelWidget-BDukcPet.js.map} +1 -1
- package/dist/{LabelWidget-DdZz2NWv.cjs → LabelWidget-DYfv4K8h.cjs} +2 -2
- package/dist/{LabelWidget-DdZz2NWv.cjs.map → LabelWidget-DYfv4K8h.cjs.map} +1 -1
- package/dist/{LabelledWidget-BZ319slb.cjs → LabelledWidget-Dl1x6b3p.cjs} +2 -2
- package/dist/{LabelledWidget-BZ319slb.cjs.map → LabelledWidget-Dl1x6b3p.cjs.map} +1 -1
- package/dist/{LabelledWidget-D2ir5kVU.js → LabelledWidget-tVHE426s.js} +6 -6
- package/dist/{LabelledWidget-D2ir5kVU.js.map → LabelledWidget-tVHE426s.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-C4_YbROz.js → LabelprogressbarWidget-CjMDFUUv.js} +6 -6
- package/dist/{LabelprogressbarWidget-C4_YbROz.js.map → LabelprogressbarWidget-CjMDFUUv.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-LyevJNuz.cjs → LabelprogressbarWidget-DcO0gRM4.cjs} +2 -2
- package/dist/{LabelprogressbarWidget-LyevJNuz.cjs.map → LabelprogressbarWidget-DcO0gRM4.cjs.map} +1 -1
- package/dist/LabelsparklineWidget-Cp2a-qlI.cjs +2 -0
- package/dist/LabelsparklineWidget-Cp2a-qlI.cjs.map +1 -0
- package/dist/{LabelsparklineWidget-CdZ_pM2B.js → LabelsparklineWidget-dZl3cGu0.js} +13 -13
- package/dist/LabelsparklineWidget-dZl3cGu0.js.map +1 -0
- package/dist/{LabelvalueWidget-DSHwAKma.cjs → LabelvalueWidget-CgP4mzP_.cjs} +2 -2
- package/dist/{LabelvalueWidget-DSHwAKma.cjs.map → LabelvalueWidget-CgP4mzP_.cjs.map} +1 -1
- package/dist/{LabelvalueWidget-BS0EPY5h.js → LabelvalueWidget-UcAc_2Ry.js} +6 -6
- package/dist/{LabelvalueWidget-BS0EPY5h.js.map → LabelvalueWidget-UcAc_2Ry.js.map} +1 -1
- package/dist/{LabelvaluedescWidget-3lwQxkKj.cjs → LabelvaluedescWidget-CXJ037Qs.cjs} +2 -2
- package/dist/{LabelvaluedescWidget-3lwQxkKj.cjs.map → LabelvaluedescWidget-CXJ037Qs.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-Cpr8_Voq.js → LabelvaluedescWidget-Crb8udVe.js} +6 -6
- package/dist/{LabelvaluedescWidget-Cpr8_Voq.js.map → LabelvaluedescWidget-Crb8udVe.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-DbO_Q5ex.cjs → LabelvaluelimitsbarWidget-B3cn7i50.cjs} +2 -2
- package/dist/LabelvaluelimitsbarWidget-B3cn7i50.cjs.map +1 -0
- package/dist/{LabelvaluelimitsbarWidget-DTcYbEQS.js → LabelvaluelimitsbarWidget-BZGUQrRt.js} +10 -10
- package/dist/LabelvaluelimitsbarWidget-BZGUQrRt.js.map +1 -0
- package/dist/LabelvaluelimitscolumnWidget-DbBOkQ8R.cjs +2 -0
- package/dist/LabelvaluelimitscolumnWidget-DbBOkQ8R.cjs.map +1 -0
- package/dist/{LabelvaluelimitscolumnWidget-D0ltQ9Ta.js → LabelvaluelimitscolumnWidget-NNYW2aMO.js} +12 -12
- package/dist/LabelvaluelimitscolumnWidget-NNYW2aMO.js.map +1 -0
- package/dist/{LabelvaluerangebarWidget-B6_alHq4.cjs → LabelvaluerangebarWidget-B81fLpK0.cjs} +2 -2
- package/dist/{LabelvaluerangebarWidget-B6_alHq4.cjs.map → LabelvaluerangebarWidget-B81fLpK0.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-O8IHjvHs.js → LabelvaluerangebarWidget-CjkVDlVJ.js} +6 -6
- package/dist/{LabelvaluerangebarWidget-O8IHjvHs.js.map → LabelvaluerangebarWidget-CjkVDlVJ.js.map} +1 -1
- package/dist/Layout-FpBx3iic.js +36 -0
- package/dist/Layout-FpBx3iic.js.map +1 -0
- package/dist/Layout-K7_I6jMV.cjs +2 -0
- package/dist/Layout-K7_I6jMV.cjs.map +1 -0
- package/dist/{LedWidget-DUvJ2v8k.js → LedWidget-Bsp1aja-.js} +46 -39
- package/dist/LedWidget-Bsp1aja-.js.map +1 -0
- package/dist/LedWidget-C19KREVz.cjs +2 -0
- package/dist/LedWidget-C19KREVz.cjs.map +1 -0
- package/dist/LimitsBar-IVv8t4FE.js +134 -0
- package/dist/LimitsBar-IVv8t4FE.js.map +1 -0
- package/dist/LimitsBar-LRiUSWd7.cjs +2 -0
- package/dist/LimitsBar-LRiUSWd7.cjs.map +1 -0
- package/dist/LimitsbarWidget-BFjMhTbA.cjs +2 -0
- package/dist/LimitsbarWidget-BFjMhTbA.cjs.map +1 -0
- package/dist/LimitsbarWidget-Bo1JAoQp.js +65 -0
- package/dist/LimitsbarWidget-Bo1JAoQp.js.map +1 -0
- package/dist/LimitscolorWidget-D214kS86.cjs +2 -0
- package/dist/LimitscolorWidget-D214kS86.cjs.map +1 -0
- package/dist/{LimitscolorWidget-FXT0ZPPH.js → LimitscolorWidget-Doq8h_g1.js} +14 -13
- package/dist/LimitscolorWidget-Doq8h_g1.js.map +1 -0
- package/dist/{LimitscolumnWidget-C5yozwf0.cjs → LimitscolumnWidget-BREF_CBr.cjs} +2 -2
- package/dist/{LimitscolumnWidget-C5yozwf0.cjs.map → LimitscolumnWidget-BREF_CBr.cjs.map} +1 -1
- package/dist/{LimitscolumnWidget-CjBy-CCI.js → LimitscolumnWidget-qasXHN7m.js} +3 -3
- package/dist/{LimitscolumnWidget-CjBy-CCI.js.map → LimitscolumnWidget-qasXHN7m.js.map} +1 -1
- package/dist/{LinegraphWidget-lmu_tFKd.js → LinegraphWidget-BNMqcr_r.js} +5 -5
- package/dist/{LinegraphWidget-lmu_tFKd.js.map → LinegraphWidget-BNMqcr_r.js.map} +1 -1
- package/dist/{LinegraphWidget-dO_B0T3E.cjs → LinegraphWidget-BhpYKxnT.cjs} +2 -2
- package/dist/{LinegraphWidget-dO_B0T3E.cjs.map → LinegraphWidget-BhpYKxnT.cjs.map} +1 -1
- package/dist/MatrixbycolumnsWidget-BKXkhATe.cjs +2 -0
- package/dist/MatrixbycolumnsWidget-BKXkhATe.cjs.map +1 -0
- package/dist/MatrixbycolumnsWidget-BlF1CyIT.js +83 -0
- package/dist/MatrixbycolumnsWidget-BlF1CyIT.js.map +1 -0
- package/dist/MicroservicesTab-BWFwBSuf.cjs +2 -0
- package/dist/MicroservicesTab-BWFwBSuf.cjs.map +1 -0
- package/dist/MicroservicesTab-xpDXKoa-.js +203 -0
- package/dist/MicroservicesTab-xpDXKoa-.js.map +1 -0
- package/dist/OpenC3TimePicker-6pE8gGCO.cjs +2 -0
- package/dist/OpenC3TimePicker-6pE8gGCO.cjs.map +1 -0
- package/dist/OpenC3TimePicker-D-_qqySI.js +219 -0
- package/dist/OpenC3TimePicker-D-_qqySI.js.map +1 -0
- package/dist/{Openc3Screen-DcIIUO63.js → Openc3Screen-DYJHNotN.js} +730 -510
- package/dist/Openc3Screen-DYJHNotN.js.map +1 -0
- package/dist/Openc3Screen-Pu1ktpS8.cjs +6 -0
- package/dist/Openc3Screen-Pu1ktpS8.cjs.map +1 -0
- package/dist/OutputDialog-BwEWPQW9.cjs +2 -0
- package/dist/OutputDialog-BwEWPQW9.cjs.map +1 -0
- package/dist/{OutputDialog-CNH74LpJ.js → OutputDialog-x4QZFAWe.js} +24 -17
- package/dist/OutputDialog-x4QZFAWe.js.map +1 -0
- package/dist/{PackagesTab-PEPT4CQu.cjs → PackagesTab-CHwfaqdP.cjs} +2 -2
- package/dist/{PackagesTab-PEPT4CQu.cjs.map → PackagesTab-CHwfaqdP.cjs.map} +1 -1
- package/dist/{PackagesTab-BE6W7Aru.js → PackagesTab-rzc4hqOb.js} +4 -4
- package/dist/{PackagesTab-BE6W7Aru.js.map → PackagesTab-rzc4hqOb.js.map} +1 -1
- package/dist/{PluginsTab-DXf9zX0h.cjs → PluginsTab-C7gLbRQn.cjs} +2 -2
- package/dist/PluginsTab-C7gLbRQn.cjs.map +1 -0
- package/dist/{PluginsTab-B_Pf2A9c.js → PluginsTab-Dff_0j26.js} +8 -8
- package/dist/PluginsTab-Dff_0j26.js.map +1 -0
- package/dist/{ProgressbarWidget-B5WN658S.js → ProgressbarWidget-DQ80NANH.js} +7 -5
- package/dist/ProgressbarWidget-DQ80NANH.js.map +1 -0
- package/dist/ProgressbarWidget-cQAtX_Q7.cjs +2 -0
- package/dist/ProgressbarWidget-cQAtX_Q7.cjs.map +1 -0
- package/dist/RadiobuttonWidget-DFrUZRaV.cjs +2 -0
- package/dist/{RadiobuttonWidget-DkG9GtAy.cjs.map → RadiobuttonWidget-DFrUZRaV.cjs.map} +1 -1
- package/dist/{RadiobuttonWidget-B_3nys46.js → RadiobuttonWidget-LD18M4IQ.js} +11 -10
- package/dist/{RadiobuttonWidget-B_3nys46.js.map → RadiobuttonWidget-LD18M4IQ.js.map} +1 -1
- package/dist/{RadiogroupWidget-BiMIL9li.js → RadiogroupWidget-D_pt2MPz.js} +6 -6
- package/dist/{RadiogroupWidget-BiMIL9li.js.map → RadiogroupWidget-D_pt2MPz.js.map} +1 -1
- package/dist/{RadiogroupWidget-BnUjXU28.cjs → RadiogroupWidget-ljP05k3g.cjs} +2 -2
- package/dist/{RadiogroupWidget-BnUjXU28.cjs.map → RadiogroupWidget-ljP05k3g.cjs.map} +1 -1
- package/dist/RangebarWidget-BsLWXvTo.cjs +2 -0
- package/dist/RangebarWidget-BsLWXvTo.cjs.map +1 -0
- package/dist/{RangebarWidget-Dn0GASdi.js → RangebarWidget-DhaWpHjB.js} +12 -11
- package/dist/RangebarWidget-DhaWpHjB.js.map +1 -0
- package/dist/{RedisTab-BsKrL4fD.js → RedisTab-C3yjh0JX.js} +3 -3
- package/dist/{RedisTab-BsKrL4fD.js.map → RedisTab-C3yjh0JX.js.map} +1 -1
- package/dist/{RedisTab-C1yaDRSt.cjs → RedisTab-DEKMLop2.cjs} +2 -2
- package/dist/{RedisTab-C1yaDRSt.cjs.map → RedisTab-DEKMLop2.cjs.map} +1 -1
- package/dist/{RollupWidget-b62qcG5K.js → RollupWidget-CMU1-HwL.js} +15 -13
- package/dist/RollupWidget-CMU1-HwL.js.map +1 -0
- package/dist/RollupWidget-sXTyo7zH.cjs +2 -0
- package/dist/RollupWidget-sXTyo7zH.cjs.map +1 -0
- package/dist/{RoutersTab-EHz4wDCn.js → RoutersTab-DaWde6np.js} +4 -4
- package/dist/{RoutersTab-EHz4wDCn.js.map → RoutersTab-DaWde6np.js.map} +1 -1
- package/dist/{RoutersTab-8wGbiPCk.cjs → RoutersTab-IKuEHQeO.cjs} +2 -2
- package/dist/{RoutersTab-8wGbiPCk.cjs.map → RoutersTab-IKuEHQeO.cjs.map} +1 -1
- package/dist/ScriptChooser-BmyV6QQD.cjs +2 -0
- package/dist/ScriptChooser-BmyV6QQD.cjs.map +1 -0
- package/dist/{ScriptChooser-DMPY3m8a.js → ScriptChooser-DCjI5aeZ.js} +118 -93
- package/dist/ScriptChooser-DCjI5aeZ.js.map +1 -0
- package/dist/ScrollwindowWidget-BcLF_bhy.cjs +2 -0
- package/dist/ScrollwindowWidget-BcLF_bhy.cjs.map +1 -0
- package/dist/ScrollwindowWidget-D7Ln-QMq.js +69 -0
- package/dist/ScrollwindowWidget-D7Ln-QMq.js.map +1 -0
- package/dist/{SecretsTab-DSMFodJM.cjs → SecretsTab-BM9HIjT_.cjs} +2 -2
- package/dist/{SecretsTab-DSMFodJM.cjs.map → SecretsTab-BM9HIjT_.cjs.map} +1 -1
- package/dist/{SecretsTab-Cbt_r-1I.js → SecretsTab-Dhal1RCq.js} +3 -3
- package/dist/{SecretsTab-Cbt_r-1I.js.map → SecretsTab-Dhal1RCq.js.map} +1 -1
- package/dist/SettingsTab-BrSkK_Fs.cjs +3 -0
- package/dist/SettingsTab-BrSkK_Fs.cjs.map +1 -0
- package/dist/{SettingsTab-L5xbCAW_.js → SettingsTab-Dtj_AlEW.js} +319 -202
- package/dist/SettingsTab-Dtj_AlEW.js.map +1 -0
- package/dist/SignalWidget-DHwveppA.cjs +2 -0
- package/dist/SignalWidget-DHwveppA.cjs.map +1 -0
- package/dist/{SignalWidget-CLi6qask.js → SignalWidget-PreTg4Mt.js} +5 -3
- package/dist/SignalWidget-PreTg4Mt.js.map +1 -0
- package/dist/SimpleTextDialog-Bdw3jul4.cjs +2 -0
- package/dist/SimpleTextDialog-Bdw3jul4.cjs.map +1 -0
- package/dist/{SimpleTextDialog-8vDPDt6X.js → SimpleTextDialog-DDIm5Znf.js} +26 -19
- package/dist/SimpleTextDialog-DDIm5Znf.js.map +1 -0
- package/dist/{SpacerWidget-BCA3gdap.js → SpacerWidget-Chy1NO28.js} +3 -3
- package/dist/{SpacerWidget-BCA3gdap.js.map → SpacerWidget-Chy1NO28.js.map} +1 -1
- package/dist/{SpacerWidget-BJpqoaeP.cjs → SpacerWidget-Cj-j_MsG.cjs} +2 -2
- package/dist/{SpacerWidget-BJpqoaeP.cjs.map → SpacerWidget-Cj-j_MsG.cjs.map} +1 -1
- package/dist/SparklineWidget-BE1LieLF.cjs +2 -0
- package/dist/SparklineWidget-BE1LieLF.cjs.map +1 -0
- package/dist/{SparklineWidget-D8mb4zLt.js → SparklineWidget-Bb-gCNNt.js} +11 -11
- package/dist/SparklineWidget-Bb-gCNNt.js.map +1 -0
- package/dist/TabbookWidget-FNbiZpjn.cjs +2 -0
- package/dist/TabbookWidget-FNbiZpjn.cjs.map +1 -0
- package/dist/TabbookWidget-a-LsBhBE.js +96 -0
- package/dist/TabbookWidget-a-LsBhBE.js.map +1 -0
- package/dist/TargetPacketItemChooser-BPRByyfB.cjs +2 -0
- package/dist/TargetPacketItemChooser-BPRByyfB.cjs.map +1 -0
- package/dist/{TargetPacketItemChooser-DGcXvdTX.js → TargetPacketItemChooser-DDqBQTWC.js} +232 -183
- package/dist/TargetPacketItemChooser-DDqBQTWC.js.map +1 -0
- package/dist/{TargetsTab-c-qMsGHh.js → TargetsTab-C7Pn5-19.js} +4 -4
- package/dist/{TargetsTab-c-qMsGHh.js.map → TargetsTab-C7Pn5-19.js.map} +1 -1
- package/dist/{TargetsTab-C4tQ1auc.cjs → TargetsTab-dndajwC_.cjs} +2 -2
- package/dist/{TargetsTab-C4tQ1auc.cjs.map → TargetsTab-dndajwC_.cjs.map} +1 -1
- package/dist/{TextBoxDialog-Xs-gitZd.js → TextBoxDialog-CJHrE2Sh.js} +29 -22
- package/dist/TextBoxDialog-CJHrE2Sh.js.map +1 -0
- package/dist/TextBoxDialog-DzCvdsJj.cjs +2 -0
- package/dist/TextBoxDialog-DzCvdsJj.cjs.map +1 -0
- package/dist/{TextboxWidget-CR05wO-t.js → TextboxWidget-DIHEOldN.js} +19 -19
- package/dist/{TextboxWidget-CR05wO-t.js.map → TextboxWidget-DIHEOldN.js.map} +1 -1
- package/dist/{TextboxWidget-BcRfHcF6.cjs → TextboxWidget-DYTNipbi.cjs} +2 -2
- package/dist/{TextboxWidget-BcRfHcF6.cjs.map → TextboxWidget-DYTNipbi.cjs.map} +1 -1
- package/dist/{TextfieldWidget-Ct1hZr2M.cjs → TextfieldWidget-BE-HpIKs.cjs} +2 -2
- package/dist/{TextfieldWidget-Ct1hZr2M.cjs.map → TextfieldWidget-BE-HpIKs.cjs.map} +1 -1
- package/dist/{TextfieldWidget-Be_Pz2bF.js → TextfieldWidget-CIBo7Dau.js} +5 -5
- package/dist/{TextfieldWidget-Be_Pz2bF.js.map → TextfieldWidget-CIBo7Dau.js.map} +1 -1
- package/dist/TimeWidget-CLuOYfPP.js +43 -0
- package/dist/TimeWidget-CLuOYfPP.js.map +1 -0
- package/dist/TimeWidget-RYL7zDoC.cjs +2 -0
- package/dist/TimeWidget-RYL7zDoC.cjs.map +1 -0
- package/dist/{TitleWidget-BcmxUDzM.js → TitleWidget-BTHKLAsb.js} +3 -3
- package/dist/{TitleWidget-BcmxUDzM.js.map → TitleWidget-BTHKLAsb.js.map} +1 -1
- package/dist/{TitleWidget-C1qzja9l.cjs → TitleWidget-DVWOhZqJ.cjs} +2 -2
- package/dist/{TitleWidget-C1qzja9l.cjs.map → TitleWidget-DVWOhZqJ.cjs.map} +1 -1
- package/dist/{ToolsTab-CbY2K86w.cjs → ToolsTab-D4LFT4tV.cjs} +2 -2
- package/dist/{ToolsTab-CbY2K86w.cjs.map → ToolsTab-D4LFT4tV.cjs.map} +1 -1
- package/dist/{ToolsTab-Buklih4C.js → ToolsTab-D5yhjVM0.js} +4 -4
- package/dist/{ToolsTab-Buklih4C.js.map → ToolsTab-D5yhjVM0.js.map} +1 -1
- package/dist/{TopBar-HxaiWynT.cjs → TopBar-DUdrFsMv.cjs} +2 -2
- package/dist/{TopBar-HxaiWynT.cjs.map → TopBar-DUdrFsMv.cjs.map} +1 -1
- package/dist/{TopBar-D4C9DJcu.js → TopBar-DzxJ69Tt.js} +3 -3
- package/dist/{TopBar-D4C9DJcu.js.map → TopBar-DzxJ69Tt.js.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog-D0AGxldj.js → UpgradeToEnterpriseDialog-Bf6rEOgp.js} +16 -13
- package/dist/UpgradeToEnterpriseDialog-Bf6rEOgp.js.map +1 -0
- package/dist/UpgradeToEnterpriseDialog-CujyHt2o.cjs +2 -0
- package/dist/UpgradeToEnterpriseDialog-CujyHt2o.cjs.map +1 -0
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs} +108 -108
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B8ikVCn7.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-NXWdTcR2.js} +5473 -5451
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B8ikVCn7.js.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-NXWdTcR2.js.map} +1 -1
- package/dist/{VWidget-CBmUpKSV.js → VWidget-BcwkHuIT.js} +3 -3
- package/dist/{VWidget-CBmUpKSV.js.map → VWidget-BcwkHuIT.js.map} +1 -1
- package/dist/{VWidget-DhGLFGS2.cjs → VWidget-CbdjSkP3.cjs} +2 -2
- package/dist/{VWidget-DhGLFGS2.cjs.map → VWidget-CbdjSkP3.cjs.map} +1 -1
- package/dist/ValueWidget-BubIamVx.js +138 -0
- package/dist/ValueWidget-BubIamVx.js.map +1 -0
- package/dist/ValueWidget-CgAl2Av2.cjs +2 -0
- package/dist/ValueWidget-CgAl2Av2.cjs.map +1 -0
- package/dist/{ValuelimitsbarWidget-BdY02gqc.js → ValuelimitsbarWidget-DKTrV1RT.js} +11 -11
- package/dist/{ValuelimitsbarWidget-BdY02gqc.js.map → ValuelimitsbarWidget-DKTrV1RT.js.map} +1 -1
- package/dist/{ValuelimitsbarWidget-KsFz7ipK.cjs → ValuelimitsbarWidget-Dn_sS0zt.cjs} +2 -2
- package/dist/{ValuelimitsbarWidget-KsFz7ipK.cjs.map → ValuelimitsbarWidget-Dn_sS0zt.cjs.map} +1 -1
- package/dist/ValuelimitscolumnWidget-CGhifOZI.cjs +2 -0
- package/dist/ValuelimitscolumnWidget-CGhifOZI.cjs.map +1 -0
- package/dist/{ValuelimitscolumnWidget-CuJ6rqtC.js → ValuelimitscolumnWidget-D8JIK4Zi.js} +11 -11
- package/dist/ValuelimitscolumnWidget-D8JIK4Zi.js.map +1 -0
- package/dist/{ValuerangebarWidget-C5rolGDi.js → ValuerangebarWidget-D8hVKp0l.js} +6 -6
- package/dist/{ValuerangebarWidget-C5rolGDi.js.map → ValuerangebarWidget-D8hVKp0l.js.map} +1 -1
- package/dist/{ValuerangebarWidget-CDJeamPr.cjs → ValuerangebarWidget-DPtR-Dla.cjs} +2 -2
- package/dist/{ValuerangebarWidget-CDJeamPr.cjs.map → ValuerangebarWidget-DPtR-Dla.cjs.map} +1 -1
- package/dist/VerticalWidget-DMp3DXGa.js +68 -0
- package/dist/VerticalWidget-DMp3DXGa.js.map +1 -0
- package/dist/VerticalWidget-DScGTfwX.cjs +2 -0
- package/dist/VerticalWidget-DScGTfwX.cjs.map +1 -0
- package/dist/{VerticalboxWidget-D-3H1PYU.cjs → VerticalboxWidget-CIJ1c7WU.cjs} +2 -2
- package/dist/{VerticalboxWidget-D-3H1PYU.cjs.map → VerticalboxWidget-CIJ1c7WU.cjs.map} +1 -1
- package/dist/{VerticalboxWidget-CzDgveBl.js → VerticalboxWidget-CVf1d_3_.js} +6 -6
- package/dist/{VerticalboxWidget-CzDgveBl.js.map → VerticalboxWidget-CVf1d_3_.js.map} +1 -1
- package/dist/Widget-Btu2EoLT.cjs +2 -0
- package/dist/Widget-Btu2EoLT.cjs.map +1 -0
- package/dist/{Widget-VCl8Ts8s.js → Widget-D4rzBHnr.js} +27 -19
- package/dist/Widget-D4rzBHnr.js.map +1 -0
- package/dist/components.cjs +3 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +421 -248
- package/dist/components.js.map +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +6 -4
- package/dist/icons.js.map +1 -1
- package/dist/plugins.cjs +2 -2
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.js +23 -17
- package/dist/plugins.js.map +1 -1
- package/dist/{settings-sg_XHXQ-.cjs → settings-B9vbjzwV.cjs} +2 -2
- package/dist/{settings-sg_XHXQ-.cjs.map → settings-B9vbjzwV.cjs.map} +1 -1
- package/dist/{settings-DlX9yvJJ.js → settings-Ctcx_wMT.js} +2 -2
- package/dist/{settings-DlX9yvJJ.js.map → settings-Ctcx_wMT.js.map} +1 -1
- package/dist/tools/admin.cjs +4 -5
- package/dist/tools/admin.cjs.map +1 -1
- package/dist/tools/admin.js +954 -833
- 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 +38 -37
- 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 +8 -8
- package/dist/tools/scriptrunner.cjs.map +1 -1
- package/dist/tools/scriptrunner.js +1121 -1134
- package/dist/tools/scriptrunner.js.map +1 -1
- package/dist/useContainerHeight-BAw05dIa.js.map +1 -1
- package/dist/useContainerHeight-BEd4f2Lr.cjs.map +1 -1
- package/dist/vue-common.css +1 -1
- package/dist/widgets.cjs +1 -1
- package/dist/widgets.js +118 -116
- package/dist/widgets.js.map +1 -1
- package/package.json +6 -6
- package/dist/BarColumn-BZSUr33b.cjs +0 -2
- package/dist/BarColumn-BZSUr33b.cjs.map +0 -1
- package/dist/BarColumn-XWs-3Cwb.js.map +0 -1
- package/dist/ButtonWidget-BBMDS_YF.cjs.map +0 -1
- package/dist/ButtonWidget-BaSvtElA.js.map +0 -1
- package/dist/CanvasimageWidget-Dk15uRRu.cjs +0 -2
- package/dist/CanvasimageWidget-Dk15uRRu.cjs.map +0 -1
- package/dist/CanvasimageWidget-YP1pCtvb.js.map +0 -1
- package/dist/CanvasimagevalueWidget-BQHjJCuq.cjs +0 -2
- package/dist/CanvasimagevalueWidget-BQHjJCuq.cjs.map +0 -1
- package/dist/CanvasimagevalueWidget-CjVHb2uj.js.map +0 -1
- package/dist/CanvaslabelvalueWidget-BYmsu9r_.cjs +0 -2
- package/dist/CanvaslabelvalueWidget-BYmsu9r_.cjs.map +0 -1
- package/dist/CanvaslabelvalueWidget-Dyo_ogHn.js.map +0 -1
- package/dist/CanvaslinevalueWidget-BOZyJuLE.js.map +0 -1
- package/dist/CanvaslinevalueWidget-DM5c-ciY.cjs +0 -2
- package/dist/CanvaslinevalueWidget-DM5c-ciY.cjs.map +0 -1
- package/dist/CheckbuttonWidget-BSvTWD3x.cjs +0 -2
- package/dist/ComboboxWidget-B_KAnIVB.cjs +0 -2
- package/dist/CriticalCmdDialog-BtzhxuZi.js.map +0 -1
- package/dist/CriticalCmdDialog-CeohXoAG.cjs +0 -2
- package/dist/CriticalCmdDialog-CeohXoAG.cjs.map +0 -1
- package/dist/CustomIcon-eie3rPKh.cjs +0 -2
- package/dist/DetailsDialog-Bc_VEG95.cjs +0 -2
- package/dist/DetailsDialog-Bc_VEG95.cjs.map +0 -1
- package/dist/DetailsDialog-Bq7SS7bc.js.map +0 -1
- package/dist/DynamicWidget-BNfJRfR5.cjs +0 -2
- package/dist/DynamicWidget-BNfJRfR5.cjs.map +0 -1
- package/dist/DynamicWidget-DHL7pbgW.js.map +0 -1
- package/dist/EventListDialog-Dycx70tY.cjs +0 -2
- package/dist/EventListDialog-Dycx70tY.cjs.map +0 -1
- package/dist/EventListDialog-jdNF3szO.js.map +0 -1
- package/dist/Graph-B7KPo9Ul.js.map +0 -1
- package/dist/Graph-C9FS6KR3.cjs +0 -2
- package/dist/Graph-C9FS6KR3.cjs.map +0 -1
- package/dist/HorizontalWidget-CN6goWHY.cjs +0 -2
- package/dist/HorizontalWidget-CN6goWHY.cjs.map +0 -1
- package/dist/HorizontalWidget-DbEQYjFC.js +0 -41
- package/dist/HorizontalWidget-DbEQYjFC.js.map +0 -1
- package/dist/ImageviewerWidget-6d6Kl3W_.js.map +0 -1
- package/dist/ImageviewerWidget-CULuNsiD.cjs +0 -2
- package/dist/ImageviewerWidget-CULuNsiD.cjs.map +0 -1
- package/dist/LabelsparklineWidget-Cbug97Ne.cjs +0 -2
- package/dist/LabelsparklineWidget-Cbug97Ne.cjs.map +0 -1
- package/dist/LabelsparklineWidget-CdZ_pM2B.js.map +0 -1
- package/dist/LabelvaluelimitsbarWidget-DTcYbEQS.js.map +0 -1
- package/dist/LabelvaluelimitsbarWidget-DbO_Q5ex.cjs.map +0 -1
- package/dist/LabelvaluelimitscolumnWidget-BMSwK1Ys.cjs +0 -2
- package/dist/LabelvaluelimitscolumnWidget-BMSwK1Ys.cjs.map +0 -1
- package/dist/LabelvaluelimitscolumnWidget-D0ltQ9Ta.js.map +0 -1
- package/dist/Layout-DDewLzbI.cjs +0 -2
- package/dist/Layout-DDewLzbI.cjs.map +0 -1
- package/dist/Layout-DW5yNlp7.js +0 -14
- package/dist/Layout-DW5yNlp7.js.map +0 -1
- package/dist/LedWidget-Cif7vC7q.cjs +0 -2
- package/dist/LedWidget-Cif7vC7q.cjs.map +0 -1
- package/dist/LedWidget-DUvJ2v8k.js.map +0 -1
- package/dist/LimitsbarWidget-BehZv0-k.js +0 -72
- package/dist/LimitsbarWidget-BehZv0-k.js.map +0 -1
- package/dist/LimitsbarWidget-BodNPbuH.cjs +0 -2
- package/dist/LimitsbarWidget-BodNPbuH.cjs.map +0 -1
- package/dist/LimitscolorWidget-DPhymKgB.cjs +0 -2
- package/dist/LimitscolorWidget-DPhymKgB.cjs.map +0 -1
- package/dist/LimitscolorWidget-FXT0ZPPH.js.map +0 -1
- package/dist/MatrixbycolumnsWidget-BLkwvpMk.cjs +0 -2
- package/dist/MatrixbycolumnsWidget-BLkwvpMk.cjs.map +0 -1
- package/dist/MatrixbycolumnsWidget-CCF7rCkV.js +0 -56
- package/dist/MatrixbycolumnsWidget-CCF7rCkV.js.map +0 -1
- package/dist/MicroservicesTab-rxOATXLO.js +0 -219
- package/dist/MicroservicesTab-rxOATXLO.js.map +0 -1
- package/dist/MicroservicesTab-uesXuuM4.cjs +0 -2
- package/dist/MicroservicesTab-uesXuuM4.cjs.map +0 -1
- package/dist/Openc3Screen-CzD9BB0M.cjs +0 -6
- package/dist/Openc3Screen-CzD9BB0M.cjs.map +0 -1
- package/dist/Openc3Screen-DcIIUO63.js.map +0 -1
- package/dist/OutputDialog-CNH74LpJ.js.map +0 -1
- package/dist/OutputDialog-QIabyvK1.cjs +0 -2
- package/dist/OutputDialog-QIabyvK1.cjs.map +0 -1
- package/dist/PluginsTab-B_Pf2A9c.js.map +0 -1
- package/dist/PluginsTab-DXf9zX0h.cjs.map +0 -1
- package/dist/ProgressbarWidget-B5WN658S.js.map +0 -1
- package/dist/ProgressbarWidget-D2NHSJny.cjs +0 -2
- package/dist/ProgressbarWidget-D2NHSJny.cjs.map +0 -1
- package/dist/RadiobuttonWidget-DkG9GtAy.cjs +0 -2
- package/dist/RangebarWidget-CJgtAk5z.cjs +0 -2
- package/dist/RangebarWidget-CJgtAk5z.cjs.map +0 -1
- package/dist/RangebarWidget-Dn0GASdi.js.map +0 -1
- package/dist/RollupWidget-B2pGGoET.cjs +0 -2
- package/dist/RollupWidget-B2pGGoET.cjs.map +0 -1
- package/dist/RollupWidget-b62qcG5K.js.map +0 -1
- package/dist/ScriptChooser-CtV7dDJS.cjs +0 -2
- package/dist/ScriptChooser-CtV7dDJS.cjs.map +0 -1
- package/dist/ScriptChooser-DMPY3m8a.js.map +0 -1
- package/dist/ScrollwindowWidget-ByJRy528.cjs +0 -2
- package/dist/ScrollwindowWidget-ByJRy528.cjs.map +0 -1
- package/dist/ScrollwindowWidget-Dn29gs-U.js +0 -45
- package/dist/ScrollwindowWidget-Dn29gs-U.js.map +0 -1
- package/dist/SettingsTab-8Zeg3G0C.cjs +0 -3
- package/dist/SettingsTab-8Zeg3G0C.cjs.map +0 -1
- package/dist/SettingsTab-L5xbCAW_.js.map +0 -1
- package/dist/SignalWidget-CEmQymzQ.cjs +0 -2
- package/dist/SignalWidget-CEmQymzQ.cjs.map +0 -1
- package/dist/SignalWidget-CLi6qask.js.map +0 -1
- package/dist/SimpleTextDialog-8vDPDt6X.js.map +0 -1
- package/dist/SimpleTextDialog-CJ8pLBGz.cjs +0 -2
- package/dist/SimpleTextDialog-CJ8pLBGz.cjs.map +0 -1
- package/dist/SparklineWidget-CIkMm4O-.cjs +0 -2
- package/dist/SparklineWidget-CIkMm4O-.cjs.map +0 -1
- package/dist/SparklineWidget-D8mb4zLt.js.map +0 -1
- package/dist/TabbookWidget-Bkt4g02d.js +0 -66
- package/dist/TabbookWidget-Bkt4g02d.js.map +0 -1
- package/dist/TabbookWidget-DqcScWwW.cjs +0 -2
- package/dist/TabbookWidget-DqcScWwW.cjs.map +0 -1
- package/dist/TargetPacketItemChooser-Cm6mQvhI.cjs +0 -2
- package/dist/TargetPacketItemChooser-Cm6mQvhI.cjs.map +0 -1
- package/dist/TargetPacketItemChooser-DGcXvdTX.js.map +0 -1
- package/dist/TextBoxDialog-DXG7H7kQ.cjs +0 -2
- package/dist/TextBoxDialog-DXG7H7kQ.cjs.map +0 -1
- package/dist/TextBoxDialog-Xs-gitZd.js.map +0 -1
- package/dist/TimeWidget-3M7CQ893.cjs +0 -2
- package/dist/TimeWidget-3M7CQ893.cjs.map +0 -1
- package/dist/TimeWidget-Dy8zpkC6.js +0 -40
- package/dist/TimeWidget-Dy8zpkC6.js.map +0 -1
- package/dist/UpgradeToEnterpriseDialog-D0AGxldj.js.map +0 -1
- package/dist/UpgradeToEnterpriseDialog-D8BkzmVD.cjs +0 -2
- package/dist/UpgradeToEnterpriseDialog-D8BkzmVD.cjs.map +0 -1
- package/dist/ValueWidget-BxWrHkYY.js +0 -118
- package/dist/ValueWidget-BxWrHkYY.js.map +0 -1
- package/dist/ValueWidget-yuZ8tPzG.cjs +0 -2
- package/dist/ValueWidget-yuZ8tPzG.cjs.map +0 -1
- package/dist/ValuelimitscolumnWidget-B0HGnyS5.cjs +0 -2
- package/dist/ValuelimitscolumnWidget-B0HGnyS5.cjs.map +0 -1
- package/dist/ValuelimitscolumnWidget-CuJ6rqtC.js.map +0 -1
- package/dist/VerticalWidget-DsnEzKZ2.js +0 -40
- package/dist/VerticalWidget-DsnEzKZ2.js.map +0 -1
- package/dist/VerticalWidget-wuRCrd7Q.cjs +0 -2
- package/dist/VerticalWidget-wuRCrd7Q.cjs.map +0 -1
- package/dist/Widget-CKianvfR.cjs +0 -2
- package/dist/Widget-CKianvfR.cjs.map +0 -1
- package/dist/Widget-VCl8Ts8s.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventListDialog-Id3rEQKY.js","sources":["../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/add.js","../src/tools/calendar/CreateDialog.js","../src/tools/calendar/ActivityCreateDialog.vue","../src/tools/calendar/ColorSelectForm.vue","../src/tools/calendar/DeleteItem.js","../src/tools/calendar/MetadataInputForm.vue","../src/tools/calendar/MetadataCreateDialog.vue","../src/tools/calendar/NoteCreateDialog.vue","../src/tools/calendar/EventListDialog.vue"],"sourcesContent":["import { addDays } from \"./addDays.js\";\nimport { addMonths } from \"./addMonths.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link add} function options.\n */\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @typeParam DateType - The `Date` type the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes, and seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport function add(date, duration, options) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Add years and months\n const _date = toDate(date, options?.in);\n const dateWithMonths =\n months || years ? addMonths(_date, months + years * 12) : _date;\n\n // Add weeks and days\n const dateWithDays =\n days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes, and seconds\n const minutesToAdd = minutes + hours * 60;\n const secondsToAdd = seconds + minutesToAdd * 60;\n const msToAdd = secondsToAdd * 1000;\n\n return constructFrom(options?.in || date, +dateWithDays + msToAdd);\n}\n\n// Fallback for modularized imports:\nexport default add;\n","/*\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 { add, format, parse } from 'date-fns'\n\nexport default {\n props: {\n date: {\n type: String,\n },\n time: {\n type: String,\n },\n timeZone: {\n type: String,\n },\n },\n data() {\n return {\n startDate: '',\n startTime: '',\n endDate: '',\n endTime: '',\n }\n },\n methods: {\n calcStartDateTime: function () {\n if (this.date) {\n this.startDate = this.date\n this.endDate = this.date\n } else {\n this.startDate = format(new Date(), 'yyyy-MM-dd')\n this.endDate = format(new Date(), 'yyyy-MM-dd')\n }\n let ms = 1000 * 60 * 30 // 30 min\n let start = null\n if (this.time) {\n start = parse(this.time, 'HH:mm:ss', new Date())\n // Round down so the start is the beginning of the time box where they clicked\n start = new Date(Math.floor(start.getTime() / ms) * ms)\n } else {\n // Round up so the start is in the future\n start = new Date(Math.ceil(new Date().getTime() / ms) * ms)\n }\n this.startTime = format(start, 'HH:mm:ss')\n this.endTime = format(add(start, { minutes: 30 }), 'HH:mm:ss')\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 2026, 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-dialog v-model=\"show\" persistent width=\"600\" @keydown.esc=\"clearHandler\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"activity\">Edit Activity</span>\n <span v-else>Create Activity</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-note-icon\"\n @click=\"clearHandler\"\n />\n </v-toolbar>\n <v-stepper\n v-model=\"dialogStep\"\n :items=\"['Activity Times', 'Activity Type']\"\n >\n <template v-if=\"dialogStep === 1\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-spacer />\n <v-btn\n color=\"primary\"\n :disabled=\"validationError\"\n @click=\"dialogStep = 2\"\n >\n Next\n </v-btn>\n </v-row>\n </template>\n\n <!-- eslint-disable-next-line vue/valid-v-slot -->\n <template v-if=\"dialogStep === 2\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-btn variant=\"text\" @click=\"() => (dialogStep -= 1)\">\n Previous\n </v-btn>\n <v-spacer />\n <v-btn variant=\"outlined\" class=\"mr-4\" @click=\"clearHandler\">\n Cancel\n </v-btn>\n <v-btn\n type=\"submit\"\n color=\"primary\"\n :disabled=\"!!error\"\n @click.prevent=\"submitHandler\"\n >\n Ok\n </v-btn>\n </v-row>\n </template>\n\n <template #item.1>\n <v-card-text>\n <div class=\"pr-2\">\n <v-select\n v-model=\"timeline\"\n density=\"compact\"\n hide-details\n variant=\"outlined\"\n :items=\"timelineNames\"\n label=\"Timeline\"\n data-test=\"activity-select-timeline\"\n class=\"pb-2\"\n >\n </v-select>\n <v-text-field\n v-model=\"customTitle\"\n type=\"text\"\n label=\"Custom Title\"\n class=\"pb-2\"\n data-test=\"activity-custom-title\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n />\n <v-textarea\n v-model=\"notes\"\n label=\"Notes\"\n class=\"py-2 mb-2\"\n data-test=\"activity-notes\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n rows=\"3\"\n />\n <v-row dense>\n <v-text-field\n v-model=\"startDate\"\n type=\"date\"\n label=\"Start Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-start-date\"\n />\n <OpenC3TimePicker\n v-model=\"startTime\"\n label=\"Start Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-start-time\"\n />\n </v-row>\n <v-row dense>\n <v-text-field\n v-model=\"endDate\"\n type=\"date\"\n label=\"End Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-end-date\"\n />\n <OpenC3TimePicker\n v-model=\"endTime\"\n label=\"End Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-end-time\"\n />\n </v-row>\n <v-row class=\"pl-3\">\n <v-checkbox\n v-model=\"recurring\"\n :disabled=\"!!activity\"\n label=\"Recurring\"\n hide-details\n data-test=\"recurring\"\n >\n </v-checkbox>\n </v-row>\n <v-row v-if=\"recurring\">\n <v-col>\n <div class=\"repeat\">Repeat every</div>\n </v-col>\n <v-col>\n <v-text-field\n v-model=\"frequency\"\n :disabled=\"!!activity\"\n density=\"compact\"\n variant=\"outlined\"\n single-line\n hide-details\n data-test=\"recurring-frequency\"\n /></v-col>\n <v-col>\n <v-select\n v-model=\"timeSpan\"\n :disabled=\"!!activity\"\n :items=\"timeSpans\"\n style=\"primary\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n data-test=\"recurring-span\"\n />\n </v-col>\n </v-row>\n <v-row v-if=\"recurring\" style=\"padding-bottom: 10px\">\n <v-col>\n <div class=\"repeat\">Ending</div>\n </v-col>\n <v-col>\n <v-text-field\n v-model=\"recurringEndDate\"\n type=\"date\"\n label=\"End Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n :disabled=\"!!activity\"\n data-test=\"recurring-end-date\"\n /></v-col>\n <v-col>\n <OpenC3TimePicker\n v-model=\"recurringEndTime\"\n label=\"End Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n :disabled=\"!!activity\"\n data-test=\"recurring-end-time\"\n /></v-col>\n </v-row>\n <v-row>\n <span\n v-show=\"timeError\"\n class=\"ma-2 text-red\"\n v-text=\"timeError\"\n />\n </v-row>\n </div>\n </v-card-text>\n </template>\n\n <template #item.2>\n <v-card-text>\n <div class=\"pr-2\">\n <v-select\n v-model=\"kind\"\n density=\"compact\"\n hide-details\n variant=\"outlined\"\n :items=\"types\"\n label=\"Activity Type\"\n data-test=\"activity-select-type\"\n class=\"pb-2\"\n >\n </v-select>\n <div v-if=\"kind === 'COMMAND'\">\n <v-textarea\n v-model=\"activityData\"\n label=\"Command Input\"\n rows=\"1\"\n readonly\n auto-grow\n data-test=\"activity-cmd\"\n @click:control=\"editItem()\"\n />\n </div>\n <div v-else-if=\"kind === 'SCRIPT'\" class=\"ma-3\">\n <script-chooser @file=\"fileHandler\" />\n <environment-chooser v-model=\"activityEnvironment\" />\n </div>\n <div v-else>\n <span class=\"ma-2\"> No required input </span>\n </div>\n <v-row v-show=\"typeError\" class=\"mt-2\">\n <span class=\"ma-2 text-red\" v-text=\"typeError\" />\n </v-row>\n </div>\n </v-card-text>\n </template>\n </v-stepper>\n </v-card>\n </v-dialog>\n\n <!-- Command Editor Dialog -->\n <v-dialog\n v-model=\"showCommandDialog\"\n max-width=\"1200\"\n persistent\n scrollable\n @keydown.esc=\"closeCommandDialog\"\n >\n <v-card>\n <v-card-title class=\"d-flex align-center\">\n <span>{{ dialogTitle }}</span>\n <v-spacer />\n <v-btn icon=\"mdi-close\" variant=\"text\" @click=\"closeCommandDialog\" />\n </v-card-title>\n <v-card-text class=\"pa-0\">\n <div v-if=\"dialogError\" class=\"error-message\">\n <v-icon class=\"mr-2\" color=\"error\">mdi-alert-circle</v-icon>\n <span class=\"flex-grow-1\">{{ dialogError }}</span>\n <v-btn\n icon=\"mdi-close\"\n size=\"small\"\n variant=\"text\"\n color=\"error\"\n class=\"ml-2\"\n @click=\"clearDialogError\"\n />\n </div>\n <command-editor\n ref=\"commandEditor\"\n :send-disabled=\"false\"\n :states-in-hex=\"statesInHex\"\n :show-ignored-params=\"showIgnoredParams\"\n :cmd-raw=\"cmdRaw\"\n :cmd-string=\"dialogCmdString\"\n :show-command-button=\"false\"\n @build-cmd=\"updateCommand($event)\"\n />\n </v-card-text>\n <v-card-actions>\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"closeCommandDialog\"> Cancel </v-btn>\n <v-btn color=\"primary\" variant=\"flat\" @click=\"updateCommand()\">\n Update Command\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport {\n EnvironmentChooser,\n ScriptChooser,\n CommandEditor,\n OpenC3TimePicker,\n} from '@/components'\nimport { TimeFilters } from '@/util'\nimport CreateDialog from './CreateDialog'\n\nexport default {\n components: {\n EnvironmentChooser,\n ScriptChooser,\n CommandEditor,\n OpenC3TimePicker,\n },\n mixins: [CreateDialog, TimeFilters],\n props: {\n modelValue: Boolean,\n timelines: {\n type: Array,\n required: true,\n },\n activity: {\n type: Object,\n default: null,\n },\n },\n emits: ['update:modelValue', 'update'],\n data() {\n return {\n timeline: null,\n dialogStep: 1,\n kind: '',\n types: ['COMMAND', 'SCRIPT', 'RESERVE'],\n activityData: '',\n activityEnvironment: [],\n customTitle: '',\n notes: '',\n rules: {\n required: (value) => !!value || 'Required',\n },\n recurring: false,\n recurringEndDate: null,\n recurringEndTime: null,\n frequency: 90,\n timeSpan: 'minutes',\n timeSpans: ['minutes', 'hours', 'days'],\n showCommandDialog: false,\n dialogTitle: 'Add Command',\n dialogError: '',\n dialogCmdString: null,\n }\n },\n computed: {\n timeError: function () {\n const now = new Date()\n const start = Date.parse(`${this.startDate}T${this.startTime}`)\n const end = Date.parse(`${this.endDate}T${this.endTime}`)\n if (start === end) {\n return 'Invalid start, end time. Activity must have different start and end times.'\n }\n if (now > start) {\n return 'Invalid start time. Activity must be in the future.'\n }\n if (start > end) {\n return 'Invalid start time. Activity start before end.'\n }\n return null\n },\n typeError: function () {\n if (!this.timeline) {\n return 'Activity must have a timeline selected.'\n }\n if (this.kind !== 'RESERVE' && !this.activityData) {\n return 'No data is selected or inputted'\n }\n return null\n },\n timelineNames: function () {\n return this.timelines.map((timeline) => {\n return timeline.name\n })\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n validationError: function () {\n return !!this.timeError || !this.timeline\n },\n },\n mounted: function () {\n this.updateValues()\n },\n methods: {\n changeKind: function (inputKind) {\n if (inputKind === this.kind) {\n return\n }\n this.kind = inputKind\n this.activityData = ''\n },\n fileHandler: function (event) {\n this.activityData = event\n },\n updateValues: function () {\n this.dialogStep = 1\n if (this.activity) {\n this.timeline = this.activity.name\n const sDate = new Date(this.activity.start * 1000)\n const eDate = new Date(this.activity.stop * 1000)\n this.startDate = this.formatDate(sDate, this.timeZone)\n this.startTime = this.formatTimeHMS(sDate, this.timeZone)\n this.endDate = this.formatDate(eDate, this.timeZone)\n this.endTime = this.formatTimeHMS(eDate, this.timeZone)\n this.kind = this.activity.kind.toUpperCase()\n this.activityData = this.activity.data[this.activity.kind]\n this.activityEnvironment = this.activity.data.environment\n this.customTitle = this.activity.data.customTitle || ''\n this.notes = this.activity.data.notes || ''\n if (this.activity.recurring?.uuid) {\n this.recurring = true\n const rDate = new Date(this.activity.recurring.end * 1000)\n this.recurringEndDate = this.formatDate(rDate, this.timeZone)\n this.recurringEndTime = this.formatTimeHMS(rDate, this.timeZone)\n this.frequency = this.activity.recurring.frequency\n this.timeSpan = this.activity.recurring.span\n }\n } else {\n this.calcStartDateTime()\n this.recurringEndDate = this.startDate\n this.recurringEndTime = this.startTime\n this.kind = ''\n this.activityData = ''\n this.activityEnvironment = []\n this.customTitle = ''\n this.notes = ''\n this.timeline = this.timelineNames[0]\n }\n },\n clearHandler: function () {\n this.show = !this.show\n },\n submitHandler() {\n // Call the api to create a new activity to add to the activities array\n let start = null\n let stop = null // API takes stop instead of end\n let recurringEnd = null\n if (this.timeZone === 'local') {\n start = new Date(this.startDate + ' ' + this.startTime).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime).toISOString()\n if (this.recurring) {\n recurringEnd = new Date(\n this.recurringEndDate + ' ' + this.recurringEndTime,\n ).toISOString()\n }\n } else {\n start = new Date(\n this.startDate + ' ' + this.startTime + 'Z',\n ).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime + 'Z').toISOString()\n if (this.recurring) {\n recurringEnd = new Date(\n this.recurringEndDate + ' ' + this.recurringEndTime + 'Z',\n ).toISOString()\n }\n }\n const kind = this.kind.toLowerCase()\n let data = {\n environment: this.activityEnvironment,\n customTitle: this.customTitle,\n notes: this.notes,\n }\n data[kind] = this.activityData\n let recurring = {}\n if (this.recurring) {\n recurring = {\n frequency: this.frequency,\n span: this.timeSpan,\n end: recurringEnd,\n }\n }\n if (this.activity) {\n Api.put(\n `/openc3-api/timeline/${this.activity.name}/activity/${this.activity.start}`,\n {\n data: { start, stop, kind, data, recurring },\n },\n )\n .then((response) => {\n const activityTime = this.formatSeconds(\n new Date(response.data.start * 1000),\n )\n this.$notify.normal({\n title: 'Updated Activity',\n body: `${activityTime} (${response.data.start}) on timeline: ${response.data.name}`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n .catch((error) => {\n this.show = !this.show\n })\n } else {\n Api.post(`/openc3-api/timeline/${this.timeline}/activities`, {\n data: { start, stop, kind, data, recurring },\n })\n .then((response) => {\n const activityTime = this.formatSeconds(\n new Date(response.data.start * 1000),\n )\n this.$notify.normal({\n title: 'Created Activity',\n body: `${activityTime} (${response.data.start}) on timeline: ${response.data.name}`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n .catch((error) => {\n this.show = !this.show\n })\n }\n // We don't do the $emit or set show here because it has to be in the callback\n this.clearHandler()\n },\n editItem: function () {\n // Set up dialog for editing\n this.dialogTitle = 'Edit Command'\n this.dialogCmdString = this.activityData\n this.showCommandDialog = true\n },\n closeCommandDialog: function () {\n this.showCommandDialog = false\n this.dialogCmdString = null\n this.dialogError = ''\n },\n clearDialogError: function () {\n this.dialogError = ''\n },\n updateCommand: function () {\n let commandString = ''\n try {\n commandString = this.$refs.commandEditor.getCmdString()\n } catch (error) {\n this.dialogError = error.message || 'Please fix command parameters'\n return\n }\n this.activityData = commandString\n this.showCommandDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.repeat {\n padding-top: 10px;\n text-align: right;\n}\n\n.v-stepper--vertical .v-stepper__content {\n width: auto;\n margin: 0px 0px 0px 36px;\n padding: 0px;\n}\n</style>\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 <div>\n <v-select v-model=\"color\" label=\"Color\" :items=\"swatches\">\n <template #prepend-inner>\n <v-icon :color=\"color\"> mdi-square </v-icon>\n </template>\n <template #item=\"{ props, item }\">\n <v-list-item v-bind=\"props\" :value=\"item.raw\">\n <template #prepend>\n <v-icon :color=\"item.raw\"> mdi-square </v-icon>\n </template>\n </v-list-item>\n </template>\n </v-select>\n </div>\n</template>\n\n<script>\nexport default {\n components: {},\n props: {\n modelValue: {\n type: String,\n required: true,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n color: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n swatches: function () {\n return [\n '#005a8f',\n '#003784',\n '#8F3400',\n '#df1368',\n '#ff5252',\n '#df323b',\n '#9f0010',\n '#2d9437',\n '#004700',\n '#db7200',\n '#802700',\n '#0f2941',\n ]\n },\n },\n methods: {},\n}\n</script>\n","/*\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 { Api } from '@openc3/js-common/services'\n\nexport default {\n methods: {\n deleteItem(item) {\n let start = null\n let api = ''\n switch (item.type.toLowerCase()) {\n case 'activity':\n api = 'activity'\n start = item.activity.start\n break\n case 'metadata':\n api = 'metadata'\n start = item.metadata.start\n break\n case 'note':\n api = 'notes'\n start = item.note.start\n break\n }\n this.$dialog\n .confirm(\n `Are you sure you want to remove ${item.typeStr} at ${item.startStr}`,\n {\n okText: 'Delete',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n return Api.delete(`/openc3-api/${api}/${start}`)\n })\n .then(() => {\n this.$emit('delete', item)\n this.$notify.normal({\n title: `Deleted ${item.typeStr}`,\n body: `Deleted ${item.typeStr} at ${item.startStr}`,\n })\n })\n .catch(() => {})\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 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 <span> Add metadata key value(s)</span>\n <v-table density=\"compact\">\n <tbody>\n <tr>\n <th scope=\"col\" class=\"text-left\">Key</th>\n <th scope=\"col\" class=\"text-left\">Value</th>\n <th scope=\"col\" class=\"text-right\" width=\"52px\">\n <v-btn\n icon=\"mdi-plus\"\n variant=\"text\"\n data-test=\"new-metadata-icon\"\n @click=\"newMetadata\"\n />\n </th>\n </tr>\n <tr v-for=\"(meta, i) in metadata\" :key=\"`tr-${i}`\">\n <td>\n <v-text-field\n v-model=\"meta.key\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :data-test=\"`key-${i}`\"\n />\n </td>\n <td>\n <v-text-field\n v-model=\"meta.value\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :data-test=\"`value-${i}`\"\n />\n </td>\n <td>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n :data-test=\"`delete-metadata-icon-${i}`\"\n @click=\"rm(i)\"\n />\n </td>\n </tr>\n </tbody>\n </v-table>\n </div>\n</template>\n\n<script>\nexport default {\n components: {},\n props: {\n modelValue: {\n type: Array,\n required: true,\n },\n },\n emits: ['update:modelValue'],\n data() {\n return {}\n },\n computed: {\n metadata: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n methods: {\n newMetadata: function () {\n this.metadata.push({\n key: '',\n value: '',\n })\n },\n rm: function (index) {\n this.metadata.splice(index, 1)\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 2026, 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-dialog v-model=\"show\" persistent width=\"600\" @keydown.esc=\"clearHandler\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"metadata\">Update Metadata</span>\n <span v-else>Create Metadata</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-metadata-icon\"\n @click=\"clearHandler\"\n />\n </v-toolbar>\n <v-stepper\n v-model=\"dialogStep\"\n editable\n :items=\"['Metadata Times', 'Metadata Input']\"\n >\n <template v-if=\"dialogStep === 2\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-btn variant=\"text\" @click=\"() => (dialogStep -= 1)\">\n Previous\n </v-btn>\n <v-spacer />\n <v-btn variant=\"outlined\" class=\"mr-4\" @click=\"clearHandler\">\n Cancel\n </v-btn>\n <v-btn\n type=\"submit\"\n color=\"primary\"\n :disabled=\"!!error\"\n @click.prevent=\"submitHandler\"\n >\n Ok\n </v-btn>\n </v-row>\n </template>\n\n <template #item.1>\n <v-card-text>\n <div class=\"pa-2\">\n <color-select-form v-model=\"color\" />\n <v-row dense>\n <v-text-field\n v-model=\"startDate\"\n type=\"date\"\n label=\"Start Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"metadata-start-date\"\n />\n <OpenC3TimePicker\n v-model=\"startTime\"\n label=\"Start Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"metadata-start-time\"\n />\n </v-row>\n </div>\n </v-card-text>\n </template>\n\n <template #item.2>\n <v-card-text>\n <div class=\"pa-2\">\n <div style=\"min-height: 200px\">\n <metadata-input-form v-model=\"metadataVals\" />\n </div>\n <v-row v-show=\"typeError\">\n <span class=\"ma-2 text-red\" v-text=\"typeError\" />\n </v-row>\n </div>\n </v-card-text>\n </template>\n </v-stepper>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\nimport OpenC3TimePicker from '@/components/OpenC3TimePicker.vue'\nimport ColorSelectForm from './ColorSelectForm.vue'\nimport CreateDialog from './CreateDialog'\nimport MetadataInputForm from './MetadataInputForm.vue'\n\nexport default {\n components: {\n ColorSelectForm,\n MetadataInputForm,\n OpenC3TimePicker,\n },\n mixins: [CreateDialog, TimeFilters],\n props: {\n modelValue: Boolean,\n metadata: {\n type: Object,\n default: null,\n },\n },\n emits: ['update:modelValue', 'update'],\n data() {\n return {\n dialogStep: 1,\n color: '#003784',\n metadataVals: [],\n rules: {\n required: (value) => !!value || 'Required',\n },\n }\n },\n computed: {\n typeError: function () {\n if (!this.color) {\n return 'A color is required.'\n }\n if (this.metadataVals.length < 1) {\n return 'Please enter a value in the metadata table.'\n }\n const emptyKeyValue = this.metadataVals.find(\n (meta) => meta.key === '' || meta.value === '',\n )\n if (emptyKeyValue) {\n return 'Missing or empty key, value in the metadata table.'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n mounted: function () {\n this.updateValues()\n },\n methods: {\n updateValues: function () {\n this.dialogStep = 1\n if (this.metadata) {\n const sDate = new Date(this.metadata.start * 1000)\n this.startDate = this.formatDate(sDate, this.timeZone)\n this.startTime = this.formatTimeHMS(sDate, this.timeZone)\n this.color = this.metadata.color\n this.metadataVals = Object.keys(this.metadata.metadata).map((k) => {\n return { key: k, value: this.metadata.metadata[k] }\n })\n } else {\n this.calcStartDateTime()\n this.color = '#003784'\n this.metadataVals = []\n }\n },\n clearHandler: function () {\n this.show = !this.show\n },\n submitHandler() {\n const color = this.color\n const metadata = this.metadataVals.reduce((result, element) => {\n result[element.key] = element.value\n return result\n }, {})\n const data = { color, metadata }\n if (this.timeZone === 'local') {\n data.start = new Date(\n this.startDate + ' ' + this.startTime,\n ).toISOString()\n } else {\n data.start = new Date(\n this.startDate + ' ' + this.startTime + 'Z',\n ).toISOString()\n }\n if (this.metadata) {\n Api.put(`/openc3-api/metadata/${this.metadata.start}`, {\n data,\n }).then((response) => {\n this.$notify.normal({\n title: 'Updated Metadata',\n body: `Metadata updated: (${response.data.start})`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n } else {\n Api.post('/openc3-api/metadata', {\n data,\n }).then((response) => {\n this.$notify.normal({\n title: 'Created new Metadata',\n body: `Metadata: (${response.data.start})`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n }\n // We don't do the $emit or set show here because it has to be in the callback\n },\n },\n}\n</script>\n\n<style scoped>\n.v-stepper--vertical .v-stepper__content {\n width: auto;\n margin: 0px 0px 0px 36px;\n padding: 0px;\n}\n</style>\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 2026, 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-dialog v-model=\"show\" persistent width=\"600\" @keydown.esc=\"clearHandler\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"note\">Update Note</span>\n <span v-else>Create Note</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-note-icon\"\n @click=\"clearHandler\"\n />\n </v-toolbar>\n <v-stepper\n v-model=\"dialogStep\"\n editable\n :items=\"['Note Times', 'Note Input']\"\n >\n <template v-if=\"dialogStep === 2\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-btn variant=\"text\" @click=\"() => (dialogStep -= 1)\">\n Previous\n </v-btn>\n <v-spacer />\n <v-btn variant=\"outlined\" class=\"mr-4\" @click=\"clearHandler\">\n Cancel\n </v-btn>\n <v-btn\n type=\"submit\"\n color=\"primary\"\n :disabled=\"!!error\"\n @click.prevent=\"submitHandler\"\n >\n Ok\n </v-btn>\n </v-row>\n </template>\n\n <template #item.1>\n <v-card-text>\n <div class=\"pa-2\">\n <v-row dense>\n <v-text-field\n v-model=\"startDate\"\n type=\"date\"\n label=\"Start Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-start-date\"\n />\n <OpenC3TimePicker\n v-model=\"startTime\"\n label=\"Start Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-start-time\"\n />\n </v-row>\n <v-row dense>\n <v-text-field\n v-model=\"endDate\"\n type=\"date\"\n label=\"End Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-end-date\"\n />\n <OpenC3TimePicker\n v-model=\"endTime\"\n label=\"End Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-end-time\"\n />\n </v-row>\n <v-row>\n <span\n v-show=\"timeError\"\n class=\"ma-2 text-red\"\n v-text=\"timeError\"\n />\n </v-row>\n </div>\n </v-card-text>\n </template>\n\n <template #item.2>\n <v-card-text>\n <div class=\"pa-2\">\n <div>\n <color-select-form v-model=\"color\" />\n </div>\n <div>\n <v-text-field\n v-model=\"description\"\n type=\"text\"\n label=\"Note Description\"\n data-test=\"note-description\"\n />\n </div>\n <v-row v-show=\"typeError\">\n <span class=\"ma-2 text-red\" v-text=\"typeError\" />\n </v-row>\n </div>\n </v-card-text>\n </template>\n </v-stepper>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\nimport OpenC3TimePicker from '@/components/OpenC3TimePicker.vue'\nimport ColorSelectForm from './ColorSelectForm.vue'\nimport CreateDialog from './CreateDialog'\n\nexport default {\n components: {\n ColorSelectForm,\n OpenC3TimePicker,\n },\n mixins: [CreateDialog, TimeFilters],\n props: {\n modelValue: Boolean,\n note: {\n type: Object,\n default: null,\n },\n },\n emits: ['update:modelValue', 'update'],\n data() {\n return {\n dialogStep: 1,\n description: '',\n color: '#8F3400',\n rules: {\n required: (value) => !!value || 'Required',\n },\n }\n },\n computed: {\n timeError: function () {\n let start\n let end\n if (this.timeZone === 'local') {\n start = new Date(this.startDate + ' ' + this.startTime)\n end = new Date(this.endDate + ' ' + this.endTime)\n } else {\n start = new Date(this.startDate + ' ' + this.startTime + 'Z')\n end = new Date(this.endDate + ' ' + this.endTime + 'Z')\n }\n if (start === end) {\n return 'Invalid start, end time. Notes must have different start and end times.'\n }\n if (start > end) {\n return 'Invalid start time. Notes start before end.'\n }\n return null\n },\n typeError: function () {\n if (!this.color) {\n return 'A color is required.'\n }\n if (!this.description) {\n return 'A description is required for a valid note.'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n mounted: function () {\n this.updateValues()\n },\n methods: {\n updateValues: function () {\n this.dialogStep = 1\n if (this.note) {\n const sDate = new Date(this.note.start * 1000)\n this.startDate = this.formatDate(sDate, this.timeZone)\n this.startTime = this.formatTimeHMS(sDate, this.timeZone)\n const eDate = new Date(this.note.stop * 1000)\n this.endDate = this.formatDate(eDate, this.timeZone)\n this.endTime = this.formatTimeHMS(eDate, this.timeZone)\n this.color = this.note.color\n this.description = this.note.description\n } else {\n this.calcStartDateTime()\n this.color = '#8F3400'\n this.description = ''\n }\n },\n clearHandler: function () {\n this.show = !this.show\n },\n submitHandler() {\n let start\n let stop // API takes stop rather than end\n if (this.timeZone === 'local') {\n start = new Date(this.startDate + ' ' + this.startTime).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime).toISOString()\n } else {\n start = new Date(\n this.startDate + ' ' + this.startTime + 'Z',\n ).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime + 'Z').toISOString()\n }\n const color = this.color\n const description = this.description\n if (this.note) {\n Api.put(`/openc3-api/notes/${this.note.start}`, {\n data: { start, stop, color, description },\n }).then((response) => {\n const desc =\n response.data.description.length > 16\n ? `${response.data.description.substring(0, 16)}...`\n : response.data.description\n this.$notify.normal({\n title: 'Updated Note',\n body: `Note updated: (${response.data.start}): \"${desc}\"`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n } else {\n Api.post('/openc3-api/notes', {\n data: { start, stop, color, description },\n }).then((response) => {\n const desc =\n response.data.description.length > 16\n ? `${response.data.description.substring(0, 16)}...`\n : response.data.description\n this.$notify.normal({\n title: 'Created new Note',\n body: `Note: (${response.data.start}) created: \"${desc}\"`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n }\n // We don't do the $emit or set show here because it has to be in the callback\n },\n },\n}\n</script>\n\n<style scoped>\n.v-stepper--vertical .v-stepper__content {\n width: auto;\n margin: 0px 0px 0px 36px;\n padding: 0px;\n}\n</style>\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 <div>\n <v-dialog v-model=\"show\" persistent width=\"80vw\" @keydown.esc=\"close\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"newMetadata\">Metadata</span><span v-else>Events</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-metadata-icon\"\n aria-label=\"Close Dialog\"\n @click=\"close\"\n />\n </v-toolbar>\n <v-card-title>\n <v-row class=\"pa-3\">\n <span v-if=\"newMetadata\">Metadata</span><span v-else>Events</span>\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 />\n </v-row>\n </v-card-title>\n <v-data-table\n :headers=\"eventHeaders\"\n :items=\"localEvents\"\n :search=\"search\"\n >\n <template #no-data>\n <span> No events </span>\n </template>\n <template #item.start=\"{ item }\">\n {{ formatDateTime(item.start, timeZone) }}\n </template>\n <template #item.end=\"{ item }\">\n {{ formatDateTime(item.end, timeZone) }}\n </template>\n <template #item.type=\"{ item }\">\n {{ item.type.charAt(0).toUpperCase() + item.type.slice(1) }}\n </template>\n <template #item.data=\"{ item }\">\n {{ dataFormat(item) }}\n </template>\n <template #item.actions=\"{ item }\">\n <v-btn\n icon=\"mdi-pencil\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"edit-event\"\n aria-label=\"Edit Event\"\n @click=\"editAction(item)\"\n />\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n size=\"small\"\n data-test=\"delete-event\"\n aria-label=\"Delete Event\"\n @click=\"deleteAction(item)\"\n />\n </template>\n </v-data-table>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" data-test=\"close-event-list\" @click=\"close\">\n Close\n </v-btn>\n <v-btn\n v-if=\"newMetadata\"\n variant=\"flat\"\n data-test=\"new-event\"\n @click=\"showMetadataCreate = true\"\n >\n New Metadata\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n <!-- Edit existing events -->\n <activity-create-dialog\n v-if=\"showActivityUpdate\"\n v-model=\"showActivityUpdate\"\n :activity=\"editActivity\"\n :time-zone=\"timeZone\"\n @update=\"updateActivity\"\n />\n <metadata-create-dialog\n v-if=\"showMetadataUpdate\"\n v-model=\"showMetadataUpdate\"\n :metadata=\"editMetadata\"\n :time-zone=\"timeZone\"\n @update=\"updateMetadata\"\n />\n <note-create-dialog\n v-if=\"showNoteUpdate\"\n v-model=\"showNoteUpdate\"\n :note=\"editNote\"\n :time-zone=\"timeZone\"\n @update=\"updateNote\"\n />\n <!-- Create new metadata -->\n <metadata-create-dialog\n v-if=\"showMetadataCreate\"\n v-model=\"showMetadataCreate\"\n :time-zone=\"timeZone\"\n @update=\"addMetadata\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\nimport ActivityCreateDialog from './ActivityCreateDialog.vue'\nimport DeleteItem from './DeleteItem'\nimport MetadataCreateDialog from './MetadataCreateDialog.vue'\nimport NoteCreateDialog from './NoteCreateDialog.vue'\n\nexport default {\n components: {\n ActivityCreateDialog,\n MetadataCreateDialog,\n NoteCreateDialog,\n },\n mixins: [TimeFilters, DeleteItem],\n props: {\n events: {\n type: Array,\n required: true,\n },\n modelValue: {\n type: Boolean,\n required: true,\n },\n timeZone: {\n type: String,\n required: true,\n },\n types: {\n type: Array,\n default: null,\n },\n newMetadata: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'close', 'update'],\n data() {\n return {\n search: '',\n localEvents: [...this.events],\n eventHeaders: [\n { title: 'Start', key: 'start', width: 215 },\n { title: 'Stop', key: 'end', width: 215 },\n { title: 'Type', key: 'type' },\n { title: 'Data', key: 'data' },\n { title: 'Actions', key: 'actions', sortable: false },\n ],\n editActivity: { start: new Date(), end: new Date() },\n editMetadata: { start: new Date(), end: new Date() },\n editNote: { start: new Date(), end: new Date() },\n editIndex: 0,\n showActivityUpdate: false,\n showMetadataUpdate: false,\n showNoteUpdate: false,\n showMetadataCreate: false,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n created: function () {\n // TODO: Switch to vue3 syntax\n // this.$on('delete', (item) => {\n // let index = this.localEvents.findIndex((element) => {\n // return element.type === item.type && element.start === item.start\n // })\n // this.localEvents.splice(index, 1)\n // })\n },\n methods: {\n close() {\n this.$emit('close')\n this.show = false\n },\n dataFormat(event) {\n let data = event.name\n switch (event.type) {\n case 'note':\n data = event.note.description\n break\n case 'metadata':\n let rows = []\n Object.entries(event.metadata.metadata).forEach(([key, value]) =>\n rows.push(`${key}: ${value}`),\n )\n data = rows.join(', ')\n break\n }\n return data\n },\n editAction(item) {\n this.editIndex = this.localEvents.findIndex((element) => {\n return element.type === item.type && element.start === item.start\n })\n switch (item.type) {\n case 'activity':\n this.editActivity = item.activity\n this.showActivityUpdate = true\n break\n case 'metadata':\n this.editMetadata = item.metadata\n this.showMetadataUpdate = true\n break\n case 'note':\n this.editNote = item.note\n this.showNoteUpdate = true\n break\n }\n },\n deleteAction(item) {\n let deleteIndex = this.localEvents.findIndex((element) => {\n return element.type === item.type && element.start === item.start\n })\n let api = null\n let start = null\n let uuid = null\n switch (item.type) {\n case 'activity':\n api = `timeline/${item.activity.name}/activity`\n start = item.activity.start\n uuid = item.activity.uuid\n break\n case 'metadata':\n api = 'metadata'\n start = item.metadata.start\n break\n case 'note':\n api = 'notes'\n start = item.note.start\n break\n }\n\n this.$dialog\n .confirm(\n `Are you sure you want to remove ${item.type} at ${item.start}`,\n {\n okText: 'Delete',\n cancelText: 'Cancel',\n },\n )\n .then((dialog) => {\n this.localEvents.splice(deleteIndex, 1)\n let url = `/openc3-api/${api}/${start}`\n if (uuid) {\n url += `/${uuid}`\n }\n return Api.delete(url)\n })\n .then((response) => {\n this.$emit('update')\n this.$notify.normal({\n title: `Deleted ${item.type}`,\n body: `Deleted ${item.type} at ${start}`,\n })\n })\n .catch((error) => {\n // TODO: It returns true on cancel?\n })\n },\n updateActivity(item) {\n this.$emit('update')\n this.localEvents[this.editIndex].activity = item\n },\n updateMetadata(item) {\n this.$emit('update')\n this.localEvents[this.editIndex].metadata = item\n },\n updateNote(item) {\n this.$emit('update')\n this.localEvents[this.editIndex].note = item\n },\n addMetadata(item) {\n // TODO: This is how Calendar creates new metadata items via makeMetadataEvent\n let metadata = {\n name: 'Metadata',\n start: new Date(item.start * 1000),\n end: new Date(item.start * 1000),\n color: item.color,\n type: item.type,\n timed: true,\n metadata: item,\n }\n this.localEvents.push(metadata)\n },\n },\n}\n</script>\n"],"names":["add","date","duration","options","years","months","weeks","days","hours","minutes","seconds","_date","toDate","dateWithMonths","addMonths","dateWithDays","addDays","minutesToAdd","msToAdd","constructFrom","CreateDialog","format","ms","start","parse","_sfc_main","EnvironmentChooser","ScriptChooser","CommandEditor","OpenC3TimePicker","TimeFilters","value","now","end","timeline","inputKind","event","sDate","eDate","_a","rDate","stop","recurringEnd","kind","data","recurring","Api","response","activityTime","error","commandString","_hoisted_3","_hoisted_5","_hoisted_11","_createElementBlock","_createVNode","_component_v_dialog","$options","$event","_component_v_card","_component_v_toolbar","_component_v_spacer","$props","_openBlock","_component_v_btn","_component_v_stepper","$data","_component_v_card_text","_createElementVNode","_component_v_select","_component_v_text_field","_component_v_textarea","_component_v_row","_ctx","_component_OpenC3TimePicker","_component_v_checkbox","_createBlock","_component_v_col","_cache","_toDisplayString","_hoisted_6","_hoisted_7","_component_script_chooser","_component_environment_chooser","_hoisted_8","_component_v_card_title","_hoisted_10","_component_v_icon","_component_command_editor","_component_v_card_actions","_withCtx","props","item","_component_v_list_item","_mergeProps","DeleteItem","api","index","_component_v_table","_hoisted_1","_Fragment","_renderList","meta","i","ColorSelectForm","MetadataInputForm","k","color","metadata","result","element","_hoisted_4","_component_color_select_form","_component_metadata_input_form","description","desc","ActivityCreateDialog","MetadataCreateDialog","NoteCreateDialog","rows","key","deleteIndex","uuid","dialog","url","_component_v_data_table","_createTextVNode","_component_activity_create_dialog","_component_metadata_create_dialog","_component_note_create_dialog"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs"),k=require("./Widget-Btu2EoLT.cjs"),e=require("vue"),C=require("./CustomIcon-CEc927h0.cjs"),v={mixins:[k.Widget],data(){return{files:[],loading:!1}},computed:{match(){if(this.files.some(t=>t.error))return!1;if(this.files.some(t=>!t.checksum))return null;const o=this.files[0].checksum;return this.files.every(t=>t.checksum===o)},matchStatus(){return{null:{icon:"$info",color:"grey",text:"Comparing..."},true:{icon:"$success",color:"success",text:"Checksums Match"},false:{icon:"$error",color:"error",text:this.files.some(t=>t.error)?"Error loading file(s)":"Checksums Do Not Match"}}[this.match]}},created(){this.files=this.parameters.filter(o=>o).map(o=>({path:o,checksum:null,error:null,copied:!1}))},mounted(){this.files.length&&this.fetchChecksums()},methods:{getDisplayText(o){return o.error?`Error: ${o.error}`:o.checksum?o.checksum:this.loading?"Loading...":"Not loaded"},async computeChecksum(o){const c=new TextEncoder().encode(o),r=await crypto.subtle.digest("SHA-256",c);return Array.from(new Uint8Array(r)).map(n=>n.toString(16).padStart(2,"0")).join("")},async fetchFile(o){var s;const t=window.openc3Scope||"DEFAULT";let c=`${t}/targets_modified/${o}`,r=await m.fi.get(`/openc3-api/storage/download_file/${encodeURIComponent(c)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"},headers:{"Ignore-Errors":"404,500"}}).catch(()=>null);if((!r||r.status===404)&&(c=`${t}/targets/${o}`,r=await m.fi.get(`/openc3-api/storage/download_file/${encodeURIComponent(c)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"}})),(s=r==null?void 0:r.data)!=null&&s.contents)return atob(r.data.contents);throw new Error("File not found")},async copyChecksum(o){if(o.checksum)try{await navigator.clipboard.writeText(o.checksum),o.copied=!0,setTimeout(()=>o.copied=!1,2e3)}catch(t){console.error("Failed to copy checksum:",t)}},async fetchChecksums(){this.loading=!0,this.files.forEach(t=>{t.checksum=null,t.error=null}),(await Promise.all(this.files.map(t=>this.fetchFile(t.path).then(c=>this.computeChecksum(c)).catch(c=>({error:c.message||"File not found"}))))).forEach((t,c)=>{t!=null&&t.error?this.files[c].error=t.error:this.files[c].checksum=t}),this.loading=!1}}},y={class:"text-caption text-medium-emphasis font-weight-regular"},x={class:"text-caption text-medium-emphasis mb-2"},w={class:"ml-1 text-high-emphasis"},N={class:"flex-grow-1 overflow-wrap-anywhere"};function E(o,t,c,r,s,n){const h=e.resolveComponent("v-spacer"),i=e.resolveComponent("v-btn"),u=e.resolveComponent("v-card-title"),l=e.resolveComponent("v-divider"),p=e.resolveComponent("v-sheet"),_=e.resolveComponent("v-chip"),f=e.resolveComponent("v-card-text"),g=e.resolveComponent("v-card");return e.openBlock(),e.createBlock(g,{style:e.normalizeStyle(o.computedStyle),"min-width":"400"},{default:e.withCtx(()=>[e.createVNode(u,{class:"d-flex align-center pa-2"},{default:e.withCtx(()=>[e.createElementVNode("span",y,e.toDisplayString(s.files.length===1?"File Checksum":"File Checksum Comparison"),1),e.createVNode(h),e.createVNode(i,{size:"x-small",icon:"mdi-refresh",variant:"text",loading:s.loading,onClick:n.fetchChecksums},null,8,["loading","onClick"])]),_:1}),e.createVNode(l),e.createVNode(f,{class:"pa-3"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.files,(a,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[e.createElementVNode("div",x,[e.createTextVNode(e.toDisplayString(s.files.length===1?"File:":`File ${d+1}:`)+" ",1),e.createElementVNode("span",w,e.toDisplayString(a.path),1)]),e.createVNode(p,{class:e.normalizeClass([a.error?"text-error":"","d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption"]),style:{"background-color":"rgba(128, 128, 128, 0.2)"}},{default:e.withCtx(()=>[e.createElementVNode("span",N,e.toDisplayString(n.getDisplayText(a)),1),e.createVNode(i,{icon:a.copied?"$success":"mdi-content-copy",color:a.copied?"success":void 0,disabled:!a.checksum,size:"x-small",variant:"plain",density:"compact",onClick:S=>n.copyChecksum(a)},null,8,["icon","color","disabled","onClick"])]),_:2},1032,["class"])],64))),128)),s.files.length>1?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(l,{class:"mb-3"}),e.createVNode(_,{color:n.matchStatus.color,size:"small",variant:"tonal",label:"","prepend-icon":n.matchStatus.icon},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.matchStatus.text),1)]),_:1},8,["color","prepend-icon"])],64)):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["style"])}const b=C._export_sfc(v,[["render",E],["__scopeId","data-v-7cb83af3"]]);exports.default=b;
|
|
2
|
+
//# sourceMappingURL=FilechecksumWidget-D-5GSjyV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilechecksumWidget-D-5GSjyV.cjs","sources":["../src/widgets/FilechecksumWidget.vue"],"sourcesContent":["<!--\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 :style=\"computedStyle\" min-width=\"400\">\n <v-card-title class=\"d-flex align-center pa-2\">\n <span class=\"text-caption text-medium-emphasis font-weight-regular\">\n {{ files.length === 1 ? 'File Checksum' : 'File Checksum Comparison' }}\n </span>\n <v-spacer />\n <v-btn\n size=\"x-small\"\n icon=\"mdi-refresh\"\n variant=\"text\"\n :loading=\"loading\"\n @click=\"fetchChecksums\"\n />\n </v-card-title>\n <v-divider />\n <v-card-text class=\"pa-3\">\n <template v-for=\"(file, index) in files\" :key=\"index\">\n <div class=\"text-caption text-medium-emphasis mb-2\">\n {{ files.length === 1 ? 'File:' : `File ${index + 1}:` }}\n <span class=\"ml-1 text-high-emphasis\">{{ file.path }}</span>\n </div>\n <v-sheet\n :class=\"file.error ? 'text-error' : ''\"\n class=\"d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption\"\n style=\"background-color: rgba(128, 128, 128, 0.2)\"\n >\n <span class=\"flex-grow-1 overflow-wrap-anywhere\">\n {{ getDisplayText(file) }}\n </span>\n <v-btn\n :icon=\"file.copied ? '$success' : 'mdi-content-copy'\"\n :color=\"file.copied ? 'success' : undefined\"\n :disabled=\"!file.checksum\"\n size=\"x-small\"\n variant=\"plain\"\n density=\"compact\"\n @click=\"copyChecksum(file)\"\n />\n </v-sheet>\n </template>\n\n <template v-if=\"files.length > 1\">\n <v-divider class=\"mb-3\" />\n <v-chip\n :color=\"matchStatus.color\"\n size=\"small\"\n variant=\"tonal\"\n label\n :prepend-icon=\"matchStatus.icon\"\n >\n {{ matchStatus.text }}\n </v-chip>\n </template>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n files: [],\n loading: false,\n }\n },\n computed: {\n match() {\n if (this.files.some((f) => f.error)) return false\n if (this.files.some((f) => !f.checksum)) return null\n const first = this.files[0].checksum\n return this.files.every((f) => f.checksum === first)\n },\n matchStatus() {\n const states = {\n null: { icon: '$info', color: 'grey', text: 'Comparing...' },\n true: { icon: '$success', color: 'success', text: 'Checksums Match' },\n false: {\n icon: '$error',\n color: 'error',\n text: this.files.some((f) => f.error)\n ? 'Error loading file(s)'\n : 'Checksums Do Not Match',\n },\n }\n return states[this.match]\n },\n },\n created() {\n this.files = this.parameters\n .filter((p) => p)\n .map((path) => ({ path, checksum: null, error: null, copied: false }))\n },\n mounted() {\n if (this.files.length) {\n this.fetchChecksums()\n }\n },\n methods: {\n getDisplayText(file) {\n if (file.error) return `Error: ${file.error}`\n if (file.checksum) return file.checksum\n if (this.loading) return 'Loading...'\n return 'Not loaded'\n },\n async computeChecksum(content) {\n const encoder = new TextEncoder()\n const data = encoder.encode(content)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n },\n async fetchFile(filePath) {\n const scope = window.openc3Scope || 'DEFAULT'\n let objectPath = `${scope}/targets_modified/${filePath}`\n let response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n {\n params: { bucket: 'OPENC3_CONFIG_BUCKET' },\n headers: { 'Ignore-Errors': '404,500' },\n },\n ).catch(() => null)\n\n if (!response || response.status === 404) {\n objectPath = `${scope}/targets/${filePath}`\n response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n { params: { bucket: 'OPENC3_CONFIG_BUCKET' } },\n )\n }\n\n if (response?.data?.contents) {\n return atob(response.data.contents)\n }\n throw new Error('File not found')\n },\n async copyChecksum(file) {\n if (!file.checksum) return\n try {\n await navigator.clipboard.writeText(file.checksum)\n file.copied = true\n setTimeout(() => (file.copied = false), 2000)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy checksum:', err)\n }\n },\n async fetchChecksums() {\n this.loading = true\n this.files.forEach((f) => {\n f.checksum = null\n f.error = null\n })\n\n const results = await Promise.all(\n this.files.map((file) =>\n this.fetchFile(file.path)\n .then((content) => this.computeChecksum(content))\n .catch((err) => ({ error: err.message || 'File not found' })),\n ),\n )\n\n results.forEach((result, i) => {\n if (result?.error) {\n this.files[i].error = result.error\n } else {\n this.files[i].checksum = result\n }\n })\n\n this.loading = false\n },\n },\n}\n</script>\n\n<style scoped>\n.overflow-wrap-anywhere {\n overflow-wrap: anywhere;\n}\n</style>\n"],"names":["_sfc_main","Widget","f","first","p","path","file","content","data","hashBuffer","b","filePath","scope","objectPath","response","Api","_a","err","result","i","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_component_v_card","_ctx","_createVNode","_component_v_card_title","_createElementVNode","_toDisplayString","$data","_component_v_spacer","_component_v_btn","$options","_component_v_divider","_component_v_card_text","_openBlock","_createElementBlock","_Fragment","_renderList","index","_createTextVNode","_component_v_sheet","_normalizeClass","$event","_component_v_chip"],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { f as k } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-NXWdTcR2.js";
|
|
2
|
+
import { W as F } from "./Widget-D4rzBHnr.js";
|
|
3
|
+
import { resolveComponent as a, createBlock as S, openBlock as h, normalizeStyle as N, withCtx as l, createVNode as r, createElementVNode as d, toDisplayString as m, createElementBlock as u, createCommentVNode as T, Fragment as p, renderList as A, createTextVNode as y, normalizeClass as B } from "vue";
|
|
4
|
+
import { _ as I } from "./CustomIcon-B9m73Gqm.js";
|
|
5
|
+
const U = {
|
|
6
|
+
mixins: [F],
|
|
7
|
+
data() {
|
|
8
|
+
return {
|
|
9
|
+
files: [],
|
|
10
|
+
loading: !1
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
computed: {
|
|
14
|
+
match() {
|
|
15
|
+
if (this.files.some((e) => e.error)) return !1;
|
|
16
|
+
if (this.files.some((e) => !e.checksum)) return null;
|
|
17
|
+
const t = this.files[0].checksum;
|
|
18
|
+
return this.files.every((e) => e.checksum === t);
|
|
19
|
+
},
|
|
20
|
+
matchStatus() {
|
|
21
|
+
return {
|
|
22
|
+
null: { icon: "$info", color: "grey", text: "Comparing..." },
|
|
23
|
+
true: { icon: "$success", color: "success", text: "Checksums Match" },
|
|
24
|
+
false: {
|
|
25
|
+
icon: "$error",
|
|
26
|
+
color: "error",
|
|
27
|
+
text: this.files.some((e) => e.error) ? "Error loading file(s)" : "Checksums Do Not Match"
|
|
28
|
+
}
|
|
29
|
+
}[this.match];
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
created() {
|
|
33
|
+
this.files = this.parameters.filter((t) => t).map((t) => ({ path: t, checksum: null, error: null, copied: !1 }));
|
|
34
|
+
},
|
|
35
|
+
mounted() {
|
|
36
|
+
this.files.length && this.fetchChecksums();
|
|
37
|
+
},
|
|
38
|
+
methods: {
|
|
39
|
+
getDisplayText(t) {
|
|
40
|
+
return t.error ? `Error: ${t.error}` : t.checksum ? t.checksum : this.loading ? "Loading..." : "Not loaded";
|
|
41
|
+
},
|
|
42
|
+
async computeChecksum(t) {
|
|
43
|
+
const s = new TextEncoder().encode(t), o = await crypto.subtle.digest("SHA-256", s);
|
|
44
|
+
return Array.from(new Uint8Array(o)).map((n) => n.toString(16).padStart(2, "0")).join("");
|
|
45
|
+
},
|
|
46
|
+
async fetchFile(t) {
|
|
47
|
+
var c;
|
|
48
|
+
const e = window.openc3Scope || "DEFAULT";
|
|
49
|
+
let s = `${e}/targets_modified/${t}`, o = await k.get(
|
|
50
|
+
`/openc3-api/storage/download_file/${encodeURIComponent(s)}`,
|
|
51
|
+
{
|
|
52
|
+
params: { bucket: "OPENC3_CONFIG_BUCKET" },
|
|
53
|
+
headers: { "Ignore-Errors": "404,500" }
|
|
54
|
+
}
|
|
55
|
+
).catch(() => null);
|
|
56
|
+
if ((!o || o.status === 404) && (s = `${e}/targets/${t}`, o = await k.get(
|
|
57
|
+
`/openc3-api/storage/download_file/${encodeURIComponent(s)}`,
|
|
58
|
+
{ params: { bucket: "OPENC3_CONFIG_BUCKET" } }
|
|
59
|
+
)), (c = o == null ? void 0 : o.data) != null && c.contents)
|
|
60
|
+
return atob(o.data.contents);
|
|
61
|
+
throw new Error("File not found");
|
|
62
|
+
},
|
|
63
|
+
async copyChecksum(t) {
|
|
64
|
+
if (t.checksum)
|
|
65
|
+
try {
|
|
66
|
+
await navigator.clipboard.writeText(t.checksum), t.copied = !0, setTimeout(() => t.copied = !1, 2e3);
|
|
67
|
+
} catch (e) {
|
|
68
|
+
console.error("Failed to copy checksum:", e);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
async fetchChecksums() {
|
|
72
|
+
this.loading = !0, this.files.forEach((e) => {
|
|
73
|
+
e.checksum = null, e.error = null;
|
|
74
|
+
}), (await Promise.all(
|
|
75
|
+
this.files.map(
|
|
76
|
+
(e) => this.fetchFile(e.path).then((s) => this.computeChecksum(s)).catch((s) => ({ error: s.message || "File not found" }))
|
|
77
|
+
)
|
|
78
|
+
)).forEach((e, s) => {
|
|
79
|
+
e != null && e.error ? this.files[s].error = e.error : this.files[s].checksum = e;
|
|
80
|
+
}), this.loading = !1;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, $ = { class: "text-caption text-medium-emphasis font-weight-regular" }, z = { class: "text-caption text-medium-emphasis mb-2" }, D = { class: "ml-1 text-high-emphasis" }, O = { class: "flex-grow-1 overflow-wrap-anywhere" };
|
|
84
|
+
function V(t, e, s, o, c, n) {
|
|
85
|
+
const C = a("v-spacer"), f = a("v-btn"), v = a("v-card-title"), _ = a("v-divider"), x = a("v-sheet"), w = a("v-chip"), b = a("v-card-text"), E = a("v-card");
|
|
86
|
+
return h(), S(E, {
|
|
87
|
+
style: N(t.computedStyle),
|
|
88
|
+
"min-width": "400"
|
|
89
|
+
}, {
|
|
90
|
+
default: l(() => [
|
|
91
|
+
r(v, { class: "d-flex align-center pa-2" }, {
|
|
92
|
+
default: l(() => [
|
|
93
|
+
d("span", $, m(c.files.length === 1 ? "File Checksum" : "File Checksum Comparison"), 1),
|
|
94
|
+
r(C),
|
|
95
|
+
r(f, {
|
|
96
|
+
size: "x-small",
|
|
97
|
+
icon: "mdi-refresh",
|
|
98
|
+
variant: "text",
|
|
99
|
+
loading: c.loading,
|
|
100
|
+
onClick: n.fetchChecksums
|
|
101
|
+
}, null, 8, ["loading", "onClick"])
|
|
102
|
+
]),
|
|
103
|
+
_: 1
|
|
104
|
+
}),
|
|
105
|
+
r(_),
|
|
106
|
+
r(b, { class: "pa-3" }, {
|
|
107
|
+
default: l(() => [
|
|
108
|
+
(h(!0), u(p, null, A(c.files, (i, g) => (h(), u(p, { key: g }, [
|
|
109
|
+
d("div", z, [
|
|
110
|
+
y(m(c.files.length === 1 ? "File:" : `File ${g + 1}:`) + " ", 1),
|
|
111
|
+
d("span", D, m(i.path), 1)
|
|
112
|
+
]),
|
|
113
|
+
r(x, {
|
|
114
|
+
class: B([i.error ? "text-error" : "", "d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption"]),
|
|
115
|
+
style: { "background-color": "rgba(128, 128, 128, 0.2)" }
|
|
116
|
+
}, {
|
|
117
|
+
default: l(() => [
|
|
118
|
+
d("span", O, m(n.getDisplayText(i)), 1),
|
|
119
|
+
r(f, {
|
|
120
|
+
icon: i.copied ? "$success" : "mdi-content-copy",
|
|
121
|
+
color: i.copied ? "success" : void 0,
|
|
122
|
+
disabled: !i.checksum,
|
|
123
|
+
size: "x-small",
|
|
124
|
+
variant: "plain",
|
|
125
|
+
density: "compact",
|
|
126
|
+
onClick: (L) => n.copyChecksum(i)
|
|
127
|
+
}, null, 8, ["icon", "color", "disabled", "onClick"])
|
|
128
|
+
]),
|
|
129
|
+
_: 2
|
|
130
|
+
}, 1032, ["class"])
|
|
131
|
+
], 64))), 128)),
|
|
132
|
+
c.files.length > 1 ? (h(), u(p, { key: 0 }, [
|
|
133
|
+
r(_, { class: "mb-3" }),
|
|
134
|
+
r(w, {
|
|
135
|
+
color: n.matchStatus.color,
|
|
136
|
+
size: "small",
|
|
137
|
+
variant: "tonal",
|
|
138
|
+
label: "",
|
|
139
|
+
"prepend-icon": n.matchStatus.icon
|
|
140
|
+
}, {
|
|
141
|
+
default: l(() => [
|
|
142
|
+
y(m(n.matchStatus.text), 1)
|
|
143
|
+
]),
|
|
144
|
+
_: 1
|
|
145
|
+
}, 8, ["color", "prepend-icon"])
|
|
146
|
+
], 64)) : T("", !0)
|
|
147
|
+
]),
|
|
148
|
+
_: 1
|
|
149
|
+
})
|
|
150
|
+
]),
|
|
151
|
+
_: 1
|
|
152
|
+
}, 8, ["style"]);
|
|
153
|
+
}
|
|
154
|
+
const K = /* @__PURE__ */ I(U, [["render", V], ["__scopeId", "data-v-7cb83af3"]]);
|
|
155
|
+
export {
|
|
156
|
+
K as default
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=FilechecksumWidget-F_FX1Kjx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilechecksumWidget-F_FX1Kjx.js","sources":["../src/widgets/FilechecksumWidget.vue"],"sourcesContent":["<!--\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 :style=\"computedStyle\" min-width=\"400\">\n <v-card-title class=\"d-flex align-center pa-2\">\n <span class=\"text-caption text-medium-emphasis font-weight-regular\">\n {{ files.length === 1 ? 'File Checksum' : 'File Checksum Comparison' }}\n </span>\n <v-spacer />\n <v-btn\n size=\"x-small\"\n icon=\"mdi-refresh\"\n variant=\"text\"\n :loading=\"loading\"\n @click=\"fetchChecksums\"\n />\n </v-card-title>\n <v-divider />\n <v-card-text class=\"pa-3\">\n <template v-for=\"(file, index) in files\" :key=\"index\">\n <div class=\"text-caption text-medium-emphasis mb-2\">\n {{ files.length === 1 ? 'File:' : `File ${index + 1}:` }}\n <span class=\"ml-1 text-high-emphasis\">{{ file.path }}</span>\n </div>\n <v-sheet\n :class=\"file.error ? 'text-error' : ''\"\n class=\"d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption\"\n style=\"background-color: rgba(128, 128, 128, 0.2)\"\n >\n <span class=\"flex-grow-1 overflow-wrap-anywhere\">\n {{ getDisplayText(file) }}\n </span>\n <v-btn\n :icon=\"file.copied ? '$success' : 'mdi-content-copy'\"\n :color=\"file.copied ? 'success' : undefined\"\n :disabled=\"!file.checksum\"\n size=\"x-small\"\n variant=\"plain\"\n density=\"compact\"\n @click=\"copyChecksum(file)\"\n />\n </v-sheet>\n </template>\n\n <template v-if=\"files.length > 1\">\n <v-divider class=\"mb-3\" />\n <v-chip\n :color=\"matchStatus.color\"\n size=\"small\"\n variant=\"tonal\"\n label\n :prepend-icon=\"matchStatus.icon\"\n >\n {{ matchStatus.text }}\n </v-chip>\n </template>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n files: [],\n loading: false,\n }\n },\n computed: {\n match() {\n if (this.files.some((f) => f.error)) return false\n if (this.files.some((f) => !f.checksum)) return null\n const first = this.files[0].checksum\n return this.files.every((f) => f.checksum === first)\n },\n matchStatus() {\n const states = {\n null: { icon: '$info', color: 'grey', text: 'Comparing...' },\n true: { icon: '$success', color: 'success', text: 'Checksums Match' },\n false: {\n icon: '$error',\n color: 'error',\n text: this.files.some((f) => f.error)\n ? 'Error loading file(s)'\n : 'Checksums Do Not Match',\n },\n }\n return states[this.match]\n },\n },\n created() {\n this.files = this.parameters\n .filter((p) => p)\n .map((path) => ({ path, checksum: null, error: null, copied: false }))\n },\n mounted() {\n if (this.files.length) {\n this.fetchChecksums()\n }\n },\n methods: {\n getDisplayText(file) {\n if (file.error) return `Error: ${file.error}`\n if (file.checksum) return file.checksum\n if (this.loading) return 'Loading...'\n return 'Not loaded'\n },\n async computeChecksum(content) {\n const encoder = new TextEncoder()\n const data = encoder.encode(content)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n },\n async fetchFile(filePath) {\n const scope = window.openc3Scope || 'DEFAULT'\n let objectPath = `${scope}/targets_modified/${filePath}`\n let response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n {\n params: { bucket: 'OPENC3_CONFIG_BUCKET' },\n headers: { 'Ignore-Errors': '404,500' },\n },\n ).catch(() => null)\n\n if (!response || response.status === 404) {\n objectPath = `${scope}/targets/${filePath}`\n response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n { params: { bucket: 'OPENC3_CONFIG_BUCKET' } },\n )\n }\n\n if (response?.data?.contents) {\n return atob(response.data.contents)\n }\n throw new Error('File not found')\n },\n async copyChecksum(file) {\n if (!file.checksum) return\n try {\n await navigator.clipboard.writeText(file.checksum)\n file.copied = true\n setTimeout(() => (file.copied = false), 2000)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy checksum:', err)\n }\n },\n async fetchChecksums() {\n this.loading = true\n this.files.forEach((f) => {\n f.checksum = null\n f.error = null\n })\n\n const results = await Promise.all(\n this.files.map((file) =>\n this.fetchFile(file.path)\n .then((content) => this.computeChecksum(content))\n .catch((err) => ({ error: err.message || 'File not found' })),\n ),\n )\n\n results.forEach((result, i) => {\n if (result?.error) {\n this.files[i].error = result.error\n } else {\n this.files[i].checksum = result\n }\n })\n\n this.loading = false\n },\n },\n}\n</script>\n\n<style scoped>\n.overflow-wrap-anywhere {\n overflow-wrap: anywhere;\n}\n</style>\n"],"names":["_sfc_main","Widget","f","first","p","path","file","content","data","hashBuffer","b","filePath","scope","objectPath","response","Api","_a","err","result","i","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_component_v_card","_ctx","_createVNode","_component_v_card_title","_createElementVNode","_toDisplayString","$data","_component_v_spacer","_component_v_btn","$options","_component_v_divider","_component_v_card_text","_openBlock","_createElementBlock","_Fragment","_renderList","index","_createTextVNode","_component_v_sheet","_normalizeClass","$event","_component_v_chip"],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { f as l, a as C } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-NXWdTcR2.js";
|
|
2
|
+
import { W as v } from "./Widget-D4rzBHnr.js";
|
|
3
|
+
import { resolveComponent as s, createBlock as x, openBlock as y, normalizeStyle as h, withCtx as a, createVNode as r, createElementVNode as c, toDisplayString as w } from "vue";
|
|
4
|
+
import { _ as E } from "./CustomIcon-B9m73Gqm.js";
|
|
5
|
+
const P = {
|
|
6
|
+
mixins: [v],
|
|
7
|
+
data() {
|
|
8
|
+
return {
|
|
9
|
+
filePath: "",
|
|
10
|
+
fileContent: "Loading...",
|
|
11
|
+
loading: !1,
|
|
12
|
+
width: 600,
|
|
13
|
+
height: 300,
|
|
14
|
+
editor: null
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
computed: {
|
|
18
|
+
contentStyle() {
|
|
19
|
+
return {
|
|
20
|
+
width: this.width + "px",
|
|
21
|
+
height: this.height + "px"
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
aceMode() {
|
|
25
|
+
var i;
|
|
26
|
+
const o = (i = this.filePath.split(".").pop()) == null ? void 0 : i.toLowerCase();
|
|
27
|
+
return {
|
|
28
|
+
json: "ace/mode/json",
|
|
29
|
+
rb: "ace/mode/ruby",
|
|
30
|
+
py: "ace/mode/python",
|
|
31
|
+
txt: "ace/mode/text"
|
|
32
|
+
}[o] || "ace/mode/text";
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
created() {
|
|
36
|
+
this.parameters[0] && (this.filePath = this.parameters[0]), this.parameters[1] && (this.width = parseInt(this.parameters[1])), this.parameters[2] && (this.height = parseInt(this.parameters[2]));
|
|
37
|
+
},
|
|
38
|
+
mounted() {
|
|
39
|
+
this.editor = C.edit(this.$refs.editor), this.editor.setTheme("ace/theme/twilight"), this.editor.setReadOnly(!0), this.editor.setShowPrintMargin(!1), this.editor.setHighlightActiveLine(!1), this.editor.renderer.setShowGutter(!1), this.editor.renderer.setScrollMargin(8, 8, 0, 0), this.editor.renderer.setPadding(8), this.editor.setValue(this.fileContent, -1), this.filePath && this.fetchFile();
|
|
40
|
+
},
|
|
41
|
+
beforeUnmount() {
|
|
42
|
+
this.editor && (this.editor.destroy(), this.editor.container.remove());
|
|
43
|
+
},
|
|
44
|
+
methods: {
|
|
45
|
+
updateEditor() {
|
|
46
|
+
this.editor && (this.editor.session.setMode(this.aceMode), this.editor.setValue(this.fileContent, -1));
|
|
47
|
+
},
|
|
48
|
+
async fetchFile() {
|
|
49
|
+
var o;
|
|
50
|
+
if (!this.filePath) {
|
|
51
|
+
this.fileContent = 'Error: No file path specified. Usage: FILEDISPLAY "TARGET/path/to/file.txt"', this.updateEditor();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.loading = !0;
|
|
55
|
+
try {
|
|
56
|
+
const e = window.openc3Scope || "DEFAULT";
|
|
57
|
+
let i = `${e}/targets_modified/${this.filePath}`, t = await l.get(
|
|
58
|
+
`/openc3-api/storage/download_file/${encodeURIComponent(i)}`,
|
|
59
|
+
{
|
|
60
|
+
params: { bucket: "OPENC3_CONFIG_BUCKET" },
|
|
61
|
+
headers: { "Ignore-Errors": "404,500" }
|
|
62
|
+
}
|
|
63
|
+
).catch(() => null);
|
|
64
|
+
(!t || t.status === 404) && (i = `${e}/targets/${this.filePath}`, t = await l.get(
|
|
65
|
+
`/openc3-api/storage/download_file/${encodeURIComponent(i)}`,
|
|
66
|
+
{ params: { bucket: "OPENC3_CONFIG_BUCKET" } }
|
|
67
|
+
)), (o = t == null ? void 0 : t.data) != null && o.contents ? this.fileContent = atob(t.data.contents) : this.fileContent = "Error: Could not load file";
|
|
68
|
+
} catch (e) {
|
|
69
|
+
this.fileContent = `Error: ${e.message || e}`;
|
|
70
|
+
} finally {
|
|
71
|
+
this.loading = !1, this.updateEditor();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}, S = { class: "text-caption text-medium-emphasis font-weight-regular" };
|
|
76
|
+
function b(o, e, i, t, n, d) {
|
|
77
|
+
const p = s("v-spacer"), f = s("v-btn"), m = s("v-card-title"), _ = s("v-divider"), u = s("v-card-text"), g = s("v-card");
|
|
78
|
+
return y(), x(g, {
|
|
79
|
+
style: h(o.computedStyle)
|
|
80
|
+
}, {
|
|
81
|
+
default: a(() => [
|
|
82
|
+
r(m, { class: "d-flex align-center pa-2" }, {
|
|
83
|
+
default: a(() => [
|
|
84
|
+
c("span", S, w(n.filePath), 1),
|
|
85
|
+
r(p),
|
|
86
|
+
r(f, {
|
|
87
|
+
size: "x-small",
|
|
88
|
+
icon: "mdi-refresh",
|
|
89
|
+
variant: "text",
|
|
90
|
+
loading: n.loading,
|
|
91
|
+
onClick: d.fetchFile
|
|
92
|
+
}, null, 8, ["loading", "onClick"])
|
|
93
|
+
]),
|
|
94
|
+
_: 1
|
|
95
|
+
}),
|
|
96
|
+
r(_),
|
|
97
|
+
r(u, { class: "pa-0" }, {
|
|
98
|
+
default: a(() => [
|
|
99
|
+
c("div", {
|
|
100
|
+
ref: "editor",
|
|
101
|
+
style: h(d.contentStyle)
|
|
102
|
+
}, null, 4)
|
|
103
|
+
]),
|
|
104
|
+
_: 1
|
|
105
|
+
})
|
|
106
|
+
]),
|
|
107
|
+
_: 1
|
|
108
|
+
}, 8, ["style"]);
|
|
109
|
+
}
|
|
110
|
+
const N = /* @__PURE__ */ E(P, [["render", b]]);
|
|
111
|
+
export {
|
|
112
|
+
N as default
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=FiledisplayWidget-BF3G22jF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FiledisplayWidget-BF3G22jF.js","sources":["../src/widgets/FiledisplayWidget.vue"],"sourcesContent":["<!--\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 :style=\"computedStyle\">\n <v-card-title class=\"d-flex align-center pa-2\">\n <span class=\"text-caption text-medium-emphasis font-weight-regular\">\n {{ filePath }}\n </span>\n <v-spacer />\n <v-btn\n size=\"x-small\"\n icon=\"mdi-refresh\"\n variant=\"text\"\n :loading=\"loading\"\n @click=\"fetchFile\"\n />\n </v-card-title>\n <v-divider />\n <v-card-text class=\"pa-0\">\n <div ref=\"editor\" :style=\"contentStyle\"></div>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-json'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/mode-python'\nimport 'ace-builds/src-min-noconflict/mode-text'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport { Api } from '@openc3/js-common/services'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n filePath: '',\n fileContent: 'Loading...',\n loading: false,\n width: 600,\n height: 300,\n editor: null,\n }\n },\n computed: {\n contentStyle() {\n return {\n width: this.width + 'px',\n height: this.height + 'px',\n }\n },\n aceMode() {\n const ext = this.filePath.split('.').pop()?.toLowerCase()\n const modeMap = {\n json: 'ace/mode/json',\n rb: 'ace/mode/ruby',\n py: 'ace/mode/python',\n txt: 'ace/mode/text',\n }\n return modeMap[ext] || 'ace/mode/text'\n },\n },\n created() {\n // Parameter 0: File path (required) e.g. \"INST/procedures/test.txt\"\n // Parameter 1: Width (optional, default 600)\n // Parameter 2: Height (optional, default 300)\n if (this.parameters[0]) {\n this.filePath = this.parameters[0]\n }\n if (this.parameters[1]) {\n this.width = parseInt(this.parameters[1])\n }\n if (this.parameters[2]) {\n this.height = parseInt(this.parameters[2])\n }\n },\n mounted() {\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n this.editor.setReadOnly(true)\n this.editor.setShowPrintMargin(false)\n this.editor.setHighlightActiveLine(false)\n this.editor.renderer.setShowGutter(false)\n this.editor.renderer.setScrollMargin(8, 8, 0, 0)\n this.editor.renderer.setPadding(8)\n this.editor.setValue(this.fileContent, -1)\n\n if (this.filePath) {\n this.fetchFile()\n }\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n this.editor.container.remove()\n }\n },\n methods: {\n updateEditor() {\n if (this.editor) {\n this.editor.session.setMode(this.aceMode)\n this.editor.setValue(this.fileContent, -1)\n }\n },\n async fetchFile() {\n if (!this.filePath) {\n this.fileContent =\n 'Error: No file path specified. Usage: FILEDISPLAY \"TARGET/path/to/file.txt\"'\n this.updateEditor()\n return\n }\n this.loading = true\n try {\n const scope = window.openc3Scope || 'DEFAULT'\n // Try targets_modified first, then fall back to targets\n // Use Ignore-Errors header to suppress toast for expected 404/500\n let objectPath = `${scope}/targets_modified/${this.filePath}`\n let response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n {\n params: { bucket: 'OPENC3_CONFIG_BUCKET' },\n headers: { 'Ignore-Errors': '404,500' },\n },\n ).catch(() => null)\n\n if (!response || response.status === 404) {\n objectPath = `${scope}/targets/${this.filePath}`\n response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n { params: { bucket: 'OPENC3_CONFIG_BUCKET' } },\n )\n }\n\n if (response?.data?.contents) {\n this.fileContent = atob(response.data.contents)\n } else {\n this.fileContent = 'Error: Could not load file'\n }\n } catch (error) {\n this.fileContent = `Error: ${error.message || error}`\n } finally {\n this.loading = false\n this.updateEditor()\n }\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","ext","_a","ace.edit","scope","objectPath","response","Api","error","_hoisted_1","_createBlock","_component_v_card","_ctx","_createVNode","_component_v_card_title","_createElementVNode","_toDisplayString","$data","_component_v_spacer","_component_v_btn","$options","_component_v_divider","_component_v_card_text"],"mappings":";;;;AAkDA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AACL,WAAO;AAAA,MACL,UAAU;AAAA,MACV,aAAa;AAAA,MACb,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,eAAe;AACb,aAAO;AAAA,QACL,OAAO,KAAK,QAAQ;AAAA,QACpB,QAAQ,KAAK,SAAS;AAAA,MACxB;AAAA,IACF;AAAA,IACA,UAAU;;AACR,YAAMC,KAAMC,IAAA,KAAK,SAAS,MAAM,GAAG,EAAE,IAAG,MAA5B,gBAAAA,EAAgC;AAO5C,aANgB;AAAA,QACd,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,KAAK;AAAA,MACP,EACeD,CAAG,KAAK;AAAA,IACzB;AAAA;EAEF,UAAU;AAIR,IAAI,KAAK,WAAW,CAAC,MACnB,KAAK,WAAW,KAAK,WAAW,CAAC,IAE/B,KAAK,WAAW,CAAC,MACnB,KAAK,QAAQ,SAAS,KAAK,WAAW,CAAC,CAAC,IAEtC,KAAK,WAAW,CAAC,MACnB,KAAK,SAAS,SAAS,KAAK,WAAW,CAAC,CAAC;AAAA,EAE7C;AAAA,EACA,UAAU;AACR,SAAK,SAASE,EAAAA,KAAS,KAAK,MAAM,MAAM,GACxC,KAAK,OAAO,SAAS,oBAAoB,GACzC,KAAK,OAAO,YAAY,EAAI,GAC5B,KAAK,OAAO,mBAAmB,EAAK,GACpC,KAAK,OAAO,uBAAuB,EAAK,GACxC,KAAK,OAAO,SAAS,cAAc,EAAK,GACxC,KAAK,OAAO,SAAS,gBAAgB,GAAG,GAAG,GAAG,CAAC,GAC/C,KAAK,OAAO,SAAS,WAAW,CAAC,GACjC,KAAK,OAAO,SAAS,KAAK,aAAa,EAAE,GAErC,KAAK,YACP,KAAK,UAAS;AAAA,EAElB;AAAA,EACA,gBAAgB;AACd,IAAI,KAAK,WACP,KAAK,OAAO,QAAO,GACnB,KAAK,OAAO,UAAU,OAAM;AAAA,EAEhC;AAAA,EACA,SAAS;AAAA,IACP,eAAe;AACb,MAAI,KAAK,WACP,KAAK,OAAO,QAAQ,QAAQ,KAAK,OAAO,GACxC,KAAK,OAAO,SAAS,KAAK,aAAa,EAAE;AAAA,IAE7C;AAAA,IACA,MAAM,YAAY;;AAChB,UAAI,CAAC,KAAK,UAAU;AAClB,aAAK,cACH,+EACF,KAAK,aAAY;AACjB;AAAA,MACF;AACA,WAAK,UAAU;AACf,UAAI;AACF,cAAMC,IAAQ,OAAO,eAAe;AAGpC,YAAIC,IAAa,GAAGD,CAAK,qBAAqB,KAAK,QAAQ,IACvDE,IAAW,MAAMC,EAAI;AAAA,UACvB,qCAAqC,mBAAmBF,CAAU,CAAC;AAAA,UACnE;AAAA,YACE,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,iBAAiB;;QAEhC,EAAE,MAAM,MAAM,IAAI;AAElB,SAAI,CAACC,KAAYA,EAAS,WAAW,SACnCD,IAAa,GAAGD,CAAK,YAAY,KAAK,QAAQ,IAC9CE,IAAW,MAAMC,EAAI;AAAA,UACnB,qCAAqC,mBAAmBF,CAAU,CAAC;AAAA,UACnE,EAAE,QAAQ,EAAE,QAAQ;QACtB,KAGEH,IAAAI,KAAA,gBAAAA,EAAU,SAAV,QAAAJ,EAAgB,WAClB,KAAK,cAAc,KAAKI,EAAS,KAAK,QAAQ,IAE9C,KAAK,cAAc;AAAA,MAEvB,SAASE,GAAO;AACd,aAAK,cAAc,UAAUA,EAAM,WAAWA,CAAK;AAAA,MACrD,UAAA;AACE,aAAK,UAAU,IACf,KAAK,aAAY;AAAA,MACnB;AAAA,IACF;AAAA;AAEJ,GA/IYC,IAAA,EAAA,OAAM,wDAAuD;;;cAFvEC,EAkBSC,GAAA;AAAA,IAlBA,SAAOC,EAAA,aAAa;AAAA;eAC3B,MAYe;AAAA,MAZfC,EAYeC,GAAA,EAZD,OAAM,2BAA0B,GAAA;AAAA,mBAC5C,MAEO;AAAA,UAFPC,EAEO,QAFPN,GAEOO,EADFC,EAAA,QAAQ,GAAA,CAAA;AAAA,UAEbJ,EAAYK,CAAA;AAAA,UACZL,EAMEM,GAAA;AAAA,YALA,MAAK;AAAA,YACL,MAAK;AAAA,YACL,SAAQ;AAAA,YACP,SAASF,EAAA;AAAA,YACT,SAAOG,EAAA;AAAA;;;;MAGZP,EAAaQ,CAAA;AAAA,MACbR,EAEcS,GAAA,EAFD,OAAM,OAAM,GAAA;AAAA,mBACvB,MAA8C;AAAA,UAA9CP,EAA8C,OAAA;AAAA,YAAzC,KAAI;AAAA,YAAU,SAAOK,EAAA,YAAY;AAAA;;;;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_dda5adfc_lang-Bjn8x8eE.cjs"),m=require("./Widget-Btu2EoLT.cjs"),e=require("vue"),_=require("./CustomIcon-CEc927h0.cjs"),u={mixins:[m.Widget],data(){return{filePath:"",fileContent:"Loading...",loading:!1,width:600,height:300,editor:null}},computed:{contentStyle(){return{width:this.width+"px",height:this.height+"px"}},aceMode(){var o;const r=(o=this.filePath.split(".").pop())==null?void 0:o.toLowerCase();return{json:"ace/mode/json",rb:"ace/mode/ruby",py:"ace/mode/python",txt:"ace/mode/text"}[r]||"ace/mode/text"}},created(){this.parameters[0]&&(this.filePath=this.parameters[0]),this.parameters[1]&&(this.width=parseInt(this.parameters[1])),this.parameters[2]&&(this.height=parseInt(this.parameters[2]))},mounted(){this.editor=s.aceExports.edit(this.$refs.editor),this.editor.setTheme("ace/theme/twilight"),this.editor.setReadOnly(!0),this.editor.setShowPrintMargin(!1),this.editor.setHighlightActiveLine(!1),this.editor.renderer.setShowGutter(!1),this.editor.renderer.setScrollMargin(8,8,0,0),this.editor.renderer.setPadding(8),this.editor.setValue(this.fileContent,-1),this.filePath&&this.fetchFile()},beforeUnmount(){this.editor&&(this.editor.destroy(),this.editor.container.remove())},methods:{updateEditor(){this.editor&&(this.editor.session.setMode(this.aceMode),this.editor.setValue(this.fileContent,-1))},async fetchFile(){var r;if(!this.filePath){this.fileContent='Error: No file path specified. Usage: FILEDISPLAY "TARGET/path/to/file.txt"',this.updateEditor();return}this.loading=!0;try{const i=window.openc3Scope||"DEFAULT";let o=`${i}/targets_modified/${this.filePath}`,t=await s.fi.get(`/openc3-api/storage/download_file/${encodeURIComponent(o)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"},headers:{"Ignore-Errors":"404,500"}}).catch(()=>null);(!t||t.status===404)&&(o=`${i}/targets/${this.filePath}`,t=await s.fi.get(`/openc3-api/storage/download_file/${encodeURIComponent(o)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"}})),(r=t==null?void 0:t.data)!=null&&r.contents?this.fileContent=atob(t.data.contents):this.fileContent="Error: Could not load file"}catch(i){this.fileContent=`Error: ${i.message||i}`}finally{this.loading=!1,this.updateEditor()}}}},g={class:"text-caption text-medium-emphasis font-weight-regular"};function C(r,i,o,t,n,a){const d=e.resolveComponent("v-spacer"),l=e.resolveComponent("v-btn"),c=e.resolveComponent("v-card-title"),h=e.resolveComponent("v-divider"),p=e.resolveComponent("v-card-text"),f=e.resolveComponent("v-card");return e.openBlock(),e.createBlock(f,{style:e.normalizeStyle(r.computedStyle)},{default:e.withCtx(()=>[e.createVNode(c,{class:"d-flex align-center pa-2"},{default:e.withCtx(()=>[e.createElementVNode("span",g,e.toDisplayString(n.filePath),1),e.createVNode(d),e.createVNode(l,{size:"x-small",icon:"mdi-refresh",variant:"text",loading:n.loading,onClick:a.fetchFile},null,8,["loading","onClick"])]),_:1}),e.createVNode(h),e.createVNode(p,{class:"pa-0"},{default:e.withCtx(()=>[e.createElementVNode("div",{ref:"editor",style:e.normalizeStyle(a.contentStyle)},null,4)]),_:1})]),_:1},8,["style"])}const v=_._export_sfc(u,[["render",C]]);exports.default=v;
|
|
2
|
+
//# sourceMappingURL=FiledisplayWidget-BHLOY_cM.cjs.map
|