@openc3/vue-common 6.2.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/ArrayWidget-BbsN1dzF.js +106 -0
  2. package/dist/ArrayWidget-BbsN1dzF.js.map +1 -0
  3. package/dist/ArrayWidget-DkjHrXsu.cjs +3 -0
  4. package/dist/ArrayWidget-DkjHrXsu.cjs.map +1 -0
  5. package/dist/ArrayplotWidget-CCKEyYIx.js +199 -0
  6. package/dist/ArrayplotWidget-CCKEyYIx.js.map +1 -0
  7. package/dist/ArrayplotWidget-COeaK_Lz.cjs +2 -0
  8. package/dist/ArrayplotWidget-COeaK_Lz.cjs.map +1 -0
  9. package/dist/AstroStatus-CILMWL6F.cjs +2 -0
  10. package/dist/AstroStatus-CILMWL6F.cjs.map +1 -0
  11. package/dist/AstroStatus-CY9VkeTN.js +40 -0
  12. package/dist/AstroStatus-CY9VkeTN.js.map +1 -0
  13. package/dist/BarColumn-C6p07yWK.js +108 -0
  14. package/dist/BarColumn-C6p07yWK.js.map +1 -0
  15. package/dist/BarColumn-CJLW1nXy.cjs +2 -0
  16. package/dist/BarColumn-CJLW1nXy.cjs.map +1 -0
  17. package/dist/BlockWidget-BFVYgbd_.cjs +3 -0
  18. package/dist/BlockWidget-BFVYgbd_.cjs.map +1 -0
  19. package/dist/BlockWidget-DlCHbqZX.js +112 -0
  20. package/dist/BlockWidget-DlCHbqZX.js.map +1 -0
  21. package/dist/ButtonWidget-CtfJzCBR.js +166 -0
  22. package/dist/ButtonWidget-CtfJzCBR.js.map +1 -0
  23. package/dist/ButtonWidget-HN8UHsme.cjs +3 -0
  24. package/dist/ButtonWidget-HN8UHsme.cjs.map +1 -0
  25. package/dist/CanvasWidget-CHmkxxMO.cjs +2 -0
  26. package/dist/CanvasWidget-CHmkxxMO.cjs.map +1 -0
  27. package/dist/CanvasWidget-CqRlXc4r.js +39 -0
  28. package/dist/CanvasWidget-CqRlXc4r.js.map +1 -0
  29. package/dist/CanvasdotWidget--Xr_KsZs.js +19 -0
  30. package/dist/CanvasdotWidget--Xr_KsZs.js.map +1 -0
  31. package/dist/CanvasdotWidget-B4bUcKRc.cjs +2 -0
  32. package/dist/CanvasdotWidget-B4bUcKRc.cjs.map +1 -0
  33. package/dist/CanvasimageWidget-B5YozXoI.cjs +2 -0
  34. package/dist/CanvasimageWidget-B5YozXoI.cjs.map +1 -0
  35. package/dist/CanvasimageWidget-BPlj5QYK.js +58 -0
  36. package/dist/CanvasimageWidget-BPlj5QYK.js.map +1 -0
  37. package/dist/CanvasimagevalueWidget-DVFGLt8f.js +107 -0
  38. package/dist/CanvasimagevalueWidget-DVFGLt8f.js.map +1 -0
  39. package/dist/CanvasimagevalueWidget-Dx1HnbEw.cjs +2 -0
  40. package/dist/CanvasimagevalueWidget-Dx1HnbEw.cjs.map +1 -0
  41. package/dist/CanvaslabelWidget-CYNqmyP0.js +23 -0
  42. package/dist/CanvaslabelWidget-CYNqmyP0.js.map +1 -0
  43. package/dist/CanvaslabelWidget-DgadQD-D.cjs +2 -0
  44. package/dist/CanvaslabelWidget-DgadQD-D.cjs.map +1 -0
  45. package/dist/CanvaslabelvalueWidget-B7yIDmsn.js +42 -0
  46. package/dist/CanvaslabelvalueWidget-B7yIDmsn.js.map +1 -0
  47. package/dist/CanvaslabelvalueWidget-C3k5gx5c.cjs +2 -0
  48. package/dist/CanvaslabelvalueWidget-C3k5gx5c.cjs.map +1 -0
  49. package/dist/CanvaslineWidget-BICdxX0Q.js +28 -0
  50. package/dist/CanvaslineWidget-BICdxX0Q.js.map +1 -0
  51. package/dist/CanvaslineWidget-CYHkes0a.cjs +2 -0
  52. package/dist/CanvaslineWidget-CYHkes0a.cjs.map +1 -0
  53. package/dist/CanvaslinevalueWidget-5DzhZ22p.cjs +2 -0
  54. package/dist/CanvaslinevalueWidget-5DzhZ22p.cjs.map +1 -0
  55. package/dist/CanvaslinevalueWidget-Cq-Ddh0P.js +44 -0
  56. package/dist/CanvaslinevalueWidget-Cq-Ddh0P.js.map +1 -0
  57. package/dist/CheckbuttonWidget-B74AWeaW.js +37 -0
  58. package/dist/CheckbuttonWidget-B74AWeaW.js.map +1 -0
  59. package/dist/CheckbuttonWidget-BCzsXnIF.cjs +2 -0
  60. package/dist/CheckbuttonWidget-BCzsXnIF.cjs.map +1 -0
  61. package/dist/ComboboxWidget-CtyKbEWb.js +37 -0
  62. package/dist/ComboboxWidget-CtyKbEWb.js.map +1 -0
  63. package/dist/ComboboxWidget-DQgDyDAC.cjs +2 -0
  64. package/dist/ComboboxWidget-DQgDyDAC.cjs.map +1 -0
  65. package/dist/CriticalCmdDialog-BnxZlt7W.cjs +2 -0
  66. package/dist/CriticalCmdDialog-BnxZlt7W.cjs.map +1 -0
  67. package/dist/CriticalCmdDialog-DPIZOBeP.js +270 -0
  68. package/dist/CriticalCmdDialog-DPIZOBeP.js.map +1 -0
  69. package/dist/CustomIcon-Bop2mEnu.cjs +2 -0
  70. package/dist/CustomIcon-Bop2mEnu.cjs.map +1 -0
  71. package/dist/CustomIcon-h5X7369N.js +50 -0
  72. package/dist/CustomIcon-h5X7369N.js.map +1 -0
  73. package/dist/DateWidget-BB4cIuUS.cjs +2 -0
  74. package/dist/DateWidget-BB4cIuUS.cjs.map +1 -0
  75. package/dist/DateWidget-BEVSczU8.js +40 -0
  76. package/dist/DateWidget-BEVSczU8.js.map +1 -0
  77. package/dist/DetailsDialog-DmEC5BTs.js +767 -0
  78. package/dist/DetailsDialog-DmEC5BTs.js.map +1 -0
  79. package/dist/DetailsDialog-mvxMFmgV.cjs +2 -0
  80. package/dist/DetailsDialog-mvxMFmgV.cjs.map +1 -0
  81. package/dist/DynamicWidget-BWEVCUfd.cjs +2 -0
  82. package/dist/DynamicWidget-BWEVCUfd.cjs.map +1 -0
  83. package/dist/DynamicWidget-CfMtj7H8.js +35 -0
  84. package/dist/DynamicWidget-CfMtj7H8.js.map +1 -0
  85. package/dist/EventListDialog-BHZLl28V.cjs +2 -0
  86. package/dist/EventListDialog-BHZLl28V.cjs.map +1 -0
  87. package/dist/EventListDialog-CSMSmCIT.js +1586 -0
  88. package/dist/EventListDialog-CSMSmCIT.js.map +1 -0
  89. package/dist/FormatvalueWidget-CdjCEAI7.cjs +2 -0
  90. package/dist/FormatvalueWidget-CdjCEAI7.cjs.map +1 -0
  91. package/dist/FormatvalueWidget-DN12xymS.js +44 -0
  92. package/dist/FormatvalueWidget-DN12xymS.js.map +1 -0
  93. package/dist/Graph-Bgo0cjl3.js +1988 -0
  94. package/dist/Graph-Bgo0cjl3.js.map +1 -0
  95. package/dist/Graph-Ujd2yaeI.cjs +2 -0
  96. package/dist/Graph-Ujd2yaeI.cjs.map +1 -0
  97. package/dist/GraphWidget-DurWDmpg.js +130 -0
  98. package/dist/GraphWidget-DurWDmpg.js.map +1 -0
  99. package/dist/GraphWidget-sid4Ws9H.cjs +2 -0
  100. package/dist/GraphWidget-sid4Ws9H.cjs.map +1 -0
  101. package/dist/HorizontalWidget-Cd_wl1b3.js +41 -0
  102. package/dist/HorizontalWidget-Cd_wl1b3.js.map +1 -0
  103. package/dist/HorizontalWidget-_6IR0cR8.cjs +2 -0
  104. package/dist/HorizontalWidget-_6IR0cR8.cjs.map +1 -0
  105. package/dist/HorizontalboxWidget-BcMTFBU-.js +47 -0
  106. package/dist/HorizontalboxWidget-BcMTFBU-.js.map +1 -0
  107. package/dist/HorizontalboxWidget-zmnurtv1.cjs +2 -0
  108. package/dist/HorizontalboxWidget-zmnurtv1.cjs.map +1 -0
  109. package/dist/HorizontallineWidget-CM-6WqCj.cjs +2 -0
  110. package/dist/HorizontallineWidget-CM-6WqCj.cjs.map +1 -0
  111. package/dist/HorizontallineWidget-CXFqHclf.js +16 -0
  112. package/dist/HorizontallineWidget-CXFqHclf.js.map +1 -0
  113. package/dist/IframeWidget-BPerHCCa.js +90 -0
  114. package/dist/IframeWidget-BPerHCCa.js.map +1 -0
  115. package/dist/IframeWidget-EhncMob0.cjs +2 -0
  116. package/dist/IframeWidget-EhncMob0.cjs.map +1 -0
  117. package/dist/ImageLoader-4N-7Gj61.js +36 -0
  118. package/dist/ImageLoader-4N-7Gj61.js.map +1 -0
  119. package/dist/ImageLoader-cRmBcpU9.cjs +2 -0
  120. package/dist/ImageLoader-cRmBcpU9.cjs.map +1 -0
  121. package/dist/ImageviewerWidget-Bv3CreXd.cjs +2 -0
  122. package/dist/ImageviewerWidget-Bv3CreXd.cjs.map +1 -0
  123. package/dist/ImageviewerWidget-Cw_H_HmZ.js +37 -0
  124. package/dist/ImageviewerWidget-Cw_H_HmZ.js.map +1 -0
  125. package/dist/InterfacesTab-B4glsR9Z.js +93 -0
  126. package/dist/InterfacesTab-B4glsR9Z.js.map +1 -0
  127. package/dist/InterfacesTab-Co1Kd6Fa.cjs +2 -0
  128. package/dist/InterfacesTab-Co1Kd6Fa.cjs.map +1 -0
  129. package/dist/LabelWidget-mMcf5S8K.cjs +2 -0
  130. package/dist/LabelWidget-mMcf5S8K.cjs.map +1 -0
  131. package/dist/LabelWidget-xrmcVeq8.js +48 -0
  132. package/dist/LabelWidget-xrmcVeq8.js.map +1 -0
  133. package/dist/LabelledWidget-BoYCuDaH.cjs +2 -0
  134. package/dist/LabelledWidget-BoYCuDaH.cjs.map +1 -0
  135. package/dist/LabelledWidget-D48QoyMk.js +42 -0
  136. package/dist/LabelledWidget-D48QoyMk.js.map +1 -0
  137. package/dist/LabelprogressbarWidget-C_950t6g.js +43 -0
  138. package/dist/LabelprogressbarWidget-C_950t6g.js.map +1 -0
  139. package/dist/LabelprogressbarWidget-DiucKsT2.cjs +2 -0
  140. package/dist/LabelprogressbarWidget-DiucKsT2.cjs.map +1 -0
  141. package/dist/LabelsparklineWidget-0KXQyPoU.js +44 -0
  142. package/dist/LabelsparklineWidget-0KXQyPoU.js.map +1 -0
  143. package/dist/LabelsparklineWidget-A3MTEhQc.cjs +2 -0
  144. package/dist/LabelsparklineWidget-A3MTEhQc.cjs.map +1 -0
  145. package/dist/LabelvalueWidget-CQ06wWDK.js +58 -0
  146. package/dist/LabelvalueWidget-CQ06wWDK.js.map +1 -0
  147. package/dist/LabelvalueWidget-DnKoz0-N.cjs +2 -0
  148. package/dist/LabelvalueWidget-DnKoz0-N.cjs.map +1 -0
  149. package/dist/LabelvaluedescWidget-Bo8zT01X.js +59 -0
  150. package/dist/LabelvaluedescWidget-Bo8zT01X.js.map +1 -0
  151. package/dist/LabelvaluedescWidget-I6ljK--Y.cjs +2 -0
  152. package/dist/LabelvaluedescWidget-I6ljK--Y.cjs.map +1 -0
  153. package/dist/LabelvaluelimitsbarWidget-BucTw8Yk.js +57 -0
  154. package/dist/LabelvaluelimitsbarWidget-BucTw8Yk.js.map +1 -0
  155. package/dist/LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs +2 -0
  156. package/dist/LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs.map +1 -0
  157. package/dist/LabelvaluelimitscolumnWidget-ClY5OxUC.cjs +2 -0
  158. package/dist/LabelvaluelimitscolumnWidget-ClY5OxUC.cjs.map +1 -0
  159. package/dist/LabelvaluelimitscolumnWidget-Dflb1hNd.js +47 -0
  160. package/dist/LabelvaluelimitscolumnWidget-Dflb1hNd.js.map +1 -0
  161. package/dist/LabelvaluerangebarWidget-9S5rVZaS.cjs +2 -0
  162. package/dist/LabelvaluerangebarWidget-9S5rVZaS.cjs.map +1 -0
  163. package/dist/LabelvaluerangebarWidget-D8cbfXFM.js +79 -0
  164. package/dist/LabelvaluerangebarWidget-D8cbfXFM.js.map +1 -0
  165. package/dist/Layout-DuCYyOw4.cjs +2 -0
  166. package/dist/Layout-DuCYyOw4.cjs.map +1 -0
  167. package/dist/Layout-Tf--nruw.js +14 -0
  168. package/dist/Layout-Tf--nruw.js.map +1 -0
  169. package/dist/LedWidget-B2BcwiYF.cjs +2 -0
  170. package/dist/LedWidget-B2BcwiYF.cjs.map +1 -0
  171. package/dist/LedWidget-qH_FthkK.js +145 -0
  172. package/dist/LedWidget-qH_FthkK.js.map +1 -0
  173. package/dist/LimitsbarWidget-B9lAB2RD.js +69 -0
  174. package/dist/LimitsbarWidget-B9lAB2RD.js.map +1 -0
  175. package/dist/LimitsbarWidget-CVCLFIhG.cjs +2 -0
  176. package/dist/LimitsbarWidget-CVCLFIhG.cjs.map +1 -0
  177. package/dist/LimitscolorWidget-DORhDxRo.cjs +2 -0
  178. package/dist/LimitscolorWidget-DORhDxRo.cjs.map +1 -0
  179. package/dist/LimitscolorWidget-c6Qa6su7.js +63 -0
  180. package/dist/LimitscolorWidget-c6Qa6su7.js.map +1 -0
  181. package/dist/LimitscolumnWidget-C9Uyg7Fh.cjs +2 -0
  182. package/dist/LimitscolumnWidget-C9Uyg7Fh.cjs.map +1 -0
  183. package/dist/LimitscolumnWidget-CcLs_443.js +66 -0
  184. package/dist/LimitscolumnWidget-CcLs_443.js.map +1 -0
  185. package/dist/LinegraphWidget-BSVYLFo1.js +39 -0
  186. package/dist/LinegraphWidget-BSVYLFo1.js.map +1 -0
  187. package/dist/LinegraphWidget-Bf8DIwEn.cjs +2 -0
  188. package/dist/LinegraphWidget-Bf8DIwEn.cjs.map +1 -0
  189. package/dist/MatrixbycolumnsWidget-DXFpZTre.js +56 -0
  190. package/dist/MatrixbycolumnsWidget-DXFpZTre.js.map +1 -0
  191. package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs +2 -0
  192. package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs.map +1 -0
  193. package/dist/MicroservicesTab-B5n-mN8G.cjs +2 -0
  194. package/dist/MicroservicesTab-B5n-mN8G.cjs.map +1 -0
  195. package/dist/MicroservicesTab-mCdS0v39.js +264 -0
  196. package/dist/MicroservicesTab-mCdS0v39.js.map +1 -0
  197. package/dist/Openc3Screen-BYhHaH_I.cjs +5 -0
  198. package/dist/Openc3Screen-BYhHaH_I.cjs.map +1 -0
  199. package/dist/Openc3Screen-Cud0OCFu.js +1789 -0
  200. package/dist/Openc3Screen-Cud0OCFu.js.map +1 -0
  201. package/dist/OutputDialog-DXoL9VPw.cjs +2 -0
  202. package/dist/OutputDialog-DXoL9VPw.cjs.map +1 -0
  203. package/dist/OutputDialog-zVPZiZay.js +242 -0
  204. package/dist/OutputDialog-zVPZiZay.js.map +1 -0
  205. package/dist/PackagesTab-CvT2JyMA.cjs +2 -0
  206. package/dist/PackagesTab-CvT2JyMA.cjs.map +1 -0
  207. package/dist/PackagesTab-SWcXumpK.js +332 -0
  208. package/dist/PackagesTab-SWcXumpK.js.map +1 -0
  209. package/dist/PluginsTab-B64OvayB.js +599 -0
  210. package/dist/PluginsTab-B64OvayB.js.map +1 -0
  211. package/dist/PluginsTab-CfpwWsqv.cjs +6 -0
  212. package/dist/PluginsTab-CfpwWsqv.cjs.map +1 -0
  213. package/dist/ProgressbarWidget-fGWa6ipm.cjs +2 -0
  214. package/dist/ProgressbarWidget-fGWa6ipm.cjs.map +1 -0
  215. package/dist/ProgressbarWidget-iYGw8-Dc.js +46 -0
  216. package/dist/ProgressbarWidget-iYGw8-Dc.js.map +1 -0
  217. package/dist/RadiobuttonWidget-ZEPJbOp_.cjs +2 -0
  218. package/dist/RadiobuttonWidget-ZEPJbOp_.cjs.map +1 -0
  219. package/dist/RadiobuttonWidget-ytmoVZ3u.js +34 -0
  220. package/dist/RadiobuttonWidget-ytmoVZ3u.js.map +1 -0
  221. package/dist/RadiogroupWidget-CusMBhKH.js +48 -0
  222. package/dist/RadiogroupWidget-CusMBhKH.js.map +1 -0
  223. package/dist/RadiogroupWidget-EK4rEGUC.cjs +2 -0
  224. package/dist/RadiogroupWidget-EK4rEGUC.cjs.map +1 -0
  225. package/dist/RangebarWidget-D_zGTtCa.js +67 -0
  226. package/dist/RangebarWidget-D_zGTtCa.js.map +1 -0
  227. package/dist/RangebarWidget-DwIs-L5k.cjs +2 -0
  228. package/dist/RangebarWidget-DwIs-L5k.cjs.map +1 -0
  229. package/dist/RedisTab-67UcKoPf.cjs +2 -0
  230. package/dist/RedisTab-67UcKoPf.cjs.map +1 -0
  231. package/dist/RedisTab-CyPo6ADN.js +135 -0
  232. package/dist/RedisTab-CyPo6ADN.js.map +1 -0
  233. package/dist/RollupWidget-DC3OIP6G.cjs +2 -0
  234. package/dist/RollupWidget-DC3OIP6G.cjs.map +1 -0
  235. package/dist/RollupWidget-Dolsixyt.js +83 -0
  236. package/dist/RollupWidget-Dolsixyt.js.map +1 -0
  237. package/dist/RoutersTab-BBPlFi_z.cjs +2 -0
  238. package/dist/RoutersTab-BBPlFi_z.cjs.map +1 -0
  239. package/dist/RoutersTab-Cs2dFVNA.js +95 -0
  240. package/dist/RoutersTab-Cs2dFVNA.js.map +1 -0
  241. package/dist/ScriptChooser-EV65rbWx.js +199 -0
  242. package/dist/ScriptChooser-EV65rbWx.js.map +1 -0
  243. package/dist/ScriptChooser-vyZwngrz.cjs +2 -0
  244. package/dist/ScriptChooser-vyZwngrz.cjs.map +1 -0
  245. package/dist/ScrollwindowWidget-BWeqSUPc.cjs +2 -0
  246. package/dist/ScrollwindowWidget-BWeqSUPc.cjs.map +1 -0
  247. package/dist/ScrollwindowWidget-DV2nZuNi.js +45 -0
  248. package/dist/ScrollwindowWidget-DV2nZuNi.js.map +1 -0
  249. package/dist/SecretsTab-0IFqUxNJ.cjs +2 -0
  250. package/dist/SecretsTab-0IFqUxNJ.cjs.map +1 -0
  251. package/dist/SecretsTab-DVyyyGlG.js +202 -0
  252. package/dist/SecretsTab-DVyyyGlG.js.map +1 -0
  253. package/dist/SettingsTab-B1LvOLG2.cjs +3 -0
  254. package/dist/SettingsTab-B1LvOLG2.cjs.map +1 -0
  255. package/dist/SettingsTab-g29K6FyC.js +1445 -0
  256. package/dist/SettingsTab-g29K6FyC.js.map +1 -0
  257. package/dist/SignalWidget-RvRwpE8T.cjs +2 -0
  258. package/dist/SignalWidget-RvRwpE8T.cjs.map +1 -0
  259. package/dist/SignalWidget-d9-6h85k.js +66 -0
  260. package/dist/SignalWidget-d9-6h85k.js.map +1 -0
  261. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs +2 -0
  262. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs.map +1 -0
  263. package/dist/SimpleTextDialog-pwN8oRy1.js +107 -0
  264. package/dist/SimpleTextDialog-pwN8oRy1.js.map +1 -0
  265. package/dist/SpacerWidget-7_8bpLCb.cjs +2 -0
  266. package/dist/SpacerWidget-7_8bpLCb.cjs.map +1 -0
  267. package/dist/SpacerWidget-BH0p2OLi.js +19 -0
  268. package/dist/SpacerWidget-BH0p2OLi.js.map +1 -0
  269. package/dist/SparklineWidget-60jVlbHA.cjs +2 -0
  270. package/dist/SparklineWidget-60jVlbHA.cjs.map +1 -0
  271. package/dist/SparklineWidget-coxi9r2g.js +48 -0
  272. package/dist/SparklineWidget-coxi9r2g.js.map +1 -0
  273. package/dist/TabbookWidget-B1XKplGH.js +66 -0
  274. package/dist/TabbookWidget-B1XKplGH.js.map +1 -0
  275. package/dist/TabbookWidget-D1CVT9IK.cjs +2 -0
  276. package/dist/TabbookWidget-D1CVT9IK.cjs.map +1 -0
  277. package/dist/TargetsTab-BkBkXn9A.js +129 -0
  278. package/dist/TargetsTab-BkBkXn9A.js.map +1 -0
  279. package/dist/TargetsTab-C-m26Eqq.cjs +2 -0
  280. package/dist/TargetsTab-C-m26Eqq.cjs.map +1 -0
  281. package/dist/TextBoxDialog-DOJ5d2RM.js +110 -0
  282. package/dist/TextBoxDialog-DOJ5d2RM.js.map +1 -0
  283. package/dist/TextBoxDialog-DfMXg_5C.cjs +2 -0
  284. package/dist/TextBoxDialog-DfMXg_5C.cjs.map +1 -0
  285. package/dist/TextboxWidget-BDG4NxRw.cjs +2 -0
  286. package/dist/TextboxWidget-BDG4NxRw.cjs.map +1 -0
  287. package/dist/TextboxWidget-C-_M2M4l.js +93 -0
  288. package/dist/TextboxWidget-C-_M2M4l.js.map +1 -0
  289. package/dist/TextfieldWidget-BGJv9Lox.cjs +2 -0
  290. package/dist/TextfieldWidget-BGJv9Lox.cjs.map +1 -0
  291. package/dist/TextfieldWidget-C08N4JE8.js +37 -0
  292. package/dist/TextfieldWidget-C08N4JE8.js.map +1 -0
  293. package/dist/TimeWidget-CGCOIouj.cjs +2 -0
  294. package/dist/TimeWidget-CGCOIouj.cjs.map +1 -0
  295. package/dist/TimeWidget-DtwdEcFg.js +40 -0
  296. package/dist/TimeWidget-DtwdEcFg.js.map +1 -0
  297. package/dist/TitleWidget-BljFH9RB.cjs +2 -0
  298. package/dist/TitleWidget-BljFH9RB.cjs.map +1 -0
  299. package/dist/TitleWidget-CT-aLcNb.js +26 -0
  300. package/dist/TitleWidget-CT-aLcNb.js.map +1 -0
  301. package/dist/ToolsTab-NveeVXz2.js +1521 -0
  302. package/dist/ToolsTab-NveeVXz2.js.map +1 -0
  303. package/dist/ToolsTab-RMTst_Sy.cjs +7 -0
  304. package/dist/ToolsTab-RMTst_Sy.cjs.map +1 -0
  305. package/dist/TopBar-CnJNNJlV.js +278 -0
  306. package/dist/TopBar-CnJNNJlV.js.map +1 -0
  307. package/dist/TopBar-Cnmb6DyC.cjs +2 -0
  308. package/dist/TopBar-Cnmb6DyC.cjs.map +1 -0
  309. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js +94 -0
  310. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js.map +1 -0
  311. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs +2 -0
  312. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs.map +1 -0
  313. package/dist/VWidget-2N2cOosI.cjs +2 -0
  314. package/dist/VWidget-2N2cOosI.cjs.map +1 -0
  315. package/dist/VWidget-DQqb7NVW.js +323 -0
  316. package/dist/VWidget-DQqb7NVW.js.map +1 -0
  317. package/dist/ValueWidget-C6RanBj3.js +116 -0
  318. package/dist/ValueWidget-C6RanBj3.js.map +1 -0
  319. package/dist/ValueWidget-Cu7hgKja.cjs +2 -0
  320. package/dist/ValueWidget-Cu7hgKja.cjs.map +1 -0
  321. package/dist/ValuelimitsbarWidget-B3bvjfxc.js +41 -0
  322. package/dist/ValuelimitsbarWidget-B3bvjfxc.js.map +1 -0
  323. package/dist/ValuelimitsbarWidget-C0HROxrb.cjs +2 -0
  324. package/dist/ValuelimitsbarWidget-C0HROxrb.cjs.map +1 -0
  325. package/dist/ValuelimitscolumnWidget-CWvLfg8u.cjs +2 -0
  326. package/dist/ValuelimitscolumnWidget-CWvLfg8u.cjs.map +1 -0
  327. package/dist/ValuelimitscolumnWidget-QvhI6EcE.js +40 -0
  328. package/dist/ValuelimitscolumnWidget-QvhI6EcE.js.map +1 -0
  329. package/dist/ValuerangebarWidget-Dt3K9BnC.js +65 -0
  330. package/dist/ValuerangebarWidget-Dt3K9BnC.js.map +1 -0
  331. package/dist/ValuerangebarWidget-DyN78cQl.cjs +2 -0
  332. package/dist/ValuerangebarWidget-DyN78cQl.cjs.map +1 -0
  333. package/dist/VerticalWidget-BIIViZgI.js +40 -0
  334. package/dist/VerticalWidget-BIIViZgI.js.map +1 -0
  335. package/dist/VerticalWidget-CFTOu4H8.cjs +2 -0
  336. package/dist/VerticalWidget-CFTOu4H8.cjs.map +1 -0
  337. package/dist/VerticalboxWidget-DY72fLHW.js +46 -0
  338. package/dist/VerticalboxWidget-DY72fLHW.js.map +1 -0
  339. package/dist/VerticalboxWidget-Z8-DWI8t.cjs +2 -0
  340. package/dist/VerticalboxWidget-Z8-DWI8t.cjs.map +1 -0
  341. package/dist/Widget-ChoIB2dd.cjs +2 -0
  342. package/dist/Widget-ChoIB2dd.cjs.map +1 -0
  343. package/dist/Widget-oyqWpFXJ.js +197 -0
  344. package/dist/Widget-oyqWpFXJ.js.map +1 -0
  345. package/dist/WidgetComponents-C1lSLZ0I.js +30205 -0
  346. package/dist/WidgetComponents-C1lSLZ0I.js.map +1 -0
  347. package/dist/WidgetComponents-utpQ592X.cjs +1493 -0
  348. package/dist/WidgetComponents-utpQ592X.cjs.map +1 -0
  349. package/dist/addMonths-BtG7uZLJ.js +19 -0
  350. package/dist/addMonths-BtG7uZLJ.js.map +1 -0
  351. package/dist/addMonths-n1tnl3ab.cjs +2 -0
  352. package/dist/addMonths-n1tnl3ab.cjs.map +1 -0
  353. package/dist/components.cjs +4 -0
  354. package/dist/components.cjs.map +1 -0
  355. package/dist/components.js +1379 -0
  356. package/dist/components.js.map +1 -0
  357. package/dist/fileIcon-BduOQcTc.cjs +2 -0
  358. package/dist/fileIcon-BduOQcTc.cjs.map +1 -0
  359. package/dist/fileIcon-DqRHb1_Z.js +22 -0
  360. package/dist/fileIcon-DqRHb1_Z.js.map +1 -0
  361. package/dist/format-B22VpiOS.cjs +2 -0
  362. package/dist/format-B22VpiOS.cjs.map +1 -0
  363. package/dist/format-CVeawcIv.js +1295 -0
  364. package/dist/format-CVeawcIv.js.map +1 -0
  365. package/dist/getDefaultOptions-Batab9o8.cjs +2 -0
  366. package/dist/getDefaultOptions-Batab9o8.cjs.map +1 -0
  367. package/dist/getDefaultOptions-BhSDk-Jo.js +8 -0
  368. package/dist/getDefaultOptions-BhSDk-Jo.js.map +1 -0
  369. package/dist/icons/status-dark.png +0 -0
  370. package/dist/icons/status-dark.xcf +0 -0
  371. package/dist/icons/status-light.png +0 -0
  372. package/dist/icons.cjs +2 -0
  373. package/dist/icons.cjs.map +1 -0
  374. package/dist/icons.js +164 -0
  375. package/dist/icons.js.map +1 -0
  376. package/dist/index-BX05anye.cjs +7 -0
  377. package/dist/index-BX05anye.cjs.map +1 -0
  378. package/dist/index-DwP8ryNM.js +1694 -0
  379. package/dist/index-DwP8ryNM.js.map +1 -0
  380. package/dist/parse-DnkEsW-3.js +1603 -0
  381. package/dist/parse-DnkEsW-3.js.map +1 -0
  382. package/dist/parse-DwfgQboe.cjs +2 -0
  383. package/dist/parse-DwfgQboe.cjs.map +1 -0
  384. package/dist/plugins.cjs +9 -0
  385. package/dist/plugins.cjs.map +1 -0
  386. package/dist/plugins.js +776 -0
  387. package/dist/plugins.js.map +1 -0
  388. package/dist/timeFilters-8SaYvcH0.cjs +2 -0
  389. package/dist/timeFilters-8SaYvcH0.cjs.map +1 -0
  390. package/dist/timeFilters-CRYpYDdf.js +622 -0
  391. package/dist/timeFilters-CRYpYDdf.js.map +1 -0
  392. package/dist/tools/admin.cjs +13 -0
  393. package/dist/tools/admin.cjs.map +1 -0
  394. package/dist/tools/admin.js +2024 -0
  395. package/dist/tools/admin.js.map +1 -0
  396. package/dist/tools/base.cjs +2 -0
  397. package/dist/tools/base.cjs.map +1 -0
  398. package/dist/tools/base.js +1677 -0
  399. package/dist/tools/base.js.map +1 -0
  400. package/dist/tools/calendar.cjs +2 -0
  401. package/dist/tools/calendar.cjs.map +1 -0
  402. package/dist/tools/calendar.js +12 -0
  403. package/dist/tools/calendar.js.map +1 -0
  404. package/dist/tools/scriptrunner.cjs +86 -0
  405. package/dist/tools/scriptrunner.cjs.map +1 -0
  406. package/dist/tools/scriptrunner.js +4564 -0
  407. package/dist/tools/scriptrunner.js.map +1 -0
  408. package/dist/util.cjs +2 -0
  409. package/dist/util.cjs.map +1 -0
  410. package/dist/util.js +9 -0
  411. package/dist/util.js.map +1 -0
  412. package/dist/vue-common.css +1 -0
  413. package/dist/widgets.cjs +2 -0
  414. package/dist/widgets.cjs.map +1 -0
  415. package/dist/widgets.js +132 -0
  416. package/dist/widgets.js.map +1 -0
  417. package/package.json +20 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginsTab-B64OvayB.js","sources":["../src/tools/admin/tabs/PluginsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install New Plugin</v-btn>\n <input\n style=\"display: none\"\n type=\"file\"\n ref=\"fileInput\"\n @change=\"fileChange\"\n />\n &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 closable\n :type=\"alertType\"\n v-model=\"showAlert\"\n data-test=\"plugin-alert\"\n >{{ alert }}</v-alert\n >\n <v-list\n class=\"list\"\n v-if=\"Object.keys(processes).length > 0\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\"\n ><v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\"\n /></v-list-item-subtitle>\n\n <template v-slot:append>\n <div v-if=\"process.state === 'Running'\">\n <v-progress-circular indeterminate color=\"primary\" />\n </div>\n <v-tooltip v-else location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"showOutput(process)\"\n data-test=\"show-output\"\n >\n mdi-eye\n </v-icon>\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"plugin-list\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Plugin List</v-col></v-row>\n <div v-for=\"(plugin, index) in shownPlugins\" :key=\"index\">\n <v-list-item 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 v-slot:append>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"downloadPlugin(plugin)\"\n data-test=\"download-plugin\"\n >\n mdi-download\n </v-icon>\n </template>\n <span>Download Plugin</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"editPlugin(plugin)\"\n data-test=\"edit-plugin\"\n >\n mdi-pencil\n </v-icon>\n </template>\n <span>Edit Plugin Details</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"upgradePlugin(plugin)\"\n data-test=\"upgrade-plugin\"\n >\n mdi-update\n </v-icon>\n </template>\n <span>Upgrade Plugin</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"deletePrompt(plugin)\"\n data-test=\"delete-plugin\"\n >\n mdi-delete\n </v-icon>\n </template>\n <span>Delete Plugin</span>\n </v-tooltip>\n </div>\n </template>\n </v-list-item>\n <v-divider v-if=\"index < plugins.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n <plugin-dialog\n v-if=\"showPluginDialog\"\n v-model=\"showPluginDialog\"\n :pluginName=\"pluginName\"\n :variables=\"variables\"\n :pluginTxt=\"pluginTxt\"\n :existingPluginTxt=\"existingPluginTxt\"\n @callback=\"pluginCallback\"\n />\n <modified-plugin-dialog\n v-if=\"showModifiedPluginDialog\"\n v-model=\"showModifiedPluginDialog\"\n :pluginName=\"currentPlugin\"\n :targets=\"pluginTargets(currentPlugin)\"\n :pluginDelete=\"pluginDelete\"\n @submit=\"modifiedSubmit\"\n />\n <!-- <download-dialog v-model=\"showDownloadDialog\" /> -->\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { ModifiedPluginDialog, PluginDialog } from '@/tools/admin'\n\nexport default {\n components: {\n PluginDialog,\n ModifiedPluginDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n file: null,\n currentPlugin: null,\n plugins: [],\n targets: [],\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n pluginName: null,\n variables: {},\n pluginTxt: '',\n pluginHashTmp: null,\n existingPluginTxt: null,\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n showPluginDialog: false,\n showModifiedPluginDialog: false,\n showDefaultTools: false,\n progress: 0,\n pluginDelete: false,\n // When updating update local_mode.rb, local_mode.py, plugins.spec.ts\n defaultPlugins: [\n 'openc3-cosmos-tool-admin',\n 'openc3-cosmos-tool-bucketexplorer',\n 'openc3-cosmos-tool-cmdsender',\n 'openc3-cosmos-tool-cmdhistory', // Enterprise only\n 'openc3-cosmos-tool-cmdtlmserver',\n 'openc3-cosmos-tool-dataextractor',\n 'openc3-cosmos-tool-dataviewer',\n 'openc3-cosmos-tool-docs',\n 'openc3-cosmos-tool-handbooks',\n 'openc3-cosmos-tool-iframe',\n 'openc3-cosmos-tool-limitsmonitor',\n 'openc3-cosmos-tool-packetviewer',\n 'openc3-cosmos-tool-scriptrunner',\n 'openc3-cosmos-tool-tablemanager',\n 'openc3-cosmos-tool-tlmgrapher',\n 'openc3-cosmos-tool-tlmviewer',\n 'openc3-cosmos-enterprise-tool-admin', // Enterprise only\n 'openc3-cosmos-tool-autonomic', // Enterprise only\n 'openc3-cosmos-tool-calendar', // Enterprise only\n 'openc3-cosmos-tool-grafana', // Enterprise only\n 'openc3-enterprise-tool-base', // Enterprise only\n 'openc3-tool-base',\n ],\n }\n },\n watch: {\n // watcher to reset the file input when the dialog is closed\n showPluginDialog: function (newValue, oldValue) {\n if (newValue === false) {\n this.file = null\n this.$refs.fileInput.value = null\n }\n },\n },\n computed: {\n shownPlugins() {\n let result = []\n for (let plugin of this.plugins) {\n let pluginNameFirst = plugin.split('__')[0]\n let pluginNameSplit = pluginNameFirst.split('-')\n pluginNameSplit = pluginNameSplit.slice(0, -1)\n let pluginName = pluginNameSplit.join('-')\n if (\n !this.defaultPlugins.includes(pluginName) ||\n this.showDefaultTools\n ) {\n result.push(plugin)\n }\n }\n return result\n },\n pluginTargets() {\n return (plugin) => {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n }\n },\n isModified() {\n return (plugin) => {\n let result = false\n for (const target in this.targets) {\n if (\n this.targets[target]['plugin'] === plugin &&\n this.targets[target]['modified'] === true\n ) {\n result = true\n break\n }\n }\n return result\n }\n },\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update: function () {\n Api.get('/openc3-api/plugins').then((response) => {\n this.plugins = response.data\n })\n Api.get('/openc3-api/targets_modified').then((response) => {\n this.targets = response.data\n })\n },\n updateProcesses: function () {\n Api.get('openc3-api/process_status/plugin_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 5000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n upload: function (existing = null) {\n const method = existing ? 'put' : 'post'\n const path = existing\n ? `/openc3-api/plugins/${existing}`\n : '/openc3-api/plugins'\n const formData = new FormData()\n formData.append('plugin', this.file, this.file.name)\n let self = this\n const promise = Api[method](path, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n promise\n .then((response) => {\n this.progress = 100\n this.alert = 'Uploaded file'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt =\n response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n this.file = undefined\n })\n .catch((error) => {\n this.currentPlugin = null\n this.file = undefined\n })\n },\n pluginCallback: function (pluginHash) {\n this.showPluginDialog = false\n if (this.currentPlugin !== null) {\n pluginHash['name'] = this.currentPlugin\n }\n this.pluginHashTmp = pluginHash\n if (this.isModified(this.currentPlugin)) {\n this.pluginDelete = false\n this.showModifiedPluginDialog = true\n } else {\n this.pluginInstall()\n }\n },\n modifiedSubmit: async function (deleteModified) {\n if (deleteModified === true) {\n for (let target of this.pluginTargets(this.currentPlugin)) {\n if (target.modified == true) {\n await Api.post(`/openc3-api/targets/${target.name}/delete_modified`)\n }\n }\n }\n if (this.pluginDelete) {\n this.deletePlugin(this.currentPlugin)\n } else {\n this.pluginInstall()\n }\n },\n pluginInstall: function () {\n Api.post(`/openc3-api/plugins/install/${this.pluginName}`, {\n data: {\n plugin_hash: JSON.stringify(this.pluginHashTmp),\n },\n }).then((response) => {\n this.alert = `Started installing plugin ${this.pluginName} ...`\n this.alertType = 'success'\n this.showAlert = true\n this.currentPlugin = null\n this.file = undefined\n this.variables = {}\n this.pluginTxt = ''\n this.existingPluginTxt = null\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n },\n downloadTarget: function (name) {\n Api.post(`/openc3-api/targets/${name}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadPlugin: function (plugin) {\n Api.post(`/openc3-api/packages/${plugin}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n editPlugin: function (plugin) {\n Api.get(`/openc3-api/plugins/${plugin}`).then((response) => {\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt = response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n })\n },\n deletePrompt: function (plugin) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${plugin}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.isModified(plugin)) {\n this.currentPlugin = plugin\n this.pluginDelete = true\n this.showModifiedPluginDialog = true\n } else {\n this.deletePlugin(plugin)\n }\n })\n },\n deletePlugin: function (plugin) {\n this.alert = `Removing plugin ${plugin} ...`\n this.alertType = 'success'\n this.showAlert = true\n Api.delete(`/openc3-api/plugins/${plugin}`).then((response) => {\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n })\n this.update()\n },\n upgradePlugin(plugin) {\n this.file = null\n this.currentPlugin = plugin\n this.progress = 0\n this.$refs.fileInput.click()\n },\n selectFile() {\n this.file = null\n this.currentPlugin = null\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.file = files[0]\n if (this.currentPlugin !== null) {\n if (\n this.file.name.split('.gem')[0] ==\n this.currentPlugin.split('.gem')[0]\n ) {\n this.$dialog\n .confirm(\n `The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n .catch((error) => {\n // do nothing\n })\n } else {\n // Split up the gem name to determine if this is an upgrade\n // or mistakenly trying to install a different gem\n // Gems are named like openc3-cosmos-demo-5.3.2.gem or\n // openc3-cosmos-pw-test-1.0.0.20230213074527.gem\n // So split on - and match everything until the first .\n let parts = this.file.name.split('-')\n let i = parts.findIndex((x) => x.includes('.'))\n let newName = parts.slice(0, i).join('-')\n parts = this.currentPlugin.split('-')\n i = parts.findIndex((x) => x.includes('.'))\n let existingName = parts.slice(0, i).join('-')\n if (newName !== existingName) {\n this.$dialog\n .confirm(\n `The new gem base name ${newName} doesn't match the existing ${existingName}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n } else {\n this.upload(this.currentPlugin)\n }\n }\n } else {\n this.upload()\n }\n } else {\n // Reset the input element\n this.$refs.fileInput.value = null\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.crashed {\n color: red;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","PluginDialog","ModifiedPluginDialog","SimpleTextDialog","newValue","oldValue","result","plugin","pluginNameSplit","pluginName","target","process","Api","response","nanoSecs","format","toDate","existing","method","path","formData","self","progressEvent","percentCompleted","existingPluginTxt","pluginTxt","error","pluginHash","deleteModified","name","decodedData","uInt8Array","i","blob","link","dialog","event","files","parts","x","newName","existingName","_hoisted_1","_hoisted_2","_hoisted_5","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_v_icon","_component_rux_progress","$data","_component_v_checkbox","$event","_component_v_divider","_component_v_alert","_toDisplayString","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_hoisted_3","_component_v_progress_circular","_component_v_tooltip","props","_mergeProps","_component_v_list_item_title","_normalizeClass","_component_v_list_item_subtitle","_createCommentVNode","index","_hoisted_4","_withModifiers","_hoisted_6","_component_plugin_dialog","_component_modified_plugin_dialog","_component_simple_text_dialog"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./WidgetComponents-utpQ592X.cjs"),e=require("vue"),E=require("./CustomIcon-Bop2mEnu.cjs");require("single-spa");const S=require("./SimpleTextDialog-Cpbt7Q-8.cjs"),N=require("./tools/admin.cjs"),P=require("./format-B22VpiOS.cjs"),A={components:{PluginDialog:N.PluginDialog,ModifiedPluginDialog:N.ModifiedPluginDialog,SimpleTextDialog:S.SimpleTextDialog},data(){return{file:null,currentPlugin:null,plugins:[],targets:[],processes:{},alert:"",alertType:"success",showAlert:!1,pluginName:null,variables:{},pluginTxt:"",pluginHashTmp:null,existingPluginTxt:null,showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",showPluginDialog:!1,showModifiedPluginDialog:!1,showDefaultTools:!1,progress:0,pluginDelete:!1,defaultPlugins:["openc3-cosmos-tool-admin","openc3-cosmos-tool-bucketexplorer","openc3-cosmos-tool-cmdsender","openc3-cosmos-tool-cmdhistory","openc3-cosmos-tool-cmdtlmserver","openc3-cosmos-tool-dataextractor","openc3-cosmos-tool-dataviewer","openc3-cosmos-tool-docs","openc3-cosmos-tool-handbooks","openc3-cosmos-tool-iframe","openc3-cosmos-tool-limitsmonitor","openc3-cosmos-tool-packetviewer","openc3-cosmos-tool-scriptrunner","openc3-cosmos-tool-tablemanager","openc3-cosmos-tool-tlmgrapher","openc3-cosmos-tool-tlmviewer","openc3-cosmos-enterprise-tool-admin","openc3-cosmos-tool-autonomic","openc3-cosmos-tool-calendar","openc3-cosmos-tool-grafana","openc3-enterprise-tool-base","openc3-tool-base"]}},watch:{showPluginDialog:function(l,t){l===!1&&(this.file=null,this.$refs.fileInput.value=null)}},computed:{shownPlugins(){let l=[];for(let t of this.plugins){let r=t.split("__")[0].split("-");r=r.slice(0,-1);let o=r.join("-");(!this.defaultPlugins.includes(o)||this.showDefaultTools)&&l.push(t)}return l},pluginTargets(){return l=>{let t=[];for(const s in this.targets)this.targets[s].plugin===l&&t.push(this.targets[s]);return t}},isModified(){return l=>{let t=!1;for(const s in this.targets)if(this.targets[s].plugin===l&&this.targets[s].modified===!0){t=!0;break}return t}}},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(l){this.processOutput=l.output,this.showProcessOutput=!0},update:function(){c.oi.get("/openc3-api/plugins").then(l=>{this.plugins=l.data}),c.oi.get("/openc3-api/targets_modified").then(l=>{this.targets=l.data})},updateProcesses:function(){c.oi.get("openc3-api/process_status/plugin_?substr=true").then(l=>{this.processes=l.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},5e3)})},formatDate(l){return P.format(P.toDate(parseInt(l)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},upload:function(l=null){const t=l?"put":"post",s=l?`/openc3-api/plugins/${l}`:"/openc3-api/plugins",r=new FormData;r.append("plugin",this.file,this.file.name);let o=this;c.oi[t](s,{data:r,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(a){let d=Math.round(a.loaded*100/a.total);o.progress=d}}).then(a=>{this.progress=100,this.alert="Uploaded file",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update();let d=null;a.data.existing_plugin_txt_lines!==void 0&&(d=a.data.existing_plugin_txt_lines.join(`
2
+ `));let p=a.data.plugin_txt_lines.join(`
3
+ `);this.pluginName=a.data.name,this.variables=a.data.variables,this.pluginTxt=p,this.existingPluginTxt=d,this.showPluginDialog=!0,this.file=void 0}).catch(a=>{this.currentPlugin=null,this.file=void 0})},pluginCallback:function(l){this.showPluginDialog=!1,this.currentPlugin!==null&&(l.name=this.currentPlugin),this.pluginHashTmp=l,this.isModified(this.currentPlugin)?(this.pluginDelete=!1,this.showModifiedPluginDialog=!0):this.pluginInstall()},modifiedSubmit:async function(l){if(l===!0)for(let t of this.pluginTargets(this.currentPlugin))t.modified==!0&&await c.oi.post(`/openc3-api/targets/${t.name}/delete_modified`);this.pluginDelete?this.deletePlugin(this.currentPlugin):this.pluginInstall()},pluginInstall:function(){c.oi.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.oi.post(`/openc3-api/targets/${l}/download`).then(t=>{const s=window.atob(t.data.contents),r=new Uint8Array(s.length);for(let a=0;a<s.length;++a)r[a]=s.charCodeAt(a);const o=new Blob([r],{type:"application/zip"}),i=document.createElement("a");i.href=URL.createObjectURL(o),i.setAttribute("download",t.data.filename),i.click()})},downloadPlugin:function(l){c.oi.post(`/openc3-api/packages/${l}/download`).then(t=>{const s=window.atob(t.data.contents),r=new Uint8Array(s.length);for(let a=0;a<s.length;++a)r[a]=s.charCodeAt(a);const o=new Blob([r],{type:"application/zip"}),i=document.createElement("a");i.href=URL.createObjectURL(o),i.setAttribute("download",t.data.filename),i.click()})},editPlugin:function(l){c.oi.get(`/openc3-api/plugins/${l}`).then(t=>{let s=null;t.data.existing_plugin_txt_lines!==void 0&&(s=t.data.existing_plugin_txt_lines.join(`
4
+ `));let r=t.data.plugin_txt_lines.join(`
5
+ `);this.pluginName=t.data.name,this.variables=t.data.variables,this.pluginTxt=r,this.existingPluginTxt=s,this.showPluginDialog=!0})},deletePrompt:function(l){this.$dialog.confirm(`Are you sure you want to remove: ${l}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>{this.isModified(l)?(this.currentPlugin=l,this.pluginDelete=!0,this.showModifiedPluginDialog=!0):this.deletePlugin(l)})},deletePlugin:function(l){this.alert=`Removing plugin ${l} ...`,this.alertType="success",this.showAlert=!0,c.oi.delete(`/openc3-api/plugins/${l}`).then(t=>{setTimeout(()=>{this.showAlert=!1,this.updateProcesses()},5e3)}),this.update()},upgradePlugin(l){this.file=null,this.currentPlugin=l,this.progress=0,this.$refs.fileInput.click()},selectFile(){this.file=null,this.currentPlugin=null,this.progress=0,this.$refs.fileInput.click()},fileChange(l){const t=l.target.files;if(t.length>0)if(this.file=t[0],this.currentPlugin!==null)if(this.file.name.split(".gem")[0]==this.currentPlugin.split(".gem")[0])this.$dialog.confirm(`The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}).catch(s=>{});else{let s=this.file.name.split("-"),r=s.findIndex(a=>a.includes(".")),o=s.slice(0,r).join("-");s=this.currentPlugin.split("-"),r=s.findIndex(a=>a.includes("."));let i=s.slice(0,r).join("-");o!==i?this.$dialog.confirm(`The new gem base name ${o} doesn't match the existing ${i}. Install?`,{okText:"Ok",cancelText:"Cancel"}).then(()=>{this.upload(this.currentPlugin)}):this.upload(this.currentPlugin)}else this.upload();else this.$refs.fileInput.value=null}}},O=["textContent"],I=["textContent"],M={key:0},U={key:0},j=["onClick"],L={key:1},F={class:"mx-3"},q={class:"mx-3"},R={class:"mx-3"},H={class:"mx-3"};function z(l,t,s,r,o,i){const a=e.resolveComponent("v-btn"),d=e.resolveComponent("v-icon"),p=e.resolveComponent("v-col"),k=e.resolveComponent("rux-progress"),f=e.resolveComponent("v-row"),V=e.resolveComponent("v-checkbox"),x=e.resolveComponent("v-divider"),T=e.resolveComponent("v-alert"),w=e.resolveComponent("v-list-item-title"),_=e.resolveComponent("v-list-item-subtitle"),y=e.resolveComponent("v-progress-circular"),g=e.resolveComponent("v-tooltip"),C=e.resolveComponent("v-list-item"),v=e.resolveComponent("v-list"),D=e.resolveComponent("plugin-dialog"),b=e.resolveComponent("modified-plugin-dialog"),B=e.resolveComponent("simple-text-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(f,{"no-gutters":"",align:"center",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,{class:"pa-2 mt-2"},{default:e.withCtx(()=>[e.createVNode(a,{onClick:i.selectFile},{default:e.withCtx(()=>t[6]||(t[6]=[e.createTextVNode("Install New Plugin")])),_:1},8,["onClick"]),e.createElementVNode("input",{style:{display:"none"},type:"file",ref:"fileInput",onChange:t[0]||(t[0]=(...n)=>i.fileChange&&i.fileChange(...n))},null,544),t[8]||(t[8]=e.createTextVNode("  Note: Use ")),e.createVNode(d,null,{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode("mdi-update")])),_:1}),t[9]||(t[9]=e.createTextVNode(" to upgrade existing plugins "))]),_:1}),e.createVNode(p,{class:"ml-4 mr-2",cols:"4"},{default:e.withCtx(()=>[e.createVNode(k,{value:o.progress},null,8,["value"])]),_:1})]),_:1}),e.createVNode(f,{"no-gutters":"",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,null,{default:e.withCtx(()=>[e.createVNode(V,{modelValue:o.showDefaultTools,"onUpdate:modelValue":t[1]||(t[1]=n=>o.showDefaultTools=n),label:"Show Default Tools",class:"mt-0","data-test":"show-default-tools"},null,8,["modelValue"])]),_:1}),e.createVNode(p,{align:"right",class:"mr-2"},{default:e.withCtx(()=>t[10]||(t[10]=[e.createElementVNode("div",null,"* indicates a modified plugin",-1),e.createElementVNode("div",null,"Click target link to download modifications",-1)])),_:1})]),_:1}),e.createVNode(x),e.createVNode(T,{closable:"",type:o.alertType,modelValue:o.showAlert,"onUpdate:modelValue":t[2]||(t[2]=n=>o.showAlert=n),"data-test":"plugin-alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.alert),1)]),_:1},8,["type","modelValue"]),Object.keys(o.processes).length>0?(e.openBlock(),e.createBlock(v,{key:0,class:"list","data-test":"process-list"},{default:e.withCtx(()=>[e.createVNode(f,{"no-gutters":"",class:"px-4"},{default:e.withCtx(()=>[e.createVNode(p,{class:"text-h6"},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode("Process List")])),_:1}),e.createVNode(p,{align:"right"},{default:e.withCtx(()=>t[12]||(t[12]=[e.createElementVNode("div",null,"Showing last 10 min of activity",-1)])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.processes,n=>(e.openBlock(),e.createElementBlock("div",{key:n.name},[e.createVNode(C,null,{append:e.withCtx(()=>[n.state==="Running"?(e.openBlock(),e.createElementBlock("div",M,[e.createVNode(y,{indeterminate:"",color:"primary"})])):(e.openBlock(),e.createBlock(g,{key:1,location:"top"},{activator:e.withCtx(({props:m})=>[e.createVNode(d,e.mergeProps({ref_for:!0},m,{onClick:u=>i.showOutput(n),"data-test":"show-output"}),{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" mdi-eye ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[14]||(t[14]=e.createElementVNode("span",null,"Show Output",-1))]),_:2},1024))]),default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(n.state.toLowerCase()),textContent:e.toDisplayString(`Processing ${n.process_type}: ${n.detail} - ${n.state}`)},null,10,O)]),_:2},1024),e.createVNode(_,null,{default:e.withCtx(()=>[e.createElementVNode("span",{textContent:e.toDisplayString(" Updated At: "+i.formatDate(n.updated_at))},null,8,I)]),_:2},1024)]),_:2},1024),e.createVNode(x)]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(v,{class:"list","data-test":"plugin-list"},{default:e.withCtx(()=>[e.createVNode(f,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(p,{class:"text-h6"},{default:e.withCtx(()=>t[15]||(t[15]=[e.createTextVNode("Plugin List")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.shownPlugins,(n,m)=>(e.openBlock(),e.createElementBlock("div",{key:m},[e.createVNode(C,{"data-test":"plugin-list-item"},{append:e.withCtx(()=>[e.createElementVNode("div",F,[e.createVNode(g,{location:"top"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>i.downloadPlugin(n),"data-test":"download-plugin"}),{default:e.withCtx(()=>t[16]||(t[16]=[e.createTextVNode(" mdi-download ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[17]||(t[17]=e.createElementVNode("span",null,"Download Plugin",-1))]),_:2},1024)]),e.createElementVNode("div",q,[e.createVNode(g,{location:"top"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>i.editPlugin(n),"data-test":"edit-plugin"}),{default:e.withCtx(()=>t[18]||(t[18]=[e.createTextVNode(" mdi-pencil ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[19]||(t[19]=e.createElementVNode("span",null,"Edit Plugin Details",-1))]),_:2},1024)]),e.createElementVNode("div",R,[e.createVNode(g,{location:"top"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>i.upgradePlugin(n),"data-test":"upgrade-plugin"}),{default:e.withCtx(()=>t[20]||(t[20]=[e.createTextVNode(" mdi-update ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[21]||(t[21]=e.createElementVNode("span",null,"Upgrade Plugin",-1))]),_:2},1024)]),e.createElementVNode("div",H,[e.createVNode(g,{location:"top"},{activator:e.withCtx(({props:u})=>[e.createVNode(d,e.mergeProps({ref_for:!0},u,{onClick:h=>i.deletePrompt(n),"data-test":"delete-plugin"}),{default:e.withCtx(()=>t[22]||(t[22]=[e.createTextVNode(" mdi-delete ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[23]||(t[23]=e.createElementVNode("span",null,"Delete Plugin",-1))]),_:2},1024)])]),default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[i.isModified(n)?(e.openBlock(),e.createElementBlock("span",U,"* ")):e.createCommentVNode("",!0),e.createTextVNode(e.toDisplayString(n),1)]),_:2},1024),i.pluginTargets(n).length!==0?(e.openBlock(),e.createBlock(_,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.pluginTargets(n),(u,h)=>(e.openBlock(),e.createElementBlock("span",{key:h,class:"mr-2"},[u.modified?(e.openBlock(),e.createElementBlock("a",{key:0,onClick:e.withModifiers(W=>i.downloadTarget(u.name),["prevent"])},e.toDisplayString(u.name),9,j)):(e.openBlock(),e.createElementBlock("span",L,e.toDisplayString(u.name),1))]))),128))]),_:2},1024)):e.createCommentVNode("",!0)]),_:2},1024),m<o.plugins.length-1?(e.openBlock(),e.createBlock(x,{key:m})):e.createCommentVNode("",!0)]))),128))]),_:1}),o.showPluginDialog?(e.openBlock(),e.createBlock(D,{key:1,modelValue:o.showPluginDialog,"onUpdate:modelValue":t[3]||(t[3]=n=>o.showPluginDialog=n),pluginName:o.pluginName,variables:o.variables,pluginTxt:o.pluginTxt,existingPluginTxt:o.existingPluginTxt,onCallback:i.pluginCallback},null,8,["modelValue","pluginName","variables","pluginTxt","existingPluginTxt","onCallback"])):e.createCommentVNode("",!0),o.showModifiedPluginDialog?(e.openBlock(),e.createBlock(b,{key:2,modelValue:o.showModifiedPluginDialog,"onUpdate:modelValue":t[4]||(t[4]=n=>o.showModifiedPluginDialog=n),pluginName:o.currentPlugin,targets:i.pluginTargets(o.currentPlugin),pluginDelete:o.pluginDelete,onSubmit:i.modifiedSubmit},null,8,["modelValue","pluginName","targets","pluginDelete","onSubmit"])):e.createCommentVNode("",!0),e.createVNode(B,{modelValue:o.showProcessOutput,"onUpdate:modelValue":t[5]||(t[5]=n=>o.showProcessOutput=n),title:"Process Output",text:o.processOutput},null,8,["modelValue","text"])])}const J=E._export_sfc(A,[["render",z],["__scopeId","data-v-f61368fa"]]);exports.default=J;
6
+ //# sourceMappingURL=PluginsTab-CfpwWsqv.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginsTab-CfpwWsqv.cjs","sources":["../src/tools/admin/tabs/PluginsTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install New Plugin</v-btn>\n <input\n style=\"display: none\"\n type=\"file\"\n ref=\"fileInput\"\n @change=\"fileChange\"\n />\n &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 closable\n :type=\"alertType\"\n v-model=\"showAlert\"\n data-test=\"plugin-alert\"\n >{{ alert }}</v-alert\n >\n <v-list\n class=\"list\"\n v-if=\"Object.keys(processes).length > 0\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\"\n ><v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\"\n /></v-list-item-subtitle>\n\n <template v-slot:append>\n <div v-if=\"process.state === 'Running'\">\n <v-progress-circular indeterminate color=\"primary\" />\n </div>\n <v-tooltip v-else location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"showOutput(process)\"\n data-test=\"show-output\"\n >\n mdi-eye\n </v-icon>\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"plugin-list\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Plugin List</v-col></v-row>\n <div v-for=\"(plugin, index) in shownPlugins\" :key=\"index\">\n <v-list-item 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 v-slot:append>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"downloadPlugin(plugin)\"\n data-test=\"download-plugin\"\n >\n mdi-download\n </v-icon>\n </template>\n <span>Download Plugin</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"editPlugin(plugin)\"\n data-test=\"edit-plugin\"\n >\n mdi-pencil\n </v-icon>\n </template>\n <span>Edit Plugin Details</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"upgradePlugin(plugin)\"\n data-test=\"upgrade-plugin\"\n >\n mdi-update\n </v-icon>\n </template>\n <span>Upgrade Plugin</span>\n </v-tooltip>\n </div>\n <div class=\"mx-3\">\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"deletePrompt(plugin)\"\n data-test=\"delete-plugin\"\n >\n mdi-delete\n </v-icon>\n </template>\n <span>Delete Plugin</span>\n </v-tooltip>\n </div>\n </template>\n </v-list-item>\n <v-divider v-if=\"index < plugins.length - 1\" :key=\"index\" />\n </div>\n </v-list>\n <plugin-dialog\n v-if=\"showPluginDialog\"\n v-model=\"showPluginDialog\"\n :pluginName=\"pluginName\"\n :variables=\"variables\"\n :pluginTxt=\"pluginTxt\"\n :existingPluginTxt=\"existingPluginTxt\"\n @callback=\"pluginCallback\"\n />\n <modified-plugin-dialog\n v-if=\"showModifiedPluginDialog\"\n v-model=\"showModifiedPluginDialog\"\n :pluginName=\"currentPlugin\"\n :targets=\"pluginTargets(currentPlugin)\"\n :pluginDelete=\"pluginDelete\"\n @submit=\"modifiedSubmit\"\n />\n <!-- <download-dialog v-model=\"showDownloadDialog\" /> -->\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { ModifiedPluginDialog, PluginDialog } from '@/tools/admin'\n\nexport default {\n components: {\n PluginDialog,\n ModifiedPluginDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n file: null,\n currentPlugin: null,\n plugins: [],\n targets: [],\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n pluginName: null,\n variables: {},\n pluginTxt: '',\n pluginHashTmp: null,\n existingPluginTxt: null,\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n showPluginDialog: false,\n showModifiedPluginDialog: false,\n showDefaultTools: false,\n progress: 0,\n pluginDelete: false,\n // When updating update local_mode.rb, local_mode.py, plugins.spec.ts\n defaultPlugins: [\n 'openc3-cosmos-tool-admin',\n 'openc3-cosmos-tool-bucketexplorer',\n 'openc3-cosmos-tool-cmdsender',\n 'openc3-cosmos-tool-cmdhistory', // Enterprise only\n 'openc3-cosmos-tool-cmdtlmserver',\n 'openc3-cosmos-tool-dataextractor',\n 'openc3-cosmos-tool-dataviewer',\n 'openc3-cosmos-tool-docs',\n 'openc3-cosmos-tool-handbooks',\n 'openc3-cosmos-tool-iframe',\n 'openc3-cosmos-tool-limitsmonitor',\n 'openc3-cosmos-tool-packetviewer',\n 'openc3-cosmos-tool-scriptrunner',\n 'openc3-cosmos-tool-tablemanager',\n 'openc3-cosmos-tool-tlmgrapher',\n 'openc3-cosmos-tool-tlmviewer',\n 'openc3-cosmos-enterprise-tool-admin', // Enterprise only\n 'openc3-cosmos-tool-autonomic', // Enterprise only\n 'openc3-cosmos-tool-calendar', // Enterprise only\n 'openc3-cosmos-tool-grafana', // Enterprise only\n 'openc3-enterprise-tool-base', // Enterprise only\n 'openc3-tool-base',\n ],\n }\n },\n watch: {\n // watcher to reset the file input when the dialog is closed\n showPluginDialog: function (newValue, oldValue) {\n if (newValue === false) {\n this.file = null\n this.$refs.fileInput.value = null\n }\n },\n },\n computed: {\n shownPlugins() {\n let result = []\n for (let plugin of this.plugins) {\n let pluginNameFirst = plugin.split('__')[0]\n let pluginNameSplit = pluginNameFirst.split('-')\n pluginNameSplit = pluginNameSplit.slice(0, -1)\n let pluginName = pluginNameSplit.join('-')\n if (\n !this.defaultPlugins.includes(pluginName) ||\n this.showDefaultTools\n ) {\n result.push(plugin)\n }\n }\n return result\n },\n pluginTargets() {\n return (plugin) => {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n }\n },\n isModified() {\n return (plugin) => {\n let result = false\n for (const target in this.targets) {\n if (\n this.targets[target]['plugin'] === plugin &&\n this.targets[target]['modified'] === true\n ) {\n result = true\n break\n }\n }\n return result\n }\n },\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update: function () {\n Api.get('/openc3-api/plugins').then((response) => {\n this.plugins = response.data\n })\n Api.get('/openc3-api/targets_modified').then((response) => {\n this.targets = response.data\n })\n },\n updateProcesses: function () {\n Api.get('openc3-api/process_status/plugin_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 5000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n upload: function (existing = null) {\n const method = existing ? 'put' : 'post'\n const path = existing\n ? `/openc3-api/plugins/${existing}`\n : '/openc3-api/plugins'\n const formData = new FormData()\n formData.append('plugin', this.file, this.file.name)\n let self = this\n const promise = Api[method](path, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n promise\n .then((response) => {\n this.progress = 100\n this.alert = 'Uploaded file'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt =\n response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n this.file = undefined\n })\n .catch((error) => {\n this.currentPlugin = null\n this.file = undefined\n })\n },\n pluginCallback: function (pluginHash) {\n this.showPluginDialog = false\n if (this.currentPlugin !== null) {\n pluginHash['name'] = this.currentPlugin\n }\n this.pluginHashTmp = pluginHash\n if (this.isModified(this.currentPlugin)) {\n this.pluginDelete = false\n this.showModifiedPluginDialog = true\n } else {\n this.pluginInstall()\n }\n },\n modifiedSubmit: async function (deleteModified) {\n if (deleteModified === true) {\n for (let target of this.pluginTargets(this.currentPlugin)) {\n if (target.modified == true) {\n await Api.post(`/openc3-api/targets/${target.name}/delete_modified`)\n }\n }\n }\n if (this.pluginDelete) {\n this.deletePlugin(this.currentPlugin)\n } else {\n this.pluginInstall()\n }\n },\n pluginInstall: function () {\n Api.post(`/openc3-api/plugins/install/${this.pluginName}`, {\n data: {\n plugin_hash: JSON.stringify(this.pluginHashTmp),\n },\n }).then((response) => {\n this.alert = `Started installing plugin ${this.pluginName} ...`\n this.alertType = 'success'\n this.showAlert = true\n this.currentPlugin = null\n this.file = undefined\n this.variables = {}\n this.pluginTxt = ''\n this.existingPluginTxt = null\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n },\n downloadTarget: function (name) {\n Api.post(`/openc3-api/targets/${name}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadPlugin: function (plugin) {\n Api.post(`/openc3-api/packages/${plugin}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n editPlugin: function (plugin) {\n Api.get(`/openc3-api/plugins/${plugin}`).then((response) => {\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt = response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n ;(this.pluginName = response.data.name),\n (this.variables = response.data.variables),\n (this.pluginTxt = pluginTxt),\n (this.existingPluginTxt = existingPluginTxt)\n this.showPluginDialog = true\n })\n },\n deletePrompt: function (plugin) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${plugin}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.isModified(plugin)) {\n this.currentPlugin = plugin\n this.pluginDelete = true\n this.showModifiedPluginDialog = true\n } else {\n this.deletePlugin(plugin)\n }\n })\n },\n deletePlugin: function (plugin) {\n this.alert = `Removing plugin ${plugin} ...`\n this.alertType = 'success'\n this.showAlert = true\n Api.delete(`/openc3-api/plugins/${plugin}`).then((response) => {\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n })\n this.update()\n },\n upgradePlugin(plugin) {\n this.file = null\n this.currentPlugin = plugin\n this.progress = 0\n this.$refs.fileInput.click()\n },\n selectFile() {\n this.file = null\n this.currentPlugin = null\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.file = files[0]\n if (this.currentPlugin !== null) {\n if (\n this.file.name.split('.gem')[0] ==\n this.currentPlugin.split('.gem')[0]\n ) {\n this.$dialog\n .confirm(\n `The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n .catch((error) => {\n // do nothing\n })\n } else {\n // Split up the gem name to determine if this is an upgrade\n // or mistakenly trying to install a different gem\n // Gems are named like openc3-cosmos-demo-5.3.2.gem or\n // openc3-cosmos-pw-test-1.0.0.20230213074527.gem\n // So split on - and match everything until the first .\n let parts = this.file.name.split('-')\n let i = parts.findIndex((x) => x.includes('.'))\n let newName = parts.slice(0, i).join('-')\n parts = this.currentPlugin.split('-')\n i = parts.findIndex((x) => x.includes('.'))\n let existingName = parts.slice(0, i).join('-')\n if (newName !== existingName) {\n this.$dialog\n .confirm(\n `The new gem base name ${newName} doesn't match the existing ${existingName}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n } else {\n this.upload(this.currentPlugin)\n }\n }\n } else {\n this.upload()\n }\n } else {\n // Reset the input element\n this.$refs.fileInput.value = null\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.crashed {\n color: red;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","PluginDialog","ModifiedPluginDialog","SimpleTextDialog","newValue","oldValue","result","plugin","pluginNameSplit","pluginName","target","process","Api","response","nanoSecs","format","toDate","existing","method","path","formData","self","progressEvent","percentCompleted","existingPluginTxt","pluginTxt","error","pluginHash","deleteModified","name","decodedData","uInt8Array","i","blob","link","dialog","event","files","parts","x","newName","existingName","_hoisted_1","_hoisted_2","_hoisted_5","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_createElementBlock","_createVNode","_component_v_row","_withCtx","_component_v_col","_component_v_btn","$options","_cache","_createTextVNode","_createElementVNode","args","_component_v_icon","_component_rux_progress","$data","_component_v_checkbox","$event","_component_v_divider","_component_v_alert","_toDisplayString","_createBlock","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_hoisted_3","_component_v_progress_circular","_component_v_tooltip","props","_mergeProps","_component_v_list_item_title","_normalizeClass","_component_v_list_item_subtitle","_createCommentVNode","index","_hoisted_4","_withModifiers","_hoisted_6","_component_plugin_dialog","_component_modified_plugin_dialog","_component_simple_text_dialog"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./Widget-ChoIB2dd.cjs"),t=require("vue"),i=require("./CustomIcon-Bop2mEnu.cjs"),l={mixins:[a.Widget],props:{value:{default:null}},data:function(){return{valueId:null,scaleFactor:1,width:150}},computed:{_value:function(){let e=this.value;return e===null&&(e=this.screenValues[this.valueId][0]),parseInt(parseFloat(e)*this.scaleFactor)}},created:function(){if(this.parameters[3]&&(this.scaleFactor=parseFloat(this.parameters[3])),this.width=this.setWidth(this.parameters[4],"px",this.width),this.value===null){let e="CONVERTED";this.parameters[5]&&(e=this.parameters[5]),this.valueId=`${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${e}`,this.$emit("addItem",this.valueId)}},unmounted:function(){this.$emit("deleteItem",this.valueId)}};function u(e,n,c,d,p,s){const r=t.resolveComponent("rux-progress");return t.openBlock(),t.createBlock(r,{value:s._value,class:"progress",style:t.normalizeStyle(e.computedStyle)},null,8,["value","style"])}const o=i._export_sfc(l,[["render",u],["__scopeId","data-v-85bc2857"]]);exports.default=o;
2
+ //# sourceMappingURL=ProgressbarWidget-fGWa6ipm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressbarWidget-fGWa6ipm.cjs","sources":["../src/widgets/ProgressbarWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-progress\n :value=\"_value\"\n class=\"progress\"\n :style=\"computedStyle\"\n ></rux-progress>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n default: null,\n },\n },\n data: function () {\n return {\n valueId: null,\n scaleFactor: 1.0,\n width: 150,\n }\n },\n computed: {\n _value: function () {\n let value = this.value\n if (value === null) {\n value = this.screenValues[this.valueId][0]\n }\n return parseInt(parseFloat(value) * this.scaleFactor)\n },\n },\n created: function () {\n if (this.parameters[3]) {\n this.scaleFactor = parseFloat(this.parameters[3])\n }\n this.width = this.setWidth(this.parameters[4], 'px', this.width)\n // If they're not passing us the value we have to register\n if (this.value === null) {\n let type = 'CONVERTED'\n if (this.parameters[5]) {\n type = this.parameters[5]\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n this.$emit('addItem', this.valueId)\n }\n },\n unmounted: function () {\n this.$emit('deleteItem', this.valueId)\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.progress {\n margin: 5px;\n flex: auto !important;\n}\n</style>\n"],"names":["_sfc_main","Widget","value","type","_createBlock","_component_rux_progress","$options","_normalizeStyle","_ctx"],"mappings":"iLAiCKA,EAAU,CACb,OAAQ,CAACC,EAAAA,MAAM,EACf,MAAO,CACL,MAAO,CACL,QAAS,IACV,CACF,EACD,KAAM,UAAY,CAChB,MAAO,CACL,QAAS,KACT,YAAa,EACb,MAAO,GACT,CACD,EACD,SAAU,CACR,OAAQ,UAAY,CAClB,IAAIC,EAAQ,KAAK,MACjB,OAAIA,IAAU,OACZA,EAAQ,KAAK,aAAa,KAAK,OAAO,EAAE,CAAC,GAEpC,SAAS,WAAWA,CAAK,EAAI,KAAK,WAAW,CACrD,CACF,EACD,QAAS,UAAY,CAMnB,GALI,KAAK,WAAW,CAAC,IACnB,KAAK,YAAc,WAAW,KAAK,WAAW,CAAC,CAAC,GAElD,KAAK,MAAQ,KAAK,SAAS,KAAK,WAAW,CAAC,EAAG,KAAM,KAAK,KAAK,EAE3D,KAAK,QAAU,KAAM,CACvB,IAAIC,EAAO,YACP,KAAK,WAAW,CAAC,IACnBA,EAAO,KAAK,WAAW,CAAC,GAE1B,KAAK,QAAU,GAAG,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAKA,CAAI,GAC3F,KAAK,MAAM,UAAW,KAAK,OAAO,CACpC,CACD,EACD,UAAW,UAAY,CACrB,KAAK,MAAM,aAAc,KAAK,OAAO,CACtC,CACH,0FAnDEC,EAIgB,YAAAC,EAAA,CAHb,MAAOC,EAAM,OACd,MAAM,WACL,MA1BLC,EAAAA,eA0BYC,EAAa,aAAA"}
@@ -0,0 +1,46 @@
1
+ import { W as a } from "./Widget-oyqWpFXJ.js";
2
+ import { resolveComponent as r, createBlock as i, openBlock as l, normalizeStyle as o } from "vue";
3
+ import { _ as u } from "./CustomIcon-h5X7369N.js";
4
+ const n = {
5
+ mixins: [a],
6
+ props: {
7
+ value: {
8
+ default: null
9
+ }
10
+ },
11
+ data: function() {
12
+ return {
13
+ valueId: null,
14
+ scaleFactor: 1,
15
+ width: 150
16
+ };
17
+ },
18
+ computed: {
19
+ _value: function() {
20
+ let e = this.value;
21
+ return e === null && (e = this.screenValues[this.valueId][0]), parseInt(parseFloat(e) * this.scaleFactor);
22
+ }
23
+ },
24
+ created: function() {
25
+ if (this.parameters[3] && (this.scaleFactor = parseFloat(this.parameters[3])), this.width = this.setWidth(this.parameters[4], "px", this.width), this.value === null) {
26
+ let e = "CONVERTED";
27
+ this.parameters[5] && (e = this.parameters[5]), this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${e}`, this.$emit("addItem", this.valueId);
28
+ }
29
+ },
30
+ unmounted: function() {
31
+ this.$emit("deleteItem", this.valueId);
32
+ }
33
+ };
34
+ function p(e, c, h, d, m, t) {
35
+ const s = r("rux-progress");
36
+ return l(), i(s, {
37
+ value: t._value,
38
+ class: "progress",
39
+ style: o(e.computedStyle)
40
+ }, null, 8, ["value", "style"]);
41
+ }
42
+ const I = /* @__PURE__ */ u(n, [["render", p], ["__scopeId", "data-v-85bc2857"]]);
43
+ export {
44
+ I as default
45
+ };
46
+ //# sourceMappingURL=ProgressbarWidget-iYGw8-Dc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressbarWidget-iYGw8-Dc.js","sources":["../src/widgets/ProgressbarWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-progress\n :value=\"_value\"\n class=\"progress\"\n :style=\"computedStyle\"\n ></rux-progress>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n props: {\n value: {\n default: null,\n },\n },\n data: function () {\n return {\n valueId: null,\n scaleFactor: 1.0,\n width: 150,\n }\n },\n computed: {\n _value: function () {\n let value = this.value\n if (value === null) {\n value = this.screenValues[this.valueId][0]\n }\n return parseInt(parseFloat(value) * this.scaleFactor)\n },\n },\n created: function () {\n if (this.parameters[3]) {\n this.scaleFactor = parseFloat(this.parameters[3])\n }\n this.width = this.setWidth(this.parameters[4], 'px', this.width)\n // If they're not passing us the value we have to register\n if (this.value === null) {\n let type = 'CONVERTED'\n if (this.parameters[5]) {\n type = this.parameters[5]\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n this.$emit('addItem', this.valueId)\n }\n },\n unmounted: function () {\n this.$emit('deleteItem', this.valueId)\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.progress {\n margin: 5px;\n flex: auto !important;\n}\n</style>\n"],"names":["_sfc_main","Widget","value","type","_createBlock","_component_rux_progress","$options","_normalizeStyle","_ctx"],"mappings":";;;AAiCA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AAAA,IACL,OAAO;AAAA,MACL,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EACD,MAAM,WAAY;AAChB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,aAAa;AAAA,MACb,OAAO;AAAA,IACT;AAAA,EACD;AAAA,EACD,UAAU;AAAA,IACR,QAAQ,WAAY;AAClB,UAAIC,IAAQ,KAAK;AACjB,aAAIA,MAAU,SACZA,IAAQ,KAAK,aAAa,KAAK,OAAO,EAAE,CAAC,IAEpC,SAAS,WAAWA,CAAK,IAAI,KAAK,WAAW;AAAA,IACrD;AAAA,EACF;AAAA,EACD,SAAS,WAAY;AAMnB,QALI,KAAK,WAAW,CAAC,MACnB,KAAK,cAAc,WAAW,KAAK,WAAW,CAAC,CAAC,IAElD,KAAK,QAAQ,KAAK,SAAS,KAAK,WAAW,CAAC,GAAG,MAAM,KAAK,KAAK,GAE3D,KAAK,UAAU,MAAM;AACvB,UAAIC,IAAO;AACX,MAAI,KAAK,WAAW,CAAC,MACnBA,IAAO,KAAK,WAAW,CAAC,IAE1B,KAAK,UAAU,GAAG,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAKA,CAAI,IAC3F,KAAK,MAAM,WAAW,KAAK,OAAO;AAAA,IACpC;AAAA,EACD;AAAA,EACD,WAAW,WAAY;AACrB,SAAK,MAAM,cAAc,KAAK,OAAO;AAAA,EACtC;AACH;;;cAnDEC,EAIgBC,GAAA;AAAA,IAHb,OAAOC,EAAM;AAAA,IACd,OAAM;AAAA,IACL,OA1BLC,EA0BYC,EAAa,aAAA;AAAA;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./Widget-ChoIB2dd.cjs"),e=require("vue"),a=require("./CustomIcon-Bop2mEnu.cjs"),s={props:{value:{type:Number}},mixins:[n.Widget],data(){return{label:"Radio"}},created(){this.label=this.parameters[0]}};function i(t,u,o,d,l,p){const r=e.resolveComponent("v-radio");return e.openBlock(),e.createBlock(r,{"hide-details":"",dense:"",label:l.label,style:e.normalizeStyle(t.computedStyle),value:o.value},null,8,["label","style","value"])}const c=a._export_sfc(s,[["render",i]]);exports.default=c;
2
+ //# sourceMappingURL=RadiobuttonWidget-ZEPJbOp_.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadiobuttonWidget-ZEPJbOp_.cjs","sources":["../src/widgets/RadiobuttonWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-radio\n hide-details\n dense\n :label=\"label\"\n :style=\"computedStyle\"\n :value=\"value\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n props: {\n value: {\n type: Number,\n },\n },\n mixins: [Widget],\n data() {\n return {\n label: 'Radio',\n }\n },\n created() {\n this.label = this.parameters[0]\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","_createBlock","_component_v_radio","$data","_normalizeStyle","_ctx","$props"],"mappings":"iLAmCKA,EAAU,CACb,MAAO,CACL,MAAO,CACL,KAAM,MACP,CACF,EACD,OAAQ,CAACC,EAAAA,MAAM,EACf,MAAO,CACL,MAAO,CACL,MAAO,OACT,CACD,EACD,SAAU,CACR,KAAK,MAAQ,KAAK,WAAW,CAAC,CAC/B,CACH,qFA3BEC,EAME,YAAAC,EAAA,CALA,eAAA,GACA,MAAA,GACC,MAAOC,EAAK,MACZ,MA3BLC,EAAAA,eA2BYC,EAAa,aAAA,EACpB,MAAOC,EAAK"}
@@ -0,0 +1,34 @@
1
+ import { W as l } from "./Widget-oyqWpFXJ.js";
2
+ import { resolveComponent as r, createBlock as n, openBlock as s, normalizeStyle as i } from "vue";
3
+ import { _ as c } from "./CustomIcon-h5X7369N.js";
4
+ const d = {
5
+ props: {
6
+ value: {
7
+ type: Number
8
+ }
9
+ },
10
+ mixins: [l],
11
+ data() {
12
+ return {
13
+ label: "Radio"
14
+ };
15
+ },
16
+ created() {
17
+ this.label = this.parameters[0];
18
+ }
19
+ };
20
+ function p(e, m, t, u, o, _) {
21
+ const a = r("v-radio");
22
+ return s(), n(a, {
23
+ "hide-details": "",
24
+ dense: "",
25
+ label: o.label,
26
+ style: i(e.computedStyle),
27
+ value: t.value
28
+ }, null, 8, ["label", "style", "value"]);
29
+ }
30
+ const y = /* @__PURE__ */ c(d, [["render", p]]);
31
+ export {
32
+ y as default
33
+ };
34
+ //# sourceMappingURL=RadiobuttonWidget-ytmoVZ3u.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadiobuttonWidget-ytmoVZ3u.js","sources":["../src/widgets/RadiobuttonWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-radio\n hide-details\n dense\n :label=\"label\"\n :style=\"computedStyle\"\n :value=\"value\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n props: {\n value: {\n type: Number,\n },\n },\n mixins: [Widget],\n data() {\n return {\n label: 'Radio',\n }\n },\n created() {\n this.label = this.parameters[0]\n },\n}\n</script>\n"],"names":["_sfc_main","Widget","_createBlock","_component_v_radio","$data","_normalizeStyle","_ctx","$props"],"mappings":";;;AAmCA,MAAKA,IAAU;AAAA,EACb,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,IACP;AAAA,EACF;AAAA,EACD,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AACL,WAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACD;AAAA,EACD,UAAU;AACR,SAAK,QAAQ,KAAK,WAAW,CAAC;AAAA,EAC/B;AACH;;;cA3BEC,EAMEC,GAAA;AAAA,IALA,gBAAA;AAAA,IACA,OAAA;AAAA,IACC,OAAOC,EAAK;AAAA,IACZ,OA3BLC,EA2BYC,EAAa,aAAA;AAAA,IACpB,OAAOC,EAAK;AAAA;;;"}
@@ -0,0 +1,48 @@
1
+ import { L as m } from "./Layout-Tf--nruw.js";
2
+ import { resolveComponent as i, createBlock as a, openBlock as r, normalizeStyle as p, withCtx as d, createElementBlock as u, Fragment as c, renderList as f, resolveDynamicComponent as g, mergeProps as y } from "vue";
3
+ import { _ as v } from "./CustomIcon-h5X7369N.js";
4
+ const _ = {
5
+ mixins: [m],
6
+ data() {
7
+ return {
8
+ selectedIndex: 0
9
+ };
10
+ },
11
+ created() {
12
+ this.parameters[0] && (this.selectedIndex = parseInt(this.parameters[0]));
13
+ },
14
+ methods: {
15
+ selected() {
16
+ return this.selectedIndex;
17
+ }
18
+ }
19
+ };
20
+ function h(t, s, I, k, n, x) {
21
+ const l = i("v-radio-group");
22
+ return r(), a(l, {
23
+ "hide-details": "",
24
+ density: "compact",
25
+ modelValue: n.selectedIndex,
26
+ "onUpdate:modelValue": s[0] || (s[0] = (e) => n.selectedIndex = e),
27
+ style: p(t.computedStyle)
28
+ }, {
29
+ default: d(() => [
30
+ (r(!0), u(c, null, f(t.widgets, (e, o) => (r(), a(g(e.type), y({ ref_for: !0 }, t.listeners, {
31
+ value: o,
32
+ key: o,
33
+ target: e.target,
34
+ parameters: e.parameters,
35
+ settings: e.settings,
36
+ "screen-values": t.screenValues,
37
+ "screen-time-zone": t.screenTimeZone,
38
+ name: e.name
39
+ }), null, 16, ["value", "target", "parameters", "settings", "screen-values", "screen-time-zone", "name"]))), 128))
40
+ ]),
41
+ _: 1
42
+ }, 8, ["modelValue", "style"]);
43
+ }
44
+ const C = /* @__PURE__ */ v(_, [["render", h]]);
45
+ export {
46
+ C as default
47
+ };
48
+ //# sourceMappingURL=RadiogroupWidget-CusMBhKH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadiogroupWidget-CusMBhKH.js","sources":["../src/widgets/RadiogroupWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-radio-group\n hide-details\n density=\"compact\"\n v-model=\"selectedIndex\"\n :style=\"computedStyle\"\n >\n <component\n v-for=\"(widget, index) in widgets\"\n v-bind=\"listeners\"\n :value=\"index\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :name=\"widget.name\"\n />\n </v-radio-group>\n</template>\n\n<script>\nimport Layout from './Layout'\n\nexport default {\n mixins: [Layout],\n data() {\n return {\n selectedIndex: 0,\n }\n },\n created() {\n if (this.parameters[0]) {\n this.selectedIndex = parseInt(this.parameters[0])\n }\n },\n methods: {\n selected() {\n return this.selectedIndex\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Layout","_createBlock","_component_v_radio_group","$data","_cache","$event","_normalizeStyle","_ctx","_withCtx","_openBlock","_createElementBlock","_Fragment","_renderList","widget","index","_resolveDynamicComponent","_mergeProps"],"mappings":";;;AAgDA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AACL,WAAO;AAAA,MACL,eAAe;AAAA,IACjB;AAAA,EACD;AAAA,EACD,UAAU;AACR,IAAI,KAAK,WAAW,CAAC,MACnB,KAAK,gBAAgB,SAAS,KAAK,WAAW,CAAC,CAAC;AAAA,EAEnD;AAAA,EACD,SAAS;AAAA,IACP,WAAW;AACT,aAAO,KAAK;AAAA,IACb;AAAA,EACF;AACH;;;cA1CEC,EAmBgBC,GAAA;AAAA,IAlBd,gBAAA;AAAA,IACA,SAAQ;AAAA,IAzBZ,YA0BaC,EAAa;AAAA,IA1B1B,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MA0BaF,EAAa,gBAAAE;AAAA,IACrB,OA3BLC,EA2BYC,EAAa,aAAA;AAAA;IA3BzB,SAAAC,EA8BM,MAAkC;AAAA,OADpCC,EAAA,EAAA,GAAAC,EAYEC,SAzCNC,EA8BgCL,EAAA,SA9BhC,CA8BcM,GAAQC,YADlBb,EA7BJc,EAkCWF,EAAO,IAAI,GALlBG,EAYE,EAzCN,SAAA,MA+BcT,EAAS,WAAA;AAAA,QAChB,OAAOO;AAAA,QACP,KAAKA;AAAA,QAEL,QAAQD,EAAO;AAAA,QACf,YAAYA,EAAO;AAAA,QACnB,UAAUA,EAAO;AAAA,QACjB,iBAAeN,EAAY;AAAA,QAC3B,oBAAkBA,EAAc;AAAA,QAChC,MAAMM,EAAO;AAAA;;IAxCpB,GAAA;AAAA;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./Layout-DuCYyOw4.cjs"),e=require("vue"),c=require("./CustomIcon-Bop2mEnu.cjs"),u={mixins:[l.Layout],data(){return{selectedIndex:0}},created(){this.parameters[0]&&(this.selectedIndex=parseInt(this.parameters[0]))},methods:{selected(){return this.selectedIndex}}};function i(r,n,d,p,s,y){const a=e.resolveComponent("v-radio-group");return e.openBlock(),e.createBlock(a,{"hide-details":"",density:"compact",modelValue:s.selectedIndex,"onUpdate:modelValue":n[0]||(n[0]=t=>s.selectedIndex=t),style:e.normalizeStyle(r.computedStyle)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.widgets,(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type),e.mergeProps({ref_for:!0},r.listeners,{value:o,key:o,target:t.target,parameters:t.parameters,settings:t.settings,"screen-values":r.screenValues,"screen-time-zone":r.screenTimeZone,name:t.name}),null,16,["value","target","parameters","settings","screen-values","screen-time-zone","name"]))),128))]),_:1},8,["modelValue","style"])}const m=c._export_sfc(u,[["render",i]]);exports.default=m;
2
+ //# sourceMappingURL=RadiogroupWidget-EK4rEGUC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadiogroupWidget-EK4rEGUC.cjs","sources":["../src/widgets/RadiogroupWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-radio-group\n hide-details\n density=\"compact\"\n v-model=\"selectedIndex\"\n :style=\"computedStyle\"\n >\n <component\n v-for=\"(widget, index) in widgets\"\n v-bind=\"listeners\"\n :value=\"index\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :name=\"widget.name\"\n />\n </v-radio-group>\n</template>\n\n<script>\nimport Layout from './Layout'\n\nexport default {\n mixins: [Layout],\n data() {\n return {\n selectedIndex: 0,\n }\n },\n created() {\n if (this.parameters[0]) {\n this.selectedIndex = parseInt(this.parameters[0])\n }\n },\n methods: {\n selected() {\n return this.selectedIndex\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Layout","_createBlock","_component_v_radio_group","$data","_cache","$event","_normalizeStyle","_ctx","_withCtx","_openBlock","_createElementBlock","_Fragment","_renderList","widget","index","_resolveDynamicComponent","_mergeProps"],"mappings":"iLAgDKA,EAAU,CACb,OAAQ,CAACC,EAAAA,MAAM,EACf,MAAO,CACL,MAAO,CACL,cAAe,CACjB,CACD,EACD,SAAU,CACJ,KAAK,WAAW,CAAC,IACnB,KAAK,cAAgB,SAAS,KAAK,WAAW,CAAC,CAAC,EAEnD,EACD,QAAS,CACP,UAAW,CACT,OAAO,KAAK,aACb,CACF,CACH,2FA1CEC,EAmBgB,YAAAC,EAAA,CAlBd,eAAA,GACA,QAAQ,UAzBZ,WA0BaC,EAAa,cA1B1B,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GA0BaF,EAAa,cAAAE,GACrB,MA3BLC,EAAAA,eA2BYC,EAAa,aAAA,IA3BzB,QAAAC,EAAA,QA8BM,IAAkC,EADpCC,EAAAA,UAAA,EAAA,EAAAC,EAAA,mBAYEC,gBAzCNC,EA8BgC,WAAAL,EAAA,QA9BhC,CA8BcM,EAAQC,mBADlBb,EAAAA,YA7BJc,EAkCW,wBAAAF,EAAO,IAAI,EALlBG,EAYE,WAAA,CAzCN,QAAA,IA+BcT,EAAS,UAAA,CAChB,MAAOO,EACP,IAAKA,EAEL,OAAQD,EAAO,OACf,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,gBAAeN,EAAY,aAC3B,mBAAkBA,EAAc,eAChC,KAAMM,EAAO,+GAxCpB,EAAA"}
@@ -0,0 +1,67 @@
1
+ import { W as i } from "./Widget-oyqWpFXJ.js";
2
+ import { createElementBlock as a, openBlock as h, normalizeStyle as n, createElementVNode as r } from "vue";
3
+ import { _ as o } from "./CustomIcon-h5X7369N.js";
4
+ const d = {
5
+ mixins: [i],
6
+ data() {
7
+ return {
8
+ width: 160,
9
+ // px
10
+ height: 22
11
+ // px
12
+ };
13
+ },
14
+ computed: {
15
+ cssProps() {
16
+ return {
17
+ "--height": this.height + "px",
18
+ "--width": this.width + "px",
19
+ "--container-height": this.height - 5 + "px",
20
+ "--position": this.calcPosition() + "%"
21
+ };
22
+ },
23
+ min() {
24
+ return parseInt(this.parameters[3]);
25
+ },
26
+ max() {
27
+ return parseInt(this.parameters[4]);
28
+ },
29
+ range() {
30
+ return this.max - this.min;
31
+ }
32
+ },
33
+ created() {
34
+ const t = this.parameters[5] ? this.parameters[5] : "CONVERTED";
35
+ this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${t}`, this.$emit("addItem", this.valueId), this.width = this.setWidth(this.parameters[6], "px", this.width), this.height = this.setHeight(this.parameters[7], "px", this.height);
36
+ },
37
+ unmounted() {
38
+ this.$emit("deleteItem", this.valueId);
39
+ },
40
+ methods: {
41
+ calcPosition() {
42
+ let t = this.screenValues[this.valueId][0];
43
+ if (!t)
44
+ return 0;
45
+ if (t.raw)
46
+ return t.raw === "-Infinity" ? 0 : 100;
47
+ const e = (t - this.min) / this.range * 100;
48
+ return e > 100 ? 100 : e < 0 ? 0 : e;
49
+ }
50
+ }
51
+ };
52
+ function m(t, e, p, c, l, s) {
53
+ return h(), a("div", {
54
+ class: "rangebar",
55
+ style: n([s.cssProps, t.computedStyle])
56
+ }, e[0] || (e[0] = [
57
+ r("div", { class: "rangebar__container" }, [
58
+ r("div", { class: "rangebar__line" }),
59
+ r("div", { class: "rangebar__arrow" })
60
+ ], -1)
61
+ ]), 4);
62
+ }
63
+ const f = /* @__PURE__ */ o(d, [["render", m], ["__scopeId", "data-v-34d37e7c"]]);
64
+ export {
65
+ f as default
66
+ };
67
+ //# sourceMappingURL=RangebarWidget-D_zGTtCa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangebarWidget-D_zGTtCa.js","sources":["../src/widgets/RangebarWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div class=\"rangebar\" :style=\"[cssProps, computedStyle]\">\n <div class=\"rangebar__container\">\n <div class=\"rangebar__line\" />\n <div class=\"rangebar__arrow\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n width: 160, // px\n height: 22, // px\n }\n },\n computed: {\n cssProps() {\n return {\n '--height': this.height + 'px',\n '--width': this.width + 'px',\n '--container-height': this.height - 5 + 'px',\n '--position': this.calcPosition() + '%',\n }\n },\n min() {\n return parseInt(this.parameters[3])\n },\n max() {\n return parseInt(this.parameters[4])\n },\n range() {\n return this.max - this.min\n },\n },\n created() {\n const type = this.parameters[5] ? this.parameters[5] : 'CONVERTED'\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n this.$emit('addItem', this.valueId)\n\n this.width = this.setWidth(this.parameters[6], 'px', this.width)\n this.height = this.setHeight(this.parameters[7], 'px', this.height)\n },\n unmounted() {\n this.$emit('deleteItem', this.valueId)\n },\n methods: {\n calcPosition() {\n let value = this.screenValues[this.valueId][0]\n if (!value) {\n return 0\n }\n if (value.raw) {\n if (value.raw === '-Infinity') {\n return 0\n } else {\n // NaN and Infinity\n return 100\n }\n }\n const result = ((value - this.min) / this.range) * 100\n if (result > 100) {\n return 100\n } else if (result < 0) {\n return 0\n } else {\n return result\n }\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.rangebar {\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5px;\n padding-top: 15px;\n width: var(--width);\n margin-bottom: 5px;\n}\n.rangebar__container {\n position: relative;\n flex: 1;\n height: var(--container-height);\n border: 1px solid black;\n background-color: white;\n}\n.rangebar__line {\n position: absolute;\n left: var(--position);\n width: 1px;\n height: var(--container-height);\n background-color: rgb(128, 128, 128);\n}\n$arrow-size: 5px;\n.rangebar__arrow {\n position: absolute;\n top: -$arrow-size;\n left: var(--position);\n width: 0;\n height: 0;\n transform: translateX(-$arrow-size); // Transform so it sits over the line\n border-left: $arrow-size solid transparent;\n border-right: $arrow-size solid transparent;\n border-top: $arrow-size solid rgb(128, 128, 128);\n}\n</style>\n"],"names":["_sfc_main","Widget","type","value","result","_createElementBlock","_normalizeStyle","$options","_ctx","_createElementVNode"],"mappings":";;;AAkCA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,OAAO;AACL,WAAO;AAAA,MACL,OAAO;AAAA;AAAA,MACP,QAAQ;AAAA;AAAA,IACV;AAAA,EACD;AAAA,EACD,UAAU;AAAA,IACR,WAAW;AACT,aAAO;AAAA,QACL,YAAY,KAAK,SAAS;AAAA,QAC1B,WAAW,KAAK,QAAQ;AAAA,QACxB,sBAAsB,KAAK,SAAS,IAAI;AAAA,QACxC,cAAc,KAAK,aAAY,IAAK;AAAA,MACtC;AAAA,IACD;AAAA,IACD,MAAM;AACJ,aAAO,SAAS,KAAK,WAAW,CAAC,CAAC;AAAA,IACnC;AAAA,IACD,MAAM;AACJ,aAAO,SAAS,KAAK,WAAW,CAAC,CAAC;AAAA,IACnC;AAAA,IACD,QAAQ;AACN,aAAO,KAAK,MAAM,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EACD,UAAU;AACR,UAAMC,IAAO,KAAK,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI;AACvD,SAAK,UAAU,GAAG,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAKA,CAAI,IAC3F,KAAK,MAAM,WAAW,KAAK,OAAO,GAElC,KAAK,QAAQ,KAAK,SAAS,KAAK,WAAW,CAAC,GAAG,MAAM,KAAK,KAAK,GAC/D,KAAK,SAAS,KAAK,UAAU,KAAK,WAAW,CAAC,GAAG,MAAM,KAAK,MAAM;AAAA,EACnE;AAAA,EACD,YAAY;AACV,SAAK,MAAM,cAAc,KAAK,OAAO;AAAA,EACtC;AAAA,EACD,SAAS;AAAA,IACP,eAAe;AACb,UAAIC,IAAQ,KAAK,aAAa,KAAK,OAAO,EAAE,CAAC;AAC7C,UAAI,CAACA;AACH,eAAO;AAET,UAAIA,EAAM;AACR,eAAIA,EAAM,QAAQ,cACT,IAGA;AAGX,YAAMC,KAAWD,IAAQ,KAAK,OAAO,KAAK,QAAS;AACnD,aAAIC,IAAS,MACJ,MACEA,IAAS,IACX,IAEAA;AAAA,IAEV;AAAA,EACF;AACH;;cAzEEC,EAKM,OAAA;AAAA,IALD,OAAM;AAAA,IAAY,OAvBzBC,EAAA,CAuBiCC,EAAQ,UAAEC,EAAa,aAAA,CAAA;AAAA;IACpDC,EAGM,OAAA,EAHD,OAAM,sBAAqB,GAAA;AAAA,MAC9BA,EAA8B,OAAA,EAAzB,OAAM,iBAAgB,CAAA;AAAA,MAC3BA,EAA+B,OAAA,EAA1B,OAAM,kBAAiB,CAAA;AAAA;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./Widget-ChoIB2dd.cjs"),r=require("vue"),a=require("./CustomIcon-Bop2mEnu.cjs"),n={mixins:[i.Widget],data(){return{width:160,height:22}},computed:{cssProps(){return{"--height":this.height+"px","--width":this.width+"px","--container-height":this.height-5+"px","--position":this.calcPosition()+"%"}},min(){return parseInt(this.parameters[3])},max(){return parseInt(this.parameters[4])},range(){return this.max-this.min}},created(){const e=this.parameters[5]?this.parameters[5]:"CONVERTED";this.valueId=`${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${e}`,this.$emit("addItem",this.valueId),this.width=this.setWidth(this.parameters[6],"px",this.width),this.height=this.setHeight(this.parameters[7],"px",this.height)},unmounted(){this.$emit("deleteItem",this.valueId)},methods:{calcPosition(){let e=this.screenValues[this.valueId][0];if(!e)return 0;if(e.raw)return e.raw==="-Infinity"?0:100;const t=(e-this.min)/this.range*100;return t>100?100:t<0?0:t}}};function h(e,t,d,c,u,s){return r.openBlock(),r.createElementBlock("div",{class:"rangebar",style:r.normalizeStyle([s.cssProps,e.computedStyle])},t[0]||(t[0]=[r.createElementVNode("div",{class:"rangebar__container"},[r.createElementVNode("div",{class:"rangebar__line"}),r.createElementVNode("div",{class:"rangebar__arrow"})],-1)]),4)}const o=a._export_sfc(n,[["render",h],["__scopeId","data-v-34d37e7c"]]);exports.default=o;
2
+ //# sourceMappingURL=RangebarWidget-DwIs-L5k.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangebarWidget-DwIs-L5k.cjs","sources":["../src/widgets/RangebarWidget.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 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div class=\"rangebar\" :style=\"[cssProps, computedStyle]\">\n <div class=\"rangebar__container\">\n <div class=\"rangebar__line\" />\n <div class=\"rangebar__arrow\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n width: 160, // px\n height: 22, // px\n }\n },\n computed: {\n cssProps() {\n return {\n '--height': this.height + 'px',\n '--width': this.width + 'px',\n '--container-height': this.height - 5 + 'px',\n '--position': this.calcPosition() + '%',\n }\n },\n min() {\n return parseInt(this.parameters[3])\n },\n max() {\n return parseInt(this.parameters[4])\n },\n range() {\n return this.max - this.min\n },\n },\n created() {\n const type = this.parameters[5] ? this.parameters[5] : 'CONVERTED'\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n this.$emit('addItem', this.valueId)\n\n this.width = this.setWidth(this.parameters[6], 'px', this.width)\n this.height = this.setHeight(this.parameters[7], 'px', this.height)\n },\n unmounted() {\n this.$emit('deleteItem', this.valueId)\n },\n methods: {\n calcPosition() {\n let value = this.screenValues[this.valueId][0]\n if (!value) {\n return 0\n }\n if (value.raw) {\n if (value.raw === '-Infinity') {\n return 0\n } else {\n // NaN and Infinity\n return 100\n }\n }\n const result = ((value - this.min) / this.range) * 100\n if (result > 100) {\n return 100\n } else if (result < 0) {\n return 0\n } else {\n return result\n }\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.rangebar {\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5px;\n padding-top: 15px;\n width: var(--width);\n margin-bottom: 5px;\n}\n.rangebar__container {\n position: relative;\n flex: 1;\n height: var(--container-height);\n border: 1px solid black;\n background-color: white;\n}\n.rangebar__line {\n position: absolute;\n left: var(--position);\n width: 1px;\n height: var(--container-height);\n background-color: rgb(128, 128, 128);\n}\n$arrow-size: 5px;\n.rangebar__arrow {\n position: absolute;\n top: -$arrow-size;\n left: var(--position);\n width: 0;\n height: 0;\n transform: translateX(-$arrow-size); // Transform so it sits over the line\n border-left: $arrow-size solid transparent;\n border-right: $arrow-size solid transparent;\n border-top: $arrow-size solid rgb(128, 128, 128);\n}\n</style>\n"],"names":["_sfc_main","Widget","type","value","result","_createElementBlock","_normalizeStyle","$options","_ctx","_createElementVNode"],"mappings":"iLAkCKA,EAAU,CACb,OAAQ,CAACC,EAAAA,MAAM,EACf,MAAO,CACL,MAAO,CACL,MAAO,IACP,OAAQ,EACV,CACD,EACD,SAAU,CACR,UAAW,CACT,MAAO,CACL,WAAY,KAAK,OAAS,KAC1B,UAAW,KAAK,MAAQ,KACxB,qBAAsB,KAAK,OAAS,EAAI,KACxC,aAAc,KAAK,aAAY,EAAK,GACtC,CACD,EACD,KAAM,CACJ,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CACnC,EACD,KAAM,CACJ,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CACnC,EACD,OAAQ,CACN,OAAO,KAAK,IAAM,KAAK,GACxB,CACF,EACD,SAAU,CACR,MAAMC,EAAO,KAAK,WAAW,CAAC,EAAI,KAAK,WAAW,CAAC,EAAI,YACvD,KAAK,QAAU,GAAG,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,KAAKA,CAAI,GAC3F,KAAK,MAAM,UAAW,KAAK,OAAO,EAElC,KAAK,MAAQ,KAAK,SAAS,KAAK,WAAW,CAAC,EAAG,KAAM,KAAK,KAAK,EAC/D,KAAK,OAAS,KAAK,UAAU,KAAK,WAAW,CAAC,EAAG,KAAM,KAAK,MAAM,CACnE,EACD,WAAY,CACV,KAAK,MAAM,aAAc,KAAK,OAAO,CACtC,EACD,QAAS,CACP,cAAe,CACb,IAAIC,EAAQ,KAAK,aAAa,KAAK,OAAO,EAAE,CAAC,EAC7C,GAAI,CAACA,EACH,MAAO,GAET,GAAIA,EAAM,IACR,OAAIA,EAAM,MAAQ,YACT,EAGA,IAGX,MAAMC,GAAWD,EAAQ,KAAK,KAAO,KAAK,MAAS,IACnD,OAAIC,EAAS,IACJ,IACEA,EAAS,EACX,EAEAA,CAEV,CACF,CACH,+CAzEEC,EAKM,mBAAA,MAAA,CALD,MAAM,WAAY,MAvBzBC,EAAA,eAAA,CAuBiCC,EAAQ,SAAEC,EAAa,aAAA,CAAA,gBACpDC,EAAAA,mBAGM,MAAA,CAHD,MAAM,qBAAqB,EAAA,CAC9BA,EAAAA,mBAA8B,MAAA,CAAzB,MAAM,gBAAgB,CAAA,EAC3BA,EAAAA,mBAA+B,MAAA,CAA1B,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("./WidgetComponents-utpQ592X.cjs"),e=require("vue"),h=require("./CustomIcon-Bop2mEnu.cjs"),C={data(){return{redisCommandText:"",redisResponse:null,redisEndpoint:"/openc3-api/redis/exec",headers:[{text:"Redis",value:"redis",width:150},{text:"Command",value:"command"},{text:"Response",value:"response"}],commands:[]}},methods:{commandKeydown:function(n){n.key==="Enter"&&this.executeRaw()},executeRaw:function(){this.redisResponse=null,x.oi.post(this.redisEndpoint,{data:this.redisCommandText,headers:{Accept:"application/json","Content-Type":"plain/text"}}).then(n=>{this.redisResponse=n.data.result;let t="Ephemeral";this.redisEndpoint==="/openc3-api/redis/exec"&&(t="Persistent"),this.commands.unshift({redis:t,command:this.redisCommandText,response:this.redisResponse})})}}},V={key:0,class:"monospace"};function f(n,t,b,w,o,d){const r=e.resolveComponent("v-card-title"),l=e.resolveComponent("v-card-subtitle"),i=e.resolveComponent("v-text-field"),c=e.resolveComponent("v-card-text"),m=e.resolveComponent("v-btn"),a=e.resolveComponent("v-radio"),p=e.resolveComponent("v-radio-group"),u=e.resolveComponent("v-card-actions"),_=e.resolveComponent("v-data-table"),v=e.resolveComponent("v-card");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(v,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>t[2]||(t[2]=[e.createTextVNode(" Send Raw Redis Commands ")])),_:1}),e.createVNode(l,null,{default:e.withCtx(()=>t[3]||(t[3]=[e.createTextVNode(" THIS IS DANGEROUS. This allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. "),e.createElementVNode("br",null,null,-1),e.createElementVNode("br",null,null,-1),e.createTextVNode(" Enter commands like you would at the Redis cli prompt: "),e.createElementVNode("code",null,"ping",-1),e.createTextVNode(" or "),e.createElementVNode("code",null,"hget openc3__settings version",-1)])),_:1}),e.createVNode(c,{class:"pb-0 ml-2"},{default:e.withCtx(()=>[e.createVNode(i,{label:"Redis command",class:"monospace",modelValue:o.redisCommandText,"onUpdate:modelValue":t[0]||(t[0]=s=>o.redisCommandText=s),onKeydown:d.commandKeydown},null,8,["modelValue","onKeydown"]),o.redisResponse?(e.openBlock(),e.createElementBlock("span",V," Response: "+e.toDisplayString(o.redisResponse),1)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(u,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(m,{disabled:!o.redisCommandText.length,onClick:d.executeRaw,color:"success",variant:"text"},{default:e.withCtx(()=>t[4]||(t[4]=[e.createTextVNode(" Execute ")])),_:1},8,["disabled","onClick"]),e.createVNode(p,{modelValue:o.redisEndpoint,"onUpdate:modelValue":t[1]||(t[1]=s=>o.redisEndpoint=s),inline:"","hide-details":"",class:"mt-0"},{default:e.withCtx(()=>[e.createVNode(a,{label:"Persistent",value:"/openc3-api/redis/exec","data-test":"persistent-radio"}),e.createVNode(a,{label:"Ephemeral",value:"/openc3-api/redis/exec?ephemeral=1","data-test":"ephemeral-radio"})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(_,{headers:o.headers,items:o.commands,class:"monospace","items-per-page":-1,"hide-default-footer":"",density:"compact",height:"45vh"},null,8,["headers","items"])]),_:1})])}const N=h._export_sfc(C,[["render",f],["__scopeId","data-v-28716ab0"]]);exports.default=N;
2
+ //# sourceMappingURL=RedisTab-67UcKoPf.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisTab-67UcKoPf.cjs","sources":["../src/tools/admin/tabs/RedisTab.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 2023, 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-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n label=\"Redis command\"\n class=\"monospace\"\n v-model=\"redisCommandText\"\n @keydown=\"commandKeydown\"\n />\n <span v-if=\"redisResponse\" class=\"monospace\">\n Response: {{ redisResponse }}\n </span>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-btn\n :disabled=\"!redisCommandText.length\"\n @click=\"executeRaw\"\n color=\"success\"\n variant=\"text\"\n >\n Execute\n </v-btn>\n <v-radio-group v-model=\"redisEndpoint\" inline hide-details class=\"mt-0\">\n <v-radio\n label=\"Persistent\"\n value=\"/openc3-api/redis/exec\"\n data-test=\"persistent-radio\"\n />\n <v-radio\n label=\"Ephemeral\"\n value=\"/openc3-api/redis/exec?ephemeral=1\"\n data-test=\"ephemeral-radio\"\n />\n </v-radio-group>\n </v-card-actions>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"commands\"\n class=\"monospace\"\n :items-per-page=\"-1\"\n hide-default-footer\n density=\"compact\"\n height=\"45vh\"\n >\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n redisCommandText: '',\n redisResponse: null,\n redisEndpoint: '/openc3-api/redis/exec',\n headers: [\n { text: 'Redis', value: 'redis', width: 150 },\n { text: 'Command', value: 'command' },\n { text: 'Response', value: 'response' },\n ],\n commands: [],\n }\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === 'Enter' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'plain/text',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n let redis = 'Ephemeral'\n if (this.redisEndpoint === '/openc3-api/redis/exec') {\n redis = 'Persistent'\n }\n this.commands.unshift({\n redis: redis,\n command: this.redisCommandText,\n response: this.redisResponse,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.monospace {\n font-family: monospace;\n font-size: 20px;\n}\n</style>\n"],"names":["_sfc_main","$event","Api","response","redis","_createElementBlock","_createVNode","_component_v_card","_withCtx","_component_v_card_title","_cache","_createTextVNode","_component_v_card_subtitle","_createElementVNode","_component_v_card_text","_component_v_text_field","$data","$options","_openBlock","_hoisted_1","_createCommentVNode","_component_v_card_actions","_component_v_btn","_component_v_radio_group","_component_v_radio","_component_v_data_table"],"mappings":"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"}