cosmosc2-tool-tlmviewer 5.0.2 → 5.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"js/947.js","mappings":"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","sources":["webpack://@cosmosc2/tool-tlmviewer/../../node_modules/@cosmosc2/tool-common/src/components/widgets/ sync nonrecursive [A-Z]\\w+Widget\\.vue$","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageLoader.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/Layout.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VWidget.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/Widget.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/WidthSetter.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/api.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/axios.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/cable.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/cosmos-api.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?88c8","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?7eb0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?fdbd","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?4c4c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?1d9c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?c2e2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?6f2e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?74fc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?705e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue?4269","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue?bbf4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue?657c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?6840","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?96eb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?b24b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue?c855","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue?f77f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue?7b79","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue?9557","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue?7945","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue?1a28","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue?60fa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue?cde7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue?7ad0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue?ae84","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue?4737","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue?ef6c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue?a641","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue?d01c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue?790a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue?72cb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue?08a0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue?159d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue?3f88","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue?5671","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue?11ac","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue?3472","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue?2faf","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue?9d18","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue?30fa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue?7434","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue?9966","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue?18e4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue?73b2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue?5451","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue?99ca","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue?b95e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue?5f21","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue?8944","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue?0fa2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue?d216","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?9fa8","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?7425","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?5d62","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue?9962","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue?d58d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue?b562","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue?9ab6","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue?febe","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue?44a4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?f72a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?1e32","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?800c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue?762e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue?bbfa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue?b322","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue?a595","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue?519f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue?c6eb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?cd0d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?4fd8","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?19fc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue?7af1","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue?ec8d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue?b3f5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?00b3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?cc59","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?495e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue?f487","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue?c485","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue?070a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue?196c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue?4be4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue?3d79","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?b5e5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?7d53","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?3c24","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?2de4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?584c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?56ec","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?63b9","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?663c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?84b7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?b4c9","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?8672","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?5d8f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue?a979","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?a605","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue?40c6","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue?2f38","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue?f834","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?25dc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?0667","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue?3733","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue?5590","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue?2e2b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue?5b11","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue?8e7f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue?7200","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue?94ed","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue?283b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue?34e4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue?4cd3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue?abe3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue?8888","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue?fbe0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue?b904","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?1502","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?b89c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?51aa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue?7860","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue?5ed1","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue?1ae4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue?ed1f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue?e6d2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue?5c86","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue?406c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue?3573","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue?49c7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue?ae3e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue?6fee","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue?f966","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?d762","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?b40d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?a43e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue?777d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue?eebc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue?da48","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue?a136","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue?7f2a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue?ed11","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?26e5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?5139","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?0a72","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue?51f5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue?7cc5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue?ce92","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue?d011","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue?89a9","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue?4c45","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue?ede7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue?3546","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue?aa05","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue?853e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue?924e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue?db06","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?541a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?f5a2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?0af6","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?8780","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?da40","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/config-parser.js","webpack://@cosmosc2/tool-tlmviewer/src/tools/TlmViewer/CosmosScreen.vue","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?ec27","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?d129","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?b667","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?6158","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?36c2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?e52f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?65b7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?228d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?adab","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?dfc0","webpack://@cosmosc2/tool-tlmviewer/src/tools/TlmViewer/TlmViewer.vue","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?f30b","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?82b3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?55b2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?b2db","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?743f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?4924","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?07cd","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?6b70","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?cb9c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?d93b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?6b3d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?f662","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?15aa","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?60d0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?94ad","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?cdf2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?792e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?04fb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?9001","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?dfc1","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?9ac1","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?5429","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?4ae6","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?de92","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?9cf2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?b8ed","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?5124","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?65b3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?9e58","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?74ed","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?8e1a","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?a788","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?1465","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?30f4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?be8b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?f580","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?2dbb"],"sourcesContent":["var map = {\n\t\"./ArrayWidget.vue\": 1358,\n\t\"./BlockWidget.vue\": 5393,\n\t\"./ButtonWidget.vue\": 3945,\n\t\"./CanvasWidget.vue\": 8494,\n\t\"./CanvasdotWidget.vue\": 8176,\n\t\"./CanvasimageWidget.vue\": 8116,\n\t\"./CanvasimagevalueWidget.vue\": 5467,\n\t\"./CanvaslabelWidget.vue\": 2739,\n\t\"./CanvaslabelvalueWidget.vue\": 1981,\n\t\"./CanvaslineWidget.vue\": 3003,\n\t\"./CanvaslinevalueWidget.vue\": 8605,\n\t\"./CheckbuttonWidget.vue\": 604,\n\t\"./ComboboxWidget.vue\": 2229,\n\t\"./DynamicWidget.vue\": 393,\n\t\"./FormatvalueWidget.vue\": 7451,\n\t\"./HorizontalWidget.vue\": 1297,\n\t\"./HorizontalboxWidget.vue\": 978,\n\t\"./IframeWidget.vue\": 443,\n\t\"./ImageviewerWidget.vue\": 6735,\n\t\"./LabelWidget.vue\": 3520,\n\t\"./LabelledWidget.vue\": 2915,\n\t\"./LabelprogressbarWidget.vue\": 6632,\n\t\"./LabelvalueWidget.vue\": 7701,\n\t\"./LabelvaluedescWidget.vue\": 8074,\n\t\"./LabelvaluelimitsbarWidget.vue\": 1579,\n\t\"./LabelvaluelimitscolumnWidget.vue\": 3288,\n\t\"./LabelvaluerangebarWidget.vue\": 3249,\n\t\"./LedWidget.vue\": 7146,\n\t\"./LimitsbarWidget.vue\": 2570,\n\t\"./LimitscolorWidget.vue\": 1873,\n\t\"./LimitscolumnWidget.vue\": 5290,\n\t\"./LinegraphWidget.vue\": 6148,\n\t\"./MatrixbycolumnsWidget.vue\": 1110,\n\t\"./ProgressbarWidget.vue\": 34,\n\t\"./RadiobuttonWidget.vue\": 8022,\n\t\"./RadiogroupWidget.vue\": 1390,\n\t\"./RangebarWidget.vue\": 6117,\n\t\"./ScrollwindowWidget.vue\": 4825,\n\t\"./SectionheaderWidget.vue\": 1354,\n\t\"./SpacerWidget.vue\": 8879,\n\t\"./TabbookWidget.vue\": 9181,\n\t\"./TextboxWidget.vue\": 9669,\n\t\"./TextfieldWidget.vue\": 2872,\n\t\"./TitleWidget.vue\": 6690,\n\t\"./ValueWidget.vue\": 7720,\n\t\"./ValuelimitsbarWidget.vue\": 4907,\n\t\"./ValuelimitscolumnWidget.vue\": 6756,\n\t\"./ValuerangebarWidget.vue\": 6963,\n\t\"./VerticalWidget.vue\": 9314,\n\t\"./VerticalboxWidget.vue\": 5637\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6263;","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-btn class=\"ma-1\" color=\"primary\" :style=\"computedStyle\" @click=\"onClick\">\n {{ buttonText }}\n </v-btn>\n <v-dialog v-model=\"displaySendHazardous\" max-width=\"300\">\n <v-card class=\"pa-3\">\n <v-card-title class=\"headline\">Hazardous</v-card-title>\n <v-card-text> Warning: Command is Hazardous. Send? </v-card-text>\n <v-btn @click=\"sendHazardousCmd\" class=\"primary mr-4\">Yes</v-btn>\n <v-btn @click=\"cancelHazardousCmd\" class=\"primary\">No</v-btn>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { CosmosApi } from '../../services/cosmos-api'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n api: null,\n screen: null,\n displaySendHazardous: false,\n lastCmd: '',\n }\n },\n computed: {\n buttonText() {\n return this.parameters[0]\n },\n eval() {\n return this.parameters[1]\n },\n },\n created() {\n this.api = new CosmosApi()\n // Look through the settings and get a reference to the screen\n this.settings.forEach((setting) => {\n if (setting[0] === 'SCREEN') {\n this.screen = setting[1]\n }\n })\n },\n methods: {\n onClick() {\n const lines = this.eval.split(';')\n // Create local references to variables so users don't need to use 'this'\n const self = this // needed for $emit\n const screen = this.screen\n const api = this.api\n lines.forEach((line) => {\n const result = eval(line.trim())\n if (result instanceof Promise) {\n result\n .then((success) => {})\n .catch((err) => {\n if (err.message.includes('HazardousError')) {\n this.lastCmd = err.message.split('\\n')[2]\n this.displaySendHazardous = true\n }\n })\n }\n })\n },\n sendHazardousCmd() {\n this.displaySendHazardous = false\n // TODO: This only handles basic cmd() calls in buttons, do we need to handle other? cmd_raw()?\n this.lastCmd = this.lastCmd.replace(\n 'cmd(',\n 'this.api.cmd_no_hazardous_check('\n )\n eval(this.lastCmd)\n },\n cancelHazardousCmd() {\n this.displaySendHazardous = false\n },\n },\n}\n</script>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport Api from '../../services/api'\n\nexport default {\n props: {\n target: {\n type: String,\n require: true,\n },\n },\n methods: {\n getPresignedUrl: async function (fileName) {\n const response = await Api.get(\n `/cosmos-api/storage/download/${encodeURIComponent(\n `${localStorage.scope}/targets/${this.target}/public/${fileName}`\n )}?bucket=config`\n )\n return response.data.url\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n props: {\n widgets: {\n type: Array,\n default: () => [],\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport Widget from './Widget'\nimport 'sprintf-js'\nexport default {\n mixins: [Widget],\n // ValueWidget can either get it's value and limitsState directly through props\n // or it will register itself in the Vuex store and be updated asyncronously\n props: {\n value: {\n default: null,\n },\n limitsState: {\n type: String,\n default: null,\n },\n formatString: null,\n },\n data() {\n return {\n valueId: null,\n colorBlind: false,\n viewDetails: false,\n contextMenuShown: false,\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n {\n title: 'Graph',\n action: () => {\n window.open(\n '/tools/tlmgrapher/' +\n this.parameters[0] +\n '/' +\n this.parameters[1] +\n '/' +\n this.parameters[2],\n '_blank'\n )\n },\n },\n ],\n }\n },\n computed: {\n _value: function () {\n let value = this.value\n if (value === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n value = this.$store.state.tlmViewerValues[this.valueId][0]\n } else {\n value = null\n }\n }\n const formatted = this.formatValue(value)\n if (localStorage.colorblindMode === 'true' && this.limitsLetter !== '') {\n return `${formatted} (${this.limitsLetter})`\n }\n return formatted\n },\n valueClass: function () {\n return 'value shrink pa-1 ' + 'cosmos-' + this.limitsColor\n },\n limitsColor() {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n limitsState = this.$store.state.tlmViewerValues[this.valueId][1]\n } else {\n limitsState = null\n }\n }\n if (limitsState != null) {\n switch (limitsState) {\n case 'GREEN':\n case 'GREEN_HIGH':\n case 'GREEN_LOW':\n return 'green'\n case 'YELLOW':\n case 'YELLOW_HIGH':\n case 'YELLOW_LOW':\n return 'yellow'\n case 'RED':\n case 'RED_HIGH':\n case 'RED_LOW':\n return 'red'\n case 'BLUE':\n return 'blue'\n case 'STALE':\n return 'purple'\n default:\n return 'white'\n }\n }\n return ''\n },\n limitsLetter() {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n limitsState = this.$store.state.tlmViewerValues[this.valueId][1]\n } else {\n limitsState = null\n }\n }\n if (limitsState != null) {\n let c = limitsState.charAt(0)\n if (limitsState.endsWith('_LOW')) {\n c = c.toLowerCase()\n }\n return c\n }\n return ''\n },\n },\n created() {\n // If they're not passing us the value and limitsState we have to register\n if (this.value === null || this.limitsState === null) {\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${\n this.parameters[2]\n }__${this.getType()}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n }\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n methods: {\n getType() {\n var type = 'WITH_UNITS'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n return type\n },\n formatValue(value) {\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n let result = '['\n for (let i = 0; i < value.length; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n result += '\"' + value[i] + '\"'\n } else {\n result += value[i]\n }\n if (i != value.length - 1) {\n result += ', '\n }\n }\n result += ']'\n return result\n } else if (\n Object.prototype.toString.call(value).slice(8, -1) === 'Object'\n ) {\n return ''\n } else {\n if (this.formatString && value) {\n return sprintf(this.formatString, value)\n } else {\n return '' + value\n }\n }\n },\n showContextMenu(e) {\n e.preventDefault()\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nexport default {\n props: {\n widgetIndex: {\n type: Number,\n default: null,\n },\n parameters: {\n type: Array,\n default: () => [],\n },\n settings: {\n type: Array,\n default: () => [],\n },\n },\n computed: {\n computedStyle() {\n let style = {}\n this.settings.forEach((setting) => {\n const index = parseInt(setting[0])\n if (this.widgetIndex !== null) {\n if (this.widgetIndex === index) {\n setting = setting.slice(1)\n } else {\n return\n }\n }\n switch (setting[0]) {\n case 'TEXTALIGN':\n style['text-align'] = setting[1].toLowerCase()\n break\n case 'PADDING':\n style['padding'] = setting[1] + 'px !important'\n break\n case 'MARGIN':\n style['margin'] = setting[1] + 'px !important'\n break\n case 'BACKCOLOR':\n style['background-color'] = this.getColor(setting.slice(1))\n break\n case 'TEXTCOLOR':\n style['color'] = this.getColor(setting.slice(1))\n break\n case 'BORDERCOLOR':\n style['border-width'] = '1px'\n style['border-style'] = 'solid'\n style['border-color'] = this.getColor(setting.slice(1))\n break\n case 'WIDTH':\n style['width'] = setting[1] + 'px !important'\n break\n case 'HEIGHT':\n style['height'] = setting[1] + 'px !important'\n break\n case 'RAW':\n style[setting[1].toLowerCase()] = setting[2]\n break\n }\n })\n return style\n },\n },\n methods: {\n // Expects an array, can either be a single color or 3 rgb values\n getColor(setting) {\n switch (setting.length) {\n case 1:\n return setting[0].toLowerCase()\n case 3:\n return `rgb(${setting[0]},${setting[1]},${setting[2]})`\n }\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nexport default {\n data: function () {\n return {\n originalWidthSetting: null,\n }\n },\n created: function () {\n this.originalWidthSetting = ['WIDTH', this.width]\n this.resetWidth()\n },\n beforeUpdate: function () {\n this.resetWidth()\n },\n methods: {\n resetWidth: function () {\n // This sets 'WIDTH' when it gets created, but that is lost if it gets\n // re-rendered by CosmosScreen.vue parsing the config string again\n if (!this.settings.some((setting) => setting[0] === 'WIDTH')) {\n this.settings.unshift(this.originalWidthSetting)\n }\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n headers['Authorization'] = localStorage.cosmosToken\n }\n if (!noScope && !params['scope']) {\n params['scope'] = localStorage.scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 10000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response.status === 401) {\n delete localStorage.cosmosToken\n CosmosAuth.login(location.href)\n } else {\n let body = `HTTP ${error.response.status} - `\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n }\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport * as ActionCable from 'actioncable'\n\nexport default class Cable {\n constructor(url = '/cosmos-api/cable') {\n this._cable = ActionCable.createConsumer(url)\n }\n disconnect() {\n this._cable.disconnect()\n }\n createSubscription(channel, scope, callbacks = {}, additionalOptions = {}) {\n return CosmosAuth.updateToken(CosmosAuth.defaultMinValidity).then(() => {\n return this._cable.subscriptions.create(\n {\n channel,\n scope,\n token: localStorage.cosmosToken,\n ...additionalOptions,\n },\n callbacks\n )\n })\n }\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nexport class CosmosApi {\n id = 1\n\n constructor() {}\n\n // This is hacky Json-rpc for now. Should probably use a jsonrpc library.\n async exec(method, params, kwparams = {}) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = localStorage.scope\n const response = await axios.post(\n '/cosmos-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.cosmosToken,\n 'Content-Type': 'application/json-rpc',\n },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n //console.log(error)\n throw err\n }\n }\n\n decode_cosmos_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_cosmos_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n connect_interface(interface_name) {\n return this.exec('connect_interface', [interface_name])\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_all_cmd_info() {\n return this.exec('get_all_cmd_info', [])\n }\n\n get_all_tlm_info() {\n return this.exec('get_all_tlm_info', [])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_oldest_logfile() {\n return this.exec('get_oldest_logfile', [])\n }\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n // Called by PacketViewerComponent\n async get_tlm_packet(target_name, packet_name, value_type) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n // Called by PacketViewerComponent\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n // Called by CmdTlmServer Tlm Packets tab\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n // Called by CosmosScreenComponent\n async get_tlm_values(items) {\n const data = await this.exec('get_tlm_values', [items])\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n // Called by LimitsbarWidget\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n // Called by LimitsMonitorComponent\n async tlm(target_name, packet_name, item_name) {\n const data = await this.exec('tlm', [target_name, packet_name, item_name])\n var converted = this.decode_cosmos_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n // Called by CmdTlmServer Cmd Packets tab\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_cosmos_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(method, [target_name, command_name, param_list])\n }\n\n // Called by CmdSenderComponent\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name)\n } else {\n return this._cmd('cmd', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n // Called by CmdSenderComponent\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Details \")]),_c('v-spacer')],1),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.packetName)+\" \"+_vm._s(_vm.itemName)+\" \")]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.details.description))]),_c('v-card-text',[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.type === 'tlm')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Item Values\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Raw Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.rawValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Converted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.convertedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Formatted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.formattedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"With Units Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.unitsValue))])],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Offset\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_offset))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_size))])],1),(_vm.details.array_size)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Array Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.array_size))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Data Type\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.data_type))])],1),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Minimum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.minimum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Maximum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.maximum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Default\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.default))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Format String\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.format_string))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Read Conversion\")]),(_vm.details.read_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.read_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.read_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Write Conversion\")]),(_vm.details.write_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.write_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.write_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Id Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.id_value))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Full\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units_full))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Abbr\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Endianness\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.endianness))])],1),(_vm.details.states)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.states),function(state,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(state.value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.limits)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.limits),function(limit,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_vm._v(\" \"+_vm._s(_vm.formatLimit(limit))+\" \"),_c('v-col')],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.meta)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.meta),function(value,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col',[_vm._v(\"None\")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Details </span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-title>\n {{ targetName }} {{ packetName }} {{ itemName }}\n </v-card-title>\n <v-card-subtitle>{{ details.description }}</v-card-subtitle>\n <v-card-text>\n <v-container fluid>\n <v-row no-gutters v-if=\"type === 'tlm'\">\n <v-col cols=\"3\" class=\"label\">Item Values</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Raw Value</v-col>\n <v-col>{{ rawValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Converted Value</v-col>\n <v-col>{{ convertedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Formatted Value</v-col>\n <v-col>{{ formattedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">With Units Value</v-col>\n <v-col>{{ unitsValue }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Offset</v-col>\n <v-col>{{ details.bit_offset }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Size</v-col>\n <v-col>{{ details.bit_size }}</v-col>\n </v-row>\n <v-row v-if=\"details.array_size\" no-gutters>\n <v-col cols=\"3\" class=\"label\">Array Size</v-col>\n <v-col>{{ details.array_size }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Data Type</v-col>\n <v-col>{{ details.data_type }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Minimum</v-col>\n <v-col>{{ details.minimum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Maximum</v-col>\n <v-col>{{ details.maximum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Default</v-col>\n <v-col>{{ details.default }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Format String</v-col>\n <v-col>{{ details.format_string }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Read Conversion</v-col>\n <v-col v-if=\"details.read_conversion\">\n Class: {{ details.read_conversion.class }}\n <br />\n Params:\n {{ details.read_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Write Conversion</v-col>\n <v-col v-if=\"details.write_conversion\">\n Class: {{ details.write_conversion.class }}\n <br />\n Params:\n {{ details.write_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Id Value</v-col>\n <v-col>{{ details.id_value }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Full</v-col>\n <v-col>{{ details.units_full }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Abbr</v-col>\n <v-col>{{ details.units }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Endianness</v-col>\n <v-col>{{ details.endianness }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.states\">\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(state, key) in details.states\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ state.value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.limits\">\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(limit, key) in details.limits\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n {{ formatLimit(limit) }}\n <v-col></v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.meta\">\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters v-for=\"(value, key) in details.meta\" :key=\"key\">\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row v-else no-gutters>\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col>None</v-col>\n </v-row>\n </v-container>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n type: {\n default: 'tlm',\n validator: function (value) {\n // The value must match one of these strings\n return ['cmd', 'tlm'].indexOf(value) !== -1\n },\n },\n targetName: String,\n packetName: String,\n itemName: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n details: Object,\n updater: null,\n rawValue: null,\n convertedValue: null,\n formattedValue: null,\n unitsValue: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n created() {\n this.api = new CosmosApi()\n },\n beforeDestroy() {\n clearInterval(this.updater)\n this.updater = null\n },\n watch: {\n // Create a watcher on value which is the indicator to display the dialog\n // If value is true we request the details from the server\n // If this is a tlm dialog we setup an interval to get the telemetry values\n value: function (newValue, oldValue) {\n if (newValue) {\n this.requestDetails()\n if (this.type === 'tlm') {\n this.updater = setInterval(() => {\n this.api\n .get_tlm_values([\n `${this.targetName}__${this.packetName}__${this.itemName}__RAW`,\n `${this.targetName}__${this.packetName}__${this.itemName}__CONVERTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__FORMATTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__WITH_UNITS`,\n ])\n .then((values) => {\n this.rawValue = values[0][0]\n this.convertedValue = values[1][0]\n this.formattedValue = values[2][0]\n this.unitsValue = values[3][0]\n })\n }, 1000)\n }\n } else {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n },\n methods: {\n requestDetails() {\n if (this.type === 'tlm') {\n this.api\n .get_item(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n } else {\n this.api\n .get_parameter(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n }\n },\n formatLimit(limit) {\n if (limit.green_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high +\n ' GL/' +\n limit.green_low +\n ' GH/' +\n limit.green_high\n )\n } else if (limit.red_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high\n )\n } else {\n return limit\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-weight: bold;\n text-transform: capitalize;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailsDialog.vue?vue&type=template&id=3eb9665d&scoped=true&\"\nimport script from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3eb9665d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-textarea',{class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"height\":_vm.height,\"value\":_vm._value,\"data-test\":\"array-widget\"},on:{\"contextmenu\":_vm.showContextMenu}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-textarea\n solo\n dense\n readonly\n hide-details\n placeholder=\"Value\"\n :height=\"height\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"array-widget\"\n @contextmenu=\"showContextMenu\"\n />\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport WidthSetter from './WidthSetter'\nimport DetailsDialog from '../../components/DetailsDialog'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n },\n data: function () {\n return {\n height: 100,\n itemsPerRow: 4,\n formatter: null,\n }\n },\n mixins: [VWidget, WidthSetter],\n created: function () {\n if (this.parameters[3]) {\n this.width = parseInt(this.parameters[3])\n }\n if (this.parameters[4]) {\n this.height = parseInt(this.parameters[4])\n }\n if (this.parameters[5]) {\n this.formatter = this.parameters[5]\n }\n if (this.parameters[6]) {\n this.itemsPerRow = parseInt(this.parameters[6])\n }\n },\n methods: {\n getType: function () {\n var type = 'CONVERTED'\n if (this.parameters[7]) {\n type = this.parameters[7]\n }\n return type\n },\n formatValue: function (data) {\n var text = ''\n var space = ' '\n var newLine = '\\n'\n var count = 0\n\n if (Array.isArray(data)) {\n for (const value of data) {\n if (this.formatter?.toLowerCase() !== 'nil') {\n text += sprintf(this.formatter, value)\n } else {\n text += value\n }\n count += 1\n if (count % this.itemsPerRow === 0) {\n count = 0\n text += newLine\n } else {\n text += space\n }\n }\n return text.trim()\n } else {\n return data\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.value >>> div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n.cosmos-green >>> input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow >>> input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red >>> input {\n color: red;\n}\n.cosmos-blue >>> input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple >>> input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black >>> input {\n color: black;\n}\n.cosmos-white >>> input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrayWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrayWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrayWidget.vue?vue&type=template&id=3369b22f&scoped=true&\"\nimport script from \"./ArrayWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrayWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArrayWidget.vue?vue&type=style&index=0&id=3369b22f&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3369b22f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-textarea',{class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"height\":_vm.height,\"value\":_vm._value,\"data-test\":\"valueText\"},on:{\"contextmenu\":_vm.showContextMenu}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-textarea\n solo\n dense\n readonly\n hide-details\n placeholder=\"Value\"\n :height=\"height\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"valueText\"\n @contextmenu=\"showContextMenu\"\n />\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport WidthSetter from './WidthSetter'\nimport DetailsDialog from '../../components/DetailsDialog'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n },\n data: function () {\n return {\n width: 400,\n height: 600,\n bytesPerWord: 4,\n wordsPerRow: 4,\n addrFormat: null,\n formatter: '%02X',\n }\n },\n mixins: [VWidget, WidthSetter],\n created: function () {\n if (this.parameters[3]) {\n this.width = parseInt(this.parameters[3])\n }\n if (this.parameters[4]) {\n this.height = parseInt(this.parameters[4])\n }\n if (this.parameters[5]) {\n this.formatter = this.parameters[5]\n }\n if (this.parameters[6]) {\n this.bytesPerWord = parseInt(this.parameters[6])\n }\n if (this.parameters[7]) {\n this.wordsPerRow = parseInt(this.parameters[7])\n }\n if (this.parameters[8]) {\n this.addrFormat = parseInt(this.parameters[8])\n }\n // parameter[9] is the type ... see getType()\n },\n methods: {\n getType: function () {\n var type = 'RAW'\n if (this.parameters[9]) {\n type = this.parameters[9]\n }\n return type\n },\n formatValue: function (data) {\n var text = ''\n if (data && data.raw) {\n var space = ' '\n var newLine = '\\n'\n\n var byteCount = 0\n var addr = 0\n const bytesPerRow = this.bytesPerWord * this.wordsPerRow\n\n for (const value of data.raw) {\n if (this.addrFormat && byteCount === 0) {\n text += sprintf(this.addrFormat, addr)\n addr += bytesPerRow\n }\n text += sprintf(this.formatter, value)\n byteCount += 1\n if (byteCount % bytesPerRow === 0) {\n byteCount = 0\n text += newLine\n } else if (byteCount % this.bytesPerWord === 0) {\n text += space\n }\n }\n }\n return text\n },\n },\n}\n</script>\n\n<style scoped>\n.v-textarea >>> textarea {\n font-family: 'Courier New', Courier, monospace;\n}\n.value >>> div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n.cosmos-green >>> input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow >>> input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red >>> input {\n color: red;\n}\n.cosmos-blue >>> input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple >>> input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black >>> input {\n color: black;\n}\n.cosmos-white >>> input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BlockWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BlockWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BlockWidget.vue?vue&type=template&id=401cb124&scoped=true&\"\nimport script from \"./BlockWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./BlockWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BlockWidget.vue?vue&type=style&index=0&id=401cb124&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"401cb124\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-btn',{staticClass:\"ma-1\",style:(_vm.computedStyle),attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onClick}},[_vm._v(\" \"+_vm._s(_vm.buttonText)+\" \")]),_c('v-dialog',{attrs:{\"max-width\":\"300\"},model:{value:(_vm.displaySendHazardous),callback:function ($$v) {_vm.displaySendHazardous=$$v},expression:\"displaySendHazardous\"}},[_c('v-card',{staticClass:\"pa-3\"},[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(\"Hazardous\")]),_c('v-card-text',[_vm._v(\" Warning: Command is Hazardous. Send? \")]),_c('v-btn',{staticClass:\"primary mr-4\",on:{\"click\":_vm.sendHazardousCmd}},[_vm._v(\"Yes\")]),_c('v-btn',{staticClass:\"primary\",on:{\"click\":_vm.cancelHazardousCmd}},[_vm._v(\"No\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ButtonWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ButtonWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ButtonWidget.vue?vue&type=template&id=0f52a486&\"\nimport script from \"./ButtonWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ButtonWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"id\":\"canvas\",\"width\":_vm.width,\"height\":_vm.height}},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <svg id=\"canvas\" :width=\"width\" :height=\"height\">\n <component\n v-for=\"(widget, index) in widgets\"\n v-on=\"$listeners\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </svg>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n computed: {\n width() {\n return this.parameters[0] + 'px'\n },\n height() {\n return this.parameters[1] + 'px'\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsvg {\n background-color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasWidget.vue?vue&type=template&id=a508bc5c&scoped=true&\"\nimport script from \"./CanvasWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CanvasWidget.vue?vue&type=style&index=0&id=a508bc5c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a508bc5c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('circle',{attrs:{\"cx\":_vm.parameters[0],\"cy\":_vm.parameters[1],\"r\":_vm.parameters[3],\"fill\":_vm.parameters[2]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <circle\n :cx=\"parameters[0]\"\n :cy=\"parameters[1]\"\n :r=\"parameters[3]\"\n :fill=\"parameters[2]\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasdotWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasdotWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasdotWidget.vue?vue&type=template&id=688a0042&\"\nimport script from \"./CanvasdotWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasdotWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.imageUrl)?_c('image',{attrs:{\"href\":_vm.imageUrl,\"x\":_vm.parameters[1],\"y\":_vm.parameters[2],\"width\":_vm.width,\"height\":_vm.height}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <image\n v-if=\"imageUrl\"\n :href=\"imageUrl\"\n :x=\"parameters[1]\"\n :y=\"parameters[2]\"\n :width=\"width\"\n :height=\"height\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nimport ImageLoader from './ImageLoader'\n\nexport default {\n mixins: [Widget, ImageLoader],\n data: function () {\n return {\n imageUrl: null,\n }\n },\n computed: {\n width: function () {\n if (this.parameters[3]) {\n return `${this.parameters[3]}px`\n }\n return '100%'\n },\n height: function () {\n if (this.parameters[4]) {\n return `${this.parameters[4]}px`\n }\n return '100%'\n },\n },\n created: function () {\n if (!this.parameters[0].startsWith('http')) {\n this.getPresignedUrl(this.parameters[0]).then((response) => {\n this.imageUrl = response\n })\n } else {\n this.imageUrl = this.parameters[0]\n }\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimageWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimageWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasimageWidget.vue?vue&type=template&id=4f08f970&\"\nimport script from \"./CanvasimageWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasimageWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('g',[_vm._l((_vm.images),function(image){return _c('image',{directives:[{name:\"show\",rawName:\"v-show\",value:(image.value == _vm.selectedValue),expression:\"image.value == selectedValue\"}],key:image.value,attrs:{\"href\":image.url,\"x\":image.x,\"y\":image.y,\"width\":image.width,\"height\":image.height}})}),(_vm.defaultImage)?_c('image',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDefault),expression:\"showDefault\"}],attrs:{\"href\":_vm.defaultImage.url,\"x\":_vm.defaultImage.x,\"y\":_vm.defaultImage.y,\"width\":_vm.defaultImage.width,\"height\":_vm.defaultImage.height}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <g>\n <image\n v-for=\"image in images\"\n :key=\"image.value\"\n v-show=\"image.value == selectedValue\"\n :href=\"image.url\"\n :x=\"image.x\"\n :y=\"image.y\"\n :width=\"image.width\"\n :height=\"image.height\"\n />\n <image\n v-if=\"defaultImage\"\n v-show=\"showDefault\"\n :href=\"defaultImage.url\"\n :x=\"defaultImage.x\"\n :y=\"defaultImage.y\"\n :width=\"defaultImage.width\"\n :height=\"defaultImage.height\"\n />\n </g>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport ImageLoader from './ImageLoader'\n\nexport default {\n mixins: [Widget, ImageLoader],\n data: function () {\n return {\n images: [],\n defaultImage: null,\n }\n },\n computed: {\n valueId: function () {\n return `${this.parameters[0]}__${this.parameters[1]}__${\n this.parameters[2]\n }__${this.parameters[3] || 'RAW'}`\n },\n selectedValue: function () {\n return this.$store.state.tlmViewerValues[this.valueId][0]\n },\n showDefault: function () {\n return !this.images.some((image) => image.value == this.selectedValue)\n },\n },\n watch: {\n valueId: {\n immediate: true,\n handler: function (val) {\n this.$store.commit('tlmViewerAddItem', val)\n },\n },\n },\n created: function () {\n // Set value images data\n const promises = this.settings\n .filter((setting) => setting[0] === 'IMAGE')\n .map(async (setting) => {\n let url = setting[2]\n if (!url.startsWith('http')) {\n url = await this.getPresignedUrl(url)\n }\n\n return {\n url,\n value: setting[1],\n x: setting[3],\n y: setting[4],\n width: setting[5],\n height: setting[6],\n }\n })\n Promise.all(promises).then((images) => {\n this.images = images\n })\n\n // Set default image data\n if (this.parameters[4]) {\n const defaultImage = {\n x: this.parameters[5],\n y: this.parameters[6],\n width: this.parameters[7] ? `${this.parameters[7]}px` : '100%',\n height: this.parameters[8] ? `${this.parameters[8]}px` : '100%',\n }\n\n let url = this.parameters[4]\n if (!url.startsWith('http')) {\n this.getPresignedUrl(url).then((response) => {\n this.defaultImage = {\n ...defaultImage,\n url: response,\n }\n })\n } else {\n this.defaultImage = {\n ...defaultImage,\n url,\n }\n }\n }\n },\n destroyed: function () {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasimagevalueWidget.vue?vue&type=template&id=6d66e099&\"\nimport script from \"./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('text',{attrs:{\"x\":_vm.parameters[0],\"y\":_vm.parameters[1],\"fill\":_vm.fillColor}},[_vm._v(\" \"+_vm._s(_vm.parameters[2])+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <text :x=\"parameters[0]\" :y=\"parameters[1]\" :fill=\"fillColor\">\n {{ parameters[2] }}\n </text>\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n computed: {\n fillColor() {\n if (this.parameters[3]) {\n return this.parameters[3]\n }\n return 'black'\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslabelWidget.vue?vue&type=template&id=3556ae12&\"\nimport script from \"./CanvaslabelWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslabelWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('text',{attrs:{\"x\":_vm.parameters[3],\"y\":_vm.parameters[4],\"font-size\":_vm.fontSize,\"fill\":_vm.fillColor}},[_vm._v(\" \"+_vm._s(_vm._value)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <!-- TODO: Draw box or underline? -->\n <text\n :x=\"parameters[3]\"\n :y=\"parameters[4]\"\n :font-size=\"fontSize\"\n :fill=\"fillColor\"\n >\n {{ _value }}\n </text>\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n data() {\n return {\n valueId: null,\n }\n },\n computed: {\n _value() {\n return this.$store.state.tlmViewerValues[this.valueId][0]\n },\n fontSize() {\n if (this.parameters[5]) {\n return this.parameters[5] + 'px'\n }\n return '14px'\n },\n fillColor() {\n if (this.parameters[6]) {\n return this.parameters[6]\n }\n return 'black'\n },\n },\n created() {\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__CONVERTED`\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslabelvalueWidget.vue?vue&type=template&id=63da4903&\"\nimport script from \"./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('line',{style:(_vm.calcStyle),attrs:{\"x1\":_vm.parameters[0],\"y1\":_vm.parameters[1],\"x2\":_vm.parameters[2],\"y2\":_vm.parameters[3]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <line\n :x1=\"parameters[0]\"\n :y1=\"parameters[1]\"\n :x2=\"parameters[2]\"\n :y2=\"parameters[3]\"\n :style=\"calcStyle\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n computed: {\n calcStyle() {\n let color = 'black'\n if (this.parameters[4]) {\n color = this.parameters[4]\n }\n let width = 1\n if (this.parameters[5]) {\n width = this.parameters[5]\n }\n return 'stroke:' + color + ';stroke-width:' + width\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslineWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslineWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslineWidget.vue?vue&type=template&id=1f32a126&\"\nimport script from \"./CanvaslineWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslineWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('line',{style:(_vm.calcStyle),attrs:{\"x1\":_vm.parameters[3],\"y1\":_vm.parameters[4],\"x2\":_vm.parameters[5],\"y2\":_vm.parameters[6]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <line\n :x1=\"parameters[3]\"\n :y1=\"parameters[4]\"\n :x2=\"parameters[5]\"\n :y2=\"parameters[6]\"\n :style=\"calcStyle\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n data() {\n return {\n valueId: 0,\n }\n },\n computed: {\n calcStyle() {\n let color = this.parameters[8]\n if (parseInt(this.$store.state.tlmViewerValues[this.valueId][0]) === 1) {\n color = this.parameters[7]\n }\n let width = 1\n if (this.parameters[9]) {\n width = this.parameters[9]\n }\n return 'stroke:' + color + ';stroke-width:' + width\n },\n },\n created() {\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__RAW`\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslinevalueWidget.vue?vue&type=template&id=05f75c8c&\"\nimport script from \"./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-checkbox',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\",\"label\":_vm.label},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-checkbox\n hide-details\n dense\n :label=\"label\"\n v-model=\"value\"\n :style=\"computedStyle\"\n >\n </v-checkbox>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n items: [],\n label: 'Checkbox',\n value: false,\n }\n },\n created() {\n // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\n this.label = this.parameters[0]\n },\n methods: {\n checked() {\n return this.value\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckbuttonWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckbuttonWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckbuttonWidget.vue?vue&type=template&id=2af96702&\"\nimport script from \"./CheckbuttonWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckbuttonWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.items},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-select\n hide-details\n dense\n :items=\"items\"\n v-model=\"value\"\n :style=\"computedStyle\"\n >\n </v-select>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n items: [],\n value: null,\n }\n },\n created() {\n // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\n this.items = this.parameters\n },\n methods: {\n text() {\n return this.value\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComboboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComboboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ComboboxWidget.vue?vue&type=template&id=261ba626&\"\nimport script from \"./ComboboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ComboboxWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.widgetType,_vm._b({tag:\"component\"},'component',Object.assign({}, _vm.$props, _vm.$attrs),false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <component :is=\"widgetType\" v-bind=\"{ ...$props, ...$attrs }\"></component>\n</template>\n\n<script>\nexport default {\n data() {\n return {\n widgetType: null,\n }\n },\n props: {\n name: { default: null },\n },\n computed: {\n url: function () {\n return `${window.location.origin}/tools/widgets/${this.name}/${this.name}.umd.min.js`\n },\n },\n mounted() {\n const self = this\n\n /* eslint-disable-next-line */\n System.import(/* webpackIgnore: true */ this.url).then(function (widget) {\n self.widgetType = widget\n })\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DynamicWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DynamicWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DynamicWidget.vue?vue&type=template&id=71f511d9&\"\nimport script from \"./DynamicWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./DynamicWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:(_vm.computedStyle)},[_c('value-widget',{attrs:{\"parameters\":_vm.getParameters,\"settings\":_vm.settings,\"format-string\":_vm.parameters[3]}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\" :style=\"computedStyle\">\n <value-widget\n :parameters=\"getParameters\"\n :settings=\"settings\"\n :format-string=\"parameters[3]\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport ValueWidget from './ValueWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n },\n computed: {\n getParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n this.parameters[4],\n ]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormatvalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormatvalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FormatvalueWidget.vue?vue&type=template&id=be6557c2&\"\nimport script from \"./FormatvalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./FormatvalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <component\n v-for=\"(widget, index) in widgets\"\n v-on=\"$listeners\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HorizontalWidget.vue?vue&type=template&id=4fd9fe9a&\"\nimport script from \"./HorizontalWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./HorizontalWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-banner',{attrs:{\"single-line\":\"\"}},[_vm._v(_vm._s(_vm.parameters.join(' ')))]),_c('horizontal-widget',_vm._g({attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widgets\":_vm.widgets}},_vm.$listeners))],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-banner single-line>{{ parameters.join(' ') }}</v-banner>\n <horizontal-widget\n v-on=\"$listeners\"\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widgets=\"widgets\"\n />\n </div>\n</template>\n\n<script>\nimport HorizontalWidget from './HorizontalWidget'\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n components: {\n HorizontalWidget,\n },\n}\n</script>\n\n<style scoped>\n.v-banner >>> div {\n background-color: var(--v-tertiary-darken2) !important;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HorizontalboxWidget.vue?vue&type=template&id=490e35ec&scoped=true&\"\nimport script from \"./HorizontalboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./HorizontalboxWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HorizontalboxWidget.vue?vue&type=style&index=0&id=490e35ec&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"490e35ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('iframe',{attrs:{\"src\":_vm.src,\"width\":_vm.width,\"height\":_vm.height}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <iframe :src=\"src\" :width=\"width\" :height=\"height\" />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n src: function () {\n return this.parameters[0]\n },\n width: function () {\n return this.parameters[1] + 'px'\n },\n height: function () {\n return this.parameters[2] + 'px'\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IframeWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IframeWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IframeWidget.vue?vue&type=template&id=b23e1f4c&\"\nimport script from \"./IframeWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./IframeWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{attrs:{\"src\":_vm.src,\"alt\":_vm.itemFullName,\"width\":_vm.parameters[4],\"height\":_vm.parameters[5]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <img\n :src=\"src\"\n :alt=\"itemFullName\"\n :width=\"parameters[4]\"\n :height=\"parameters[5]\"\n />\n</template>\n\n<script>\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport Widget from '@cosmosc2/tool-common/src/components/widgets/Widget'\nimport Cable from '@cosmosc2/tool-common/src/services/cable.js'\n\nexport default {\n mixins: [Widget],\n data: function () {\n return {\n api: new CosmosApi(),\n cable: new Cable(),\n subscription: null,\n imageData: '',\n }\n },\n computed: {\n src: function () {\n return `data:image/${this.parameters[3]};base64, ${this.imageData}`\n },\n itemFullName: function () {\n return `TLM__${this.targetName}__${this.packetName}__${this.itemName}__${this.valueType}`\n },\n targetName: function () {\n return this.parameters[0]\n },\n packetName: function () {\n return this.parameters[1]\n },\n itemName: function () {\n return this.parameters[2]\n },\n valueType: function () {\n return 'CONVERTED'\n },\n },\n created: function () {\n this.api\n .get_tlm_packet(this.targetName, this.packetName, this.valueType)\n .then((packetItems) => {\n const foundPacket = packetItems?.find(\n (item) => item[0] === this.itemName\n )\n if (foundPacket) {\n this.imageData = foundPacket[1]\n }\n })\n .finally(() => {\n this.subscribe()\n })\n },\n destroyed: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n received: function (json_data) {\n if (json_data['error']) {\n this.$notify.serious({\n body: json_data['error'],\n })\n } else {\n const parsed = JSON.parse(json_data)\n if (parsed.length) {\n const packet = parsed[parsed.length - 1]\n this.imageData = packet[this.itemFullName]\n }\n }\n },\n subscribe: function () {\n this.cable\n .createSubscription('StreamingChannel', localStorage.scope, {\n received: (data) => this.received(data),\n connected: () => {\n this.subscription.perform('add', {\n scope: localStorage.scope,\n mode: 'DECOM',\n token: localStorage.cosmosToken,\n items: [this.itemFullName],\n })\n },\n disconnected: () => {\n this.$notify.caution({\n body: 'COSMOS backend connection disconnected.',\n })\n },\n rejected: () => {\n this.$notify.caution({\n body: 'COSMOS backend connection rejected.',\n })\n },\n })\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImageviewerWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImageviewerWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageviewerWidget.vue?vue&type=template&id=56d7af1e&\"\nimport script from \"./ImageviewerWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageviewerWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"pa-1 mt-1 label\",style:([_vm.cssProps, _vm.computedStyle]),attrs:{\"data-test\":\"label\"}},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <span\n data-test=\"label\"\n class=\"pa-1 mt-1 label\"\n :style=\"[cssProps, computedStyle]\"\n >\n {{ labelText }}\n </span>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n fontFamily: null,\n fontSize: null,\n fontWeight: 'normal',\n fontStyle: 'normal',\n }\n },\n computed: {\n labelText() {\n return this.parameters[0]\n },\n cssProps() {\n var size = null\n if (this.fontSize) {\n size = this.fontSize + 'px'\n }\n return {\n '--font-family': this.fontFamily,\n '--font-size': size,\n '--font-weight': this.fontWeight,\n '--font-style': this.fontStyle,\n }\n },\n },\n created() {\n if (this.parameters[1]) {\n this.fontFamily = this.parameters[1]\n }\n if (this.parameters[2]) {\n this.fontSize = this.parameters[2]\n }\n if (this.parameters[3]) {\n this.fontWeight = this.parameters[3]\n }\n if (this.parameters[4]) {\n this.fontStyle = this.parameters[4]\n }\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-family: var(--font-family);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n font-style: var(--font-style);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelWidget.vue?vue&type=template&id=1ff40000&scoped=true&\"\nimport script from \"./LabelWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LabelWidget.vue?vue&type=style&index=0&id=1ff40000&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ff40000\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:(_vm.computedStyle)},[_c('label-widget',{attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings}}),_c('led-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\" :style=\"computedStyle\">\n <label-widget :parameters=\"labelName\" :settings=\"settings\" />\n <led-widget :parameters=\"parameters\" :settings=\"settings\" />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport LedWidget from './LedWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n LedWidget,\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n return [this.parameters[2] + ':']\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelledWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelledWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelledWidget.vue?vue&type=template&id=61e92cf0&\"\nimport script from \"./LabelledWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelledWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":0}}),_c('progressbar-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"0\"\n />\n <progressbar-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport ProgressbarWidget from './ProgressbarWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n ProgressbarWidget,\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n return [this.parameters[2] + ':']\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelprogressbarWidget.vue?vue&type=template&id=4e63a67e&\"\nimport script from \"./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":0}}),_c('value-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"0\"\n />\n <value-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport ValueWidget from './ValueWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n ValueWidget,\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n return [this.parameters[2] + ':']\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvalueWidget.vue?vue&type=template&id=13602869&\"\nimport script from \"./LabelvalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":0}}),_c('value-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.parameters.slice(0, 3),\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"0\"\n />\n <value-widget\n :parameters=\"parameters.slice(0, 3)\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport ValueWidget from './ValueWidget.vue'\nimport { CosmosApi } from '../../services/cosmos-api.js'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n description: '',\n }\n },\n components: {\n LabelWidget,\n ValueWidget,\n },\n computed: {\n labelName() {\n return [this.description]\n },\n },\n created() {\n if (this.parameters.length > 3) {\n this.description = this.parameters[3]\n } else {\n this.api = new CosmosApi()\n this.api\n .get_item(this.parameters[0], this.parameters[1], this.parameters[2])\n .then((details) => {\n this.description = details['description']\n })\n }\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluedescWidget.vue?vue&type=template&id=03f3fef9&\"\nimport script from \"./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('labelvalue-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings}}),_c('limitsbar-widget',{attrs:{\"parameters\":_vm.limitsBarParameters,\"settings\":_vm.settings.filter(function (x) { return x[0] == 1; }).map(function (x) { return x.slice(1); }),\"widget-index\":3}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <labelvalue-widget :parameters=\"parameters\" :settings=\"settings\" />\n <limitsbar-widget\n :parameters=\"limitsBarParameters\"\n :settings=\"settings.filter((x) => x[0] == 1).map((x) => x.slice(1))\"\n :widget-index=\"3\"\n />\n </div>\n</template>\n\n<script>\nimport LabelvalueWidget from './LabelvalueWidget.vue'\nimport LimitsbarWidget from './LimitsbarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelvalueWidget,\n LimitsbarWidget,\n },\n data() {\n return {\n overallWidth: '300px',\n }\n },\n created() {\n // Determine if any sub-setting widths have been given\n // If so calculate the overall width, if not the default will be used\n let width = 0\n this.settings.forEach((setting) => {\n if (setting[1] === 'WIDTH') {\n width += parseInt(setting[2])\n }\n })\n if (width != 0) {\n this.overallWidth = width + 'px'\n }\n },\n computed: {\n limitsBarParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n defaultStyle() {\n return {\n width: this.overallWidth,\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluelimitsbarWidget.vue?vue&type=template&id=272e68bc&\"\nimport script from \"./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-column\",style:(_vm.computedStyle)},[_c('label-widget',{attrs:{\"parameters\":[_vm.parameters[2]],\"settings\":_vm.settings,\"widget-index\":0}}),_c('limitscolumn-widget',{attrs:{\"parameters\":_vm.limitsColumnParameters,\"settings\":_vm.settings,\"widget-index\":1}}),_c('value-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":2}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-column\" :style=\"computedStyle\">\n <label-widget\n :parameters=\"[parameters[2]]\"\n :settings=\"settings\"\n :widget-index=\"0\"\n />\n <limitscolumn-widget\n :parameters=\"limitsColumnParameters\"\n :settings=\"settings\"\n :widget-index=\"1\"\n />\n <value-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widget-index=\"2\"\n />\n </div>\n</template>\n\n<script>\nimport LabelWidget from './LabelWidget.vue'\nimport ValueWidget from './ValueWidget.vue'\nimport LimitscolumnWidget from './LimitscolumnWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n ValueWidget,\n LimitscolumnWidget,\n },\n created() {\n this.settings.push(['WIDTH', '100'])\n },\n computed: {\n limitsColumnParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluelimitscolumnWidget.vue?vue&type=template&id=4148932c&\"\nimport script from \"./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('labelvalue-widget',{attrs:{\"parameters\":_vm.labelValueParameters}}),_c('rangebar-widget',{attrs:{\"parameters\":_vm.parameters}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <labelvalue-widget :parameters=\"labelValueParameters\" />\n <rangebar-widget :parameters=\"parameters\" />\n </div>\n</template>\n\n<script>\nimport LabelvalueWidget from './LabelvalueWidget.vue'\nimport RangebarWidget from './RangebarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelvalueWidget,\n RangebarWidget,\n },\n computed: {\n labelValueParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'WITH_UNITS',\n ]\n },\n defaultStyle() {\n return {\n width: '300px',\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluerangebarWidget.vue?vue&type=template&id=26f9eeae&\"\nimport script from \"./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"led mt-2\",style:([_vm.cssProps, _vm.computedStyle])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"led mt-2\" :style=\"[cssProps, computedStyle]\"></div>\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n data() {\n return {\n valueId: null,\n colors: {\n TRUE: 'green',\n FALSE: 'red',\n },\n }\n },\n computed: {\n width() {\n return this.parameters[4] ? parseInt(this.parameters[4]) : 20\n },\n height() {\n return this.parameters[5] ? parseInt(this.parameters[5]) : 20\n },\n cssProps() {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n let color = this.colors[value]\n if (!color) {\n color = this.colors.ANY\n }\n if (!color) {\n color = 'BLACK'\n }\n return {\n '--height': this.height + 'px',\n '--width': this.width + 'px',\n '--color': color.toLowerCase(),\n }\n },\n },\n // Note Vuejs still treats this syncronously, but this allows us to dispatch\n // the store mutation and return the array index.\n // What this means practically is that future lifecycle hooks may not have valueId set.\n created() {\n this.settings.forEach((setting) => {\n switch (setting[0]) {\n case 'LED_COLOR':\n this.colors[setting[1]] = setting[2]\n break\n }\n })\n if (!this.parameters[3]) {\n this.parameters[3] = 'CONVERTED'\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${this.parameters[3]}`\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n\n<style scoped>\n.led {\n height: var(--height);\n width: var(--width);\n background-color: var(--color);\n border-radius: 50%;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LedWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LedWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LedWidget.vue?vue&type=template&id=1d5674e7&scoped=true&\"\nimport script from \"./LedWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LedWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LedWidget.vue?vue&type=style&index=0&id=1d5674e7&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d5674e7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar\",style:([_vm.cssProps, _vm.computedStyle])},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar__container\"},[_c('div',{staticClass:\"limitsbar__redlow\"}),_c('div',{staticClass:\"limitsbar__redhigh\"}),_c('div',{staticClass:\"limitsbar__yellowlow\"}),_c('div',{staticClass:\"limitsbar__yellowhigh\"}),_c('div',{staticClass:\"limitsbar__greenlow\"}),_c('div',{staticClass:\"limitsbar__greenhigh\"}),_c('div',{staticClass:\"limitsbar__blue\"}),_c('div',{staticClass:\"limitsbar__line\"}),_c('div',{staticClass:\"limitsbar__arrow\"})])}]\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"limitsbar\" :style=\"[cssProps, computedStyle]\">\n <div class=\"limitsbar__container\">\n <div class=\"limitsbar__redlow\" />\n <div class=\"limitsbar__redhigh\" />\n <div class=\"limitsbar__yellowlow\" />\n <div class=\"limitsbar__yellowhigh\" />\n <div class=\"limitsbar__greenlow\" />\n <div class=\"limitsbar__greenhigh\" />\n <div class=\"limitsbar__blue\" />\n\n <div class=\"limitsbar__line\" />\n <div class=\"limitsbar__arrow\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport { CosmosApi } from '../../services/cosmos-api.js'\n\nconst DEFAULT_LIMITS_SET = 'DEFAULT'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n width: '100%', // users will override with px\n height: 20, // px\n minValue: null,\n maxValue: null,\n scale: 0,\n redLow: 0,\n yellowLow: 0,\n greenLow: 0,\n greenHigh: 0,\n yellowHigh: 0,\n redHigh: 0,\n blue: 0,\n api: null,\n limitsSettings: {\n DEFAULT: [],\n },\n currentLimitsSet: DEFAULT_LIMITS_SET,\n currentSetRefreshInterval: null,\n }\n },\n computed: {\n cssProps: function () {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n let limits = this.modifyLimits(\n this.limitsSettings[this.selectedLimitsSet]\n )\n this.calcLimits(limits)\n return {\n '--height': this.height + 'px',\n '--width': this.width,\n '--container-height': this.height - 5 + 'px',\n '--position': this.calcPosition(value, limits) + '%',\n '--redlow-width': this.redLow + '%',\n '--redhigh-width': this.redHigh + '%',\n '--yellowlow-width': this.yellowLow + '%',\n '--yellowhigh-width': this.yellowHigh + '%',\n '--greenlow-width': this.greenLow + '%',\n '--greenhigh-width': this.greenHigh + '%',\n '--blue-width': this.blue + '%',\n }\n },\n selectedLimitsSet: function () {\n return this.limitsSettings.hasOwnProperty(this.currentLimitsSet)\n ? this.currentLimitsSet\n : DEFAULT_LIMITS_SET\n },\n },\n created() {\n this.api = new CosmosApi()\n this.api\n .get_limits(this.parameters[0], this.parameters[1], this.parameters[2])\n .then((data) => {\n this.limitsSettings = data\n })\n this.getCurrentLimitsSet()\n this.currentSetRefreshInterval = setInterval(\n this.getCurrentLimitsSet,\n 60 * 1000\n )\n\n this.settings.forEach((setting) => {\n if (setting[0] === 'MIN_VALUE') {\n this.minValue = parseInt(setting[1])\n }\n if (setting[0] === 'MAX_VALUE') {\n this.maxValue = parseInt(setting[1])\n }\n })\n\n let type = 'CONVERTED'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n clearInterval(this.currentSetRefreshInterval)\n },\n methods: {\n modifyLimits(limitsSettings) {\n // By default the red bars take 10% of the display\n this.redLow = 10\n this.redHigh = 10\n\n // Modify values to respect the user defined minimum\n if (this.minValue) {\n if (limitsSettings[0] <= this.minValue) {\n limitsSettings[0] = this.minValue\n // No red low will be displayed\n this.redLow = 0\n }\n if (limitsSettings[1] <= this.minValue) {\n limitsSettings[1] = this.minValue\n }\n if (limitsSettings[2] <= this.minValue) {\n limitsSettings[2] = this.minValue\n }\n if (limitsSettings[3] <= this.minValue) {\n limitsSettings[3] = this.minValue\n }\n if (limitsSettings.length > 4 && limitsSettings[4] <= this.minValue) {\n limitsSettings[4] = this.minValue\n }\n if (limitsSettings.length > 4 && limitsSettings[5] <= this.minValue) {\n limitsSettings[5] = this.minValue\n }\n }\n if (this.maxValue) {\n if (limitsSettings[0] >= this.maxValue) {\n limitsSettings[0] = this.maxValue\n }\n if (limitsSettings[1] >= this.maxValue) {\n limitsSettings[1] = this.maxValue\n }\n if (limitsSettings[2] >= this.maxValue) {\n limitsSettings[2] = this.maxValue\n }\n if (limitsSettings[3] >= this.maxValue) {\n limitsSettings[3] = this.maxValue\n // No red high will be displayed\n this.redHigh = 0\n }\n if (limitsSettings.length > 4 && limitsSettings[4] >= this.maxValue) {\n limitsSettings[4] = this.maxValue\n }\n if (limitsSettings.length > 4 && limitsSettings[5] >= this.maxValue) {\n limitsSettings[5] = this.maxValue\n }\n }\n // If the red low matches yellow low there is no red low\n if (limitsSettings[0] == limitsSettings[1]) {\n this.redLow = 0\n }\n // If the red high matches yellow high there is no red high\n if (limitsSettings[2] == limitsSettings[3]) {\n this.redHigh = 0\n }\n\n let divisor = 80\n if (this.redLow == 0) {\n divisor += 10\n }\n if (this.redHigh == 0) {\n divisor += 10\n }\n this.scale = (limitsSettings[3] - limitsSettings[0]) / divisor\n\n return limitsSettings\n },\n calcPosition(value, limitsSettings) {\n if (!value || !limitsSettings) {\n return\n }\n let lowValue = limitsSettings[0] - 10 * this.scale\n if (this.minValue && this.minValue == limitsSettings[0]) {\n lowValue = limitsSettings[0]\n }\n let highValue = limitsSettings[3] - 10 * this.scale\n if (this.maxValue && this.maxValue == limitsSettings[3]) {\n highValue = limitsSettings[3]\n }\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 if (value < this.min) {\n return 0\n } else if (value > this.max) {\n return 100\n } else {\n const result = parseInt((value - lowValue) / this.scale)\n if (result > 100) {\n return 100\n } else if (result < 0) {\n return 0\n } else {\n return result\n }\n }\n },\n calcLimits(limitsSettings) {\n if (!limitsSettings) {\n return\n }\n\n this.yellowLow = Math.round(\n (limitsSettings[1] - limitsSettings[0]) / this.scale\n )\n this.yellowHigh = Math.round(\n (limitsSettings[3] - limitsSettings[2]) / this.scale\n )\n if (limitsSettings.length > 4) {\n this.greenLow = Math.round(\n (limitsSettings[4] - limitsSettings[1]) / this.scale\n )\n this.greenHigh = Math.round(\n (limitsSettings[2] - limitsSettings[5]) / this.scale\n )\n this.blue = Math.round(\n 100 -\n this.redLow -\n this.yellowLow -\n this.greenLow -\n this.greenHigh -\n this.yellowHigh -\n this.redHigh\n )\n } else {\n this.greenLow = Math.round(\n 100 - this.redLow - this.yellowLow - this.yellowHigh - this.redHigh\n )\n this.greenHigh = 0\n this.blue = 0\n }\n },\n getCurrentLimitsSet: function () {\n this.api.get_limits_set().then((result) => {\n this.currentLimitsSet = result\n })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.limitsbar {\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5px;\n width: var(--width);\n}\n.limitsbar__container {\n position: relative;\n flex: 1;\n height: var(--container-height);\n border: 1px solid black;\n background-color: white;\n}\n.limitsbar__redlow {\n position: absolute;\n top: -1px;\n left: 0px;\n width: var(--redlow-width);\n height: var(--container-height);\n background-color: red;\n}\n.limitsbar__redhigh {\n position: absolute;\n top: -1px;\n right: 0px;\n width: var(--redhigh-width);\n height: var(--container-height);\n background-color: red;\n}\n.limitsbar__yellowlow {\n position: absolute;\n top: -1px;\n left: var(--redlow-width);\n width: var(--yellowlow-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__yellowhigh {\n position: absolute;\n top: -1px;\n right: var(--redhigh-width);\n width: var(--yellowhigh-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__greenlow {\n position: absolute;\n top: -1px;\n left: calc(var(--redlow-width) + var(--yellowlow-width));\n width: var(--greenlow-width);\n height: var(--container-height);\n background-color: green;\n}\n.limitsbar__greenhigh {\n position: absolute;\n top: -1px;\n right: calc(var(--redhigh-width) + var(--yellowhigh-width));\n width: var(--greenhigh-width);\n height: var(--container-height);\n background-color: green;\n}\n.limitsbar__blue {\n position: absolute;\n top: -1px;\n left: calc(\n var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width)\n );\n width: var(--blue-width);\n height: var(--container-height);\n background-color: blue;\n}\n.limitsbar__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.limitsbar__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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitsbarWidget.vue?vue&type=template&id=4d506ea0&scoped=true&\"\nimport script from \"./LimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitsbarWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitsbarWidget.vue?vue&type=style&index=0&id=4d506ea0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d506ea0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('div',{staticClass:\"led align-self-center\",style:([_vm.cssProps, _vm.computedStyle])}),_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <div class=\"led align-self-center\" :style=\"[cssProps, computedStyle]\"></div>\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nexport default {\n mixins: [VWidget],\n data() {\n return {\n radius: 15,\n fullLabelDisplay: false,\n }\n },\n created() {\n if (this.parameters[4]) {\n this.radius = parseInt(this.parameters[4])\n }\n if (this.parameters[5] && this.parameters[5].toLowerCase() === 'true') {\n this.fullLabelDisplay = true\n }\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n if (this.fullLabelDisplay) {\n return [\n this.parameters[0] +\n ' ' +\n this.parameters[1] +\n ' ' +\n this.parameters[2],\n ]\n } else {\n return [this.parameters[2]]\n }\n },\n cssProps() {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n return {\n '--height': this.radius + 'px',\n '--width': this.radius + 'px',\n '--color': this.limitsColor,\n }\n },\n },\n methods: {\n getType() {\n var type = 'CONVERTED'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n return type\n },\n },\n}\n</script>\n\n<style scoped>\n.led {\n height: var(--height);\n width: var(--width);\n background-color: var(--color);\n border-radius: 50%;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolorWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolorWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitscolorWidget.vue?vue&type=template&id=348c2b1c&scoped=true&\"\nimport script from \"./LimitscolorWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitscolorWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitscolorWidget.vue?vue&type=style&index=0&id=348c2b1c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"348c2b1c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar\",style:([_vm.cssProps, _vm.computedStyle])},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar__container\"},[_c('div',{staticClass:\"limitsbar__redlow\"}),_c('div',{staticClass:\"limitsbar__redhigh\"}),_c('div',{staticClass:\"limitsbar__yellowlow\"}),_c('div',{staticClass:\"limitsbar__yellowhigh\"}),_c('div',{staticClass:\"limitsbar__greenlow\"}),_c('div',{staticClass:\"limitsbar__greenhigh\"}),_c('div',{staticClass:\"limitsbar__blue\"}),_c('div',{staticClass:\"limitsbar__line\"}),_c('div',{staticClass:\"limitsbar__arrow\"})])}]\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"limitsbar\" :style=\"[cssProps, computedStyle]\">\n <div class=\"limitsbar__container\">\n <div class=\"limitsbar__redlow\" />\n <div class=\"limitsbar__redhigh\" />\n <div class=\"limitsbar__yellowlow\" />\n <div class=\"limitsbar__yellowhigh\" />\n <div class=\"limitsbar__greenlow\" />\n <div class=\"limitsbar__greenhigh\" />\n <div class=\"limitsbar__blue\" />\n\n <div class=\"limitsbar__line\" />\n <div class=\"limitsbar__arrow\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport { CosmosApi } from '../../services/cosmos-api.js'\n\nconst DEFAULT_LIMITS_SET = 'DEFAULT'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n width: 20, // px\n height: 100, // users will override with px\n redLow: 0,\n yellowLow: 0,\n greenLow: 0,\n greenHigh: 0,\n yellowHigh: 0,\n redHigh: 0,\n blue: 0,\n api: null,\n limitsSettings: {\n DEFAULT: [],\n },\n currentLimitsSet: DEFAULT_LIMITS_SET,\n currentSetRefreshInterval: null,\n }\n },\n computed: {\n cssProps: function () {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n this.calcLimits(this.limitsSettings[this.selectedLimitsSet])\n return {\n '--height': this.height + 'px',\n '--width': this.width + 'px',\n '--container-width': this.width - 5 + 'px',\n '--position':\n this.calcPosition(\n value,\n this.limitsSettings[this.selectedLimitsSet]\n ) + '%',\n '--redlow-height': this.redLow + '%',\n '--redhigh-height': this.redHigh + '%',\n '--yellowlow-height': this.yellowLow + '%',\n '--yellowhigh-height': this.yellowHigh + '%',\n '--greenlow-height': this.greenLow + '%',\n '--greenhigh-height': this.greenHigh + '%',\n '--blue-height': this.blue + '%',\n }\n },\n selectedLimitsSet: function () {\n return this.limitsSettings.hasOwnProperty(this.currentLimitsSet)\n ? this.currentLimitsSet\n : DEFAULT_LIMITS_SET\n },\n },\n created() {\n this.api = new CosmosApi()\n this.api\n .get_limits(this.parameters[0], this.parameters[1], this.parameters[2])\n .then((data) => {\n this.limitsSettings = data\n })\n this.getCurrentLimitsSet()\n this.currentSetRefreshInterval = setInterval(\n this.getCurrentLimitsSet,\n 60 * 1000\n )\n\n let type = 'CONVERTED'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n clearInterval(this.currentSetRefreshInterval)\n },\n methods: {\n calcPosition(value, limitsSettings) {\n if (!value || !limitsSettings) {\n return\n }\n let divisor = 0.8\n if (limitsSettings[0] === limitsSettings[1]) {\n divisor += 0.1\n }\n if (limitsSettings[2] === limitsSettings[3]) {\n divisor += 0.1\n }\n const scale = (limitsSettings[3] - limitsSettings[0]) / divisor\n const lowValue = limitsSettings[0] - 0.1 * scale\n const highValue = limitsSettings[3] - 0.1 * scale\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 if (value < this.min) {\n return 0\n } else if (value > this.max) {\n return 100\n } else {\n const result = parseInt(((value - lowValue) / scale) * 100.0)\n if (result > 100) {\n return 100\n } else if (result < 0) {\n return 0\n } else {\n return result\n }\n }\n },\n calcLimits(limitsSettings) {\n if (!limitsSettings) {\n return\n }\n let scale = 80\n if (limitsSettings[0] === limitsSettings[1]) {\n this.redLow = 0\n scale += 10\n } else {\n this.redLow = 10\n }\n if (limitsSettings[2] === limitsSettings[3]) {\n this.redHigh = 0\n scale += 10\n } else {\n this.redHigh = 10\n }\n const range = 1.0 * (limitsSettings[3] - limitsSettings[0])\n this.yellowLow = Math.round(\n ((limitsSettings[1] - limitsSettings[0]) / range) * scale\n )\n this.yellowHigh = Math.round(\n ((limitsSettings[3] - limitsSettings[2]) / range) * scale\n )\n if (limitsSettings.length > 4) {\n this.greenLow = Math.round(\n ((limitsSettings[4] - limitsSettings[1]) / range) * scale\n )\n this.greenHigh = Math.round(\n ((limitsSettings[2] - limitsSettings[5]) / range) * scale\n )\n this.blue = Math.round(\n 100 -\n this.redLow -\n this.yellowLow -\n this.greenLow -\n this.greenHigh -\n this.yellowHigh -\n this.redHigh\n )\n } else {\n this.greenLow = Math.round(\n 100 - this.redLow - this.yellowLow - this.yellowHigh - this.redHigh\n )\n this.greenHigh = 0\n this.blue = 0\n }\n },\n getCurrentLimitsSet: function () {\n this.api.get_limits_set().then((result) => {\n this.currentLimitsSet = result\n })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.limitsbar {\n cursor: default;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 5px;\n height: var(--height);\n}\n.limitsbar__container {\n position: relative;\n flex: 1 1 100%;\n width: var(--container-width);\n border: 1px solid black;\n background-color: white;\n}\n.limitsbar__redlow {\n position: absolute;\n bottom: 0px;\n width: var(--container-width);\n height: var(--redlow-height);\n background-color: red;\n}\n.limitsbar__redhigh {\n position: absolute;\n top: 0px;\n width: var(--container-width);\n height: var(--redhigh-height);\n background-color: red;\n}\n.limitsbar__yellowlow {\n position: absolute;\n bottom: var(--redlow-height);\n height: var(--yellowlow-height);\n width: var(--container-width);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__yellowhigh {\n position: absolute;\n top: var(--redhigh-height);\n height: var(--yellowhigh-height);\n width: var(--container-width);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__greenlow {\n position: absolute;\n bottom: calc(var(--redlow-height) + var(--yellowlow-height));\n width: var(--container-width);\n height: var(--greenlow-height);\n background-color: green;\n}\n.limitsbar__greenhigh {\n position: absolute;\n top: calc(var(--redhigh-height) + var(--yellowhigh-height));\n width: var(--container-width);\n height: var(--greenhigh-height);\n background-color: green;\n}\n.limitsbar__blue {\n position: absolute;\n bottom: calc(\n var(--redlow-height) + var(--yellowlow-height) + var(--greenlow-height)\n );\n width: var(--container-width);\n height: var(--blue-height);\n background-color: blue;\n}\n.limitsbar__line {\n position: absolute;\n bottom: var(--position);\n width: var(--container-width);\n height: 1px;\n background-color: rgb(128, 128, 128);\n}\n$arrow-size: 5px;\n.limitsbar__arrow {\n position: absolute;\n bottom: var(--position);\n left: var(--container-width);\n width: 0;\n height: 0;\n transform: translateY($arrow-size); // Transform so it sits over the line\n border-top: $arrow-size solid transparent;\n border-bottom: $arrow-size solid transparent;\n border-right: $arrow-size solid rgb(128, 128, 128);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolumnWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolumnWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitscolumnWidget.vue?vue&type=template&id=5f237a99&scoped=true&\"\nimport script from \"./LimitscolumnWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitscolumnWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitscolumnWidget.vue?vue&type=style&index=0&id=5f237a99&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f237a99\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('graph',{ref:'graph' + _vm.id,attrs:{\"id\":_vm.id,\"state\":_vm.state,\"selected-graph-id\":_vm.id,\"seconds-graphed\":_vm.secondsGraphed,\"points-saved\":_vm.pointsSaved,\"points-graphed\":_vm.pointsGraphed,\"initial-items\":_vm.items,\"height\":_vm.size.height,\"width\":_vm.size.width,\"hide-system-bar\":\"\",\"hide-overview\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',{nativeOn:{\"click\":function($event){return _vm.$emit('click')}}},[_c('v-system-bar',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideSystemBar),expression:\"!hideSystemBar\"}],class:_vm.selectedGraphId === _vm.id ? 'active' : 'inactive'},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.length !== 0),expression:\"errors.length !== 0\"}],staticClass:\"mx-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"error-graph-icon\"},on:{\"click\":function($event){_vm.errorDialog = true}}},[_vm._v(\" mdi-alert \")])],1)]}}])},[_c('span',[_vm._v(\" Errors \")])])],1),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"edit-graph-icon\"},on:{\"click\":function($event){_vm.editGraph = true}}},[_vm._v(\" mdi-pencil \")])],1)]}}])},[_c('span',[_vm._v(\" Edit \")])]),_c('v-spacer'),_c('span',[_vm._v(_vm._s(_vm.title))]),_c('v-spacer'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.calcFullSize),expression:\"calcFullSize\"}],attrs:{\"data-test\":\"collapse-all\"},on:{\"click\":_vm.collapseAll}},[_vm._v(\" mdi-arrow-collapse \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.calcFullSize),expression:\"!calcFullSize\"}],attrs:{\"data-test\":\"expand-all\"},on:{\"click\":_vm.expandAll}},[_vm._v(\" mdi-arrow-expand \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.calcFullSize),expression:\"calcFullSize\"}]},[_vm._v(\" Collapse \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.calcFullSize),expression:\"!calcFullSize\"}]},[_vm._v(\" Expand \")])])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullWidth),expression:\"fullWidth\"}],attrs:{\"data-test\":\"collapse-width\"},on:{\"click\":_vm.collapseWidth}},[_vm._v(\" mdi-arrow-collapse-horizontal \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullWidth),expression:\"!fullWidth\"}],attrs:{\"data-test\":\"expand-width\"},on:{\"click\":_vm.expandWidth}},[_vm._v(\" mdi-arrow-expand-horizontal \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullWidth),expression:\"fullWidth\"}]},[_vm._v(\" Collapse Width \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullWidth),expression:\"!fullWidth\"}]},[_vm._v(\" Expand Width \")])])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullHeight),expression:\"fullHeight\"}],attrs:{\"data-test\":\"collapse-height\"},on:{\"click\":_vm.collapseHeight}},[_vm._v(\" mdi-arrow-collapse-vertical \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullHeight),expression:\"!fullHeight\"}],attrs:{\"data-test\":\"expand-height\"},on:{\"click\":_vm.expandHeight}},[_vm._v(\" mdi-arrow-expand-vertical \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullHeight),expression:\"fullHeight\"}]},[_vm._v(\" Collapse Height \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullHeight),expression:\"!fullHeight\"}]},[_vm._v(\" Expand Height \")])])],1),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],attrs:{\"data-test\":\"minimize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-minimize \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}],attrs:{\"data-test\":\"maximize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-maximize \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_vm._v(\" Minimize \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}]},[_vm._v(\" Maximize \")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"close-graph-icon\"},on:{\"click\":function($event){return _vm.$emit('close-graph')}}},[_vm._v(\" mdi-close-box \")])],1)]}}])},[_c('span',[_vm._v(\" Close \")])])],1),_c('v-expand-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],ref:\"chart\",staticClass:\"pa-1\",attrs:{\"id\":\"chart\"}},[_c('div',{attrs:{\"id\":(\"chart\" + _vm.id)},on:{\"mousedown\":_vm.mousedown}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideOverview),expression:\"!hideOverview\"}],attrs:{\"id\":(\"overview\" + _vm.id)},on:{\"mousedown\":_vm.mousedown}})])])],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.$emit('input')},\"input\":function($event){return _vm.editGraphClose()}},model:{value:(_vm.editGraph),callback:function ($$v) {_vm.editGraph=$$v},expression:\"editGraph\"}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Edit Graph\")]),_c('v-spacer')],1),_c('v-card',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{staticClass:\"pb-2\",attrs:{\"label\":\"Title\",\"hide-details\":\"\",\"data-test\":\"edit-graph-title\"},model:{value:(_vm.title),callback:function ($$v) {_vm.title=$$v},expression:\"title\"}})],1),_c('v-card-text',{staticClass:\"pa-0\"},[_vm._v(\" Select a start date/time for the graph. Leave blank for start now. \")]),_c('date-time-chooser',{attrs:{\"required\":false,\"date-label\":\"Start Date\",\"time-label\":\"Start Time\"},on:{\"date-time\":function($event){_vm.graphStartDateTime = $event}}}),_c('v-card-text',{staticClass:\"pa-0\"},[_vm._v(\" Select a end date/time for the graph. Leave blank for continuous real-time graphing. \")]),_c('date-time-chooser',{attrs:{\"date-label\":\"End Date\",\"time-label\":\"End Time\"},on:{\"date-time\":function($event){_vm.graphEndDateTime = $event}}}),_c('v-card-text',{staticClass:\"pa-0\"},[_vm._v(\" Optional Y axis settings. \")]),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"px-2\"},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"Min Y\",\"type\":\"number\",\"data-test\":\"graph-min-y\"},model:{value:(_vm.graphMinY),callback:function ($$v) {_vm.graphMinY=$$v},expression:\"graphMinY\"}})],1),_c('v-col',{staticClass:\"px-2\"},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"Max Y\",\"type\":\"number\",\"data-test\":\"graph-max-y\"},model:{value:(_vm.graphMaxY),callback:function ($$v) {_vm.graphMaxY=$$v},expression:\"graphMaxY\"}})],1)],1),_c('v-data-table',{staticClass:\"elevation-1 my-2\",attrs:{\"item-key\":\"itemId\",\"headers\":_vm.itemHeaders,\"items\":_vm.editItems,\"items-per-page\":5,\"footer-props\":{\n 'items-per-page-options': [5],\n }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\n var item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-btn',{attrs:{\"icon\":\"\",\"data-test\":(\"delete-item-icon\" + (item.itemId))},on:{\"click\":function () { return _vm.removeItems([item]); }}},[_c('v-icon',[_vm._v(\" mdi-delete \")])],1)],1)]}}],null,true)},[_c('span',[_vm._v(\" Remove \")])])]}},{key:\"no-data\",fn:function(){return [_c('span',[_vm._v(\"Currently no items on this graph\")])]},proxy:true}])}),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.editGraphClose()}}},[_vm._v(\" Ok \")])],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.errorDialog),callback:function ($$v) {_vm.errorDialog=$$v},expression:\"errorDialog\"}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Errors\")]),_c('v-spacer')],1),_c('v-card',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{staticClass:\"pb-2\",attrs:{\"readonly\":\"\",\"hide-details\":\"\",\"label\":\"Graph Title\"},model:{value:(_vm.title),callback:function ($$v) {_vm.title=$$v},expression:\"title\"}})],1),_c('v-row',{staticClass:\"my-3\"},[_c('v-textarea',{attrs:{\"readonly\":\"\",\"rows\":\"8\",\"value\":_vm.error}})],1),_c('v-row',[_c('v-btn',{attrs:{\"block\":\"\"},on:{\"click\":_vm.clearErrors}},[_vm._v(\" Clear \")])],1)],1)],1),(_vm.editGraphMenu)?_c('v-menu',{attrs:{\"position-x\":_vm.editGraphMenuX,\"position-y\":_vm.editGraphMenuY,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.editGraphMenu),callback:function ($$v) {_vm.editGraphMenu=$$v},expression:\"editGraphMenu\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.editGraph = true}}},[_c('v-list-item-title',{staticStyle:{\"cursor\":\"pointer\"}},[_vm._v(\" Edit \"+_vm._s(_vm.title)+\" \")])],1)],1)],1):_vm._e(),(_vm.editItem)?_c('v-dialog',{attrs:{\"max-width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }_vm.editItem = false}},model:{value:(_vm.editItem),callback:function ($$v) {_vm.editItem=$$v},expression:\"editItem\"}},[_c('v-card',{staticClass:\"pa-3\"},[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(\"Edit Item\")]),_c('v-select',{attrs:{\"outlined\":\"\",\"hide-details\":\"\",\"label\":\"Value Type\",\"items\":_vm.valueTypes},on:{\"change\":function($event){return _vm.changeType($event)}},model:{value:(_vm.selectedItem.valueType),callback:function ($$v) {_vm.$set(_vm.selectedItem, \"valueType\", $$v)},expression:\"selectedItem.valueType\"}}),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.editItem = false}}},[_vm._v(\"Ok\")])],1)],1)],1):_vm._e(),(_vm.itemMenu)?_c('v-menu',{attrs:{\"position-x\":_vm.itemMenuX,\"position-y\":_vm.itemMenuY,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.itemMenu),callback:function ($$v) {_vm.itemMenu=$$v},expression:\"itemMenu\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.editItem = true}}},[_c('v-list-item-title',{staticStyle:{\"cursor\":\"pointer\"}},[_vm._v(\" Edit \"+_vm._s(_vm.selectedItem.itemName)+\" \")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.removeItems([_vm.selectedItem])}}},[_c('v-list-item-title',{staticStyle:{\"cursor\":\"pointer\"}},[_vm._v(\" Delete \"+_vm._s(_vm.selectedItem.itemName)+\" \")])],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-row',[_c('v-col',[_c('v-menu',{attrs:{\"close-on-content-click\":\"\",\"transition\":\"scale-transition\",\"offset-y\":\"\",\"max-width\":\"290px\",\"min-width\":\"290px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-text-field',_vm._g({attrs:{\"label\":_vm.dateLabel,\"name\":(\"date\" + (Date.now())),\"rules\":_vm.dateRules,\"type\":\"date\",\"data-test\":\"date-chooser\"},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}},on))]}}])})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":_vm.timeLabel,\"name\":(\"time\" + (Date.now())),\"rules\":_vm.timeRules,\"type\":\"time\",\"step\":\"1\",\"data-test\":\"time-chooser\"},on:{\"change\":_vm.onChange},model:{value:(_vm.time),callback:function ($$v) {_vm.time=$$v},expression:\"time\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-row>\n <v-col>\n <v-menu\n close-on-content-click\n transition=\"scale-transition\"\n offset-y\n max-width=\"290px\"\n min-width=\"290px\"\n >\n <template v-slot:activator=\"{ on }\">\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n :label=\"dateLabel\"\n :name=\"`date${Date.now()}`\"\n :rules=\"dateRules\"\n v-model=\"date\"\n v-on=\"on\"\n type=\"date\"\n data-test=\"date-chooser\"\n />\n </template>\n </v-menu>\n </v-col>\n <v-col>\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n :label=\"timeLabel\"\n :name=\"`time${Date.now()}`\"\n :rules=\"timeRules\"\n v-model=\"time\"\n type=\"time\"\n step=\"1\"\n @change=\"onChange\"\n data-test=\"time-chooser\"\n />\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { isValid, parse, format, getTime } from 'date-fns'\n\nexport default {\n props: {\n required: {\n type: Boolean,\n default: true,\n },\n initialDate: {\n type: Date,\n default: null,\n },\n initialTime: {\n type: Date,\n default: null,\n },\n dateLabel: {\n type: String,\n default: 'Date',\n },\n timeLabel: {\n type: String,\n default: 'Time',\n },\n },\n data() {\n return {\n date: null,\n time: null,\n rules: {\n required: (value) => !!value || 'Required',\n date: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'yyyy-MM-dd', new Date())) ||\n 'Invalid date (YYYY-MM-DD)'\n )\n } catch (e) {\n return 'Invalid date (YYYY-MM-DD)'\n }\n },\n time: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'HH:mm:ss', new Date())) ||\n 'Invalid time (HH:MM:SS)'\n )\n } catch (e) {\n return 'Invalid time (HH:MM:SS)'\n }\n },\n },\n }\n },\n computed: {\n dateRules() {\n let result = [this.rules.date]\n if (this.time || this.required) {\n result.push(this.rules.required)\n }\n return result\n },\n timeRules() {\n let result = [this.rules.time]\n if (this.date || this.required) {\n result.push(this.rules.required)\n }\n return result\n },\n },\n methods: {\n onChange() {\n if (!!this.date && !!this.time) {\n this.$emit('date-time', this.date + ' ' + this.time)\n } else {\n this.$emit('date-time', null)\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateTimeChooser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateTimeChooser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DateTimeChooser.vue?vue&type=template&id=37777c5e&\"\nimport script from \"./DateTimeChooser.vue?vue&type=script&lang=js&\"\nexport * from \"./DateTimeChooser.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-card @click.native=\"$emit('click')\">\n <v-system-bar\n :class=\"selectedGraphId === id ? 'active' : 'inactive'\"\n v-show=\"!hideSystemBar\"\n >\n <div v-show=\"errors.length !== 0\" class=\"mx-2\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"error-graph-icon\" @click=\"errorDialog = true\">\n mdi-alert\n </v-icon>\n </div>\n </template>\n <span> Errors </span>\n </v-tooltip>\n </div>\n\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"edit-graph-icon\" @click=\"editGraph = true\">\n mdi-pencil\n </v-icon>\n </div>\n </template>\n <span> Edit </span>\n </v-tooltip>\n\n <v-spacer />\n <span>{{ title }}</span>\n <v-spacer />\n\n <div v-show=\"expand\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"collapse-all\"\n v-show=\"calcFullSize\"\n @click=\"collapseAll\"\n >\n mdi-arrow-collapse\n </v-icon>\n <v-icon\n data-test=\"expand-all\"\n v-show=\"!calcFullSize\"\n @click=\"expandAll\"\n >\n mdi-arrow-expand\n </v-icon>\n </div>\n </template>\n <span v-show=\"calcFullSize\"> Collapse </span>\n <span v-show=\"!calcFullSize\"> Expand </span>\n </v-tooltip>\n </div>\n\n <div v-show=\"expand\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"collapse-width\"\n v-show=\"fullWidth\"\n @click=\"collapseWidth\"\n >\n mdi-arrow-collapse-horizontal\n </v-icon>\n <v-icon\n data-test=\"expand-width\"\n v-show=\"!fullWidth\"\n @click=\"expandWidth\"\n >\n mdi-arrow-expand-horizontal\n </v-icon>\n </div>\n </template>\n <span v-show=\"fullWidth\"> Collapse Width </span>\n <span v-show=\"!fullWidth\"> Expand Width </span>\n </v-tooltip>\n </div>\n\n <div v-show=\"expand\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"collapse-height\"\n v-show=\"fullHeight\"\n @click=\"collapseHeight\"\n >\n mdi-arrow-collapse-vertical\n </v-icon>\n <v-icon\n data-test=\"expand-height\"\n v-show=\"!fullHeight\"\n @click=\"expandHeight\"\n >\n mdi-arrow-expand-vertical\n </v-icon>\n </div>\n </template>\n <span v-show=\"fullHeight\"> Collapse Height </span>\n <span v-show=\"!fullHeight\"> Expand Height </span>\n </v-tooltip>\n </div>\n\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"minimize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"expand\"\n >\n mdi-window-minimize\n </v-icon>\n <v-icon\n data-test=\"maximize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"!expand\"\n >\n mdi-window-maximize\n </v-icon>\n </div>\n </template>\n <span v-show=\"expand\"> Minimize </span>\n <span v-show=\"!expand\"> Maximize </span>\n </v-tooltip>\n\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"close-graph-icon\" @click=\"$emit('close-graph')\">\n mdi-close-box\n </v-icon>\n </div>\n </template>\n <span> Close </span>\n </v-tooltip>\n </v-system-bar>\n\n <v-expand-transition>\n <div class=\"pa-1\" id=\"chart\" ref=\"chart\" v-show=\"expand\">\n <div :id=\"`chart${id}`\" @mousedown=\"mousedown\"></div>\n <div\n :id=\"`overview${id}`\"\n v-show=\"!hideOverview\"\n @mousedown=\"mousedown\"\n ></div>\n </div>\n </v-expand-transition>\n </v-card>\n\n <!-- Edit dialog -->\n <v-dialog\n v-model=\"editGraph\"\n @keydown.esc=\"$emit('input')\"\n @input=\"editGraphClose()\"\n max-width=\"600\"\n >\n <v-system-bar>\n <v-spacer />\n <span>Edit Graph</span>\n <v-spacer />\n </v-system-bar>\n <v-card class=\"pa-3\">\n <v-row dense>\n <v-text-field\n class=\"pb-2\"\n label=\"Title\"\n v-model=\"title\"\n hide-details\n data-test=\"edit-graph-title\"\n />\n </v-row>\n <v-card-text class=\"pa-0\">\n Select a start date/time for the graph. Leave blank for start now.\n </v-card-text>\n <date-time-chooser\n :required=\"false\"\n date-label=\"Start Date\"\n time-label=\"Start Time\"\n @date-time=\"graphStartDateTime = $event\"\n />\n <v-card-text class=\"pa-0\">\n Select a end date/time for the graph. Leave blank for continuous\n real-time graphing.\n </v-card-text>\n <date-time-chooser\n date-label=\"End Date\"\n time-label=\"End Time\"\n @date-time=\"graphEndDateTime = $event\"\n />\n <v-card-text class=\"pa-0\"> Optional Y axis settings. </v-card-text>\n <v-row dense>\n <v-col class=\"px-2\">\n <v-text-field\n hide-details\n label=\"Min Y\"\n v-model=\"graphMinY\"\n type=\"number\"\n data-test=\"graph-min-y\"\n />\n </v-col>\n <v-col class=\"px-2\">\n <v-text-field\n hide-details\n label=\"Max Y\"\n v-model=\"graphMaxY\"\n type=\"number\"\n data-test=\"graph-max-y\"\n />\n </v-col>\n </v-row>\n <v-data-table\n item-key=\"itemId\"\n class=\"elevation-1 my-2\"\n :headers=\"itemHeaders\"\n :items=\"editItems\"\n :items-per-page=\"5\"\n :footer-props=\"{\n 'items-per-page-options': [5],\n }\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-btn\n icon\n :data-test=\"`delete-item-icon${item.itemId}`\"\n @click=\"() => removeItems([item])\"\n >\n <v-icon> mdi-delete </v-icon>\n </v-btn>\n </div>\n </template>\n <span> Remove </span>\n </v-tooltip>\n </template>\n <template v-slot:no-data>\n <span>Currently no items on this graph</span>\n </template>\n </v-data-table>\n <v-card-actions>\n <v-btn color=\"primary\" @click=\"editGraphClose()\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Error dialog -->\n <v-dialog v-model=\"errorDialog\" max-width=\"600\">\n <v-system-bar>\n <v-spacer />\n <span>Errors</span>\n <v-spacer />\n </v-system-bar>\n <v-card class=\"pa-3\">\n <v-row dense>\n <v-text-field\n readonly\n hide-details\n v-model=\"title\"\n class=\"pb-2\"\n label=\"Graph Title\"\n />\n </v-row>\n <v-row class=\"my-3\">\n <v-textarea readonly rows=\"8\" :value=\"error\" />\n </v-row>\n <v-row>\n <v-btn block @click=\"clearErrors\"> Clear </v-btn>\n </v-row>\n </v-card>\n </v-dialog>\n\n <!-- Edit right click context menu -->\n <v-menu\n v-if=\"editGraphMenu\"\n v-model=\"editGraphMenu\"\n :position-x=\"editGraphMenuX\"\n :position-y=\"editGraphMenuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"editGraph = true\">\n <v-list-item-title style=\"cursor: pointer\">\n Edit {{ title }}\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <!-- Edit Item dialog -->\n <v-dialog\n max-width=\"600\"\n v-if=\"editItem\"\n v-model=\"editItem\"\n @keydown.esc=\"editItem = false\"\n >\n <v-card class=\"pa-3\">\n <v-card-title class=\"headline\">Edit Item</v-card-title>\n <v-select\n outlined\n hide-details\n label=\"Value Type\"\n :items=\"valueTypes\"\n v-model=\"selectedItem.valueType\"\n @change=\"changeType($event)\"\n />\n <v-card-actions>\n <v-btn color=\"primary\" @click=\"editItem = false\">Ok</v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Edit Item right click context menu -->\n <v-menu\n v-if=\"itemMenu\"\n v-model=\"itemMenu\"\n :position-x=\"itemMenuX\"\n :position-y=\"itemMenuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"editItem = true\">\n <v-list-item-title style=\"cursor: pointer\">\n Edit {{ selectedItem.itemName }}\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"removeItems([selectedItem])\">\n <v-list-item-title style=\"cursor: pointer\">\n Delete {{ selectedItem.itemName }}\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n</template>\n\n<script>\nimport DateTimeChooser from './DateTimeChooser'\nimport uPlot from 'uplot'\nimport bs from 'binary-search'\nimport { toDate, format, getTime } from 'date-fns'\nimport Cable from '../services/cable.js'\n\nrequire('uplot/dist/uPlot.min.css')\n\nexport default {\n components: {\n DateTimeChooser,\n },\n props: {\n id: {\n type: Number,\n required: true,\n },\n selectedGraphId: {\n type: Number,\n // Not required because we pass null\n },\n state: {\n type: String,\n required: true,\n },\n // start time in nanoseconds to start the graph\n // this allows multiple graphs to be synchronized\n startTime: {\n type: Number,\n },\n secondsGraphed: {\n type: Number,\n required: true,\n },\n pointsSaved: {\n type: Number,\n required: true,\n },\n pointsGraphed: {\n type: Number,\n required: true,\n },\n hideSystemBar: {\n type: Boolean,\n default: false,\n },\n hideOverview: {\n type: Boolean,\n default: false,\n },\n initialItems: {\n type: Array,\n },\n // These allow the parent to force a specific height and/or width\n height: {\n type: Number,\n },\n width: {\n type: Number,\n },\n },\n data() {\n return {\n itemHeaders: [\n { text: 'Target Name', value: 'targetName' },\n { text: 'Packet Name', value: 'packetName' },\n { text: 'Item Name', value: 'itemName' },\n { text: 'Actions', value: 'actions', sortable: false },\n ],\n valueTypes: ['CONVERTED', 'RAW'],\n active: true,\n expand: true,\n fullWidth: false,\n fullHeight: true,\n graph: null,\n editGraph: false,\n editGraphMenu: false,\n editGraphMenuX: 0,\n editGraphMenuY: 0,\n editItem: false,\n itemMenu: false,\n itemMenuX: 0,\n itemMenuY: 0,\n selectedItem: null,\n title: '',\n overview: null,\n data: [[]],\n graphMinY: '',\n graphMaxY: '',\n graphStartDateTime: this.startTime,\n graphEndDateTime: null,\n indexes: {},\n items: this.initialItems || [],\n drawInterval: null,\n zoomChart: false,\n zoomOverview: false,\n cable: new Cable(),\n subscription: null,\n needToUpdate: false,\n errorDialog: false,\n errors: [],\n colors: [\n 'blue',\n 'red',\n 'green',\n 'darkorange',\n 'purple',\n 'cornflowerblue',\n 'lime',\n 'gold',\n 'hotpink',\n 'tan',\n 'cyan',\n 'peru',\n 'maroon',\n 'coral',\n 'navy',\n 'teal',\n 'brown',\n 'crimson',\n 'lightblue',\n 'black',\n ],\n }\n },\n computed: {\n calcFullSize: function () {\n return this.fullWidth || this.fullHeight\n },\n editItems: function () {\n if (!this.items) return []\n let itemId = 0\n return this.items.map((item) => {\n itemId += 1\n return { ...item, itemId }\n })\n },\n error: function () {\n if (this.errorDialog && this.errors.length > 0) {\n return JSON.stringify(this.errors, null, 4)\n }\n return null\n },\n },\n created() {\n this.title = `Graph ${this.id}`\n for (const [index, item] of this.items.entries()) {\n this.data.push([]) // initialize the empty data arrays\n this.indexes[this.subscriptionKey(item)] = index + 1\n }\n },\n mounted() {\n // This code allows for temporary pulling in a patched uPlot\n // Also note you need to add 'async' before the mounted method for await\n // const plugin = document.createElement('script')\n // plugin.setAttribute(\n // 'src',\n // 'https://leeoniya.github.io/uPlot/dist/uPlot.iife.min.js'\n // )\n // plugin.async = true\n // document.head.appendChild(plugin)\n // await new Promise(r => setTimeout(r, 500)) // Allow the js to load\n\n // TODO: This is demo / performance code of multiple items with many data points\n // 10 items at 500,000 each renders immediately and uses 180MB in Chrome\n // Refresh still works, chrome is sluggish but once you pause it is very performant\n // 500,000 pts at 1Hz is 138.9hrs .. almost 6 days\n //\n // 10 items at 100,000 each is very performant ... 1,000,000 pts is Qt TlmGrapher default\n // 100,000 pts at 1Hz is 27.8hrs\n //\n // 100,000 takes 40ms, Chrome uses 160MB\n // this.data = []\n // const dataPoints = 100000\n // const items = 10\n // let pts = new Array(dataPoints)\n // let times = new Array(dataPoints)\n // let time = 1589398007\n // let series = [{}]\n // for (let i = 0; i < dataPoints; i++) {\n // times[i] = time\n // pts[i] = i\n // time += 1\n // }\n // this.data.push(times)\n // for (let i = 0; i < items; i++) {\n // this.data.push(pts.map(x => x + i))\n // series.push({\n // label: 'Item' + i,\n // stroke: this.colors[i]\n // })\n // }\n\n const { chartSeries, overviewSeries } = this.items.reduce(\n (seriesObj, item) => {\n const commonProps = {\n spanGaps: true,\n stroke: this.colors.shift(),\n }\n seriesObj.chartSeries.push({\n ...commonProps,\n item: item,\n label: item.itemName,\n value: (self, rawValue) =>\n rawValue == null ? '--' : rawValue.toFixed(2),\n })\n seriesObj.overviewSeries.push({\n ...commonProps,\n })\n return seriesObj\n },\n { chartSeries: [], overviewSeries: [] }\n )\n\n let chartOpts = {\n ...this.getSize('chart'),\n ...this.getScales(),\n ...this.getAxes('chart'),\n // series: series, // TODO: Uncomment with the performance code\n series: [\n {\n label: 'Time',\n value: (u, v) =>\n // Convert the unix timestamp into a formatted date / time\n v == null ? '--' : format(toDate(v * 1000), 'yyyy-MM-dd HH:mm:ss'),\n },\n ...chartSeries,\n ],\n cursor: {\n drag: {\n x: true,\n y: false,\n },\n // Sync the cursor across graphs so mouseovers are synced\n sync: {\n key: 'cosmos',\n // setSeries links graphs so clicking an item to hide it also hides the other graph item\n // setSeries: true,\n },\n },\n hooks: {\n setScale: [\n (chart, key) => {\n if (key == 'x' && !this.zoomOverview && this.overview) {\n this.zoomChart = true\n let left = Math.round(\n this.overview.valToPos(chart.scales.x.min, 'x')\n )\n let right = Math.round(\n this.overview.valToPos(chart.scales.x.max, 'x')\n )\n this.overview.setSelect({ left, width: right - left })\n this.zoomChart = false\n }\n },\n ],\n ready: [\n (u) => {\n let clientX\n let clientY\n let canvas = u.root.querySelector('canvas')\n canvas.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.editGraphMenuX = e.clientX\n this.editGraphMenuY = e.clientY\n this.editGraphMenu = true\n })\n let legend = u.root.querySelector('.u-legend')\n legend.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.itemMenuX = e.clientX\n this.itemMenuY = e.clientY\n // Grab the closest series and then figure out which index it is\n let seriesEl = e.target.closest('.u-series')\n let seriesIdx = Array.prototype.slice\n .call(legend.childNodes)\n .indexOf(seriesEl)\n let series = u.series[seriesIdx]\n if (series.item) {\n this.selectedItem = series.item\n this.itemMenu = true\n }\n return false\n })\n },\n ],\n },\n }\n // console.time('chart')\n this.graph = new uPlot(\n chartOpts,\n this.data,\n document.getElementById(`chart${this.id}`)\n )\n\n const overviewOpts = {\n ...this.getSize('overview'),\n ...this.getScales(),\n ...this.getAxes('overview'),\n // series: series, // TODO: Uncomment with the performance code\n series: [...overviewSeries],\n cursor: {\n y: false,\n points: {\n show: false, // TODO: This isn't working\n },\n drag: {\n setScale: false,\n x: true,\n y: false,\n },\n },\n legend: {\n show: false,\n },\n hooks: {\n setSelect: [\n (chart) => {\n if (!this.zoomChart) {\n this.zoomOverview = true\n let min = chart.posToVal(chart.select.left, 'x')\n let max = chart.posToVal(\n chart.select.left + chart.select.width,\n 'x'\n )\n this.graph.setScale('x', { min, max })\n this.zoomOverview = false\n }\n },\n ],\n },\n }\n this.overview = new uPlot(\n overviewOpts,\n this.data,\n document.getElementById(`overview${this.id}`)\n )\n //console.timeEnd('chart')\n\n // Allow the charts to dynamically resize when the window resizes\n window.addEventListener('resize', this.handleResize)\n\n if (this.state !== 'stop') {\n this.subscribe()\n }\n },\n beforeDestroy: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n window.removeEventListener('resize', this.handleResize)\n },\n watch: {\n state: function (newState, oldState) {\n switch (newState) {\n case 'start':\n // Only subscribe if we were previously stopped\n // If we were paused we do nothing ... see the data function\n if (oldState === 'stop') {\n this.subscribe()\n }\n break\n // case 'pause': Nothing to do ... see the data function\n case 'stop':\n this.subscription.unsubscribe()\n this.subscription = null\n break\n }\n },\n data: function (newData, oldData) {\n // Ignore changes to the data while we're paused\n if (this.state === 'pause') {\n return\n }\n this.graph.setData(newData)\n this.overview.setData(newData)\n let max = newData[0][newData[0].length - 1]\n let ptsMin = newData[0][newData[0].length - this.pointsGraphed]\n let min = newData[0][0]\n if (min < max - this.secondsGraphed) {\n min = max - this.secondsGraphed\n }\n if (ptsMin > min) {\n min = ptsMin\n }\n this.graph.setScale('x', { min, max })\n },\n graphMinY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMinY = val\n }\n this.setGraphRange()\n },\n graphMaxY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMaxY = val\n }\n this.setGraphRange()\n },\n graphStartDateTime: function (val) {\n this.needToUpdate = true\n if (val && typeof val === 'string') {\n this.graphStartDateTime =\n new Date(this.graphStartDateTime).getTime() * 1_000_000\n }\n },\n graphEndDateTime: function (val) {\n this.needToUpdate = true\n if (val && typeof val === 'string') {\n this.graphEndDateTime =\n new Date(this.graphEndDateTime).getTime() * 1_000_000\n }\n },\n },\n methods: {\n mousedown: function ($event) {\n this.$emit('mousedown', $event) // Bubble from the two graph divs\n },\n clearErrors: function () {\n this.errors = []\n },\n editGraphClose: function () {\n this.editGraph = false\n if (this.needToUpdate) {\n this.removeItemsFromSubscription()\n this.addItemsToSubscription()\n this.needToUpdate = false\n }\n },\n handleResize: function () {\n // TODO: Should this method be throttled?\n this.graph.setSize(this.getSize('chart'))\n this.overview.setSize(this.getSize('overview'))\n },\n resize: function () {\n this.graph.setSize(this.getSize('chart'))\n this.overview.setSize(this.getSize('overview'))\n this.$emit('resize', this.id)\n },\n expandAll: function () {\n this.fullWidth = true\n this.fullHeight = true\n this.resize()\n },\n collapseAll: function () {\n this.fullWidth = false\n this.fullHeight = false\n this.resize()\n },\n expandWidth: function () {\n this.fullWidth = true\n this.resize()\n },\n collapseWidth: function () {\n this.fullWidth = false\n this.resize()\n },\n expandHeight: function () {\n this.fullHeight = true\n this.resize()\n },\n collapseHeight: function () {\n this.fullHeight = false\n this.resize()\n },\n minMaxTransition: function () {\n this.expand = !this.expand\n this.$emit('min-max-graph', this.id)\n },\n setGraphRange: function () {\n let pad = 0.1\n if (\n this.graphMinY ||\n this.graphMinY === 0 ||\n this.graphMaxY ||\n this.graphMaxY === 0\n ) {\n pad = 0\n }\n this.graph.scales.y.range = (u, dataMin, dataMax) => {\n let min = dataMin\n if (this.graphMinY || this.graphMinY === 0) {\n min = this.graphMinY\n }\n let max = dataMax\n if (this.graphMaxY || this.graphMaxY === 0) {\n max = this.graphMaxY\n }\n return uPlot.rangeNum(min, max, pad, true)\n }\n },\n subscribe: function (endTime = null) {\n this.cable\n .createSubscription('StreamingChannel', localStorage.scope, {\n received: (data) => this.received(data),\n connected: () => {\n this.addItemsToSubscription(this.items, endTime)\n },\n disconnected: () => {\n this.errors.push({\n type: 'disconnected',\n message: 'COSMOS backend connection disconnected',\n time: new Date().getTime(),\n })\n },\n rejected: () => {\n this.errors.push({\n type: 'rejected',\n message: 'COSMOS backend connection rejected',\n time: new Date().getTime(),\n })\n },\n })\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n // throttle(cb, limit) {\n // var wait = false\n // return () => {\n // if (!wait) {\n // requestAnimationFrame(cb)\n // wait = true\n // setTimeout(() => {\n // wait = false\n // }, limit)\n // }\n // }\n // },\n getSize: function (type) {\n const navDrawer = document.getElementById('cosmos-nav-drawer')\n const navDrawerWidth = navDrawer.classList.contains(\n 'v-navigation-drawer--open'\n )\n ? navDrawer.clientWidth\n : 0\n const viewWidth =\n Math.max(document.documentElement.clientWidth, window.innerWidth || 0) -\n navDrawerWidth\n const viewHeight = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n )\n\n const chooser = document.getElementsByClassName('c-chooser')[0]\n let height = 100\n if (type === 'overview') {\n if (!this.fullHeight) {\n height = 0\n }\n } else if (chooser) {\n // Height of chart is viewportSize - chooser - overview - fudge factor (primarily padding)\n height = viewHeight - chooser.clientHeight - height - 190\n if (!this.fullHeight) {\n height = height / 2.0 + 10 // 5px padding top and bottom\n }\n }\n let width = viewWidth - 60 // 30px padding left and right\n if (!this.fullWidth) {\n width = width / 2.0 - 10 // 5px padding left and right\n }\n return {\n width: this.width || width,\n height: this.height || height,\n }\n },\n getScales: function () {\n return {\n scales: {\n x: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) return [1566453600, 1566497660]\n return [dataMin, dataMax]\n },\n },\n y: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) return [-100, 100]\n return uPlot.rangeNum(dataMin, dataMax, 0.1, true)\n },\n },\n },\n }\n },\n getAxes: function (type) {\n let strokeColor = 'rgba(0, 0, 0, .1)'\n let axisColor = 'black'\n if (this.$vuetify.theme.dark) {\n strokeColor = 'rgba(255, 255, 255, .1)'\n axisColor = 'white'\n }\n return {\n axes: [\n {\n stroke: axisColor,\n grid: {\n show: true,\n stroke: strokeColor,\n width: 2,\n },\n },\n {\n size: 70, // This size supports values up to 99 million\n stroke: axisColor,\n grid: {\n show: type === 'overview' ? false : true,\n stroke: strokeColor,\n width: 2,\n },\n },\n ],\n }\n },\n changeType: function (event) {\n this.removeItems([this.selectedItem])\n this.addItems([this.selectedItem], event)\n },\n addItems: function (itemArray, type = 'CONVERTED') {\n for (const item of itemArray) {\n item.valueType ||= type // set the default type\n this.items.push(item)\n const index = this.data.length\n const color = this.colors.shift()\n this.graph.addSeries(\n {\n spanGaps: true,\n item: item,\n label: item.itemName,\n stroke: color,\n value: (self, rawValue) =>\n rawValue == null ? '--' : rawValue.toFixed(2),\n },\n index\n )\n this.overview.addSeries({ spanGaps: true, stroke: color }, index)\n let newData = Array(this.data[0].length)\n this.data.splice(index, 0, newData)\n this.indexes[this.subscriptionKey(item)] = index\n }\n this.addItemsToSubscription(itemArray)\n },\n addItemsToSubscription: function (\n itemArray = this.items,\n endTime = this.graphEndDateTime\n ) {\n if (this.subscription) {\n CosmosAuth.updateToken(CosmosAuth.defaultMinValidity).then(() => {\n this.subscription.perform('add', {\n scope: localStorage.scope,\n mode: 'DECOM',\n token: localStorage.cosmosToken,\n items: itemArray.map(this.subscriptionKey),\n start_time: this.graphStartDateTime,\n end_time: endTime,\n })\n })\n }\n },\n removeItems: function (itemArray) {\n this.removeItemsFromSubscription(itemArray)\n\n for (const key of itemArray.map(this.subscriptionKey)) {\n const index = this.reorderIndexes(key)\n // Put back the color so it's available for new series\n this.colors.unshift(this.graph.series[index].stroke)\n this.items.splice(index - 1, 1)\n this.data.splice(index, 1)\n this.graph.delSeries(index)\n this.overview.delSeries(index)\n this.graph.setData(this.data)\n this.overview.setData(this.data)\n }\n },\n removeItemsFromSubscription: function (itemArray = this.items) {\n if (this.subscription) {\n this.subscription.perform('remove', {\n scope: localStorage.scope,\n items: itemArray.map(this.subscriptionKey),\n })\n }\n },\n reorderIndexes: function (key) {\n let index = this.indexes[key]\n delete this.indexes[key]\n for (var i in this.indexes) {\n if (this.indexes[i] > index) {\n this.indexes[i] -= 1\n }\n }\n return index\n },\n received: function (json_data) {\n // TODO: Shouldn't get errors but should we handle this every time?\n // if (json_data.error) {\n // console.log(json_data.error)\n // return\n // }\n let data = JSON.parse(json_data)\n for (let i = 0; i < data.length; i++) {\n let time = data[i].time / 1_000_000_000.0 // Time in seconds\n let length = data[0].length\n if (length == 0 || time > data[0][length - 1]) {\n // Nominal case - append new data to end\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].push(null)\n }\n this.set_data_at_index(this.data[0].length - 1, time, data[i])\n } else {\n let index = bs(this.data[0], time, this.bs_comparator)\n if (index >= 0) {\n // Found the slot in the existing data\n this.set_data_at_index(index, time, data[i])\n } else {\n // Insert a new null slot at the ideal index\n let ideal_index = -index - 1\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].splice(ideal_index, 0, null)\n }\n this.set_data_at_index(ideal_index, time, data[i])\n }\n }\n }\n // If we weren't passed a startTime notify grapher of our start\n if (this.startTime === null) {\n this.graphStartDateTime = this.data[0][0] * 1_000_000_000\n this.$emit('started', this.graphStartDateTime)\n }\n },\n bs_comparator: function (element, needle) {\n return element - needle\n },\n set_data_at_index: function (index, time, new_data) {\n this.data[0][index] = time\n for (const [key, value] of Object.entries(new_data)) {\n if (key == 'time') {\n continue\n }\n let key_index = this.indexes[key]\n if (key_index) {\n let array = this.data[key_index]\n if (!value.raw) {\n array[index] = value\n } else {\n array[index] = null\n }\n }\n }\n },\n subscriptionKey: function (item) {\n return `TLM__${item.targetName}__${item.packetName}__${item.itemName}__${item.valueType}`\n },\n },\n}\n</script>\n\n<style scoped>\n#chart {\n background-color: var(--v-tertiary-darken2);\n}\n#chart >>> .u-legend {\n text-align: left;\n}\n#chart >>> .u-inline {\n max-width: fit-content;\n}\n/* TODO: Get this to work with white theme, values would be 0 in white */\n#chart >>> .u-select {\n background-color: rgba(255, 255, 255, 0.07);\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Graph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Graph.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Graph.vue?vue&type=template&id=2adbed0c&scoped=true&\"\nimport script from \"./Graph.vue?vue&type=script&lang=js&\"\nexport * from \"./Graph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Graph.vue?vue&type=style&index=0&id=2adbed0c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2adbed0c\",\n null\n \n)\n\nexport default component.exports","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <graph\n :ref=\"'graph' + id\"\n :id=\"id\"\n :state=\"state\"\n :selected-graph-id=\"id\"\n :seconds-graphed=\"secondsGraphed\"\n :points-saved=\"pointsSaved\"\n :points-graphed=\"pointsGraphed\"\n :initial-items=\"items\"\n :height=\"size.height\"\n :width=\"size.width\"\n hide-system-bar\n hide-overview\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nimport Graph from '../Graph.vue'\n\nconst valueType = 'CONVERTED'\nexport default {\n components: {\n Graph,\n },\n mixins: [Widget],\n data: function () {\n return {\n id: Math.floor(Math.random() * 100000000000), // Unique-ish\n state: 'start',\n items: [\n {\n targetName: this.parameters[0],\n packetName: this.parameters[1],\n itemName: this.parameters[2],\n valueType,\n },\n ],\n secondsGraphed: 1000,\n pointsSaved: 1000000,\n pointsGraphed: 1000,\n size: {\n height: 300,\n width: 400,\n },\n }\n },\n created: function () {\n this.settings.forEach((setting) => {\n switch (setting[0]) {\n case 'ITEM':\n this.items.push({\n targetName: setting[1],\n packetName: setting[2],\n itemName: setting[3],\n valueType,\n })\n case 'SECONDSGRAPHED':\n this.secondsGraphed = parseInt(setting[1])\n break\n case 'POINTSSAVED':\n this.pointsSaved = parseInt(setting[1])\n break\n case 'POINTSGRAPHED':\n this.pointsGraphed = parseInt(setting[1])\n break\n case 'SIZE':\n this.size.width = parseInt(setting[1])\n this.size.height = parseInt(setting[2])\n break\n }\n })\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LinegraphWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LinegraphWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LinegraphWidget.vue?vue&type=template&id=329eddcc&\"\nimport script from \"./LinegraphWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LinegraphWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"pa-0\"},_vm._l((_vm.widgetChunks),function(chunk,rindex){return _c('v-row',{key:'r' + rindex,attrs:{\"no-gutters\":\"\"}},_vm._l((chunk),function(widget,cindex){return _c('v-col',{key:'c' + cindex},[_c(widget.type,_vm._g({tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))],1)}),1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-container class=\"pa-0\">\n <v-row\n no-gutters\n v-for=\"(chunk, rindex) in widgetChunks\"\n :key=\"'r' + rindex\"\n >\n <v-col v-for=\"(widget, cindex) in chunk\" :key=\"'c' + cindex\">\n <component\n v-on=\"$listeners\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </v-col>\n </v-row>\n </v-container>\n</template>\n\n<script>\nimport Layout from './Layout'\nimport _ from 'lodash'\nexport default {\n mixins: [Layout],\n computed: {\n columns() {\n return parseInt(this.parameters[0])\n },\n widgetChunks() {\n return _.chunk(this.widgets, this.columns)\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MatrixbycolumnsWidget.vue?vue&type=template&id=fca6767e&\"\nimport script from \"./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-progress-linear',{style:(_vm.computedStyle),attrs:{\"height\":\"25\",\"value\":_vm._value}},[_c('strong',[_vm._v(_vm._s(Math.ceil(_vm._value))+\"%\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-progress-linear height=\"25\" :value=\"_value\" :style=\"computedStyle\">\n <strong>{{ Math.ceil(_value) }}%</strong>\n </v-progress-linear>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport WidthSetter from './WidthSetter'\n\nexport default {\n mixins: [Widget, WidthSetter],\n props: {\n value: {\n default: null,\n },\n },\n data: function () {\n return {\n valueId: null,\n scaleFactor: 1.0,\n width: 80,\n }\n },\n computed: {\n _value: function () {\n let value = this.value\n if (value === null) {\n value = this.$store.state.tlmViewerValues[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 if (this.parameters[4]) {\n this.width = parseInt(this.parameters[4])\n }\n // If they're not passing us the value we have to register\n if (this.value === null) {\n var 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.$store.commit('tlmViewerAddItem', this.valueId)\n }\n },\n destroyed: function () {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProgressbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProgressbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProgressbarWidget.vue?vue&type=template&id=340cafa2&\"\nimport script from \"./ProgressbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ProgressbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-radio',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\",\"label\":_vm.label}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-radio hide-details dense :label=\"label\" :style=\"computedStyle\" />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiobuttonWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiobuttonWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadiobuttonWidget.vue?vue&type=template&id=60c7bd5e&\"\nimport script from \"./RadiobuttonWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./RadiobuttonWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-radio-group',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.selectedIndex),callback:function ($$v) {_vm.selectedIndex=$$v},expression:\"selectedIndex\"}},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-radio-group\n hide-details\n dense\n v-model=\"selectedIndex\"\n :style=\"computedStyle\"\n >\n <component\n v-for=\"(widget, index) in widgets\"\n v-on=\"$listeners\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\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 // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiogroupWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiogroupWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadiogroupWidget.vue?vue&type=template&id=35a44a25&\"\nimport script from \"./RadiogroupWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./RadiogroupWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rangebar\",style:([_vm.cssProps, _vm.computedStyle])},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rangebar__container\"},[_c('div',{staticClass:\"rangebar__line\"}),_c('div',{staticClass:\"rangebar__arrow\"})])}]\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\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: '100%', // users will override with px\n height: 20, // px\n }\n },\n computed: {\n cssProps() {\n return {\n '--height': this.height + 'px',\n '--width': this.width,\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.$store.commit('tlmViewerAddItem', this.valueId)\n\n if (this.parameters[6]) {\n // Width by default is 100% so add the px designator\n this.width = parseInt(this.parameters[6]) + 'px'\n }\n if (this.parameters[7]) {\n // Height by default is a number\n this.height = parseInt(this.parameters[7])\n }\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n methods: {\n calcPosition() {\n const value = this.$store.state.tlmViewerValues[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 width: var(--width);\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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RangebarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RangebarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RangebarWidget.vue?vue&type=template&id=3ec94604&scoped=true&\"\nimport script from \"./RangebarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./RangebarWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RangebarWidget.vue?vue&type=style&index=0&id=3ec94604&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec94604\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('verticalbox-widget',_vm._g({attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widgets\":_vm.widgets,\"content-style\":_vm.scrollwindowStyle}},_vm.$listeners))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <verticalbox-widget\n v-on=\"$listeners\"\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widgets=\"widgets\"\n :content-style=\"scrollwindowStyle\"\n />\n</template>\n\n<script>\nimport Layout from './Layout'\nimport VerticalboxWidget from './VerticalboxWidget'\n\nexport default {\n mixins: [Layout],\n components: {\n VerticalboxWidget,\n },\n computed: {\n maxHeight: function () {\n return Number(\n this.settings.find((setting) => setting[0] === 'HEIGHT')?.at(1) ?? 180\n )\n },\n scrollwindowStyle: function () {\n return `\n max-height: ${this.maxHeight}px;\n overflow-y: scroll;\n `\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ScrollwindowWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ScrollwindowWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScrollwindowWidget.vue?vue&type=template&id=523ce438&\"\nimport script from \"./ScrollwindowWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ScrollwindowWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-banner',{attrs:{\"single-line\":\"\"}},[_vm._v(_vm._s(_vm.labelText))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-banner single-line>{{ labelText }}</v-banner>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n labelText() {\n return this.parameters[0]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionheaderWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionheaderWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SectionheaderWidget.vue?vue&type=template&id=5867789a&\"\nimport script from \"./SectionheaderWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./SectionheaderWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.style)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div :style=\"style\" />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n style: function () {\n return [\n `width: ${this.parameters[0]}px;`,\n `height: ${this.parameters[1]}px;`,\n ].join('')\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpacerWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpacerWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SpacerWidget.vue?vue&type=template&id=5cbb2052&\"\nimport script from \"./SpacerWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./SpacerWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-tabs',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.widgets),function(tab,index){return _c('v-tab',{key:index},[_vm._v(\" \"+_vm._s(tab.parameters[0])+\" \")])}),1),_c('v-tabs-items',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.widgets),function(tab,tabIndex){return _c('v-tab-item',{key:tabIndex},_vm._l((tab.widgets),function(widget,widgetIndex){return _c(widget.type,_vm._g({key:(tabIndex + \"-\" + widgetIndex),tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-tabs v-model=\"curTab\">\n <v-tab v-for=\"(tab, index) in widgets\" :key=\"index\">\n {{ tab.parameters[0] }}\n </v-tab>\n </v-tabs>\n <v-tabs-items v-model=\"curTab\">\n <v-tab-item v-for=\"(tab, tabIndex) in widgets\" :key=\"tabIndex\">\n <component\n v-for=\"(widget, widgetIndex) in tab.widgets\"\n v-on=\"$listeners\"\n :key=\"`${tabIndex}-${widgetIndex}`\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </v-tab-item>\n </v-tabs-items>\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n data: function () {\n return {\n curTab: null,\n }\n },\n watch: {\n curTab: function () {\n this.$emit('min-max-screen')\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabbookWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabbookWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TabbookWidget.vue?vue&type=template&id=28716ba5&\"\nimport script from \"./TabbookWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TabbookWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-textarea',{class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"height\":_vm.height,\"value\":_vm._value,\"data-test\":\"valueText\"},on:{\"contextmenu\":_vm.showContextMenu}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-textarea\n solo\n dense\n readonly\n hide-details\n placeholder=\"Value\"\n :height=\"height\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"valueText\"\n @contextmenu=\"showContextMenu\"\n />\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport WidthSetter from './WidthSetter'\nimport DetailsDialog from '../../components/DetailsDialog'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n },\n data: function () {\n return {\n height: 100,\n }\n },\n mixins: [VWidget, WidthSetter],\n created: function () {\n if (this.parameters[3]) {\n this.width = parseInt(this.parameters[3])\n }\n if (this.parameters[4]) {\n this.height = parseInt(this.parameters[4])\n }\n },\n methods: {\n getType: function () {\n var type = 'CONVERTED'\n if (this.parameters[5]) {\n type = this.parameters[5]\n }\n return type\n },\n },\n}\n</script>\n\n<style scoped>\n.value >>> div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n.cosmos-green >>> input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow >>> input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red >>> input {\n color: red;\n}\n.cosmos-blue >>> input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple >>> input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black >>> input {\n color: black;\n}\n.cosmos-white >>> input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TextboxWidget.vue?vue&type=template&id=580e657e&scoped=true&\"\nimport script from \"./TextboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TextboxWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TextboxWidget.vue?vue&type=style&index=0&id=580e657e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"580e657e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-text-field',{style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"single-line\":\"\",\"hide-no-data\":\"\",\"hide-details\":\"\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-text-field\n solo\n dense\n single-line\n hide-no-data\n hide-details\n v-model=\"value\"\n :style=\"computedStyle\"\n >\n </v-text-field>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n value: null,\n }\n },\n // computed: {\n // width() {\n // return this.parameters[0] ? parseInt(this.parameters[0]) : 20\n // }\n // },\n created() {\n // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\n\n // TODO: Is this actually working or do we need the computed width above (see LedWidget for an example)\n if (this.parameters[0]) {\n this.settings.push(['WIDTH', parseInt(this.parameters[0])])\n }\n if (this.parameters[1]) {\n this.value = this.parameters[1]\n }\n },\n methods: {\n text() {\n return this.value\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextfieldWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextfieldWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TextfieldWidget.vue?vue&type=template&id=7594193b&\"\nimport script from \"./TextfieldWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TextfieldWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"text-h5 text-center pa-1 mt-1 label\",style:(_vm.computedStyle)},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <span class=\"text-h5 text-center pa-1 mt-1 label\" :style=\"computedStyle\">\n {{ labelText }}\n </span>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n labelText() {\n return this.parameters[0]\n },\n },\n created() {\n if (this.parameters.length < 1) {\n throw new Error('Not enough parameters for TITLE.')\n }\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TitleWidget.vue?vue&type=template&id=3405a7c9&\"\nimport script from \"./TitleWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TitleWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"value-widget-container\"},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-text-field',_vm._g(_vm._b({class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"single-line\":\"\",\"hide-no-data\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"value\":_vm._value,\"data-test\":\"value\"},on:{\"contextmenu\":_vm.showContextMenu}},'v-text-field',attrs,false),on))]}}])},[_c('span',[_vm._v(_vm._s(_vm.fullName))])]),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"value-widget-container\">\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-text-field\n solo\n dense\n readonly\n single-line\n hide-no-data\n hide-details\n placeholder=\"Value\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"value\"\n @contextmenu=\"showContextMenu\"\n v-bind=\"attrs\"\n v-on=\"on\"\n />\n </template>\n <span>{{ fullName }}</span>\n </v-tooltip>\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport DetailsDialog from '../../components/DetailsDialog'\nexport default {\n components: {\n DetailsDialog,\n },\n mixins: [VWidget],\n computed: {\n fullName() {\n return (\n this.parameters[0] + ' ' + this.parameters[1] + ' ' + this.parameters[2]\n )\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.value-widget-container {\n min-height: 34px;\n}\n.value ::v-deep div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n// TODO: These cosmos styles are also defined in assets/stylesheets/layout/_overrides.scss\n// Can they somehow be reused here? We need to force the style down into the input\n.cosmos-green ::v-deep input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow ::v-deep input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red ::v-deep input {\n color: red;\n}\n.cosmos-blue ::v-deep input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple ::v-deep input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black ::v-deep input {\n color: black;\n}\n.cosmos-white ::v-deep input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValueWidget.vue?vue&type=template&id=d1470e40&scoped=true&\"\nimport script from \"./ValueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValueWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ValueWidget.vue?vue&type=style&index=0&id=d1470e40&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d1470e40\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('value-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings}}),_c('limitsbar-widget',{attrs:{\"parameters\":_vm.limitsBarParameters,\"settings\":_vm.settings.filter(function (x) { return x[0] == 1; }).map(function (x) { return x.slice(1); })}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <value-widget :parameters=\"parameters\" :settings=\"settings\" />\n <limitsbar-widget\n :parameters=\"limitsBarParameters\"\n :settings=\"settings.filter((x) => x[0] == 1).map((x) => x.slice(1))\"\n />\n </div>\n</template>\n\n<script>\nimport ValueWidget from './ValueWidget.vue'\nimport LimitsbarWidget from './LimitsbarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n LimitsbarWidget,\n },\n computed: {\n limitsBarParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n defaultStyle() {\n return {\n width: '300px',\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValuelimitsbarWidget.vue?vue&type=template&id=fab6546e&\"\nimport script from \"./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-column\",style:(_vm.computedStyle)},[_c('limitscolumn-widget',{attrs:{\"parameters\":_vm.limitsColumnParameters,\"settings\":_vm.settings,\"widget-index\":0}}),_c('value-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-column\" :style=\"computedStyle\">\n <limitscolumn-widget\n :parameters=\"limitsColumnParameters\"\n :settings=\"settings\"\n :widget-index=\"0\"\n />\n <value-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport ValueWidget from './ValueWidget.vue'\nimport LimitscolumnWidget from './LimitscolumnWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n LimitscolumnWidget,\n },\n created() {\n this.settings.push(['WIDTH', '100'])\n },\n computed: {\n limitsColumnParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValuelimitscolumnWidget.vue?vue&type=template&id=68762854&\"\nimport script from \"./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('value-widget',{attrs:{\"parameters\":_vm.valueParameters}}),_c('rangebar-widget',{attrs:{\"parameters\":_vm.parameters}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <value-widget :parameters=\"valueParameters\" />\n <rangebar-widget :parameters=\"parameters\" />\n </div>\n</template>\n\n<script>\nimport ValueWidget from './ValueWidget.vue'\nimport RangebarWidget from './RangebarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n RangebarWidget,\n },\n computed: {\n valueParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'WITH_UNITS',\n ]\n },\n defaultStyle() {\n return {\n width: '300px',\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuerangebarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuerangebarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValuerangebarWidget.vue?vue&type=template&id=6dfb6492&\"\nimport script from \"./ValuerangebarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValuerangebarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-column\"},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-column\">\n <component\n v-on=\"$listeners\"\n v-for=\"(widget, index) in widgets\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VerticalWidget.vue?vue&type=template&id=0402d44d&\"\nimport script from \"./VerticalWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./VerticalWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-banner',{attrs:{\"single-line\":\"\"}},[_vm._v(_vm._s(_vm.parameters.join(' ')))]),_c('vertical-widget',_vm._g({style:(_vm.contentStyle),attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widgets\":_vm.widgets}},_vm.$listeners))],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-banner single-line>{{ parameters.join(' ') }}</v-banner>\n <vertical-widget\n v-on=\"$listeners\"\n :style=\"contentStyle\"\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widgets=\"widgets\"\n />\n </div>\n</template>\n\n<script>\nimport VerticalWidget from './VerticalWidget'\nimport Layout from './Layout'\n\nexport default {\n mixins: [Layout],\n components: {\n VerticalWidget,\n },\n props: {\n contentStyle: {\n type: String,\n },\n },\n}\n</script>\n\n<style scoped>\n.v-banner >>> div {\n background-color: var(--v-tertiary-darken2) !important;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VerticalboxWidget.vue?vue&type=template&id=818decfa&scoped=true&\"\nimport script from \"./VerticalboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./VerticalboxWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VerticalboxWidget.vue?vue&type=style&index=0&id=818decfa&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"818decfa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('top-bar',{attrs:{\"title\":_vm.title,\"menus\":_vm.menus}}),_c('v-container',[_c('v-row',[_c('v-col',[_c('v-select',{staticClass:\"ma-0 pa-0\",attrs:{\"label\":\"Select Target\",\"items\":_vm.targets,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.targetSelect},model:{value:(_vm.selectedTarget),callback:function ($$v) {_vm.selectedTarget=$$v},expression:\"selectedTarget\"}})],1),_c('v-col',[_c('v-select',{staticClass:\"ma-0 pa-0\",attrs:{\"label\":\"Select Screen\",\"items\":_vm.screens},on:{\"change\":_vm.screenSelect},model:{value:(_vm.selectedScreen),callback:function ($$v) {_vm.selectedScreen=$$v},expression:\"selectedScreen\"}})],1),_c('v-col',[_c('v-btn',{staticClass:\"primary\",attrs:{\"disabled\":!_vm.selectedScreen},on:{\"click\":function () { return _vm.showScreen(_vm.selectedTarget, _vm.selectedScreen); }}},[_vm._v(\" Show Screen \")])],1)],1)],1),_c('div',{staticClass:\"grid\"},_vm._l((_vm.definitions),function(def){return _c('div',{key:def.id,ref:\"gridItem\",refInFor:true,staticClass:\"item\",attrs:{\"id\":_vm.screenId(def.id)}},[_c('div',{staticClass:\"item-content\"},[_c('cosmos-screen',{attrs:{\"target\":def.target,\"screen\":def.screen,\"definition\":def.definition},on:{\"close-screen\":function($event){return _vm.closeScreen(def.id)},\"min-max-screen\":_vm.refreshLayout,\"add-new-screen\":function ($event) { return _vm.showScreen.apply(void 0, $event); }}})],1)])}),0),(_vm.openConfig)?_c('open-config-dialog',{attrs:{\"tool\":_vm.toolName},on:{\"success\":function($event){return _vm.openConfiguration($event)}},model:{value:(_vm.openConfig),callback:function ($$v) {_vm.openConfig=$$v},expression:\"openConfig\"}}):_vm._e(),(_vm.saveConfig)?_c('save-config-dialog',{attrs:{\"tool\":_vm.toolName},on:{\"success\":function($event){return _vm.saveConfiguration($event)}},model:{value:(_vm.saveConfig),callback:function ($$v) {_vm.saveConfig=$$v},expression:\"saveConfig\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',[_c('v-system-bar',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.length !== 0),expression:\"errors.length !== 0\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"error-graph-icon\"},on:{\"click\":function($event){_vm.errorDialog = true}}},[_vm._v(\" mdi-alert \")])],1)]}}])},[_c('span',[_vm._v(\" Errors \")])])],1),_c('v-spacer'),_c('span',[_vm._v(_vm._s(_vm.target)+\" \"+_vm._s(_vm.screen))]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"edit-screen-icon\"},on:{\"click\":_vm.openEdit}},[_vm._v(\" mdi-pencil \")])],1)]}}])},[_c('span',[_vm._v(\" Edit Screen \")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],attrs:{\"data-test\":\"minimize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-minimize \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}],attrs:{\"data-test\":\"maximize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-maximize \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_vm._v(\" Minimize Screen \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}]},[_vm._v(\" Maximize Screen \")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"close-screen-icon\"},on:{\"click\":function($event){return _vm.$emit('close-screen')}}},[_vm._v(\" mdi-close-box \")])],1)]}}])},[_c('span',[_vm._v(\" Close Screen \")])])],1),_c('v-expand-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],ref:\"screen\",staticClass:\"pa-1\"},[_c('vertical-widget',_vm._g({attrs:{\"widgets\":_vm.layoutStack[0].widgets}},_vm.$listeners))],1)])],1),_c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.editDialog),callback:function ($$v) {_vm.editDialog=$$v},expression:\"editDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Edit Screen: \"+_vm._s(_vm.target)+\" \"+_vm._s(_vm.screen)+\" \")]),_c('v-spacer'),_c('div',{staticClass:\"mx-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"download-screen-icon\"},on:{\"click\":_vm.downloadScreen}},[_vm._v(\" mdi-download \")])],1)]}}])},[_c('span',[_vm._v(\" Download Screen \")])])],1)],1),_c('v-card-text',[_c('v-row',{staticClass:\"mt-3\"},[_vm._v(\" Upload a screen file. \")]),_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"3\"}},[_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"success\",\"disabled\":!_vm.file || _vm.loadingFile,\"loading\":_vm.loadingFile,\"data-test\":\"editScreenLoadBtn\"},on:{\"click\":_vm.loadFile},scopedSlots:_vm._u([{key:\"loader\",fn:function(){return [_c('span',[_vm._v(\"Loading...\")])]},proxy:true}])},[_vm._v(\" Load \")])],1),_c('v-col',{attrs:{\"cols\":\"9\"}},[_c('v-file-input',{attrs:{\"truncate-length\":\"15\",\"accept\":\".txt\",\"label\":\"Click to select .txt screen file.\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1)],1),_c('v-row',[_vm._v(\" Edit the screen definition. \")]),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-textarea',{attrs:{\"rows\":\"12\",\"rules\":[_vm.rules.required],\"data-test\":\"screen-text-input\"},model:{value:(_vm.currentDefinition),callback:function ($$v) {_vm.currentDefinition=$$v},expression:\"currentDefinition\"}})],1),_c('v-row',{staticClass:\"my-3\"},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.editErrors),expression:\"editErrors\"}],staticClass:\"red--text\",domProps:{\"textContent\":_vm._s(_vm.editErrors)}})]),_c('v-row',[_c('v-spacer'),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"data-test\":\"editScreenCancelBtn\"},on:{\"click\":_vm.cancelEdit}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\",\"data-test\":\"editScreenSubmitBtn\",\"disabled\":!!_vm.editErrors},on:{\"click\":_vm.saveEdit}},[_vm._v(\" Save \")])],1)],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.errorDialog),callback:function ($$v) {_vm.errorDialog=$$v},expression:\"errorDialog\"}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Screen: \"+_vm._s(_vm.target)+\" \"+_vm._s(_vm.screen)+\" Errors \")]),_c('v-spacer')],1),_c('v-card',{staticClass:\"pa-3\"},[_c('v-row',{staticClass:\"my-3\"},[_c('v-textarea',{attrs:{\"readonly\":\"\",\"rows\":\"13\",\"value\":_vm.error}})],1),_c('v-row',[_c('v-btn',{attrs:{\"block\":\"\"},on:{\"click\":_vm.clearErrors}},[_vm._v(\" Clear \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nexport class ConfigParserError {\n constructor(config_parser, usage = '', url = '') {\n this.keyword = config_parser.keyword\n this.parameters = config_parser.parameters\n this.filename = config_parser.filename\n this.line = config_parser.line\n this.line_number = config_parser.line_number\n this.usage = usage\n this.url = url\n }\n}\n\nexport class ConfigParserService {\n keyword = null\n parameters = []\n filename = ''\n line = ''\n line_number = 0\n url = 'http://cosmosrb.com/docs/v5'\n\n constructor() {}\n\n verify_num_parameters(min_num_params, max_num_params, usage = '') {\n // This syntax works with 0 because each doesn't return any values\n // for a backwards range\n for (var index = 1; index <= min_num_params; index++) {\n // If the parameter is nil (0 based) then we have a problem\n if (this.parameters[index - 1] === undefined) {\n throw new ConfigParserError(\n this,\n `Not enough parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n // If they pass null for max_params we don't check for a maximum number\n if (max_num_params && !this.parameters[max_num_params] === undefined) {\n throw new ConfigParserError(\n this,\n `Too many parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n\n remove_quotes(string) {\n if (string.length < 2) {\n return string\n }\n var first_char = string.charAt(0)\n if (first_char !== '\"' && first_char !== \"'\") {\n return string\n }\n var last_char = string.charAt(string.length - 1)\n if (first_char !== last_char) {\n return string\n }\n return string.substring(1, string.length - 1)\n }\n\n scan_string(string, rx) {\n if (!rx.global) throw \"rx must have 'global' flag set\"\n var r = []\n string.replace(rx, function (match) {\n r.push(match)\n return match\n })\n return r\n }\n\n parse_string(\n input_string,\n original_filename,\n yield_non_keyword_lines,\n remove_quotes,\n handler\n ) {\n var line_continuation = false\n this.line = ''\n this.keyword = null\n this.parameters = []\n this.filename = original_filename\n\n // Break string in to lines\n var lines = input_string.split('\\n')\n var numLines = lines.length\n\n for (var i = 0; i < numLines; i++) {\n this.line_number = i + 1\n var line = lines[i]\n\n line = line.trim()\n\n var rx = /(\"([^\\\\\"]|\\\\.)*\")|('([^\\\\']|\\\\.)*')|\\S+/g\n var data = this.scan_string(line, rx)\n\n var first_item = ''\n if (data.length > 0) {\n first_item = first_item + data[0]\n }\n\n if (line_continuation) {\n this.line = this.line + line\n // Carry over keyword and parameters\n } else {\n this.line = line\n if (first_item.length === 0 || first_item.charAt(0) === '#') {\n this.keyword = null\n } else {\n this.keyword = first_item.toUpperCase()\n }\n this.parameters = []\n }\n\n // Ignore comments and blank lines\n if (this.keyword === null) {\n if (yield_non_keyword_lines && !line_continuation) {\n handler(this.keyword, this.parameters)\n }\n continue\n }\n\n if (line_continuation) {\n if (remove_quotes) {\n this.parameters.push(this.remove_quotes(first_item))\n } else {\n this.parameters.push(first_item)\n }\n line_continuation = false\n }\n\n var length = data.length\n if (length > 1) {\n for (var index = 1; index < length; index++) {\n var string = data[index]\n\n // Don't process trailing comments such as:\n // KEYWORD PARAM #This is a comment\n // But still process Ruby string interpolations such as:\n // KEYWORD PARAM #{var}\n if (string.length > 0 && string.charAt(0) === '#') {\n if (!(string.length > 1 && string.charAt(1) === '{')) {\n break\n }\n }\n\n // If the string is simply '&' and its the last string then its a line continuation so break the loop\n if (\n string.length === 1 &&\n string.charAt(0) === '&' &&\n index === length - 1\n ) {\n line_continuation = true\n continue\n }\n\n line_continuation = false\n if (remove_quotes) {\n this.parameters.push(this.remove_quotes(string))\n } else {\n this.parameters.push(string)\n }\n }\n }\n\n // If we detected a line continuation while going through all the\n // strings on the line then we strip off the continuation character and\n // return to the top of the loop to continue processing the line.\n if (line_continuation) {\n // Strip the continuation character\n if (this.line.length >= 1) {\n this.line = this.line.substring(0, this.line.length - 1)\n } else {\n this.line = ''\n }\n continue\n }\n\n handler(this.keyword, this.parameters)\n } // for\n } // parse_string\n} // class ConfigParserService\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-card>\n <v-system-bar>\n <div v-show=\"errors.length !== 0\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"error-graph-icon\"\n @click=\"errorDialog = true\"\n >\n mdi-alert\n </v-icon>\n </div>\n </template>\n <span> Errors </span>\n </v-tooltip>\n </div>\n <v-spacer />\n <span>{{ target }} {{ screen }}</span>\n <v-spacer />\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"edit-screen-icon\" @click=\"openEdit\">\n mdi-pencil\n </v-icon>\n </div>\n </template>\n <span> Edit Screen </span>\n </v-tooltip>\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"minimize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"expand\"\n >\n mdi-window-minimize\n </v-icon>\n <v-icon\n data-test=\"maximize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"!expand\"\n >\n mdi-window-maximize\n </v-icon>\n </div>\n </template>\n <span v-show=\"expand\"> Minimize Screen </span>\n <span v-show=\"!expand\"> Maximize Screen </span>\n </v-tooltip>\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"close-screen-icon\"\n @click=\"$emit('close-screen')\"\n >\n mdi-close-box\n </v-icon>\n </div>\n </template>\n <span> Close Screen </span>\n </v-tooltip>\n </v-system-bar>\n <v-expand-transition>\n <div class=\"pa-1\" ref=\"screen\" v-show=\"expand\">\n <vertical-widget\n :widgets=\"layoutStack[0].widgets\"\n v-on=\"$listeners\"\n />\n </div>\n </v-expand-transition>\n </v-card>\n\n <!-- Edit dialog -->\n <v-dialog v-model=\"editDialog\" width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Edit Screen: {{ target }} {{ screen }} </span>\n <v-spacer />\n <div class=\"mx-2\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"download-screen-icon\"\n @click=\"downloadScreen\"\n >\n mdi-download\n </v-icon>\n </div>\n </template>\n <span> Download Screen </span>\n </v-tooltip>\n </div>\n </v-system-bar>\n <v-card-text>\n <v-row class=\"mt-3\"> Upload a screen file. </v-row>\n <v-row no-gutters align=\"center\">\n <v-col cols=\"3\">\n <v-btn\n block\n color=\"success\"\n @click=\"loadFile\"\n :disabled=\"!file || loadingFile\"\n :loading=\"loadingFile\"\n data-test=\"editScreenLoadBtn\"\n >\n Load\n <template v-slot:loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n <v-col cols=\"9\">\n <v-file-input\n v-model=\"file\"\n truncate-length=\"15\"\n accept=\".txt\"\n label=\"Click to select .txt screen file.\"\n />\n </v-col>\n </v-row>\n <v-row> Edit the screen definition. </v-row>\n <v-row no-gutters>\n <v-textarea\n v-model=\"currentDefinition\"\n rows=\"12\"\n :rules=\"[rules.required]\"\n data-test=\"screen-text-input\"\n />\n </v-row>\n <v-row class=\"my-3\">\n <span class=\"red--text\" v-show=\"editErrors\" v-text=\"editErrors\" />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"cancelEdit\"\n class=\"mx-2\"\n outlined\n data-test=\"editScreenCancelBtn\"\n >\n Cancel\n </v-btn>\n <v-btn\n @click=\"saveEdit\"\n class=\"mx-2\"\n color=\"primary\"\n data-test=\"editScreenSubmitBtn\"\n :disabled=\"!!editErrors\"\n >\n Save\n </v-btn>\n </v-row>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <!-- Error dialog -->\n <v-dialog v-model=\"errorDialog\" max-width=\"600\">\n <v-system-bar>\n <v-spacer />\n <span> Screen: {{ target }} {{ screen }} Errors </span>\n <v-spacer />\n </v-system-bar>\n <v-card class=\"pa-3\">\n <v-row class=\"my-3\">\n <v-textarea readonly rows=\"13\" :value=\"error\" />\n </v-row>\n <v-row>\n <v-btn block @click=\"clearErrors\"> Clear </v-btn>\n </v-row>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport Api from '@cosmosc2/tool-common/src/services/api'\nimport { ConfigParserService } from '@cosmosc2/tool-common/src/services/config-parser'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport Vue from 'vue'\nimport upperFirst from 'lodash/upperFirst'\nimport camelCase from 'lodash/camelCase'\n\n// Globally register all XxxWidget.vue components\nconst requireComponent = require.context(\n // The relative path of the components folder\n '@cosmosc2/tool-common/src/components/widgets',\n // Whether or not to look in subfolders\n false,\n // The regular expression used to match base component filenames\n /[A-Z]\\w+Widget\\.vue$/\n)\n\nrequireComponent.keys().forEach((filename) => {\n // Get component config\n const componentConfig = requireComponent(filename)\n\n // Get PascalCase name of component\n const componentName = upperFirst(\n camelCase(\n // Gets the filename regardless of folder depth\n filename\n .split('/')\n .pop()\n .replace(/\\.\\w+$/, '')\n )\n )\n\n // Register component globally\n Vue.component(\n componentName,\n // Look for the component options on `.default`, which will\n // exist if the component was exported with `export default`,\n // otherwise fall back to module's root.\n componentConfig.default || componentConfig\n )\n})\n\nexport default {\n props: {\n target: {\n type: String,\n default: '',\n },\n screen: {\n type: String,\n default: '',\n },\n definition: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n rules: {\n required: (value) => !!value || 'Required',\n },\n api: null,\n loadingFile: false,\n file: null,\n currentDefinition: this.definition,\n backup: '',\n editDialog: false,\n expand: true,\n configParser: null,\n currentLayout: null,\n layoutStack: [],\n namedWidgets: {},\n width: null,\n height: null,\n fixed: null,\n globalSettings: [],\n globalSubsettings: [],\n substitute: false,\n original_target_name: null,\n force_substitute: false,\n pollingPeriod: 1,\n errors: [],\n errorDialog: false,\n }\n },\n computed: {\n editErrors: function () {\n if (this.currentDefinition === '' && !this.file) {\n return 'Input can not be blank.'\n }\n if (this.currentDefinition === this.backup) {\n return 'No changes have been made to save.'\n }\n return null\n },\n error: function () {\n if (this.errorDialog && this.errors.length > 0) {\n return JSON.stringify(this.errors, null, 4)\n }\n return null\n },\n },\n // Called when an error from any descendent component is captured\n // We need this because an error can occur from any of the children\n // in the widget stack and are typically thrown on create()\n errorCaptured(err, vm, info) {\n if (err.usage) {\n this.errors.push({\n type: 'usage',\n message: err.usage,\n time: new Date().getTime(),\n })\n } else {\n this.errors.push({\n type: 'error',\n message: `${err}`,\n time: new Date().getTime(),\n })\n }\n return false\n },\n created() {\n this.api = new CosmosApi()\n this.configParser = new ConfigParserService()\n this.parseDefinition()\n },\n mounted() {\n let refreshInterval = this.pollingPeriod * 1000\n this.updater = setInterval(() => {\n this.update()\n }, refreshInterval)\n },\n destroyed() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n methods: {\n clearErrors: function () {\n this.errors = []\n },\n parseDefinition: function () {\n // Each time we start over and parse the screen definition\n this.errors = []\n this.namedWidgets = {}\n this.layoutStack = []\n // Every screen starts with a VerticalWidget\n this.layoutStack.push({\n type: 'VerticalWidget',\n parameters: [],\n widgets: [],\n })\n this.currentLayout = this.layoutStack[this.layoutStack.length - 1]\n\n this.configParser.parse_string(\n this.currentDefinition,\n '',\n false,\n true,\n (keyword, parameters) => {\n if (keyword) {\n switch (keyword) {\n case 'SCREEN':\n this.configParser.verify_num_parameters(\n 3,\n 4,\n `${keyword} <Width or AUTO> <Height or AUTO> <Polling Period> <FIXED>`\n )\n this.width = parseInt(parameters[0])\n this.height = parseInt(parameters[1])\n this.pollingPeriod = parseFloat(parameters[2])\n if (parameters.length === 4) {\n this.fixed = true\n } else {\n this.fixed = false\n }\n break\n case 'END':\n this.configParser.verify_num_parameters(0, 0, `${keyword}`)\n this.layoutStack.pop()\n this.currentLayout =\n this.layoutStack[this.layoutStack.length - 1]\n break\n case 'SETTING':\n case 'SUBSETTING':\n const widget =\n this.currentLayout.widgets[\n this.currentLayout.widgets.length - 1\n ] ?? this.currentLayout\n widget.settings.push(parameters)\n break\n case 'GLOBAL_SETTING':\n this.globalSettings.push(parameters)\n break\n case 'GLOBAL_SUBSETTING':\n this.globalSubsettings.push(parameters)\n break\n default:\n this.processWidget(keyword, parameters)\n break\n } // switch keyword\n } // if keyword\n }\n )\n this.applyGlobalSettings(this.layoutStack[0].widgets)\n },\n // Called by button scripts to get named widgets\n // Underscores used to match COSMOS API rather than Javascript convention\n get_named_widget: function (name) {\n return this.namedWidgets[name]\n },\n // Called by named widgets to register with the screen\n setNamedWidget: function (name, widget) {\n this.namedWidgets[name] = widget\n },\n update: function () {\n if (this.$store.state.tlmViewerItems.length !== 0) {\n this.api\n .get_tlm_values(this.$store.state.tlmViewerItems)\n .then((data) => {\n this.$store.commit('tlmViewerUpdateValues', data)\n })\n }\n },\n openEdit: function () {\n // Make a copy in case they edit and cancel\n this.backup = this.currentDefinition.repeat(1)\n this.editDialog = true\n },\n cancelEdit: function () {\n this.file = null\n this.editDialog = false\n // Restore the backup since we cancelled\n this.currentDefinition = this.backup\n this.parseDefinition()\n },\n loadFile: function () {\n const fileReader = new FileReader()\n fileReader.readAsText(this.file)\n this.loadingFile = true\n const that = this\n fileReader.onload = function () {\n that.loadingFile = false\n that.currentDefinition = fileReader.result\n that.inputType = 'txt'\n that.file = null\n }\n },\n saveEdit: function () {\n this.parseDefinition()\n // After parsing wait and see if there are errors before saving\n this.$nextTick(function () {\n Api.post('/cosmos-api/screen/', {\n data: {\n scope: localStorage.scope,\n target: this.target,\n screen: this.screen,\n text: this.currentDefinition,\n },\n })\n this.editDialog = false\n })\n },\n downloadScreen: function () {\n const blob = new Blob([this.currentDefinition], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', `${this.target}_${this.screen}.txt`)\n link.click()\n },\n minMaxTransition: function () {\n this.expand = !this.expand\n this.$emit('min-max-screen')\n },\n processWidget: function (keyword, parameters) {\n var widgetName = null\n if (keyword === 'NAMED_WIDGET') {\n this.configParser.verify_num_parameters(\n 2,\n null,\n `${keyword} <Widget Name> <Widget Type> <Widget Settings... (optional)>`\n )\n widgetName = parameters[0].toUpperCase()\n keyword = parameters[1].toUpperCase()\n parameters = parameters.slice(2, parameters.length)\n }\n const componentName =\n keyword.charAt(0).toUpperCase() +\n keyword.slice(1).toLowerCase() +\n 'Widget'\n let settings = []\n if (widgetName !== null) {\n // Push a reference to the screen so the layout can register when it is created\n // We do this because the widget isn't actually created until\n // the layout happens with <component :is='type'>\n settings.push(['NAMED_WIDGET', widgetName, this])\n }\n // If this is a layout widget we add it to the layoutStack and reset the currentLayout\n if (\n keyword.includes('VERTICAL') ||\n keyword.includes('HORIZONTAL') ||\n keyword === 'MATRIXBYCOLUMNS' ||\n keyword === 'TABBOOK' ||\n keyword === 'TABITEM' ||\n keyword === 'CANVAS' ||\n keyword === 'RADIOGROUP' ||\n keyword === 'SCROLLWINDOW'\n ) {\n const layout = {\n type: componentName,\n parameters: parameters,\n settings: settings,\n widgets: [],\n }\n this.layoutStack.push(layout)\n this.currentLayout.widgets.push(layout)\n this.currentLayout = layout\n } else {\n // Buttons require a reference to the screen to call get_named_widget\n if (keyword.includes('BUTTON')) {\n settings.push(['SCREEN', this])\n }\n if (Vue.options.components[componentName]) {\n this.currentLayout.widgets.push({\n type: componentName,\n target: this.target,\n parameters: parameters,\n settings: settings,\n })\n } else {\n this.currentLayout.widgets.push({\n type: 'DynamicWidget',\n target: this.target,\n parameters: parameters,\n settings: settings,\n name: componentName,\n })\n }\n }\n },\n applyGlobalSettings: function (widgets) {\n this.globalSettings.forEach((setting) => {\n widgets.forEach((widget) => {\n // widget.type is already the full camelcase widget name like LabelWidget\n // so we have to lower case both and tack on 'widget' to compare\n if (\n widget.type.toLowerCase() ===\n setting[0].toLowerCase() + 'widget'\n ) {\n widget.settings.push(setting.slice(1))\n }\n // Recursively apply to all widgets contained in layouts\n if (widget.widgets) {\n this.applyGlobalSettings(widget.widgets)\n }\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n background-color: var(--v-tertiary-darken2);\n}\n.v-textarea >>> textarea {\n padding: 5px;\n background-color: var(--v-tertiary-darken1) !important;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CosmosScreen.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CosmosScreen.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CosmosScreen.vue?vue&type=template&id=dc9e830a&scoped=true&\"\nimport script from \"./CosmosScreen.vue?vue&type=script&lang=js&\"\nexport * from \"./CosmosScreen.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CosmosScreen.vue?vue&type=style&index=0&id=dc9e830a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dc9e830a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Open Configuration\")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"search\",\"type\":\"text\",\"data-test\":\"search\",\"prepend-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle-outline\",\"clearable\":\"\",\"autofocus\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"show-select\":\"\",\"single-select\":\"\",\"item-key\":\"configId\",\"search\":_vm.search,\"headers\":_vm.headers,\"items\":_vm.configs,\"items-per-page\":5,\"footer-props\":{ 'items-per-page-options': [5] }},on:{\"item-selected\":_vm.itemSelected,\"click:row\":function (item, slot) { return slot.select(item); }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-btn',{staticClass:\"mt-1\",attrs:{\"data-test\":\"item-delete\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteConfig(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)]}}])}),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"ma-2 red--text\",domProps:{\"textContent\":_vm._s(_vm.error)}})]),_c('v-row',[_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"success\",\"data-test\":\"open-config-submit-btn\",\"disabled\":!!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\" Ok \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"open-config-cancel-btn\"},on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")])],1)],1)])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" @keydown.esc=\"cancel\" width=\"600\">\n <v-card>\n <form v-on:submit.prevent=\"success\">\n <v-system-bar>\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <v-row dense>\n <v-text-field\n label=\"search\"\n v-model=\"search\"\n type=\"text\"\n data-test=\"search\"\n prepend-icon=\"mdi-magnify\"\n clear-icon=\"mdi-close-circle-outline\"\n clearable\n autofocus\n single-line\n hide-details\n />\n </v-row>\n <v-data-table\n show-select\n single-select\n item-key=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :footer-props=\"{ 'items-per-page-options': [5] }\"\n @item-selected=\"itemSelected\"\n @click:row=\"(item, slot) => slot.select(item)\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n data-test=\"item-delete\"\n icon\n @click=\"deleteConfig(item)\"\n >\n <v-icon>mdi-delete</v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <v-row dense>\n <span class=\"ma-2 red--text\" v-show=\"error\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-btn\n @click.prevent=\"success\"\n type=\"submit\"\n color=\"success\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n >\n Ok\n </v-btn>\n <v-spacer />\n <v-btn\n @click=\"cancel\"\n color=\"primary\"\n data-test=\"open-config-cancel-btn\"\n >\n Cancel\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n tool: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n text: 'Configuration',\n value: 'config',\n },\n {\n text: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedItem: null,\n }\n },\n computed: {\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new CosmosApi()\n .list_configs(this.tool)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to Cosmos. ${error}`)\n })\n },\n methods: {\n itemSelected: function (item) {\n if (item.value) {\n this.selectedItem = item.item\n } else {\n this.selectedItem = null\n }\n },\n success: function () {\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedItem = null\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedItem = null\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem.config === item.config) {\n this.selectedItem = null\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new CosmosApi().delete_config(this.tool, item.config)\n })\n .catch((error) => {\n if (error) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`\n )\n }\n })\n },\n },\n}\n</script>\n\n<style scoped></style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpenConfigDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpenConfigDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OpenConfigDialog.vue?vue&type=template&id=4f9dd098&scoped=true&\"\nimport script from \"./OpenConfigDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./OpenConfigDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f9dd098\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Save Configuration\")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"search\",\"type\":\"text\",\"data-test\":\"search\",\"prepend-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle-outline\",\"clearable\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"show-select\":\"\",\"single-select\":\"\",\"item-key\":\"configId\",\"search\":_vm.search,\"headers\":_vm.headers,\"items\":_vm.configs,\"items-per-page\":5,\"footer-props\":{ 'items-per-page-options': [5] }},on:{\"item-selected\":_vm.itemSelected,\"click:row\":function (item, slot) { return slot.select(item); }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-btn',{staticClass:\"mt-1\",attrs:{\"icon\":\"\",\"data-test\":\"item-delete\"},on:{\"click\":function($event){return _vm.deleteConfig(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)]}}])}),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"autofocus\":\"\",\"disabled\":!!_vm.selectedItem,\"label\":\"Configuration Name\",\"data-test\":\"name-input-save-config-dialog\"},model:{value:(_vm.configName),callback:function ($$v) {_vm.configName=$$v},expression:\"configName\"}})],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"ma-2 red--text\",domProps:{\"textContent\":_vm._s(_vm.error)}})]),_c('v-row',[_c('v-spacer'),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"type\":\"submit\",\"color\":\"primary\",\"data-test\":\"save-config-submit-btn\",\"disabled\":!!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\" Ok \")])],1)],1)])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" @keydown.esc=\"cancel\" width=\"600\">\n <v-card>\n <form v-on:submit.prevent=\"success\">\n <v-system-bar>\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <v-row dense>\n <v-text-field\n label=\"search\"\n v-model=\"search\"\n type=\"text\"\n data-test=\"search\"\n prepend-icon=\"mdi-magnify\"\n clear-icon=\"mdi-close-circle-outline\"\n clearable\n single-line\n hide-details\n />\n </v-row>\n <v-data-table\n show-select\n single-select\n item-key=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :footer-props=\"{ 'items-per-page-options': [5] }\"\n @item-selected=\"itemSelected\"\n @click:row=\"(item, slot) => slot.select(item)\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-btn\n icon\n class=\"mt-1\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n >\n <v-icon>mdi-delete</v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span class=\"ma-2 red--text\" v-show=\"error\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn outlined class=\"mx-2\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n @click.prevent=\"success\"\n type=\"submit\"\n color=\"primary\"\n class=\"mx-2\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n >\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n tool: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n text: 'Configuration',\n value: 'config',\n },\n {\n text: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedItem: null,\n }\n },\n computed: {\n error: function () {\n if (this.configName === '') {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new CosmosApi()\n .list_configs(this.tool)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to Cosmos. ${error}`)\n })\n },\n methods: {\n itemSelected: function (item) {\n if (item.value) {\n this.selectedItem = item.item\n this.configName = item.item.config\n } else {\n this.selectedItem = null\n this.configName = ''\n }\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedItem = null\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedItem = null\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.configName === item.config) {\n this.selectedItem = null\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item.config), 1)\n new CosmosApi().delete_config(this.tool, item.config)\n })\n .catch((error) => {\n if (error) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`\n )\n }\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SaveConfigDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SaveConfigDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SaveConfigDialog.vue?vue&type=template&id=7685694e&\"\nimport script from \"./SaveConfigDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SaveConfigDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('mounting-portal',{attrs:{\"mount-to\":\"#cosmos-menu\",\"append\":\"\"}},[_c('div',{staticClass:\"v-toolbar__content\"},[_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label)))}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label) + \" \" + (option.label)))},on:{\"click\":option.command}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}})],1):_vm._e(),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled},domProps:{\"textContent\":_vm._s(option.icon)}})],1):_vm._e(),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')),domProps:{\"textContent\":_vm._s(option.label)}}):_vm._e()],1)]})],2)],1)],1)}),_c('v-spacer'),_c('v-toolbar-title',{domProps:{\"textContent\":_vm._s(_vm.title)}}),_c('v-spacer')],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <mounting-portal mount-to=\"#cosmos-menu\" append>\n <div class=\"v-toolbar__content\">\n <v-menu offset-y v-for=\"(menu, i) in menus\" :key=\"i\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n outlined\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"mx-1\"\n :data-test=\"formatDT(`${title} ${menu.label}`)\"\n >\n <span v-text=\"menu.label\" />\n <v-icon right> mdi-menu-down </v-icon>\n </v-btn>\n </template>\n <v-list>\n <!-- The radio-group is necessary in case the application wants radio buttons -->\n <v-radio-group\n :value=\"menu.radioGroup\"\n hide-details\n dense\n class=\"ma-0 pa-0\"\n >\n <template v-for=\"(option, j) in menu.items\">\n <v-divider v-if=\"option.divider\" :key=\"j\" />\n <v-list-item\n v-else\n @click=\"option.command\"\n :key=\"j\"\n :disabled=\"option.disabled\"\n :data-test=\"formatDT(`${title} ${menu.label} ${option.label}`)\"\n >\n <v-list-item-action\n v-if=\"option.radio\"\n >\n <v-radio\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-action\n v-if=\"option.checkbox\"\n >\n <v-checkbox\n v-model=\"checked\"\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-icon v-if=\"option.icon\">\n <v-icon v-text=\"option.icon\" :disabled=\"option.disabled\" />\n </v-list-item-icon>\n <v-list-item-title\n v-if=\"!option.radio && !option.checkbox\"\n :style=\"\n 'cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')\n \"\n v-text=\"option.label\"\n />\n </v-list-item>\n </template>\n </v-radio-group>\n </v-list>\n </v-menu>\n <v-spacer />\n <v-toolbar-title v-text=\"title\" />\n <v-spacer />\n </div>\n </mounting-portal>\n</template>\n\n<script>\nexport default {\n props: {\n menus: {\n type: Array,\n default: function () {\n return []\n },\n },\n title: {\n type: String,\n default: '',\n },\n },\n methods: {\n // Convert the string to a standard data-test format\n formatDT: function(string) {\n return string.replaceAll(' ', '-').toLowerCase()\n },\n }\n}\n</script>\n\n<style scoped>\n.v-list >>> .v-label {\n margin-left: 5px;\n}\n.v-list-item__icon {\n /* For some reason the default margin-right is huge */\n margin-right: 15px !important;\n}\n.v-list-item__title {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=e3bb7458&scoped=true&\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js&\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3bb7458\",\n null\n \n)\n\nexport default component.exports","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <top-bar :title=\"title\" :menus=\"menus\" />\n <v-container>\n <v-row>\n <v-col>\n <v-select\n class=\"ma-0 pa-0\"\n label=\"Select Target\"\n :items=\"targets\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedTarget\"\n @change=\"targetSelect\"\n />\n </v-col>\n <v-col>\n <v-select\n class=\"ma-0 pa-0\"\n label=\"Select Screen\"\n :items=\"screens\"\n v-model=\"selectedScreen\"\n @change=\"screenSelect\"\n />\n </v-col>\n <v-col>\n <v-btn\n class=\"primary\"\n :disabled=\"!selectedScreen\"\n @click=\"() => showScreen(selectedTarget, selectedScreen)\"\n >\n Show Screen\n </v-btn>\n </v-col>\n </v-row>\n </v-container>\n <div class=\"grid\">\n <div\n class=\"item\"\n v-for=\"def in definitions\"\n :key=\"def.id\"\n :id=\"screenId(def.id)\"\n ref=\"gridItem\"\n >\n <div class=\"item-content\">\n <cosmos-screen\n :target=\"def.target\"\n :screen=\"def.screen\"\n :definition=\"def.definition\"\n @close-screen=\"closeScreen(def.id)\"\n @min-max-screen=\"refreshLayout\"\n @add-new-screen=\"($event) => showScreen(...$event)\"\n />\n </div>\n </div>\n </div>\n <!-- Dialogs for opening and saving configs -->\n <open-config-dialog\n v-if=\"openConfig\"\n v-model=\"openConfig\"\n :tool=\"toolName\"\n @success=\"openConfiguration($event)\"\n />\n <save-config-dialog\n v-if=\"saveConfig\"\n v-model=\"saveConfig\"\n :tool=\"toolName\"\n @success=\"saveConfiguration($event)\"\n />\n </div>\n</template>\n\n<script>\nimport Api from '@cosmosc2/tool-common/src/services/api'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport CosmosScreen from './CosmosScreen'\nimport OpenConfigDialog from '@cosmosc2/tool-common/src/components/OpenConfigDialog'\nimport SaveConfigDialog from '@cosmosc2/tool-common/src/components/SaveConfigDialog'\nimport Muuri from 'muuri'\nimport TopBar from '@cosmosc2/tool-common/src/components/TopBar'\n\nexport default {\n components: {\n CosmosScreen,\n TopBar,\n OpenConfigDialog,\n SaveConfigDialog,\n },\n data() {\n return {\n title: 'Telemetry Viewer',\n counter: 0,\n definitions: [],\n targets: [],\n screens: [],\n selectedTarget: '',\n selectedScreen: '',\n grid: null,\n api: null,\n menus: [\n {\n label: 'File',\n items: [\n {\n label: 'Open Configuration',\n icon: 'mdi-folder-open',\n command: () => {\n this.openConfig = true\n },\n },\n {\n label: 'Save Configuration',\n icon: 'mdi-content-save',\n command: () => {\n this.saveConfig = true\n },\n },\n ],\n },\n ],\n toolName: 'tlm-viewer',\n openConfig: false,\n saveConfig: false,\n }\n },\n created() {\n this.api = new CosmosApi()\n this.api\n .get_target_list({ params: { scope: localStorage.scope } })\n .then((data) => {\n var arrayLength = data.length\n for (var i = 0; i < arrayLength; i++) {\n this.targets.push({ label: data[i], value: data[i] })\n }\n if (!this.selectedTarget) {\n this.selectedTarget = this.targets[0].value\n }\n this.updateScreens()\n })\n },\n mounted() {\n this.grid = new Muuri('.grid', {\n dragEnabled: true,\n // Only allow drags starting from the v-system-bar title\n dragHandle: '.v-system-bar',\n })\n this.grid.on('dragEnd', this.refreshLayout)\n const previousConfig = localStorage['lastconfig__telemetry_viewer']\n if (previousConfig) {\n this.openConfiguration(previousConfig)\n }\n },\n methods: {\n updateScreens() {\n this.screens = []\n Api.get('/cosmos-api/screen/' + this.selectedTarget).then((response) => {\n for (let screen of response.data) {\n this.screens.push(screen)\n }\n })\n },\n targetSelect(target) {\n this.selectedTarget = target\n this.selectedScreen = ''\n this.updateScreens()\n },\n screenSelect(screen) {\n this.selectedScreen = screen\n },\n showScreen(target, screen) {\n this.loadScreen(target, screen).then((response) => {\n this.pushScreen({\n id: this.counter++,\n target: target,\n screen: screen,\n definition: response.data,\n })\n })\n },\n loadScreen(target, screen) {\n return Api.get('/cosmos-api/screen/' + target + '/' + screen, {\n headers: {\n Accept: 'text/plain',\n },\n })\n },\n pushScreen(definition) {\n this.definitions.push(definition)\n this.$nextTick(function () {\n var items = this.grid.add(\n this.$refs.gridItem[this.$refs.gridItem.length - 1],\n {\n active: false,\n }\n )\n this.grid.show(items)\n this.grid.refreshItems().layout()\n })\n },\n closeScreen(id) {\n var items = this.grid.getItems([\n document.getElementById(this.screenId(id)),\n ])\n this.grid.remove(items)\n this.grid.refreshItems().layout()\n this.definitions = this.definitions.filter((value, index, arr) => {\n return value.id != id\n })\n },\n refreshLayout() {\n setTimeout(() => {\n this.grid.refreshItems().layout()\n }, 600) // TODO: Is 600ms ok for all screens?\n },\n screenId(id) {\n return 'tlmViewerScreen' + id\n },\n openConfiguration: async function (name) {\n localStorage['lastconfig__telemetry_viewer'] = name\n this.counter = 0\n this.definitions = []\n let configResponse = await this.api.load_config(this.toolName, name)\n if (configResponse) {\n const config = JSON.parse(configResponse)\n // Load all the screen definitions from the API at once\n const loadScreenPromises = config.map((definition) => {\n return this.loadScreen(definition.target, definition.screen)\n })\n // Wait until they're all loaded\n Promise.all(loadScreenPromises)\n .then((responses) => {\n // Then add all the screens in order\n config.forEach((definition, index) => {\n const response = responses[index]\n setTimeout(() => {\n this.pushScreen({\n id: this.counter++,\n target: definition.target,\n screen: definition.screen,\n definition: response.data,\n })\n }, 0) // I don't even know... but Muuri complains if this isn't in a setTimeout\n })\n })\n .then(() => {\n setTimeout(this.refreshLayout, 0) // Muuri probably stacked some, so refresh that\n })\n }\n },\n saveConfiguration: function (name) {\n localStorage['lastconfig__telemetry_viewer'] = name\n const gridItems = this.grid.getItems().map((item) => item.getElement().id) // TODO: this order isn't reliable for some reason\n const config = this.definitions\n .sort((a, b) => {\n // Sort by their current position on the page\n return gridItems.indexOf(this.screenId(a)) >\n gridItems.indexOf(this.screenId(b))\n ? -1\n : 1\n })\n .map((def) => {\n return {\n screen: def.screen,\n target: def.target,\n }\n })\n this.api.save_config(this.toolName, name, JSON.stringify(config))\n },\n },\n}\n</script>\n\n<style scoped>\n.grid {\n position: relative;\n}\n.item {\n position: absolute;\n display: block;\n margin: 5px;\n z-index: 1;\n}\n.item.muuri-item-dragging {\n z-index: 3;\n}\n.item.muuri-item-releasing {\n z-index: 2;\n}\n.item.muuri-item-hidden {\n z-index: 0;\n}\n.item-content {\n position: relative;\n cursor: pointer;\n border-radius: 6px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmViewer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmViewer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TlmViewer.vue?vue&type=template&id=633418c4&scoped=true&\"\nimport script from \"./TlmViewer.vue?vue&type=script&lang=js&\"\nexport * from \"./TlmViewer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TlmViewer.vue?vue&type=style&index=0&id=633418c4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"633418c4\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-3eb9665d]{font-weight:700;text-transform:capitalize}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#chart[data-v-2adbed0c]{background-color:var(--v-tertiary-darken2)}#chart[data-v-2adbed0c] .u-legend{text-align:left}#chart[data-v-2adbed0c] .u-inline{max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content}#chart[data-v-2adbed0c] .u-select{background-color:hsla(0,0%,100%,.07)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-list[data-v-e3bb7458] .v-label{margin-left:5px}.v-list-item__icon[data-v-e3bb7458]{margin-right:15px!important}.v-list-item__title[data-v-e3bb7458]{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".value[data-v-3369b22f] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-3369b22f] input{color:#009600}.cosmos-yellow[data-v-3369b22f] input{color:#be8700}.cosmos-red[data-v-3369b22f] input{color:red}.cosmos-blue[data-v-3369b22f] input{color:#0064ff}.cosmos-purple[data-v-3369b22f] input{color:#c800c8}.cosmos-black[data-v-3369b22f] input{color:#000}.cosmos-white[data-v-3369b22f] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-textarea[data-v-401cb124] textarea{font-family:Courier New,Courier,monospace}.value[data-v-401cb124] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-401cb124] input{color:#009600}.cosmos-yellow[data-v-401cb124] input{color:#be8700}.cosmos-red[data-v-401cb124] input{color:red}.cosmos-blue[data-v-401cb124] input{color:#0064ff}.cosmos-purple[data-v-401cb124] input{color:#c800c8}.cosmos-black[data-v-401cb124] input{color:#000}.cosmos-white[data-v-401cb124] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-banner[data-v-490e35ec] div{background-color:var(--v-tertiary-darken2)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-1ff40000]{font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);font-style:var(--font-style)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".led[data-v-1d5674e7]{height:var(--height);width:var(--width);background-color:var(--color);border-radius:50%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".led[data-v-348c2b1c]{height:var(--height);width:var(--width);background-color:var(--color);border-radius:50%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".value[data-v-580e657e] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-580e657e] input{color:#009600}.cosmos-yellow[data-v-580e657e] input{color:#be8700}.cosmos-red[data-v-580e657e] input{color:red}.cosmos-blue[data-v-580e657e] input{color:#0064ff}.cosmos-purple[data-v-580e657e] input{color:#c800c8}.cosmos-black[data-v-580e657e] input{color:#000}.cosmos-white[data-v-580e657e] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-banner[data-v-818decfa] div{background-color:var(--v-tertiary-darken2)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-card[data-v-dc9e830a]{background-color:var(--v-tertiary-darken2)}.v-textarea[data-v-dc9e830a] textarea{padding:5px;background-color:var(--v-tertiary-darken1)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".grid[data-v-633418c4]{position:relative}.item[data-v-633418c4]{position:absolute;display:block;margin:5px;z-index:1}.item.muuri-item-dragging[data-v-633418c4]{z-index:3}.item.muuri-item-releasing[data-v-633418c4]{z-index:2}.item.muuri-item-hidden[data-v-633418c4]{z-index:0}.item-content[data-v-633418c4]{position:relative;cursor:pointer;border-radius:6px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"svg[data-v-a508bc5c]{background-color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".limitsbar[data-v-4d506ea0]{cursor:default;display:flex;justify-content:center;align-items:center;padding:5px;width:var(--width)}.limitsbar__container[data-v-4d506ea0]{position:relative;flex:1;height:var(--container-height);border:1px solid #000;background-color:#fff}.limitsbar__redlow[data-v-4d506ea0]{left:0;width:var(--redlow-width)}.limitsbar__redhigh[data-v-4d506ea0],.limitsbar__redlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:red}.limitsbar__redhigh[data-v-4d506ea0]{right:0;width:var(--redhigh-width)}.limitsbar__yellowlow[data-v-4d506ea0]{left:var(--redlow-width);width:var(--yellowlow-width)}.limitsbar__yellowhigh[data-v-4d506ea0],.limitsbar__yellowlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:#ffdc00}.limitsbar__yellowhigh[data-v-4d506ea0]{right:var(--redhigh-width);width:var(--yellowhigh-width)}.limitsbar__greenlow[data-v-4d506ea0]{left:calc(var(--redlow-width) + var(--yellowlow-width));width:var(--greenlow-width)}.limitsbar__greenhigh[data-v-4d506ea0],.limitsbar__greenlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:green}.limitsbar__greenhigh[data-v-4d506ea0]{right:calc(var(--redhigh-width) + var(--yellowhigh-width));width:var(--greenhigh-width)}.limitsbar__blue[data-v-4d506ea0]{top:-1px;left:calc(var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width));width:var(--blue-width);background-color:blue}.limitsbar__blue[data-v-4d506ea0],.limitsbar__line[data-v-4d506ea0]{position:absolute;height:var(--container-height)}.limitsbar__line[data-v-4d506ea0]{left:var(--position);width:1px;background-color:gray}.limitsbar__arrow[data-v-4d506ea0]{position:absolute;top:-5px;left:var(--position);width:0;height:0;-webkit-transform:translateX(-5px);transform:translateX(-5px);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid gray}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".limitsbar[data-v-5f237a99]{cursor:default;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:5px;height:var(--height)}.limitsbar__container[data-v-5f237a99]{position:relative;flex:1 1 100%;width:var(--container-width);border:1px solid #000;background-color:#fff}.limitsbar__redlow[data-v-5f237a99]{bottom:0;height:var(--redlow-height)}.limitsbar__redhigh[data-v-5f237a99],.limitsbar__redlow[data-v-5f237a99]{position:absolute;width:var(--container-width);background-color:red}.limitsbar__redhigh[data-v-5f237a99]{top:0;height:var(--redhigh-height)}.limitsbar__yellowlow[data-v-5f237a99]{bottom:var(--redlow-height);height:var(--yellowlow-height)}.limitsbar__yellowhigh[data-v-5f237a99],.limitsbar__yellowlow[data-v-5f237a99]{position:absolute;width:var(--container-width);background-color:#ffdc00}.limitsbar__yellowhigh[data-v-5f237a99]{top:var(--redhigh-height);height:var(--yellowhigh-height)}.limitsbar__greenlow[data-v-5f237a99]{bottom:calc(var(--redlow-height) + var(--yellowlow-height));height:var(--greenlow-height)}.limitsbar__greenhigh[data-v-5f237a99],.limitsbar__greenlow[data-v-5f237a99]{position:absolute;width:var(--container-width);background-color:green}.limitsbar__greenhigh[data-v-5f237a99]{top:calc(var(--redhigh-height) + var(--yellowhigh-height));height:var(--greenhigh-height)}.limitsbar__blue[data-v-5f237a99]{bottom:calc(var(--redlow-height) + var(--yellowlow-height) + var(--greenlow-height));height:var(--blue-height);background-color:blue}.limitsbar__blue[data-v-5f237a99],.limitsbar__line[data-v-5f237a99]{position:absolute;width:var(--container-width)}.limitsbar__line[data-v-5f237a99]{bottom:var(--position);height:1px;background-color:gray}.limitsbar__arrow[data-v-5f237a99]{position:absolute;bottom:var(--position);left:var(--container-width);width:0;height:0;-webkit-transform:translateY(5px);transform:translateY(5px);border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid gray}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rangebar[data-v-3ec94604]{cursor:default;display:flex;justify-content:center;align-items:center;padding:5px;width:var(--width)}.rangebar__container[data-v-3ec94604]{position:relative;flex:1;height:var(--container-height);border:1px solid #000;background-color:#fff}.rangebar__line[data-v-3ec94604]{width:1px;height:var(--container-height);background-color:gray}.rangebar__arrow[data-v-3ec94604],.rangebar__line[data-v-3ec94604]{position:absolute;left:var(--position)}.rangebar__arrow[data-v-3ec94604]{top:-5px;width:0;height:0;-webkit-transform:translateX(-5px);transform:translateX(-5px);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid gray}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".value-widget-container[data-v-d1470e40]{min-height:34px}.value[data-v-d1470e40] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-d1470e40] input{color:#009600}.cosmos-yellow[data-v-d1470e40] input{color:#be8700}.cosmos-red[data-v-d1470e40] input{color:red}.cosmos-blue[data-v-d1470e40] input{color:#0064ff}.cosmos-purple[data-v-d1470e40] input{color:#c800c8}.cosmos-black[data-v-d1470e40] input{color:#000}.cosmos-white[data-v-d1470e40] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7c1e213a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Graph.vue?vue&type=style&index=0&id=2adbed0c&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"412332c4\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"a2f2c426\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrayWidget.vue?vue&type=style&index=0&id=3369b22f&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"094f0f8e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BlockWidget.vue?vue&type=style&index=0&id=401cb124&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7e113069\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalboxWidget.vue?vue&type=style&index=0&id=490e35ec&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1abcb262\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=style&index=0&id=1ff40000&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"27aab41a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LedWidget.vue?vue&type=style&index=0&id=1d5674e7&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8e0203fe\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolorWidget.vue?vue&type=style&index=0&id=348c2b1c&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8ddb8b54\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextboxWidget.vue?vue&type=style&index=0&id=580e657e&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b5b42bf6\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalboxWidget.vue?vue&type=style&index=0&id=818decfa&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6786983a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CosmosScreen.vue?vue&type=style&index=0&id=dc9e830a&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1b5a8fcc\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmViewer.vue?vue&type=style&index=0&id=633418c4&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"07bd2359\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasWidget.vue?vue&type=style&index=0&id=a508bc5c&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0706837e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=style&index=0&id=4d506ea0&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"fbeb2792\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolumnWidget.vue?vue&type=style&index=0&id=5f237a99&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"799e0f5c\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RangebarWidget.vue?vue&type=style&index=0&id=3ec94604&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5358f44c\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=style&index=0&id=d1470e40&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10f1e48f\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","mixins","data","api","screen","displaySendHazardous","lastCmd","computed","buttonText","this","parameters","eval","created","settings","forEach","setting","methods","onClick","lines","result","Promise","then","catch","sendHazardousCmd","replace","cancelHazardousCmd","props","target","type","String","require","getPresignedUrl","fileName","Api","encodeURIComponent","localStorage","scope","response","url","Widget","widgets","Array","default","value","limitsState","formatString","valueId","colorBlind","viewDetails","contextMenuShown","x","y","contextMenuOptions","title","action","window","open","_value","$store","state","tlmViewerValues","formatted","formatValue","colorblindMode","limitsLetter","valueClass","limitsColor","c","charAt","endsWith","toLowerCase","getType","commit","destroyed","prototype","toString","call","slice","i","length","sprintf","showContextMenu","preventDefault","clientX","clientY","$nextTick","widgetIndex","Number","computedStyle","style","index","parseInt","getColor","originalWidthSetting","width","resetWidth","beforeUpdate","some","unshift","request","method","params","headers","noAuth","noScope","CosmosAuth","updateToken","defaultMinValidity","login","cosmosToken","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","use","error","status","href","body","message","exception","class","$notify","serious","Cable","_cable","ActionCable","disconnect","channel","callbacks","additionalOptions","subscriptions","create","token","CosmosApi","kwparams","jsonrpc","keyword_params","Authorization","err","name","val","json_class","raw","NaN","Infinity","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","packet","item","log_writer_name","limits_set","target_name","packet_name","value_type","len","converted","decode_cosmos_type","items","item_name","command_name","parameter_name","param_list","key","hasOwnProperty","encode_cosmos_type","undefined","_cmd","tool","ignored","array","render","_vm","_h","$createElement","_c","_self","attrs","model","callback","$$v","show","expression","_v","_s","targetName","packetName","itemName","details","description","staticClass","rawValue","convertedValue","formattedValue","unitsValue","_e","bit_offset","bit_size","array_size","data_type","minimum","maximum","format_string","read_conversion","write_conversion","id_value","units_full","units","endianness","_l","limit","formatLimit","staticRenderFns","validator","indexOf","Boolean","updater","set","$emit","beforeDestroy","clearInterval","watch","newValue","requestDetails","setInterval","get_tlm_values","get_item","get_parameter","green_low","component","height","on","$event","stopPropagation","apply","arguments","components","DetailsDialog","itemsPerRow","formatter","text","space","newLine","count","isArray","trim","bytesPerWord","wordsPerRow","addrFormat","byteCount","addr","widget","_g","tag","$listeners","imageUrl","startsWith","image","directives","rawName","selectedValue","defaultImage","images","showDefault","immediate","handler","filter","all","promises","fillColor","fontSize","calcStyle","color","label","setNamedWidget","checked","widgetType","_b","assign","$props","$attrs","mounted","System","import","self","ref","getParameters","ValueWidget","join","HorizontalWidget","src","itemFullName","cable","subscription","imageData","valueType","get_tlm_packet","finally","unsubscribe","received","json_data","parsed","subscribe","createSubscription","connected","mode","disconnected","rejected","cssProps","labelText","fontFamily","fontWeight","fontStyle","size","labelName","LabelWidget","LedWidget","ProgressbarWidget","defaultStyle","limitsBarParameters","LabelvalueWidget","LimitsbarWidget","overallWidth","limitsColumnParameters","LimitscolumnWidget","push","labelValueParameters","RangebarWidget","colors","TRUE","FALSE","ANY","_m","minValue","maxValue","scale","redLow","yellowLow","greenLow","greenHigh","yellowHigh","redHigh","blue","limitsSettings","DEFAULT","currentLimitsSet","DEFAULT_LIMITS_SET","currentSetRefreshInterval","calcLimits","limits","calcPosition","selectedLimitsSet","get_limits","getCurrentLimitsSet","modifyLimits","divisor","lowValue","min","Math","round","get_limits_set","radius","fullLabelDisplay","secondsGraphed","pointsSaved","pointsGraphed","nativeOn","hideSystemBar","selectedGraphId","errors","scopedSlots","_u","fn","errorDialog","editGraph","collapseAll","calcFullSize","expandAll","collapseWidth","fullWidth","expandWidth","collapseHeight","fullHeight","expandHeight","minMaxTransition","expand","mousedown","hideOverview","_k","keyCode","editGraphClose","graphStartDateTime","graphEndDateTime","graphMinY","graphMaxY","itemHeaders","editItems","removeItems","proxy","clearErrors","editGraphMenuX","editGraphMenuY","editGraphMenu","staticStyle","editItem","valueTypes","changeType","selectedItem","$set","itemMenuX","itemMenuY","itemMenu","dateLabel","Date","now","dateRules","date","timeLabel","timeRules","onChange","time","required","initialDate","initialTime","rules","isValid","DateTimeChooser","startTime","initialItems","sortable","active","graph","overview","indexes","drawInterval","zoomChart","zoomOverview","needToUpdate","itemId","JSON","stringify","spanGaps","stroke","seriesObj","commonProps","chartSeries","overviewSeries","series","v","cursor","drag","sync","hooks","setScale","left","ready","canvas","legend","seriesEl","chartOpts","document","points","setSelect","chart","max","overviewOpts","addEventListener","handleResize","removeEventListener","newState","oldState","setData","newData","ptsMin","setGraphRange","removeItemsFromSubscription","addItemsToSubscription","setSize","getSize","resize","pad","scales","range","navDrawer","navDrawerWidth","viewHeight","chooser","clientHeight","getScales","u","dataMin","dataMax","getAxes","$vuetify","theme","dark","strokeColor","axisColor","axes","grid","addItems","event","itemArray","endTime","start_time","end_time","perform","subscriptionKey","reorderIndexes","j","set_data_at_index","ideal_index","bs_comparator","element","needle","key_index","Graph","floor","random","chunk","rindex","cindex","columns","widgetChunks","ceil","scaleFactor","parseFloat","selectedIndex","selected","scrollwindowStyle","VerticalboxWidget","maxHeight","curTab","tab","tabIndex","fullName","valueParameters","VerticalWidget","contentStyle","menus","targets","targetSelect","selectedTarget","screens","screenSelect","selectedScreen","showScreen","def","refInFor","screenId","definition","closeScreen","refreshLayout","toolName","openConfiguration","openConfig","saveConfiguration","saveConfig","openEdit","layoutStack","editDialog","downloadScreen","file","loadingFile","loadFile","currentDefinition","domProps","editErrors","cancelEdit","saveEdit","ConfigParserError","config_parser","usage","keyword","filename","line","line_number","ConfigParserService","min_num_params","max_num_params","string","first_char","last_char","substring","rx","global","r","match","input_string","original_filename","yield_non_keyword_lines","remove_quotes","line_continuation","split","numLines","scan_string","first_item","toUpperCase","requireComponent","camelCase","pop","componentName","backup","configParser","currentLayout","namedWidgets","fixed","globalSettings","globalSubsettings","substitute","original_target_name","force_substitute","pollingPeriod","errorCaptured","vm","info","getTime","parseDefinition","refreshInterval","parse_string","applyGlobalSettings","get_named_widget","update","tlmViewerItems","repeat","fileReader","readAsText","onload","that","inputType","link","URL","createObjectURL","blob","setAttribute","click","processWidget","widgetName","verify_num_parameters","layout","includes","cancel","success","search","configs","itemSelected","slot","select","deleteConfig","align","list_configs","configId","config","$dialog","confirm","okText","cancelText","configName","menu","formatDT","radioGroup","option","disabled","command","icon","radio","checkbox","replaceAll","CosmosScreen","TopBar","OpenConfigDialog","SaveConfigDialog","counter","definitions","get_target_list","dragEnabled","dragHandle","previousConfig","updateScreens","loadScreen","pushScreen","refreshItems","remove","setTimeout","configResponse","loadScreenPromises","sort","gridItems","save_config","___CSS_LOADER_EXPORT___","content","__esModule","locals","add"],"sourceRoot":""}
1
+ {"version":3,"file":"js/947.js","mappings":"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","sources":["webpack://@cosmosc2/tool-tlmviewer/../../node_modules/@cosmosc2/tool-common/src/components/widgets/ sync nonrecursive [A-Z]\\w+Widget\\.vue$","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageLoader.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/Layout.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VWidget.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/Widget.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/WidthSetter.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/api.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/axios.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/cable.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/cosmos-api.js","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?88c8","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?7eb0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?fdbd","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?4c4c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?1d9c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?c2e2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?6f2e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?74fc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?705e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue?4269","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue?bbf4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ButtonWidget.vue?657c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?6840","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?96eb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?b24b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue?c855","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue?f77f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasdotWidget.vue?7b79","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue?9557","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue?7945","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimageWidget.vue?1a28","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue?60fa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue?cde7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasimagevalueWidget.vue?7ad0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue?ae84","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue?4737","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelWidget.vue?ef6c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue?a641","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue?d01c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslabelvalueWidget.vue?790a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue?72cb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue?08a0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslineWidget.vue?159d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue?3f88","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue?5671","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvaslinevalueWidget.vue?11ac","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue?3472","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue?2faf","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CheckbuttonWidget.vue?9d18","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue?30fa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue?7434","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ComboboxWidget.vue?9966","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue?18e4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue?73b2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/DynamicWidget.vue?5451","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue?99ca","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue?b95e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/FormatvalueWidget.vue?5f21","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue?8944","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue?0fa2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalWidget.vue?d216","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?9fa8","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?7425","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?5d62","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue?9962","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue?d58d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/IframeWidget.vue?b562","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue?9ab6","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue?febe","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ImageviewerWidget.vue?44a4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?f72a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?1e32","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?800c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue?762e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue?bbfa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelledWidget.vue?b322","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue?a595","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue?519f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelprogressbarWidget.vue?c6eb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?cd0d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?4fd8","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?19fc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue?7af1","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue?ec8d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluedescWidget.vue?b3f5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?00b3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?cc59","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?495e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue?f487","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue?c485","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitscolumnWidget.vue?070a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue?196c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue?4be4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelvaluerangebarWidget.vue?3d79","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?b5e5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?7d53","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?3c24","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?2de4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?584c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?56ec","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?63b9","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?663c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?84b7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?b4c9","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?8672","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?5d8f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue?a979","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?d0ae","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue?40c6","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue?2f38","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DateTimeChooser.vue?f834","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?25dc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?0667","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue?3733","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LinegraphWidget.vue?5590","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue?2e2b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue?5b11","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/MatrixbycolumnsWidget.vue?8e7f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue?7200","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue?94ed","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ProgressbarWidget.vue?283b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue?34e4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue?4cd3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiobuttonWidget.vue?abe3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue?8888","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue?fbe0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RadiogroupWidget.vue?b904","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?1502","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?b89c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?51aa","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue?7860","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue?5ed1","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ScrollwindowWidget.vue?1ae4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue?ed1f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue?e6d2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SectionheaderWidget.vue?5c86","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue?406c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue?3573","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/SpacerWidget.vue?49c7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue?ae3e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue?6fee","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TabbookWidget.vue?f966","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?d762","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?b40d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?a43e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue?777d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue?eebc","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextfieldWidget.vue?da48","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue?a136","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue?7f2a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TitleWidget.vue?ed11","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?26e5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?5139","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?0a72","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue?51f5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue?7cc5","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitsbarWidget.vue?ce92","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue?d011","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue?89a9","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuelimitscolumnWidget.vue?4c45","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue?ede7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue?3546","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValuerangebarWidget.vue?aa05","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue?853e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue?924e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalWidget.vue?db06","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?541a","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?f5a2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?0af6","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?8780","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?da40","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/services/config-parser.js","webpack://@cosmosc2/tool-tlmviewer/src/tools/TlmViewer/CosmosScreen.vue","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?ec27","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?d129","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?b667","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?6158","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?36c2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?e52f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?65b7","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?228d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?adab","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?dfc0","webpack://@cosmosc2/tool-tlmviewer/src/tools/TlmViewer/TlmViewer.vue","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?f30b","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?82b3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?c458","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?b2db","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?743f","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?4924","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?07cd","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?6b70","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?cb9c","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?d93b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?6b3d","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?f662","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?15aa","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?60d0","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?94ad","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?cdf2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?792e","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?04fb","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?9001","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/DetailsDialog.vue?dfc1","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/Graph.vue?d6b3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/TopBar.vue?5429","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ArrayWidget.vue?4ae6","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/BlockWidget.vue?de92","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/HorizontalboxWidget.vue?9cf2","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?b8ed","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LedWidget.vue?5124","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolorWidget.vue?65b3","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/TextboxWidget.vue?9e58","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/VerticalboxWidget.vue?74ed","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/CosmosScreen.vue?8e1a","webpack://@cosmosc2/tool-tlmviewer/./src/tools/TlmViewer/TlmViewer.vue?a788","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/CanvasWidget.vue?1465","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?30f4","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/LimitscolumnWidget.vue?be8b","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/RangebarWidget.vue?f580","webpack://@cosmosc2/tool-tlmviewer/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?2dbb"],"sourcesContent":["var map = {\n\t\"./ArrayWidget.vue\": 1358,\n\t\"./BlockWidget.vue\": 5393,\n\t\"./ButtonWidget.vue\": 3945,\n\t\"./CanvasWidget.vue\": 8494,\n\t\"./CanvasdotWidget.vue\": 8176,\n\t\"./CanvasimageWidget.vue\": 8116,\n\t\"./CanvasimagevalueWidget.vue\": 5467,\n\t\"./CanvaslabelWidget.vue\": 2739,\n\t\"./CanvaslabelvalueWidget.vue\": 1981,\n\t\"./CanvaslineWidget.vue\": 3003,\n\t\"./CanvaslinevalueWidget.vue\": 8605,\n\t\"./CheckbuttonWidget.vue\": 604,\n\t\"./ComboboxWidget.vue\": 2229,\n\t\"./DynamicWidget.vue\": 393,\n\t\"./FormatvalueWidget.vue\": 7451,\n\t\"./HorizontalWidget.vue\": 1297,\n\t\"./HorizontalboxWidget.vue\": 978,\n\t\"./IframeWidget.vue\": 443,\n\t\"./ImageviewerWidget.vue\": 6735,\n\t\"./LabelWidget.vue\": 3520,\n\t\"./LabelledWidget.vue\": 2915,\n\t\"./LabelprogressbarWidget.vue\": 6632,\n\t\"./LabelvalueWidget.vue\": 7701,\n\t\"./LabelvaluedescWidget.vue\": 8074,\n\t\"./LabelvaluelimitsbarWidget.vue\": 1579,\n\t\"./LabelvaluelimitscolumnWidget.vue\": 3288,\n\t\"./LabelvaluerangebarWidget.vue\": 3249,\n\t\"./LedWidget.vue\": 7146,\n\t\"./LimitsbarWidget.vue\": 2570,\n\t\"./LimitscolorWidget.vue\": 1873,\n\t\"./LimitscolumnWidget.vue\": 5290,\n\t\"./LinegraphWidget.vue\": 9584,\n\t\"./MatrixbycolumnsWidget.vue\": 1110,\n\t\"./ProgressbarWidget.vue\": 34,\n\t\"./RadiobuttonWidget.vue\": 8022,\n\t\"./RadiogroupWidget.vue\": 1390,\n\t\"./RangebarWidget.vue\": 6117,\n\t\"./ScrollwindowWidget.vue\": 4825,\n\t\"./SectionheaderWidget.vue\": 1354,\n\t\"./SpacerWidget.vue\": 8879,\n\t\"./TabbookWidget.vue\": 9181,\n\t\"./TextboxWidget.vue\": 9669,\n\t\"./TextfieldWidget.vue\": 2872,\n\t\"./TitleWidget.vue\": 6690,\n\t\"./ValueWidget.vue\": 7720,\n\t\"./ValuelimitsbarWidget.vue\": 4907,\n\t\"./ValuelimitscolumnWidget.vue\": 6756,\n\t\"./ValuerangebarWidget.vue\": 6963,\n\t\"./VerticalWidget.vue\": 9314,\n\t\"./VerticalboxWidget.vue\": 5637\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6263;","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-btn class=\"ma-1\" color=\"primary\" :style=\"computedStyle\" @click=\"onClick\">\n {{ buttonText }}\n </v-btn>\n <v-dialog v-model=\"displaySendHazardous\" max-width=\"300\">\n <v-card class=\"pa-3\">\n <v-card-title class=\"headline\">Hazardous</v-card-title>\n <v-card-text> Warning: Command is Hazardous. Send? </v-card-text>\n <v-btn @click=\"sendHazardousCmd\" class=\"primary mr-4\">Yes</v-btn>\n <v-btn @click=\"cancelHazardousCmd\" class=\"primary\">No</v-btn>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { CosmosApi } from '../../services/cosmos-api'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n api: null,\n screen: null,\n displaySendHazardous: false,\n lastCmd: '',\n }\n },\n computed: {\n buttonText() {\n return this.parameters[0]\n },\n eval() {\n return this.parameters[1]\n },\n },\n created() {\n this.api = new CosmosApi()\n // Look through the settings and get a reference to the screen\n this.settings.forEach((setting) => {\n if (setting[0] === 'SCREEN') {\n this.screen = setting[1]\n }\n })\n },\n methods: {\n onClick() {\n const lines = this.eval.split(';')\n // Create local references to variables so users don't need to use 'this'\n const self = this // needed for $emit\n const screen = this.screen\n const api = this.api\n lines.forEach((line) => {\n const result = eval(line.trim())\n if (result instanceof Promise) {\n result\n .then((success) => {})\n .catch((err) => {\n if (err.message.includes('HazardousError')) {\n this.lastCmd = err.message.split('\\n')[2]\n this.displaySendHazardous = true\n }\n })\n }\n })\n },\n sendHazardousCmd() {\n this.displaySendHazardous = false\n // TODO: This only handles basic cmd() calls in buttons, do we need to handle other? cmd_raw()?\n this.lastCmd = this.lastCmd.replace(\n 'cmd(',\n 'this.api.cmd_no_hazardous_check('\n )\n eval(this.lastCmd)\n },\n cancelHazardousCmd() {\n this.displaySendHazardous = false\n },\n },\n}\n</script>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport Api from '../../services/api'\n\nexport default {\n props: {\n target: {\n type: String,\n require: true,\n },\n },\n methods: {\n getPresignedUrl: async function (fileName) {\n const response = await Api.get(\n `/cosmos-api/storage/download/${encodeURIComponent(\n `${localStorage.scope}/targets/${this.target}/public/${fileName}`\n )}?bucket=config`\n )\n return response.data.url\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n props: {\n widgets: {\n type: Array,\n default: () => [],\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport Widget from './Widget'\nimport 'sprintf-js'\nexport default {\n mixins: [Widget],\n // ValueWidget can either get it's value and limitsState directly through props\n // or it will register itself in the Vuex store and be updated asyncronously\n props: {\n value: {\n default: null,\n },\n limitsState: {\n type: String,\n default: null,\n },\n formatString: null,\n },\n data() {\n return {\n valueId: null,\n colorBlind: false,\n viewDetails: false,\n contextMenuShown: false,\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n {\n title: 'Graph',\n action: () => {\n window.open(\n '/tools/tlmgrapher/' +\n this.parameters[0] +\n '/' +\n this.parameters[1] +\n '/' +\n this.parameters[2],\n '_blank'\n )\n },\n },\n ],\n }\n },\n computed: {\n _value: function () {\n let value = this.value\n if (value === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n value = this.$store.state.tlmViewerValues[this.valueId][0]\n } else {\n value = null\n }\n }\n const formatted = this.formatValue(value)\n if (localStorage.colorblindMode === 'true' && this.limitsLetter !== '') {\n return `${formatted} (${this.limitsLetter})`\n }\n return formatted\n },\n valueClass: function () {\n return 'value shrink pa-1 ' + 'cosmos-' + this.limitsColor\n },\n limitsColor() {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n limitsState = this.$store.state.tlmViewerValues[this.valueId][1]\n } else {\n limitsState = null\n }\n }\n if (limitsState != null) {\n switch (limitsState) {\n case 'GREEN':\n case 'GREEN_HIGH':\n case 'GREEN_LOW':\n return 'green'\n case 'YELLOW':\n case 'YELLOW_HIGH':\n case 'YELLOW_LOW':\n return 'yellow'\n case 'RED':\n case 'RED_HIGH':\n case 'RED_LOW':\n return 'red'\n case 'BLUE':\n return 'blue'\n case 'STALE':\n return 'purple'\n default:\n return 'white'\n }\n }\n return ''\n },\n limitsLetter() {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n limitsState = this.$store.state.tlmViewerValues[this.valueId][1]\n } else {\n limitsState = null\n }\n }\n if (limitsState != null) {\n let c = limitsState.charAt(0)\n if (limitsState.endsWith('_LOW')) {\n c = c.toLowerCase()\n }\n return c\n }\n return ''\n },\n },\n created() {\n // If they're not passing us the value and limitsState we have to register\n if (this.value === null || this.limitsState === null) {\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${\n this.parameters[2]\n }__${this.getType()}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n }\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n methods: {\n getType() {\n var type = 'WITH_UNITS'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n return type\n },\n formatValue(value) {\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n let result = '['\n for (let i = 0; i < value.length; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n result += '\"' + value[i] + '\"'\n } else {\n result += value[i]\n }\n if (i != value.length - 1) {\n result += ', '\n }\n }\n result += ']'\n return result\n } else if (\n Object.prototype.toString.call(value).slice(8, -1) === 'Object'\n ) {\n return ''\n } else {\n if (this.formatString && value) {\n return sprintf(this.formatString, value)\n } else {\n return '' + value\n }\n }\n },\n showContextMenu(e) {\n e.preventDefault()\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nexport default {\n props: {\n widgetIndex: {\n type: Number,\n default: null,\n },\n parameters: {\n type: Array,\n default: () => [],\n },\n settings: {\n type: Array,\n default: () => [],\n },\n },\n computed: {\n computedStyle() {\n let style = {}\n this.settings.forEach((setting) => {\n const index = parseInt(setting[0])\n if (this.widgetIndex !== null) {\n if (this.widgetIndex === index) {\n setting = setting.slice(1)\n } else {\n return\n }\n }\n switch (setting[0]) {\n case 'TEXTALIGN':\n style['text-align'] = setting[1].toLowerCase()\n break\n case 'PADDING':\n style['padding'] = setting[1] + 'px !important'\n break\n case 'MARGIN':\n style['margin'] = setting[1] + 'px !important'\n break\n case 'BACKCOLOR':\n style['background-color'] = this.getColor(setting.slice(1))\n break\n case 'TEXTCOLOR':\n style['color'] = this.getColor(setting.slice(1))\n break\n case 'BORDERCOLOR':\n style['border-width'] = '1px'\n style['border-style'] = 'solid'\n style['border-color'] = this.getColor(setting.slice(1))\n break\n case 'WIDTH':\n style['width'] = setting[1] + 'px !important'\n break\n case 'HEIGHT':\n style['height'] = setting[1] + 'px !important'\n break\n case 'RAW':\n style[setting[1].toLowerCase()] = setting[2]\n break\n }\n })\n return style\n },\n },\n methods: {\n // Expects an array, can either be a single color or 3 rgb values\n getColor(setting) {\n switch (setting.length) {\n case 1:\n return setting[0].toLowerCase()\n case 3:\n return `rgb(${setting[0]},${setting[1]},${setting[2]})`\n }\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nexport default {\n data: function () {\n return {\n originalWidthSetting: null,\n }\n },\n created: function () {\n this.originalWidthSetting = ['WIDTH', this.width]\n this.resetWidth()\n },\n beforeUpdate: function () {\n this.resetWidth()\n },\n methods: {\n resetWidth: function () {\n // This sets 'WIDTH' when it gets created, but that is lost if it gets\n // re-rendered by CosmosScreen.vue parsing the config string again\n if (!this.settings.some((setting) => setting[0] === 'WIDTH')) {\n this.settings.unshift(this.originalWidthSetting)\n }\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n headers['Authorization'] = localStorage.cosmosToken\n }\n if (!noScope && !params['scope']) {\n params['scope'] = localStorage.scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 10000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response.status === 401) {\n delete localStorage.cosmosToken\n CosmosAuth.login(location.href)\n } else {\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n }\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport * as ActionCable from 'actioncable'\n\nexport default class Cable {\n constructor(url = '/cosmos-api/cable') {\n this._cable = ActionCable.createConsumer(url)\n }\n disconnect() {\n this._cable.disconnect()\n }\n createSubscription(channel, scope, callbacks = {}, additionalOptions = {}) {\n return CosmosAuth.updateToken(CosmosAuth.defaultMinValidity).then(() => {\n return this._cable.subscriptions.create(\n {\n channel,\n scope,\n token: localStorage.cosmosToken,\n ...additionalOptions,\n },\n callbacks\n )\n })\n }\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nexport class CosmosApi {\n id = 1\n\n constructor() {}\n\n // This is hacky Json-rpc for now. Should probably use a jsonrpc library.\n async exec(method, params, kwparams = {}) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = localStorage.scope\n const response = await axios.post(\n '/cosmos-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.cosmosToken,\n 'Content-Type': 'application/json-rpc',\n },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n //console.log(error)\n throw err\n }\n }\n\n decode_cosmos_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_cosmos_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n connect_interface(interface_name) {\n return this.exec('connect_interface', [interface_name])\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_all_cmd_info() {\n return this.exec('get_all_cmd_info', [])\n }\n\n get_all_tlm_info() {\n return this.exec('get_all_tlm_info', [])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_oldest_logfile() {\n return this.exec('get_oldest_logfile', [])\n }\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_list(target_name) {\n return this.exec('get_all_telemetry_list', [target_name])\n }\n\n // Called by PacketViewerComponent\n async get_tlm_packet(target_name, packet_name, value_type) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n // Called by PacketViewerComponent\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n // Called by CmdTlmServer Tlm Packets tab\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n // Called by CosmosScreenComponent\n async get_tlm_values(items) {\n const data = await this.exec('get_tlm_values', [items])\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n // Called by LimitsbarWidget\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n // Called by LimitsMonitorComponent\n async tlm(target_name, packet_name, item_name) {\n const data = await this.exec('tlm', [target_name, packet_name, item_name])\n var converted = this.decode_cosmos_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_commands_list(target_name) {\n return this.exec('get_all_commands_list', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n // Called by CmdTlmServer Cmd Packets tab\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_cosmos_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(method, [target_name, command_name, param_list])\n }\n\n // Called by CmdSenderComponent\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name)\n } else {\n return this._cmd('cmd', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n // Called by CmdSenderComponent\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Details \")]),_c('v-spacer')],1),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.packetName)+\" \"+_vm._s(_vm.itemName)+\" \")]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.details.description))]),_c('v-card-text',[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.type === 'tlm')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Item Values\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Raw Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.rawValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Converted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.convertedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Formatted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.formattedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"With Units Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.unitsValue))])],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Offset\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_offset))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_size))])],1),(_vm.details.array_size)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Array Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.array_size))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Data Type\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.data_type))])],1),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Minimum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.minimum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Maximum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.maximum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Default\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.default))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Format String\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.format_string))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Read Conversion\")]),(_vm.details.read_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.read_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.read_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Write Conversion\")]),(_vm.details.write_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.write_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.write_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Id Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.id_value))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Full\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units_full))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Abbr\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Endianness\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.endianness))])],1),(_vm.details.states)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.states),function(state,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(state.value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.limits)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.limits),function(limit,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_vm._v(\" \"+_vm._s(_vm.formatLimit(limit))+\" \"),_c('v-col')],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.meta)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.meta),function(value,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col',[_vm._v(\"None\")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Details </span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-title>\n {{ targetName }} {{ packetName }} {{ itemName }}\n </v-card-title>\n <v-card-subtitle>{{ details.description }}</v-card-subtitle>\n <v-card-text>\n <v-container fluid>\n <v-row no-gutters v-if=\"type === 'tlm'\">\n <v-col cols=\"3\" class=\"label\">Item Values</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Raw Value</v-col>\n <v-col>{{ rawValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Converted Value</v-col>\n <v-col>{{ convertedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Formatted Value</v-col>\n <v-col>{{ formattedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">With Units Value</v-col>\n <v-col>{{ unitsValue }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Offset</v-col>\n <v-col>{{ details.bit_offset }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Size</v-col>\n <v-col>{{ details.bit_size }}</v-col>\n </v-row>\n <v-row v-if=\"details.array_size\" no-gutters>\n <v-col cols=\"3\" class=\"label\">Array Size</v-col>\n <v-col>{{ details.array_size }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Data Type</v-col>\n <v-col>{{ details.data_type }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Minimum</v-col>\n <v-col>{{ details.minimum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Maximum</v-col>\n <v-col>{{ details.maximum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Default</v-col>\n <v-col>{{ details.default }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Format String</v-col>\n <v-col>{{ details.format_string }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Read Conversion</v-col>\n <v-col v-if=\"details.read_conversion\">\n Class: {{ details.read_conversion.class }}\n <br />\n Params:\n {{ details.read_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Write Conversion</v-col>\n <v-col v-if=\"details.write_conversion\">\n Class: {{ details.write_conversion.class }}\n <br />\n Params:\n {{ details.write_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Id Value</v-col>\n <v-col>{{ details.id_value }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Full</v-col>\n <v-col>{{ details.units_full }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Abbr</v-col>\n <v-col>{{ details.units }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Endianness</v-col>\n <v-col>{{ details.endianness }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.states\">\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(state, key) in details.states\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ state.value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.limits\">\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(limit, key) in details.limits\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n {{ formatLimit(limit) }}\n <v-col></v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.meta\">\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters v-for=\"(value, key) in details.meta\" :key=\"key\">\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row v-else no-gutters>\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col>None</v-col>\n </v-row>\n </v-container>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n type: {\n default: 'tlm',\n validator: function (value) {\n // The value must match one of these strings\n return ['cmd', 'tlm'].indexOf(value) !== -1\n },\n },\n targetName: String,\n packetName: String,\n itemName: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n details: Object,\n updater: null,\n rawValue: null,\n convertedValue: null,\n formattedValue: null,\n unitsValue: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n created() {\n this.api = new CosmosApi()\n },\n beforeDestroy() {\n clearInterval(this.updater)\n this.updater = null\n },\n watch: {\n // Create a watcher on value which is the indicator to display the dialog\n // If value is true we request the details from the server\n // If this is a tlm dialog we setup an interval to get the telemetry values\n value: function (newValue, oldValue) {\n if (newValue) {\n this.requestDetails()\n if (this.type === 'tlm') {\n this.updater = setInterval(() => {\n this.api\n .get_tlm_values([\n `${this.targetName}__${this.packetName}__${this.itemName}__RAW`,\n `${this.targetName}__${this.packetName}__${this.itemName}__CONVERTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__FORMATTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__WITH_UNITS`,\n ])\n .then((values) => {\n this.rawValue = values[0][0]\n this.convertedValue = values[1][0]\n this.formattedValue = values[2][0]\n this.unitsValue = values[3][0]\n })\n }, 1000)\n }\n } else {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n },\n methods: {\n requestDetails() {\n if (this.type === 'tlm') {\n this.api\n .get_item(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n } else {\n this.api\n .get_parameter(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n }\n },\n formatLimit(limit) {\n if (limit.green_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high +\n ' GL/' +\n limit.green_low +\n ' GH/' +\n limit.green_high\n )\n } else if (limit.red_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high\n )\n } else {\n return limit\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-weight: bold;\n text-transform: capitalize;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailsDialog.vue?vue&type=template&id=3eb9665d&scoped=true&\"\nimport script from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3eb9665d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-textarea',{class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"height\":_vm.height,\"value\":_vm._value,\"data-test\":\"array-widget\"},on:{\"contextmenu\":_vm.showContextMenu}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-textarea\n solo\n dense\n readonly\n hide-details\n placeholder=\"Value\"\n :height=\"height\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"array-widget\"\n @contextmenu=\"showContextMenu\"\n />\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport WidthSetter from './WidthSetter'\nimport DetailsDialog from '../../components/DetailsDialog'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n },\n data: function () {\n return {\n height: 100,\n itemsPerRow: 4,\n formatter: null,\n }\n },\n mixins: [VWidget, WidthSetter],\n created: function () {\n if (this.parameters[3]) {\n this.width = parseInt(this.parameters[3])\n }\n if (this.parameters[4]) {\n this.height = parseInt(this.parameters[4])\n }\n if (this.parameters[5]) {\n this.formatter = this.parameters[5]\n }\n if (this.parameters[6]) {\n this.itemsPerRow = parseInt(this.parameters[6])\n }\n },\n methods: {\n getType: function () {\n var type = 'CONVERTED'\n if (this.parameters[7]) {\n type = this.parameters[7]\n }\n return type\n },\n formatValue: function (data) {\n var text = ''\n var space = ' '\n var newLine = '\\n'\n var count = 0\n\n if (Array.isArray(data)) {\n for (const value of data) {\n if (this.formatter?.toLowerCase() !== 'nil') {\n text += sprintf(this.formatter, value)\n } else {\n text += value\n }\n count += 1\n if (count % this.itemsPerRow === 0) {\n count = 0\n text += newLine\n } else {\n text += space\n }\n }\n return text.trim()\n } else {\n return data\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.value >>> div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n.cosmos-green >>> input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow >>> input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red >>> input {\n color: red;\n}\n.cosmos-blue >>> input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple >>> input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black >>> input {\n color: black;\n}\n.cosmos-white >>> input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrayWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrayWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrayWidget.vue?vue&type=template&id=3369b22f&scoped=true&\"\nimport script from \"./ArrayWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrayWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArrayWidget.vue?vue&type=style&index=0&id=3369b22f&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3369b22f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-textarea',{class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"height\":_vm.height,\"value\":_vm._value,\"data-test\":\"valueText\"},on:{\"contextmenu\":_vm.showContextMenu}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-textarea\n solo\n dense\n readonly\n hide-details\n placeholder=\"Value\"\n :height=\"height\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"valueText\"\n @contextmenu=\"showContextMenu\"\n />\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport WidthSetter from './WidthSetter'\nimport DetailsDialog from '../../components/DetailsDialog'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n },\n data: function () {\n return {\n width: 400,\n height: 600,\n bytesPerWord: 4,\n wordsPerRow: 4,\n addrFormat: null,\n formatter: '%02X',\n }\n },\n mixins: [VWidget, WidthSetter],\n created: function () {\n if (this.parameters[3]) {\n this.width = parseInt(this.parameters[3])\n }\n if (this.parameters[4]) {\n this.height = parseInt(this.parameters[4])\n }\n if (this.parameters[5]) {\n this.formatter = this.parameters[5]\n }\n if (this.parameters[6]) {\n this.bytesPerWord = parseInt(this.parameters[6])\n }\n if (this.parameters[7]) {\n this.wordsPerRow = parseInt(this.parameters[7])\n }\n if (this.parameters[8]) {\n this.addrFormat = parseInt(this.parameters[8])\n }\n // parameter[9] is the type ... see getType()\n },\n methods: {\n getType: function () {\n var type = 'RAW'\n if (this.parameters[9]) {\n type = this.parameters[9]\n }\n return type\n },\n formatValue: function (data) {\n var text = ''\n if (data && data.raw) {\n var space = ' '\n var newLine = '\\n'\n\n var byteCount = 0\n var addr = 0\n const bytesPerRow = this.bytesPerWord * this.wordsPerRow\n\n for (const value of data.raw) {\n if (this.addrFormat && byteCount === 0) {\n text += sprintf(this.addrFormat, addr)\n addr += bytesPerRow\n }\n text += sprintf(this.formatter, value)\n byteCount += 1\n if (byteCount % bytesPerRow === 0) {\n byteCount = 0\n text += newLine\n } else if (byteCount % this.bytesPerWord === 0) {\n text += space\n }\n }\n }\n return text\n },\n },\n}\n</script>\n\n<style scoped>\n.v-textarea >>> textarea {\n font-family: 'Courier New', Courier, monospace;\n}\n.value >>> div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n.cosmos-green >>> input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow >>> input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red >>> input {\n color: red;\n}\n.cosmos-blue >>> input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple >>> input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black >>> input {\n color: black;\n}\n.cosmos-white >>> input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BlockWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BlockWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BlockWidget.vue?vue&type=template&id=401cb124&scoped=true&\"\nimport script from \"./BlockWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./BlockWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BlockWidget.vue?vue&type=style&index=0&id=401cb124&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"401cb124\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-btn',{staticClass:\"ma-1\",style:(_vm.computedStyle),attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onClick}},[_vm._v(\" \"+_vm._s(_vm.buttonText)+\" \")]),_c('v-dialog',{attrs:{\"max-width\":\"300\"},model:{value:(_vm.displaySendHazardous),callback:function ($$v) {_vm.displaySendHazardous=$$v},expression:\"displaySendHazardous\"}},[_c('v-card',{staticClass:\"pa-3\"},[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(\"Hazardous\")]),_c('v-card-text',[_vm._v(\" Warning: Command is Hazardous. Send? \")]),_c('v-btn',{staticClass:\"primary mr-4\",on:{\"click\":_vm.sendHazardousCmd}},[_vm._v(\"Yes\")]),_c('v-btn',{staticClass:\"primary\",on:{\"click\":_vm.cancelHazardousCmd}},[_vm._v(\"No\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ButtonWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ButtonWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ButtonWidget.vue?vue&type=template&id=0f52a486&\"\nimport script from \"./ButtonWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ButtonWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"id\":\"canvas\",\"width\":_vm.width,\"height\":_vm.height}},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <svg id=\"canvas\" :width=\"width\" :height=\"height\">\n <component\n v-for=\"(widget, index) in widgets\"\n v-on=\"$listeners\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </svg>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n computed: {\n width() {\n return this.parameters[0] + 'px'\n },\n height() {\n return this.parameters[1] + 'px'\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsvg {\n background-color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasWidget.vue?vue&type=template&id=a508bc5c&scoped=true&\"\nimport script from \"./CanvasWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CanvasWidget.vue?vue&type=style&index=0&id=a508bc5c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a508bc5c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('circle',{attrs:{\"cx\":_vm.parameters[0],\"cy\":_vm.parameters[1],\"r\":_vm.parameters[3],\"fill\":_vm.parameters[2]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <circle\n :cx=\"parameters[0]\"\n :cy=\"parameters[1]\"\n :r=\"parameters[3]\"\n :fill=\"parameters[2]\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasdotWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasdotWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasdotWidget.vue?vue&type=template&id=688a0042&\"\nimport script from \"./CanvasdotWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasdotWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.imageUrl)?_c('image',{attrs:{\"href\":_vm.imageUrl,\"x\":_vm.parameters[1],\"y\":_vm.parameters[2],\"width\":_vm.width,\"height\":_vm.height}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <image\n v-if=\"imageUrl\"\n :href=\"imageUrl\"\n :x=\"parameters[1]\"\n :y=\"parameters[2]\"\n :width=\"width\"\n :height=\"height\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nimport ImageLoader from './ImageLoader'\n\nexport default {\n mixins: [Widget, ImageLoader],\n data: function () {\n return {\n imageUrl: null,\n }\n },\n computed: {\n width: function () {\n if (this.parameters[3]) {\n return `${this.parameters[3]}px`\n }\n return '100%'\n },\n height: function () {\n if (this.parameters[4]) {\n return `${this.parameters[4]}px`\n }\n return '100%'\n },\n },\n created: function () {\n if (!this.parameters[0].startsWith('http')) {\n this.getPresignedUrl(this.parameters[0]).then((response) => {\n this.imageUrl = response\n })\n } else {\n this.imageUrl = this.parameters[0]\n }\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimageWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimageWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasimageWidget.vue?vue&type=template&id=4f08f970&\"\nimport script from \"./CanvasimageWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasimageWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('g',[_vm._l((_vm.images),function(image){return _c('image',{directives:[{name:\"show\",rawName:\"v-show\",value:(image.value == _vm.selectedValue),expression:\"image.value == selectedValue\"}],key:image.value,attrs:{\"href\":image.url,\"x\":image.x,\"y\":image.y,\"width\":image.width,\"height\":image.height}})}),(_vm.defaultImage)?_c('image',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDefault),expression:\"showDefault\"}],attrs:{\"href\":_vm.defaultImage.url,\"x\":_vm.defaultImage.x,\"y\":_vm.defaultImage.y,\"width\":_vm.defaultImage.width,\"height\":_vm.defaultImage.height}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <g>\n <image\n v-for=\"image in images\"\n :key=\"image.value\"\n v-show=\"image.value == selectedValue\"\n :href=\"image.url\"\n :x=\"image.x\"\n :y=\"image.y\"\n :width=\"image.width\"\n :height=\"image.height\"\n />\n <image\n v-if=\"defaultImage\"\n v-show=\"showDefault\"\n :href=\"defaultImage.url\"\n :x=\"defaultImage.x\"\n :y=\"defaultImage.y\"\n :width=\"defaultImage.width\"\n :height=\"defaultImage.height\"\n />\n </g>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport ImageLoader from './ImageLoader'\n\nexport default {\n mixins: [Widget, ImageLoader],\n data: function () {\n return {\n images: [],\n defaultImage: null,\n }\n },\n computed: {\n valueId: function () {\n return `${this.parameters[0]}__${this.parameters[1]}__${\n this.parameters[2]\n }__${this.parameters[3] || 'RAW'}`\n },\n selectedValue: function () {\n return this.$store.state.tlmViewerValues[this.valueId][0]\n },\n showDefault: function () {\n return !this.images.some((image) => image.value == this.selectedValue)\n },\n },\n watch: {\n valueId: {\n immediate: true,\n handler: function (val) {\n this.$store.commit('tlmViewerAddItem', val)\n },\n },\n },\n created: function () {\n // Set value images data\n const promises = this.settings\n .filter((setting) => setting[0] === 'IMAGE')\n .map(async (setting) => {\n let url = setting[2]\n if (!url.startsWith('http')) {\n url = await this.getPresignedUrl(url)\n }\n\n return {\n url,\n value: setting[1],\n x: setting[3],\n y: setting[4],\n width: setting[5],\n height: setting[6],\n }\n })\n Promise.all(promises).then((images) => {\n this.images = images\n })\n\n // Set default image data\n if (this.parameters[4]) {\n const defaultImage = {\n x: this.parameters[5],\n y: this.parameters[6],\n width: this.parameters[7] ? `${this.parameters[7]}px` : '100%',\n height: this.parameters[8] ? `${this.parameters[8]}px` : '100%',\n }\n\n let url = this.parameters[4]\n if (!url.startsWith('http')) {\n this.getPresignedUrl(url).then((response) => {\n this.defaultImage = {\n ...defaultImage,\n url: response,\n }\n })\n } else {\n this.defaultImage = {\n ...defaultImage,\n url,\n }\n }\n }\n },\n destroyed: function () {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasimagevalueWidget.vue?vue&type=template&id=6d66e099&\"\nimport script from \"./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasimagevalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('text',{attrs:{\"x\":_vm.parameters[0],\"y\":_vm.parameters[1],\"fill\":_vm.fillColor}},[_vm._v(\" \"+_vm._s(_vm.parameters[2])+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <text :x=\"parameters[0]\" :y=\"parameters[1]\" :fill=\"fillColor\">\n {{ parameters[2] }}\n </text>\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n computed: {\n fillColor() {\n if (this.parameters[3]) {\n return this.parameters[3]\n }\n return 'black'\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslabelWidget.vue?vue&type=template&id=3556ae12&\"\nimport script from \"./CanvaslabelWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslabelWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('text',{attrs:{\"x\":_vm.parameters[3],\"y\":_vm.parameters[4],\"font-size\":_vm.fontSize,\"fill\":_vm.fillColor}},[_vm._v(\" \"+_vm._s(_vm._value)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <!-- TODO: Draw box or underline? -->\n <text\n :x=\"parameters[3]\"\n :y=\"parameters[4]\"\n :font-size=\"fontSize\"\n :fill=\"fillColor\"\n >\n {{ _value }}\n </text>\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n data() {\n return {\n valueId: null,\n }\n },\n computed: {\n _value() {\n return this.$store.state.tlmViewerValues[this.valueId][0]\n },\n fontSize() {\n if (this.parameters[5]) {\n return this.parameters[5] + 'px'\n }\n return '14px'\n },\n fillColor() {\n if (this.parameters[6]) {\n return this.parameters[6]\n }\n return 'black'\n },\n },\n created() {\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__CONVERTED`\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslabelvalueWidget.vue?vue&type=template&id=63da4903&\"\nimport script from \"./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslabelvalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('line',{style:(_vm.calcStyle),attrs:{\"x1\":_vm.parameters[0],\"y1\":_vm.parameters[1],\"x2\":_vm.parameters[2],\"y2\":_vm.parameters[3]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <line\n :x1=\"parameters[0]\"\n :y1=\"parameters[1]\"\n :x2=\"parameters[2]\"\n :y2=\"parameters[3]\"\n :style=\"calcStyle\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n computed: {\n calcStyle() {\n let color = 'black'\n if (this.parameters[4]) {\n color = this.parameters[4]\n }\n let width = 1\n if (this.parameters[5]) {\n width = this.parameters[5]\n }\n return 'stroke:' + color + ';stroke-width:' + width\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslineWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslineWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslineWidget.vue?vue&type=template&id=1f32a126&\"\nimport script from \"./CanvaslineWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslineWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('line',{style:(_vm.calcStyle),attrs:{\"x1\":_vm.parameters[3],\"y1\":_vm.parameters[4],\"x2\":_vm.parameters[5],\"y2\":_vm.parameters[6]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <line\n :x1=\"parameters[3]\"\n :y1=\"parameters[4]\"\n :x2=\"parameters[5]\"\n :y2=\"parameters[6]\"\n :style=\"calcStyle\"\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n data() {\n return {\n valueId: 0,\n }\n },\n computed: {\n calcStyle() {\n let color = this.parameters[8]\n if (parseInt(this.$store.state.tlmViewerValues[this.valueId][0]) === 1) {\n color = this.parameters[7]\n }\n let width = 1\n if (this.parameters[9]) {\n width = this.parameters[9]\n }\n return 'stroke:' + color + ';stroke-width:' + width\n },\n },\n created() {\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__RAW`\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvaslinevalueWidget.vue?vue&type=template&id=05f75c8c&\"\nimport script from \"./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvaslinevalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-checkbox',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\",\"label\":_vm.label},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-checkbox\n hide-details\n dense\n :label=\"label\"\n v-model=\"value\"\n :style=\"computedStyle\"\n >\n </v-checkbox>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n items: [],\n label: 'Checkbox',\n value: false,\n }\n },\n created() {\n // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\n this.label = this.parameters[0]\n },\n methods: {\n checked() {\n return this.value\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckbuttonWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckbuttonWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckbuttonWidget.vue?vue&type=template&id=2af96702&\"\nimport script from \"./CheckbuttonWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckbuttonWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.items},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-select\n hide-details\n dense\n :items=\"items\"\n v-model=\"value\"\n :style=\"computedStyle\"\n >\n </v-select>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n items: [],\n value: null,\n }\n },\n created() {\n // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\n this.items = this.parameters\n },\n methods: {\n text() {\n return this.value\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComboboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComboboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ComboboxWidget.vue?vue&type=template&id=261ba626&\"\nimport script from \"./ComboboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ComboboxWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.widgetType,_vm._b({tag:\"component\"},'component',Object.assign({}, _vm.$props, _vm.$attrs),false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <component :is=\"widgetType\" v-bind=\"{ ...$props, ...$attrs }\"></component>\n</template>\n\n<script>\nexport default {\n data() {\n return {\n widgetType: null,\n }\n },\n props: {\n name: { default: null },\n },\n computed: {\n url: function () {\n return `${window.location.origin}/tools/widgets/${this.name}/${this.name}.umd.min.js`\n },\n },\n mounted() {\n const self = this\n\n /* eslint-disable-next-line */\n System.import(/* webpackIgnore: true */ this.url).then(function (widget) {\n self.widgetType = widget\n })\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DynamicWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DynamicWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DynamicWidget.vue?vue&type=template&id=71f511d9&\"\nimport script from \"./DynamicWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./DynamicWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:(_vm.computedStyle)},[_c('value-widget',{attrs:{\"parameters\":_vm.getParameters,\"settings\":_vm.settings,\"format-string\":_vm.parameters[3]}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\" :style=\"computedStyle\">\n <value-widget\n :parameters=\"getParameters\"\n :settings=\"settings\"\n :format-string=\"parameters[3]\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport ValueWidget from './ValueWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n },\n computed: {\n getParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n this.parameters[4],\n ]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormatvalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormatvalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FormatvalueWidget.vue?vue&type=template&id=be6557c2&\"\nimport script from \"./FormatvalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./FormatvalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <component\n v-for=\"(widget, index) in widgets\"\n v-on=\"$listeners\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HorizontalWidget.vue?vue&type=template&id=4fd9fe9a&\"\nimport script from \"./HorizontalWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./HorizontalWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-banner',{attrs:{\"single-line\":\"\"}},[_vm._v(_vm._s(_vm.parameters.join(' ')))]),_c('horizontal-widget',_vm._g({attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widgets\":_vm.widgets}},_vm.$listeners))],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-banner single-line>{{ parameters.join(' ') }}</v-banner>\n <horizontal-widget\n v-on=\"$listeners\"\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widgets=\"widgets\"\n />\n </div>\n</template>\n\n<script>\nimport HorizontalWidget from './HorizontalWidget'\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n components: {\n HorizontalWidget,\n },\n}\n</script>\n\n<style scoped>\n.v-banner >>> div {\n background-color: var(--v-tertiary-darken2) !important;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HorizontalboxWidget.vue?vue&type=template&id=490e35ec&scoped=true&\"\nimport script from \"./HorizontalboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./HorizontalboxWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HorizontalboxWidget.vue?vue&type=style&index=0&id=490e35ec&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"490e35ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('iframe',{attrs:{\"src\":_vm.src,\"width\":_vm.width,\"height\":_vm.height}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <iframe :src=\"src\" :width=\"width\" :height=\"height\" />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n src: function () {\n return this.parameters[0]\n },\n width: function () {\n return this.parameters[1] + 'px'\n },\n height: function () {\n return this.parameters[2] + 'px'\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IframeWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IframeWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IframeWidget.vue?vue&type=template&id=b23e1f4c&\"\nimport script from \"./IframeWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./IframeWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{attrs:{\"src\":_vm.src,\"alt\":_vm.itemFullName,\"width\":_vm.parameters[4],\"height\":_vm.parameters[5]}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <img\n :src=\"src\"\n :alt=\"itemFullName\"\n :width=\"parameters[4]\"\n :height=\"parameters[5]\"\n />\n</template>\n\n<script>\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport Widget from '@cosmosc2/tool-common/src/components/widgets/Widget'\nimport Cable from '@cosmosc2/tool-common/src/services/cable.js'\n\nexport default {\n mixins: [Widget],\n data: function () {\n return {\n api: new CosmosApi(),\n cable: new Cable(),\n subscription: null,\n imageData: '',\n }\n },\n computed: {\n src: function () {\n return `data:image/${this.parameters[3]};base64, ${this.imageData}`\n },\n itemFullName: function () {\n return `TLM__${this.targetName}__${this.packetName}__${this.itemName}__${this.valueType}`\n },\n targetName: function () {\n return this.parameters[0]\n },\n packetName: function () {\n return this.parameters[1]\n },\n itemName: function () {\n return this.parameters[2]\n },\n valueType: function () {\n return 'CONVERTED'\n },\n },\n created: function () {\n this.api\n .get_tlm_packet(this.targetName, this.packetName, this.valueType)\n .then((packetItems) => {\n const foundPacket = packetItems?.find(\n (item) => item[0] === this.itemName\n )\n if (foundPacket) {\n this.imageData = foundPacket[1]\n }\n })\n .finally(() => {\n this.subscribe()\n })\n },\n destroyed: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n received: function (json_data) {\n if (json_data['error']) {\n this.$notify.serious({\n body: json_data['error'],\n })\n } else {\n const parsed = JSON.parse(json_data)\n if (parsed.length) {\n const packet = parsed[parsed.length - 1]\n this.imageData = packet[this.itemFullName]\n }\n }\n },\n subscribe: function () {\n this.cable\n .createSubscription('StreamingChannel', localStorage.scope, {\n received: (data) => this.received(data),\n connected: () => {\n this.subscription.perform('add', {\n scope: localStorage.scope,\n mode: 'DECOM',\n token: localStorage.cosmosToken,\n items: [this.itemFullName],\n })\n },\n disconnected: () => {\n this.$notify.caution({\n body: 'COSMOS backend connection disconnected.',\n })\n },\n rejected: () => {\n this.$notify.caution({\n body: 'COSMOS backend connection rejected.',\n })\n },\n })\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImageviewerWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImageviewerWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageviewerWidget.vue?vue&type=template&id=56d7af1e&\"\nimport script from \"./ImageviewerWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageviewerWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"pa-1 mt-1 label\",style:([_vm.cssProps, _vm.computedStyle]),attrs:{\"data-test\":\"label\"}},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <span\n data-test=\"label\"\n class=\"pa-1 mt-1 label\"\n :style=\"[cssProps, computedStyle]\"\n >\n {{ labelText }}\n </span>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n fontFamily: null,\n fontSize: null,\n fontWeight: 'normal',\n fontStyle: 'normal',\n }\n },\n computed: {\n labelText() {\n return this.parameters[0]\n },\n cssProps() {\n var size = null\n if (this.fontSize) {\n size = this.fontSize + 'px'\n }\n return {\n '--font-family': this.fontFamily,\n '--font-size': size,\n '--font-weight': this.fontWeight,\n '--font-style': this.fontStyle,\n }\n },\n },\n created() {\n if (this.parameters[1]) {\n this.fontFamily = this.parameters[1]\n }\n if (this.parameters[2]) {\n this.fontSize = this.parameters[2]\n }\n if (this.parameters[3]) {\n this.fontWeight = this.parameters[3]\n }\n if (this.parameters[4]) {\n this.fontStyle = this.parameters[4]\n }\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-family: var(--font-family);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n font-style: var(--font-style);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelWidget.vue?vue&type=template&id=1ff40000&scoped=true&\"\nimport script from \"./LabelWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LabelWidget.vue?vue&type=style&index=0&id=1ff40000&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ff40000\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:(_vm.computedStyle)},[_c('label-widget',{attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings}}),_c('led-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\" :style=\"computedStyle\">\n <label-widget :parameters=\"labelName\" :settings=\"settings\" />\n <led-widget :parameters=\"parameters\" :settings=\"settings\" />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport LedWidget from './LedWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n LedWidget,\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n return [this.parameters[2] + ':']\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelledWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelledWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelledWidget.vue?vue&type=template&id=61e92cf0&\"\nimport script from \"./LabelledWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelledWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":0}}),_c('progressbar-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"0\"\n />\n <progressbar-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport ProgressbarWidget from './ProgressbarWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n ProgressbarWidget,\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n return [this.parameters[2] + ':']\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelprogressbarWidget.vue?vue&type=template&id=4e63a67e&\"\nimport script from \"./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelprogressbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":0}}),_c('value-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"0\"\n />\n <value-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport ValueWidget from './ValueWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n ValueWidget,\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n return [this.parameters[2] + ':']\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvalueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvalueWidget.vue?vue&type=template&id=13602869&\"\nimport script from \"./LabelvalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvalueWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":0}}),_c('value-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.parameters.slice(0, 3),\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"0\"\n />\n <value-widget\n :parameters=\"parameters.slice(0, 3)\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport ValueWidget from './ValueWidget.vue'\nimport { CosmosApi } from '../../services/cosmos-api.js'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n description: '',\n }\n },\n components: {\n LabelWidget,\n ValueWidget,\n },\n computed: {\n labelName() {\n return [this.description]\n },\n },\n created() {\n if (this.parameters.length > 3) {\n this.description = this.parameters[3]\n } else {\n this.api = new CosmosApi()\n this.api\n .get_item(this.parameters[0], this.parameters[1], this.parameters[2])\n .then((details) => {\n this.description = details['description']\n })\n }\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluedescWidget.vue?vue&type=template&id=03f3fef9&\"\nimport script from \"./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluedescWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('labelvalue-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings}}),_c('limitsbar-widget',{attrs:{\"parameters\":_vm.limitsBarParameters,\"settings\":_vm.settings.filter(function (x) { return x[0] == 1; }).map(function (x) { return x.slice(1); }),\"widget-index\":3}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <labelvalue-widget :parameters=\"parameters\" :settings=\"settings\" />\n <limitsbar-widget\n :parameters=\"limitsBarParameters\"\n :settings=\"settings.filter((x) => x[0] == 1).map((x) => x.slice(1))\"\n :widget-index=\"3\"\n />\n </div>\n</template>\n\n<script>\nimport LabelvalueWidget from './LabelvalueWidget.vue'\nimport LimitsbarWidget from './LimitsbarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelvalueWidget,\n LimitsbarWidget,\n },\n data() {\n return {\n overallWidth: '300px',\n }\n },\n created() {\n // Determine if any sub-setting widths have been given\n // If so calculate the overall width, if not the default will be used\n let width = 0\n this.settings.forEach((setting) => {\n if (setting[1] === 'WIDTH') {\n width += parseInt(setting[2])\n }\n })\n if (width != 0) {\n this.overallWidth = width + 'px'\n }\n },\n computed: {\n limitsBarParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n defaultStyle() {\n return {\n width: this.overallWidth,\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluelimitsbarWidget.vue?vue&type=template&id=272e68bc&\"\nimport script from \"./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-column\",style:(_vm.computedStyle)},[_c('label-widget',{attrs:{\"parameters\":[_vm.parameters[2]],\"settings\":_vm.settings,\"widget-index\":0}}),_c('limitscolumn-widget',{attrs:{\"parameters\":_vm.limitsColumnParameters,\"settings\":_vm.settings,\"widget-index\":1}}),_c('value-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":2}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-column\" :style=\"computedStyle\">\n <label-widget\n :parameters=\"[parameters[2]]\"\n :settings=\"settings\"\n :widget-index=\"0\"\n />\n <limitscolumn-widget\n :parameters=\"limitsColumnParameters\"\n :settings=\"settings\"\n :widget-index=\"1\"\n />\n <value-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widget-index=\"2\"\n />\n </div>\n</template>\n\n<script>\nimport LabelWidget from './LabelWidget.vue'\nimport ValueWidget from './ValueWidget.vue'\nimport LimitscolumnWidget from './LimitscolumnWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n ValueWidget,\n LimitscolumnWidget,\n },\n created() {\n this.settings.push(['WIDTH', '100'])\n },\n computed: {\n limitsColumnParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluelimitscolumnWidget.vue?vue&type=template&id=4148932c&\"\nimport script from \"./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluelimitscolumnWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('labelvalue-widget',{attrs:{\"parameters\":_vm.labelValueParameters}}),_c('rangebar-widget',{attrs:{\"parameters\":_vm.parameters}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <labelvalue-widget :parameters=\"labelValueParameters\" />\n <rangebar-widget :parameters=\"parameters\" />\n </div>\n</template>\n\n<script>\nimport LabelvalueWidget from './LabelvalueWidget.vue'\nimport RangebarWidget from './RangebarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelvalueWidget,\n RangebarWidget,\n },\n computed: {\n labelValueParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'WITH_UNITS',\n ]\n },\n defaultStyle() {\n return {\n width: '300px',\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluerangebarWidget.vue?vue&type=template&id=26f9eeae&\"\nimport script from \"./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluerangebarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"led mt-2\",style:([_vm.cssProps, _vm.computedStyle])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"led mt-2\" :style=\"[cssProps, computedStyle]\"></div>\n</template>\n\n<script>\nimport Widget from './Widget'\nexport default {\n mixins: [Widget],\n data() {\n return {\n valueId: null,\n colors: {\n TRUE: 'green',\n FALSE: 'red',\n },\n }\n },\n computed: {\n width() {\n return this.parameters[4] ? parseInt(this.parameters[4]) : 20\n },\n height() {\n return this.parameters[5] ? parseInt(this.parameters[5]) : 20\n },\n cssProps() {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n let color = this.colors[value]\n if (!color) {\n color = this.colors.ANY\n }\n if (!color) {\n color = 'BLACK'\n }\n return {\n '--height': this.height + 'px',\n '--width': this.width + 'px',\n '--color': color.toLowerCase(),\n }\n },\n },\n // Note Vuejs still treats this syncronously, but this allows us to dispatch\n // the store mutation and return the array index.\n // What this means practically is that future lifecycle hooks may not have valueId set.\n created() {\n this.settings.forEach((setting) => {\n switch (setting[0]) {\n case 'LED_COLOR':\n this.colors[setting[1]] = setting[2]\n break\n }\n })\n if (!this.parameters[3]) {\n this.parameters[3] = 'CONVERTED'\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${this.parameters[3]}`\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n\n<style scoped>\n.led {\n height: var(--height);\n width: var(--width);\n background-color: var(--color);\n border-radius: 50%;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LedWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LedWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LedWidget.vue?vue&type=template&id=1d5674e7&scoped=true&\"\nimport script from \"./LedWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LedWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LedWidget.vue?vue&type=style&index=0&id=1d5674e7&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d5674e7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar\",style:([_vm.cssProps, _vm.computedStyle])},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar__container\"},[_c('div',{staticClass:\"limitsbar__redlow\"}),_c('div',{staticClass:\"limitsbar__redhigh\"}),_c('div',{staticClass:\"limitsbar__yellowlow\"}),_c('div',{staticClass:\"limitsbar__yellowhigh\"}),_c('div',{staticClass:\"limitsbar__greenlow\"}),_c('div',{staticClass:\"limitsbar__greenhigh\"}),_c('div',{staticClass:\"limitsbar__blue\"}),_c('div',{staticClass:\"limitsbar__line\"}),_c('div',{staticClass:\"limitsbar__arrow\"})])}]\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"limitsbar\" :style=\"[cssProps, computedStyle]\">\n <div class=\"limitsbar__container\">\n <div class=\"limitsbar__redlow\" />\n <div class=\"limitsbar__redhigh\" />\n <div class=\"limitsbar__yellowlow\" />\n <div class=\"limitsbar__yellowhigh\" />\n <div class=\"limitsbar__greenlow\" />\n <div class=\"limitsbar__greenhigh\" />\n <div class=\"limitsbar__blue\" />\n\n <div class=\"limitsbar__line\" />\n <div class=\"limitsbar__arrow\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport { CosmosApi } from '../../services/cosmos-api.js'\n\nconst DEFAULT_LIMITS_SET = 'DEFAULT'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n width: '100%', // users will override with px\n height: 20, // px\n minValue: null,\n maxValue: null,\n scale: 0,\n redLow: 0,\n yellowLow: 0,\n greenLow: 0,\n greenHigh: 0,\n yellowHigh: 0,\n redHigh: 0,\n blue: 0,\n api: null,\n limitsSettings: {\n DEFAULT: [],\n },\n currentLimitsSet: DEFAULT_LIMITS_SET,\n currentSetRefreshInterval: null,\n }\n },\n computed: {\n cssProps: function () {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n let limits = this.modifyLimits(\n this.limitsSettings[this.selectedLimitsSet]\n )\n this.calcLimits(limits)\n return {\n '--height': this.height + 'px',\n '--width': this.width,\n '--container-height': this.height - 5 + 'px',\n '--position': this.calcPosition(value, limits) + '%',\n '--redlow-width': this.redLow + '%',\n '--redhigh-width': this.redHigh + '%',\n '--yellowlow-width': this.yellowLow + '%',\n '--yellowhigh-width': this.yellowHigh + '%',\n '--greenlow-width': this.greenLow + '%',\n '--greenhigh-width': this.greenHigh + '%',\n '--blue-width': this.blue + '%',\n }\n },\n selectedLimitsSet: function () {\n return this.limitsSettings.hasOwnProperty(this.currentLimitsSet)\n ? this.currentLimitsSet\n : DEFAULT_LIMITS_SET\n },\n },\n created() {\n this.api = new CosmosApi()\n this.api\n .get_limits(this.parameters[0], this.parameters[1], this.parameters[2])\n .then((data) => {\n this.limitsSettings = data\n })\n this.getCurrentLimitsSet()\n this.currentSetRefreshInterval = setInterval(\n this.getCurrentLimitsSet,\n 60 * 1000\n )\n\n this.settings.forEach((setting) => {\n if (setting[0] === 'MIN_VALUE') {\n this.minValue = parseInt(setting[1])\n }\n if (setting[0] === 'MAX_VALUE') {\n this.maxValue = parseInt(setting[1])\n }\n })\n\n let type = 'CONVERTED'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n clearInterval(this.currentSetRefreshInterval)\n },\n methods: {\n modifyLimits(limitsSettings) {\n // By default the red bars take 10% of the display\n this.redLow = 10\n this.redHigh = 10\n\n // Modify values to respect the user defined minimum\n if (this.minValue) {\n if (limitsSettings[0] <= this.minValue) {\n limitsSettings[0] = this.minValue\n // No red low will be displayed\n this.redLow = 0\n }\n if (limitsSettings[1] <= this.minValue) {\n limitsSettings[1] = this.minValue\n }\n if (limitsSettings[2] <= this.minValue) {\n limitsSettings[2] = this.minValue\n }\n if (limitsSettings[3] <= this.minValue) {\n limitsSettings[3] = this.minValue\n }\n if (limitsSettings.length > 4 && limitsSettings[4] <= this.minValue) {\n limitsSettings[4] = this.minValue\n }\n if (limitsSettings.length > 4 && limitsSettings[5] <= this.minValue) {\n limitsSettings[5] = this.minValue\n }\n }\n if (this.maxValue) {\n if (limitsSettings[0] >= this.maxValue) {\n limitsSettings[0] = this.maxValue\n }\n if (limitsSettings[1] >= this.maxValue) {\n limitsSettings[1] = this.maxValue\n }\n if (limitsSettings[2] >= this.maxValue) {\n limitsSettings[2] = this.maxValue\n }\n if (limitsSettings[3] >= this.maxValue) {\n limitsSettings[3] = this.maxValue\n // No red high will be displayed\n this.redHigh = 0\n }\n if (limitsSettings.length > 4 && limitsSettings[4] >= this.maxValue) {\n limitsSettings[4] = this.maxValue\n }\n if (limitsSettings.length > 4 && limitsSettings[5] >= this.maxValue) {\n limitsSettings[5] = this.maxValue\n }\n }\n // If the red low matches yellow low there is no red low\n if (limitsSettings[0] == limitsSettings[1]) {\n this.redLow = 0\n }\n // If the red high matches yellow high there is no red high\n if (limitsSettings[2] == limitsSettings[3]) {\n this.redHigh = 0\n }\n\n let divisor = 80\n if (this.redLow == 0) {\n divisor += 10\n }\n if (this.redHigh == 0) {\n divisor += 10\n }\n this.scale = (limitsSettings[3] - limitsSettings[0]) / divisor\n\n return limitsSettings\n },\n calcPosition(value, limitsSettings) {\n if (!value || !limitsSettings) {\n return\n }\n let lowValue = limitsSettings[0] - 10 * this.scale\n if (this.minValue && this.minValue == limitsSettings[0]) {\n lowValue = limitsSettings[0]\n }\n let highValue = limitsSettings[3] - 10 * this.scale\n if (this.maxValue && this.maxValue == limitsSettings[3]) {\n highValue = limitsSettings[3]\n }\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 if (value < this.min) {\n return 0\n } else if (value > this.max) {\n return 100\n } else {\n const result = parseInt((value - lowValue) / this.scale)\n if (result > 100) {\n return 100\n } else if (result < 0) {\n return 0\n } else {\n return result\n }\n }\n },\n calcLimits(limitsSettings) {\n if (!limitsSettings) {\n return\n }\n\n this.yellowLow = Math.round(\n (limitsSettings[1] - limitsSettings[0]) / this.scale\n )\n this.yellowHigh = Math.round(\n (limitsSettings[3] - limitsSettings[2]) / this.scale\n )\n if (limitsSettings.length > 4) {\n this.greenLow = Math.round(\n (limitsSettings[4] - limitsSettings[1]) / this.scale\n )\n this.greenHigh = Math.round(\n (limitsSettings[2] - limitsSettings[5]) / this.scale\n )\n this.blue = Math.round(\n 100 -\n this.redLow -\n this.yellowLow -\n this.greenLow -\n this.greenHigh -\n this.yellowHigh -\n this.redHigh\n )\n } else {\n this.greenLow = Math.round(\n 100 - this.redLow - this.yellowLow - this.yellowHigh - this.redHigh\n )\n this.greenHigh = 0\n this.blue = 0\n }\n },\n getCurrentLimitsSet: function () {\n this.api.get_limits_set().then((result) => {\n this.currentLimitsSet = result\n })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.limitsbar {\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5px;\n width: var(--width);\n}\n.limitsbar__container {\n position: relative;\n flex: 1;\n height: var(--container-height);\n border: 1px solid black;\n background-color: white;\n}\n.limitsbar__redlow {\n position: absolute;\n top: -1px;\n left: 0px;\n width: var(--redlow-width);\n height: var(--container-height);\n background-color: red;\n}\n.limitsbar__redhigh {\n position: absolute;\n top: -1px;\n right: 0px;\n width: var(--redhigh-width);\n height: var(--container-height);\n background-color: red;\n}\n.limitsbar__yellowlow {\n position: absolute;\n top: -1px;\n left: var(--redlow-width);\n width: var(--yellowlow-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__yellowhigh {\n position: absolute;\n top: -1px;\n right: var(--redhigh-width);\n width: var(--yellowhigh-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__greenlow {\n position: absolute;\n top: -1px;\n left: calc(var(--redlow-width) + var(--yellowlow-width));\n width: var(--greenlow-width);\n height: var(--container-height);\n background-color: green;\n}\n.limitsbar__greenhigh {\n position: absolute;\n top: -1px;\n right: calc(var(--redhigh-width) + var(--yellowhigh-width));\n width: var(--greenhigh-width);\n height: var(--container-height);\n background-color: green;\n}\n.limitsbar__blue {\n position: absolute;\n top: -1px;\n left: calc(\n var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width)\n );\n width: var(--blue-width);\n height: var(--container-height);\n background-color: blue;\n}\n.limitsbar__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.limitsbar__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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitsbarWidget.vue?vue&type=template&id=4d506ea0&scoped=true&\"\nimport script from \"./LimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitsbarWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitsbarWidget.vue?vue&type=style&index=0&id=4d506ea0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d506ea0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('div',{staticClass:\"led align-self-center\",style:([_vm.cssProps, _vm.computedStyle])}),_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <div class=\"led align-self-center\" :style=\"[cssProps, computedStyle]\"></div>\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nexport default {\n mixins: [VWidget],\n data() {\n return {\n radius: 15,\n fullLabelDisplay: false,\n }\n },\n created() {\n if (this.parameters[4]) {\n this.radius = parseInt(this.parameters[4])\n }\n if (this.parameters[5] && this.parameters[5].toLowerCase() === 'true') {\n this.fullLabelDisplay = true\n }\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n if (this.fullLabelDisplay) {\n return [\n this.parameters[0] +\n ' ' +\n this.parameters[1] +\n ' ' +\n this.parameters[2],\n ]\n } else {\n return [this.parameters[2]]\n }\n },\n cssProps() {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n return {\n '--height': this.radius + 'px',\n '--width': this.radius + 'px',\n '--color': this.limitsColor,\n }\n },\n },\n methods: {\n getType() {\n var type = 'CONVERTED'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n return type\n },\n },\n}\n</script>\n\n<style scoped>\n.led {\n height: var(--height);\n width: var(--width);\n background-color: var(--color);\n border-radius: 50%;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolorWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolorWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitscolorWidget.vue?vue&type=template&id=348c2b1c&scoped=true&\"\nimport script from \"./LimitscolorWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitscolorWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitscolorWidget.vue?vue&type=style&index=0&id=348c2b1c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"348c2b1c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar\",style:([_vm.cssProps, _vm.computedStyle])},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar__container\"},[_c('div',{staticClass:\"limitsbar__redlow\"}),_c('div',{staticClass:\"limitsbar__redhigh\"}),_c('div',{staticClass:\"limitsbar__yellowlow\"}),_c('div',{staticClass:\"limitsbar__yellowhigh\"}),_c('div',{staticClass:\"limitsbar__greenlow\"}),_c('div',{staticClass:\"limitsbar__greenhigh\"}),_c('div',{staticClass:\"limitsbar__blue\"}),_c('div',{staticClass:\"limitsbar__line\"}),_c('div',{staticClass:\"limitsbar__arrow\"})])}]\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"limitsbar\" :style=\"[cssProps, computedStyle]\">\n <div class=\"limitsbar__container\">\n <div class=\"limitsbar__redlow\" />\n <div class=\"limitsbar__redhigh\" />\n <div class=\"limitsbar__yellowlow\" />\n <div class=\"limitsbar__yellowhigh\" />\n <div class=\"limitsbar__greenlow\" />\n <div class=\"limitsbar__greenhigh\" />\n <div class=\"limitsbar__blue\" />\n\n <div class=\"limitsbar__line\" />\n <div class=\"limitsbar__arrow\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport { CosmosApi } from '../../services/cosmos-api.js'\n\nconst DEFAULT_LIMITS_SET = 'DEFAULT'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n width: 20, // px\n height: 100, // users will override with px\n redLow: 0,\n yellowLow: 0,\n greenLow: 0,\n greenHigh: 0,\n yellowHigh: 0,\n redHigh: 0,\n blue: 0,\n api: null,\n limitsSettings: {\n DEFAULT: [],\n },\n currentLimitsSet: DEFAULT_LIMITS_SET,\n currentSetRefreshInterval: null,\n }\n },\n computed: {\n cssProps: function () {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n this.calcLimits(this.limitsSettings[this.selectedLimitsSet])\n return {\n '--height': this.height + 'px',\n '--width': this.width + 'px',\n '--container-width': this.width - 5 + 'px',\n '--position':\n this.calcPosition(\n value,\n this.limitsSettings[this.selectedLimitsSet]\n ) + '%',\n '--redlow-height': this.redLow + '%',\n '--redhigh-height': this.redHigh + '%',\n '--yellowlow-height': this.yellowLow + '%',\n '--yellowhigh-height': this.yellowHigh + '%',\n '--greenlow-height': this.greenLow + '%',\n '--greenhigh-height': this.greenHigh + '%',\n '--blue-height': this.blue + '%',\n }\n },\n selectedLimitsSet: function () {\n return this.limitsSettings.hasOwnProperty(this.currentLimitsSet)\n ? this.currentLimitsSet\n : DEFAULT_LIMITS_SET\n },\n },\n created() {\n this.api = new CosmosApi()\n this.api\n .get_limits(this.parameters[0], this.parameters[1], this.parameters[2])\n .then((data) => {\n this.limitsSettings = data\n })\n this.getCurrentLimitsSet()\n this.currentSetRefreshInterval = setInterval(\n this.getCurrentLimitsSet,\n 60 * 1000\n )\n\n let type = 'CONVERTED'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n clearInterval(this.currentSetRefreshInterval)\n },\n methods: {\n calcPosition(value, limitsSettings) {\n if (!value || !limitsSettings) {\n return\n }\n let divisor = 0.8\n if (limitsSettings[0] === limitsSettings[1]) {\n divisor += 0.1\n }\n if (limitsSettings[2] === limitsSettings[3]) {\n divisor += 0.1\n }\n const scale = (limitsSettings[3] - limitsSettings[0]) / divisor\n const lowValue = limitsSettings[0] - 0.1 * scale\n const highValue = limitsSettings[3] - 0.1 * scale\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 if (value < this.min) {\n return 0\n } else if (value > this.max) {\n return 100\n } else {\n const result = parseInt(((value - lowValue) / scale) * 100.0)\n if (result > 100) {\n return 100\n } else if (result < 0) {\n return 0\n } else {\n return result\n }\n }\n },\n calcLimits(limitsSettings) {\n if (!limitsSettings) {\n return\n }\n let scale = 80\n if (limitsSettings[0] === limitsSettings[1]) {\n this.redLow = 0\n scale += 10\n } else {\n this.redLow = 10\n }\n if (limitsSettings[2] === limitsSettings[3]) {\n this.redHigh = 0\n scale += 10\n } else {\n this.redHigh = 10\n }\n const range = 1.0 * (limitsSettings[3] - limitsSettings[0])\n this.yellowLow = Math.round(\n ((limitsSettings[1] - limitsSettings[0]) / range) * scale\n )\n this.yellowHigh = Math.round(\n ((limitsSettings[3] - limitsSettings[2]) / range) * scale\n )\n if (limitsSettings.length > 4) {\n this.greenLow = Math.round(\n ((limitsSettings[4] - limitsSettings[1]) / range) * scale\n )\n this.greenHigh = Math.round(\n ((limitsSettings[2] - limitsSettings[5]) / range) * scale\n )\n this.blue = Math.round(\n 100 -\n this.redLow -\n this.yellowLow -\n this.greenLow -\n this.greenHigh -\n this.yellowHigh -\n this.redHigh\n )\n } else {\n this.greenLow = Math.round(\n 100 - this.redLow - this.yellowLow - this.yellowHigh - this.redHigh\n )\n this.greenHigh = 0\n this.blue = 0\n }\n },\n getCurrentLimitsSet: function () {\n this.api.get_limits_set().then((result) => {\n this.currentLimitsSet = result\n })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.limitsbar {\n cursor: default;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 5px;\n height: var(--height);\n}\n.limitsbar__container {\n position: relative;\n flex: 1 1 100%;\n width: var(--container-width);\n border: 1px solid black;\n background-color: white;\n}\n.limitsbar__redlow {\n position: absolute;\n bottom: 0px;\n width: var(--container-width);\n height: var(--redlow-height);\n background-color: red;\n}\n.limitsbar__redhigh {\n position: absolute;\n top: 0px;\n width: var(--container-width);\n height: var(--redhigh-height);\n background-color: red;\n}\n.limitsbar__yellowlow {\n position: absolute;\n bottom: var(--redlow-height);\n height: var(--yellowlow-height);\n width: var(--container-width);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__yellowhigh {\n position: absolute;\n top: var(--redhigh-height);\n height: var(--yellowhigh-height);\n width: var(--container-width);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__greenlow {\n position: absolute;\n bottom: calc(var(--redlow-height) + var(--yellowlow-height));\n width: var(--container-width);\n height: var(--greenlow-height);\n background-color: green;\n}\n.limitsbar__greenhigh {\n position: absolute;\n top: calc(var(--redhigh-height) + var(--yellowhigh-height));\n width: var(--container-width);\n height: var(--greenhigh-height);\n background-color: green;\n}\n.limitsbar__blue {\n position: absolute;\n bottom: calc(\n var(--redlow-height) + var(--yellowlow-height) + var(--greenlow-height)\n );\n width: var(--container-width);\n height: var(--blue-height);\n background-color: blue;\n}\n.limitsbar__line {\n position: absolute;\n bottom: var(--position);\n width: var(--container-width);\n height: 1px;\n background-color: rgb(128, 128, 128);\n}\n$arrow-size: 5px;\n.limitsbar__arrow {\n position: absolute;\n bottom: var(--position);\n left: var(--container-width);\n width: 0;\n height: 0;\n transform: translateY($arrow-size); // Transform so it sits over the line\n border-top: $arrow-size solid transparent;\n border-bottom: $arrow-size solid transparent;\n border-right: $arrow-size solid rgb(128, 128, 128);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolumnWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolumnWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitscolumnWidget.vue?vue&type=template&id=5f237a99&scoped=true&\"\nimport script from \"./LimitscolumnWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitscolumnWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitscolumnWidget.vue?vue&type=style&index=0&id=5f237a99&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f237a99\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('graph',{ref:'graph' + _vm.id,attrs:{\"id\":_vm.id,\"state\":_vm.state,\"selected-graph-id\":_vm.id,\"seconds-graphed\":_vm.secondsGraphed,\"points-saved\":_vm.pointsSaved,\"points-graphed\":_vm.pointsGraphed,\"initial-items\":_vm.items,\"height\":_vm.size.height,\"width\":_vm.size.width,\"hide-system-bar\":\"\",\"hide-overview\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',{nativeOn:{\"click\":function($event){return _vm.$emit('click')}}},[_c('v-system-bar',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideSystemBar),expression:\"!hideSystemBar\"}],class:_vm.selectedGraphId === _vm.id ? 'active' : 'inactive'},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.length !== 0),expression:\"errors.length !== 0\"}],staticClass:\"mx-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"error-graph-icon\"},on:{\"click\":function($event){_vm.errorDialog = true}}},[_vm._v(\" mdi-alert \")])],1)]}}])},[_c('span',[_vm._v(\" Errors \")])])],1),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"edit-graph-icon\"},on:{\"click\":function($event){_vm.editGraph = true}}},[_vm._v(\" mdi-pencil \")])],1)]}}])},[_c('span',[_vm._v(\" Edit \")])]),_c('v-spacer'),_c('span',[_vm._v(_vm._s(_vm.title))]),_c('v-spacer'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.calcFullSize),expression:\"calcFullSize\"}],attrs:{\"data-test\":\"collapse-all\"},on:{\"click\":_vm.collapseAll}},[_vm._v(\" mdi-arrow-collapse \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.calcFullSize),expression:\"!calcFullSize\"}],attrs:{\"data-test\":\"expand-all\"},on:{\"click\":_vm.expandAll}},[_vm._v(\" mdi-arrow-expand \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.calcFullSize),expression:\"calcFullSize\"}]},[_vm._v(\" Collapse \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.calcFullSize),expression:\"!calcFullSize\"}]},[_vm._v(\" Expand \")])])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullWidth),expression:\"fullWidth\"}],attrs:{\"data-test\":\"collapse-width\"},on:{\"click\":_vm.collapseWidth}},[_vm._v(\" mdi-arrow-collapse-horizontal \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullWidth),expression:\"!fullWidth\"}],attrs:{\"data-test\":\"expand-width\"},on:{\"click\":_vm.expandWidth}},[_vm._v(\" mdi-arrow-expand-horizontal \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullWidth),expression:\"fullWidth\"}]},[_vm._v(\" Collapse Width \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullWidth),expression:\"!fullWidth\"}]},[_vm._v(\" Expand Width \")])])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullHeight),expression:\"fullHeight\"}],attrs:{\"data-test\":\"collapse-height\"},on:{\"click\":_vm.collapseHeight}},[_vm._v(\" mdi-arrow-collapse-vertical \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullHeight),expression:\"!fullHeight\"}],attrs:{\"data-test\":\"expand-height\"},on:{\"click\":_vm.expandHeight}},[_vm._v(\" mdi-arrow-expand-vertical \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullHeight),expression:\"fullHeight\"}]},[_vm._v(\" Collapse Height \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullHeight),expression:\"!fullHeight\"}]},[_vm._v(\" Expand Height \")])])],1),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],attrs:{\"data-test\":\"minimize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-minimize \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}],attrs:{\"data-test\":\"maximize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-maximize \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_vm._v(\" Minimize \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}]},[_vm._v(\" Maximize \")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"close-graph-icon\"},on:{\"click\":function($event){return _vm.$emit('close-graph')}}},[_vm._v(\" mdi-close-box \")])],1)]}}])},[_c('span',[_vm._v(\" Close \")])])],1),_c('v-expand-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],ref:\"chart\",staticClass:\"pa-1\",attrs:{\"id\":\"chart\"}},[_c('div',{attrs:{\"id\":(\"chart\" + _vm.id)}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideOverview),expression:\"!hideOverview\"}],attrs:{\"id\":(\"overview\" + _vm.id)}})])])],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.$emit('input')},\"input\":function($event){return _vm.editGraphClose()}},model:{value:(_vm.editGraph),callback:function ($$v) {_vm.editGraph=$$v},expression:\"editGraph\"}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Edit Graph\")]),_c('v-spacer')],1),_c('v-card',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{staticClass:\"pb-2\",attrs:{\"label\":\"Title\",\"hide-details\":\"\",\"data-test\":\"edit-graph-title\"},model:{value:(_vm.title),callback:function ($$v) {_vm.title=$$v},expression:\"title\"}})],1),_c('v-card-text',{staticClass:\"pa-0\"},[_vm._v(\" Select a start date/time for the graph. Leave blank for start now. \")]),_c('date-time-chooser',{attrs:{\"required\":false,\"date-label\":\"Start Date\",\"time-label\":\"Start Time\"},on:{\"date-time\":function($event){_vm.graphStartDateTime = $event}}}),_c('v-card-text',{staticClass:\"pa-0\"},[_vm._v(\" Select a end date/time for the graph. Leave blank for continuous real-time graphing. \")]),_c('date-time-chooser',{attrs:{\"date-label\":\"End Date\",\"time-label\":\"End Time\"},on:{\"date-time\":function($event){_vm.graphEndDateTime = $event}}}),_c('v-card-text',{staticClass:\"pa-0\"},[_vm._v(\" Optional Y axis settings. \")]),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"px-2\"},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"Min Y\",\"type\":\"number\",\"data-test\":\"graph-min-y\"},model:{value:(_vm.graphMinY),callback:function ($$v) {_vm.graphMinY=$$v},expression:\"graphMinY\"}})],1),_c('v-col',{staticClass:\"px-2\"},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"Max Y\",\"type\":\"number\",\"data-test\":\"graph-max-y\"},model:{value:(_vm.graphMaxY),callback:function ($$v) {_vm.graphMaxY=$$v},expression:\"graphMaxY\"}})],1)],1),_c('v-data-table',{staticClass:\"elevation-1 my-2\",attrs:{\"item-key\":\"itemId\",\"headers\":_vm.itemHeaders,\"items\":_vm.editItems,\"items-per-page\":5,\"footer-props\":{\n 'items-per-page-options': [5],\n }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\n var item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-btn',{attrs:{\"icon\":\"\",\"data-test\":(\"delete-item-icon\" + (item.itemId))},on:{\"click\":function () { return _vm.removeItems([item]); }}},[_c('v-icon',[_vm._v(\" mdi-delete \")])],1)],1)]}}],null,true)},[_c('span',[_vm._v(\" Remove \")])])]}},{key:\"no-data\",fn:function(){return [_c('span',[_vm._v(\"Currently no items on this graph\")])]},proxy:true}])}),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.editGraphClose()}}},[_vm._v(\" Ok \")])],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.errorDialog),callback:function ($$v) {_vm.errorDialog=$$v},expression:\"errorDialog\"}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Errors\")]),_c('v-spacer')],1),_c('v-card',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{staticClass:\"pb-2\",attrs:{\"readonly\":\"\",\"hide-details\":\"\",\"label\":\"Graph Title\"},model:{value:(_vm.title),callback:function ($$v) {_vm.title=$$v},expression:\"title\"}})],1),_c('v-row',{staticClass:\"my-3\"},[_c('v-textarea',{attrs:{\"readonly\":\"\",\"rows\":\"8\",\"value\":_vm.error}})],1),_c('v-row',[_c('v-btn',{attrs:{\"block\":\"\"},on:{\"click\":_vm.clearErrors}},[_vm._v(\" Clear \")])],1)],1)],1),(_vm.editGraphMenu)?_c('v-menu',{attrs:{\"position-x\":_vm.editGraphMenuX,\"position-y\":_vm.editGraphMenuY,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.editGraphMenu),callback:function ($$v) {_vm.editGraphMenu=$$v},expression:\"editGraphMenu\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.editGraph = true}}},[_c('v-list-item-title',{staticStyle:{\"cursor\":\"pointer\"}},[_vm._v(\" Edit \"+_vm._s(_vm.title)+\" \")])],1)],1)],1):_vm._e(),(_vm.editItem)?_c('v-dialog',{attrs:{\"max-width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }_vm.editItem = false}},model:{value:(_vm.editItem),callback:function ($$v) {_vm.editItem=$$v},expression:\"editItem\"}},[_c('v-card',{staticClass:\"pa-3\"},[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(\"Edit Item\")]),_c('v-select',{attrs:{\"outlined\":\"\",\"hide-details\":\"\",\"label\":\"Value Type\",\"items\":_vm.valueTypes},model:{value:(_vm.currentType),callback:function ($$v) {_vm.currentType=$$v},expression:\"currentType\"}}),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.closeEditItem()}}},[_vm._v(\"Ok\")])],1)],1)],1):_vm._e(),(_vm.itemMenu)?_c('v-menu',{attrs:{\"position-x\":_vm.itemMenuX,\"position-y\":_vm.itemMenuY,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.itemMenu),callback:function ($$v) {_vm.itemMenu=$$v},expression:\"itemMenu\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.openEditItem()}}},[_c('v-list-item-title',{staticStyle:{\"cursor\":\"pointer\"}},[_vm._v(\" Edit \"+_vm._s(_vm.selectedItem.itemName)+\" \")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.removeItems([_vm.selectedItem])}}},[_c('v-list-item-title',{staticStyle:{\"cursor\":\"pointer\"}},[_vm._v(\" Delete \"+_vm._s(_vm.selectedItem.itemName)+\" \")])],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-row',[_c('v-col',[_c('v-menu',{attrs:{\"close-on-content-click\":\"\",\"transition\":\"scale-transition\",\"offset-y\":\"\",\"max-width\":\"290px\",\"min-width\":\"290px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-text-field',_vm._g({attrs:{\"label\":_vm.dateLabel,\"name\":(\"date\" + (Date.now())),\"rules\":_vm.dateRules,\"type\":\"date\",\"data-test\":\"date-chooser\"},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}},on))]}}])})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":_vm.timeLabel,\"name\":(\"time\" + (Date.now())),\"rules\":_vm.timeRules,\"type\":\"time\",\"step\":\"1\",\"data-test\":\"time-chooser\"},on:{\"change\":_vm.onChange},model:{value:(_vm.time),callback:function ($$v) {_vm.time=$$v},expression:\"time\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-row>\n <v-col>\n <v-menu\n close-on-content-click\n transition=\"scale-transition\"\n offset-y\n max-width=\"290px\"\n min-width=\"290px\"\n >\n <template v-slot:activator=\"{ on }\">\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n :label=\"dateLabel\"\n :name=\"`date${Date.now()}`\"\n :rules=\"dateRules\"\n v-model=\"date\"\n v-on=\"on\"\n type=\"date\"\n data-test=\"date-chooser\"\n />\n </template>\n </v-menu>\n </v-col>\n <v-col>\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n :label=\"timeLabel\"\n :name=\"`time${Date.now()}`\"\n :rules=\"timeRules\"\n v-model=\"time\"\n type=\"time\"\n step=\"1\"\n @change=\"onChange\"\n data-test=\"time-chooser\"\n />\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { isValid, parse, format, getTime } from 'date-fns'\n\nexport default {\n props: {\n required: {\n type: Boolean,\n default: true,\n },\n initialDate: {\n type: Date,\n default: null,\n },\n initialTime: {\n type: Date,\n default: null,\n },\n dateLabel: {\n type: String,\n default: 'Date',\n },\n timeLabel: {\n type: String,\n default: 'Time',\n },\n },\n data() {\n return {\n date: null,\n time: null,\n rules: {\n required: (value) => !!value || 'Required',\n date: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'yyyy-MM-dd', new Date())) ||\n 'Invalid date (YYYY-MM-DD)'\n )\n } catch (e) {\n return 'Invalid date (YYYY-MM-DD)'\n }\n },\n time: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'HH:mm:ss', new Date())) ||\n 'Invalid time (HH:MM:SS)'\n )\n } catch (e) {\n return 'Invalid time (HH:MM:SS)'\n }\n },\n },\n }\n },\n computed: {\n dateRules() {\n let result = [this.rules.date]\n if (this.time || this.required) {\n result.push(this.rules.required)\n }\n return result\n },\n timeRules() {\n let result = [this.rules.time]\n if (this.date || this.required) {\n result.push(this.rules.required)\n }\n return result\n },\n },\n methods: {\n onChange() {\n if (!!this.date && !!this.time) {\n this.$emit('date-time', this.date + ' ' + this.time)\n } else {\n this.$emit('date-time', null)\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateTimeChooser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateTimeChooser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DateTimeChooser.vue?vue&type=template&id=37777c5e&\"\nimport script from \"./DateTimeChooser.vue?vue&type=script&lang=js&\"\nexport * from \"./DateTimeChooser.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-card @click.native=\"$emit('click')\">\n <v-system-bar\n :class=\"selectedGraphId === id ? 'active' : 'inactive'\"\n v-show=\"!hideSystemBar\"\n >\n <div v-show=\"errors.length !== 0\" class=\"mx-2\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"error-graph-icon\" @click=\"errorDialog = true\">\n mdi-alert\n </v-icon>\n </div>\n </template>\n <span> Errors </span>\n </v-tooltip>\n </div>\n\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"edit-graph-icon\" @click=\"editGraph = true\">\n mdi-pencil\n </v-icon>\n </div>\n </template>\n <span> Edit </span>\n </v-tooltip>\n\n <v-spacer />\n <span>{{ title }}</span>\n <v-spacer />\n\n <div v-show=\"expand\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"collapse-all\"\n v-show=\"calcFullSize\"\n @click=\"collapseAll\"\n >\n mdi-arrow-collapse\n </v-icon>\n <v-icon\n data-test=\"expand-all\"\n v-show=\"!calcFullSize\"\n @click=\"expandAll\"\n >\n mdi-arrow-expand\n </v-icon>\n </div>\n </template>\n <span v-show=\"calcFullSize\"> Collapse </span>\n <span v-show=\"!calcFullSize\"> Expand </span>\n </v-tooltip>\n </div>\n\n <div v-show=\"expand\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"collapse-width\"\n v-show=\"fullWidth\"\n @click=\"collapseWidth\"\n >\n mdi-arrow-collapse-horizontal\n </v-icon>\n <v-icon\n data-test=\"expand-width\"\n v-show=\"!fullWidth\"\n @click=\"expandWidth\"\n >\n mdi-arrow-expand-horizontal\n </v-icon>\n </div>\n </template>\n <span v-show=\"fullWidth\"> Collapse Width </span>\n <span v-show=\"!fullWidth\"> Expand Width </span>\n </v-tooltip>\n </div>\n\n <div v-show=\"expand\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"collapse-height\"\n v-show=\"fullHeight\"\n @click=\"collapseHeight\"\n >\n mdi-arrow-collapse-vertical\n </v-icon>\n <v-icon\n data-test=\"expand-height\"\n v-show=\"!fullHeight\"\n @click=\"expandHeight\"\n >\n mdi-arrow-expand-vertical\n </v-icon>\n </div>\n </template>\n <span v-show=\"fullHeight\"> Collapse Height </span>\n <span v-show=\"!fullHeight\"> Expand Height </span>\n </v-tooltip>\n </div>\n\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"minimize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"expand\"\n >\n mdi-window-minimize\n </v-icon>\n <v-icon\n data-test=\"maximize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"!expand\"\n >\n mdi-window-maximize\n </v-icon>\n </div>\n </template>\n <span v-show=\"expand\"> Minimize </span>\n <span v-show=\"!expand\"> Maximize </span>\n </v-tooltip>\n\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"close-graph-icon\" @click=\"$emit('close-graph')\">\n mdi-close-box\n </v-icon>\n </div>\n </template>\n <span> Close </span>\n </v-tooltip>\n </v-system-bar>\n\n <v-expand-transition>\n <div class=\"pa-1\" id=\"chart\" ref=\"chart\" v-show=\"expand\">\n <div :id=\"`chart${id}`\"></div>\n <div\n :id=\"`overview${id}`\"\n v-show=\"!hideOverview\"\n ></div>\n </div>\n </v-expand-transition>\n </v-card>\n\n <!-- Edit dialog -->\n <v-dialog\n v-model=\"editGraph\"\n @keydown.esc=\"$emit('input')\"\n @input=\"editGraphClose()\"\n max-width=\"600\"\n >\n <v-system-bar>\n <v-spacer />\n <span>Edit Graph</span>\n <v-spacer />\n </v-system-bar>\n <v-card class=\"pa-3\">\n <v-row dense>\n <v-text-field\n class=\"pb-2\"\n label=\"Title\"\n v-model=\"title\"\n hide-details\n data-test=\"edit-graph-title\"\n />\n </v-row>\n <v-card-text class=\"pa-0\">\n Select a start date/time for the graph. Leave blank for start now.\n </v-card-text>\n <date-time-chooser\n :required=\"false\"\n date-label=\"Start Date\"\n time-label=\"Start Time\"\n @date-time=\"graphStartDateTime = $event\"\n />\n <v-card-text class=\"pa-0\">\n Select a end date/time for the graph. Leave blank for continuous\n real-time graphing.\n </v-card-text>\n <date-time-chooser\n date-label=\"End Date\"\n time-label=\"End Time\"\n @date-time=\"graphEndDateTime = $event\"\n />\n <v-card-text class=\"pa-0\"> Optional Y axis settings. </v-card-text>\n <v-row dense>\n <v-col class=\"px-2\">\n <v-text-field\n hide-details\n label=\"Min Y\"\n v-model=\"graphMinY\"\n type=\"number\"\n data-test=\"graph-min-y\"\n />\n </v-col>\n <v-col class=\"px-2\">\n <v-text-field\n hide-details\n label=\"Max Y\"\n v-model=\"graphMaxY\"\n type=\"number\"\n data-test=\"graph-max-y\"\n />\n </v-col>\n </v-row>\n <v-data-table\n item-key=\"itemId\"\n class=\"elevation-1 my-2\"\n :headers=\"itemHeaders\"\n :items=\"editItems\"\n :items-per-page=\"5\"\n :footer-props=\"{\n 'items-per-page-options': [5],\n }\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-btn\n icon\n :data-test=\"`delete-item-icon${item.itemId}`\"\n @click=\"() => removeItems([item])\"\n >\n <v-icon> mdi-delete </v-icon>\n </v-btn>\n </div>\n </template>\n <span> Remove </span>\n </v-tooltip>\n </template>\n <template v-slot:no-data>\n <span>Currently no items on this graph</span>\n </template>\n </v-data-table>\n <v-card-actions>\n <v-btn color=\"primary\" @click=\"editGraphClose()\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Error dialog -->\n <v-dialog v-model=\"errorDialog\" max-width=\"600\">\n <v-system-bar>\n <v-spacer />\n <span>Errors</span>\n <v-spacer />\n </v-system-bar>\n <v-card class=\"pa-3\">\n <v-row dense>\n <v-text-field\n readonly\n hide-details\n v-model=\"title\"\n class=\"pb-2\"\n label=\"Graph Title\"\n />\n </v-row>\n <v-row class=\"my-3\">\n <v-textarea readonly rows=\"8\" :value=\"error\" />\n </v-row>\n <v-row>\n <v-btn block @click=\"clearErrors\"> Clear </v-btn>\n </v-row>\n </v-card>\n </v-dialog>\n\n <!-- Edit right click context menu -->\n <v-menu\n v-if=\"editGraphMenu\"\n v-model=\"editGraphMenu\"\n :position-x=\"editGraphMenuX\"\n :position-y=\"editGraphMenuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"editGraph = true\">\n <v-list-item-title style=\"cursor: pointer\">\n Edit {{ title }}\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <!-- Edit Item dialog -->\n <v-dialog\n max-width=\"600\"\n v-if=\"editItem\"\n v-model=\"editItem\"\n @keydown.esc=\"editItem = false\"\n >\n <v-card class=\"pa-3\">\n <v-card-title class=\"headline\">Edit Item</v-card-title>\n <v-select\n outlined\n hide-details\n label=\"Value Type\"\n :items=\"valueTypes\"\n v-model=\"currentType\"\n />\n <v-card-actions>\n <v-btn color=\"primary\" @click=\"closeEditItem()\">Ok</v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Edit Item right click context menu -->\n <v-menu\n v-if=\"itemMenu\"\n v-model=\"itemMenu\"\n :position-x=\"itemMenuX\"\n :position-y=\"itemMenuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"openEditItem()\">\n <v-list-item-title style=\"cursor: pointer\">\n Edit {{ selectedItem.itemName }}\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"removeItems([selectedItem])\">\n <v-list-item-title style=\"cursor: pointer\">\n Delete {{ selectedItem.itemName }}\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n</template>\n\n<script>\nimport DateTimeChooser from './DateTimeChooser'\nimport uPlot from 'uplot'\nimport bs from 'binary-search'\nimport { toDate, format, getTime } from 'date-fns'\nimport Cable from '../services/cable.js'\n\nrequire('uplot/dist/uPlot.min.css')\n\nexport default {\n components: {\n DateTimeChooser,\n },\n props: {\n id: {\n type: Number,\n required: true,\n },\n selectedGraphId: {\n type: Number,\n // Not required because we pass null\n },\n state: {\n type: String,\n required: true,\n },\n // start time in nanoseconds to start the graph\n // this allows multiple graphs to be synchronized\n startTime: {\n type: Number,\n },\n secondsGraphed: {\n type: Number,\n required: true,\n },\n pointsSaved: {\n type: Number,\n required: true,\n },\n pointsGraphed: {\n type: Number,\n required: true,\n },\n hideSystemBar: {\n type: Boolean,\n default: false,\n },\n hideOverview: {\n type: Boolean,\n default: false,\n },\n initialItems: {\n type: Array,\n },\n // These allow the parent to force a specific height and/or width\n height: {\n type: Number,\n },\n width: {\n type: Number,\n },\n },\n data() {\n return {\n itemHeaders: [\n { text: 'Target Name', value: 'targetName' },\n { text: 'Packet Name', value: 'packetName' },\n { text: 'Item Name', value: 'itemName' },\n { text: 'Actions', value: 'actions', sortable: false },\n ],\n valueTypes: ['CONVERTED', 'RAW'],\n active: true,\n expand: true,\n fullWidth: true,\n fullHeight: true,\n graph: null,\n editGraph: false,\n editGraphMenu: false,\n editGraphMenuX: 0,\n editGraphMenuY: 0,\n editItem: false,\n itemMenu: false,\n itemMenuX: 0,\n itemMenuY: 0,\n selectedItem: null,\n currentType: null,\n title: '',\n overview: null,\n data: [[]],\n graphMinY: '',\n graphMaxY: '',\n graphStartDateTime: this.startTime,\n graphEndDateTime: null,\n indexes: {},\n items: this.initialItems || [],\n drawInterval: null,\n zoomChart: false,\n zoomOverview: false,\n cable: new Cable(),\n subscription: null,\n needToUpdate: false,\n errorDialog: false,\n errors: [],\n colors: [\n 'blue',\n 'red',\n 'green',\n 'darkorange',\n 'purple',\n 'cornflowerblue',\n 'lime',\n 'gold',\n 'hotpink',\n 'tan',\n 'cyan',\n 'peru',\n 'maroon',\n 'coral',\n 'navy',\n 'teal',\n 'brown',\n 'crimson',\n 'lightblue',\n 'black',\n ],\n }\n },\n computed: {\n calcFullSize: function () {\n return this.fullWidth || this.fullHeight\n },\n editItems: function () {\n if (!this.items) return []\n let itemId = 0\n return this.items.map((item) => {\n itemId += 1\n return { ...item, itemId }\n })\n },\n error: function () {\n if (this.errorDialog && this.errors.length > 0) {\n return JSON.stringify(this.errors, null, 4)\n }\n return null\n },\n },\n created() {\n this.title = `Graph ${this.id}`\n for (const [index, item] of this.items.entries()) {\n this.data.push([]) // initialize the empty data arrays\n this.indexes[this.subscriptionKey(item)] = index + 1\n }\n },\n mounted() {\n // This code allows for temporary pulling in a patched uPlot\n // Also note you need to add 'async' before the mounted method for await\n // const plugin = document.createElement('script')\n // plugin.setAttribute(\n // 'src',\n // 'https://leeoniya.github.io/uPlot/dist/uPlot.iife.min.js'\n // )\n // plugin.async = true\n // document.head.appendChild(plugin)\n // await new Promise(r => setTimeout(r, 500)) // Allow the js to load\n\n // TODO: This is demo / performance code of multiple items with many data points\n // 10 items at 500,000 each renders immediately and uses 180MB in Chrome\n // Refresh still works, chrome is sluggish but once you pause it is very performant\n // 500,000 pts at 1Hz is 138.9hrs .. almost 6 days\n //\n // 10 items at 100,000 each is very performant ... 1,000,000 pts is Qt TlmGrapher default\n // 100,000 pts at 1Hz is 27.8hrs\n //\n // 100,000 takes 40ms, Chrome uses 160MB\n // this.data = []\n // const dataPoints = 100000\n // const items = 10\n // let pts = new Array(dataPoints)\n // let times = new Array(dataPoints)\n // let time = 1589398007\n // let series = [{}]\n // for (let i = 0; i < dataPoints; i++) {\n // times[i] = time\n // pts[i] = i\n // time += 1\n // }\n // this.data.push(times)\n // for (let i = 0; i < items; i++) {\n // this.data.push(pts.map(x => x + i))\n // series.push({\n // label: 'Item' + i,\n // stroke: this.colors[i]\n // })\n // }\n\n const { chartSeries, overviewSeries } = this.items.reduce(\n (seriesObj, item) => {\n const commonProps = {\n spanGaps: true,\n stroke: this.colors.shift(),\n }\n seriesObj.chartSeries.push({\n ...commonProps,\n item: item,\n label: item.itemName,\n value: (self, rawValue) => {\n if (typeof rawValue === 'string' || isNaN(rawValue)) {\n return 'NaN'\n } else {\n return rawValue == null ? '--' : rawValue.toFixed(2)\n }\n }\n })\n seriesObj.overviewSeries.push({\n ...commonProps,\n })\n return seriesObj\n },\n { chartSeries: [], overviewSeries: [] }\n )\n\n let chartOpts = {\n ...this.getSize('chart'),\n ...this.getScales(),\n ...this.getAxes('chart'),\n // series: series, // TODO: Uncomment with the performance code\n series: [\n {\n label: 'Time',\n value: (u, v) =>\n // Convert the unix timestamp into a formatted date / time\n v == null ? '--' : format(toDate(v * 1000), 'yyyy-MM-dd HH:mm:ss'),\n },\n ...chartSeries,\n ],\n cursor: {\n drag: {\n x: true,\n y: false,\n },\n // Sync the cursor across graphs so mouseovers are synced\n sync: {\n key: 'cosmos',\n // setSeries links graphs so clicking an item to hide it also hides the other graph item\n // setSeries: true,\n },\n },\n hooks: {\n setScale: [\n (chart, key) => {\n if (key == 'x' && !this.zoomOverview && this.overview) {\n this.zoomChart = true\n let left = Math.round(\n this.overview.valToPos(chart.scales.x.min, 'x')\n )\n let right = Math.round(\n this.overview.valToPos(chart.scales.x.max, 'x')\n )\n this.overview.setSelect({ left, width: right - left })\n this.zoomChart = false\n }\n },\n ],\n ready: [\n (u) => {\n let clientX\n let clientY\n let canvas = u.root.querySelector('.u-over')\n canvas.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.itemMenu = false\n this.editGraphMenuX = e.clientX\n this.editGraphMenuY = e.clientY\n this.editGraphMenu = true\n })\n // Tell TlmGrapher that you might need to resize since on mouseenter\n // we start showing value popups and the graph can expand\n canvas.addEventListener('mouseenter', (e) => {\n this.$emit('resize')\n })\n canvas.addEventListener('mouseleave', (e) => {\n this.$emit('resize')\n })\n let legend = u.root.querySelector('.u-legend')\n legend.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.editGraphMenu = false\n this.itemMenuX = e.clientX\n this.itemMenuY = e.clientY\n // Grab the closest series and then figure out which index it is\n let seriesEl = e.target.closest('.u-series')\n let seriesIdx = Array.prototype.slice\n .call(legend.childNodes)\n .indexOf(seriesEl)\n let series = u.series[seriesIdx]\n if (series.item) {\n this.selectedItem = series.item\n this.itemMenu = true\n }\n return false\n })\n },\n ],\n },\n }\n // console.time('chart')\n this.graph = new uPlot(\n chartOpts,\n this.data,\n document.getElementById(`chart${this.id}`)\n )\n\n const overviewOpts = {\n ...this.getSize('overview'),\n ...this.getScales(),\n ...this.getAxes('overview'),\n // series: series, // TODO: Uncomment with the performance code\n series: [...overviewSeries],\n cursor: {\n y: false,\n points: {\n show: false, // TODO: This isn't working\n },\n drag: {\n setScale: false,\n x: true,\n y: false,\n },\n },\n legend: {\n show: false,\n },\n hooks: {\n setSelect: [\n (chart) => {\n if (!this.zoomChart) {\n this.zoomOverview = true\n let min = chart.posToVal(chart.select.left, 'x')\n let max = chart.posToVal(\n chart.select.left + chart.select.width,\n 'x'\n )\n this.graph.setScale('x', { min, max })\n this.zoomOverview = false\n }\n },\n ],\n },\n }\n this.overview = new uPlot(\n overviewOpts,\n this.data,\n document.getElementById(`overview${this.id}`)\n )\n //console.timeEnd('chart')\n\n // Allow the charts to dynamically resize when the window resizes\n window.addEventListener('resize', this.handleResize)\n\n if (this.state !== 'stop') {\n this.subscribe()\n }\n },\n beforeDestroy: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n window.removeEventListener('resize', this.handleResize)\n },\n watch: {\n state: function (newState, oldState) {\n switch (newState) {\n case 'start':\n // Only subscribe if we were previously stopped\n // If we were paused we do nothing ... see the data function\n if (oldState === 'stop') {\n this.subscribe()\n }\n break\n // case 'pause': Nothing to do ... see the data function\n case 'stop':\n this.subscription.unsubscribe()\n this.subscription = null\n break\n }\n },\n data: function (newData, oldData) {\n // Ignore changes to the data while we're paused\n if (this.state === 'pause') {\n return\n }\n this.graph.setData(newData)\n this.overview.setData(newData)\n let max = newData[0][newData[0].length - 1]\n let ptsMin = newData[0][newData[0].length - this.pointsGraphed]\n let min = newData[0][0]\n if (min < max - this.secondsGraphed) {\n min = max - this.secondsGraphed\n }\n if (ptsMin > min) {\n min = ptsMin\n }\n this.graph.setScale('x', { min, max })\n },\n graphMinY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMinY = val\n }\n this.setGraphRange()\n },\n graphMaxY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMaxY = val\n }\n this.setGraphRange()\n },\n graphStartDateTime: function (val) {\n this.needToUpdate = true\n if (val && typeof val === 'string') {\n this.graphStartDateTime =\n new Date(this.graphStartDateTime).getTime() * 1_000_000\n }\n },\n graphEndDateTime: function (val) {\n this.needToUpdate = true\n if (val && typeof val === 'string') {\n this.graphEndDateTime =\n new Date(this.graphEndDateTime).getTime() * 1_000_000\n }\n },\n },\n methods: {\n clearErrors: function () {\n this.errors = []\n },\n editGraphClose: function () {\n this.editGraph = false\n if (this.needToUpdate) {\n this.removeItemsFromSubscription()\n this.addItemsToSubscription()\n this.needToUpdate = false\n }\n },\n handleResize: function () {\n // TODO: Should this method be throttled?\n this.graph.setSize(this.getSize('chart'))\n this.overview.setSize(this.getSize('overview'))\n },\n resize: function () {\n this.graph.setSize(this.getSize('chart'))\n this.overview.setSize(this.getSize('overview'))\n this.$emit('resize', this.id)\n },\n expandAll: function () {\n this.fullWidth = true\n this.fullHeight = true\n this.resize()\n },\n collapseAll: function () {\n this.fullWidth = false\n this.fullHeight = false\n this.resize()\n },\n expandWidth: function () {\n this.fullWidth = true\n this.resize()\n },\n collapseWidth: function () {\n this.fullWidth = false\n this.resize()\n },\n expandHeight: function () {\n this.fullHeight = true\n this.resize()\n },\n collapseHeight: function () {\n this.fullHeight = false\n this.resize()\n },\n minMaxTransition: function () {\n this.expand = !this.expand\n this.$emit('min-max-graph', this.id)\n },\n setGraphRange: function () {\n let pad = 0.1\n if (\n this.graphMinY ||\n this.graphMinY === 0 ||\n this.graphMaxY ||\n this.graphMaxY === 0\n ) {\n pad = 0\n }\n this.graph.scales.y.range = (u, dataMin, dataMax) => {\n let min = dataMin\n if (this.graphMinY || this.graphMinY === 0) {\n min = this.graphMinY\n }\n let max = dataMax\n if (this.graphMaxY || this.graphMaxY === 0) {\n max = this.graphMaxY\n }\n return uPlot.rangeNum(min, max, pad, true)\n }\n },\n subscribe: function (endTime = null) {\n this.cable\n .createSubscription('StreamingChannel', localStorage.scope, {\n received: (data) => this.received(data),\n connected: () => {\n this.addItemsToSubscription(this.items, endTime)\n },\n disconnected: () => {\n this.errors.push({\n type: 'disconnected',\n message: 'COSMOS backend connection disconnected',\n time: new Date().getTime(),\n })\n },\n rejected: () => {\n this.errors.push({\n type: 'rejected',\n message: 'COSMOS backend connection rejected',\n time: new Date().getTime(),\n })\n },\n })\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n // throttle(cb, limit) {\n // var wait = false\n // return () => {\n // if (!wait) {\n // requestAnimationFrame(cb)\n // wait = true\n // setTimeout(() => {\n // wait = false\n // }, limit)\n // }\n // }\n // },\n getSize: function (type) {\n const navDrawer = document.getElementById('cosmos-nav-drawer')\n const navDrawerWidth = navDrawer.classList.contains(\n 'v-navigation-drawer--open'\n )\n ? navDrawer.clientWidth\n : 0\n const viewWidth =\n Math.max(document.documentElement.clientWidth, window.innerWidth || 0) -\n navDrawerWidth\n const viewHeight = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n )\n\n const chooser = document.getElementsByClassName('c-chooser')[0]\n let height = 100\n if (type === 'overview') {\n // Hide overview if we're NOT full height\n this.hideOverview = !this.fullHeight\n } else if (chooser) {\n // Height of chart is viewportSize - chooser - overview - fudge factor (primarily padding)\n height = viewHeight - chooser.clientHeight - height - 190\n if (!this.fullHeight) {\n height = height / 2.0 + 10 // 5px padding top and bottom\n }\n }\n let width = viewWidth - 60 // 30px padding left and right\n if (!this.fullWidth) {\n width = width / 2.0 - 10 // 5px padding left and right\n }\n return {\n width: this.width || width,\n height: this.height || height,\n }\n },\n getScales: function () {\n return {\n scales: {\n x: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) return [1566453600, 1566497660]\n return [dataMin, dataMax]\n },\n },\n y: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) return [-100, 100]\n return uPlot.rangeNum(dataMin, dataMax, 0.1, true)\n },\n },\n },\n }\n },\n getAxes: function (type) {\n let strokeColor = 'rgba(0, 0, 0, .1)'\n let axisColor = 'black'\n if (this.$vuetify.theme.dark) {\n strokeColor = 'rgba(255, 255, 255, .1)'\n axisColor = 'white'\n }\n return {\n axes: [\n {\n stroke: axisColor,\n grid: {\n show: true,\n stroke: strokeColor,\n width: 2,\n },\n },\n {\n size: 70, // This size supports values up to 99 million\n stroke: axisColor,\n grid: {\n show: type === 'overview' ? false : true,\n stroke: strokeColor,\n width: 2,\n },\n },\n ],\n }\n },\n openEditItem: function () {\n this.currentType = this.selectedItem.valueType\n this.editItem = true\n },\n closeEditItem: function () {\n this.editItem = false\n // Only change if the type was changed\n if (this.selectedItem.valueType !== this.currentType) {\n this.changeType()\n }\n },\n changeType: function () {\n this.removeItems([this.selectedItem])\n this.selectedItem.valueType = this.currentType\n this.addItems([this.selectedItem])\n },\n addItems: function (itemArray, type = 'CONVERTED') {\n for (const item of itemArray) {\n item.valueType ||= type // set the default type\n this.items.push(item)\n const index = this.data.length\n const color = this.colors.shift()\n this.graph.addSeries(\n {\n spanGaps: true,\n item: item,\n label: item.itemName,\n stroke: color,\n value: (self, rawValue) => {\n if (typeof rawValue === 'string' || isNaN(rawValue)) {\n return 'NaN'\n } else {\n return rawValue === null ? '--' : rawValue.toFixed(2)\n }\n }\n },\n index\n )\n this.overview.addSeries({ spanGaps: true, stroke: color }, index)\n let newData = Array(this.data[0].length)\n this.data.splice(index, 0, newData)\n this.indexes[this.subscriptionKey(item)] = index\n }\n this.addItemsToSubscription(itemArray)\n },\n addItemsToSubscription: function (\n itemArray = this.items,\n endTime = this.graphEndDateTime\n ) {\n if (this.subscription) {\n CosmosAuth.updateToken(CosmosAuth.defaultMinValidity).then(() => {\n this.subscription.perform('add', {\n scope: localStorage.scope,\n mode: 'DECOM',\n token: localStorage.cosmosToken,\n items: itemArray.map(this.subscriptionKey),\n start_time: this.graphStartDateTime,\n end_time: endTime,\n })\n })\n }\n },\n removeItems: function (itemArray) {\n this.removeItemsFromSubscription(itemArray)\n\n for (const key of itemArray.map(this.subscriptionKey)) {\n const index = this.reorderIndexes(key)\n // Put back the color so it's available for new series\n this.colors.unshift(this.graph.series[index].stroke)\n this.items.splice(index - 1, 1)\n this.data.splice(index, 1)\n this.graph.delSeries(index)\n this.overview.delSeries(index)\n this.graph.setData(this.data)\n this.overview.setData(this.data)\n }\n },\n removeItemsFromSubscription: function (itemArray = this.items) {\n if (this.subscription) {\n this.subscription.perform('remove', {\n scope: localStorage.scope,\n items: itemArray.map(this.subscriptionKey),\n })\n }\n },\n reorderIndexes: function (key) {\n let index = this.indexes[key]\n delete this.indexes[key]\n for (var i in this.indexes) {\n if (this.indexes[i] > index) {\n this.indexes[i] -= 1\n }\n }\n return index\n },\n received: function (json_data) {\n // TODO: Shouldn't get errors but should we handle this every time?\n // if (json_data.error) {\n // console.log(json_data.error)\n // return\n // }\n let data = JSON.parse(json_data)\n for (let i = 0; i < data.length; i++) {\n let time = data[i].time / 1_000_000_000.0 // Time in seconds\n let length = data[0].length\n if (length == 0 || time > data[0][length - 1]) {\n // Nominal case - append new data to end\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].push(null)\n }\n this.set_data_at_index(this.data[0].length - 1, time, data[i])\n } else {\n let index = bs(this.data[0], time, this.bs_comparator)\n if (index >= 0) {\n // Found the slot in the existing data\n this.set_data_at_index(index, time, data[i])\n } else {\n // Insert a new null slot at the ideal index\n let ideal_index = -index - 1\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].splice(ideal_index, 0, null)\n }\n this.set_data_at_index(ideal_index, time, data[i])\n }\n }\n }\n // If we weren't passed a startTime notify grapher of our start\n if (this.startTime === null) {\n this.graphStartDateTime = this.data[0][0] * 1_000_000_000\n this.$emit('started', this.graphStartDateTime)\n }\n },\n bs_comparator: function (element, needle) {\n return element - needle\n },\n set_data_at_index: function (index, time, new_data) {\n this.data[0][index] = time\n for (const [key, value] of Object.entries(new_data)) {\n if (key == 'time') {\n continue\n }\n let key_index = this.indexes[key]\n if (key_index) {\n let array = this.data[key_index]\n // NaN and Infinite values are sent as objects with raw attribute set\n // to 'NaN', '-Infinity', or 'Infinity', just set data to null\n if (value.raw) {\n array[index] = null\n } else if (typeof value === 'string') {\n // Can't graph strings so just set to null\n array[index] = null\n // If it's not already RAW, change the type to RAW\n // NOTE: Some items are RAW strings so they won't ever work\n if (!key.includes('__RAW')) {\n for (let item of this.items) {\n if (this.subscriptionKey(item) === key) {\n this.selectedItem = item\n break\n }\n }\n this.currentType = 'RAW'\n this.changeType()\n }\n } else {\n array[index] = value\n }\n }\n }\n },\n subscriptionKey: function (item) {\n return `TLM__${item.targetName}__${item.packetName}__${item.itemName}__${item.valueType}`\n },\n },\n}\n</script>\n\n<style scoped>\n#chart {\n background-color: var(--v-tertiary-darken2);\n}\n#chart >>> .u-legend {\n text-align: left;\n}\n#chart >>> .u-inline {\n max-width: fit-content;\n}\n/* TODO: Get this to work with white theme, values would be 0 in white */\n#chart >>> .u-select {\n background-color: rgba(255, 255, 255, 0.07);\n}\n/* This prevents the axis from responding to pointer-events.\n Necessary if we set overview height to 0 which makes it hidden but still present.\n However, we simply don't display the overview with v-show.\n See https://github.com/leeoniya/uPlot/issues/689\n#chart >>> .u-axis {\n pointer-events: none;\n} */\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Graph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Graph.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Graph.vue?vue&type=template&id=bfba4026&scoped=true&\"\nimport script from \"./Graph.vue?vue&type=script&lang=js&\"\nexport * from \"./Graph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Graph.vue?vue&type=style&index=0&id=bfba4026&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bfba4026\",\n null\n \n)\n\nexport default component.exports","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <graph\n :ref=\"'graph' + id\"\n :id=\"id\"\n :state=\"state\"\n :selected-graph-id=\"id\"\n :seconds-graphed=\"secondsGraphed\"\n :points-saved=\"pointsSaved\"\n :points-graphed=\"pointsGraphed\"\n :initial-items=\"items\"\n :height=\"size.height\"\n :width=\"size.width\"\n hide-system-bar\n hide-overview\n />\n</template>\n\n<script>\nimport Widget from './Widget'\nimport Graph from '../Graph.vue'\n\nconst valueType = 'CONVERTED'\nexport default {\n components: {\n Graph,\n },\n mixins: [Widget],\n data: function () {\n return {\n id: Math.floor(Math.random() * 100000000000), // Unique-ish\n state: 'start',\n items: [\n {\n targetName: this.parameters[0],\n packetName: this.parameters[1],\n itemName: this.parameters[2],\n valueType,\n },\n ],\n secondsGraphed: 1000,\n pointsSaved: 1000000,\n pointsGraphed: 1000,\n size: {\n height: 300,\n width: 400,\n },\n }\n },\n created: function () {\n this.settings.forEach((setting) => {\n switch (setting[0]) {\n case 'ITEM':\n this.items.push({\n targetName: setting[1],\n packetName: setting[2],\n itemName: setting[3],\n valueType,\n })\n case 'SECONDSGRAPHED':\n this.secondsGraphed = parseInt(setting[1])\n break\n case 'POINTSSAVED':\n this.pointsSaved = parseInt(setting[1])\n break\n case 'POINTSGRAPHED':\n this.pointsGraphed = parseInt(setting[1])\n break\n case 'SIZE':\n this.size.width = parseInt(setting[1])\n this.size.height = parseInt(setting[2])\n break\n }\n })\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LinegraphWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LinegraphWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LinegraphWidget.vue?vue&type=template&id=329eddcc&\"\nimport script from \"./LinegraphWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LinegraphWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"pa-0\"},_vm._l((_vm.widgetChunks),function(chunk,rindex){return _c('v-row',{key:'r' + rindex,attrs:{\"no-gutters\":\"\"}},_vm._l((chunk),function(widget,cindex){return _c('v-col',{key:'c' + cindex},[_c(widget.type,_vm._g({tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))],1)}),1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-container class=\"pa-0\">\n <v-row\n no-gutters\n v-for=\"(chunk, rindex) in widgetChunks\"\n :key=\"'r' + rindex\"\n >\n <v-col v-for=\"(widget, cindex) in chunk\" :key=\"'c' + cindex\">\n <component\n v-on=\"$listeners\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </v-col>\n </v-row>\n </v-container>\n</template>\n\n<script>\nimport Layout from './Layout'\nimport _ from 'lodash'\nexport default {\n mixins: [Layout],\n computed: {\n columns() {\n return parseInt(this.parameters[0])\n },\n widgetChunks() {\n return _.chunk(this.widgets, this.columns)\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MatrixbycolumnsWidget.vue?vue&type=template&id=fca6767e&\"\nimport script from \"./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./MatrixbycolumnsWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-progress-linear',{style:(_vm.computedStyle),attrs:{\"height\":\"25\",\"value\":_vm._value}},[_c('strong',[_vm._v(_vm._s(Math.ceil(_vm._value))+\"%\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-progress-linear height=\"25\" :value=\"_value\" :style=\"computedStyle\">\n <strong>{{ Math.ceil(_value) }}%</strong>\n </v-progress-linear>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport WidthSetter from './WidthSetter'\n\nexport default {\n mixins: [Widget, WidthSetter],\n props: {\n value: {\n default: null,\n },\n },\n data: function () {\n return {\n valueId: null,\n scaleFactor: 1.0,\n width: 80,\n }\n },\n computed: {\n _value: function () {\n let value = this.value\n if (value === null) {\n value = this.$store.state.tlmViewerValues[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 if (this.parameters[4]) {\n this.width = parseInt(this.parameters[4])\n }\n // If they're not passing us the value we have to register\n if (this.value === null) {\n var 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.$store.commit('tlmViewerAddItem', this.valueId)\n }\n },\n destroyed: function () {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProgressbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProgressbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProgressbarWidget.vue?vue&type=template&id=340cafa2&\"\nimport script from \"./ProgressbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ProgressbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-radio',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\",\"label\":_vm.label}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-radio hide-details dense :label=\"label\" :style=\"computedStyle\" />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiobuttonWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiobuttonWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadiobuttonWidget.vue?vue&type=template&id=60c7bd5e&\"\nimport script from \"./RadiobuttonWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./RadiobuttonWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-radio-group',{style:(_vm.computedStyle),attrs:{\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.selectedIndex),callback:function ($$v) {_vm.selectedIndex=$$v},expression:\"selectedIndex\"}},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-radio-group\n hide-details\n dense\n v-model=\"selectedIndex\"\n :style=\"computedStyle\"\n >\n <component\n v-for=\"(widget, index) in widgets\"\n v-on=\"$listeners\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\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 // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiogroupWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RadiogroupWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadiogroupWidget.vue?vue&type=template&id=35a44a25&\"\nimport script from \"./RadiogroupWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./RadiogroupWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rangebar\",style:([_vm.cssProps, _vm.computedStyle])},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rangebar__container\"},[_c('div',{staticClass:\"rangebar__line\"}),_c('div',{staticClass:\"rangebar__arrow\"})])}]\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\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: '100%', // users will override with px\n height: 20, // px\n }\n },\n computed: {\n cssProps() {\n return {\n '--height': this.height + 'px',\n '--width': this.width,\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.$store.commit('tlmViewerAddItem', this.valueId)\n\n if (this.parameters[6]) {\n // Width by default is 100% so add the px designator\n this.width = parseInt(this.parameters[6]) + 'px'\n }\n if (this.parameters[7]) {\n // Height by default is a number\n this.height = parseInt(this.parameters[7])\n }\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n methods: {\n calcPosition() {\n const value = this.$store.state.tlmViewerValues[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 width: var(--width);\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","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RangebarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RangebarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RangebarWidget.vue?vue&type=template&id=3ec94604&scoped=true&\"\nimport script from \"./RangebarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./RangebarWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RangebarWidget.vue?vue&type=style&index=0&id=3ec94604&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec94604\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('verticalbox-widget',_vm._g({attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widgets\":_vm.widgets,\"content-style\":_vm.scrollwindowStyle}},_vm.$listeners))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <verticalbox-widget\n v-on=\"$listeners\"\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widgets=\"widgets\"\n :content-style=\"scrollwindowStyle\"\n />\n</template>\n\n<script>\nimport Layout from './Layout'\nimport VerticalboxWidget from './VerticalboxWidget'\n\nexport default {\n mixins: [Layout],\n components: {\n VerticalboxWidget,\n },\n computed: {\n maxHeight: function () {\n return Number(\n this.settings.find((setting) => setting[0] === 'HEIGHT')?.at(1) ?? 180\n )\n },\n scrollwindowStyle: function () {\n return `\n max-height: ${this.maxHeight}px;\n overflow-y: scroll;\n `\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ScrollwindowWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ScrollwindowWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScrollwindowWidget.vue?vue&type=template&id=523ce438&\"\nimport script from \"./ScrollwindowWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ScrollwindowWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-banner',{attrs:{\"single-line\":\"\"}},[_vm._v(_vm._s(_vm.labelText))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-banner single-line>{{ labelText }}</v-banner>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n labelText() {\n return this.parameters[0]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionheaderWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionheaderWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SectionheaderWidget.vue?vue&type=template&id=5867789a&\"\nimport script from \"./SectionheaderWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./SectionheaderWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.style)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div :style=\"style\" />\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n style: function () {\n return [\n `width: ${this.parameters[0]}px;`,\n `height: ${this.parameters[1]}px;`,\n ].join('')\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpacerWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpacerWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SpacerWidget.vue?vue&type=template&id=5cbb2052&\"\nimport script from \"./SpacerWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./SpacerWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-tabs',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.widgets),function(tab,index){return _c('v-tab',{key:index},[_vm._v(\" \"+_vm._s(tab.parameters[0])+\" \")])}),1),_c('v-tabs-items',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.widgets),function(tab,tabIndex){return _c('v-tab-item',{key:tabIndex},_vm._l((tab.widgets),function(widget,widgetIndex){return _c(widget.type,_vm._g({key:(tabIndex + \"-\" + widgetIndex),tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-tabs v-model=\"curTab\">\n <v-tab v-for=\"(tab, index) in widgets\" :key=\"index\">\n {{ tab.parameters[0] }}\n </v-tab>\n </v-tabs>\n <v-tabs-items v-model=\"curTab\">\n <v-tab-item v-for=\"(tab, tabIndex) in widgets\" :key=\"tabIndex\">\n <component\n v-for=\"(widget, widgetIndex) in tab.widgets\"\n v-on=\"$listeners\"\n :key=\"`${tabIndex}-${widgetIndex}`\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </v-tab-item>\n </v-tabs-items>\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n data: function () {\n return {\n curTab: null,\n }\n },\n watch: {\n curTab: function () {\n this.$emit('min-max-screen')\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabbookWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabbookWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TabbookWidget.vue?vue&type=template&id=28716ba5&\"\nimport script from \"./TabbookWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TabbookWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-textarea',{class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"height\":_vm.height,\"value\":_vm._value,\"data-test\":\"valueText\"},on:{\"contextmenu\":_vm.showContextMenu}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-textarea\n solo\n dense\n readonly\n hide-details\n placeholder=\"Value\"\n :height=\"height\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"valueText\"\n @contextmenu=\"showContextMenu\"\n />\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport WidthSetter from './WidthSetter'\nimport DetailsDialog from '../../components/DetailsDialog'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n },\n data: function () {\n return {\n height: 100,\n }\n },\n mixins: [VWidget, WidthSetter],\n created: function () {\n if (this.parameters[3]) {\n this.width = parseInt(this.parameters[3])\n }\n if (this.parameters[4]) {\n this.height = parseInt(this.parameters[4])\n }\n },\n methods: {\n getType: function () {\n var type = 'CONVERTED'\n if (this.parameters[5]) {\n type = this.parameters[5]\n }\n return type\n },\n },\n}\n</script>\n\n<style scoped>\n.value >>> div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n.cosmos-green >>> input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow >>> input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red >>> input {\n color: red;\n}\n.cosmos-blue >>> input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple >>> input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black >>> input {\n color: black;\n}\n.cosmos-white >>> input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TextboxWidget.vue?vue&type=template&id=580e657e&scoped=true&\"\nimport script from \"./TextboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TextboxWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TextboxWidget.vue?vue&type=style&index=0&id=580e657e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"580e657e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-text-field',{style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"single-line\":\"\",\"hide-no-data\":\"\",\"hide-details\":\"\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-text-field\n solo\n dense\n single-line\n hide-no-data\n hide-details\n v-model=\"value\"\n :style=\"computedStyle\"\n >\n </v-text-field>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n value: null,\n }\n },\n // computed: {\n // width() {\n // return this.parameters[0] ? parseInt(this.parameters[0]) : 20\n // }\n // },\n created() {\n // Look through the settings and see if we're a NAMED_WIDGET\n this.settings.forEach((setting) => {\n if (setting[0] === 'NAMED_WIDGET') {\n setting[2].setNamedWidget(setting[1], this)\n }\n })\n\n // TODO: Is this actually working or do we need the computed width above (see LedWidget for an example)\n if (this.parameters[0]) {\n this.settings.push(['WIDTH', parseInt(this.parameters[0])])\n }\n if (this.parameters[1]) {\n this.value = this.parameters[1]\n }\n },\n methods: {\n text() {\n return this.value\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextfieldWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextfieldWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TextfieldWidget.vue?vue&type=template&id=7594193b&\"\nimport script from \"./TextfieldWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TextfieldWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"text-h5 text-center pa-1 mt-1 label\",style:(_vm.computedStyle)},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <span class=\"text-h5 text-center pa-1 mt-1 label\" :style=\"computedStyle\">\n {{ labelText }}\n </span>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n computed: {\n labelText() {\n return this.parameters[0]\n },\n },\n created() {\n if (this.parameters.length < 1) {\n throw new Error('Not enough parameters for TITLE.')\n }\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TitleWidget.vue?vue&type=template&id=3405a7c9&\"\nimport script from \"./TitleWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./TitleWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"value-widget-container\"},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-text-field',_vm._g(_vm._b({class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"single-line\":\"\",\"hide-no-data\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"value\":_vm._value,\"data-test\":\"value\"},on:{\"contextmenu\":_vm.showContextMenu}},'v-text-field',attrs,false),on))]}}])},[_c('span',[_vm._v(_vm._s(_vm.fullName))])]),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"value-widget-container\">\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-text-field\n solo\n dense\n readonly\n single-line\n hide-no-data\n hide-details\n placeholder=\"Value\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"value\"\n @contextmenu=\"showContextMenu\"\n v-bind=\"attrs\"\n v-on=\"on\"\n />\n </template>\n <span>{{ fullName }}</span>\n </v-tooltip>\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport DetailsDialog from '../../components/DetailsDialog'\nexport default {\n components: {\n DetailsDialog,\n },\n mixins: [VWidget],\n computed: {\n fullName() {\n return (\n this.parameters[0] + ' ' + this.parameters[1] + ' ' + this.parameters[2]\n )\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.value-widget-container {\n min-height: 34px;\n}\n.value ::v-deep div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n// TODO: These cosmos styles are also defined in assets/stylesheets/layout/_overrides.scss\n// Can they somehow be reused here? We need to force the style down into the input\n.cosmos-green ::v-deep input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow ::v-deep input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red ::v-deep input {\n color: red;\n}\n.cosmos-blue ::v-deep input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple ::v-deep input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black ::v-deep input {\n color: black;\n}\n.cosmos-white ::v-deep input {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValueWidget.vue?vue&type=template&id=d1470e40&scoped=true&\"\nimport script from \"./ValueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValueWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ValueWidget.vue?vue&type=style&index=0&id=d1470e40&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d1470e40\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('value-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings}}),_c('limitsbar-widget',{attrs:{\"parameters\":_vm.limitsBarParameters,\"settings\":_vm.settings.filter(function (x) { return x[0] == 1; }).map(function (x) { return x.slice(1); })}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <value-widget :parameters=\"parameters\" :settings=\"settings\" />\n <limitsbar-widget\n :parameters=\"limitsBarParameters\"\n :settings=\"settings.filter((x) => x[0] == 1).map((x) => x.slice(1))\"\n />\n </div>\n</template>\n\n<script>\nimport ValueWidget from './ValueWidget.vue'\nimport LimitsbarWidget from './LimitsbarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n LimitsbarWidget,\n },\n computed: {\n limitsBarParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n defaultStyle() {\n return {\n width: '300px',\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValuelimitsbarWidget.vue?vue&type=template&id=fab6546e&\"\nimport script from \"./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValuelimitsbarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-column\",style:(_vm.computedStyle)},[_c('limitscolumn-widget',{attrs:{\"parameters\":_vm.limitsColumnParameters,\"settings\":_vm.settings,\"widget-index\":0}}),_c('value-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":1}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-column\" :style=\"computedStyle\">\n <limitscolumn-widget\n :parameters=\"limitsColumnParameters\"\n :settings=\"settings\"\n :widget-index=\"0\"\n />\n <value-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport ValueWidget from './ValueWidget.vue'\nimport LimitscolumnWidget from './LimitscolumnWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n LimitscolumnWidget,\n },\n created() {\n this.settings.push(['WIDTH', '100'])\n },\n computed: {\n limitsColumnParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValuelimitscolumnWidget.vue?vue&type=template&id=68762854&\"\nimport script from \"./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValuelimitscolumnWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('value-widget',{attrs:{\"parameters\":_vm.valueParameters}}),_c('rangebar-widget',{attrs:{\"parameters\":_vm.parameters}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <value-widget :parameters=\"valueParameters\" />\n <rangebar-widget :parameters=\"parameters\" />\n </div>\n</template>\n\n<script>\nimport ValueWidget from './ValueWidget.vue'\nimport RangebarWidget from './RangebarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n ValueWidget,\n RangebarWidget,\n },\n computed: {\n valueParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'WITH_UNITS',\n ]\n },\n defaultStyle() {\n return {\n width: '300px',\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuerangebarWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValuerangebarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValuerangebarWidget.vue?vue&type=template&id=6dfb6492&\"\nimport script from \"./ValuerangebarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValuerangebarWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-column\"},_vm._l((_vm.widgets),function(widget,index){return _c(widget.type,_vm._g({key:index,tag:\"component\",attrs:{\"target\":widget.target,\"parameters\":widget.parameters,\"settings\":widget.settings,\"widgets\":widget.widgets,\"name\":widget.name}},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-column\">\n <component\n v-on=\"$listeners\"\n v-for=\"(widget, index) in widgets\"\n :key=\"index\"\n :is=\"widget.type\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n />\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\nexport default {\n mixins: [Layout],\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VerticalWidget.vue?vue&type=template&id=0402d44d&\"\nimport script from \"./VerticalWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./VerticalWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-banner',{attrs:{\"single-line\":\"\"}},[_vm._v(_vm._s(_vm.parameters.join(' ')))]),_c('vertical-widget',_vm._g({style:(_vm.contentStyle),attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widgets\":_vm.widgets}},_vm.$listeners))],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-banner single-line>{{ parameters.join(' ') }}</v-banner>\n <vertical-widget\n v-on=\"$listeners\"\n :style=\"contentStyle\"\n :parameters=\"parameters\"\n :settings=\"settings\"\n :widgets=\"widgets\"\n />\n </div>\n</template>\n\n<script>\nimport VerticalWidget from './VerticalWidget'\nimport Layout from './Layout'\n\nexport default {\n mixins: [Layout],\n components: {\n VerticalWidget,\n },\n props: {\n contentStyle: {\n type: String,\n },\n },\n}\n</script>\n\n<style scoped>\n.v-banner >>> div {\n background-color: var(--v-tertiary-darken2) !important;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalboxWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalboxWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VerticalboxWidget.vue?vue&type=template&id=818decfa&scoped=true&\"\nimport script from \"./VerticalboxWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./VerticalboxWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VerticalboxWidget.vue?vue&type=style&index=0&id=818decfa&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"818decfa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('top-bar',{attrs:{\"title\":_vm.title,\"menus\":_vm.menus}}),_c('v-container',[_c('v-row',[_c('v-col',[_c('v-select',{staticClass:\"ma-0 pa-0\",attrs:{\"label\":\"Select Target\",\"items\":_vm.targets,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.targetSelect},model:{value:(_vm.selectedTarget),callback:function ($$v) {_vm.selectedTarget=$$v},expression:\"selectedTarget\"}})],1),_c('v-col',[_c('v-select',{staticClass:\"ma-0 pa-0\",attrs:{\"label\":\"Select Screen\",\"items\":_vm.screens},on:{\"change\":_vm.screenSelect},model:{value:(_vm.selectedScreen),callback:function ($$v) {_vm.selectedScreen=$$v},expression:\"selectedScreen\"}})],1),_c('v-col',[_c('v-btn',{staticClass:\"primary\",attrs:{\"disabled\":!_vm.selectedScreen},on:{\"click\":function () { return _vm.showScreen(_vm.selectedTarget, _vm.selectedScreen); }}},[_vm._v(\" Show Screen \")])],1)],1)],1),_c('div',{staticClass:\"grid\"},_vm._l((_vm.definitions),function(def){return _c('div',{key:def.id,ref:\"gridItem\",refInFor:true,staticClass:\"item\",attrs:{\"id\":_vm.screenId(def.id)}},[_c('div',{staticClass:\"item-content\"},[_c('cosmos-screen',{attrs:{\"target\":def.target,\"screen\":def.screen,\"definition\":def.definition},on:{\"close-screen\":function($event){return _vm.closeScreen(def.id)},\"min-max-screen\":_vm.refreshLayout,\"add-new-screen\":function ($event) { return _vm.showScreen.apply(void 0, $event); }}})],1)])}),0),(_vm.openConfig)?_c('open-config-dialog',{attrs:{\"tool\":_vm.toolName},on:{\"success\":function($event){return _vm.openConfiguration($event)}},model:{value:(_vm.openConfig),callback:function ($$v) {_vm.openConfig=$$v},expression:\"openConfig\"}}):_vm._e(),(_vm.saveConfig)?_c('save-config-dialog',{attrs:{\"tool\":_vm.toolName},on:{\"success\":function($event){return _vm.saveConfiguration($event)}},model:{value:(_vm.saveConfig),callback:function ($$v) {_vm.saveConfig=$$v},expression:\"saveConfig\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',[_c('v-system-bar',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.length !== 0),expression:\"errors.length !== 0\"}]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"error-graph-icon\"},on:{\"click\":function($event){_vm.errorDialog = true}}},[_vm._v(\" mdi-alert \")])],1)]}}])},[_c('span',[_vm._v(\" Errors \")])])],1),_c('v-spacer'),_c('span',[_vm._v(_vm._s(_vm.target)+\" \"+_vm._s(_vm.screen))]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"edit-screen-icon\"},on:{\"click\":_vm.openEdit}},[_vm._v(\" mdi-pencil \")])],1)]}}])},[_c('span',[_vm._v(\" Edit Screen \")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],attrs:{\"data-test\":\"minimize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-minimize \")]),_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}],attrs:{\"data-test\":\"maximize-screen-icon\"},on:{\"click\":_vm.minMaxTransition}},[_vm._v(\" mdi-window-maximize \")])],1)]}}])},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_vm._v(\" Minimize Screen \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.expand),expression:\"!expand\"}]},[_vm._v(\" Maximize Screen \")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"close-screen-icon\"},on:{\"click\":function($event){return _vm.$emit('close-screen')}}},[_vm._v(\" mdi-close-box \")])],1)]}}])},[_c('span',[_vm._v(\" Close Screen \")])])],1),_c('v-expand-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}],ref:\"screen\",staticClass:\"pa-1\"},[_c('vertical-widget',_vm._g({attrs:{\"widgets\":_vm.layoutStack[0].widgets}},_vm.$listeners))],1)])],1),_c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.editDialog),callback:function ($$v) {_vm.editDialog=$$v},expression:\"editDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Edit Screen: \"+_vm._s(_vm.target)+\" \"+_vm._s(_vm.screen)+\" \")]),_c('v-spacer'),_c('div',{staticClass:\"mx-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"download-screen-icon\"},on:{\"click\":_vm.downloadScreen}},[_vm._v(\" mdi-download \")])],1)]}}])},[_c('span',[_vm._v(\" Download Screen \")])])],1)],1),_c('v-card-text',[_c('v-row',{staticClass:\"mt-3\"},[_vm._v(\" Upload a screen file. \")]),_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"3\"}},[_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"success\",\"disabled\":!_vm.file || _vm.loadingFile,\"loading\":_vm.loadingFile,\"data-test\":\"editScreenLoadBtn\"},on:{\"click\":_vm.loadFile},scopedSlots:_vm._u([{key:\"loader\",fn:function(){return [_c('span',[_vm._v(\"Loading...\")])]},proxy:true}])},[_vm._v(\" Load \")])],1),_c('v-col',{attrs:{\"cols\":\"9\"}},[_c('v-file-input',{attrs:{\"truncate-length\":\"15\",\"accept\":\".txt\",\"label\":\"Click to select .txt screen file.\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1)],1),_c('v-row',[_vm._v(\" Edit the screen definition. \")]),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-textarea',{attrs:{\"rows\":\"12\",\"rules\":[_vm.rules.required],\"data-test\":\"screen-text-input\"},model:{value:(_vm.currentDefinition),callback:function ($$v) {_vm.currentDefinition=$$v},expression:\"currentDefinition\"}})],1),_c('v-row',{staticClass:\"my-3\"},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.editErrors),expression:\"editErrors\"}],staticClass:\"red--text\",domProps:{\"textContent\":_vm._s(_vm.editErrors)}})]),_c('v-row',[_c('v-spacer'),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"data-test\":\"editScreenCancelBtn\"},on:{\"click\":_vm.cancelEdit}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\",\"data-test\":\"editScreenSubmitBtn\",\"disabled\":!!_vm.editErrors},on:{\"click\":_vm.saveEdit}},[_vm._v(\" Save \")])],1)],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.errorDialog),callback:function ($$v) {_vm.errorDialog=$$v},expression:\"errorDialog\"}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Screen: \"+_vm._s(_vm.target)+\" \"+_vm._s(_vm.screen)+\" Errors \")]),_c('v-spacer')],1),_c('v-card',{staticClass:\"pa-3\"},[_c('v-row',{staticClass:\"my-3\"},[_c('v-textarea',{attrs:{\"readonly\":\"\",\"rows\":\"13\",\"value\":_vm.error}})],1),_c('v-row',[_c('v-btn',{attrs:{\"block\":\"\"},on:{\"click\":_vm.clearErrors}},[_vm._v(\" Clear \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nexport class ConfigParserError {\n constructor(config_parser, usage = '', url = '') {\n this.keyword = config_parser.keyword\n this.parameters = config_parser.parameters\n this.filename = config_parser.filename\n this.line = config_parser.line\n this.line_number = config_parser.line_number\n this.usage = usage\n this.url = url\n }\n}\n\nexport class ConfigParserService {\n keyword = null\n parameters = []\n filename = ''\n line = ''\n line_number = 0\n url = 'http://cosmosrb.com/docs/v5'\n\n constructor() {}\n\n verify_num_parameters(min_num_params, max_num_params, usage = '') {\n // This syntax works with 0 because each doesn't return any values\n // for a backwards range\n for (var index = 1; index <= min_num_params; index++) {\n // If the parameter is nil (0 based) then we have a problem\n if (this.parameters[index - 1] === undefined) {\n throw new ConfigParserError(\n this,\n `Not enough parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n // If they pass null for max_params we don't check for a maximum number\n if (max_num_params && !this.parameters[max_num_params] === undefined) {\n throw new ConfigParserError(\n this,\n `Too many parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n\n remove_quotes(string) {\n if (string.length < 2) {\n return string\n }\n var first_char = string.charAt(0)\n if (first_char !== '\"' && first_char !== \"'\") {\n return string\n }\n var last_char = string.charAt(string.length - 1)\n if (first_char !== last_char) {\n return string\n }\n return string.substring(1, string.length - 1)\n }\n\n scan_string(string, rx) {\n if (!rx.global) throw \"rx must have 'global' flag set\"\n var r = []\n string.replace(rx, function (match) {\n r.push(match)\n return match\n })\n return r\n }\n\n parse_string(\n input_string,\n original_filename,\n yield_non_keyword_lines,\n remove_quotes,\n handler\n ) {\n var line_continuation = false\n this.line = ''\n this.keyword = null\n this.parameters = []\n this.filename = original_filename\n\n // Break string in to lines\n var lines = input_string.split('\\n')\n var numLines = lines.length\n\n for (var i = 0; i < numLines; i++) {\n this.line_number = i + 1\n var line = lines[i]\n\n line = line.trim()\n\n var rx = /(\"([^\\\\\"]|\\\\.)*\")|('([^\\\\']|\\\\.)*')|\\S+/g\n var data = this.scan_string(line, rx)\n\n var first_item = ''\n if (data.length > 0) {\n first_item = first_item + data[0]\n }\n\n if (line_continuation) {\n this.line = this.line + line\n // Carry over keyword and parameters\n } else {\n this.line = line\n if (first_item.length === 0 || first_item.charAt(0) === '#') {\n this.keyword = null\n } else {\n this.keyword = first_item.toUpperCase()\n }\n this.parameters = []\n }\n\n // Ignore comments and blank lines\n if (this.keyword === null) {\n if (yield_non_keyword_lines && !line_continuation) {\n handler(this.keyword, this.parameters)\n }\n continue\n }\n\n if (line_continuation) {\n if (remove_quotes) {\n this.parameters.push(this.remove_quotes(first_item))\n } else {\n this.parameters.push(first_item)\n }\n line_continuation = false\n }\n\n var length = data.length\n if (length > 1) {\n for (var index = 1; index < length; index++) {\n var string = data[index]\n\n // Don't process trailing comments such as:\n // KEYWORD PARAM #This is a comment\n // But still process Ruby string interpolations such as:\n // KEYWORD PARAM #{var}\n if (string.length > 0 && string.charAt(0) === '#') {\n if (!(string.length > 1 && string.charAt(1) === '{')) {\n break\n }\n }\n\n // If the string is simply '&' and its the last string then its a line continuation so break the loop\n if (\n string.length === 1 &&\n string.charAt(0) === '&' &&\n index === length - 1\n ) {\n line_continuation = true\n continue\n }\n\n line_continuation = false\n if (remove_quotes) {\n this.parameters.push(this.remove_quotes(string))\n } else {\n this.parameters.push(string)\n }\n }\n }\n\n // If we detected a line continuation while going through all the\n // strings on the line then we strip off the continuation character and\n // return to the top of the loop to continue processing the line.\n if (line_continuation) {\n // Strip the continuation character\n if (this.line.length >= 1) {\n this.line = this.line.substring(0, this.line.length - 1)\n } else {\n this.line = ''\n }\n continue\n }\n\n handler(this.keyword, this.parameters)\n } // for\n } // parse_string\n} // class ConfigParserService\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-card>\n <v-system-bar>\n <div v-show=\"errors.length !== 0\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"error-graph-icon\"\n @click=\"errorDialog = true\"\n >\n mdi-alert\n </v-icon>\n </div>\n </template>\n <span> Errors </span>\n </v-tooltip>\n </div>\n <v-spacer />\n <span>{{ target }} {{ screen }}</span>\n <v-spacer />\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"edit-screen-icon\" @click=\"openEdit\">\n mdi-pencil\n </v-icon>\n </div>\n </template>\n <span> Edit Screen </span>\n </v-tooltip>\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"minimize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"expand\"\n >\n mdi-window-minimize\n </v-icon>\n <v-icon\n data-test=\"maximize-screen-icon\"\n @click=\"minMaxTransition\"\n v-show=\"!expand\"\n >\n mdi-window-maximize\n </v-icon>\n </div>\n </template>\n <span v-show=\"expand\"> Minimize Screen </span>\n <span v-show=\"!expand\"> Maximize Screen </span>\n </v-tooltip>\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"close-screen-icon\"\n @click=\"$emit('close-screen')\"\n >\n mdi-close-box\n </v-icon>\n </div>\n </template>\n <span> Close Screen </span>\n </v-tooltip>\n </v-system-bar>\n <v-expand-transition>\n <div class=\"pa-1\" ref=\"screen\" v-show=\"expand\">\n <vertical-widget\n :widgets=\"layoutStack[0].widgets\"\n v-on=\"$listeners\"\n />\n </div>\n </v-expand-transition>\n </v-card>\n\n <!-- Edit dialog -->\n <v-dialog v-model=\"editDialog\" width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Edit Screen: {{ target }} {{ screen }} </span>\n <v-spacer />\n <div class=\"mx-2\">\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon\n data-test=\"download-screen-icon\"\n @click=\"downloadScreen\"\n >\n mdi-download\n </v-icon>\n </div>\n </template>\n <span> Download Screen </span>\n </v-tooltip>\n </div>\n </v-system-bar>\n <v-card-text>\n <v-row class=\"mt-3\"> Upload a screen file. </v-row>\n <v-row no-gutters align=\"center\">\n <v-col cols=\"3\">\n <v-btn\n block\n color=\"success\"\n @click=\"loadFile\"\n :disabled=\"!file || loadingFile\"\n :loading=\"loadingFile\"\n data-test=\"editScreenLoadBtn\"\n >\n Load\n <template v-slot:loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n <v-col cols=\"9\">\n <v-file-input\n v-model=\"file\"\n truncate-length=\"15\"\n accept=\".txt\"\n label=\"Click to select .txt screen file.\"\n />\n </v-col>\n </v-row>\n <v-row> Edit the screen definition. </v-row>\n <v-row no-gutters>\n <v-textarea\n v-model=\"currentDefinition\"\n rows=\"12\"\n :rules=\"[rules.required]\"\n data-test=\"screen-text-input\"\n />\n </v-row>\n <v-row class=\"my-3\">\n <span class=\"red--text\" v-show=\"editErrors\" v-text=\"editErrors\" />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"cancelEdit\"\n class=\"mx-2\"\n outlined\n data-test=\"editScreenCancelBtn\"\n >\n Cancel\n </v-btn>\n <v-btn\n @click=\"saveEdit\"\n class=\"mx-2\"\n color=\"primary\"\n data-test=\"editScreenSubmitBtn\"\n :disabled=\"!!editErrors\"\n >\n Save\n </v-btn>\n </v-row>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <!-- Error dialog -->\n <v-dialog v-model=\"errorDialog\" max-width=\"600\">\n <v-system-bar>\n <v-spacer />\n <span> Screen: {{ target }} {{ screen }} Errors </span>\n <v-spacer />\n </v-system-bar>\n <v-card class=\"pa-3\">\n <v-row class=\"my-3\">\n <v-textarea readonly rows=\"13\" :value=\"error\" />\n </v-row>\n <v-row>\n <v-btn block @click=\"clearErrors\"> Clear </v-btn>\n </v-row>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport Api from '@cosmosc2/tool-common/src/services/api'\nimport { ConfigParserService } from '@cosmosc2/tool-common/src/services/config-parser'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport Vue from 'vue'\nimport upperFirst from 'lodash/upperFirst'\nimport camelCase from 'lodash/camelCase'\n\n// Globally register all XxxWidget.vue components\nconst requireComponent = require.context(\n // The relative path of the components folder\n '@cosmosc2/tool-common/src/components/widgets',\n // Whether or not to look in subfolders\n false,\n // The regular expression used to match base component filenames\n /[A-Z]\\w+Widget\\.vue$/\n)\n\nrequireComponent.keys().forEach((filename) => {\n // Get component config\n const componentConfig = requireComponent(filename)\n\n // Get PascalCase name of component\n const componentName = upperFirst(\n camelCase(\n // Gets the filename regardless of folder depth\n filename\n .split('/')\n .pop()\n .replace(/\\.\\w+$/, '')\n )\n )\n\n // Register component globally\n Vue.component(\n componentName,\n // Look for the component options on `.default`, which will\n // exist if the component was exported with `export default`,\n // otherwise fall back to module's root.\n componentConfig.default || componentConfig\n )\n})\n\nexport default {\n props: {\n target: {\n type: String,\n default: '',\n },\n screen: {\n type: String,\n default: '',\n },\n definition: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n rules: {\n required: (value) => !!value || 'Required',\n },\n api: null,\n loadingFile: false,\n file: null,\n currentDefinition: this.definition,\n backup: '',\n editDialog: false,\n expand: true,\n configParser: null,\n currentLayout: null,\n layoutStack: [],\n namedWidgets: {},\n width: null,\n height: null,\n fixed: null,\n globalSettings: [],\n globalSubsettings: [],\n substitute: false,\n original_target_name: null,\n force_substitute: false,\n pollingPeriod: 1,\n errors: [],\n errorDialog: false,\n }\n },\n computed: {\n editErrors: function () {\n if (this.currentDefinition === '' && !this.file) {\n return 'Input can not be blank.'\n }\n if (this.currentDefinition === this.backup) {\n return 'No changes have been made to save.'\n }\n return null\n },\n error: function () {\n if (this.errorDialog && this.errors.length > 0) {\n return JSON.stringify(this.errors, null, 4)\n }\n return null\n },\n },\n // Called when an error from any descendent component is captured\n // We need this because an error can occur from any of the children\n // in the widget stack and are typically thrown on create()\n errorCaptured(err, vm, info) {\n if (err.usage) {\n this.errors.push({\n type: 'usage',\n message: err.usage,\n time: new Date().getTime(),\n })\n } else {\n this.errors.push({\n type: 'error',\n message: `${err}`,\n time: new Date().getTime(),\n })\n }\n return false\n },\n created() {\n this.api = new CosmosApi()\n this.configParser = new ConfigParserService()\n this.parseDefinition()\n },\n mounted() {\n let refreshInterval = this.pollingPeriod * 1000\n this.updater = setInterval(() => {\n this.update()\n }, refreshInterval)\n },\n destroyed() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n methods: {\n clearErrors: function () {\n this.errors = []\n },\n parseDefinition: function () {\n // Each time we start over and parse the screen definition\n this.errors = []\n this.namedWidgets = {}\n this.layoutStack = []\n // Every screen starts with a VerticalWidget\n this.layoutStack.push({\n type: 'VerticalWidget',\n parameters: [],\n widgets: [],\n })\n this.currentLayout = this.layoutStack[this.layoutStack.length - 1]\n\n this.configParser.parse_string(\n this.currentDefinition,\n '',\n false,\n true,\n (keyword, parameters) => {\n if (keyword) {\n switch (keyword) {\n case 'SCREEN':\n this.configParser.verify_num_parameters(\n 3,\n 4,\n `${keyword} <Width or AUTO> <Height or AUTO> <Polling Period> <FIXED>`\n )\n this.width = parseInt(parameters[0])\n this.height = parseInt(parameters[1])\n this.pollingPeriod = parseFloat(parameters[2])\n if (parameters.length === 4) {\n this.fixed = true\n } else {\n this.fixed = false\n }\n break\n case 'END':\n this.configParser.verify_num_parameters(0, 0, `${keyword}`)\n this.layoutStack.pop()\n this.currentLayout =\n this.layoutStack[this.layoutStack.length - 1]\n break\n case 'SETTING':\n case 'SUBSETTING':\n const widget =\n this.currentLayout.widgets[\n this.currentLayout.widgets.length - 1\n ] ?? this.currentLayout\n widget.settings.push(parameters)\n break\n case 'GLOBAL_SETTING':\n this.globalSettings.push(parameters)\n break\n case 'GLOBAL_SUBSETTING':\n this.globalSubsettings.push(parameters)\n break\n default:\n this.processWidget(keyword, parameters)\n break\n } // switch keyword\n } // if keyword\n }\n )\n this.applyGlobalSettings(this.layoutStack[0].widgets)\n },\n // Called by button scripts to get named widgets\n // Underscores used to match COSMOS API rather than Javascript convention\n get_named_widget: function (name) {\n return this.namedWidgets[name]\n },\n // Called by named widgets to register with the screen\n setNamedWidget: function (name, widget) {\n this.namedWidgets[name] = widget\n },\n update: function () {\n if (this.$store.state.tlmViewerItems.length !== 0) {\n this.api\n .get_tlm_values(this.$store.state.tlmViewerItems)\n .then((data) => {\n this.$store.commit('tlmViewerUpdateValues', data)\n })\n }\n },\n openEdit: function () {\n // Make a copy in case they edit and cancel\n this.backup = this.currentDefinition.repeat(1)\n this.editDialog = true\n },\n cancelEdit: function () {\n this.file = null\n this.editDialog = false\n // Restore the backup since we cancelled\n this.currentDefinition = this.backup\n this.parseDefinition()\n },\n loadFile: function () {\n const fileReader = new FileReader()\n fileReader.readAsText(this.file)\n this.loadingFile = true\n const that = this\n fileReader.onload = function () {\n that.loadingFile = false\n that.currentDefinition = fileReader.result\n that.inputType = 'txt'\n that.file = null\n }\n },\n saveEdit: function () {\n this.parseDefinition()\n // After parsing wait and see if there are errors before saving\n this.$nextTick(function () {\n Api.post('/cosmos-api/screen/', {\n data: {\n scope: localStorage.scope,\n target: this.target,\n screen: this.screen,\n text: this.currentDefinition,\n },\n })\n this.editDialog = false\n })\n },\n downloadScreen: function () {\n const blob = new Blob([this.currentDefinition], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', `${this.target}_${this.screen}.txt`)\n link.click()\n },\n minMaxTransition: function () {\n this.expand = !this.expand\n this.$emit('min-max-screen')\n },\n processWidget: function (keyword, parameters) {\n var widgetName = null\n if (keyword === 'NAMED_WIDGET') {\n this.configParser.verify_num_parameters(\n 2,\n null,\n `${keyword} <Widget Name> <Widget Type> <Widget Settings... (optional)>`\n )\n widgetName = parameters[0].toUpperCase()\n keyword = parameters[1].toUpperCase()\n parameters = parameters.slice(2, parameters.length)\n }\n const componentName =\n keyword.charAt(0).toUpperCase() +\n keyword.slice(1).toLowerCase() +\n 'Widget'\n let settings = []\n if (widgetName !== null) {\n // Push a reference to the screen so the layout can register when it is created\n // We do this because the widget isn't actually created until\n // the layout happens with <component :is='type'>\n settings.push(['NAMED_WIDGET', widgetName, this])\n }\n // If this is a layout widget we add it to the layoutStack and reset the currentLayout\n if (\n keyword.includes('VERTICAL') ||\n keyword.includes('HORIZONTAL') ||\n keyword === 'MATRIXBYCOLUMNS' ||\n keyword === 'TABBOOK' ||\n keyword === 'TABITEM' ||\n keyword === 'CANVAS' ||\n keyword === 'RADIOGROUP' ||\n keyword === 'SCROLLWINDOW'\n ) {\n const layout = {\n type: componentName,\n parameters: parameters,\n settings: settings,\n widgets: [],\n }\n this.layoutStack.push(layout)\n this.currentLayout.widgets.push(layout)\n this.currentLayout = layout\n } else {\n // Buttons require a reference to the screen to call get_named_widget\n if (keyword.includes('BUTTON')) {\n settings.push(['SCREEN', this])\n }\n if (Vue.options.components[componentName]) {\n this.currentLayout.widgets.push({\n type: componentName,\n target: this.target,\n parameters: parameters,\n settings: settings,\n })\n } else {\n this.currentLayout.widgets.push({\n type: 'DynamicWidget',\n target: this.target,\n parameters: parameters,\n settings: settings,\n name: componentName,\n })\n }\n }\n },\n applyGlobalSettings: function (widgets) {\n this.globalSettings.forEach((setting) => {\n widgets.forEach((widget) => {\n // widget.type is already the full camelcase widget name like LabelWidget\n // so we have to lower case both and tack on 'widget' to compare\n if (\n widget.type.toLowerCase() ===\n setting[0].toLowerCase() + 'widget'\n ) {\n widget.settings.push(setting.slice(1))\n }\n // Recursively apply to all widgets contained in layouts\n if (widget.widgets) {\n this.applyGlobalSettings(widget.widgets)\n }\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n background-color: var(--v-tertiary-darken2);\n}\n.v-textarea >>> textarea {\n padding: 5px;\n background-color: var(--v-tertiary-darken1) !important;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CosmosScreen.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CosmosScreen.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CosmosScreen.vue?vue&type=template&id=dc9e830a&scoped=true&\"\nimport script from \"./CosmosScreen.vue?vue&type=script&lang=js&\"\nexport * from \"./CosmosScreen.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CosmosScreen.vue?vue&type=style&index=0&id=dc9e830a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dc9e830a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Open Configuration\")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"search\",\"type\":\"text\",\"data-test\":\"search\",\"prepend-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle-outline\",\"clearable\":\"\",\"autofocus\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"show-select\":\"\",\"single-select\":\"\",\"item-key\":\"configId\",\"search\":_vm.search,\"headers\":_vm.headers,\"items\":_vm.configs,\"items-per-page\":5,\"footer-props\":{ 'items-per-page-options': [5] }},on:{\"item-selected\":_vm.itemSelected,\"click:row\":function (item, slot) { return slot.select(item); }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-btn',{staticClass:\"mt-1\",attrs:{\"data-test\":\"item-delete\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteConfig(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)]}}])}),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"ma-2 red--text\",domProps:{\"textContent\":_vm._s(_vm.error)}})]),_c('v-row',[_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"success\",\"data-test\":\"open-config-submit-btn\",\"disabled\":!!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\" Ok \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"open-config-cancel-btn\"},on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")])],1)],1)])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" @keydown.esc=\"cancel\" width=\"600\">\n <v-card>\n <form v-on:submit.prevent=\"success\">\n <v-system-bar>\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <v-row dense>\n <v-text-field\n label=\"search\"\n v-model=\"search\"\n type=\"text\"\n data-test=\"search\"\n prepend-icon=\"mdi-magnify\"\n clear-icon=\"mdi-close-circle-outline\"\n clearable\n autofocus\n single-line\n hide-details\n />\n </v-row>\n <v-data-table\n show-select\n single-select\n item-key=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :footer-props=\"{ 'items-per-page-options': [5] }\"\n @item-selected=\"itemSelected\"\n @click:row=\"(item, slot) => slot.select(item)\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n data-test=\"item-delete\"\n icon\n @click=\"deleteConfig(item)\"\n >\n <v-icon>mdi-delete</v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <v-row dense>\n <span class=\"ma-2 red--text\" v-show=\"error\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-btn\n @click.prevent=\"success\"\n type=\"submit\"\n color=\"success\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n >\n Ok\n </v-btn>\n <v-spacer />\n <v-btn\n @click=\"cancel\"\n color=\"primary\"\n data-test=\"open-config-cancel-btn\"\n >\n Cancel\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n tool: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n text: 'Configuration',\n value: 'config',\n },\n {\n text: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedItem: null,\n }\n },\n computed: {\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new CosmosApi()\n .list_configs(this.tool)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to Cosmos. ${error}`)\n })\n },\n methods: {\n itemSelected: function (item) {\n if (item.value) {\n this.selectedItem = item.item\n } else {\n this.selectedItem = null\n }\n },\n success: function () {\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedItem = null\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedItem = null\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem.config === item.config) {\n this.selectedItem = null\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new CosmosApi().delete_config(this.tool, item.config)\n })\n .catch((error) => {\n if (error) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`\n )\n }\n })\n },\n },\n}\n</script>\n\n<style scoped></style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpenConfigDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpenConfigDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OpenConfigDialog.vue?vue&type=template&id=4f9dd098&scoped=true&\"\nimport script from \"./OpenConfigDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./OpenConfigDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f9dd098\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Save Configuration\")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"search\",\"type\":\"text\",\"data-test\":\"search\",\"prepend-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle-outline\",\"clearable\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"show-select\":\"\",\"single-select\":\"\",\"item-key\":\"configId\",\"search\":_vm.search,\"headers\":_vm.headers,\"items\":_vm.configs,\"items-per-page\":5,\"footer-props\":{ 'items-per-page-options': [5] }},on:{\"item-selected\":_vm.itemSelected,\"click:row\":function (item, slot) { return slot.select(item); }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-btn',{staticClass:\"mt-1\",attrs:{\"icon\":\"\",\"data-test\":\"item-delete\"},on:{\"click\":function($event){return _vm.deleteConfig(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)]}}])}),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"autofocus\":\"\",\"disabled\":!!_vm.selectedItem,\"label\":\"Configuration Name\",\"data-test\":\"name-input-save-config-dialog\"},model:{value:(_vm.configName),callback:function ($$v) {_vm.configName=$$v},expression:\"configName\"}})],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"ma-2 red--text\",domProps:{\"textContent\":_vm._s(_vm.error)}})]),_c('v-row',[_c('v-spacer'),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"type\":\"submit\",\"color\":\"primary\",\"data-test\":\"save-config-submit-btn\",\"disabled\":!!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\" Ok \")])],1)],1)])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" @keydown.esc=\"cancel\" width=\"600\">\n <v-card>\n <form v-on:submit.prevent=\"success\">\n <v-system-bar>\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <v-row dense>\n <v-text-field\n label=\"search\"\n v-model=\"search\"\n type=\"text\"\n data-test=\"search\"\n prepend-icon=\"mdi-magnify\"\n clear-icon=\"mdi-close-circle-outline\"\n clearable\n single-line\n hide-details\n />\n </v-row>\n <v-data-table\n show-select\n single-select\n item-key=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :footer-props=\"{ 'items-per-page-options': [5] }\"\n @item-selected=\"itemSelected\"\n @click:row=\"(item, slot) => slot.select(item)\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-btn\n icon\n class=\"mt-1\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n >\n <v-icon>mdi-delete</v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span class=\"ma-2 red--text\" v-show=\"error\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn outlined class=\"mx-2\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n @click.prevent=\"success\"\n type=\"submit\"\n color=\"primary\"\n class=\"mx-2\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n >\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n tool: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n text: 'Configuration',\n value: 'config',\n },\n {\n text: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedItem: null,\n }\n },\n computed: {\n error: function () {\n if (this.configName === '') {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new CosmosApi()\n .list_configs(this.tool)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to Cosmos. ${error}`)\n })\n },\n methods: {\n itemSelected: function (item) {\n if (item.value) {\n this.selectedItem = item.item\n this.configName = item.item.config\n } else {\n this.selectedItem = null\n this.configName = ''\n }\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedItem = null\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedItem = null\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.configName === item.config) {\n this.selectedItem = null\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item.config), 1)\n new CosmosApi().delete_config(this.tool, item.config)\n })\n .catch((error) => {\n if (error) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`\n )\n }\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SaveConfigDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SaveConfigDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SaveConfigDialog.vue?vue&type=template&id=7685694e&\"\nimport script from \"./SaveConfigDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SaveConfigDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('mounting-portal',{attrs:{\"mount-to\":\"#cosmos-menu\",\"append\":\"\"}},[_c('div',{staticClass:\"v-toolbar__content\"},[_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label)))}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label) + \" \" + (option.label)))},on:{\"click\":option.command}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}})],1):_vm._e(),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled},domProps:{\"textContent\":_vm._s(option.icon)}})],1):_vm._e(),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')),domProps:{\"textContent\":_vm._s(option.label)}}):_vm._e()],1)]})],2)],1)],1)}),_c('v-spacer'),_c('v-toolbar-title',{domProps:{\"textContent\":_vm._s(_vm.title)}}),_c('v-spacer')],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <mounting-portal mount-to=\"#cosmos-menu\" append>\n <div class=\"v-toolbar__content\">\n <v-menu offset-y v-for=\"(menu, i) in menus\" :key=\"i\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n outlined\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"mx-1\"\n :data-test=\"formatDT(`${title} ${menu.label}`)\"\n >\n <span v-text=\"menu.label\" />\n <v-icon right> mdi-menu-down </v-icon>\n </v-btn>\n </template>\n <v-list>\n <!-- The radio-group is necessary in case the application wants radio buttons -->\n <v-radio-group\n :value=\"menu.radioGroup\"\n hide-details\n dense\n class=\"ma-0 pa-0\"\n >\n <template v-for=\"(option, j) in menu.items\">\n <v-divider v-if=\"option.divider\" :key=\"j\" />\n <v-list-item\n v-else\n @click=\"option.command\"\n :key=\"j\"\n :disabled=\"option.disabled\"\n :data-test=\"formatDT(`${title} ${menu.label} ${option.label}`)\"\n >\n <v-list-item-action\n v-if=\"option.radio\"\n >\n <v-radio\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-action\n v-if=\"option.checkbox\"\n >\n <v-checkbox\n v-model=\"checked\"\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-icon v-if=\"option.icon\">\n <v-icon v-text=\"option.icon\" :disabled=\"option.disabled\" />\n </v-list-item-icon>\n <v-list-item-title\n v-if=\"!option.radio && !option.checkbox\"\n :style=\"\n 'cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')\n \"\n v-text=\"option.label\"\n />\n </v-list-item>\n </template>\n </v-radio-group>\n </v-list>\n </v-menu>\n <v-spacer />\n <v-toolbar-title v-text=\"title\" />\n <v-spacer />\n </div>\n </mounting-portal>\n</template>\n\n<script>\nexport default {\n props: {\n menus: {\n type: Array,\n default: function () {\n return []\n },\n },\n title: {\n type: String,\n default: '',\n },\n },\n methods: {\n // Convert the string to a standard data-test format\n formatDT: function(string) {\n return string.replaceAll(' ', '-').toLowerCase()\n },\n }\n}\n</script>\n\n<style scoped>\n.v-list >>> .v-label {\n margin-left: 5px;\n}\n.v-list-item__icon {\n /* For some reason the default margin-right is huge */\n margin-right: 15px !important;\n}\n.v-list-item__title {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=e3bb7458&scoped=true&\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js&\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3bb7458\",\n null\n \n)\n\nexport default component.exports","<!--\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <top-bar :title=\"title\" :menus=\"menus\" />\n <v-container>\n <v-row>\n <v-col>\n <v-select\n class=\"ma-0 pa-0\"\n label=\"Select Target\"\n :items=\"targets\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedTarget\"\n @change=\"targetSelect\"\n />\n </v-col>\n <v-col>\n <v-select\n class=\"ma-0 pa-0\"\n label=\"Select Screen\"\n :items=\"screens\"\n v-model=\"selectedScreen\"\n @change=\"screenSelect\"\n />\n </v-col>\n <v-col>\n <v-btn\n class=\"primary\"\n :disabled=\"!selectedScreen\"\n @click=\"() => showScreen(selectedTarget, selectedScreen)\"\n >\n Show Screen\n </v-btn>\n </v-col>\n </v-row>\n </v-container>\n <div class=\"grid\">\n <div\n class=\"item\"\n v-for=\"def in definitions\"\n :key=\"def.id\"\n :id=\"screenId(def.id)\"\n ref=\"gridItem\"\n >\n <div class=\"item-content\">\n <cosmos-screen\n :target=\"def.target\"\n :screen=\"def.screen\"\n :definition=\"def.definition\"\n @close-screen=\"closeScreen(def.id)\"\n @min-max-screen=\"refreshLayout\"\n @add-new-screen=\"($event) => showScreen(...$event)\"\n />\n </div>\n </div>\n </div>\n <!-- Dialogs for opening and saving configs -->\n <open-config-dialog\n v-if=\"openConfig\"\n v-model=\"openConfig\"\n :tool=\"toolName\"\n @success=\"openConfiguration($event)\"\n />\n <save-config-dialog\n v-if=\"saveConfig\"\n v-model=\"saveConfig\"\n :tool=\"toolName\"\n @success=\"saveConfiguration($event)\"\n />\n </div>\n</template>\n\n<script>\nimport Api from '@cosmosc2/tool-common/src/services/api'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport CosmosScreen from './CosmosScreen'\nimport OpenConfigDialog from '@cosmosc2/tool-common/src/components/OpenConfigDialog'\nimport SaveConfigDialog from '@cosmosc2/tool-common/src/components/SaveConfigDialog'\nimport Muuri from 'muuri'\nimport TopBar from '@cosmosc2/tool-common/src/components/TopBar'\n\nexport default {\n components: {\n CosmosScreen,\n TopBar,\n OpenConfigDialog,\n SaveConfigDialog,\n },\n data() {\n return {\n title: 'Telemetry Viewer',\n counter: 0,\n definitions: [],\n targets: [],\n screens: [],\n selectedTarget: '',\n selectedScreen: '',\n grid: null,\n api: null,\n menus: [\n {\n label: 'File',\n items: [\n {\n label: 'Open Configuration',\n icon: 'mdi-folder-open',\n command: () => {\n this.openConfig = true\n },\n },\n {\n label: 'Save Configuration',\n icon: 'mdi-content-save',\n command: () => {\n this.saveConfig = true\n },\n },\n ],\n },\n ],\n toolName: 'tlm-viewer',\n openConfig: false,\n saveConfig: false,\n }\n },\n created() {\n this.api = new CosmosApi()\n this.api\n .get_target_list({ params: { scope: localStorage.scope } })\n .then((data) => {\n var arrayLength = data.length\n for (var i = 0; i < arrayLength; i++) {\n this.targets.push({ label: data[i], value: data[i] })\n }\n if (!this.selectedTarget) {\n this.selectedTarget = this.targets[0].value\n }\n this.updateScreens()\n })\n },\n mounted() {\n this.grid = new Muuri('.grid', {\n dragEnabled: true,\n // Only allow drags starting from the v-system-bar title\n dragHandle: '.v-system-bar',\n })\n this.grid.on('dragEnd', this.refreshLayout)\n const previousConfig = localStorage['lastconfig__telemetry_viewer']\n if (previousConfig) {\n this.openConfiguration(previousConfig)\n }\n },\n methods: {\n updateScreens() {\n this.screens = []\n Api.get('/cosmos-api/screen/' + this.selectedTarget).then((response) => {\n for (let screen of response.data) {\n this.screens.push(screen)\n }\n })\n },\n targetSelect(target) {\n this.selectedTarget = target\n this.selectedScreen = ''\n this.updateScreens()\n },\n screenSelect(screen) {\n this.selectedScreen = screen\n },\n showScreen(target, screen) {\n this.loadScreen(target, screen).then((response) => {\n this.pushScreen({\n id: this.counter++,\n target: target,\n screen: screen,\n definition: response.data,\n })\n })\n },\n loadScreen(target, screen) {\n return Api.get('/cosmos-api/screen/' + target + '/' + screen, {\n headers: {\n Accept: 'text/plain',\n },\n })\n },\n pushScreen(definition) {\n this.definitions.push(definition)\n this.$nextTick(function () {\n var items = this.grid.add(\n this.$refs.gridItem[this.$refs.gridItem.length - 1],\n {\n active: false,\n }\n )\n this.grid.show(items)\n this.grid.refreshItems().layout()\n })\n },\n closeScreen(id) {\n var items = this.grid.getItems([\n document.getElementById(this.screenId(id)),\n ])\n this.grid.remove(items)\n this.grid.refreshItems().layout()\n this.definitions = this.definitions.filter((value, index, arr) => {\n return value.id != id\n })\n },\n refreshLayout() {\n setTimeout(() => {\n this.grid.refreshItems().layout()\n }, 600) // TODO: Is 600ms ok for all screens?\n },\n screenId(id) {\n return 'tlmViewerScreen' + id\n },\n openConfiguration: async function (name) {\n localStorage['lastconfig__telemetry_viewer'] = name\n this.counter = 0\n this.definitions = []\n let configResponse = await this.api.load_config(this.toolName, name)\n if (configResponse) {\n const config = JSON.parse(configResponse)\n // Load all the screen definitions from the API at once\n const loadScreenPromises = config.map((definition) => {\n return this.loadScreen(definition.target, definition.screen)\n })\n // Wait until they're all loaded\n Promise.all(loadScreenPromises)\n .then((responses) => {\n // Then add all the screens in order\n config.forEach((definition, index) => {\n const response = responses[index]\n setTimeout(() => {\n this.pushScreen({\n id: this.counter++,\n target: definition.target,\n screen: definition.screen,\n definition: response.data,\n })\n }, 0) // I don't even know... but Muuri complains if this isn't in a setTimeout\n })\n })\n .then(() => {\n setTimeout(this.refreshLayout, 0) // Muuri probably stacked some, so refresh that\n })\n }\n },\n saveConfiguration: function (name) {\n localStorage['lastconfig__telemetry_viewer'] = name\n const gridItems = this.grid.getItems().map((item) => item.getElement().id) // TODO: this order isn't reliable for some reason\n const config = this.definitions\n .sort((a, b) => {\n // Sort by their current position on the page\n return gridItems.indexOf(this.screenId(a)) >\n gridItems.indexOf(this.screenId(b))\n ? -1\n : 1\n })\n .map((def) => {\n return {\n screen: def.screen,\n target: def.target,\n }\n })\n this.api.save_config(this.toolName, name, JSON.stringify(config))\n },\n },\n}\n</script>\n\n<style scoped>\n.grid {\n position: relative;\n}\n.item {\n position: absolute;\n display: block;\n margin: 5px;\n z-index: 1;\n}\n.item.muuri-item-dragging {\n z-index: 3;\n}\n.item.muuri-item-releasing {\n z-index: 2;\n}\n.item.muuri-item-hidden {\n z-index: 0;\n}\n.item-content {\n position: relative;\n cursor: pointer;\n border-radius: 6px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmViewer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmViewer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TlmViewer.vue?vue&type=template&id=633418c4&scoped=true&\"\nimport script from \"./TlmViewer.vue?vue&type=script&lang=js&\"\nexport * from \"./TlmViewer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TlmViewer.vue?vue&type=style&index=0&id=633418c4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"633418c4\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-3eb9665d]{font-weight:700;text-transform:capitalize}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#chart[data-v-bfba4026]{background-color:var(--v-tertiary-darken2)}#chart[data-v-bfba4026] .u-legend{text-align:left}#chart[data-v-bfba4026] .u-inline{max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content}#chart[data-v-bfba4026] .u-select{background-color:hsla(0,0%,100%,.07)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-list[data-v-e3bb7458] .v-label{margin-left:5px}.v-list-item__icon[data-v-e3bb7458]{margin-right:15px!important}.v-list-item__title[data-v-e3bb7458]{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".value[data-v-3369b22f] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-3369b22f] input{color:#009600}.cosmos-yellow[data-v-3369b22f] input{color:#be8700}.cosmos-red[data-v-3369b22f] input{color:red}.cosmos-blue[data-v-3369b22f] input{color:#0064ff}.cosmos-purple[data-v-3369b22f] input{color:#c800c8}.cosmos-black[data-v-3369b22f] input{color:#000}.cosmos-white[data-v-3369b22f] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-textarea[data-v-401cb124] textarea{font-family:Courier New,Courier,monospace}.value[data-v-401cb124] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-401cb124] input{color:#009600}.cosmos-yellow[data-v-401cb124] input{color:#be8700}.cosmos-red[data-v-401cb124] input{color:red}.cosmos-blue[data-v-401cb124] input{color:#0064ff}.cosmos-purple[data-v-401cb124] input{color:#c800c8}.cosmos-black[data-v-401cb124] input{color:#000}.cosmos-white[data-v-401cb124] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-banner[data-v-490e35ec] div{background-color:var(--v-tertiary-darken2)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-1ff40000]{font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);font-style:var(--font-style)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".led[data-v-1d5674e7]{height:var(--height);width:var(--width);background-color:var(--color);border-radius:50%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".led[data-v-348c2b1c]{height:var(--height);width:var(--width);background-color:var(--color);border-radius:50%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".value[data-v-580e657e] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-580e657e] input{color:#009600}.cosmos-yellow[data-v-580e657e] input{color:#be8700}.cosmos-red[data-v-580e657e] input{color:red}.cosmos-blue[data-v-580e657e] input{color:#0064ff}.cosmos-purple[data-v-580e657e] input{color:#c800c8}.cosmos-black[data-v-580e657e] input{color:#000}.cosmos-white[data-v-580e657e] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-banner[data-v-818decfa] div{background-color:var(--v-tertiary-darken2)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-card[data-v-dc9e830a]{background-color:var(--v-tertiary-darken2)}.v-textarea[data-v-dc9e830a] textarea{padding:5px;background-color:var(--v-tertiary-darken1)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".grid[data-v-633418c4]{position:relative}.item[data-v-633418c4]{position:absolute;display:block;margin:5px;z-index:1}.item.muuri-item-dragging[data-v-633418c4]{z-index:3}.item.muuri-item-releasing[data-v-633418c4]{z-index:2}.item.muuri-item-hidden[data-v-633418c4]{z-index:0}.item-content[data-v-633418c4]{position:relative;cursor:pointer;border-radius:6px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"svg[data-v-a508bc5c]{background-color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".limitsbar[data-v-4d506ea0]{cursor:default;display:flex;justify-content:center;align-items:center;padding:5px;width:var(--width)}.limitsbar__container[data-v-4d506ea0]{position:relative;flex:1;height:var(--container-height);border:1px solid #000;background-color:#fff}.limitsbar__redlow[data-v-4d506ea0]{left:0;width:var(--redlow-width)}.limitsbar__redhigh[data-v-4d506ea0],.limitsbar__redlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:red}.limitsbar__redhigh[data-v-4d506ea0]{right:0;width:var(--redhigh-width)}.limitsbar__yellowlow[data-v-4d506ea0]{left:var(--redlow-width);width:var(--yellowlow-width)}.limitsbar__yellowhigh[data-v-4d506ea0],.limitsbar__yellowlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:#ffdc00}.limitsbar__yellowhigh[data-v-4d506ea0]{right:var(--redhigh-width);width:var(--yellowhigh-width)}.limitsbar__greenlow[data-v-4d506ea0]{left:calc(var(--redlow-width) + var(--yellowlow-width));width:var(--greenlow-width)}.limitsbar__greenhigh[data-v-4d506ea0],.limitsbar__greenlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:green}.limitsbar__greenhigh[data-v-4d506ea0]{right:calc(var(--redhigh-width) + var(--yellowhigh-width));width:var(--greenhigh-width)}.limitsbar__blue[data-v-4d506ea0]{top:-1px;left:calc(var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width));width:var(--blue-width);background-color:blue}.limitsbar__blue[data-v-4d506ea0],.limitsbar__line[data-v-4d506ea0]{position:absolute;height:var(--container-height)}.limitsbar__line[data-v-4d506ea0]{left:var(--position);width:1px;background-color:gray}.limitsbar__arrow[data-v-4d506ea0]{position:absolute;top:-5px;left:var(--position);width:0;height:0;-webkit-transform:translateX(-5px);transform:translateX(-5px);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid gray}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".limitsbar[data-v-5f237a99]{cursor:default;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:5px;height:var(--height)}.limitsbar__container[data-v-5f237a99]{position:relative;flex:1 1 100%;width:var(--container-width);border:1px solid #000;background-color:#fff}.limitsbar__redlow[data-v-5f237a99]{bottom:0;height:var(--redlow-height)}.limitsbar__redhigh[data-v-5f237a99],.limitsbar__redlow[data-v-5f237a99]{position:absolute;width:var(--container-width);background-color:red}.limitsbar__redhigh[data-v-5f237a99]{top:0;height:var(--redhigh-height)}.limitsbar__yellowlow[data-v-5f237a99]{bottom:var(--redlow-height);height:var(--yellowlow-height)}.limitsbar__yellowhigh[data-v-5f237a99],.limitsbar__yellowlow[data-v-5f237a99]{position:absolute;width:var(--container-width);background-color:#ffdc00}.limitsbar__yellowhigh[data-v-5f237a99]{top:var(--redhigh-height);height:var(--yellowhigh-height)}.limitsbar__greenlow[data-v-5f237a99]{bottom:calc(var(--redlow-height) + var(--yellowlow-height));height:var(--greenlow-height)}.limitsbar__greenhigh[data-v-5f237a99],.limitsbar__greenlow[data-v-5f237a99]{position:absolute;width:var(--container-width);background-color:green}.limitsbar__greenhigh[data-v-5f237a99]{top:calc(var(--redhigh-height) + var(--yellowhigh-height));height:var(--greenhigh-height)}.limitsbar__blue[data-v-5f237a99]{bottom:calc(var(--redlow-height) + var(--yellowlow-height) + var(--greenlow-height));height:var(--blue-height);background-color:blue}.limitsbar__blue[data-v-5f237a99],.limitsbar__line[data-v-5f237a99]{position:absolute;width:var(--container-width)}.limitsbar__line[data-v-5f237a99]{bottom:var(--position);height:1px;background-color:gray}.limitsbar__arrow[data-v-5f237a99]{position:absolute;bottom:var(--position);left:var(--container-width);width:0;height:0;-webkit-transform:translateY(5px);transform:translateY(5px);border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid gray}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rangebar[data-v-3ec94604]{cursor:default;display:flex;justify-content:center;align-items:center;padding:5px;width:var(--width)}.rangebar__container[data-v-3ec94604]{position:relative;flex:1;height:var(--container-height);border:1px solid #000;background-color:#fff}.rangebar__line[data-v-3ec94604]{width:1px;height:var(--container-height);background-color:gray}.rangebar__arrow[data-v-3ec94604],.rangebar__line[data-v-3ec94604]{position:absolute;left:var(--position)}.rangebar__arrow[data-v-3ec94604]{top:-5px;width:0;height:0;-webkit-transform:translateX(-5px);transform:translateX(-5px);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid gray}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".value-widget-container[data-v-d1470e40]{min-height:34px}.value[data-v-d1470e40] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-d1470e40] input{color:#009600}.cosmos-yellow[data-v-d1470e40] input{color:#be8700}.cosmos-red[data-v-d1470e40] input{color:red}.cosmos-blue[data-v-d1470e40] input{color:#0064ff}.cosmos-purple[data-v-d1470e40] input{color:#c800c8}.cosmos-black[data-v-d1470e40] input{color:#000}.cosmos-white[data-v-d1470e40] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7c1e213a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Graph.vue?vue&type=style&index=0&id=bfba4026&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"70802780\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"a2f2c426\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrayWidget.vue?vue&type=style&index=0&id=3369b22f&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"094f0f8e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BlockWidget.vue?vue&type=style&index=0&id=401cb124&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7e113069\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HorizontalboxWidget.vue?vue&type=style&index=0&id=490e35ec&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1abcb262\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=style&index=0&id=1ff40000&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"27aab41a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LedWidget.vue?vue&type=style&index=0&id=1d5674e7&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8e0203fe\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolorWidget.vue?vue&type=style&index=0&id=348c2b1c&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8ddb8b54\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextboxWidget.vue?vue&type=style&index=0&id=580e657e&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b5b42bf6\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerticalboxWidget.vue?vue&type=style&index=0&id=818decfa&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6786983a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CosmosScreen.vue?vue&type=style&index=0&id=dc9e830a&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1b5a8fcc\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmViewer.vue?vue&type=style&index=0&id=633418c4&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"07bd2359\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CanvasWidget.vue?vue&type=style&index=0&id=a508bc5c&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0706837e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=style&index=0&id=4d506ea0&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"fbeb2792\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitscolumnWidget.vue?vue&type=style&index=0&id=5f237a99&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"799e0f5c\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RangebarWidget.vue?vue&type=style&index=0&id=3ec94604&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5358f44c\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=style&index=0&id=d1470e40&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10f1e48f\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","mixins","data","api","screen","displaySendHazardous","lastCmd","computed","buttonText","eval","created","methods","onClick","lines","result","then","catch","sendHazardousCmd","cancelHazardousCmd","props","target","type","String","require","getPresignedUrl","fileName","Api","encodeURIComponent","localStorage","scope","this","response","url","Widget","widgets","Array","default","value","limitsState","formatString","valueId","colorBlind","viewDetails","contextMenuShown","x","y","contextMenuOptions","title","action","window","open","parameters","_value","$store","state","tlmViewerValues","formatted","formatValue","colorblindMode","limitsLetter","valueClass","limitsColor","c","charAt","endsWith","toLowerCase","getType","commit","destroyed","prototype","toString","call","slice","i","length","sprintf","showContextMenu","preventDefault","clientX","clientY","$nextTick","widgetIndex","Number","settings","computedStyle","style","forEach","setting","index","parseInt","getColor","originalWidthSetting","width","resetWidth","beforeUpdate","some","unshift","request","method","params","headers","noAuth","noScope","CosmosAuth","updateToken","defaultMinValidity","login","cosmosToken","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","use","error","status","href","body","statusText","config","message","exception","class","$notify","serious","Cable","_cable","ActionCable","disconnect","channel","callbacks","additionalOptions","subscriptions","create","token","CosmosApi","kwparams","jsonrpc","keyword_params","Authorization","err","name","val","json_class","raw","NaN","Infinity","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","packet","item","log_writer_name","limits_set","target_name","packet_name","value_type","len","converted","decode_cosmos_type","items","item_name","command_name","parameter_name","param_list","key","hasOwnProperty","encode_cosmos_type","undefined","_cmd","tool","ignored","array","render","_vm","_h","$createElement","_c","_self","attrs","model","callback","$$v","show","expression","_v","_s","targetName","packetName","itemName","details","description","staticClass","rawValue","convertedValue","formattedValue","unitsValue","_e","bit_offset","bit_size","array_size","data_type","minimum","maximum","format_string","read_conversion","write_conversion","id_value","units_full","units","endianness","_l","limit","formatLimit","staticRenderFns","validator","updater","set","beforeDestroy","clearInterval","watch","get_tlm_values","requestDetails","get_item","get_parameter","component","height","on","$event","stopPropagation","apply","arguments","components","DetailsDialog","itemsPerRow","formatter","text","count","bytesPerWord","wordsPerRow","addrFormat","addr","byteCount","widget","_g","tag","$listeners","imageUrl","image","directives","rawName","selectedValue","defaultImage","images","showDefault","immediate","handler","filter","Promise","fillColor","fontSize","calcStyle","color","label","checked","widgetType","_b","assign","$props","$attrs","mounted","System","self","ref","getParameters","ValueWidget","join","HorizontalWidget","src","itemFullName","cable","subscription","imageData","valueType","get_tlm_packet","finally","received","subscribe","createSubscription","connected","mode","disconnected","rejected","cssProps","labelText","fontFamily","fontWeight","fontStyle","size","labelName","LabelWidget","LedWidget","ProgressbarWidget","defaultStyle","limitsBarParameters","LabelvalueWidget","LimitsbarWidget","overallWidth","limitsColumnParameters","LimitscolumnWidget","labelValueParameters","RangebarWidget","colors","TRUE","FALSE","_m","minValue","maxValue","scale","redLow","yellowLow","greenLow","greenHigh","yellowHigh","redHigh","blue","limitsSettings","DEFAULT","currentLimitsSet","currentSetRefreshInterval","selectedLimitsSet","DEFAULT_LIMITS_SET","get_limits","modifyLimits","divisor","calcPosition","lowValue","highValue","calcLimits","getCurrentLimitsSet","radius","fullLabelDisplay","secondsGraphed","pointsSaved","pointsGraphed","nativeOn","$emit","hideSystemBar","selectedGraphId","errors","scopedSlots","_u","fn","errorDialog","editGraph","collapseAll","calcFullSize","expandAll","collapseWidth","fullWidth","expandWidth","collapseHeight","fullHeight","expandHeight","minMaxTransition","expand","hideOverview","indexOf","_k","keyCode","editGraphClose","graphStartDateTime","graphEndDateTime","graphMinY","graphMaxY","itemHeaders","editItems","removeItems","proxy","clearErrors","editGraphMenuX","editGraphMenuY","editGraphMenu","staticStyle","editItem","valueTypes","currentType","closeEditItem","itemMenuX","itemMenuY","itemMenu","openEditItem","selectedItem","dateLabel","Date","now","dateRules","date","timeLabel","timeRules","onChange","time","required","initialDate","initialTime","rules","isValid","DateTimeChooser","startTime","initialItems","sortable","active","graph","overview","indexes","drawInterval","zoomChart","zoomOverview","needToUpdate","itemId","spanGaps","stroke","seriesObj","commonProps","chartSeries","overviewSeries","series","v","cursor","drag","sync","hooks","setScale","left","ready","canvas","legend","seriesEl","chartOpts","document","points","setSelect","chart","min","max","overviewOpts","handleResize","resize","setGraphRange","pad","getSize","navDrawer","Math","navDrawerWidth","getScales","scales","range","u","dataMin","dataMax","getAxes","strokeColor","axisColor","axes","grid","changeType","addItems","itemArray","addItemsToSubscription","endTime","start_time","end_time","removeItemsFromSubscription","reorderIndexes","bs_comparator","set_data_at_index","subscriptionKey","Graph","chunk","rindex","cindex","columns","widgetChunks","ceil","scaleFactor","selectedIndex","selected","scrollwindowStyle","VerticalboxWidget","maxHeight","curTab","tab","tabIndex","fullName","valueParameters","VerticalWidget","contentStyle","menus","targets","targetSelect","selectedTarget","screens","screenSelect","selectedScreen","showScreen","def","refInFor","screenId","definition","closeScreen","refreshLayout","toolName","openConfiguration","openConfig","saveConfiguration","saveConfig","openEdit","layoutStack","editDialog","downloadScreen","file","loadingFile","loadFile","currentDefinition","domProps","editErrors","cancelEdit","saveEdit","ConfigParserError","config_parser","usage","keyword","filename","line","line_number","ConfigParserService","min_num_params","max_num_params","string","first_char","last_char","substring","rx","global","r","replace","match","push","input_string","original_filename","yield_non_keyword_lines","remove_quotes","line_continuation","split","numLines","trim","scan_string","first_item","toUpperCase","requireComponent","camelCase","pop","componentName","backup","configParser","currentLayout","namedWidgets","fixed","globalSettings","globalSubsettings","substitute","original_target_name","force_substitute","pollingPeriod","errorCaptured","vm","info","refreshInterval","parseDefinition","get_named_widget","setNamedWidget","update","fileReader","that","link","processWidget","widgetName","applyGlobalSettings","cancel","success","search","configs","itemSelected","slot","select","deleteConfig","align","list_configs","configId","confirm","okText","cancelText","configName","menu","formatDT","radioGroup","option","j","disabled","command","icon","radio","checkbox","CosmosScreen","TopBar","OpenConfigDialog","SaveConfigDialog","counter","definitions","get_target_list","dragEnabled","dragHandle","updateScreens","loadScreen","pushScreen","setTimeout","configResponse","JSON","loadScreenPromises","sort","gridItems","___CSS_LOADER_EXPORT___","content","__esModule","locals","add"],"sourceRoot":""}