@openc3/vue-common 6.3.0 → 6.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/dist/{ArrayWidget-DkjHrXsu.cjs → ArrayWidget-C7qsXQC9.cjs} +2 -2
  2. package/dist/{ArrayWidget-DkjHrXsu.cjs.map → ArrayWidget-C7qsXQC9.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-BbsN1dzF.js → ArrayWidget-CeyoPOhk.js} +4 -4
  4. package/dist/{ArrayWidget-BbsN1dzF.js.map → ArrayWidget-CeyoPOhk.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-CCKEyYIx.js → ArrayplotWidget-BEw4fJPY.js} +3 -3
  6. package/dist/{ArrayplotWidget-CCKEyYIx.js.map → ArrayplotWidget-BEw4fJPY.js.map} +1 -1
  7. package/dist/ArrayplotWidget-S4tyM6zU.cjs +2 -0
  8. package/dist/{ArrayplotWidget-COeaK_Lz.cjs.map → ArrayplotWidget-S4tyM6zU.cjs.map} +1 -1
  9. package/dist/BarColumn-B2FQVNoP.cjs +2 -0
  10. package/dist/{BarColumn-CJLW1nXy.cjs.map → BarColumn-B2FQVNoP.cjs.map} +1 -1
  11. package/dist/{BarColumn-C6p07yWK.js → BarColumn-CIWppEH6.js} +3 -3
  12. package/dist/{BarColumn-C6p07yWK.js.map → BarColumn-CIWppEH6.js.map} +1 -1
  13. package/dist/{BlockWidget-DlCHbqZX.js → BlockWidget-DRtBkPat.js} +4 -4
  14. package/dist/{BlockWidget-DlCHbqZX.js.map → BlockWidget-DRtBkPat.js.map} +1 -1
  15. package/dist/{BlockWidget-BFVYgbd_.cjs → BlockWidget-EZBTae9s.cjs} +2 -2
  16. package/dist/{BlockWidget-BFVYgbd_.cjs.map → BlockWidget-EZBTae9s.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-CtfJzCBR.js → ButtonWidget-4GORf9BG.js} +14 -14
  18. package/dist/{ButtonWidget-CtfJzCBR.js.map → ButtonWidget-4GORf9BG.js.map} +1 -1
  19. package/dist/ButtonWidget-C0UM4M51.cjs +3 -0
  20. package/dist/{ButtonWidget-HN8UHsme.cjs.map → ButtonWidget-C0UM4M51.cjs.map} +1 -1
  21. package/dist/{CanvasWidget-CHmkxxMO.cjs → CanvasWidget-77u4rg8R.cjs} +2 -2
  22. package/dist/{CanvasWidget-CHmkxxMO.cjs.map → CanvasWidget-77u4rg8R.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-CqRlXc4r.js → CanvasWidget-VW1uHIU0.js} +2 -2
  24. package/dist/{CanvasWidget-CqRlXc4r.js.map → CanvasWidget-VW1uHIU0.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-B4bUcKRc.cjs → CanvasdotWidget-B4olJsKr.cjs} +2 -2
  26. package/dist/{CanvasdotWidget-B4bUcKRc.cjs.map → CanvasdotWidget-B4olJsKr.cjs.map} +1 -1
  27. package/dist/{CanvasdotWidget--Xr_KsZs.js → CanvasdotWidget-unc83V9l.js} +2 -2
  28. package/dist/{CanvasdotWidget--Xr_KsZs.js.map → CanvasdotWidget-unc83V9l.js.map} +1 -1
  29. package/dist/{CanvasimageWidget-B5YozXoI.cjs → CanvasimageWidget-BPk3GdGV.cjs} +2 -2
  30. package/dist/{CanvasimageWidget-B5YozXoI.cjs.map → CanvasimageWidget-BPk3GdGV.cjs.map} +1 -1
  31. package/dist/{CanvasimageWidget-BPlj5QYK.js → CanvasimageWidget-CNPV5Ale.js} +3 -3
  32. package/dist/{CanvasimageWidget-BPlj5QYK.js.map → CanvasimageWidget-CNPV5Ale.js.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-Dx1HnbEw.cjs → CanvasimagevalueWidget-DpPDDitX.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-Dx1HnbEw.cjs.map → CanvasimagevalueWidget-DpPDDitX.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-DVFGLt8f.js → CanvasimagevalueWidget-DsQbSZt_.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-DVFGLt8f.js.map → CanvasimagevalueWidget-DsQbSZt_.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-CYNqmyP0.js → CanvaslabelWidget-B-5KAkZr.js} +2 -2
  38. package/dist/{CanvaslabelWidget-CYNqmyP0.js.map → CanvaslabelWidget-B-5KAkZr.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-DgadQD-D.cjs → CanvaslabelWidget-CjKvr47x.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-DgadQD-D.cjs.map → CanvaslabelWidget-CjKvr47x.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-C3k5gx5c.cjs → CanvaslabelvalueWidget-C0jdjHxr.cjs} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-C3k5gx5c.cjs.map → CanvaslabelvalueWidget-C0jdjHxr.cjs.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-B7yIDmsn.js → CanvaslabelvalueWidget-DX-b_55r.js} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-B7yIDmsn.js.map → CanvaslabelvalueWidget-DX-b_55r.js.map} +1 -1
  45. package/dist/{CanvaslineWidget-CYHkes0a.cjs → CanvaslineWidget-C-4EjDkj.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-CYHkes0a.cjs.map → CanvaslineWidget-C-4EjDkj.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-BICdxX0Q.js → CanvaslineWidget-DiNWzbpu.js} +2 -2
  48. package/dist/{CanvaslineWidget-BICdxX0Q.js.map → CanvaslineWidget-DiNWzbpu.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-Cq-Ddh0P.js → CanvaslinevalueWidget-Du9pwAN7.js} +2 -2
  50. package/dist/{CanvaslinevalueWidget-Cq-Ddh0P.js.map → CanvaslinevalueWidget-Du9pwAN7.js.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-5DzhZ22p.cjs → CanvaslinevalueWidget-x81dANpk.cjs} +2 -2
  52. package/dist/{CanvaslinevalueWidget-5DzhZ22p.cjs.map → CanvaslinevalueWidget-x81dANpk.cjs.map} +1 -1
  53. package/dist/{CheckbuttonWidget-B74AWeaW.js → CheckbuttonWidget--QM-segm.js} +2 -2
  54. package/dist/{CheckbuttonWidget-B74AWeaW.js.map → CheckbuttonWidget--QM-segm.js.map} +1 -1
  55. package/dist/{CheckbuttonWidget-BCzsXnIF.cjs → CheckbuttonWidget-LWSGbUuH.cjs} +2 -2
  56. package/dist/{CheckbuttonWidget-BCzsXnIF.cjs.map → CheckbuttonWidget-LWSGbUuH.cjs.map} +1 -1
  57. package/dist/{ComboboxWidget-CtyKbEWb.js → ComboboxWidget-BDpHIcCo.js} +2 -2
  58. package/dist/{ComboboxWidget-CtyKbEWb.js.map → ComboboxWidget-BDpHIcCo.js.map} +1 -1
  59. package/dist/{ComboboxWidget-DQgDyDAC.cjs → ComboboxWidget-DR8EmM6T.cjs} +2 -2
  60. package/dist/{ComboboxWidget-DQgDyDAC.cjs.map → ComboboxWidget-DR8EmM6T.cjs.map} +1 -1
  61. package/dist/CriticalCmdDialog-Ct5WeIW_.cjs +2 -0
  62. package/dist/CriticalCmdDialog-Ct5WeIW_.cjs.map +1 -0
  63. package/dist/{CriticalCmdDialog-DPIZOBeP.js → CriticalCmdDialog-D4-eoA3P.js} +16 -16
  64. package/dist/CriticalCmdDialog-D4-eoA3P.js.map +1 -0
  65. package/dist/{DateWidget-BEVSczU8.js → DateWidget-BCmQNavZ.js} +3 -3
  66. package/dist/{DateWidget-BEVSczU8.js.map → DateWidget-BCmQNavZ.js.map} +1 -1
  67. package/dist/{DateWidget-BB4cIuUS.cjs → DateWidget-CBzHYk5i.cjs} +2 -2
  68. package/dist/{DateWidget-BB4cIuUS.cjs.map → DateWidget-CBzHYk5i.cjs.map} +1 -1
  69. package/dist/{DetailsDialog-DmEC5BTs.js → DetailsDialog-OMd7LWdZ.js} +18 -18
  70. package/dist/DetailsDialog-OMd7LWdZ.js.map +1 -0
  71. package/dist/DetailsDialog-T9G076-B.cjs +2 -0
  72. package/dist/DetailsDialog-T9G076-B.cjs.map +1 -0
  73. package/dist/EventListDialog-COOwwkxk.cjs +2 -0
  74. package/dist/EventListDialog-COOwwkxk.cjs.map +1 -0
  75. package/dist/{EventListDialog-CSMSmCIT.js → EventListDialog-ankpCg-n.js} +520 -593
  76. package/dist/EventListDialog-ankpCg-n.js.map +1 -0
  77. package/dist/FormatvalueWidget-CPn5mDHY.js +48 -0
  78. package/dist/FormatvalueWidget-CPn5mDHY.js.map +1 -0
  79. package/dist/FormatvalueWidget-wjsl4ty0.cjs +2 -0
  80. package/dist/FormatvalueWidget-wjsl4ty0.cjs.map +1 -0
  81. package/dist/Graph-hTOB_jv2.cjs +2 -0
  82. package/dist/Graph-hTOB_jv2.cjs.map +1 -0
  83. package/dist/{Graph-Bgo0cjl3.js → Graph-vUcIyyTp.js} +666 -801
  84. package/dist/Graph-vUcIyyTp.js.map +1 -0
  85. package/dist/{GraphWidget-DurWDmpg.js → GraphWidget-Cl97QQYm.js} +2 -2
  86. package/dist/{GraphWidget-DurWDmpg.js.map → GraphWidget-Cl97QQYm.js.map} +1 -1
  87. package/dist/{GraphWidget-sid4Ws9H.cjs → GraphWidget-D3rDXvA8.cjs} +2 -2
  88. package/dist/{GraphWidget-sid4Ws9H.cjs.map → GraphWidget-D3rDXvA8.cjs.map} +1 -1
  89. package/dist/{HorizontalWidget-_6IR0cR8.cjs → HorizontalWidget-72nrDrwn.cjs} +2 -2
  90. package/dist/{HorizontalWidget-_6IR0cR8.cjs.map → HorizontalWidget-72nrDrwn.cjs.map} +1 -1
  91. package/dist/{HorizontalWidget-Cd_wl1b3.js → HorizontalWidget-CtTkQHl-.js} +2 -2
  92. package/dist/{HorizontalWidget-Cd_wl1b3.js.map → HorizontalWidget-CtTkQHl-.js.map} +1 -1
  93. package/dist/{HorizontalboxWidget-zmnurtv1.cjs → HorizontalboxWidget-C8kuEm-u.cjs} +2 -2
  94. package/dist/{HorizontalboxWidget-zmnurtv1.cjs.map → HorizontalboxWidget-C8kuEm-u.cjs.map} +1 -1
  95. package/dist/{HorizontalboxWidget-BcMTFBU-.js → HorizontalboxWidget-Dn9zVn4r.js} +5 -5
  96. package/dist/{HorizontalboxWidget-BcMTFBU-.js.map → HorizontalboxWidget-Dn9zVn4r.js.map} +1 -1
  97. package/dist/{HorizontallineWidget-CXFqHclf.js → HorizontallineWidget-BBvYWaP7.js} +2 -2
  98. package/dist/{HorizontallineWidget-CXFqHclf.js.map → HorizontallineWidget-BBvYWaP7.js.map} +1 -1
  99. package/dist/{HorizontallineWidget-CM-6WqCj.cjs → HorizontallineWidget-Bs_p5rzY.cjs} +2 -2
  100. package/dist/{HorizontallineWidget-CM-6WqCj.cjs.map → HorizontallineWidget-Bs_p5rzY.cjs.map} +1 -1
  101. package/dist/{IframeWidget-EhncMob0.cjs → IframeWidget-Bhl0G51c.cjs} +2 -2
  102. package/dist/{IframeWidget-EhncMob0.cjs.map → IframeWidget-Bhl0G51c.cjs.map} +1 -1
  103. package/dist/{IframeWidget-BPerHCCa.js → IframeWidget-BmZOip3U.js} +2 -2
  104. package/dist/{IframeWidget-BPerHCCa.js.map → IframeWidget-BmZOip3U.js.map} +1 -1
  105. package/dist/ImageLoader-CXV42ZAx.cjs +2 -0
  106. package/dist/{ImageLoader-cRmBcpU9.cjs.map → ImageLoader-CXV42ZAx.cjs.map} +1 -1
  107. package/dist/{ImageLoader-4N-7Gj61.js → ImageLoader-wYNaGuuz.js} +2 -2
  108. package/dist/{ImageLoader-4N-7Gj61.js.map → ImageLoader-wYNaGuuz.js.map} +1 -1
  109. package/dist/{ImageviewerWidget-Bv3CreXd.cjs → ImageviewerWidget-BAK_GlYK.cjs} +2 -2
  110. package/dist/{ImageviewerWidget-Bv3CreXd.cjs.map → ImageviewerWidget-BAK_GlYK.cjs.map} +1 -1
  111. package/dist/{ImageviewerWidget-Cw_H_HmZ.js → ImageviewerWidget-ByuTqBHq.js} +2 -2
  112. package/dist/{ImageviewerWidget-Cw_H_HmZ.js.map → ImageviewerWidget-ByuTqBHq.js.map} +1 -1
  113. package/dist/InterfacesTab-BbsiYwEX.js +83 -0
  114. package/dist/InterfacesTab-BbsiYwEX.js.map +1 -0
  115. package/dist/InterfacesTab-CnQLkjoz.cjs +2 -0
  116. package/dist/InterfacesTab-CnQLkjoz.cjs.map +1 -0
  117. package/dist/{LabelWidget-mMcf5S8K.cjs → LabelWidget-BP72ze-R.cjs} +2 -2
  118. package/dist/{LabelWidget-mMcf5S8K.cjs.map → LabelWidget-BP72ze-R.cjs.map} +1 -1
  119. package/dist/{LabelWidget-xrmcVeq8.js → LabelWidget-Dmb5F5j-.js} +2 -2
  120. package/dist/{LabelWidget-xrmcVeq8.js.map → LabelWidget-Dmb5F5j-.js.map} +1 -1
  121. package/dist/{LabelledWidget-BoYCuDaH.cjs → LabelledWidget-DIflzlDv.cjs} +2 -2
  122. package/dist/{LabelledWidget-BoYCuDaH.cjs.map → LabelledWidget-DIflzlDv.cjs.map} +1 -1
  123. package/dist/{LabelledWidget-D48QoyMk.js → LabelledWidget-DV1IbbPS.js} +4 -4
  124. package/dist/{LabelledWidget-D48QoyMk.js.map → LabelledWidget-DV1IbbPS.js.map} +1 -1
  125. package/dist/{LabelprogressbarWidget-DiucKsT2.cjs → LabelprogressbarWidget-B18EaMhU.cjs} +2 -2
  126. package/dist/{LabelprogressbarWidget-DiucKsT2.cjs.map → LabelprogressbarWidget-B18EaMhU.cjs.map} +1 -1
  127. package/dist/{LabelprogressbarWidget-C_950t6g.js → LabelprogressbarWidget-BHBDYVZp.js} +4 -4
  128. package/dist/{LabelprogressbarWidget-C_950t6g.js.map → LabelprogressbarWidget-BHBDYVZp.js.map} +1 -1
  129. package/dist/{LabelsparklineWidget-0KXQyPoU.js → LabelsparklineWidget-BaoIdd7s.js} +4 -4
  130. package/dist/{LabelsparklineWidget-0KXQyPoU.js.map → LabelsparklineWidget-BaoIdd7s.js.map} +1 -1
  131. package/dist/{LabelsparklineWidget-A3MTEhQc.cjs → LabelsparklineWidget-Bdft2p6Y.cjs} +2 -2
  132. package/dist/{LabelsparklineWidget-A3MTEhQc.cjs.map → LabelsparklineWidget-Bdft2p6Y.cjs.map} +1 -1
  133. package/dist/{LabelvalueWidget-DnKoz0-N.cjs → LabelvalueWidget-DiqMgePn.cjs} +2 -2
  134. package/dist/{LabelvalueWidget-DnKoz0-N.cjs.map → LabelvalueWidget-DiqMgePn.cjs.map} +1 -1
  135. package/dist/{LabelvalueWidget-CQ06wWDK.js → LabelvalueWidget-wuW55zQP.js} +4 -4
  136. package/dist/{LabelvalueWidget-CQ06wWDK.js.map → LabelvalueWidget-wuW55zQP.js.map} +1 -1
  137. package/dist/{LabelvaluedescWidget-Bo8zT01X.js → LabelvaluedescWidget-BBHwqvj4.js} +9 -9
  138. package/dist/{LabelvaluedescWidget-Bo8zT01X.js.map → LabelvaluedescWidget-BBHwqvj4.js.map} +1 -1
  139. package/dist/LabelvaluedescWidget-fN9XLm-N.cjs +2 -0
  140. package/dist/{LabelvaluedescWidget-I6ljK--Y.cjs.map → LabelvaluedescWidget-fN9XLm-N.cjs.map} +1 -1
  141. package/dist/{LabelvaluelimitsbarWidget-BucTw8Yk.js → LabelvaluelimitsbarWidget-77Rc3lCf.js} +4 -4
  142. package/dist/{LabelvaluelimitsbarWidget-BucTw8Yk.js.map → LabelvaluelimitsbarWidget-77Rc3lCf.js.map} +1 -1
  143. package/dist/{LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs → LabelvaluelimitsbarWidget-Dp5qsue9.cjs} +2 -2
  144. package/dist/{LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs.map → LabelvaluelimitsbarWidget-Dp5qsue9.cjs.map} +1 -1
  145. package/dist/{LabelvaluelimitscolumnWidget-Dflb1hNd.js → LabelvaluelimitscolumnWidget-nounrACl.js} +5 -5
  146. package/dist/{LabelvaluelimitscolumnWidget-Dflb1hNd.js.map → LabelvaluelimitscolumnWidget-nounrACl.js.map} +1 -1
  147. package/dist/{LabelvaluelimitscolumnWidget-ClY5OxUC.cjs → LabelvaluelimitscolumnWidget-uR4QE_cm.cjs} +2 -2
  148. package/dist/{LabelvaluelimitscolumnWidget-ClY5OxUC.cjs.map → LabelvaluelimitscolumnWidget-uR4QE_cm.cjs.map} +1 -1
  149. package/dist/{LabelvaluerangebarWidget-D8cbfXFM.js → LabelvaluerangebarWidget-B83Jj5Q1.js} +4 -4
  150. package/dist/{LabelvaluerangebarWidget-D8cbfXFM.js.map → LabelvaluerangebarWidget-B83Jj5Q1.js.map} +1 -1
  151. package/dist/{LabelvaluerangebarWidget-9S5rVZaS.cjs → LabelvaluerangebarWidget-MVkSnTVH.cjs} +2 -2
  152. package/dist/{LabelvaluerangebarWidget-9S5rVZaS.cjs.map → LabelvaluerangebarWidget-MVkSnTVH.cjs.map} +1 -1
  153. package/dist/{Layout-Tf--nruw.js → Layout-ByQC7nQ3.js} +2 -2
  154. package/dist/{Layout-Tf--nruw.js.map → Layout-ByQC7nQ3.js.map} +1 -1
  155. package/dist/Layout-CFJMHNqy.cjs +2 -0
  156. package/dist/{Layout-DuCYyOw4.cjs.map → Layout-CFJMHNqy.cjs.map} +1 -1
  157. package/dist/{LedWidget-qH_FthkK.js → LedWidget-Cccb8YTk.js} +13 -10
  158. package/dist/LedWidget-Cccb8YTk.js.map +1 -0
  159. package/dist/LedWidget-ghzR6jZJ.cjs +2 -0
  160. package/dist/LedWidget-ghzR6jZJ.cjs.map +1 -0
  161. package/dist/{LimitsbarWidget-B9lAB2RD.js → LimitsbarWidget-D1EBBwX1.js} +10 -7
  162. package/dist/LimitsbarWidget-D1EBBwX1.js.map +1 -0
  163. package/dist/LimitsbarWidget-Dg2_T5OY.cjs +2 -0
  164. package/dist/LimitsbarWidget-Dg2_T5OY.cjs.map +1 -0
  165. package/dist/{LimitscolorWidget-c6Qa6su7.js → LimitscolorWidget--1aPSNVB.js} +2 -2
  166. package/dist/{LimitscolorWidget-c6Qa6su7.js.map → LimitscolorWidget--1aPSNVB.js.map} +1 -1
  167. package/dist/{LimitscolorWidget-DORhDxRo.cjs → LimitscolorWidget-D9mHLFOs.cjs} +2 -2
  168. package/dist/{LimitscolorWidget-DORhDxRo.cjs.map → LimitscolorWidget-D9mHLFOs.cjs.map} +1 -1
  169. package/dist/{LimitscolumnWidget-C9Uyg7Fh.cjs → LimitscolumnWidget-D18x3aW-.cjs} +2 -2
  170. package/dist/{LimitscolumnWidget-C9Uyg7Fh.cjs.map → LimitscolumnWidget-D18x3aW-.cjs.map} +1 -1
  171. package/dist/{LimitscolumnWidget-CcLs_443.js → LimitscolumnWidget-swnMNApm.js} +2 -2
  172. package/dist/{LimitscolumnWidget-CcLs_443.js.map → LimitscolumnWidget-swnMNApm.js.map} +1 -1
  173. package/dist/{LinegraphWidget-BSVYLFo1.js → LinegraphWidget-BbI-wOnq.js} +4 -4
  174. package/dist/{LinegraphWidget-BSVYLFo1.js.map → LinegraphWidget-BbI-wOnq.js.map} +1 -1
  175. package/dist/LinegraphWidget-BdCc6zps.cjs +2 -0
  176. package/dist/{LinegraphWidget-Bf8DIwEn.cjs.map → LinegraphWidget-BdCc6zps.cjs.map} +1 -1
  177. package/dist/{MatrixbycolumnsWidget-DXFpZTre.js → MatrixbycolumnsWidget-Bx2qMr8P.js} +3 -3
  178. package/dist/{MatrixbycolumnsWidget-DXFpZTre.js.map → MatrixbycolumnsWidget-Bx2qMr8P.js.map} +1 -1
  179. package/dist/MatrixbycolumnsWidget-CuhTHsdb.cjs +2 -0
  180. package/dist/{MatrixbycolumnsWidget-DpdFzNeP.cjs.map → MatrixbycolumnsWidget-CuhTHsdb.cjs.map} +1 -1
  181. package/dist/MicroservicesTab-7mVRcHEj.cjs +2 -0
  182. package/dist/MicroservicesTab-7mVRcHEj.cjs.map +1 -0
  183. package/dist/MicroservicesTab-CtI7BEt0.js +219 -0
  184. package/dist/MicroservicesTab-CtI7BEt0.js.map +1 -0
  185. package/dist/Openc3Screen-B4X70CVP.cjs +5 -0
  186. package/dist/Openc3Screen-B4X70CVP.cjs.map +1 -0
  187. package/dist/Openc3Screen-DFYYhHt7.js +1704 -0
  188. package/dist/Openc3Screen-DFYYhHt7.js.map +1 -0
  189. package/dist/{OutputDialog-zVPZiZay.js → OutputDialog-CqD5uI0m.js} +66 -78
  190. package/dist/OutputDialog-CqD5uI0m.js.map +1 -0
  191. package/dist/OutputDialog-Dft9Xm4R.cjs +2 -0
  192. package/dist/OutputDialog-Dft9Xm4R.cjs.map +1 -0
  193. package/dist/PackagesTab-BxP1kiSR.cjs +2 -0
  194. package/dist/PackagesTab-BxP1kiSR.cjs.map +1 -0
  195. package/dist/PackagesTab-DhMk-fi5.js +313 -0
  196. package/dist/PackagesTab-DhMk-fi5.js.map +1 -0
  197. package/dist/PluginsTab-BKJo5vK-.cjs +6 -0
  198. package/dist/PluginsTab-BKJo5vK-.cjs.map +1 -0
  199. package/dist/{PluginsTab-B64OvayB.js → PluginsTab-DxxEqPCA.js} +205 -244
  200. package/dist/PluginsTab-DxxEqPCA.js.map +1 -0
  201. package/dist/{ProgressbarWidget-iYGw8-Dc.js → ProgressbarWidget-7rJeuX6H.js} +2 -2
  202. package/dist/{ProgressbarWidget-iYGw8-Dc.js.map → ProgressbarWidget-7rJeuX6H.js.map} +1 -1
  203. package/dist/{ProgressbarWidget-fGWa6ipm.cjs → ProgressbarWidget-DLvbQ0g-.cjs} +2 -2
  204. package/dist/{ProgressbarWidget-fGWa6ipm.cjs.map → ProgressbarWidget-DLvbQ0g-.cjs.map} +1 -1
  205. package/dist/{RadiobuttonWidget-ZEPJbOp_.cjs → RadiobuttonWidget-C15SchQH.cjs} +2 -2
  206. package/dist/{RadiobuttonWidget-ZEPJbOp_.cjs.map → RadiobuttonWidget-C15SchQH.cjs.map} +1 -1
  207. package/dist/{RadiobuttonWidget-ytmoVZ3u.js → RadiobuttonWidget-DsEw3JiU.js} +2 -2
  208. package/dist/{RadiobuttonWidget-ytmoVZ3u.js.map → RadiobuttonWidget-DsEw3JiU.js.map} +1 -1
  209. package/dist/{RadiogroupWidget-EK4rEGUC.cjs → RadiogroupWidget-BZS_MkSP.cjs} +2 -2
  210. package/dist/{RadiogroupWidget-EK4rEGUC.cjs.map → RadiogroupWidget-BZS_MkSP.cjs.map} +1 -1
  211. package/dist/{RadiogroupWidget-CusMBhKH.js → RadiogroupWidget-DhfbTvQ8.js} +2 -2
  212. package/dist/{RadiogroupWidget-CusMBhKH.js.map → RadiogroupWidget-DhfbTvQ8.js.map} +1 -1
  213. package/dist/{RangebarWidget-D_zGTtCa.js → RangebarWidget-BEGvSL_K.js} +2 -2
  214. package/dist/{RangebarWidget-D_zGTtCa.js.map → RangebarWidget-BEGvSL_K.js.map} +1 -1
  215. package/dist/{RangebarWidget-DwIs-L5k.cjs → RangebarWidget-bBSBfvHk.cjs} +2 -2
  216. package/dist/{RangebarWidget-DwIs-L5k.cjs.map → RangebarWidget-bBSBfvHk.cjs.map} +1 -1
  217. package/dist/{RedisTab-CyPo6ADN.js → RedisTab-Bq8Frctp.js} +13 -13
  218. package/dist/{RedisTab-CyPo6ADN.js.map → RedisTab-Bq8Frctp.js.map} +1 -1
  219. package/dist/RedisTab-CWYntIvy.cjs +2 -0
  220. package/dist/{RedisTab-67UcKoPf.cjs.map → RedisTab-CWYntIvy.cjs.map} +1 -1
  221. package/dist/{RollupWidget-Dolsixyt.js → RollupWidget-BZhspgWd.js} +2 -2
  222. package/dist/{RollupWidget-Dolsixyt.js.map → RollupWidget-BZhspgWd.js.map} +1 -1
  223. package/dist/{RollupWidget-DC3OIP6G.cjs → RollupWidget-BueYskqE.cjs} +2 -2
  224. package/dist/{RollupWidget-DC3OIP6G.cjs.map → RollupWidget-BueYskqE.cjs.map} +1 -1
  225. package/dist/RoutersTab-Bg6dpAXr.js +85 -0
  226. package/dist/RoutersTab-Bg6dpAXr.js.map +1 -0
  227. package/dist/RoutersTab-DOseaOsv.cjs +2 -0
  228. package/dist/RoutersTab-DOseaOsv.cjs.map +1 -0
  229. package/dist/ScriptChooser-CHkObjcT.cjs +2 -0
  230. package/dist/ScriptChooser-CHkObjcT.cjs.map +1 -0
  231. package/dist/ScriptChooser-DBkFAc6E.js +176 -0
  232. package/dist/ScriptChooser-DBkFAc6E.js.map +1 -0
  233. package/dist/{ScrollwindowWidget-BWeqSUPc.cjs → ScrollwindowWidget-CJmuGHai.cjs} +2 -2
  234. package/dist/{ScrollwindowWidget-BWeqSUPc.cjs.map → ScrollwindowWidget-CJmuGHai.cjs.map} +1 -1
  235. package/dist/{ScrollwindowWidget-DV2nZuNi.js → ScrollwindowWidget-qZ3nhhVU.js} +3 -3
  236. package/dist/{ScrollwindowWidget-DV2nZuNi.js.map → ScrollwindowWidget-qZ3nhhVU.js.map} +1 -1
  237. package/dist/SecretsTab-B49h9PhL.cjs +2 -0
  238. package/dist/SecretsTab-B49h9PhL.cjs.map +1 -0
  239. package/dist/{SecretsTab-DVyyyGlG.js → SecretsTab-vdm8oj9_.js} +39 -49
  240. package/dist/SecretsTab-vdm8oj9_.js.map +1 -0
  241. package/dist/{SettingsTab-g29K6FyC.js → SettingsTab-C05e6-Xm.js} +3 -3
  242. package/dist/{SettingsTab-g29K6FyC.js.map → SettingsTab-C05e6-Xm.js.map} +1 -1
  243. package/dist/SettingsTab-fmHVuOps.cjs +3 -0
  244. package/dist/{SettingsTab-B1LvOLG2.cjs.map → SettingsTab-fmHVuOps.cjs.map} +1 -1
  245. package/dist/{SignalWidget-d9-6h85k.js → SignalWidget-Bh14Zrch.js} +16 -18
  246. package/dist/SignalWidget-Bh14Zrch.js.map +1 -0
  247. package/dist/{SignalWidget-RvRwpE8T.cjs → SignalWidget-J3LFoUd-.cjs} +2 -2
  248. package/dist/SignalWidget-J3LFoUd-.cjs.map +1 -0
  249. package/dist/SimpleTextDialog-CSsm9IoB.cjs +2 -0
  250. package/dist/SimpleTextDialog-CSsm9IoB.cjs.map +1 -0
  251. package/dist/SimpleTextDialog-plHG7LGh.js +97 -0
  252. package/dist/SimpleTextDialog-plHG7LGh.js.map +1 -0
  253. package/dist/{SpacerWidget-7_8bpLCb.cjs → SpacerWidget-CzqLoBdY.cjs} +2 -2
  254. package/dist/{SpacerWidget-7_8bpLCb.cjs.map → SpacerWidget-CzqLoBdY.cjs.map} +1 -1
  255. package/dist/{SpacerWidget-BH0p2OLi.js → SpacerWidget-D_NE46jZ.js} +2 -2
  256. package/dist/{SpacerWidget-BH0p2OLi.js.map → SpacerWidget-D_NE46jZ.js.map} +1 -1
  257. package/dist/{SparklineWidget-coxi9r2g.js → SparklineWidget-CJEEJdZ-.js} +4 -4
  258. package/dist/{SparklineWidget-coxi9r2g.js.map → SparklineWidget-CJEEJdZ-.js.map} +1 -1
  259. package/dist/SparklineWidget-DDRhatn7.cjs +2 -0
  260. package/dist/{SparklineWidget-60jVlbHA.cjs.map → SparklineWidget-DDRhatn7.cjs.map} +1 -1
  261. package/dist/{TabbookWidget-B1XKplGH.js → TabbookWidget-C-SU65IF.js} +2 -2
  262. package/dist/{TabbookWidget-B1XKplGH.js.map → TabbookWidget-C-SU65IF.js.map} +1 -1
  263. package/dist/{TabbookWidget-D1CVT9IK.cjs → TabbookWidget-C8k2kKLX.cjs} +2 -2
  264. package/dist/{TabbookWidget-D1CVT9IK.cjs.map → TabbookWidget-C8k2kKLX.cjs.map} +1 -1
  265. package/dist/TargetsTab-DyfyM9sC.js +117 -0
  266. package/dist/TargetsTab-DyfyM9sC.js.map +1 -0
  267. package/dist/TargetsTab-pU_wu9d-.cjs +2 -0
  268. package/dist/TargetsTab-pU_wu9d-.cjs.map +1 -0
  269. package/dist/TextBoxDialog-C60jmnyN.js +98 -0
  270. package/dist/TextBoxDialog-C60jmnyN.js.map +1 -0
  271. package/dist/TextBoxDialog-DWt30tB8.cjs +2 -0
  272. package/dist/TextBoxDialog-DWt30tB8.cjs.map +1 -0
  273. package/dist/TextboxWidget-CRDu77NK.cjs +2 -0
  274. package/dist/{TextboxWidget-BDG4NxRw.cjs.map → TextboxWidget-CRDu77NK.cjs.map} +1 -1
  275. package/dist/{TextboxWidget-C-_M2M4l.js → TextboxWidget-Dn1Ds-b0.js} +4 -4
  276. package/dist/{TextboxWidget-C-_M2M4l.js.map → TextboxWidget-Dn1Ds-b0.js.map} +1 -1
  277. package/dist/{TextfieldWidget-C08N4JE8.js → TextfieldWidget-C0C7NL53.js} +2 -2
  278. package/dist/{TextfieldWidget-C08N4JE8.js.map → TextfieldWidget-C0C7NL53.js.map} +1 -1
  279. package/dist/{TextfieldWidget-BGJv9Lox.cjs → TextfieldWidget-DGdD6b_-.cjs} +2 -2
  280. package/dist/{TextfieldWidget-BGJv9Lox.cjs.map → TextfieldWidget-DGdD6b_-.cjs.map} +1 -1
  281. package/dist/{TimeWidget-DtwdEcFg.js → TimeWidget-AFOTVB4w.js} +3 -3
  282. package/dist/{TimeWidget-DtwdEcFg.js.map → TimeWidget-AFOTVB4w.js.map} +1 -1
  283. package/dist/{TimeWidget-CGCOIouj.cjs → TimeWidget-BlZoS24B.cjs} +2 -2
  284. package/dist/{TimeWidget-CGCOIouj.cjs.map → TimeWidget-BlZoS24B.cjs.map} +1 -1
  285. package/dist/{TitleWidget-CT-aLcNb.js → TitleWidget-CbS_wrQw.js} +2 -2
  286. package/dist/{TitleWidget-CT-aLcNb.js.map → TitleWidget-CbS_wrQw.js.map} +1 -1
  287. package/dist/{TitleWidget-BljFH9RB.cjs → TitleWidget-DDEnHVPP.cjs} +2 -2
  288. package/dist/{TitleWidget-BljFH9RB.cjs.map → TitleWidget-DDEnHVPP.cjs.map} +1 -1
  289. package/dist/ToolsTab-BvpoO0wt.js +1501 -0
  290. package/dist/{ToolsTab-NveeVXz2.js.map → ToolsTab-BvpoO0wt.js.map} +1 -1
  291. package/dist/ToolsTab-DCRNrlhT.cjs +7 -0
  292. package/dist/{ToolsTab-RMTst_Sy.cjs.map → ToolsTab-DCRNrlhT.cjs.map} +1 -1
  293. package/dist/{TopBar-CnJNNJlV.js → TopBar-AjYGyx8W.js} +68 -64
  294. package/dist/TopBar-AjYGyx8W.js.map +1 -0
  295. package/dist/TopBar-vznpQjGN.cjs +2 -0
  296. package/dist/TopBar-vznpQjGN.cjs.map +1 -0
  297. package/dist/UpgradeToEnterpriseDialog-1fVtqbze.cjs +2 -0
  298. package/dist/UpgradeToEnterpriseDialog-1fVtqbze.cjs.map +1 -0
  299. package/dist/UpgradeToEnterpriseDialog-CMVEjihv.js +95 -0
  300. package/dist/UpgradeToEnterpriseDialog-CMVEjihv.js.map +1 -0
  301. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs +1497 -0
  302. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs.map +1 -0
  303. package/dist/{WidgetComponents-C1lSLZ0I.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BOiUmW4q.js} +10636 -10597
  304. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BOiUmW4q.js.map +1 -0
  305. package/dist/{VWidget-DQqb7NVW.js → VWidget-BlF_o-7Z.js} +3 -3
  306. package/dist/{VWidget-DQqb7NVW.js.map → VWidget-BlF_o-7Z.js.map} +1 -1
  307. package/dist/{VWidget-2N2cOosI.cjs → VWidget-CMKh-tv6.cjs} +2 -2
  308. package/dist/{VWidget-2N2cOosI.cjs.map → VWidget-CMKh-tv6.cjs.map} +1 -1
  309. package/dist/{ValueWidget-C6RanBj3.js → ValueWidget-DFUfM5tw.js} +16 -14
  310. package/dist/ValueWidget-DFUfM5tw.js.map +1 -0
  311. package/dist/ValueWidget-K7SCPEB6.cjs +2 -0
  312. package/dist/ValueWidget-K7SCPEB6.cjs.map +1 -0
  313. package/dist/{ValuelimitsbarWidget-B3bvjfxc.js → ValuelimitsbarWidget-CALgABsT.js} +4 -4
  314. package/dist/{ValuelimitsbarWidget-B3bvjfxc.js.map → ValuelimitsbarWidget-CALgABsT.js.map} +1 -1
  315. package/dist/{ValuelimitsbarWidget-C0HROxrb.cjs → ValuelimitsbarWidget-DcY2NV9X.cjs} +2 -2
  316. package/dist/{ValuelimitsbarWidget-C0HROxrb.cjs.map → ValuelimitsbarWidget-DcY2NV9X.cjs.map} +1 -1
  317. package/dist/{ValuelimitscolumnWidget-QvhI6EcE.js → ValuelimitscolumnWidget-Bs91VFLz.js} +4 -4
  318. package/dist/{ValuelimitscolumnWidget-QvhI6EcE.js.map → ValuelimitscolumnWidget-Bs91VFLz.js.map} +1 -1
  319. package/dist/{ValuelimitscolumnWidget-CWvLfg8u.cjs → ValuelimitscolumnWidget-DQKvlGap.cjs} +2 -2
  320. package/dist/{ValuelimitscolumnWidget-CWvLfg8u.cjs.map → ValuelimitscolumnWidget-DQKvlGap.cjs.map} +1 -1
  321. package/dist/{ValuerangebarWidget-Dt3K9BnC.js → ValuerangebarWidget-C7WHyR2h.js} +4 -4
  322. package/dist/{ValuerangebarWidget-Dt3K9BnC.js.map → ValuerangebarWidget-C7WHyR2h.js.map} +1 -1
  323. package/dist/{ValuerangebarWidget-DyN78cQl.cjs → ValuerangebarWidget-DnWuvusw.cjs} +2 -2
  324. package/dist/{ValuerangebarWidget-DyN78cQl.cjs.map → ValuerangebarWidget-DnWuvusw.cjs.map} +1 -1
  325. package/dist/{VerticalWidget-BIIViZgI.js → VerticalWidget-COP5oVCK.js} +2 -2
  326. package/dist/{VerticalWidget-BIIViZgI.js.map → VerticalWidget-COP5oVCK.js.map} +1 -1
  327. package/dist/{VerticalWidget-CFTOu4H8.cjs → VerticalWidget-eMN4dvxL.cjs} +2 -2
  328. package/dist/{VerticalWidget-CFTOu4H8.cjs.map → VerticalWidget-eMN4dvxL.cjs.map} +1 -1
  329. package/dist/{VerticalboxWidget-DY72fLHW.js → VerticalboxWidget-CDPoOx4C.js} +5 -5
  330. package/dist/{VerticalboxWidget-DY72fLHW.js.map → VerticalboxWidget-CDPoOx4C.js.map} +1 -1
  331. package/dist/{VerticalboxWidget-Z8-DWI8t.cjs → VerticalboxWidget-UIBpyEz_.cjs} +2 -2
  332. package/dist/{VerticalboxWidget-Z8-DWI8t.cjs.map → VerticalboxWidget-UIBpyEz_.cjs.map} +1 -1
  333. package/dist/Widget-Cg0pAxSF.cjs +2 -0
  334. package/dist/Widget-Cg0pAxSF.cjs.map +1 -0
  335. package/dist/{Widget-oyqWpFXJ.js → Widget-cmJ76_g1.js} +3 -3
  336. package/dist/Widget-cmJ76_g1.js.map +1 -0
  337. package/dist/components.cjs +3 -3
  338. package/dist/components.cjs.map +1 -1
  339. package/dist/components.js +285 -318
  340. package/dist/components.js.map +1 -1
  341. package/dist/index-DcL65Mqb.cjs +7 -0
  342. package/dist/index-DcL65Mqb.cjs.map +1 -0
  343. package/dist/{index-DwP8ryNM.js → index-qCq0L4jN.js} +332 -323
  344. package/dist/index-qCq0L4jN.js.map +1 -0
  345. package/dist/plugins.cjs +2 -2
  346. package/dist/plugins.cjs.map +1 -1
  347. package/dist/plugins.js +94 -89
  348. package/dist/plugins.js.map +1 -1
  349. package/dist/{timeFilters-CRYpYDdf.js → timeFilters-BKnCM4rv.js} +139 -136
  350. package/dist/{timeFilters-CRYpYDdf.js.map → timeFilters-BKnCM4rv.js.map} +1 -1
  351. package/dist/timeFilters-CJFxfjqN.cjs +2 -0
  352. package/dist/{timeFilters-8SaYvcH0.cjs.map → timeFilters-CJFxfjqN.cjs.map} +1 -1
  353. package/dist/tools/admin.cjs +10 -10
  354. package/dist/tools/admin.cjs.map +1 -1
  355. package/dist/tools/admin.js +380 -406
  356. package/dist/tools/admin.js.map +1 -1
  357. package/dist/tools/base.cjs +1 -1
  358. package/dist/tools/base.cjs.map +1 -1
  359. package/dist/tools/base.js +212 -215
  360. package/dist/tools/base.js.map +1 -1
  361. package/dist/tools/calendar.cjs +1 -1
  362. package/dist/tools/calendar.js +1 -1
  363. package/dist/tools/scriptrunner.cjs +7 -8
  364. package/dist/tools/scriptrunner.cjs.map +1 -1
  365. package/dist/tools/scriptrunner.js +2021 -2011
  366. package/dist/tools/scriptrunner.js.map +1 -1
  367. package/dist/util.cjs +1 -1
  368. package/dist/util.js +1 -1
  369. package/dist/vue-common.css +1 -1
  370. package/dist/widgets.cjs +1 -1
  371. package/dist/widgets.js +63 -63
  372. package/package.json +12 -12
  373. package/dist/ArrayplotWidget-COeaK_Lz.cjs +0 -2
  374. package/dist/BarColumn-CJLW1nXy.cjs +0 -2
  375. package/dist/ButtonWidget-HN8UHsme.cjs +0 -3
  376. package/dist/CriticalCmdDialog-BnxZlt7W.cjs +0 -2
  377. package/dist/CriticalCmdDialog-BnxZlt7W.cjs.map +0 -1
  378. package/dist/CriticalCmdDialog-DPIZOBeP.js.map +0 -1
  379. package/dist/DetailsDialog-DmEC5BTs.js.map +0 -1
  380. package/dist/DetailsDialog-mvxMFmgV.cjs +0 -2
  381. package/dist/DetailsDialog-mvxMFmgV.cjs.map +0 -1
  382. package/dist/EventListDialog-BHZLl28V.cjs +0 -2
  383. package/dist/EventListDialog-BHZLl28V.cjs.map +0 -1
  384. package/dist/EventListDialog-CSMSmCIT.js.map +0 -1
  385. package/dist/FormatvalueWidget-CdjCEAI7.cjs +0 -2
  386. package/dist/FormatvalueWidget-CdjCEAI7.cjs.map +0 -1
  387. package/dist/FormatvalueWidget-DN12xymS.js +0 -44
  388. package/dist/FormatvalueWidget-DN12xymS.js.map +0 -1
  389. package/dist/Graph-Bgo0cjl3.js.map +0 -1
  390. package/dist/Graph-Ujd2yaeI.cjs +0 -2
  391. package/dist/Graph-Ujd2yaeI.cjs.map +0 -1
  392. package/dist/ImageLoader-cRmBcpU9.cjs +0 -2
  393. package/dist/InterfacesTab-B4glsR9Z.js +0 -93
  394. package/dist/InterfacesTab-B4glsR9Z.js.map +0 -1
  395. package/dist/InterfacesTab-Co1Kd6Fa.cjs +0 -2
  396. package/dist/InterfacesTab-Co1Kd6Fa.cjs.map +0 -1
  397. package/dist/LabelvaluedescWidget-I6ljK--Y.cjs +0 -2
  398. package/dist/Layout-DuCYyOw4.cjs +0 -2
  399. package/dist/LedWidget-B2BcwiYF.cjs +0 -2
  400. package/dist/LedWidget-B2BcwiYF.cjs.map +0 -1
  401. package/dist/LedWidget-qH_FthkK.js.map +0 -1
  402. package/dist/LimitsbarWidget-B9lAB2RD.js.map +0 -1
  403. package/dist/LimitsbarWidget-CVCLFIhG.cjs +0 -2
  404. package/dist/LimitsbarWidget-CVCLFIhG.cjs.map +0 -1
  405. package/dist/LinegraphWidget-Bf8DIwEn.cjs +0 -2
  406. package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs +0 -2
  407. package/dist/MicroservicesTab-B5n-mN8G.cjs +0 -2
  408. package/dist/MicroservicesTab-B5n-mN8G.cjs.map +0 -1
  409. package/dist/MicroservicesTab-mCdS0v39.js +0 -264
  410. package/dist/MicroservicesTab-mCdS0v39.js.map +0 -1
  411. package/dist/Openc3Screen-BYhHaH_I.cjs +0 -5
  412. package/dist/Openc3Screen-BYhHaH_I.cjs.map +0 -1
  413. package/dist/Openc3Screen-Cud0OCFu.js +0 -1789
  414. package/dist/Openc3Screen-Cud0OCFu.js.map +0 -1
  415. package/dist/OutputDialog-DXoL9VPw.cjs +0 -2
  416. package/dist/OutputDialog-DXoL9VPw.cjs.map +0 -1
  417. package/dist/OutputDialog-zVPZiZay.js.map +0 -1
  418. package/dist/PackagesTab-CvT2JyMA.cjs +0 -2
  419. package/dist/PackagesTab-CvT2JyMA.cjs.map +0 -1
  420. package/dist/PackagesTab-SWcXumpK.js +0 -332
  421. package/dist/PackagesTab-SWcXumpK.js.map +0 -1
  422. package/dist/PluginsTab-B64OvayB.js.map +0 -1
  423. package/dist/PluginsTab-CfpwWsqv.cjs +0 -6
  424. package/dist/PluginsTab-CfpwWsqv.cjs.map +0 -1
  425. package/dist/RedisTab-67UcKoPf.cjs +0 -2
  426. package/dist/RoutersTab-BBPlFi_z.cjs +0 -2
  427. package/dist/RoutersTab-BBPlFi_z.cjs.map +0 -1
  428. package/dist/RoutersTab-Cs2dFVNA.js +0 -95
  429. package/dist/RoutersTab-Cs2dFVNA.js.map +0 -1
  430. package/dist/ScriptChooser-EV65rbWx.js +0 -199
  431. package/dist/ScriptChooser-EV65rbWx.js.map +0 -1
  432. package/dist/ScriptChooser-vyZwngrz.cjs +0 -2
  433. package/dist/ScriptChooser-vyZwngrz.cjs.map +0 -1
  434. package/dist/SecretsTab-0IFqUxNJ.cjs +0 -2
  435. package/dist/SecretsTab-0IFqUxNJ.cjs.map +0 -1
  436. package/dist/SecretsTab-DVyyyGlG.js.map +0 -1
  437. package/dist/SettingsTab-B1LvOLG2.cjs +0 -3
  438. package/dist/SignalWidget-RvRwpE8T.cjs.map +0 -1
  439. package/dist/SignalWidget-d9-6h85k.js.map +0 -1
  440. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs +0 -2
  441. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs.map +0 -1
  442. package/dist/SimpleTextDialog-pwN8oRy1.js +0 -107
  443. package/dist/SimpleTextDialog-pwN8oRy1.js.map +0 -1
  444. package/dist/SparklineWidget-60jVlbHA.cjs +0 -2
  445. package/dist/TargetsTab-BkBkXn9A.js +0 -129
  446. package/dist/TargetsTab-BkBkXn9A.js.map +0 -1
  447. package/dist/TargetsTab-C-m26Eqq.cjs +0 -2
  448. package/dist/TargetsTab-C-m26Eqq.cjs.map +0 -1
  449. package/dist/TextBoxDialog-DOJ5d2RM.js +0 -110
  450. package/dist/TextBoxDialog-DOJ5d2RM.js.map +0 -1
  451. package/dist/TextBoxDialog-DfMXg_5C.cjs +0 -2
  452. package/dist/TextBoxDialog-DfMXg_5C.cjs.map +0 -1
  453. package/dist/TextboxWidget-BDG4NxRw.cjs +0 -2
  454. package/dist/ToolsTab-NveeVXz2.js +0 -1521
  455. package/dist/ToolsTab-RMTst_Sy.cjs +0 -7
  456. package/dist/TopBar-CnJNNJlV.js.map +0 -1
  457. package/dist/TopBar-Cnmb6DyC.cjs +0 -2
  458. package/dist/TopBar-Cnmb6DyC.cjs.map +0 -1
  459. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js +0 -94
  460. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js.map +0 -1
  461. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs +0 -2
  462. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs.map +0 -1
  463. package/dist/ValueWidget-C6RanBj3.js.map +0 -1
  464. package/dist/ValueWidget-Cu7hgKja.cjs +0 -2
  465. package/dist/ValueWidget-Cu7hgKja.cjs.map +0 -1
  466. package/dist/Widget-ChoIB2dd.cjs +0 -2
  467. package/dist/Widget-ChoIB2dd.cjs.map +0 -1
  468. package/dist/Widget-oyqWpFXJ.js.map +0 -1
  469. package/dist/WidgetComponents-C1lSLZ0I.js.map +0 -1
  470. package/dist/WidgetComponents-utpQ592X.cjs +0 -1493
  471. package/dist/WidgetComponents-utpQ592X.cjs.map +0 -1
  472. package/dist/index-BX05anye.cjs +0 -7
  473. package/dist/index-BX05anye.cjs.map +0 -1
  474. package/dist/index-DwP8ryNM.js.map +0 -1
  475. package/dist/timeFilters-8SaYvcH0.cjs +0 -2
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs"),e=require("vue"),y=require("./CustomIcon-Bop2mEnu.cjs");require("single-spa");const N=require("./SimpleTextDialog-CSsm9IoB.cjs"),P=require("./tools/admin.cjs"),C=require("./format-B22VpiOS.cjs"),D={components:{DownloadDialog:P.DownloadDialog,SimpleTextDialog:N.SimpleTextDialog},data(){return{showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",files:[],loadingPackage:!1,progress:0,gems:[],python:[],processes:{}}},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(n){this.processOutput=n.output,this.showProcessOutput=!0},update(){d.li.get("/openc3-api/packages").then(n=>{this.gems=n.data.ruby,this.python=n.data.python})},updateProcesses:function(){d.li.get("/openc3-api/process_status/package_?substr=true").then(n=>{this.processes=n.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},2500)})},formatDate(n){return C.format(C.toDate(parseInt(n)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},selectFile(){this.progress=0,this.$refs.fileInput.click()},fileChange(n){const t=n.target.files;if(t.length>0){this.loadingPackage=!0;let g=this;const h=[...t].map(l=>{const a=new FormData;return a.append("package",l,l.name),d.li.post("/openc3-api/packages",{data:a,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(r){let s=Math.round(r.loaded*100/r.total);g.progress=s}})});Promise.all(h).then(l=>{this.$notify.normal({body:`Uploaded ${l.length} package${l.length>1?"s":""}`}),this.loadingPackage=!1,this.files=[],setTimeout(()=>{this.updateProcesses()},2500)}).catch(l=>{this.loadingPackage=!1})}},deletePackage(n){this.$dialog.confirm(`Are you sure you want to remove: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>d.li.delete(`/openc3-api/packages/${n}`)).then(t=>{this.$notify.normal({body:`Removed package ${n}`}),setTimeout(()=>{this.updateProcesses()},2500)}).catch(t=>{this.$notify.serious({body:`Failed to remove package ${n}`})})}}},b=["textContent"],T=["textContent"];function B(n,t,g,h,l,a){const r=e.resolveComponent("v-btn"),s=e.resolveComponent("v-col"),x=e.resolveComponent("rux-progress"),c=e.resolveComponent("v-row"),u=e.resolveComponent("v-list-item-title"),v=e.resolveComponent("v-list-item-subtitle"),k=e.resolveComponent("v-tooltip"),p=e.resolveComponent("v-list-item"),m=e.resolveComponent("v-divider"),_=e.resolveComponent("v-list"),w=e.resolveComponent("download-dialog"),V=e.resolveComponent("simple-text-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(c,{"no-gutters":"",align:"center",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(s,{class:"pa-2 mt-2"},{default:e.withCtx(()=>[e.createVNode(r,{onClick:a.selectFile},{default:e.withCtx(()=>t[3]||(t[3]=[e.createTextVNode("Install Package")])),_:1},8,["onClick"]),e.createElementVNode("input",{ref:"fileInput",style:{display:"none"},type:"file",onChange:t[0]||(t[0]=(...o)=>a.fileChange&&a.fileChange(...o))},null,544)]),_:1}),e.createVNode(s,{class:"ml-4 mr-2",cols:"4"},{default:e.withCtx(()=>[e.createVNode(x,{value:l.progress},null,8,["value"])]),_:1})]),_:1}),Object.keys(l.processes).length>0?(e.openBlock(),e.createBlock(_,{key:0,class:"list","data-test":"process-list"},{default:e.withCtx(()=>[e.createVNode(c,{"no-gutters":"",class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>t[4]||(t[4]=[e.createTextVNode("Process List")])),_:1}),e.createVNode(s,{align:"right"},{default:e.withCtx(()=>t[5]||(t[5]=[e.createElementVNode("div",null,"Showing last 10 min of activity",-1)])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.processes,o=>(e.openBlock(),e.createElementBlock("div",{key:o.name},[e.createVNode(p,null,e.createSlots({default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(o.state.toLowerCase()),textContent:e.toDisplayString(`Processing ${o.process_type}: ${o.detail} - ${o.state}`)},null,10,b)]),_:2},1024),e.createVNode(v,null,{default:e.withCtx(()=>[e.createElementVNode("span",{textContent:e.toDisplayString(" Updated At: "+a.formatDate(o.updated_at))},null,8,T)]),_:2},1024)]),_:2},[o.state!=="Running"?{name:"append",fn:e.withCtx(()=>[e.createVNode(k,{"open-delay":600,location:"top"},{activator:e.withCtx(({props:i})=>[e.createVNode(r,e.mergeProps({ref_for:!0},i,{icon:"mdi-eye",variant:"text","aria-label":"Show Output",onClick:f=>a.showOutput(o)}),null,16,["onClick"])]),default:e.withCtx(()=>[t[6]||(t[6]=e.createElementVNode("span",null,"Show Output",-1))]),_:2},1024)]),key:"0"}:void 0]),1024),e.createVNode(m)]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(_,{class:"list","data-test":"packageList"},{default:e.withCtx(()=>[e.createVNode(c,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode("Ruby Gems")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.gems,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(p,null,{append:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-delete",variant:"text","aria-label":"Delete Ruby Gem",onClick:f=>a.deletePackage(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(m)]))),128)),e.createVNode(c,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>t[8]||(t[8]=[e.createTextVNode("Python Packages")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.python,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(p,null,{append:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-delete",variant:"text","aria-label":"Delete Python Package",onClick:f=>a.deletePackage(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(m)]))),128))]),_:1}),e.createVNode(w,{modelValue:l.showDownloadDialog,"onUpdate:modelValue":t[1]||(t[1]=o=>l.showDownloadDialog=o)},null,8,["modelValue"]),e.createVNode(V,{modelValue:l.showProcessOutput,"onUpdate:modelValue":t[2]||(t[2]=o=>l.showProcessOutput=o),title:"Process Output",text:l.processOutput},null,8,["modelValue","text"])])}const S=y._export_sfc(D,[["render",B],["__scopeId","data-v-e97741ba"]]);exports.default=S;
2
+ //# sourceMappingURL=PackagesTab-BxP1kiSR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackagesTab-BxP1kiSR.cjs","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-if=\"process.state !== 'Running'\" #append>\n <v-tooltip :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Ruby Gem\"\n @click=\"deletePackage(gem)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Python Package\"\n @click=\"deletePackage(pkg)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n // process_manager.rb script operates on a 5 second cycle\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 2500)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.$notify.normal({\n body: `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`,\n })\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage(pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.$notify.normal({\n body: `Removed package ${pkg}`,\n })\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n // Error will probably never happen because we spawn the package removal\n // and then wait for the response which happens in the background\n .catch((error) => {\n this.$notify.serious({\n body: `Failed to remove package ${pkg}`,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_hoisted_1","_hoisted_2","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_rux_progress","$data","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_toDisplayString","_component_v_list_item_subtitle","_component_v_tooltip","props","_mergeProps","$event","_component_v_divider","_createCommentVNode","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"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"}
@@ -0,0 +1,313 @@
1
+ import { l as g } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BOiUmW4q.js";
2
+ import { resolveComponent as n, createElementBlock as p, openBlock as u, createVNode as e, createBlock as I, createCommentVNode as U, withCtx as t, createElementVNode as f, createTextVNode as c, Fragment as x, renderList as P, createSlots as L, toDisplayString as h, normalizeClass as N, mergeProps as R } from "vue";
3
+ import { _ as $ } from "./CustomIcon-h5X7369N.js";
4
+ import "single-spa";
5
+ import { S as B } from "./SimpleTextDialog-plHG7LGh.js";
6
+ import { DownloadDialog as M } from "./tools/admin.js";
7
+ import { f as j, t as A } from "./format-CVeawcIv.js";
8
+ const G = {
9
+ components: {
10
+ DownloadDialog: M,
11
+ SimpleTextDialog: B
12
+ },
13
+ data() {
14
+ return {
15
+ showDownloadDialog: !1,
16
+ showProcessOutput: !1,
17
+ processOutput: "",
18
+ files: [],
19
+ loadingPackage: !1,
20
+ progress: 0,
21
+ gems: [],
22
+ python: [],
23
+ processes: {}
24
+ };
25
+ },
26
+ mounted() {
27
+ this.update(), this.updateProcesses();
28
+ },
29
+ methods: {
30
+ showOutput: function(a) {
31
+ this.processOutput = a.output, this.showProcessOutput = !0;
32
+ },
33
+ update() {
34
+ g.get("/openc3-api/packages").then((a) => {
35
+ this.gems = a.data.ruby, this.python = a.data.python;
36
+ });
37
+ },
38
+ updateProcesses: function() {
39
+ g.get("/openc3-api/process_status/package_?substr=true").then(
40
+ (a) => {
41
+ this.processes = a.data, Object.keys(this.processes).length > 0 && setTimeout(() => {
42
+ this.updateProcesses(), this.update();
43
+ }, 2500);
44
+ }
45
+ );
46
+ },
47
+ formatDate(a) {
48
+ return j(
49
+ A(parseInt(a) / 1e6),
50
+ "yyyy-MM-dd HH:mm:ss.SSS"
51
+ );
52
+ },
53
+ selectFile() {
54
+ this.progress = 0, this.$refs.fileInput.click();
55
+ },
56
+ fileChange(a) {
57
+ const o = a.target.files;
58
+ if (o.length > 0) {
59
+ this.loadingPackage = !0;
60
+ let w = this;
61
+ const C = [...o].map((s) => {
62
+ const i = new FormData();
63
+ return i.append("package", s, s.name), g.post("/openc3-api/packages", {
64
+ data: i,
65
+ headers: { "Content-Type": "multipart/form-data" },
66
+ onUploadProgress: function(d) {
67
+ let r = Math.round(
68
+ d.loaded * 100 / d.total
69
+ );
70
+ w.progress = r;
71
+ }
72
+ });
73
+ });
74
+ Promise.all(C).then((s) => {
75
+ this.$notify.normal({
76
+ body: `Uploaded ${s.length} package${s.length > 1 ? "s" : ""}`
77
+ }), this.loadingPackage = !1, this.files = [], setTimeout(() => {
78
+ this.updateProcesses();
79
+ }, 2500);
80
+ }).catch((s) => {
81
+ this.loadingPackage = !1;
82
+ });
83
+ }
84
+ },
85
+ deletePackage(a) {
86
+ this.$dialog.confirm(`Are you sure you want to remove: ${a}`, {
87
+ okText: "Delete",
88
+ cancelText: "Cancel"
89
+ }).then((o) => g.delete(`/openc3-api/packages/${a}`)).then((o) => {
90
+ this.$notify.normal({
91
+ body: `Removed package ${a}`
92
+ }), setTimeout(() => {
93
+ this.updateProcesses();
94
+ }, 2500);
95
+ }).catch((o) => {
96
+ this.$notify.serious({
97
+ body: `Failed to remove package ${a}`
98
+ });
99
+ });
100
+ }
101
+ }
102
+ }, H = ["textContent"], z = ["textContent"];
103
+ function E(a, o, w, C, s, i) {
104
+ const d = n("v-btn"), r = n("v-col"), O = n("rux-progress"), _ = n("v-row"), v = n("v-list-item-title"), S = n("v-list-item-subtitle"), V = n("v-tooltip"), y = n("v-list-item"), k = n("v-divider"), b = n("v-list"), T = n("download-dialog"), F = n("simple-text-dialog");
105
+ return u(), p("div", null, [
106
+ e(_, {
107
+ "no-gutters": "",
108
+ align: "center",
109
+ class: "px-2"
110
+ }, {
111
+ default: t(() => [
112
+ e(r, { class: "pa-2 mt-2" }, {
113
+ default: t(() => [
114
+ e(d, { onClick: i.selectFile }, {
115
+ default: t(() => o[3] || (o[3] = [
116
+ c("Install Package")
117
+ ])),
118
+ _: 1
119
+ }, 8, ["onClick"]),
120
+ f("input", {
121
+ ref: "fileInput",
122
+ style: { display: "none" },
123
+ type: "file",
124
+ onChange: o[0] || (o[0] = (...l) => i.fileChange && i.fileChange(...l))
125
+ }, null, 544)
126
+ ]),
127
+ _: 1
128
+ }),
129
+ e(r, {
130
+ class: "ml-4 mr-2",
131
+ cols: "4"
132
+ }, {
133
+ default: t(() => [
134
+ e(O, { value: s.progress }, null, 8, ["value"])
135
+ ]),
136
+ _: 1
137
+ })
138
+ ]),
139
+ _: 1
140
+ }),
141
+ Object.keys(s.processes).length > 0 ? (u(), I(b, {
142
+ key: 0,
143
+ class: "list",
144
+ "data-test": "process-list"
145
+ }, {
146
+ default: t(() => [
147
+ e(_, {
148
+ "no-gutters": "",
149
+ class: "px-4"
150
+ }, {
151
+ default: t(() => [
152
+ e(r, { class: "text-h6" }, {
153
+ default: t(() => o[4] || (o[4] = [
154
+ c("Process List")
155
+ ])),
156
+ _: 1
157
+ }),
158
+ e(r, { align: "right" }, {
159
+ default: t(() => o[5] || (o[5] = [
160
+ f("div", null, "Showing last 10 min of activity", -1)
161
+ ])),
162
+ _: 1
163
+ })
164
+ ]),
165
+ _: 1
166
+ }),
167
+ (u(!0), p(x, null, P(s.processes, (l) => (u(), p("div", {
168
+ key: l.name
169
+ }, [
170
+ e(y, null, L({
171
+ default: t(() => [
172
+ e(v, null, {
173
+ default: t(() => [
174
+ f("span", {
175
+ class: N(l.state.toLowerCase()),
176
+ textContent: h(
177
+ `Processing ${l.process_type}: ${l.detail} - ${l.state}`
178
+ )
179
+ }, null, 10, H)
180
+ ]),
181
+ _: 2
182
+ }, 1024),
183
+ e(S, null, {
184
+ default: t(() => [
185
+ f("span", {
186
+ textContent: h(" Updated At: " + i.formatDate(l.updated_at))
187
+ }, null, 8, z)
188
+ ]),
189
+ _: 2
190
+ }, 1024)
191
+ ]),
192
+ _: 2
193
+ }, [
194
+ l.state !== "Running" ? {
195
+ name: "append",
196
+ fn: t(() => [
197
+ e(V, {
198
+ "open-delay": 600,
199
+ location: "top"
200
+ }, {
201
+ activator: t(({ props: m }) => [
202
+ e(d, R({ ref_for: !0 }, m, {
203
+ icon: "mdi-eye",
204
+ variant: "text",
205
+ "aria-label": "Show Output",
206
+ onClick: (D) => i.showOutput(l)
207
+ }), null, 16, ["onClick"])
208
+ ]),
209
+ default: t(() => [
210
+ o[6] || (o[6] = f("span", null, "Show Output", -1))
211
+ ]),
212
+ _: 2
213
+ }, 1024)
214
+ ]),
215
+ key: "0"
216
+ } : void 0
217
+ ]), 1024),
218
+ e(k)
219
+ ]))), 128))
220
+ ]),
221
+ _: 1
222
+ })) : U("", !0),
223
+ e(b, {
224
+ class: "list",
225
+ "data-test": "packageList"
226
+ }, {
227
+ default: t(() => [
228
+ e(_, { class: "px-4" }, {
229
+ default: t(() => [
230
+ e(r, { class: "text-h6" }, {
231
+ default: t(() => o[7] || (o[7] = [
232
+ c("Ruby Gems")
233
+ ])),
234
+ _: 1
235
+ })
236
+ ]),
237
+ _: 1
238
+ }),
239
+ (u(!0), p(x, null, P(s.gems, (l, m) => (u(), p("div", { key: m }, [
240
+ e(y, null, {
241
+ append: t(() => [
242
+ e(d, {
243
+ icon: "mdi-delete",
244
+ variant: "text",
245
+ "aria-label": "Delete Ruby Gem",
246
+ onClick: (D) => i.deletePackage(l)
247
+ }, null, 8, ["onClick"])
248
+ ]),
249
+ default: t(() => [
250
+ e(v, null, {
251
+ default: t(() => [
252
+ c(h(l), 1)
253
+ ]),
254
+ _: 2
255
+ }, 1024)
256
+ ]),
257
+ _: 2
258
+ }, 1024),
259
+ e(k)
260
+ ]))), 128)),
261
+ e(_, { class: "px-4" }, {
262
+ default: t(() => [
263
+ e(r, { class: "text-h6" }, {
264
+ default: t(() => o[8] || (o[8] = [
265
+ c("Python Packages")
266
+ ])),
267
+ _: 1
268
+ })
269
+ ]),
270
+ _: 1
271
+ }),
272
+ (u(!0), p(x, null, P(s.python, (l, m) => (u(), p("div", { key: m }, [
273
+ e(y, null, {
274
+ append: t(() => [
275
+ e(d, {
276
+ icon: "mdi-delete",
277
+ variant: "text",
278
+ "aria-label": "Delete Python Package",
279
+ onClick: (D) => i.deletePackage(l)
280
+ }, null, 8, ["onClick"])
281
+ ]),
282
+ default: t(() => [
283
+ e(v, null, {
284
+ default: t(() => [
285
+ c(h(l), 1)
286
+ ]),
287
+ _: 2
288
+ }, 1024)
289
+ ]),
290
+ _: 2
291
+ }, 1024),
292
+ e(k)
293
+ ]))), 128))
294
+ ]),
295
+ _: 1
296
+ }),
297
+ e(T, {
298
+ modelValue: s.showDownloadDialog,
299
+ "onUpdate:modelValue": o[1] || (o[1] = (l) => s.showDownloadDialog = l)
300
+ }, null, 8, ["modelValue"]),
301
+ e(F, {
302
+ modelValue: s.showProcessOutput,
303
+ "onUpdate:modelValue": o[2] || (o[2] = (l) => s.showProcessOutput = l),
304
+ title: "Process Output",
305
+ text: s.processOutput
306
+ }, null, 8, ["modelValue", "text"])
307
+ ]);
308
+ }
309
+ const Z = /* @__PURE__ */ $(G, [["render", E], ["__scopeId", "data-v-e97741ba"]]);
310
+ export {
311
+ Z as default
312
+ };
313
+ //# sourceMappingURL=PackagesTab-DhMk-fi5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackagesTab-DhMk-fi5.js","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-if=\"process.state !== 'Running'\" #append>\n <v-tooltip :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Ruby Gem\"\n @click=\"deletePackage(gem)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Python Package\"\n @click=\"deletePackage(pkg)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n // process_manager.rb script operates on a 5 second cycle\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 2500)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.$notify.normal({\n body: `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`,\n })\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage(pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.$notify.normal({\n body: `Removed package ${pkg}`,\n })\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n // Error will probably never happen because we spawn the package removal\n // and then wait for the response which happens in the background\n .catch((error) => {\n this.$notify.serious({\n body: `Failed to remove package ${pkg}`,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_hoisted_1","_hoisted_2","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_rux_progress","$data","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_toDisplayString","_component_v_list_item_subtitle","_component_v_tooltip","props","_mergeProps","$event","_component_v_divider","_createCommentVNode","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs"),e=require("vue"),S=require("./CustomIcon-Bop2mEnu.cjs");require("single-spa");const E=require("./SimpleTextDialog-CSsm9IoB.cjs"),k=require("./tools/admin.cjs"),P=require("./format-B22VpiOS.cjs"),O={components:{PluginDialog:k.PluginDialog,ModifiedPluginDialog:k.ModifiedPluginDialog,SimpleTextDialog:E.SimpleTextDialog},data(){return{file:null,currentPlugin:null,plugins:[],targets:[],processes:{},alert:"",alertType:"success",showAlert:!1,pluginName:null,variables:{},pluginTxt:"",pluginHashTmp:null,existingPluginTxt:null,showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",showPluginDialog:!1,showModifiedPluginDialog:!1,showDefaultTools:!1,progress:0,pluginDelete:!1,defaultPlugins:["openc3-cosmos-tool-admin","openc3-cosmos-tool-bucketexplorer","openc3-cosmos-tool-cmdsender","openc3-cosmos-tool-cmdhistory","openc3-cosmos-tool-cmdtlmserver","openc3-cosmos-tool-dataextractor","openc3-cosmos-tool-dataviewer","openc3-cosmos-tool-docs","openc3-cosmos-tool-handbooks","openc3-cosmos-tool-iframe","openc3-cosmos-tool-limitsmonitor","openc3-cosmos-tool-packetviewer","openc3-cosmos-tool-scriptrunner","openc3-cosmos-tool-tablemanager","openc3-cosmos-tool-tlmgrapher","openc3-cosmos-tool-tlmviewer","openc3-cosmos-enterprise-tool-admin","openc3-cosmos-tool-autonomic","openc3-cosmos-tool-calendar","openc3-cosmos-tool-grafana","openc3-enterprise-tool-base","openc3-tool-base"]}},computed:{shownPlugins(){let l=[];for(let t of this.plugins){let r=t.split("__")[0].split("-");r=r.slice(0,-1);let o=r.join("-");(!this.defaultPlugins.includes(o)||this.showDefaultTools)&&l.push(t)}return l},pluginTargets(){return l=>{let t=[];for(const a in this.targets)this.targets[a].plugin===l&&t.push(this.targets[a]);return t}},isModified(){return l=>{let t=!1;for(const a in this.targets)if(this.targets[a].plugin===l&&this.targets[a].modified===!0){t=!0;break}return t}}},watch:{showPluginDialog:function(l,t){l===!1&&(this.file=null,this.$refs.fileInput.value=null)}},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(l){this.processOutput=l.output,this.showProcessOutput=!0},update:function(){c.li.get("/openc3-api/plugins").then(l=>{this.plugins=l.data}),c.li.get("/openc3-api/targets_modified").then(l=>{this.targets=l.data})},updateProcesses:function(){c.li.get("openc3-api/process_status/plugin_?substr=true").then(l=>{this.processes=l.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},5e3)})},formatDate(l){return P.format(P.toDate(parseInt(l)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},upload:function(l=null){const t=l?"put":"post",a=l?`/openc3-api/plugins/${l}`:"/openc3-api/plugins",r=new FormData;r.append("plugin",this.file,this.file.name);let o=this;c.li[t](a,{data:r,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(i){let p=Math.round(i.loaded*100/i.total);o.progress=p}}).then(i=>{this.progress=100,this.alert="Uploaded file",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update();let p=null;i.data.existing_plugin_txt_lines!==void 0&&(p=i.data.existing_plugin_txt_lines.join(`
2
+ `));let d=i.data.plugin_txt_lines.join(`
3
+ `);this.pluginName=i.data.name,this.variables=i.data.variables,this.pluginTxt=d,this.existingPluginTxt=p,this.showPluginDialog=!0,this.file=void 0}).catch(i=>{this.currentPlugin=null,this.file=void 0})},pluginCallback:function(l){this.showPluginDialog=!1,this.currentPlugin!==null&&(l.name=this.currentPlugin),this.pluginHashTmp=l,this.isModified(this.currentPlugin)?(this.pluginDelete=!1,this.showModifiedPluginDialog=!0):this.pluginInstall()},modifiedSubmit:async function(l){if(l===!0)for(let t of this.pluginTargets(this.currentPlugin))t.modified==!0&&await c.li.post(`/openc3-api/targets/${t.name}/delete_modified`);this.pluginDelete?this.deletePlugin(this.currentPlugin):this.pluginInstall()},pluginInstall:function(){c.li.post(`/openc3-api/plugins/install/${this.pluginName}`,{data:{plugin_hash:JSON.stringify(this.pluginHashTmp)}}).then(l=>{this.alert=`Started installing plugin ${this.pluginName} ...`,this.alertType="success",this.showAlert=!0,this.currentPlugin=null,this.file=void 0,this.variables={},this.pluginTxt="",this.existingPluginTxt=null,setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3),this.update()})},downloadTarget:function(l){c.li.post(`/openc3-api/targets/${l}/download`).then(t=>{const a=window.atob(t.data.contents),r=new Uint8Array(a.length);for(let i=0;i<a.length;++i)r[i]=a.charCodeAt(i);const o=new Blob([r],{type:"application/zip"}),n=document.createElement("a");n.href=URL.createObjectURL(o),n.setAttribute("download",t.data.filename),n.click()})},downloadPlugin:function(l){c.li.post(`/openc3-api/packages/${l}/download`).then(t=>{const a=window.atob(t.data.contents),r=new Uint8Array(a.length);for(let i=0;i<a.length;++i)r[i]=a.charCodeAt(i);const o=new Blob([r],{type:"application/zip"}),n=document.createElement("a");n.href=URL.createObjectURL(o),n.setAttribute("download",t.data.filename),n.click()})},editPlugin:function(l){c.li.get(`/openc3-api/plugins/${l}`).then(t=>{let a=null;t.data.existing_plugin_txt_lines!==void 0&&(a=t.data.existing_plugin_txt_lines.join(`
4
+ `));let r=t.data.plugin_txt_lines.join(`
5
+ `);this.pluginName=t.data.name,this.variables=t.data.variables,this.pluginTxt=r,this.existingPluginTxt=a,this.showPluginDialog=!0})},deletePrompt:function(l){this.$dialog.confirm(`Are you sure you want to remove: ${l}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{this.isModified(l)?(this.currentPlugin=l,this.pluginDelete=!0,this.showModifiedPluginDialog=!0):this.deletePlugin(l)})},deletePlugin:function(l){this.alert=`Removing plugin ${l} ...`,this.alertType="success",this.showAlert=!0,c.li.delete(`/openc3-api/plugins/${l}`).then(t=>{setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3)}),this.update()},upgradePlugin(l){this.file=null,this.currentPlugin=l,this.progress=0,this.$refs.fileInput.click()},selectFile(){this.file=null,this.currentPlugin=null,this.progress=0,this.$refs.fileInput.click()},fileChange(l){const t=l.target.files;if(t.length>0)if(this.file=t[0],this.currentPlugin!==null)if(this.file.name.split(".gem")[0]==this.currentPlugin.split(".gem")[0])this.$dialog.confirm(`The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}).catch(a=>{});else{let a=this.file.name.split("-"),r=a.findIndex(i=>i.includes(".")),o=a.slice(0,r).join("-");a=this.currentPlugin.split("-"),r=a.findIndex(i=>i.includes("."));let n=a.slice(0,r).join("-");o!==n?this.$dialog.confirm(`The new gem base name ${o} doesn't match the existing ${n}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}):this.upload(this.currentPlugin)}else this.upload();else this.$refs.fileInput.value=null}}},A=["textContent"],I=["textContent"],U={key:0},M=["onClick"],j={key:1};function L(l,t,a,r,o,n){const i=e.resolveComponent("v-btn"),p=e.resolveComponent("v-icon"),d=e.resolveComponent("v-col"),V=e.resolveComponent("rux-progress"),m=e.resolveComponent("v-row"),N=e.resolveComponent("v-checkbox"),h=e.resolveComponent("v-divider"),T=e.resolveComponent("v-alert"),f=e.resolveComponent("v-list-item-title"),x=e.resolveComponent("v-list-item-subtitle"),y=e.resolveComponent("v-progress-circular"),_=e.resolveComponent("v-tooltip"),w=e.resolveComponent("v-list-item"),v=e.resolveComponent("v-list"),b=e.resolveComponent("plugin-dialog"),D=e.resolveComponent("modified-plugin-dialog"),B=e.resolveComponent("simple-text-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(m,{"no-gutters":"",align:"center",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(d,{class:"pa-2 mt-2"},{default:e.withCtx(()=>[e.createVNode(i,{onClick:n.selectFile},{default:e.withCtx(()=>t[6]||(t[6]=[e.createTextVNode("Install New Plugin")])),_:1},8,["onClick"]),e.createElementVNode("input",{ref:"fileInput",style:{display:"none"},type:"file",onChange:t[0]||(t[0]=(...s)=>n.fileChange&&n.fileChange(...s))},null,544),t[8]||(t[8]=e.createTextVNode("  Note: Use ")),e.createVNode(p,null,{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode("mdi-update")])),_:1}),t[9]||(t[9]=e.createTextVNode(" to upgrade existing plugins "))]),_:1}),e.createVNode(d,{class:"ml-4 mr-2",cols:"4"},{default:e.withCtx(()=>[e.createVNode(V,{value:o.progress},null,8,["value"])]),_:1})]),_:1}),e.createVNode(m,{"no-gutters":"",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[e.createVNode(N,{modelValue:o.showDefaultTools,"onUpdate:modelValue":t[1]||(t[1]=s=>o.showDefaultTools=s),label:"Show Default Tools",class:"mt-0","data-test":"show-default-tools"},null,8,["modelValue"])]),_:1}),e.createVNode(d,{align:"right",class:"mr-2"},{default:e.withCtx(()=>t[10]||(t[10]=[e.createElementVNode("div",null,"* indicates a modified plugin",-1),e.createElementVNode("div",null,"Click target link to download modifications",-1)])),_:1})]),_:1}),e.createVNode(h),e.createVNode(T,{modelValue:o.showAlert,"onUpdate:modelValue":t[2]||(t[2]=s=>o.showAlert=s),closable:"",type:o.alertType,"data-test":"plugin-alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.alert),1)]),_:1},8,["modelValue","type"]),Object.keys(o.processes).length>0?(e.openBlock(),e.createBlock(v,{key:0,class:"list","data-test":"process-list"},{default:e.withCtx(()=>[e.createVNode(m,{"no-gutters":"",class:"px-4"},{default:e.withCtx(()=>[e.createVNode(d,{class:"text-h6"},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode("Process List")])),_:1}),e.createVNode(d,{align:"right"},{default:e.withCtx(()=>t[12]||(t[12]=[e.createElementVNode("div",null,"Showing last 10 min of activity",-1)])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.processes,s=>(e.openBlock(),e.createElementBlock("div",{key:s.name},[e.createVNode(w,null,{append:e.withCtx(()=>[s.state==="Running"?(e.openBlock(),e.createBlock(y,{key:0,indeterminate:"",color:"primary"})):(e.openBlock(),e.createBlock(_,{key:1,"open-delay":600,location:"top"},{activator:e.withCtx(({props:g})=>[e.createVNode(i,e.mergeProps({ref_for:!0},g,{icon:"mdi-eye",variant:"text","aria-label":"Show Output","data-test":"show-output",onClick:u=>n.showOutput(s)}),null,16,["onClick"])]),default:e.withCtx(()=>[t[13]||(t[13]=e.createElementVNode("span",null,"Show Output",-1))]),_:2},1024))]),default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(s.state.toLowerCase()),textContent:e.toDisplayString(`Processing ${s.process_type}: ${s.detail} - ${s.state}`)},null,10,A)]),_:2},1024),e.createVNode(x,null,{default:e.withCtx(()=>[e.createElementVNode("span",{textContent:e.toDisplayString(" Updated At: "+n.formatDate(s.updated_at))},null,8,I)]),_:2},1024)]),_:2},1024),e.createVNode(h)]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(v,{class:"list","data-test":"plugin-list"},{default:e.withCtx(()=>[e.createVNode(m,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(d,{class:"text-h6"},{default:e.withCtx(()=>t[14]||(t[14]=[e.createTextVNode("Plugin List")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.shownPlugins,(s,g)=>(e.openBlock(),e.createElementBlock("div",{key:g},[e.createVNode(w,{"data-test":"plugin-list-item"},{append:e.withCtx(()=>[e.createVNode(i,{icon:"mdi-download",variant:"text","aria-label":"Download Plugin","data-test":"download-plugin",onClick:u=>n.downloadPlugin(s)},null,8,["onClick"]),e.createVNode(i,{icon:"mdi-pencil",variant:"text","aria-label":"Edit Plugin","data-test":"edit-plugin",onClick:u=>n.editPlugin(s)},null,8,["onClick"]),e.createVNode(_,{"open-delay":600,location:"top"},{activator:e.withCtx(({props:u})=>[e.createVNode(i,e.mergeProps({ref_for:!0},u,{icon:"mdi-update",variant:"text","aria-label":"Upgrade Plugin","data-test":"upgrade-plugin",onClick:C=>n.upgradePlugin(s)}),null,16,["onClick"])]),default:e.withCtx(()=>[t[15]||(t[15]=e.createElementVNode("span",null,"Upgrade Plugin",-1))]),_:2},1024),e.createVNode(i,{icon:"mdi-delete",variant:"text","aria-label":"Delete Plugin","data-test":"delete-plugin",onClick:u=>n.deletePrompt(s)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[n.isModified(s)?(e.openBlock(),e.createElementBlock("span",U,"* ")):e.createCommentVNode("",!0),e.createTextVNode(e.toDisplayString(s),1)]),_:2},1024),n.pluginTargets(s).length!==0?(e.openBlock(),e.createBlock(x,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.pluginTargets(s),(u,C)=>(e.openBlock(),e.createElementBlock("span",{key:C,class:"mr-2"},[u.modified?(e.openBlock(),e.createElementBlock("a",{key:0,onClick:e.withModifiers(q=>n.downloadTarget(u.name),["prevent"])},e.toDisplayString(u.name),9,M)):(e.openBlock(),e.createElementBlock("span",j,e.toDisplayString(u.name),1))]))),128))]),_:2},1024)):e.createCommentVNode("",!0)]),_:2},1024),g<o.plugins.length-1?(e.openBlock(),e.createBlock(h,{key:g})):e.createCommentVNode("",!0)]))),128))]),_:1}),o.showPluginDialog?(e.openBlock(),e.createBlock(b,{key:1,modelValue:o.showPluginDialog,"onUpdate:modelValue":t[3]||(t[3]=s=>o.showPluginDialog=s),"plugin-name":o.pluginName,variables:o.variables,"plugin-txt":o.pluginTxt,"existing-plugin-txt":o.existingPluginTxt,onCallback:n.pluginCallback},null,8,["modelValue","plugin-name","variables","plugin-txt","existing-plugin-txt","onCallback"])):e.createCommentVNode("",!0),o.showModifiedPluginDialog?(e.openBlock(),e.createBlock(D,{key:2,modelValue:o.showModifiedPluginDialog,"onUpdate:modelValue":t[4]||(t[4]=s=>o.showModifiedPluginDialog=s),"plugin-name":o.currentPlugin,targets:n.pluginTargets(o.currentPlugin),"plugin-delete":o.pluginDelete,onSubmit:n.modifiedSubmit},null,8,["modelValue","plugin-name","targets","plugin-delete","onSubmit"])):e.createCommentVNode("",!0),e.createVNode(B,{modelValue:o.showProcessOutput,"onUpdate:modelValue":t[5]||(t[5]=s=>o.showProcessOutput=s),title:"Process Output",text:o.processOutput},null,8,["modelValue","text"])])}const F=S._export_sfc(O,[["render",L],["__scopeId","data-v-205c6e8a"]]);exports.default=F;
6
+ //# sourceMappingURL=PluginsTab-BKJo5vK-.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginsTab-BKJo5vK-.cjs","sources":["../src/tools/admin/tabs/PluginsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install New Plugin</v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n &nbsp;Note: Use <v-icon>mdi-update</v-icon> to upgrade existing plugins\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-row no-gutters class=\"px-2\">\n <v-col>\n <v-checkbox\n v-model=\"showDefaultTools\"\n label=\"Show Default Tools\"\n class=\"mt-0\"\n data-test=\"show-default-tools\"\n />\n </v-col>\n <v-col align=\"right\" class=\"mr-2\">\n <div>* indicates a modified plugin</div>\n <div>Click target link to download modifications</div>\n </v-col>\n </v-row>\n <v-divider />\n <!-- TODO This alert shows both success and failure. Make consistent with rest of OpenC3. -->\n <v-alert\n v-model=\"showAlert\"\n closable\n :type=\"alertType\"\n data-test=\"plugin-alert\"\n >{{ alert }}</v-alert\n >\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\"\n ><v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template #append>\n <v-progress-circular\n v-if=\"process.state === 'Running'\"\n indeterminate\n color=\"primary\"\n />\n <v-tooltip v-else :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n data-test=\"show-output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"plugin-list\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Plugin List</v-col></v-row>\n <div v-for=\"(plugin, index) in shownPlugins\" :key=\"index\">\n <v-list-item data-test=\"plugin-list-item\">\n <v-list-item-title\n ><span v-if=\"isModified(plugin)\">* </span\n >{{ plugin }}</v-list-item-title\n >\n <v-list-item-subtitle v-if=\"pluginTargets(plugin).length !== 0\">\n <span\n v-for=\"(target, index) in pluginTargets(plugin)\"\n :key=\"index\"\n class=\"mr-2\"\n >\n <a\n v-if=\"target.modified\"\n @click.prevent=\"downloadTarget(target.name)\"\n >{{ target.name }}\n </a>\n <span v-else>{{ target.name }} </span>\n </span>\n </v-list-item-subtitle>\n\n <template #append>\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n aria-label=\"Download Plugin\"\n data-test=\"download-plugin\"\n @click=\"downloadPlugin(plugin)\"\n />\n <v-btn\n icon=\"mdi-pencil\"\n variant=\"text\"\n aria-label=\"Edit Plugin\"\n data-test=\"edit-plugin\"\n @click=\"editPlugin(plugin)\"\n />\n <v-tooltip :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-update\"\n variant=\"text\"\n aria-label=\"Upgrade Plugin\"\n data-test=\"upgrade-plugin\"\n @click=\"upgradePlugin(plugin)\"\n />\n </template>\n <span>Upgrade Plugin</span>\n </v-tooltip>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Plugin\"\n data-test=\"delete-plugin\"\n @click=\"deletePrompt(plugin)\"\n />\n </template>\n </v-list-item>\n <v-divider v-if=\"index < plugins.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n <plugin-dialog\n v-if=\"showPluginDialog\"\n v-model=\"showPluginDialog\"\n :plugin-name=\"pluginName\"\n :variables=\"variables\"\n :plugin-txt=\"pluginTxt\"\n :existing-plugin-txt=\"existingPluginTxt\"\n @callback=\"pluginCallback\"\n />\n <modified-plugin-dialog\n v-if=\"showModifiedPluginDialog\"\n v-model=\"showModifiedPluginDialog\"\n :plugin-name=\"currentPlugin\"\n :targets=\"pluginTargets(currentPlugin)\"\n :plugin-delete=\"pluginDelete\"\n @submit=\"modifiedSubmit\"\n />\n <!-- <download-dialog v-model=\"showDownloadDialog\" /> -->\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { ModifiedPluginDialog, PluginDialog } from '@/tools/admin'\n\nexport default {\n components: {\n PluginDialog,\n ModifiedPluginDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n file: null,\n currentPlugin: null,\n plugins: [],\n targets: [],\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n pluginName: null,\n variables: {},\n pluginTxt: '',\n pluginHashTmp: null,\n existingPluginTxt: null,\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n showPluginDialog: false,\n showModifiedPluginDialog: false,\n showDefaultTools: false,\n progress: 0,\n pluginDelete: false,\n // When updating update local_mode.rb, local_mode.py, plugins.spec.ts\n defaultPlugins: [\n 'openc3-cosmos-tool-admin',\n 'openc3-cosmos-tool-bucketexplorer',\n 'openc3-cosmos-tool-cmdsender',\n 'openc3-cosmos-tool-cmdhistory', // Enterprise only\n 'openc3-cosmos-tool-cmdtlmserver',\n 'openc3-cosmos-tool-dataextractor',\n 'openc3-cosmos-tool-dataviewer',\n 'openc3-cosmos-tool-docs',\n 'openc3-cosmos-tool-handbooks',\n 'openc3-cosmos-tool-iframe',\n 'openc3-cosmos-tool-limitsmonitor',\n 'openc3-cosmos-tool-packetviewer',\n 'openc3-cosmos-tool-scriptrunner',\n 'openc3-cosmos-tool-tablemanager',\n 'openc3-cosmos-tool-tlmgrapher',\n 'openc3-cosmos-tool-tlmviewer',\n 'openc3-cosmos-enterprise-tool-admin', // Enterprise only\n 'openc3-cosmos-tool-autonomic', // Enterprise only\n 'openc3-cosmos-tool-calendar', // Enterprise only\n 'openc3-cosmos-tool-grafana', // Enterprise only\n 'openc3-enterprise-tool-base', // Enterprise only\n 'openc3-tool-base',\n ],\n }\n },\n computed: {\n shownPlugins() {\n let result = []\n for (let plugin of this.plugins) {\n let pluginNameFirst = plugin.split('__')[0]\n let pluginNameSplit = pluginNameFirst.split('-')\n pluginNameSplit = pluginNameSplit.slice(0, -1)\n let pluginName = pluginNameSplit.join('-')\n if (\n !this.defaultPlugins.includes(pluginName) ||\n this.showDefaultTools\n ) {\n result.push(plugin)\n }\n }\n return result\n },\n pluginTargets() {\n return (plugin) => {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n }\n },\n isModified() {\n return (plugin) => {\n let result = false\n for (const target in this.targets) {\n if (\n this.targets[target]['plugin'] === plugin &&\n this.targets[target]['modified'] === true\n ) {\n result = true\n break\n }\n }\n return result\n }\n },\n },\n watch: {\n // watcher to reset the file input when the dialog is closed\n showPluginDialog: function (newValue, oldValue) {\n if (newValue === false) {\n this.file = null\n this.$refs.fileInput.value = null\n }\n },\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update: function () {\n Api.get('/openc3-api/plugins').then((response) => {\n this.plugins = response.data\n })\n Api.get('/openc3-api/targets_modified').then((response) => {\n this.targets = response.data\n })\n },\n updateProcesses: function () {\n Api.get('openc3-api/process_status/plugin_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 5000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n upload: function (existing = null) {\n const method = existing ? 'put' : 'post'\n const path = existing\n ? `/openc3-api/plugins/${existing}`\n : '/openc3-api/plugins'\n const formData = new FormData()\n formData.append('plugin', this.file, this.file.name)\n let self = this\n const promise = Api[method](path, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n promise\n .then((response) => {\n this.progress = 100\n this.alert = 'Uploaded file'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt =\n response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n this.file = undefined\n })\n .catch((error) => {\n this.currentPlugin = null\n this.file = undefined\n })\n },\n pluginCallback: function (pluginHash) {\n this.showPluginDialog = false\n if (this.currentPlugin !== null) {\n pluginHash['name'] = this.currentPlugin\n }\n this.pluginHashTmp = pluginHash\n if (this.isModified(this.currentPlugin)) {\n this.pluginDelete = false\n this.showModifiedPluginDialog = true\n } else {\n this.pluginInstall()\n }\n },\n modifiedSubmit: async function (deleteModified) {\n if (deleteModified === true) {\n for (let target of this.pluginTargets(this.currentPlugin)) {\n if (target.modified == true) {\n await Api.post(`/openc3-api/targets/${target.name}/delete_modified`)\n }\n }\n }\n if (this.pluginDelete) {\n this.deletePlugin(this.currentPlugin)\n } else {\n this.pluginInstall()\n }\n },\n pluginInstall: function () {\n Api.post(`/openc3-api/plugins/install/${this.pluginName}`, {\n data: {\n plugin_hash: JSON.stringify(this.pluginHashTmp),\n },\n }).then((response) => {\n this.alert = `Started installing plugin ${this.pluginName} ...`\n this.alertType = 'success'\n this.showAlert = true\n this.currentPlugin = null\n this.file = undefined\n this.variables = {}\n this.pluginTxt = ''\n this.existingPluginTxt = null\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n },\n downloadTarget: function (name) {\n Api.post(`/openc3-api/targets/${name}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadPlugin: function (plugin) {\n Api.post(`/openc3-api/packages/${plugin}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n editPlugin: function (plugin) {\n Api.get(`/openc3-api/plugins/${plugin}`).then((response) => {\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt = response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n })\n },\n deletePrompt: function (plugin) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${plugin}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.isModified(plugin)) {\n this.currentPlugin = plugin\n this.pluginDelete = true\n this.showModifiedPluginDialog = true\n } else {\n this.deletePlugin(plugin)\n }\n })\n },\n deletePlugin: function (plugin) {\n this.alert = `Removing plugin ${plugin} ...`\n this.alertType = 'success'\n this.showAlert = true\n Api.delete(`/openc3-api/plugins/${plugin}`).then((response) => {\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n })\n this.update()\n },\n upgradePlugin(plugin) {\n this.file = null\n this.currentPlugin = plugin\n this.progress = 0\n this.$refs.fileInput.click()\n },\n selectFile() {\n this.file = null\n this.currentPlugin = null\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.file = files[0]\n if (this.currentPlugin !== null) {\n if (\n this.file.name.split('.gem')[0] ==\n this.currentPlugin.split('.gem')[0]\n ) {\n this.$dialog\n .confirm(\n `The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n .catch((error) => {\n // do nothing\n })\n } else {\n // Split up the gem name to determine if this is an upgrade\n // or mistakenly trying to install a different gem\n // Gems are named like openc3-cosmos-demo-5.3.2.gem or\n // openc3-cosmos-pw-test-1.0.0.20230213074527.gem\n // So split on - and match everything until the first .\n let parts = this.file.name.split('-')\n let i = parts.findIndex((x) => x.includes('.'))\n let newName = parts.slice(0, i).join('-')\n parts = this.currentPlugin.split('-')\n i = parts.findIndex((x) => x.includes('.'))\n let existingName = parts.slice(0, i).join('-')\n if (newName !== existingName) {\n this.$dialog\n .confirm(\n `The new gem base name ${newName} doesn't match the existing ${existingName}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n } else {\n this.upload(this.currentPlugin)\n }\n }\n } else {\n this.upload()\n }\n } else {\n // Reset the input element\n this.$refs.fileInput.value = null\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.crashed {\n color: red;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","PluginDialog","ModifiedPluginDialog","SimpleTextDialog","result","plugin","pluginNameSplit","pluginName","target","newValue","oldValue","process","Api","response","nanoSecs","format","toDate","existing","method","path","formData","self","progressEvent","percentCompleted","existingPluginTxt","pluginTxt","error","pluginHash","deleteModified","name","decodedData","uInt8Array","blob","link","dialog","event","files","parts","i","x","newName","existingName","_hoisted_1","_hoisted_2","_hoisted_4","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_v_icon","_component_rux_progress","$data","_component_v_checkbox","$event","_component_v_divider","_component_v_alert","_toDisplayString","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_component_v_progress_circular","_component_v_tooltip","props","_mergeProps","_component_v_list_item_title","_normalizeClass","_component_v_list_item_subtitle","_createCommentVNode","index","_hoisted_3","_withModifiers","_hoisted_5","_component_plugin_dialog","_component_modified_plugin_dialog","_component_simple_text_dialog"],"mappings":"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"}