d2aura 26.0.14 → 26.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/eda/edaManagerApi.d.ts +7 -3
- package/api/eda/edaManagerApi.js +28 -2
- package/api/eda/edaManagerApi.js.map +1 -1
- package/api/eda/generated/events.d.ts +93 -62
- package/api/eda/generated/events.js +146 -88
- package/api/eda/generated/events.js.map +1 -1
- package/api/eda/generated/structures.d.ts +99 -86
- package/api/eda/generated/structures.js.map +1 -1
- package/api/types/advancedFilter.d.ts +3 -0
- package/api/types/advancedFilter.js.map +1 -1
- package/api/webPush/webPushApi.js.map +1 -1
- package/api/webPush/webPushUtils.js.map +1 -1
- package/core/i18n/d2aura.en.json +14 -0
- package/core/i18n/d2aura.sk.json +62 -0
- package/coreui/abstractListPanel.d.ts +2 -1
- package/coreui/abstractListPanel.js +5 -1
- package/coreui/abstractListPanel.js.map +1 -1
- package/coreui/components/advancedFilter/advancedFilterButton.d.ts +2 -2
- package/coreui/components/advancedFilter/advancedFilterButton.js.map +1 -1
- package/coreui/components/advancedFilter/advancedFilteredGrid.d.ts +3 -2
- package/coreui/components/advancedFilter/advancedFilteredGrid.js +9 -1
- package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.d.ts +2 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js.map +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.d.ts +2 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.js.map +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.d.ts +2 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js +10 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map +1 -1
- package/coreui/components/d2Chart/d2ChartAdvancedZoom.d.ts +25 -0
- package/coreui/components/d2Chart/d2ChartAdvancedZoom.js +197 -0
- package/coreui/components/d2Chart/d2ChartAdvancedZoom.js.map +1 -0
- package/coreui/components/d2Chart/d2ChartPanel.d.ts +2 -0
- package/coreui/components/d2Chart/d2ChartPanel.js +9 -2
- package/coreui/components/d2Chart/d2ChartPanel.js.map +1 -1
- package/coreui/components/d2Chart/d2ChartToolboxPanel.d.ts +1 -0
- package/coreui/components/d2Chart/d2ChartToolboxPanel.js +2 -2
- package/coreui/components/d2Chart/d2ChartToolboxPanel.js.map +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaChartViewer.js +23 -19
- package/coreui/components/edaManagerComponent/components/edaChartViewer.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +1 -1
- package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +15 -18
- package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.d.ts +11 -3
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js +31 -24
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaTablePanel.js +116 -95
- package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +5 -0
- package/coreui/components/edaManagerComponent/components/edaTreeView.js +189 -60
- package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +1 -1
- package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/constants/actionTypes.d.ts +5 -0
- package/coreui/components/edaManagerComponent/constants/actionTypes.js +7 -0
- package/coreui/components/edaManagerComponent/constants/actionTypes.js.map +1 -0
- package/coreui/components/edaManagerComponent/constants/edaTypes.d.ts +13 -0
- package/coreui/components/edaManagerComponent/constants/edaTypes.js +15 -0
- package/coreui/components/edaManagerComponent/constants/edaTypes.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +1 -0
- package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js +8 -1
- package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +31 -38
- package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.d.ts +6 -1
- package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js +8 -1
- package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/useEdaActions.d.ts +5 -3
- package/coreui/components/edaManagerComponent/context/useEdaActions.js +21 -7
- package/coreui/components/edaManagerComponent/context/useEdaActions.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.d.ts +13 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js +19 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.d.ts +8 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js +171 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.d.ts +22 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js +75 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.d.ts +12 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js +52 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.d.ts +22 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js +130 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.d.ts +58 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js +51 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.d.ts +18 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js +74 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.d.ts +38 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js +299 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.d.ts +10 -0
- package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js +343 -0
- package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/{components → dialogs}/edaTableEditorDialog.js +1 -1
- package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/{components → dialogs}/exportDialog.d.ts +2 -2
- package/coreui/components/edaManagerComponent/{components → dialogs}/exportDialog.js +7 -8
- package/coreui/components/edaManagerComponent/dialogs/exportDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.d.ts +12 -0
- package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js +74 -0
- package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.d.ts +16 -0
- package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js +32 -0
- package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/edaDetail.js +21 -7
- package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
- package/coreui/components/edaManagerComponent/edaNavigator.d.ts +2 -0
- package/coreui/components/edaManagerComponent/edaNavigator.js +4 -4
- package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
- package/coreui/components/edaManagerComponent/edaSelect.d.ts +2 -0
- package/coreui/components/edaManagerComponent/edaSelect.js +13 -13
- package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
- package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.d.ts +6 -0
- package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js +7 -0
- package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js.map +1 -0
- package/coreui/components/edaManagerComponent/utils/export.d.ts +1 -1
- package/coreui/components/edaManagerComponent/utils/export.js +20 -23
- package/coreui/components/edaManagerComponent/utils/export.js.map +1 -1
- package/coreui/components/select/abstractMultiSelect.d.ts +32 -0
- package/coreui/components/select/abstractMultiSelect.js +126 -0
- package/coreui/components/select/abstractMultiSelect.js.map +1 -0
- package/coreui/components/select/abstractSelectModalDialog.d.ts +5 -0
- package/coreui/components/select/abstractSelectModalDialog.js +45 -5
- package/coreui/components/select/abstractSelectModalDialog.js.map +1 -1
- package/coreui/components/webPush/webPushSwitch.js.map +1 -1
- package/coreui/images/logo.svg +9 -9
- package/coreui/images/logo_full.svg +11 -11
- package/d2configuration/edaManager/{DB.EM_EDA_DescriptiveVector.xml → DB.EM_EDA_VectorScenario.xml} +10 -10
- package/d2configuration/edaManager/E.EM_DETAIL_IMPL.xml +4 -4
- package/d2configuration/edaManager/E.EM_DETAIL_UNIT.xml +35 -15
- package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +13 -5
- package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +12 -1
- package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +113 -5
- package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +11 -1
- package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +25 -1
- package/d2configuration/edaManager/{SD.EM_EDA_StatVectorRec_V1.xml → SD.EM_EDA_VectorScenario.xml} +13 -36
- package/package.json +2 -2
- package/coreui/components/edaManagerComponent/components/edaTableEditorDialog.js.map +0 -1
- package/coreui/components/edaManagerComponent/components/exportDialog.js.map +0 -1
- package/d2configuration/edaManager/SD.EM_EDA_DescriptiveVector.xml +0 -179
- package/d2configuration/edaManager/SD.EM_EDA_InsertValuesToVector_V1.xml +0 -227
- package/d2configuration/edaManager/SD.EM_EDA_ReadValuesFromVector_V1.xml +0 -178
- package/d2configuration/edaManager/SD.EM_EDA_VectorValues.xml +0 -58
- /package/coreui/components/edaManagerComponent/{components → dialogs}/edaTableEditorDialog.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaManagerAbstractPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/abstract/edaManagerAbstractPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {EdaApi, EdaManagerRecord, EdaStepEnum, EdaVector} from \"../../../../api/edaApi\";\r\nimport EdaManagerTimePanel, {EdaManagerTimePanelConfiguration} from \"../components/edaManagerTimePanel\";\r\nimport * as FlexLayout from \"flexlayout-react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport debounce from \"lodash/debounce\";\r\nimport EdaManagerTablePanel from \"../components/edaManagerTablePanel\";\r\nimport D2ChartPanel, {D2ChartPanelProps} from \"../../d2Chart/d2ChartPanel\";\r\nimport {isEqual, omit} from \"lodash\";\r\nimport {D2ChartSeriesItem} from \"../../../../api/types/d2ChartTypes\";\r\nimport {ArchiveApi} from \"../../../../api/archiveApi\";\r\nimport {EdaManagerArchiveValue} from \"../compactPanel/edaManagerCompactPanel\";\r\n\r\nconst CONFIGURATION_VERSION = 2;\r\n\r\nexport interface EdaManagerFilterToSave {\r\n version: number\r\n currentVectors: EdaVector[]\r\n timeFrom: string\r\n timeTo: string;\r\n\r\n selectedStep: EdaStepEnum\r\n autoRefresh: boolean\r\n}\r\n\r\nexport interface EdaManagerFilter {\r\n currentArchiveValues?: EdaManagerArchiveValue[]\r\n currentVectors?: EdaVector[]\r\n timePanelConfiguration: EdaManagerTimePanelConfiguration\r\n}\r\n\r\nexport interface EdaManagerAbstractPanelProps extends Omit<D2ChartPanelProps, \"d2ChartSeries\" | \"d2ChartRecords\" | \"d2ChartCalendarRecords\" | \"loading\"> {\r\n style?: React.CSSProperties\r\n\r\n archiveApi?: ArchiveApi\r\n edaApi?: EdaApi\r\n\r\n onVectorsLoaded?(loadedVectors: EdaManagerRecord[]): void\r\n}\r\n\r\nexport interface EdaManagerAbstractPanelState {\r\n layoutModel: FlexLayout.Model\r\n loadedVectors: EdaManagerRecord[]\r\n loadedCalendarVector?: EdaManagerRecord[]\r\n loading: boolean\r\n\r\n currentFilter: EdaManagerFilter\r\n loadedDataFilter: EdaManagerFilter\r\n}\r\n\r\nexport default abstract class EdaManagerAbstractPanel<P extends EdaManagerAbstractPanelProps, S extends EdaManagerAbstractPanelState> extends React.Component<P, S> {\r\n private edaManagerTablePanel: EdaManagerTablePanel | null = null;\r\n private edaManagerChartPanel: D2ChartPanel | null = null;\r\n\r\n protected get initialFilter(): EdaManagerFilter {\r\n return {\r\n currentVectors: [],\r\n timePanelConfiguration: {\r\n selectedTimeFrom: dayjs().subtract(1, \"week\").startOf(\"day\"),\r\n selectedTimeTo: dayjs().subtract(1, \"week\").startOf(\"day\"),\r\n selectedStep: EdaStepEnum.DEFAULT_VALUE,\r\n autoRefresh: false,\r\n }\r\n }\r\n }\r\n\r\n protected initialState: Omit<EdaManagerAbstractPanelState, \"layoutModel\"> = {\r\n loadedVectors: [],\r\n loading: false,\r\n\r\n currentFilter: this.initialFilter,\r\n loadedDataFilter: cloneDeep(this.initialFilter),\r\n }\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadVectors = debounce(this.onLoadVectors.bind(this), 500);\r\n this.flexLayoutFactory = this.flexLayoutFactory.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const filterNameToSave = this.getFilterNameToSave();\r\n\r\n if (filterNameToSave) {\r\n const item = localStorage.getItem(filterNameToSave);\r\n\r\n if (item) {\r\n try {\r\n const savedFilter: EdaManagerFilterToSave = JSON.parse(item);\r\n if (savedFilter.version === CONFIGURATION_VERSION) {\r\n const filter: EdaManagerFilter = {\r\n currentVectors: savedFilter.currentVectors,\r\n timePanelConfiguration: {\r\n selectedTimeFrom: dayjs(savedFilter.timeFrom),\r\n selectedTimeTo: dayjs(savedFilter.timeTo),\r\n selectedStep: savedFilter.selectedStep,\r\n autoRefresh: savedFilter.autoRefresh,\r\n }\r\n }\r\n\r\n this.setState({currentFilter: filter}, () => this.onLoadVectors());\r\n }\r\n } catch {\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected saveFilter() {\r\n const filterNameToSave = this.getFilterNameToSave();\r\n\r\n if (filterNameToSave) {\r\n const filterToSave: EdaManagerFilterToSave = {\r\n version: CONFIGURATION_VERSION,\r\n currentVectors: this.state.currentFilter.currentVectors!,\r\n timeFrom: this.state.currentFilter.timePanelConfiguration.selectedTimeFrom?.toString() ?? \"\",\r\n timeTo: this.state.currentFilter.timePanelConfiguration.selectedTimeTo?.toString() ?? \"\",\r\n selectedStep: this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n autoRefresh: this.state.currentFilter.timePanelConfiguration.autoRefresh,\r\n }\r\n\r\n localStorage.setItem(filterNameToSave, JSON.stringify(filterToSave));\r\n }\r\n }\r\n\r\n getFilterNameToSave(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n protected getActiveArchiveValues(): EdaManagerArchiveValue[] | undefined {\r\n return this.state.currentFilter.currentArchiveValues;\r\n }\r\n\r\n protected getActiveVectors(): EdaVector[] | undefined {\r\n return this.state.currentFilter.currentVectors?.filter(vector => vector.active);\r\n }\r\n\r\n protected onReload() {\r\n this.edaManagerTablePanel?.onReload();\r\n this.edaManagerChartPanel?.onReload();\r\n }\r\n\r\n async onLoadVectors() {\r\n const activeArchiveValues = this.getActiveArchiveValues();\r\n const activeVectors = this.getActiveVectors();\r\n\r\n let loadedVectors: EdaManagerRecord[] = [];\r\n let loadedCalendarVector: EdaManagerRecord[] | undefined;\r\n\r\n this.setState({loading: true});\r\n\r\n if (activeArchiveValues) {\r\n loadedVectors = await this.props.archiveApi!.getArchiveData(\r\n activeArchiveValues.map(value => value.objectName),\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n Number(this.state.currentFilter.timePanelConfiguration.selectedStep),\r\n ) as EdaManagerRecord[];\r\n } else if (activeVectors) {\r\n loadedVectors = await this.props.edaApi!.loadVectors(\r\n activeVectors,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n );\r\n\r\n loadedCalendarVector = await this.props.edaApi!.loadCalendarVector(\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n );\r\n }\r\n\r\n\r\n this.setState({\r\n loading: false,\r\n loadedVectors: loadedVectors,\r\n loadedCalendarVector: loadedCalendarVector,\r\n loadedDataFilter: cloneDeep(this.state.currentFilter),\r\n }, () => this.onReload());\r\n\r\n this.props.onVectorsLoaded?.(loadedVectors);\r\n }\r\n\r\n private async onLoadVector(code: string) {\r\n const activeVectors = this.getActiveVectors();\r\n const currentVectorIndex = activeVectors!.findIndex(value => value.code === code);\r\n\r\n if (currentVectorIndex >= 0) {\r\n const currentVector = activeVectors![currentVectorIndex];\r\n const loadedVectors = this.state.loadedVectors;\r\n\r\n const loadedVector = await this.props.edaApi!.loadVectors(\r\n [currentVector],\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n );\r\n\r\n loadedVectors.forEach((value, index) => {\r\n value[`col${currentVectorIndex}`] = loadedVector[index].col0;\r\n });\r\n\r\n this.setState({loadedVectors: loadedVectors});\r\n\r\n this.edaManagerTablePanel?.refreshCells();\r\n this.edaManagerChartPanel?.onReload();\r\n }\r\n }\r\n\r\n protected renderTimePanel() {\r\n const pathsToOmit = [\"timePanelConfiguration.autoRefresh\"];\r\n this.state.currentFilter.currentVectors?.forEach((_, index) => {\r\n pathsToOmit.push(`currentVectors[${index}].target`);\r\n });\r\n\r\n const filterChanged = !isEqual(\r\n omit(cloneDeep(this.state.currentFilter), pathsToOmit),\r\n omit(cloneDeep(this.state.loadedDataFilter), pathsToOmit)\r\n );\r\n\r\n return (\r\n <EdaManagerTimePanel\r\n loading={this.state.loading}\r\n configuration={this.state.currentFilter.timePanelConfiguration}\r\n filterChanged={filterChanged}\r\n onChangeConfiguration={configuration => {\r\n const currentFilter = this.state.currentFilter;\r\n const timePanelConfiguration = currentFilter.timePanelConfiguration;\r\n Object.assign(timePanelConfiguration, configuration);\r\n this.setState({currentFilter: currentFilter}, () => {\r\n this.saveFilter();\r\n if (timePanelConfiguration.autoRefresh) {\r\n this.onLoadVectors();\r\n }\r\n });\r\n }}\r\n onReload={() => {\r\n this.onLoadVectors();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected get edaManagerChartPanelCompact(): boolean {\r\n return false;\r\n }\r\n\r\n protected get tabWrapperStyle(): React.CSSProperties {\r\n return {padding: \"8px 12px\"}\r\n }\r\n\r\n protected flexLayoutFactory(node: FlexLayout.TabNode): React.ReactNode {\r\n const component = node.getComponent();\r\n const activeArchiveValues = this.getActiveArchiveValues();\r\n const activeVectors = this.getActiveVectors();\r\n\r\n if (component === \"table\") {\r\n return (\r\n <EdaManagerTablePanel\r\n style={this.tabWrapperStyle}\r\n ref={component => this.edaManagerTablePanel = component}\r\n edaApi={this.props.edaApi}\r\n timePanel={this.renderTimePanel()}\r\n currentArchiveValues={activeArchiveValues}\r\n currentVectors={activeVectors}\r\n loadedVectors={this.state.loadedVectors}\r\n loading={this.state.loading}\r\n onReloadVectorData={code => {\r\n this.onLoadVector(code);\r\n }}\r\n />\r\n );\r\n } else if (component === \"chart\") {\r\n const d2ChartSeries: D2ChartSeriesItem[] =\r\n activeVectors?.map(value => {\r\n return {\r\n id: value.id,\r\n code: value.code,\r\n name: value.name,\r\n colorIndex: value.colorIndex,\r\n lineStyle: value.lineStyle,\r\n }\r\n }) ?? activeArchiveValues?.map((value, index) => {\r\n return {\r\n id: index,\r\n code: value.objectName,\r\n name: value.displayName ?? value.objectName,\r\n }\r\n }) ?? [];\r\n\r\n return (\r\n <div\r\n style={Object.assign(\r\n {display: \"flex\", flexDirection: \"column\", height: \"100%\"},\r\n this.tabWrapperStyle\r\n )}\r\n >\r\n {this.renderTimePanel()}\r\n <D2ChartPanel\r\n ref={component => this.edaManagerChartPanel = component}\r\n d2ChartSeries={d2ChartSeries}\r\n d2ChartRecords={this.state.loadedVectors}\r\n d2ChartCalendarRecords={this.state.loadedCalendarVector}\r\n loading={this.state.loading}\r\n compact={this.edaManagerChartPanelCompact}\r\n markArea={this.props.markArea}\r\n tableHeight={this.props.tableHeight}\r\n tableWrapperStyle={this.props.tableWrapperStyle}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n return <span>{component}</span>\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{minWidth: 100, minHeight: 500, ...this.props.style}}>\r\n <FlexLayout.Layout\r\n model={this.state.layoutModel}\r\n onModelChange={model => this.setState({layoutModel: model})}\r\n factory={this.flexLayoutFactory}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"edaManagerAbstractPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/abstract/edaManagerAbstractPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA2B,WAAW,EAAY,MAAM,wBAAwB,CAAC;AACxF,OAAO,mBAAuD,MAAM,mCAAmC,CAAC;AACxG,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,oBAAoB,MAAM,oCAAoC,CAAC;AACtE,OAAO,YAAiC,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,QAAQ,CAAC;AAKrC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAqChC,MAAM,CAAC,OAAO,OAAgB,uBAAwG,SAAQ,KAAK,CAAC,SAAe;IAI/J,IAAc,aAAa;QACvB,OAAO;YACH,cAAc,EAAE,EAAE;YAClB,sBAAsB,EAAE;gBACpB,gBAAgB,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC5D,cAAc,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1D,YAAY,EAAE,WAAW,CAAC,aAAa;gBACvC,WAAW,EAAE,KAAK;aACrB;SACJ,CAAA;IACL,CAAC;IAUD,YAAsB,KAAkB;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAxBT,yBAAoB,GAAgC,IAAI,CAAC;QACzD,yBAAoB,GAAwB,IAAI,CAAC;QAc/C,iBAAY,GAAsD;YACxE,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,KAAK;YAEd,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;SAClD,CAAA;QAMG,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB;QACb,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEpD,IAAI,gBAAgB,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEpD,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC;oBACD,MAAM,WAAW,GAA2B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7D,IAAI,WAAW,CAAC,OAAO,KAAK,qBAAqB,EAAE,CAAC;wBAChD,MAAM,MAAM,GAAqB;4BAC7B,cAAc,EAAE,WAAW,CAAC,cAAc;4BAC1C,sBAAsB,EAAE;gCACpB,gBAAgB,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;gCAC7C,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;gCACzC,YAAY,EAAE,WAAW,CAAC,YAAY;gCACtC,WAAW,EAAE,WAAW,CAAC,WAAW;6BACvC;yBACJ,CAAA;wBAED,IAAI,CAAC,QAAQ,CAAC,EAAC,aAAa,EAAE,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;oBACvE,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;gBACT,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAES,UAAU;QAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEpD,IAAI,gBAAgB,EAAE,CAAC;YACnB,MAAM,YAAY,GAA2B;gBACzC,OAAO,EAAE,qBAAqB;gBAC9B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAe;gBACxD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC5F,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACxF,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,YAAY;gBAC1E,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,WAAW;aAC3E,CAAA;YAED,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAED,mBAAmB;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,sBAAsB;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC;IACzD,CAAC;IAES,gBAAgB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC;IAES,QAAQ;QACd,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,aAAa;QACf,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9C,IAAI,aAAa,GAAuB,EAAE,CAAC;QAC3C,IAAI,oBAAoD,CAAC;QAEzD,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAE/B,IAAI,mBAAmB,EAAE,CAAC;YACtB,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAW,CAAC,cAAc,CACvD,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAClD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,EAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,cAAc,EAC9D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,YAAY,CAAC,CACjD,CAAC;QAC5B,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACvB,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAO,CAAC,WAAW,CAChD,aAAa,EACb,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,EAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,cAAc,EAC9D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,YAAY,CAC/D,CAAC;YAEF,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAO,CAAC,kBAAkB,CAC9D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,EAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,cAAc,CACjE,CAAC;QACN,CAAC;QAGD,IAAI,CAAC,QAAQ,CAAC;YACV,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,aAAa;YAC5B,oBAAoB,EAAE,oBAAoB;YAC1C,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SACxD,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAY;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,kBAAkB,GAAG,aAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAElF,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,aAAa,GAAG,aAAc,CAAC,kBAAkB,CAAC,CAAC;YACzD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAE/C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAO,CAAC,WAAW,CACrD,CAAC,aAAa,CAAC,EACf,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,EAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,cAAc,EAC9D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,YAAY,CAC/D,CAAC;YAEF,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnC,KAAK,CAAC,MAAM,kBAAkB,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,aAAa,EAAE,aAAa,EAAC,CAAC,CAAC;YAE9C,IAAI,CAAC,oBAAoB,EAAE,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC;QAC1C,CAAC;IACL,CAAC;IAES,eAAe;QACrB,MAAM,WAAW,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC1D,WAAW,CAAC,IAAI,CAAC,kBAAkB,KAAK,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,CAAC,OAAO,CAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,EACtD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,CAC5D,CAAC;QAEF,OAAO,CACH,oBAAC,mBAAmB,IAChB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,EAC9D,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,aAAa,CAAC,EAAE;gBACnC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC/C,MAAM,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAC;gBACpE,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,EAAC,aAAa,EAAE,aAAa,EAAC,EAAE,GAAG,EAAE;oBAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,IAAI,sBAAsB,CAAC,WAAW,EAAE,CAAC;wBACrC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACzB,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE;gBACX,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC,GACH,CACL,CAAC;IACN,CAAC;IAED,IAAc,2BAA2B;QACrC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAc,eAAe;QACzB,OAAO,EAAC,OAAO,EAAE,UAAU,EAAC,CAAA;IAChC,CAAC;IAES,iBAAiB,CAAC,IAAwB;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9C,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,CACH,oBAAC,oBAAoB,IACjB,KAAK,EAAE,IAAI,CAAC,eAAe,EAC3B,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,GAAG,SAAS,EACvD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,EACjC,oBAAoB,EAAE,mBAAmB,EACzC,cAAc,EAAE,aAAa,EAC7B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,kBAAkB,EAAE,IAAI,CAAC,EAAE;oBACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC,GACH,CACL,CAAC;QACN,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC/B,MAAM,aAAa,GACf,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;gBACvB,OAAO;oBACH,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC7B,CAAA;YACL,CAAC,CAAC,IAAI,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC5C,OAAO;oBACH,EAAE,EAAE,KAAK;oBACT,IAAI,EAAE,KAAK,CAAC,UAAU;oBACtB,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU;iBAC9C,CAAA;YACL,CAAC,CAAC,IAAI,EAAE,CAAC;YAEb,OAAO,CACH,6BACI,KAAK,EAAE,MAAM,CAAC,MAAM,CAChB,EAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAC,EAC1D,IAAI,CAAC,eAAe,CACvB;gBAEA,IAAI,CAAC,eAAe,EAAE;gBACvB,oBAAC,YAAY,IACT,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,GAAG,SAAS,EACvD,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACxC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EACvD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,OAAO,EAAE,IAAI,CAAC,2BAA2B,EACzC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GACjD,CACA,CACT,CAAA;QACL,CAAC;QAED,OAAO,kCAAO,SAAS,CAAQ,CAAA;IACnC,CAAC;IAED,MAAM;QACF,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC;YAC5D,oBAAC,UAAU,CAAC,MAAM,IACd,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC7B,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,WAAW,EAAE,KAAK,EAAC,CAAC,EAC3D,OAAO,EAAE,IAAI,CAAC,iBAAiB,GACjC,CACA,CACT,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport {EdaApi, EdaManagerRecord, EdaStepEnum, EdaVector} from \"../../../../api/edaApi\";\r\nimport EdaManagerTimePanel, {EdaManagerTimePanelConfiguration} from \"../components/edaManagerTimePanel\";\r\nimport * as FlexLayout from \"flexlayout-react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport debounce from \"lodash/debounce\";\r\nimport EdaManagerTablePanel from \"../components/edaManagerTablePanel\";\r\nimport D2ChartPanel, {D2ChartPanelProps} from \"../../d2Chart/d2ChartPanel\";\r\nimport {isEqual, omit} from \"lodash\";\r\nimport {D2ChartSeriesItem} from \"../../../../api/types/d2ChartTypes\";\r\nimport {ArchiveApi} from \"../../../../api/archiveApi\";\r\nimport {EdaManagerArchiveValue} from \"../compactPanel/edaManagerCompactPanel\";\r\n\r\nconst CONFIGURATION_VERSION = 2;\r\n\r\nexport interface EdaManagerFilterToSave {\r\n version: number\r\n currentVectors: EdaVector[]\r\n timeFrom: string\r\n timeTo: string;\r\n\r\n selectedStep: EdaStepEnum\r\n autoRefresh: boolean\r\n}\r\n\r\nexport interface EdaManagerFilter {\r\n currentArchiveValues?: EdaManagerArchiveValue[]\r\n currentVectors?: EdaVector[]\r\n timePanelConfiguration: EdaManagerTimePanelConfiguration\r\n}\r\n\r\nexport interface EdaManagerAbstractPanelProps extends Omit<D2ChartPanelProps, \"d2ChartSeries\" | \"d2ChartRecords\" | \"d2ChartCalendarRecords\" | \"loading\"> {\r\n style?: React.CSSProperties\r\n\r\n archiveApi?: ArchiveApi\r\n edaApi?: EdaApi\r\n\r\n onVectorsLoaded?(loadedVectors: EdaManagerRecord[]): void\r\n}\r\n\r\nexport interface EdaManagerAbstractPanelState {\r\n layoutModel: FlexLayout.Model\r\n loadedVectors: EdaManagerRecord[]\r\n loadedCalendarVector?: EdaManagerRecord[]\r\n loading: boolean\r\n\r\n currentFilter: EdaManagerFilter\r\n loadedDataFilter: EdaManagerFilter\r\n}\r\n\r\nexport default abstract class EdaManagerAbstractPanel<P extends EdaManagerAbstractPanelProps, S extends EdaManagerAbstractPanelState> extends React.Component<P, S> {\r\n private edaManagerTablePanel: EdaManagerTablePanel | null = null;\r\n private edaManagerChartPanel: D2ChartPanel | null = null;\r\n\r\n protected get initialFilter(): EdaManagerFilter {\r\n return {\r\n currentVectors: [],\r\n timePanelConfiguration: {\r\n selectedTimeFrom: dayjs().subtract(1, \"week\").startOf(\"day\"),\r\n selectedTimeTo: dayjs().subtract(1, \"week\").startOf(\"day\"),\r\n selectedStep: EdaStepEnum.DEFAULT_VALUE,\r\n autoRefresh: false,\r\n }\r\n }\r\n }\r\n\r\n protected initialState: Omit<EdaManagerAbstractPanelState, \"layoutModel\"> = {\r\n loadedVectors: [],\r\n loading: false,\r\n\r\n currentFilter: this.initialFilter,\r\n loadedDataFilter: cloneDeep(this.initialFilter),\r\n }\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadVectors = debounce(this.onLoadVectors.bind(this), 500);\r\n this.flexLayoutFactory = this.flexLayoutFactory.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const filterNameToSave = this.getFilterNameToSave();\r\n\r\n if (filterNameToSave) {\r\n const item = localStorage.getItem(filterNameToSave);\r\n\r\n if (item) {\r\n try {\r\n const savedFilter: EdaManagerFilterToSave = JSON.parse(item);\r\n if (savedFilter.version === CONFIGURATION_VERSION) {\r\n const filter: EdaManagerFilter = {\r\n currentVectors: savedFilter.currentVectors,\r\n timePanelConfiguration: {\r\n selectedTimeFrom: dayjs(savedFilter.timeFrom),\r\n selectedTimeTo: dayjs(savedFilter.timeTo),\r\n selectedStep: savedFilter.selectedStep,\r\n autoRefresh: savedFilter.autoRefresh,\r\n }\r\n }\r\n\r\n this.setState({currentFilter: filter}, () => this.onLoadVectors());\r\n }\r\n } catch {\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected saveFilter() {\r\n const filterNameToSave = this.getFilterNameToSave();\r\n\r\n if (filterNameToSave) {\r\n const filterToSave: EdaManagerFilterToSave = {\r\n version: CONFIGURATION_VERSION,\r\n currentVectors: this.state.currentFilter.currentVectors!,\r\n timeFrom: this.state.currentFilter.timePanelConfiguration.selectedTimeFrom?.toString() ?? \"\",\r\n timeTo: this.state.currentFilter.timePanelConfiguration.selectedTimeTo?.toString() ?? \"\",\r\n selectedStep: this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n autoRefresh: this.state.currentFilter.timePanelConfiguration.autoRefresh,\r\n }\r\n\r\n localStorage.setItem(filterNameToSave, JSON.stringify(filterToSave));\r\n }\r\n }\r\n\r\n getFilterNameToSave(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n protected getActiveArchiveValues(): EdaManagerArchiveValue[] | undefined {\r\n return this.state.currentFilter.currentArchiveValues;\r\n }\r\n\r\n protected getActiveVectors(): EdaVector[] | undefined {\r\n return this.state.currentFilter.currentVectors?.filter(vector => vector.active);\r\n }\r\n\r\n protected onReload() {\r\n this.edaManagerTablePanel?.onReload();\r\n this.edaManagerChartPanel?.onReload();\r\n }\r\n\r\n async onLoadVectors() {\r\n const activeArchiveValues = this.getActiveArchiveValues();\r\n const activeVectors = this.getActiveVectors();\r\n\r\n let loadedVectors: EdaManagerRecord[] = [];\r\n let loadedCalendarVector: EdaManagerRecord[] | undefined;\r\n\r\n this.setState({loading: true});\r\n\r\n if (activeArchiveValues) {\r\n loadedVectors = await this.props.archiveApi!.getArchiveData(\r\n activeArchiveValues.map(value => value.objectName),\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n Number(this.state.currentFilter.timePanelConfiguration.selectedStep),\r\n ) as EdaManagerRecord[];\r\n } else if (activeVectors) {\r\n loadedVectors = await this.props.edaApi!.loadVectors(\r\n activeVectors,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n );\r\n\r\n loadedCalendarVector = await this.props.edaApi!.loadCalendarVector(\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n );\r\n }\r\n\r\n\r\n this.setState({\r\n loading: false,\r\n loadedVectors: loadedVectors,\r\n loadedCalendarVector: loadedCalendarVector,\r\n loadedDataFilter: cloneDeep(this.state.currentFilter),\r\n }, () => this.onReload());\r\n\r\n this.props.onVectorsLoaded?.(loadedVectors);\r\n }\r\n\r\n private async onLoadVector(code: string) {\r\n const activeVectors = this.getActiveVectors();\r\n const currentVectorIndex = activeVectors!.findIndex(value => value.code === code);\r\n\r\n if (currentVectorIndex >= 0) {\r\n const currentVector = activeVectors![currentVectorIndex];\r\n const loadedVectors = this.state.loadedVectors;\r\n\r\n const loadedVector = await this.props.edaApi!.loadVectors(\r\n [currentVector],\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n );\r\n\r\n loadedVectors.forEach((value, index) => {\r\n value[`col${currentVectorIndex}`] = loadedVector[index].col0;\r\n });\r\n\r\n this.setState({loadedVectors: loadedVectors});\r\n\r\n this.edaManagerTablePanel?.refreshCells();\r\n this.edaManagerChartPanel?.onReload();\r\n }\r\n }\r\n\r\n protected renderTimePanel() {\r\n const pathsToOmit = [\"timePanelConfiguration.autoRefresh\"];\r\n this.state.currentFilter.currentVectors?.forEach((_, index) => {\r\n pathsToOmit.push(`currentVectors[${index}].target`);\r\n });\r\n\r\n const filterChanged = !isEqual(\r\n omit(cloneDeep(this.state.currentFilter), pathsToOmit),\r\n omit(cloneDeep(this.state.loadedDataFilter), pathsToOmit)\r\n );\r\n\r\n return (\r\n <EdaManagerTimePanel\r\n loading={this.state.loading}\r\n configuration={this.state.currentFilter.timePanelConfiguration}\r\n filterChanged={filterChanged}\r\n onChangeConfiguration={configuration => {\r\n const currentFilter = this.state.currentFilter;\r\n const timePanelConfiguration = currentFilter.timePanelConfiguration;\r\n Object.assign(timePanelConfiguration, configuration);\r\n this.setState({currentFilter: currentFilter}, () => {\r\n this.saveFilter();\r\n if (timePanelConfiguration.autoRefresh) {\r\n this.onLoadVectors();\r\n }\r\n });\r\n }}\r\n onReload={() => {\r\n this.onLoadVectors();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected get edaManagerChartPanelCompact(): boolean {\r\n return false;\r\n }\r\n\r\n protected get tabWrapperStyle(): React.CSSProperties {\r\n return {padding: \"8px 12px\"}\r\n }\r\n\r\n protected flexLayoutFactory(node: FlexLayout.TabNode): React.ReactNode {\r\n const component = node.getComponent();\r\n const activeArchiveValues = this.getActiveArchiveValues();\r\n const activeVectors = this.getActiveVectors();\r\n\r\n if (component === \"table\") {\r\n return (\r\n <EdaManagerTablePanel\r\n style={this.tabWrapperStyle}\r\n ref={component => this.edaManagerTablePanel = component}\r\n edaApi={this.props.edaApi}\r\n timePanel={this.renderTimePanel()}\r\n currentArchiveValues={activeArchiveValues}\r\n currentVectors={activeVectors}\r\n loadedVectors={this.state.loadedVectors}\r\n loading={this.state.loading}\r\n onReloadVectorData={code => {\r\n this.onLoadVector(code);\r\n }}\r\n />\r\n );\r\n } else if (component === \"chart\") {\r\n const d2ChartSeries: D2ChartSeriesItem[] =\r\n activeVectors?.map(value => {\r\n return {\r\n id: value.id,\r\n code: value.code,\r\n name: value.name,\r\n colorIndex: value.colorIndex,\r\n lineStyle: value.lineStyle,\r\n }\r\n }) ?? activeArchiveValues?.map((value, index) => {\r\n return {\r\n id: index,\r\n code: value.objectName,\r\n name: value.displayName ?? value.objectName,\r\n }\r\n }) ?? [];\r\n\r\n return (\r\n <div\r\n style={Object.assign(\r\n {display: \"flex\", flexDirection: \"column\", height: \"100%\"},\r\n this.tabWrapperStyle\r\n )}\r\n >\r\n {this.renderTimePanel()}\r\n <D2ChartPanel\r\n ref={component => this.edaManagerChartPanel = component}\r\n d2ChartSeries={d2ChartSeries}\r\n d2ChartRecords={this.state.loadedVectors}\r\n d2ChartCalendarRecords={this.state.loadedCalendarVector}\r\n loading={this.state.loading}\r\n compact={this.edaManagerChartPanelCompact}\r\n markArea={this.props.markArea}\r\n tableHeight={this.props.tableHeight}\r\n tableWrapperStyle={this.props.tableWrapperStyle}\r\n advancedMouseZoom={this.props.advancedMouseZoom}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n return <span>{component}</span>\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{minWidth: 100, minHeight: 500, ...this.props.style}}>\r\n <FlexLayout.Layout\r\n model={this.state.layoutModel}\r\n onModelChange={model => this.setState({layoutModel: model})}\r\n factory={this.flexLayoutFactory}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
@@ -56,7 +56,6 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
|
|
|
56
56
|
const { styles } = useStyles();
|
|
57
57
|
const { graph } = useEdaConfig();
|
|
58
58
|
const chartInstance = useRef(null);
|
|
59
|
-
const chartContainerRef = useRef(null);
|
|
60
59
|
const gridApi = useRef(null);
|
|
61
60
|
const latestProps = useRef({ vectors, onToggleVisibility });
|
|
62
61
|
latestProps.current = { vectors, onToggleVisibility };
|
|
@@ -133,7 +132,8 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
|
|
|
133
132
|
textStyle: {
|
|
134
133
|
color: token.colorText,
|
|
135
134
|
},
|
|
136
|
-
inactiveColor: token.colorTextDisabled
|
|
135
|
+
inactiveColor: token.colorTextDisabled,
|
|
136
|
+
formatter: (name) => getNameFromUniqueName(name),
|
|
137
137
|
},
|
|
138
138
|
toolbox: {
|
|
139
139
|
show: true,
|
|
@@ -151,13 +151,21 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
|
|
|
151
151
|
const eventHandler = useMemo(() => ({
|
|
152
152
|
"legendselectchanged": (params) => {
|
|
153
153
|
const { vectors, onToggleVisibility } = latestProps.current;
|
|
154
|
-
const name = params.name;
|
|
154
|
+
const name = getNameFromUniqueName(params.name);
|
|
155
155
|
const row = vectors.find((r) => r.DisplayName === name);
|
|
156
156
|
if (row) {
|
|
157
|
-
onToggleVisibility?.(row.ID, params.selected[name]);
|
|
157
|
+
onToggleVisibility?.(row.ID, params.selected[params.name]);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
}), []);
|
|
161
|
+
const chartContainerRef = useCallback((node) => {
|
|
162
|
+
if (!node) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
new ResizeObserver(() => {
|
|
166
|
+
window.requestAnimationFrame(() => chartInstance.current?.resize());
|
|
167
|
+
}).observe(node);
|
|
168
|
+
}, []);
|
|
161
169
|
const handleSelectionChanged = useCallback((e) => {
|
|
162
170
|
if ((e.selectedNodes?.length ?? 0) > 0) {
|
|
163
171
|
chartInstance.current.setOption({
|
|
@@ -239,20 +247,10 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
|
|
|
239
247
|
];
|
|
240
248
|
return graph?.graphTable?.modifyColumns ? graph.graphTable.modifyColumns(columns) : columns;
|
|
241
249
|
}, [data, visibleVectors, graph?.graphTable?.modifyColumns]);
|
|
242
|
-
useEffect(() => {
|
|
243
|
-
if (!chartContainerRef.current || !chartInstance.current) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
247
|
-
window.requestAnimationFrame(() => chartInstance.current?.resize());
|
|
248
|
-
});
|
|
249
|
-
resizeObserver.observe(chartContainerRef.current);
|
|
250
|
-
return () => resizeObserver.disconnect();
|
|
251
|
-
}, []);
|
|
252
250
|
useEffect(() => {
|
|
253
251
|
const selectedMap = {};
|
|
254
252
|
vectors.forEach((vector) => {
|
|
255
|
-
selectedMap[vector
|
|
253
|
+
selectedMap[getUniqueName(vector)] = visibleVectors.has(vector.ID);
|
|
256
254
|
});
|
|
257
255
|
chartInstance.current?.setOption({ legend: { selected: selectedMap } });
|
|
258
256
|
}, [visibleVectors, vectors]);
|
|
@@ -263,7 +261,7 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
|
|
|
263
261
|
const chartSeries = vectors.map((v) => {
|
|
264
262
|
const values = data[v.ID] || [];
|
|
265
263
|
return {
|
|
266
|
-
name:
|
|
264
|
+
name: getUniqueName(v),
|
|
267
265
|
id: v.ID,
|
|
268
266
|
type: 'line',
|
|
269
267
|
symbol: 'none',
|
|
@@ -291,7 +289,7 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
|
|
|
291
289
|
};
|
|
292
290
|
});
|
|
293
291
|
labels?.forEach((item) => {
|
|
294
|
-
selectedMap[item
|
|
292
|
+
selectedMap[getUniqueName(item)] = visibleVectors.has(item.ID);
|
|
295
293
|
});
|
|
296
294
|
chartInstance.current?.setOption({ series: chartSeries, legend: { selected: selectedMap } }, { replaceMerge: ['series'] });
|
|
297
295
|
setLabelData(labels);
|
|
@@ -357,14 +355,20 @@ const tooltipFormatter = (p, mask, vectors) => {
|
|
|
357
355
|
let list = `<div style="margin-bottom: 4px;">${date}</div>`;
|
|
358
356
|
params.forEach((item) => {
|
|
359
357
|
const values = item.value;
|
|
360
|
-
const vectorInfo = vectors.find((v) => v.DisplayName === item.seriesName);
|
|
358
|
+
const vectorInfo = vectors.find((v) => v.DisplayName === getNameFromUniqueName(item.seriesName ?? ""));
|
|
361
359
|
if (vectorInfo) {
|
|
362
360
|
const value = values[1] !== null ? (formatValue(values[1], vectorInfo.RoundingType, vectorInfo.RoundingPlaces) + " " + (vectorInfo.Units ?? "")) : "Invalid";
|
|
363
361
|
list += `<div style="display: flex; justify-content: space-between; align-items: center; min-width: 150px; gap: 20px;">`;
|
|
364
|
-
list += `<span style="display: flex; align-items: center;">${item.marker}<span style="margin-left: 5px;">${
|
|
362
|
+
list += `<span style="display: flex; align-items: center;">${item.marker}<span style="margin-left: 5px;">${vectorInfo.DisplayName}</span></span>`;
|
|
365
363
|
list += `<span style="font-weight: bold;">${value}</span></div>`;
|
|
366
364
|
}
|
|
367
365
|
});
|
|
368
366
|
return list;
|
|
369
367
|
};
|
|
368
|
+
const getUniqueName = (vector) => {
|
|
369
|
+
return `${vector.DisplayName}_!@#$%_${vector.ID}`;
|
|
370
|
+
};
|
|
371
|
+
const getNameFromUniqueName = (name) => {
|
|
372
|
+
return name.split('_!@#$%_')[0];
|
|
373
|
+
};
|
|
370
374
|
//# sourceMappingURL=edaChartViewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaChartViewer.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaChartViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACnF,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAiB,cAAc,EAAE,KAAK,EAAE,KAAK,EAAc,MAAM,MAAM,CAAC;AAgBhG,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACnG,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AAGzE,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAGzD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAE,EAAE;IAC5C,OAAO;QACH,UAAU,EAAE,GAAG,CAAA;;;mBAGJ,KAAK,CAAC,UAAU;;;;;;;;;;;;oCAYC,KAAK,CAAC,WAAW;iCACpB,KAAK,CAAC,YAAY;2BACxB,KAAK,CAAC,UAAU;;;;;;;;;;;;;;;SAelC;KACJ,CAAA;AACL,CAAC,CAAC,CAAC;AAcH,MAAM,YAAY,GAAwB;IACtC,IAAI,EAAE,WAAW;IACjB,UAAU,EAAE,KAAK;CACpB,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAmBnH,MAAM,CAAC,MAAM,cAAc,GAAc,CACrC,EAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAC,EAC/F,EAAE;IACA,MAAM,EAAC,KAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,MAAM,EAAC,MAAM,EAAC,GAAG,SAAS,EAAE,CAAC;IAC7B,MAAM,EAAC,KAAK,EAAC,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAG7C,MAAM,WAAW,GAAG,MAAM,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAC1D,WAAW,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,kBAAkB,EAAC,CAAC;IAEpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAa,CAAC;IACxD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAU,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAChF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzF,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,KAAK,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAgB,EAAE,CAAC,CAAC;QAC7C,IAAI,EAAE;YACF,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,GAAG,EAAE,KAAK,CAAC,OAAO;SACrB;QACD,OAAO,EAAE;YACL,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAC;YACnC,YAAY,EAAE,eAAe,KAAK,CAAC,kBAAkB,oBAAoB,KAAK,CAAC,YAAY,KAAK;YAEhG,OAAO,EAAE,MAAM;YACf,WAAW,EAAE;gBACT,IAAI,EAAE,OAAO;aAChB;YACD,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;SACvD;QACD,SAAS,EAAE;YACP,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,SAAS;SACzB;QACD,KAAK,EAAE;YACH,QAAQ,EAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAC,EAAC;YACxD,QAAQ,EAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,EAAC,EAAC;YACvD,SAAS,EAAE;gBACP,KAAK,EAAE,KAAK,CAAC,kBAAkB;gBAC/B,WAAW,EAAE,IAAI;aAEpB;YACD,SAAS,EAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAC,EAAC;YAElD,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACnB,WAAW,EAAE;gBACT,KAAK,EAAE;oBACH,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;iBACxD;aACJ;SACJ;QACD,KAAK,EAAE;YACH,QAAQ,EAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAC,EAAC;YACxD,QAAQ,EAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,EAAC,EAAC;YACvD,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAC;YAC5C,SAAS,EAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAC,EAAC;YAElD,IAAI,EAAE,OAAO;SAChB;QACD,QAAQ,EAAE;YACN;gBACI,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9C,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;aACvD;YACD;gBACI,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACjB;SACJ;QACD,MAAM,EAAE;YACJ,IAAI,EAAE,CAAC,UAAU;YACjB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAC;YACT,SAAS,EAAE;gBACP,KAAK,EAAE,KAAK,CAAC,SAAS;aACzB;YACD,aAAa,EAAE,KAAK,CAAC,iBAAiB;SACzC;QACD,OAAO,EAAE;YACL,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,IAAI;YACX,OAAO,EAAE;gBACL,QAAQ,EAAE;oBACN,UAAU,EAAE,MAAM;iBACrB;gBACD,OAAO,EAAE,EAAE;aACd;SACJ;QACD,KAAK,EAAE,MAAM;KAChB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAExC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChC,qBAAqB,EAAE,CAAC,MAAW,EAAE,EAAE;YACnC,MAAM,EAAC,OAAO,EAAE,kBAAkB,EAAC,GAAG,WAAW,CAAC,OAAO,CAAC;YAC1D,MAAM,IAAI,GAAW,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;YAExD,IAAI,GAAG,EAAE,CAAC;gBACN,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;KACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAER,MAAM,sBAAsB,GAAG,WAAW,CAAC,CAAC,CAAiC,EAAE,EAAE;QAC7E,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,aAAa,CAAC,OAAQ,CAAC,SAAS,CAAC;gBAC7B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;oBAC5E,OAAO,CAAC;wBACJ,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,SAAS,EAAE;4BACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACvB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;yBAC9B;qBACJ,CAAC,CAAC;gBACP,CAAC,CAAC;aACL,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,aAAa,CAAC,OAAQ,CAAC,SAAS,CAAC;gBAC7B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAC,EAAC,CAAC,CAAC;aAC9E,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAqB;YAC9B;gBACI,KAAK,EAAE,UAAU;gBACjB,eAAe,EAAE,GAAG,EAAE,CAAC,CACnB,6BAAK,SAAS,EAAC,uBAAuB;oBAClC,oBAAC,QAAQ,IACL,OAAO,EAAE,iBAAiB,IAAI,CAAC,gBAAgB,EAC/C,aAAa,EAAE,CAAC,iBAAiB,IAAI,CAAC,gBAAgB,EACtD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAC1D,CACA,CACT;gBACD,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,YAAY,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,CAC3C,oBAAC,eAAe,IACZ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EACrB,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAC3C,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;wBACtB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC7D,CAAC,GACH,CACL;gBACD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;YACD;gBACI,KAAK,EAAE,aAAa;gBACpB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACxB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;YACD;gBACI,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;gBACvB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;gBACtF,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvG,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;YACD;gBACI,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;gBACvB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;gBACtF,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvG,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;YACD;gBACI,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;gBACvB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;gBACtF,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvG,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;YACD;gBACI,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC3B,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;gBACtF,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvG,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;YACD;gBACI,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;gBACzB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACxF,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;SACJ,CAAC;QAEF,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChG,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAE7D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACvD,OAAO;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YAC3C,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;QACvE,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAA4B,EAAE,CAAC;QAEhD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACvB,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,OAAO,EAAE,SAAS,CAAc,EAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAC,EAAC,CAAC,CAAC;IACrF,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,WAAW,GAAuB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAoB,EAAE;YACxE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAEhC,OAAO;gBACH,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE;oBACP,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE,CAAC;iBACb;gBACD,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBACzE,iBAAiB,EAAE,GAAG;gBACtB,eAAe,EAAE,gBAAgB;aACpC,CAAA;QACL,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAA4B,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAW,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;YACtC,OAAO;gBACH,GAAG,CAAC;gBACJ,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAe;gBAC/B,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAe;gBAC/B,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAe;gBAC/B,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAe;aAClC,CAAA;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,OAAO,EAAE,SAAS,CAAc,EAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAC,EAAC,EAAE,EAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC;QAClI,YAAY,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACX,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,EAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,QAAQ,EAAC,CAAC,CAAC;IAC7H,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACH,6BAAK,SAAS,EAAE,MAAM,CAAC,UAAU;QAC7B,oBAAC,KAAK,IAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;YAC5C,oBAAC,KAAK;gBACF,oBAAC,MAAM,IACH,IAAI,EAAE,oBAAC,aAAa,OAAE,EACtB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAC1B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACxC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,GAC3C;gBACF,oBAAC,KAAK,CAAC,OAAO;oBACV,oBAAC,MAAM,IACH,IAAI,EAAE,oBAAC,cAAc,OAAE,EACvB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACnB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACtC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,GACvC;oBACF,oBAAC,MAAM,IACH,IAAI,EAAE,oBAAC,eAAe,OAAE,EACxB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE;4BACV,WAAW,CAAC,KAAK,CAAC,CAAC;4BACnB,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC,CAAC;4BAC9E,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,EAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,KAAK,EAAC,CAAC,CAAC;wBAC1H,CAAC,GACH,CACU;gBAChB,oBAAC,MAAM,IACH,IAAI,EAAE,oBAAC,gBAAgB,OAAE,EACzB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,EAC5B,OAAO,EAAE,GAAG,EAAE;wBACV,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;4BACxB,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAC,CAAC,CAAC;4BAChJ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;4BAEzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;4BAChB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;4BAC5B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;4BAChC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACpC,CAAC;oBACL,CAAC,GACH,CACE;YACR,6BAAK,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,EAAE,GAAG,EAAE,iBAAiB;gBAC/D,oBAAC,YAAY,IACT,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,EACtC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAC,EACrE,UAAU,QACV,YAAY,EAAE,CAAC,QAAiB,EAAE,EAAE;wBAChC,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC;oBACrC,CAAC,EACD,QAAQ,EAAE,YAAY,GACxB,CACA,CACF;QACP,UAAU,IAAI,CACX,6BAAK,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,EAAC;YACvF,oBAAC,gBAAgB,IACb,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACnB,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACf,CAAC,EACD,wBAAwB,EAAE;oBACtB,QAAQ,EAAE,CAAC,CAAC;iBACf,EACD,WAAW,EAAE,CAAC,MAAsB,EAAE,EAAE;oBACpC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;gBACjC,CAAC,EACD,OAAO,EAAE,SAAS,EAClB,eAAe,EAAE,EAAC,SAAS,EAAE,KAAK,KAAK,CAAC,UAAU,EAAE,EAAC,EACrD,UAAU,EAAE,EAAC,OAAO,EAAE,KAAK,KAAK,CAAC,UAAU,IAAI,EAAC,EAChD,OAAO,EAAE;oBACL,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE,GAAG,EAAE,CAAC,yCAAK;iBAC7B,EACD,MAAM,EAAE;oBACJ,MAAM,EAAE,IAAI;oBACZ,kBAAkB,EAAE,IAAI;iBAC3B,EACD,wBAAwB,EAAE,GAAG,EAAE,CAAC,yCAAK,EACrC,kBAAkB,EAAE,sBAAsB,EAC1C,YAAY,EAAE,YAAY,GAC5B,CACA,CACT,CACC,CACT,CAAC;AACN,CAAC,CAAC;AAOF,MAAM,eAAe,GAAmC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,EAAE;IACpF,MAAM,KAAK,GAAgB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,KAAK,EAAE;YACH,YAAY,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;SAC9C;QACD,MAAM,EAAE,IAAI;KACf,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEb,OAAO,CACH,oBAAC,cAAc,IAAC,KAAK,EAAE,KAAK;QACxB,oBAAC,QAAQ,OAAK,KAAK,IAAG,QAAQ,CAAY,CAC7B,CACpB,CAAA;AACL,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,CAA0B,EAAE,IAAY,EAAE,OAAmB,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,CAAyB,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAA0B,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,oCAAoC,IAAI,QAAQ,CAAC;IAE3D,MAA+B,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAA0B,CAAC;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEvK,IAAI,IAAI,gHAAgH,CAAC;YACzH,IAAI,IAAI,qDAAqD,IAAI,CAAC,MAAM,mCAAmC,IAAI,CAAC,UAAU,gBAAgB,CAAC;YAC3I,IAAI,IAAI,oCAAoC,KAAK,eAAe,CAAC;QACrE,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA","sourcesContent":["import React, {FC, useCallback, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport {Button, Checkbox, CheckboxProps, ConfigProvider, Space, theme, ThemeConfig} from \"antd\";\r\nimport * as echarts from \"echarts/core\";\r\nimport {\r\n DataZoomComponentOption,\r\n ECharts,\r\n GridComponentOption,\r\n LegendComponentOption,\r\n LineSeriesOption,\r\n TitleComponentOption,\r\n ToolboxComponentOption,\r\n TooltipComponentOption,\r\n XAXisComponentOption,\r\n YAXisComponentOption\r\n} from \"echarts\";\r\nimport {CallbackDataParams, ECBasicOption, TopLevelFormatterParams} from \"echarts/types/dist/shared\";\r\nimport {RowSelectionOptions} from \"ag-grid-community/dist/types/src/entities/gridOptions\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {DownloadOutlined, RetweetOutlined, StockOutlined, ZoomInOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport ReactEcharts from \"echarts-for-react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {OptionDataValue} from \"echarts/types/src/util/types\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridApi, GridReadyEvent, ICellRendererParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {formatValue} from \"../utils/utils\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\nimport {TreeItem, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${token.paddingXXS}px;\r\n height: 100%;\r\n \r\n .ant-space-item:last-child {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n > .chart {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1 1 auto;\r\n border: 1px solid ${token.colorBorder};\r\n border-radius: ${token.borderRadius}px;\r\n padding: ${token.paddingXXS}px;\r\n\r\n > div:first-child {\r\n display: flex;\r\n justify-content: flex-end;\r\n }\r\n \r\n > .echarts-for-react {\r\n flex: 1 1 auto;\r\n }\r\n }\r\n \r\n > .legend {\r\n position: relative;\r\n }\r\n `\r\n }\r\n});\r\n\r\ntype ChartOption = echarts.ComposeOption<\r\n LineSeriesOption |\r\n TitleComponentOption |\r\n TooltipComponentOption |\r\n LegendComponentOption |\r\n GridComponentOption |\r\n XAXisComponentOption |\r\n YAXisComponentOption |\r\n DataZoomComponentOption |\r\n ToolboxComponentOption\r\n> & ECBasicOption;\r\n\r\nconst rowSelection: RowSelectionOptions = {\r\n mode: \"singleRow\",\r\n checkboxes: false,\r\n}\r\n\r\nconst colors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'];\r\n\r\ninterface RowData extends TreeItem {\r\n id: number\r\n Min?: number\r\n Max?: number\r\n Sum?: number\r\n Avg?: number\r\n}\r\n\r\ninterface Props {\r\n vectors: TreeItem[];\r\n data: Record<number, {data: VectorValuesData}>;\r\n visibleVectors: Set<number>;\r\n isDataInitialized: boolean;\r\n onToggleVisibility: (id: number, visible: boolean) => void;\r\n onToggleAllVisibility: (visible: boolean) => void;\r\n}\r\n\r\nexport const EdaChartViewer: FC<Props> = (\r\n {vectors, data, visibleVectors, isDataInitialized, onToggleVisibility, onToggleAllVisibility}\r\n) => {\r\n const {token} = theme.useToken();\r\n const {styles} = useStyles();\r\n const {graph} = useEdaConfig();\r\n\r\n const chartInstance = useRef<ECharts | null>(null);\r\n const chartContainerRef = useRef<HTMLDivElement>(null);\r\n const gridApi = useRef<GridApi | null>(null);\r\n\r\n // handle special case to avoid echarts to re-create every render\r\n const latestProps = useRef({vectors, onToggleVisibility});\r\n latestProps.current = {vectors, onToggleVisibility};\r\n\r\n const [labelData, setLabelData] = useState<RowData[]>();\r\n const [showLegend, setShowLegend] = useState<boolean>(!!graph?.showChartLegend);\r\n const [dataZoom, setDataZoom] = useState(false);\r\n\r\n const mask = useMemo(() => LocaleHolder.getDateTimeFormat(true, false, false, true), []);\r\n\r\n const allVectorsVisible = vectors.length > 0 && vectors.every(v => visibleVectors.has(v.ID));\r\n const noVectorsVisible = visibleVectors.size === 0;\r\n\r\n const chartOptions = useMemo((): ChartOption => ({\r\n grid: {\r\n bottom: 60 + 2 * token.paddingXXS + (!showLegend ? 30 : 0),\r\n top: token.padding\r\n },\r\n tooltip: {\r\n backgroundColor: token.colorBgElevated,\r\n borderColor: token.colorBorder,\r\n textStyle: {color: token.colorText},\r\n extraCssText: `box-shadow: ${token.boxShadowSecondary}; border-radius: ${token.borderRadius}px;`,\r\n\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'cross',\r\n },\r\n appendTo: 'body',\r\n formatter: (p) => tooltipFormatter(p, mask, vectors),\r\n },\r\n textStyle: {\r\n fontFamily: token.fontFamily,\r\n fontSize: token.fontSize,\r\n color: token.colorText\r\n },\r\n xAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {\r\n color: token.colorTextSecondary,\r\n hideOverlap: true,\r\n // formatter: (value) => dayjs(value).format(mask),\r\n },\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'time',\r\n boundaryGap: [0, 0],\r\n axisPointer: {\r\n label: {\r\n formatter: (value) => dayjs(value.value).format(mask),\r\n }\r\n }\r\n },\r\n yAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {color: token.colorTextSecondary},\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'value'\r\n },\r\n dataZoom: [\r\n {\r\n bottom: showLegend ? token.paddingXXS + 8 : 40,\r\n left: 130,\r\n right: 130,\r\n type: 'slider',\r\n show: true,\r\n realtime: true,\r\n labelFormatter: (value) => dayjs(value).format(mask),\r\n },\r\n {\r\n type: 'inside',\r\n realtime: true,\r\n }\r\n ],\r\n legend: {\r\n show: !showLegend,\r\n type: \"scroll\",\r\n bottom: 0,\r\n textStyle: {\r\n color: token.colorText,\r\n },\r\n inactiveColor: token.colorTextDisabled\r\n },\r\n toolbox: {\r\n show: true,\r\n itemSize: 0,\r\n right: 9999,\r\n feature: {\r\n dataZoom: {\r\n yAxisIndex: 'none',\r\n },\r\n restore: {}\r\n }\r\n },\r\n color: colors,\r\n }), [token, showLegend, mask, vectors]);\r\n\r\n const eventHandler = useMemo(() => ({\r\n \"legendselectchanged\": (params: any) => {\r\n const {vectors, onToggleVisibility} = latestProps.current;\r\n const name: string = params.name;\r\n const row = vectors.find((r) => r.DisplayName === name);\r\n\r\n if (row) {\r\n onToggleVisibility?.(row.ID, params.selected[name]);\r\n }\r\n }\r\n }), []);\r\n\r\n const handleSelectionChanged = useCallback((e: SelectionChangedEvent<RowData>) => {\r\n if ((e.selectedNodes?.length ?? 0) > 0) {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => {\r\n const selected = e.selectedNodes?.some((f) => f.data?.ID === v.ID) ?? false;\r\n return ({\r\n id: v.ID,\r\n lineStyle: {\r\n width: selected ? 2 : 1,\r\n opacity: selected ? 1 : 0.3,\r\n }\r\n });\r\n })\r\n })\r\n } else {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => ({id: v.ID, lineStyle: {width: 1, opacity: 1}}))\r\n });\r\n }\r\n }, [vectors]);\r\n\r\n const columnDefs = useMemo(() => {\r\n const columns: DataGridColDef[] = [\r\n {\r\n field: \"checkbox\",\r\n headerComponent: () => (\r\n <div className=\"custom-header-wrapper\">\r\n <Checkbox\r\n checked={allVectorsVisible && !noVectorsVisible}\r\n indeterminate={!allVectorsVisible && !noVectorsVisible}\r\n onChange={(e) => onToggleAllVisibility(e.target.checked)}\r\n />\r\n </div>\r\n ),\r\n maxWidth: 32,\r\n width: 32,\r\n minWidth: 32,\r\n cellRenderer: (params: ICellRendererParams) => (\r\n <ColoredCheckbox\r\n index={params.data.id}\r\n checked={visibleVectors.has(params.data.ID)}\r\n onChange={async (event) => {\r\n onToggleVisibility(params.data.ID, event.target.checked);\r\n }}\r\n />\r\n ),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"DisplayName\",\r\n headerName: i18n(\"Name\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Min\",\r\n headerName: i18n(\"Min\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Min : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Max\",\r\n headerName: i18n(\"Max\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Max : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Sum\",\r\n headerName: i18n(\"Sum\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Sum : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Avg\",\r\n headerName: i18n(\"Average\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Avg : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Units\",\r\n headerName: i18n(\"Units\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Units : undefined,\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ];\r\n\r\n return graph?.graphTable?.modifyColumns ? graph.graphTable.modifyColumns(columns) : columns;\r\n }, [data, visibleVectors, graph?.graphTable?.modifyColumns]);\r\n\r\n useEffect(() => {\r\n if (!chartContainerRef.current || !chartInstance.current) {\r\n return;\r\n }\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n window.requestAnimationFrame(() => chartInstance.current?.resize())\r\n });\r\n\r\n resizeObserver.observe(chartContainerRef.current);\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const selectedMap: Record<string, boolean> = {};\r\n\r\n vectors.forEach((vector) => {\r\n selectedMap[vector.DisplayName] = visibleVectors.has(vector.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({legend: {selected: selectedMap}});\r\n }, [visibleVectors, vectors]);\r\n\r\n useEffect(() => {\r\n if (!isDataInitialized) {\r\n return;\r\n }\r\n\r\n const chartSeries: LineSeriesOption[] = vectors.map((v): LineSeriesOption => {\r\n const values = data[v.ID] || [];\r\n\r\n return {\r\n name: v.DisplayName ?? String(v.ID),\r\n id: v.ID,\r\n type: 'line',\r\n symbol: 'none',\r\n sampling: \"minmax\",\r\n step: \"end\",\r\n lineStyle: {\r\n width: 1,\r\n opacity: 1,\r\n },\r\n data: values.data?.data?.map((v) => [v.val.valueTime, v.val.value]) ?? [],\r\n animationDuration: 300,\r\n animationEasing: 'exponentialOut',\r\n }\r\n });\r\n const selectedMap: Record<string, boolean> = {};\r\n const labels = vectors.map((v, index): RowData => {\r\n const stats = data[v.ID]?.data?.stats;\r\n return {\r\n ...v,\r\n id: index,\r\n Min: stats?.Min.value as number,\r\n Max: stats?.Max.value as number,\r\n Sum: stats?.Sum.value as number,\r\n Avg: stats?.Avg.value as number,\r\n }\r\n });\r\n\r\n labels?.forEach((item) => {\r\n selectedMap[item.DisplayName] = visibleVectors.has(item.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({series: chartSeries, legend: {selected: selectedMap}}, {replaceMerge: ['series']});\r\n setLabelData(labels);\r\n }, [data, vectors, visibleVectors, isDataInitialized]);\r\n\r\n useEffect(() => {\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: dataZoom});\r\n }, [dataZoom]);\r\n\r\n return (\r\n <div className={styles.baseLayout}>\r\n <Space direction={\"vertical\"} className={\"chart\"}>\r\n <Space>\r\n <Button\r\n icon={<StockOutlined/>}\r\n title={i18n(\"Show Legend\")}\r\n type={showLegend ? \"primary\" : \"default\"}\r\n onClick={() => setShowLegend(!showLegend)}\r\n />\r\n <Space.Compact>\r\n <Button\r\n icon={<ZoomInOutlined/>}\r\n title={i18n(\"Zoom\")}\r\n type={dataZoom ? \"primary\" : \"default\"}\r\n onClick={() => setDataZoom(!dataZoom)}\r\n />\r\n <Button\r\n icon={<RetweetOutlined/>}\r\n title={i18n(\"Restore\")}\r\n onClick={() => {\r\n setDataZoom(false);\r\n chartInstance.current?.dispatchAction({type: 'dataZoom', start: 0, end: 100});\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: false});\r\n }}\r\n />\r\n </Space.Compact>\r\n <Button\r\n icon={<DownloadOutlined/>}\r\n title={i18n(\"Export as PNG\")}\r\n onClick={() => {\r\n if (chartInstance.current) {\r\n const img = chartInstance.current.getDataURL({type: 'png', pixelRatio: 2, backgroundColor: '#fff', excludeComponents: ['dataZoom', 'toolbox']});\r\n const link = document.createElement(\"a\");\r\n\r\n link.href = img;\r\n link.download = \"chart.png\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }}\r\n />\r\n </Space>\r\n <div style={{width: \"100%\", height: \"100%\"}} ref={chartContainerRef}>\r\n <ReactEcharts\r\n style={{width: \"100%\", height: \"100%\"}}\r\n option={chartOptions}\r\n opts={{renderer: 'canvas', devicePixelRatio: window.devicePixelRatio}}\r\n lazyUpdate\r\n onChartReady={(instance: ECharts) => {\r\n chartInstance.current = instance;\r\n }}\r\n onEvents={eventHandler}\r\n />\r\n </div>\r\n </Space>\r\n {showLegend && (\r\n <div className={\"legend\"} style={{flex: `0 0 ${35 + 28 * (labelData ?? []).length + 15}px`}}>\r\n <ExtendedDataGrid<RowData>\r\n columnDefs={columnDefs}\r\n onLoadData={callback => {\r\n callback(1)\r\n }}\r\n defaultGridConfiguration={{\r\n pageSize: -1,\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n gridApi.current = params.api;\r\n }}\r\n rowData={labelData}\r\n tablePanelStyle={{marginTop: `0 ${token.paddingXXS}`}}\r\n panelStyle={{padding: `0 ${token.paddingXXS}px`}}\r\n toolbar={{\r\n hideRecordCount: true,\r\n renderToolbar: () => <></>\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={() => <></>}\r\n onSelectionChanged={handleSelectionChanged}\r\n rowSelection={rowSelection}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\ninterface ColoredCheckboxProps extends CheckboxProps {\r\n index: number\r\n children?: React.ReactNode\r\n}\r\n\r\nconst ColoredCheckbox: React.FC<ColoredCheckboxProps> = ({index, children, ...props}) => {\r\n const theme: ThemeConfig = React.useMemo(() => ({\r\n token: {\r\n colorPrimary: colors[index % colors.length],\r\n },\r\n hashed: true,\r\n }), [index]);\r\n\r\n return (\r\n <ConfigProvider theme={theme}>\r\n <Checkbox {...props}>{children}</Checkbox>\r\n </ConfigProvider>\r\n )\r\n}\r\n\r\nconst tooltipFormatter = (p: TopLevelFormatterParams, mask: string, vectors: TreeItem[]) => {\r\n const params = p as CallbackDataParams[];\r\n const values = params[0].value as OptionDataValue[];\r\n const date = dayjs(values[0]).format(mask);\r\n let list = `<div style=\"margin-bottom: 4px;\">${date}</div>`;\r\n\r\n (params as CallbackDataParams[]).forEach((item) => {\r\n const values = item.value as OptionDataValue[];\r\n const vectorInfo = vectors.find((v) => v.DisplayName === item.seriesName);\r\n\r\n if (vectorInfo) {\r\n const value = values[1] !== null ? (formatValue(values[1] as number, vectorInfo.RoundingType, vectorInfo.RoundingPlaces) + \" \" + (vectorInfo.Units ?? \"\")) : \"Invalid\";\r\n\r\n list += `<div style=\"display: flex; justify-content: space-between; align-items: center; min-width: 150px; gap: 20px;\">`;\r\n list += `<span style=\"display: flex; align-items: center;\">${item.marker}<span style=\"margin-left: 5px;\">${item.seriesName}</span></span>`;\r\n list += `<span style=\"font-weight: bold;\">${value}</span></div>`;\r\n }\r\n });\r\n\r\n return list;\r\n}"]}
|
|
1
|
+
{"version":3,"file":"edaChartViewer.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaChartViewer.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport {Button, Checkbox, CheckboxProps, ConfigProvider, Space, theme, ThemeConfig} from \"antd\";\r\nimport * as echarts from \"echarts/core\";\r\nimport {\r\n DataZoomComponentOption,\r\n ECharts,\r\n GridComponentOption,\r\n LegendComponentOption,\r\n LineSeriesOption,\r\n TitleComponentOption,\r\n ToolboxComponentOption,\r\n TooltipComponentOption,\r\n XAXisComponentOption,\r\n YAXisComponentOption\r\n} from \"echarts\";\r\nimport {CallbackDataParams, ECBasicOption, TopLevelFormatterParams} from \"echarts/types/dist/shared\";\r\nimport {RowSelectionOptions} from \"ag-grid-community/dist/types/src/entities/gridOptions\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {DownloadOutlined, RetweetOutlined, StockOutlined, ZoomInOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport ReactEcharts from \"echarts-for-react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {OptionDataValue} from \"echarts/types/src/util/types\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridApi, GridReadyEvent, ICellRendererParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {formatValue} from \"../utils/utils\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\nimport {TreeItem, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${token.paddingXXS}px;\r\n height: 100%;\r\n \r\n .ant-space-item:last-child {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n > .chart {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1 1 auto;\r\n border: 1px solid ${token.colorBorder};\r\n border-radius: ${token.borderRadius}px;\r\n padding: ${token.paddingXXS}px;\r\n\r\n > div:first-child {\r\n display: flex;\r\n justify-content: flex-end;\r\n }\r\n \r\n > .echarts-for-react {\r\n flex: 1 1 auto;\r\n }\r\n }\r\n \r\n > .legend {\r\n position: relative;\r\n }\r\n `\r\n }\r\n});\r\n\r\ntype ChartOption = echarts.ComposeOption<\r\n LineSeriesOption |\r\n TitleComponentOption |\r\n TooltipComponentOption |\r\n LegendComponentOption |\r\n GridComponentOption |\r\n XAXisComponentOption |\r\n YAXisComponentOption |\r\n DataZoomComponentOption |\r\n ToolboxComponentOption\r\n> & ECBasicOption;\r\n\r\nconst rowSelection: RowSelectionOptions = {\r\n mode: \"singleRow\",\r\n checkboxes: false,\r\n}\r\n\r\nconst colors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'];\r\n\r\ninterface RowData extends TreeItem {\r\n id: number\r\n Min?: number\r\n Max?: number\r\n Sum?: number\r\n Avg?: number\r\n}\r\n\r\ninterface Props {\r\n vectors: TreeItem[];\r\n data: Record<number, {data: VectorValuesData}>;\r\n visibleVectors: Set<number>;\r\n isDataInitialized: boolean;\r\n onToggleVisibility: (id: number, visible: boolean) => void;\r\n onToggleAllVisibility: (visible: boolean) => void;\r\n}\r\n\r\nexport const EdaChartViewer: FC<Props> = (\r\n {vectors, data, visibleVectors, isDataInitialized, onToggleVisibility, onToggleAllVisibility}\r\n) => {\r\n const {token} = theme.useToken();\r\n const {styles} = useStyles();\r\n const {graph} = useEdaConfig();\r\n\r\n const chartInstance = useRef<ECharts | null>(null);\r\n const gridApi = useRef<GridApi | null>(null);\r\n\r\n // handle special case to avoid echarts to re-create every render\r\n const latestProps = useRef({vectors, onToggleVisibility});\r\n latestProps.current = {vectors, onToggleVisibility};\r\n\r\n const [labelData, setLabelData] = useState<RowData[]>();\r\n const [showLegend, setShowLegend] = useState<boolean>(!!graph?.showChartLegend);\r\n const [dataZoom, setDataZoom] = useState(false);\r\n\r\n const mask = useMemo(() => LocaleHolder.getDateTimeFormat(true, false, false, true), []);\r\n\r\n const allVectorsVisible = vectors.length > 0 && vectors.every(v => visibleVectors.has(v.ID));\r\n const noVectorsVisible = visibleVectors.size === 0;\r\n\r\n const chartOptions = useMemo((): ChartOption => ({\r\n grid: {\r\n bottom: 60 + 2 * token.paddingXXS + (!showLegend ? 30 : 0),\r\n top: token.padding\r\n },\r\n tooltip: {\r\n backgroundColor: token.colorBgElevated,\r\n borderColor: token.colorBorder,\r\n textStyle: {color: token.colorText},\r\n extraCssText: `box-shadow: ${token.boxShadowSecondary}; border-radius: ${token.borderRadius}px;`,\r\n\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'cross',\r\n },\r\n appendTo: 'body',\r\n formatter: (p) => tooltipFormatter(p, mask, vectors),\r\n },\r\n textStyle: {\r\n fontFamily: token.fontFamily,\r\n fontSize: token.fontSize,\r\n color: token.colorText\r\n },\r\n xAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {\r\n color: token.colorTextSecondary,\r\n hideOverlap: true,\r\n // formatter: (value) => dayjs(value).format(mask),\r\n },\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'time',\r\n boundaryGap: [0, 0],\r\n axisPointer: {\r\n label: {\r\n formatter: (value) => dayjs(value.value).format(mask),\r\n }\r\n }\r\n },\r\n yAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {color: token.colorTextSecondary},\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'value'\r\n },\r\n dataZoom: [\r\n {\r\n bottom: showLegend ? token.paddingXXS + 8 : 40,\r\n left: 130,\r\n right: 130,\r\n type: 'slider',\r\n show: true,\r\n realtime: true,\r\n labelFormatter: (value) => dayjs(value).format(mask),\r\n },\r\n {\r\n type: 'inside',\r\n realtime: true,\r\n }\r\n ],\r\n legend: {\r\n show: !showLegend,\r\n type: \"scroll\",\r\n bottom: 0,\r\n textStyle: {\r\n color: token.colorText,\r\n },\r\n inactiveColor: token.colorTextDisabled,\r\n formatter: (name: string) => getNameFromUniqueName(name),\r\n },\r\n toolbox: {\r\n show: true,\r\n itemSize: 0,\r\n right: 9999,\r\n feature: {\r\n dataZoom: {\r\n yAxisIndex: 'none',\r\n },\r\n restore: {}\r\n }\r\n },\r\n color: colors,\r\n }), [token, showLegend, mask, vectors]);\r\n\r\n const eventHandler = useMemo(() => ({\r\n \"legendselectchanged\": (params: any) => {\r\n const {vectors, onToggleVisibility} = latestProps.current;\r\n const name: string = getNameFromUniqueName(params.name);\r\n const row = vectors.find((r) => r.DisplayName === name);\r\n\r\n if (row) {\r\n onToggleVisibility?.(row.ID, params.selected[params.name]);\r\n }\r\n }\r\n }), []);\r\n\r\n const chartContainerRef = useCallback((node: HTMLDivElement | null) => {\r\n if (!node) {\r\n return;\r\n }\r\n\r\n new ResizeObserver(() => {\r\n window.requestAnimationFrame(() => chartInstance.current?.resize())\r\n }).observe(node);\r\n }, []);\r\n\r\n const handleSelectionChanged = useCallback((e: SelectionChangedEvent<RowData>) => {\r\n if ((e.selectedNodes?.length ?? 0) > 0) {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => {\r\n const selected = e.selectedNodes?.some((f) => f.data?.ID === v.ID) ?? false;\r\n return ({\r\n id: v.ID,\r\n lineStyle: {\r\n width: selected ? 2 : 1,\r\n opacity: selected ? 1 : 0.3,\r\n }\r\n });\r\n })\r\n })\r\n } else {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => ({id: v.ID, lineStyle: {width: 1, opacity: 1}}))\r\n });\r\n }\r\n }, [vectors]);\r\n\r\n const columnDefs = useMemo(() => {\r\n const columns: DataGridColDef[] = [\r\n {\r\n field: \"checkbox\",\r\n headerComponent: () => (\r\n <div className=\"custom-header-wrapper\">\r\n <Checkbox\r\n checked={allVectorsVisible && !noVectorsVisible}\r\n indeterminate={!allVectorsVisible && !noVectorsVisible}\r\n onChange={(e) => onToggleAllVisibility(e.target.checked)}\r\n />\r\n </div>\r\n ),\r\n maxWidth: 32,\r\n width: 32,\r\n minWidth: 32,\r\n cellRenderer: (params: ICellRendererParams) => (\r\n <ColoredCheckbox\r\n index={params.data.id}\r\n checked={visibleVectors.has(params.data.ID)}\r\n onChange={async (event) => {\r\n onToggleVisibility(params.data.ID, event.target.checked);\r\n }}\r\n />\r\n ),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"DisplayName\",\r\n headerName: i18n(\"Name\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Min\",\r\n headerName: i18n(\"Min\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Min : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Max\",\r\n headerName: i18n(\"Max\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Max : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Sum\",\r\n headerName: i18n(\"Sum\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Sum : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Avg\",\r\n headerName: i18n(\"Average\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Avg : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Units\",\r\n headerName: i18n(\"Units\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Units : undefined,\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ];\r\n\r\n return graph?.graphTable?.modifyColumns ? graph.graphTable.modifyColumns(columns) : columns;\r\n }, [data, visibleVectors, graph?.graphTable?.modifyColumns]);\r\n\r\n useEffect(() => {\r\n const selectedMap: Record<string, boolean> = {};\r\n\r\n vectors.forEach((vector) => {\r\n selectedMap[getUniqueName(vector)] = visibleVectors.has(vector.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({legend: {selected: selectedMap}});\r\n }, [visibleVectors, vectors]);\r\n\r\n useEffect(() => {\r\n if (!isDataInitialized) {\r\n return;\r\n }\r\n\r\n const chartSeries: LineSeriesOption[] = vectors.map((v): LineSeriesOption => {\r\n const values = data[v.ID] || [];\r\n\r\n return {\r\n name: getUniqueName(v),\r\n id: v.ID,\r\n type: 'line',\r\n symbol: 'none',\r\n sampling: \"minmax\",\r\n step: \"end\",\r\n lineStyle: {\r\n width: 1,\r\n opacity: 1,\r\n },\r\n data: values.data?.data?.map((v) => [v.val.valueTime, v.val.value]) ?? [],\r\n animationDuration: 300,\r\n animationEasing: 'exponentialOut',\r\n }\r\n });\r\n const selectedMap: Record<string, boolean> = {};\r\n const labels = vectors.map((v, index): RowData => {\r\n const stats = data[v.ID]?.data?.stats;\r\n return {\r\n ...v,\r\n id: index,\r\n Min: stats?.Min.value as number,\r\n Max: stats?.Max.value as number,\r\n Sum: stats?.Sum.value as number,\r\n Avg: stats?.Avg.value as number,\r\n }\r\n });\r\n\r\n labels?.forEach((item) => {\r\n selectedMap[getUniqueName(item)] = visibleVectors.has(item.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({series: chartSeries, legend: {selected: selectedMap}}, {replaceMerge: ['series']});\r\n setLabelData(labels);\r\n }, [data, vectors, visibleVectors, isDataInitialized]);\r\n\r\n useEffect(() => {\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: dataZoom});\r\n }, [dataZoom]);\r\n\r\n return (\r\n <div className={styles.baseLayout}>\r\n <Space direction={\"vertical\"} className={\"chart\"}>\r\n <Space>\r\n <Button\r\n icon={<StockOutlined/>}\r\n title={i18n(\"Show Legend\")}\r\n type={showLegend ? \"primary\" : \"default\"}\r\n onClick={() => setShowLegend(!showLegend)}\r\n />\r\n <Space.Compact>\r\n <Button\r\n icon={<ZoomInOutlined/>}\r\n title={i18n(\"Zoom\")}\r\n type={dataZoom ? \"primary\" : \"default\"}\r\n onClick={() => setDataZoom(!dataZoom)}\r\n />\r\n <Button\r\n icon={<RetweetOutlined/>}\r\n title={i18n(\"Restore\")}\r\n onClick={() => {\r\n setDataZoom(false);\r\n chartInstance.current?.dispatchAction({type: 'dataZoom', start: 0, end: 100});\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: false});\r\n }}\r\n />\r\n </Space.Compact>\r\n <Button\r\n icon={<DownloadOutlined/>}\r\n title={i18n(\"Export as PNG\")}\r\n onClick={() => {\r\n if (chartInstance.current) {\r\n const img = chartInstance.current.getDataURL({type: 'png', pixelRatio: 2, backgroundColor: '#fff', excludeComponents: ['dataZoom', 'toolbox']});\r\n const link = document.createElement(\"a\");\r\n\r\n link.href = img;\r\n link.download = \"chart.png\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }}\r\n />\r\n </Space>\r\n <div style={{width: \"100%\", height: \"100%\"}} ref={chartContainerRef}>\r\n <ReactEcharts\r\n style={{width: \"100%\", height: \"100%\"}}\r\n option={chartOptions}\r\n opts={{renderer: 'canvas', devicePixelRatio: window.devicePixelRatio}}\r\n lazyUpdate\r\n onChartReady={(instance: ECharts) => {\r\n chartInstance.current = instance;\r\n }}\r\n onEvents={eventHandler}\r\n />\r\n </div>\r\n </Space>\r\n {showLegend && (\r\n <div className={\"legend\"} style={{flex: `0 0 ${35 + 28 * (labelData ?? []).length + 15}px`}}>\r\n <ExtendedDataGrid<RowData>\r\n columnDefs={columnDefs}\r\n onLoadData={callback => {\r\n callback(1)\r\n }}\r\n defaultGridConfiguration={{\r\n pageSize: -1,\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n gridApi.current = params.api;\r\n }}\r\n rowData={labelData}\r\n tablePanelStyle={{marginTop: `0 ${token.paddingXXS}`}}\r\n panelStyle={{padding: `0 ${token.paddingXXS}px`}}\r\n toolbar={{\r\n hideRecordCount: true,\r\n renderToolbar: () => <></>\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={() => <></>}\r\n onSelectionChanged={handleSelectionChanged}\r\n rowSelection={rowSelection}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\ninterface ColoredCheckboxProps extends CheckboxProps {\r\n index: number\r\n children?: React.ReactNode\r\n}\r\n\r\nconst ColoredCheckbox: React.FC<ColoredCheckboxProps> = ({index, children, ...props}) => {\r\n const theme: ThemeConfig = React.useMemo(() => ({\r\n token: {\r\n colorPrimary: colors[index % colors.length],\r\n },\r\n hashed: true,\r\n }), [index]);\r\n\r\n return (\r\n <ConfigProvider theme={theme}>\r\n <Checkbox {...props}>{children}</Checkbox>\r\n </ConfigProvider>\r\n )\r\n}\r\n\r\nconst tooltipFormatter = (p: TopLevelFormatterParams, mask: string, vectors: TreeItem[]) => {\r\n const params = p as CallbackDataParams[];\r\n const values = params[0].value as OptionDataValue[];\r\n const date = dayjs(values[0]).format(mask);\r\n let list = `<div style=\"margin-bottom: 4px;\">${date}</div>`;\r\n\r\n (params as CallbackDataParams[]).forEach((item) => {\r\n const values = item.value as OptionDataValue[];\r\n const vectorInfo = vectors.find((v) => v.DisplayName === getNameFromUniqueName(item.seriesName ?? \"\"));\r\n\r\n if (vectorInfo) {\r\n const value = values[1] !== null ? (formatValue(values[1] as number, vectorInfo.RoundingType, vectorInfo.RoundingPlaces) + \" \" + (vectorInfo.Units ?? \"\")) : \"Invalid\";\r\n\r\n list += `<div style=\"display: flex; justify-content: space-between; align-items: center; min-width: 150px; gap: 20px;\">`;\r\n list += `<span style=\"display: flex; align-items: center;\">${item.marker}<span style=\"margin-left: 5px;\">${vectorInfo.DisplayName}</span></span>`;\r\n list += `<span style=\"font-weight: bold;\">${value}</span></div>`;\r\n }\r\n });\r\n\r\n return list;\r\n}\r\n\r\nconst getUniqueName = (vector: TreeItem) => {\r\n return `${vector.DisplayName}_!@#$%_${vector.ID}`;\r\n}\r\n\r\nconst getNameFromUniqueName = (name: string) => {\r\n return name.split('_!@#$%_')[0];\r\n}"]}
|
|
@@ -55,7 +55,7 @@ export const EdaDataBasePanel = ({ api, data, pageSize, range, dataContext, chil
|
|
|
55
55
|
React.createElement(Empty, { description: i18n("No data provided") })),
|
|
56
56
|
hasData &&
|
|
57
57
|
React.createElement(Space, { direction: "vertical", style: { width: '100%', height: '100%' } },
|
|
58
|
-
React.createElement(EdaSampleRangePickerPanel, { bt: range.btTotal, et: range.etTotal, sampling: range.sampling, totalCount: range.totalCount, pageSize: pageSize ?? 10, loading: !!loadingContext?.loading, page: range.vectorPage,
|
|
58
|
+
React.createElement(EdaSampleRangePickerPanel, { api: api, data: data, bt: range.btTotal, et: range.etTotal, sampling: range.sampling, totalCount: range.totalCount, pageSize: pageSize ?? 10, loading: !!loadingContext?.loading, page: range.vectorPage, vectors: range.vectors, displayedVectors: dataContext.vectors, onChangeRange: range.updateValues, onChangePage: range.updatePage, onChangeVectors: range.updateVectors }),
|
|
59
59
|
detail?.showTimeWindow &&
|
|
60
60
|
React.createElement(EdaTimeWindowPickerPanel, { start: range.btTotal, end: range.etTotal, bt: range.btWindow, et: range.etWindow, step: range.step, disabled: range.sampling === EdaSamplingType.Changes, onTimeWindowChanged: range.updateTimeWindow }),
|
|
61
61
|
children)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaDataBasePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaDataBasePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,UAAU,EAAC,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,eAAe,EAAY,MAAM,uBAAuB,CAAC;AACjE,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AAIpE,OAAO,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAEtD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAE,EAAE;IAC5C,OAAO;QACH,UAAU,EAAE,GAAG,CAAA;;;;;;;;;;2BAUI,KAAK,CAAC,SAAS;;;;;;;;;;2BAUf,KAAK,CAAC,OAAO;;;;;;;;;;;SAW/B;KACJ,CAAA;AACL,CAAC,CAAC,CAAC;AAWH,MAAM,CAAC,MAAM,gBAAgB,GAAc,CAAC,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAC,EAAE,EAAE;IAC/F,MAAM,EAAC,MAAM,EAAC,GAAG,SAAS,EAAE,CAAC;IAC7B,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC;IAEnC,OAAO,CACH,oBAAC,IAAI,IAAC,SAAS,EAAE,MAAM,CAAC,UAAU;QAC9B,oBAAC,iBAAiB,IACd,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,EACnC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,GAChD;QACD,CAAC,OAAO,IAAI,6BAAK,SAAS,EAAE,oBAAoB;YAAE,oBAAC,KAAK,IAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAM;QACvG,OAAO;YACJ,oBAAC,KAAK,IAAC,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC;gBAC9D,oBAAC,yBAAyB,IACtB,EAAE,EAAE,KAAK,CAAC,OAAO,EACjB,EAAE,EAAE,KAAK,CAAC,OAAO,EACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,QAAQ,EAAE,QAAQ,IAAI,EAAE,EACxB,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAClC,IAAI,EAAE,KAAK,CAAC,UAAU,EACtB,
|
|
1
|
+
{"version":3,"file":"edaDataBasePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaDataBasePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useContext} from \"react\";\r\nimport {Card, Empty, Space} from \"antd\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {EdaSamplingType, TypedData} from \"../constants/edaTypes\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EdaSampleRangePickerPanel} from \"./edaSampleRangePickerPanel\";\r\nimport {EdaTimeWindowPickerPanel} from \"./edaTimeWindowPickerPanel\";\r\nimport {SharedSampleRangeContext} from \"../context/sharedSampleRangeContext\";\r\nimport {EdaVectorDataContextValue} from \"../context/edaVectorDataContext\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport {LoadingContext} from \"../context/loadingContext\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\nimport {EdaLoadingOverlay} from \"./edaLoadingOverlay\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n\r\n > .ant-card-body {\r\n height: 100%;\r\n padding: ${token.paddingXS}px;\r\n\r\n > div {\r\n height: 100%;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n }\r\n }\r\n\r\n .eda-detail-no-data {\r\n padding: ${token.padding}px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center !important;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n \r\n .ant-space-item:last-child {\r\n height: 100%;\r\n }\r\n `,\r\n }\r\n});\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n data?: TypedData\r\n pageSize?: number\r\n children?: React.ReactNode\r\n range: SharedSampleRangeContext\r\n dataContext: EdaVectorDataContextValue\r\n}\r\n\r\nexport const EdaDataBasePanel: FC<Props> = ({api, data, pageSize, range, dataContext, children}) => {\r\n const {styles} = useStyles();\r\n const {detail} = useEdaConfig();\r\n const loadingContext = useContext(LoadingContext);\r\n\r\n const hasData = data !== undefined;\r\n\r\n return (\r\n <Card className={styles.baseLayout}>\r\n <EdaLoadingOverlay\r\n onCancel={() => api.cancelSession()}\r\n onCancelAll={() => dataContext.cancelLoading()}\r\n />\r\n {!hasData && <div className={\"eda-detail-no-data\"}><Empty description={i18n(\"No data provided\")}/></div>}\r\n {hasData &&\r\n <Space direction=\"vertical\" style={{width: '100%', height: '100%'}}>\r\n <EdaSampleRangePickerPanel\r\n api={api}\r\n data={data}\r\n bt={range.btTotal}\r\n et={range.etTotal}\r\n sampling={range.sampling}\r\n totalCount={range.totalCount}\r\n pageSize={pageSize ?? 10}\r\n loading={!!loadingContext?.loading}\r\n page={range.vectorPage}\r\n vectors={range.vectors}\r\n displayedVectors={dataContext.vectors}\r\n onChangeRange={range.updateValues}\r\n onChangePage={range.updatePage}\r\n onChangeVectors={range.updateVectors}\r\n />\r\n {detail?.showTimeWindow &&\r\n <EdaTimeWindowPickerPanel\r\n start={range.btTotal}\r\n end={range.etTotal}\r\n bt={range.btWindow}\r\n et={range.etWindow}\r\n step={range.step}\r\n disabled={range.sampling === EdaSamplingType.Changes} // FIXME default -> ??\r\n onTimeWindowChanged={range.updateTimeWindow}\r\n />\r\n }\r\n {children}\r\n </Space>\r\n }\r\n </Card>\r\n )\r\n}"]}
|
|
@@ -1,40 +1,37 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import React, { useEffect } from "react";
|
|
2
|
+
import { useSampleRange } from "../context/sharedSampleRangeContext";
|
|
3
|
+
import { useEdaVectorData } from "../context/edaVectorDataContext";
|
|
4
4
|
import { EdaDataBasePanel } from "./edaDataBasePanel";
|
|
5
5
|
import { EdaChartViewer } from "./edaChartViewer";
|
|
6
6
|
import { useEdaConfig } from "../context/edaConfigContext";
|
|
7
7
|
export const EdaGraphPanel = ({ api, pageSize, data, isActive }) => {
|
|
8
8
|
const { detail } = useEdaConfig();
|
|
9
|
-
const range =
|
|
10
|
-
const dataContext =
|
|
9
|
+
const range = useSampleRange();
|
|
10
|
+
const dataContext = useEdaVectorData();
|
|
11
11
|
useEffect(() => {
|
|
12
|
-
if (data === undefined
|
|
12
|
+
if (data === undefined) {
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
const dataSourceChanged = dataContext.loadedData !== data;
|
|
16
16
|
if (isActive) {
|
|
17
17
|
if (dataSourceChanged) {
|
|
18
|
-
if (range.vectorPage !== 1) {
|
|
19
|
-
range.
|
|
18
|
+
if (range.vectorPage !== 1 || range.vectors !== undefined) {
|
|
19
|
+
range.updatePage(1);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
dataContext.loadAllData(data);
|
|
20
23
|
}
|
|
21
|
-
dataContext.loadAllData(data);
|
|
22
24
|
return;
|
|
23
25
|
}
|
|
24
|
-
if (dataContext.loadedRange?.vectorPage !== range.vectorPage) {
|
|
26
|
+
if (dataContext.loadedRange?.vectorPage !== range.vectorPage || dataContext.loadedRange?.vectors !== range.vectors) {
|
|
25
27
|
dataContext.loadAllData(data);
|
|
26
28
|
}
|
|
27
29
|
else {
|
|
28
30
|
dataContext.loadSpecificVectors(dataContext.vectors.filter((v) => dataContext.visible.has(v.ID)));
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
|
-
}, [isActive, data, detail?.showTimeWindow, range]);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
React.createElement(EdaChartViewer, { vectors: dataContext.vectors, data: dataContext.data, visibleVectors: dataContext.visible, isDataInitialized: dataContext.initialized, onToggleVisibility: dataContext.toggleVectorVisibility, onToggleAllVisibility: dataContext.setAllVectorVisibility })));
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
return React.createElement("h1", null, "no data");
|
|
38
|
-
}
|
|
33
|
+
}, [isActive, data, dataContext, detail?.showTimeWindow, range]);
|
|
34
|
+
return (React.createElement(EdaDataBasePanel, { api: api, data: data, range: range, dataContext: dataContext, pageSize: pageSize },
|
|
35
|
+
React.createElement(EdaChartViewer, { vectors: dataContext.vectors, data: dataContext.data, visibleVectors: dataContext.visible, isDataInitialized: dataContext.initialized, onToggleVisibility: dataContext.toggleVectorVisibility, onToggleAllVisibility: dataContext.setAllVectorVisibility })));
|
|
39
36
|
};
|
|
40
37
|
//# sourceMappingURL=edaGraphPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaGraphPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaGraphPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,
|
|
1
|
+
{"version":3,"file":"edaGraphPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaGraphPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AASzD,MAAM,CAAC,MAAM,aAAa,GAAc,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAC,EAAE,EAAE;IACxE,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC;QAE1D,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,iBAAiB,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACxD,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO;YACX,CAAC;YAED,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC,WAAW,EAAE,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjH,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjE,OAAO,CACH,oBAAC,gBAAgB,IACb,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ;QAElB,oBAAC,cAAc,IACX,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,cAAc,EAAE,WAAW,CAAC,OAAO,EACnC,iBAAiB,EAAE,WAAW,CAAC,WAAW,EAC1C,kBAAkB,EAAE,WAAW,CAAC,sBAAsB,EACtD,qBAAqB,EAAE,WAAW,CAAC,sBAAsB,GAC3D,CACa,CACtB,CAAC;AACN,CAAC,CAAA","sourcesContent":["import React, {FC, useEffect} from \"react\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport {TypedData} from \"../constants/edaTypes\";\r\nimport {useSampleRange} from \"../context/sharedSampleRangeContext\";\r\nimport {useEdaVectorData} from \"../context/edaVectorDataContext\";\r\nimport {EdaDataBasePanel} from \"./edaDataBasePanel\";\r\nimport {EdaChartViewer} from \"./edaChartViewer\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n pageSize?: number\r\n data?: TypedData\r\n isActive: boolean\r\n}\r\n\r\nexport const EdaGraphPanel: FC<Props> = ({api, pageSize, data, isActive}) => {\r\n const {detail} = useEdaConfig();\r\n\r\n const range = useSampleRange();\r\n const dataContext = useEdaVectorData();\r\n\r\n useEffect(() => {\r\n if (data === undefined) {\r\n return;\r\n }\r\n\r\n const dataSourceChanged = dataContext.loadedData !== data;\r\n\r\n if (isActive) {\r\n if (dataSourceChanged) {\r\n if (range.vectorPage !== 1 || range.vectors !== undefined) {\r\n range.updatePage(1);\r\n } else {\r\n dataContext.loadAllData(data);\r\n }\r\n return;\r\n }\r\n\r\n if (dataContext.loadedRange?.vectorPage !== range.vectorPage || dataContext.loadedRange?.vectors !== range.vectors) {\r\n dataContext.loadAllData(data);\r\n } else {\r\n dataContext.loadSpecificVectors(dataContext.vectors.filter((v) => dataContext.visible.has(v.ID)));\r\n }\r\n }\r\n }, [isActive, data, dataContext, detail?.showTimeWindow, range]);\r\n\r\n return (\r\n <EdaDataBasePanel\r\n api={api}\r\n data={data}\r\n range={range}\r\n dataContext={dataContext}\r\n pageSize={pageSize}\r\n >\r\n <EdaChartViewer\r\n vectors={dataContext.vectors}\r\n data={dataContext.data}\r\n visibleVectors={dataContext.visible}\r\n isDataInitialized={dataContext.initialized}\r\n onToggleVisibility={dataContext.toggleVectorVisibility}\r\n onToggleAllVisibility={dataContext.setAllVectorVisibility}\r\n />\r\n </EdaDataBasePanel>\r\n );\r\n}"]}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { FC } from "react";
|
|
1
|
+
import React, { FC } from "react";
|
|
2
2
|
import dayjs from "d2core/dayjs";
|
|
3
|
-
import { EdaSamplingType } from "../constants/edaTypes";
|
|
3
|
+
import { EdaSamplingType, TypedData } from "../constants/edaTypes";
|
|
4
|
+
import EdaManagerApi, { TreeItem } from "../../../../api/eda/edaManagerApi";
|
|
4
5
|
interface Props {
|
|
6
|
+
api?: EdaManagerApi;
|
|
7
|
+
data?: TypedData;
|
|
5
8
|
bt: dayjs.Dayjs;
|
|
6
9
|
et: dayjs.Dayjs;
|
|
7
10
|
sampling: EdaSamplingType;
|
|
@@ -9,7 +12,12 @@ interface Props {
|
|
|
9
12
|
pageSize: number;
|
|
10
13
|
loading: boolean;
|
|
11
14
|
page: number;
|
|
12
|
-
|
|
15
|
+
vectors?: TreeItem[];
|
|
16
|
+
displayedVectors?: TreeItem[];
|
|
17
|
+
onChangeRange: (bt: dayjs.Dayjs, et: dayjs.Dayjs, step: EdaSamplingType) => void;
|
|
18
|
+
onChangePage: (page: number) => void;
|
|
19
|
+
onChangeVectors: (vectors: TreeItem[]) => void;
|
|
20
|
+
children?: React.ReactNode;
|
|
13
21
|
}
|
|
14
22
|
export declare const EdaSampleRangePickerPanel: FC<Props>;
|
|
15
23
|
export {};
|