d2aura 26.0.11 → 26.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/api/eda/edaManagerApi.d.ts +19 -2
  2. package/api/eda/edaManagerApi.js +36 -3
  3. package/api/eda/edaManagerApi.js.map +1 -1
  4. package/api/eda/generated/events.d.ts +86 -28
  5. package/api/eda/generated/events.js +154 -42
  6. package/api/eda/generated/events.js.map +1 -1
  7. package/api/eda/generated/structures.d.ts +21 -0
  8. package/api/eda/generated/structures.js.map +1 -1
  9. package/api/impl/utils/reportError.js +16 -0
  10. package/api/impl/utils/reportError.js.map +1 -1
  11. package/api/webPush/webPushApi.js.map +1 -1
  12. package/api/webPush/webPushUtils.js.map +1 -1
  13. package/core/i18n/d2aura.sk.json +8 -0
  14. package/core/i18n/jsapi.sk.json +4 -0
  15. package/core/i18n/jsapi.ua.json +4 -0
  16. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.d.ts +13 -37
  17. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +114 -211
  18. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
  19. package/coreui/components/edaManagerComponent/components/edaDetailPanel.d.ts +2 -0
  20. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js +2 -2
  21. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js.map +1 -1
  22. package/coreui/components/edaManagerComponent/components/edaGraphPanel.d.ts +14 -5
  23. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +338 -326
  24. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
  25. package/coreui/components/edaManagerComponent/components/edaTablePanel.d.ts +15 -4
  26. package/coreui/components/edaManagerComponent/components/edaTablePanel.js +139 -64
  27. package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
  28. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.d.ts +3 -8
  29. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js +12 -38
  30. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js.map +1 -1
  31. package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +1 -1
  32. package/coreui/components/edaManagerComponent/components/edaTreeView.js +5 -5
  33. package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
  34. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.d.ts +8 -2
  35. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +39 -11
  36. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
  37. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +33 -0
  38. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js +3 -0
  39. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -0
  40. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.d.ts +9 -0
  41. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +267 -0
  42. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -0
  43. package/coreui/components/edaManagerComponent/context/loadingContext.d.ts +7 -0
  44. package/coreui/components/edaManagerComponent/context/loadingContext.js +3 -0
  45. package/coreui/components/edaManagerComponent/context/loadingContext.js.map +1 -0
  46. package/coreui/components/edaManagerComponent/context/sharedSampleRange.d.ts +1 -2
  47. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js +10 -0
  48. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js.map +1 -1
  49. package/coreui/components/edaManagerComponent/edaDetail.d.ts +4 -12
  50. package/coreui/components/edaManagerComponent/edaDetail.js +53 -88
  51. package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
  52. package/coreui/components/edaManagerComponent/edaNavigator.d.ts +2 -1
  53. package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
  54. package/coreui/components/edaManagerComponent/edaSelect.d.ts +13 -7
  55. package/coreui/components/edaManagerComponent/edaSelect.js +211 -7
  56. package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
  57. package/coreui/components/edaManagerComponent/utils/utils.d.ts +17 -0
  58. package/coreui/components/edaManagerComponent/utils/utils.js +57 -0
  59. package/coreui/components/edaManagerComponent/utils/utils.js.map +1 -1
  60. package/coreui/components/webPush/webPushSwitch.js.map +1 -1
  61. package/coreui/images/logo.svg +9 -9
  62. package/coreui/images/logo_full.svg +11 -11
  63. package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +64 -2
  64. package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +51 -13
  65. package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +304 -4
  66. package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +9 -3
  67. package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +89 -3
  68. package/d2configuration/edaManager/EDA_StatVectorRec.xml +56 -0
  69. package/d2configuration/edaManager/SD.EM_EDA_StatVectorRec_V1.xml +125 -0
  70. package/d2configuration/edaManager/SD.EM_Filter_Condition.xml +156 -0
  71. package/d2configuration/edaManager/SD.EM_Tree_Item.xml +34 -1
  72. package/package.json +3 -3
  73. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.d.ts +0 -6
  74. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.js +0 -14
  75. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"edaGraphPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaGraphPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {BaseDataProps, BaseDataState, EdaBaseDataPanel} from \"./edaDataBasePanel\";\r\nimport {SD_EM_Tree_Item} from \"../../../../api/eda/generated/structures\";\r\nimport {withSharedSampleRangeContext} from \"../context/sharedSampleRangeWrapper\";\r\nimport ReactEcharts from \"echarts-for-react\";\r\nimport {Button, Checkbox, CheckboxProps, ConfigProvider, Space, ThemeConfig} from \"antd\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {AliasToken} from \"antd/es/theme/interface\";\r\nimport {GridApi, GridReadyEvent, ICellRendererParams} from \"ag-grid-community\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {VectorValue} from \"../../../../api/eda/edaManagerApi\";\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 {RowSelectionOptions} from \"ag-grid-community/dist/types/src/entities/gridOptions\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {CallbackDataParams, ECBasicOption, TopLevelFormatterParams} from \"echarts/types/dist/shared\";\r\nimport {OptionDataValue} from \"echarts/types/src/util/types\";\r\nimport {DownloadOutlined, RetweetOutlined, StockOutlined, ZoomInOutlined} from \"@ant-design/icons\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport memoizeOne from \"memoize-one\";\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\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: \"multiRow\",\r\n headerCheckbox: false,\r\n checkboxes: false,\r\n}\r\n\r\nconst colors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'];\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\ninterface RowData extends SD_EM_Tree_Item {\r\n id: number\r\n visible: boolean\r\n invalid: boolean\r\n}\r\n\r\ninterface Props extends BaseDataProps {\r\n showChartLegend?: boolean\r\n}\r\n\r\ninterface State extends BaseDataState {\r\n columnDefs: DataGridColDef[]\r\n labelData?: RowData[]\r\n\r\n showLegend?: boolean\r\n dataZoom: boolean\r\n}\r\n\r\nclass EdaGraphPanel extends EdaBaseDataPanel<Props, State> {\r\n private mask = LocaleHolder.getDateTimeFormat(true, false, false, true);\r\n //@ts-ignore\r\n private gridApi?: GridApi;\r\n private chartInstance: ECharts | null = null;\r\n\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.tooltipFormatter = this.tooltipFormatter.bind(this);\r\n this.legendSelectChanged = this.legendSelectChanged.bind(this);\r\n this.checkboxCellRenderer = this.checkboxCellRenderer.bind(this);\r\n this.onHeaderCheckboxToggle = this.onHeaderCheckboxToggle.bind(this);\r\n this.getOptions = memoizeOne(this.getOptions);\r\n }\r\n\r\n async componentDidUpdate(prevProps: Readonly<Props>, prevState: Readonly<State>): Promise<void> {\r\n await super.componentDidUpdate(prevProps, prevState);\r\n\r\n if (prevState.labelData !== this.state.labelData) {\r\n this.setState({columnDefs: this.getColumnDefs()});\r\n }\r\n }\r\n\r\n protected getDefaultDataBaseState(props: Props): Omit<State, keyof BaseDataState> {\r\n return {\r\n columnDefs: this.getColumnDefs(),\r\n\r\n showLegend: props.showChartLegend,\r\n dataZoom: false,\r\n };\r\n }\r\n\r\n protected onDataLoaded(data: {[id: number]: VectorValue[]}, vectors: SD_EM_Tree_Item[]): void {\r\n const {labelData} = this.state;\r\n\r\n if (labelData === undefined) {\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 },\r\n data: values.map(v => [v.Value.valueTime, v.Value.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 => ({...v, id: index, visible: true, invalid: false}));\r\n\r\n labels?.forEach(item => {\r\n selectedMap[item.DisplayName] = item.visible;\r\n });\r\n\r\n this.chartInstance?.setOption<ChartOption>({series: chartSeries, legend: {selected: selectedMap}}, {replaceMerge: ['series']});\r\n this.setState({labelData: labels});\r\n } else {\r\n const newLabelData = [...labelData];\r\n\r\n newLabelData.forEach((row) => {\r\n const values = data[row.ID];\r\n\r\n this.chartInstance?.setOption<ChartOption>({series: [{name: row.DisplayName, id: row.ID, data: values?.map(v => [v.Value.valueTime, v.Value.value])}]});\r\n row.invalid = !values;\r\n });\r\n\r\n this.setState({labelData: newLabelData});\r\n }\r\n }\r\n\r\n protected onDataSourceChanged() {\r\n this.setState({labelData: undefined});\r\n }\r\n\r\n protected onLoadVectors(vectors: SD_EM_Tree_Item[]): SD_EM_Tree_Item[] {\r\n const {labelData} = this.state;\r\n\r\n if (labelData) {\r\n return vectors.filter((v) => labelData.find((l) => l.ID === v.ID && l.visible));\r\n }\r\n\r\n return vectors;\r\n }\r\n\r\n protected renderContent(token: AliasToken): React.ReactElement {\r\n const {showLegend} = this.state;\r\n\r\n return (\r\n <WithCss useStyles={useStyles}>\r\n {(css) =>\r\n <div className={css.styles.baseLayout}>\r\n {this.renderChart(token)}\r\n {showLegend && this.renderLegend(token)}\r\n </div>\r\n }\r\n </WithCss>\r\n )\r\n }\r\n\r\n private renderChart(token: AliasToken) {\r\n const {size} = this.props;\r\n const {showLegend, dataZoom} = this.state;\r\n\r\n return (\r\n <div className = {\"chart\"}>\r\n <Space>\r\n <Button\r\n size={size}\r\n icon={<StockOutlined/>}\r\n title={i18n(\"Show Legend\")}\r\n type={showLegend ? \"primary\" : \"default\"}\r\n onClick={() => this.setState({showLegend: !showLegend})}\r\n />\r\n <Space.Compact>\r\n <Button\r\n size={size}\r\n icon={<ZoomInOutlined/>}\r\n title={i18n(\"Zoom\")}\r\n type={dataZoom ? \"primary\" : \"default\"}\r\n onClick={() => {\r\n this.setState({dataZoom: !dataZoom}, () => {\r\n this.chartInstance?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: this.state.dataZoom});\r\n });\r\n }}\r\n />\r\n <Button\r\n size={size}\r\n icon={<RetweetOutlined/>}\r\n title={i18n(\"Restore\")}\r\n onClick={() => {\r\n this.setState({dataZoom: false}, () => {\r\n this.chartInstance?.dispatchAction({type: 'dataZoom', start: 0, end: 100});\r\n this.chartInstance?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: false});\r\n });\r\n }}\r\n />\r\n </Space.Compact>\r\n <Button\r\n size={size}\r\n icon={<DownloadOutlined/>}\r\n title={i18n(\"Export as PNG\")}\r\n onClick={() => {\r\n if (this.chartInstance) {\r\n const img = this.chartInstance.getDataURL({type: 'png', pixelRatio: 2, backgroundColor: '#fff', excludeComponents: ['dataZoom', 'toolbox']});\r\n\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 <ReactEcharts\r\n option={this.getOptions(token, !!showLegend)}\r\n onChartReady={(instance: ECharts) => {\r\n this.chartInstance = instance;\r\n instance.on(\"legendselectchanged\", this.legendSelectChanged);\r\n }}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n private getOptions(token: AliasToken, showLegend: boolean): ChartOption {\r\n return {\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: this.tooltipFormatter\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(this.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(this.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(this.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 },\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 }\r\n }\r\n\r\n private renderLegend(theme: AliasToken) {\r\n const {columnDefs, labelData} = this.state;\r\n const height = 35 + 28 * (labelData ?? []).length + 15 /*scrollbar*/;\r\n\r\n return (\r\n <div className={\"legend\"} style={{flex: `0 0 ${height}px`}}>\r\n <ExtendedDataGrid\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 this.gridApi = params.api;\r\n }}\r\n rowData={labelData}\r\n tablePanelStyle={{marginTop: `0 ${theme.paddingXXS}`}}\r\n panelStyle={{padding: `0 ${theme.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 rowSelection={rowSelection}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n private legendSelectChanged(params: any) {\r\n const {labelData} = this.state;\r\n\r\n if (labelData !== undefined && this.chartInstance !== null) {\r\n const name: string = params.name;\r\n const result = [...labelData];\r\n const row = result.find((r) => r.DisplayName === name);\r\n\r\n if (row) {\r\n row.visible = params.selected[name];\r\n\r\n if (row.visible && row.invalid) {\r\n this.loadVectorData([row]);\r\n return;\r\n }\r\n }\r\n\r\n this.setState({labelData: result});\r\n }\r\n }\r\n\r\n private tooltipFormatter(p: TopLevelFormatterParams) {\r\n const params = p as CallbackDataParams[];\r\n const values = params[0].value as OptionDataValue[];\r\n const date = dayjs(values[0]).format(this.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 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;\">${values[1] !== null ? LocaleHolder.formatNumber(values[1] as number) : \"Invalid\"}</span></div>`;\r\n });\r\n\r\n return list;\r\n }\r\n\r\n private checkboxCellRenderer(params: ICellRendererParams) {\r\n const checked = params.data.visible;\r\n\r\n return (\r\n <ColoredCheckbox\r\n index={params.data.id}\r\n checked={checked}\r\n onChange={(event) => {\r\n const {labelData} = this.state;\r\n\r\n if (labelData) {\r\n const result = [...labelData];\r\n const row = labelData.find((l) => l.ID === params.data.ID);\r\n\r\n if (row) {\r\n row.visible = event.target.checked;\r\n this.chartInstance?.setOption<ChartOption>({legend: {selected: {[row.DisplayName]: row.visible}}});\r\n\r\n if (row.visible && row.invalid) {\r\n this.loadVectorData([row]);\r\n return;\r\n }\r\n }\r\n\r\n this.setState({labelData: result});\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private onHeaderCheckboxToggle(checked: boolean) {\r\n const {labelData} = this.state;\r\n\r\n if (!labelData) {\r\n return;\r\n }\r\n\r\n const nextLabelData = [...labelData];\r\n const selectedMap: Record<string, boolean> = {};\r\n\r\n nextLabelData.forEach((l) => {\r\n l.visible = checked;\r\n selectedMap[l.DisplayName] = checked;\r\n });\r\n this.chartInstance?.setOption<ChartOption>({legend: {selected: selectedMap}});\r\n this.setState({labelData: nextLabelData});\r\n }\r\n\r\n private getColumnDefs(): DataGridColDef[] {\r\n return [\r\n {\r\n field: \"checkbox\",\r\n headerName: i18n(\"Checkbox\"),\r\n headerComponent: CustomHeader,\r\n headerComponentParams: {\r\n labelData: this.state?.labelData, // in constructor state doesn't exist\r\n onToggle: this.onHeaderCheckboxToggle\r\n },\r\n maxWidth: 32,\r\n width: 32,\r\n minWidth: 32,\r\n cellRenderer: this.checkboxCellRenderer,\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 group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Max\",\r\n headerName: i18n(\"Max\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Sum\",\r\n headerName: i18n(\"Sum\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Average\",\r\n headerName: i18n(\"Average\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Units\",\r\n headerName: i18n(\"Units\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ]\r\n }\r\n}\r\n\r\nconst CustomHeader = (props: {labelData?: RowData[], onToggle: (checked: boolean) => void}) => {\r\n const {labelData, onToggle} = props;\r\n const visibleCount = labelData?.filter((i) => i.visible).length ?? 0;\r\n const totalCount = labelData?.length || 0;\r\n\r\n return (\r\n <div className=\"custom-header-wrapper\">\r\n <Checkbox\r\n checked={totalCount > 0 && visibleCount === totalCount}\r\n indeterminate={visibleCount > 0 && visibleCount < totalCount}\r\n onChange={(e) => {\r\n onToggle(e.target.checked);\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default withSharedSampleRangeContext(EdaGraphPanel);"]}
1
+ {"version":3,"file":"edaGraphPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaGraphPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useContext, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport EdaManagerApi, {VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {GroupData, IdType, ScenarioData, VectorData} from \"../constants/edaTypes\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\nimport {SharedSampleRangeContext} from \"../context/sharedSampleRange\";\r\nimport {EdaVectorDataContext, EdaVectorDataState} from \"../context/edaVectorDataContext\";\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 {SD_EM_Tree_Item} from \"../../../../api/eda/generated/structures\";\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} from \"ag-grid-community\";\r\nimport {EdaDataBasePanel} from \"./edaDataBasePanel\";\r\nimport {formatValue} from \"../utils/utils\";\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 > .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: \"multiRow\",\r\n headerCheckbox: false,\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 SD_EM_Tree_Item {\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 api: EdaManagerApi\r\n pageSize?: number\r\n data?: VectorData | GroupData | ScenarioData\r\n type?: IdType\r\n isActive: boolean\r\n showTimeWindow?: boolean\r\n showChartLegend?: boolean\r\n size?: SizeType\r\n}\r\n\r\nexport const EdaGraphPanel: FC<Props> = ({api, pageSize, type, data, isActive, showTimeWindow, showChartLegend, size}) => {\r\n const mask = LocaleHolder.getDateTimeFormat(true, false, false, true);\r\n const css = useStyles();\r\n const range = useContext(SharedSampleRangeContext);\r\n const dataContext = useContext(EdaVectorDataContext);\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 const {token} = theme.useToken();\r\n const [labelData, setLabelData] = useState<RowData[] | undefined>(undefined);\r\n const [showLegend, setShowLegend] = useState<boolean>(!!showChartLegend);\r\n const [dataZoom, setDataZoom] = useState(false);\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, dataContext),\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 },\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, dataContext?.vectors]);\r\n\r\n const legendSelectChanged = (params: any) => {\r\n if (chartInstance.current !== null) {\r\n const name: string = params.name;\r\n const row = dataContext?.vectors.find((r) => r.DisplayName === name);\r\n\r\n if (row) {\r\n dataContext?.toggleVectorVisibility(row.ID, params.selected[name]);\r\n }\r\n }\r\n }\r\n\r\n const legendSelectRef = useRef(legendSelectChanged);\r\n\r\n useEffect(() => {\r\n legendSelectRef.current = legendSelectChanged;\r\n }, [legendSelectChanged]);\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 chartInstance.current?.resize();\r\n });\r\n\r\n resizeObserver.observe(chartContainerRef.current);\r\n\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n\r\n const renderChart = () => (\r\n <Space direction={\"vertical\"} className={\"chart\"}>\r\n <Space>\r\n <Button\r\n size={size}\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 size={size}\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 size={size}\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 size={size}\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\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 lazyUpdate\r\n onChartReady={(instance: ECharts) => {\r\n chartInstance.current = instance;\r\n instance.on(\"legendselectchanged\", (params) => legendSelectRef.current(params));\r\n }}\r\n />\r\n </div>\r\n </Space>\r\n );\r\n\r\n const renderLegend = () => {\r\n const height = 35 + 28 * (labelData ?? []).length + 15 /*scrollbar*/;\r\n\r\n return (\r\n <div className={\"legend\"} style={{flex: `0 0 ${height}px`}}>\r\n <ExtendedDataGrid\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 rowSelection={rowSelection}\r\n />\r\n </div>\r\n )\r\n };\r\n\r\n const onHeaderCheckboxToggle = async (checked: boolean) => {\r\n dataContext?.setAllVectorVisibility(checked);\r\n }\r\n\r\n const checkboxCellRenderer = (params: ICellRendererParams) => {\r\n return (\r\n <ColoredCheckbox\r\n index={params.data.id}\r\n checked={dataContext?.visible.has(params.data.ID)}\r\n onChange={async (event) => {\r\n const row = dataContext?.vectors.find((l) => l.ID === params.data.ID);\r\n\r\n if (row) {\r\n dataContext?.toggleVectorVisibility(params.data.ID, event.target.checked);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n const CustomHeader = (props: { onToggle: (checked: boolean) => void }) => {\r\n return (\r\n <div className=\"custom-header-wrapper\">\r\n <Checkbox\r\n checked={dataContext?.allVectorsVisible() && !dataContext?.noVectorsVisible()}\r\n indeterminate={!dataContext?.allVectorsVisible() && !dataContext?.noVectorsVisible()}\r\n onChange={(e) => {\r\n props.onToggle(e.target.checked);\r\n }}\r\n />\r\n </div>\r\n );\r\n };\r\n\r\n const getColumnDefs = (): DataGridColDef[] => ([\r\n {\r\n field: \"checkbox\",\r\n headerName: i18n(\"Checkbox\"),\r\n headerComponent: CustomHeader,\r\n headerComponentParams: {\r\n onToggle: onHeaderCheckboxToggle\r\n },\r\n maxWidth: 32,\r\n width: 32,\r\n minWidth: 32,\r\n cellRenderer: checkboxCellRenderer,\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) => dataContext?.visible.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) => dataContext?.visible.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) => dataContext?.visible.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) => dataContext?.visible.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) => dataContext?.visible.has(props.data.ID) ? props.data.Units : undefined,\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ]);\r\n\r\n const columnDefs = useMemo(() => getColumnDefs(), [dataContext?.data, dataContext?.visible]);\r\n\r\n useEffect(() => {\r\n const selectedMap: Record<string, boolean> = {};\r\n\r\n dataContext?.vectors.forEach((vector) => {\r\n selectedMap[vector.DisplayName] = dataContext?.visible.has(vector.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({legend: {selected: selectedMap}});\r\n }, [dataContext?.visible]);\r\n\r\n useEffect(() => {\r\n if (type === undefined || data === undefined || !range || !dataContext) {\r\n return;\r\n }\r\n\r\n const dataSourceChanged = dataContext.loadedType !== type || dataContext.loadedData !== data;\r\n\r\n if (isActive) {\r\n if (dataSourceChanged) {\r\n if (range.vectorPage !== 1) {\r\n range.updateValues(range.btTotal, range.etTotal, range.sampling, 1);\r\n }\r\n\r\n setLabelData(undefined);\r\n dataContext.loadAllData(type, data);\r\n return;\r\n }\r\n\r\n dataContext.loadSpecificVectors(dataContext.vectors.filter((v) => dataContext.visible.has(v.ID)));\r\n } else if (dataSourceChanged) {\r\n setLabelData(undefined);\r\n }\r\n }, [isActive, type, data, showTimeWindow, range]);\r\n\r\n useEffect(() => {\r\n if (dataContext?.data && dataContext.initialized) {\r\n if (labelData === undefined) {\r\n const chartSeries: LineSeriesOption[] = dataContext.vectors.map((v): LineSeriesOption => {\r\n const values = dataContext.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 },\r\n data: values.data?.data?.map((v) => [v.Value.valueTime, v.Value.value]) ?? [],\r\n animationDuration: 300,\r\n animationEasing: 'exponentialOut',\r\n }\r\n });\r\n const selectedMap: Record<string, boolean> = {};\r\n const labels = dataContext.vectors.map((v, index): RowData => {\r\n const stats = dataContext.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] = dataContext.isVectorVisible(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 } else {\r\n const newLabelData = [...labelData];\r\n\r\n newLabelData.forEach((row) => {\r\n const values = dataContext.data[row.ID]?.data as VectorValuesData | undefined;\r\n\r\n if (values?.data) {\r\n chartInstance.current?.setOption<ChartOption>({series: [{name: row.DisplayName, id: row.ID, data: values.data.map(v => [v.Value.valueTime, v.Value.value])}]});\r\n row.Min = values.stats?.Min.value as number;\r\n row.Max = values.stats?.Max.value as number;\r\n row.Sum = values.stats?.Sum.value as number;\r\n row.Avg = values.stats?.Avg.value as number;\r\n }\r\n });\r\n\r\n setLabelData(newLabelData);\r\n }\r\n }\r\n }, [dataContext?.data, dataContext?.vectors, dataContext?.initialized]);\r\n\r\n useEffect(() => {\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: dataZoom});\r\n }, [dataZoom]);\r\n\r\n if (range && dataContext) {\r\n return (\r\n <EdaDataBasePanel\r\n api={api}\r\n type={type}\r\n data={data}\r\n size={size}\r\n range={range}\r\n dataContext={dataContext}\r\n showTimeWindow={showTimeWindow}\r\n pageSize={pageSize}\r\n >\r\n <div className={css.styles.baseLayout}>\r\n {renderChart()}\r\n {showLegend && renderLegend()}\r\n </div>\r\n </EdaDataBasePanel>\r\n );\r\n } else {\r\n return <h1>no data</h1>\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, dataContext?: EdaVectorDataState) => {\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 = dataContext?.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,4 +1,15 @@
1
- import React from "react";
2
- import { BaseDataProps } from "./edaDataBasePanel";
3
- declare const _default: (props: Omit<BaseDataProps, "rangeContext">) => React.JSX.Element;
4
- export default _default;
1
+ import { FC } from "react";
2
+ import { GroupData, IdType, ScenarioData, VectorData } from "../constants/edaTypes";
3
+ import { SizeType } from "antd/lib/config-provider/SizeContext";
4
+ import EdaManagerApi from "../../../../api/eda/edaManagerApi";
5
+ interface Props {
6
+ api: EdaManagerApi;
7
+ pageSize?: number;
8
+ data?: VectorData | GroupData | ScenarioData;
9
+ type?: IdType;
10
+ isActive: boolean;
11
+ showTimeWindow?: boolean;
12
+ size?: SizeType;
13
+ }
14
+ export declare const EdaTablePanel: FC<Props>;
15
+ export {};
@@ -1,73 +1,148 @@
1
- import React from "react";
1
+ import React, { useContext, useEffect, useMemo, useState } from "react";
2
+ import { SharedSampleRangeContext } from "../context/sharedSampleRange";
3
+ import { EdaVectorDataContext } from "../context/edaVectorDataContext";
2
4
  import ExtendedDataGrid from "d2coreui/components/grid/extendedDataGrid";
3
- import { Empty } from "antd";
5
+ import { Empty, theme } from "antd";
4
6
  import i18n from "d2core/i18n/i18n";
5
- import { EdaBaseDataPanel } from "./edaDataBasePanel";
6
- import { withSharedSampleRangeContext } from "../context/sharedSampleRangeWrapper";
7
- class EdaTablePanel extends EdaBaseDataPanel {
8
- constructor(props) {
9
- super(props);
10
- }
11
- getDefaultDataBaseState() {
12
- return {
13
- columnDefs: [],
14
- data: []
15
- };
16
- }
17
- onDataLoaded(data, vectors) {
18
- const ids = Object.keys(data).map(Number);
19
- const rowCount = ids.length > 0 ? data[ids[0]].length : 0;
20
- const result = Array.from({ length: rowCount }, (_, index) => {
21
- const row = { id: index };
7
+ import { EdaDataBasePanel } from "./edaDataBasePanel";
8
+ import { D2000UnixTimeNullValue } from "d2core/types/unixTimeUtils";
9
+ import { formatValue } from "../utils/utils";
10
+ var StatType;
11
+ (function (StatType) {
12
+ StatType["MIN"] = "Min";
13
+ StatType["MAX"] = "Max";
14
+ StatType["AVG"] = "Average";
15
+ StatType["SUM"] = "Sum";
16
+ })(StatType || (StatType = {}));
17
+ export const EdaTablePanel = ({ api, pageSize, type, data, isActive, showTimeWindow, size }) => {
18
+ const range = useContext(SharedSampleRangeContext);
19
+ const dataContext = useContext(EdaVectorDataContext);
20
+ const [statType, setStatType] = useState(StatType.AVG);
21
+ const { token } = theme.useToken();
22
+ const tableData = useMemo(() => {
23
+ if (dataContext?.data) {
24
+ const ids = Object.keys(dataContext.data).map(Number);
25
+ const rowByTime = new Map();
26
+ for (const id of ids) {
27
+ const vectorPoints = dataContext.data[id]?.data?.data || [];
28
+ for (const point of vectorPoints) {
29
+ const time = point.Value.valueTime;
30
+ if (time === undefined)
31
+ continue;
32
+ let row = rowByTime.get(time);
33
+ if (!row) {
34
+ row = {
35
+ id: time,
36
+ time: time
37
+ };
38
+ rowByTime.set(time, row);
39
+ }
40
+ row[id] = point.Value;
41
+ }
42
+ }
43
+ return Array.from(rowByTime.values()).sort((a, b) => (a.time || 0) - (b.time || 0));
44
+ }
45
+ return [];
46
+ }, [dataContext?.data]);
47
+ const statData = useMemo(() => {
48
+ if (dataContext?.data) {
49
+ const ids = Object.keys(dataContext.data).map(Number);
50
+ const data = {
51
+ id: -1,
52
+ time: D2000UnixTimeNullValue,
53
+ };
22
54
  for (let id of ids) {
23
- const vectorValue = data[id][index];
24
- if (vectorValue) {
25
- row[id] = vectorValue.Value;
26
- if (!row.time && vectorValue.Value.valueTime) {
27
- row.time = vectorValue.Value.valueTime;
55
+ const vectorStats = dataContext.data[id]?.data?.stats;
56
+ if (vectorStats) {
57
+ switch (statType) {
58
+ case StatType.MIN:
59
+ data[id] = vectorStats.Min;
60
+ break;
61
+ case StatType.MAX:
62
+ data[id] = vectorStats.Max;
63
+ break;
64
+ case StatType.AVG:
65
+ data[id] = vectorStats.Avg;
66
+ break;
67
+ case StatType.SUM:
68
+ data[id] = vectorStats.Sum;
69
+ break;
28
70
  }
29
71
  }
30
72
  }
31
- return row;
32
- });
33
- this.setState({ data: result, columnDefs: getColumnDefs(vectors) });
73
+ return [data];
74
+ }
75
+ return [];
76
+ }, [dataContext?.data, statType]);
77
+ const columnDefs = useMemo(() => {
78
+ if (dataContext?.vectors) {
79
+ return [
80
+ {
81
+ field: "time",
82
+ colId: "time",
83
+ type: ["dateTimeColumn"],
84
+ headerName: i18n("Vector Time"),
85
+ editable: (props) => props.node.isRowPinned(),
86
+ cellEditor: "customEnumCellEditor",
87
+ cellEditorParams: {
88
+ values: Object.values(StatType).map((v) => i18n(v)),
89
+ },
90
+ valueSetter: (params) => {
91
+ setStatType(Object.values(StatType)[params.newValue]);
92
+ return true;
93
+ },
94
+ cellRendererSelector: (params) => {
95
+ if (params.node.isRowPinned()) {
96
+ return { component: () => i18n(statType) };
97
+ }
98
+ return undefined;
99
+ },
100
+ group: i18n("Basic Columns")
101
+ },
102
+ ...dataContext.vectors.map((v) => ({
103
+ field: `${v.ID}.value`,
104
+ colId: String(v.ID),
105
+ type: ["alignRight"],
106
+ valueFormatter: (props) => formatValue(props.value, v.RoundingType, v.RoundingPlaces),
107
+ headerName: v.DisplayName,
108
+ group: i18n("Basic Columns"),
109
+ }))
110
+ ];
111
+ }
112
+ return [];
113
+ }, [dataContext?.vectors, statType]);
114
+ useEffect(() => {
115
+ if (type === undefined || data === undefined || !range || !dataContext || !isActive) {
116
+ return;
117
+ }
118
+ const dataSourceChanged = dataContext.loadedType !== type || dataContext.loadedData !== data;
119
+ if (dataSourceChanged) {
120
+ if (range.vectorPage !== 1) {
121
+ range.updateValues(range.btTotal, range.etTotal, range.sampling, 1);
122
+ }
123
+ dataContext.loadAllData(type, data);
124
+ return;
125
+ }
126
+ dataContext.loadSpecificVectors(dataContext.vectors);
127
+ }, [isActive, type, data, showTimeWindow, range]);
128
+ if (range && dataContext) {
129
+ return (React.createElement(EdaDataBasePanel, { api: api, type: type, data: data, size: size, range: range, dataContext: dataContext, showTimeWindow: showTimeWindow, pageSize: pageSize },
130
+ React.createElement("div", { style: { height: '100%' } },
131
+ React.createElement(ExtendedDataGrid, { columnDefs: columnDefs, onLoadData: callback => {
132
+ callback(1);
133
+ }, defaultGridConfiguration: {
134
+ pageSize: -1,
135
+ }, rowData: tableData, tablePanelStyle: { marginTop: token?.paddingXXS }, panelStyle: { padding: `0 ${token?.paddingXXS}px` }, settingsMenu: {
136
+ renderer: (menuElements) => menuElements.filter((e) => !["columnFilter", "columnsConfig"].includes(e.key))
137
+ }, toolbar: {
138
+ hideRecordCount: true,
139
+ }, search: {
140
+ hidden: true,
141
+ searchButtonHidden: true,
142
+ }, noRecordsOverlayRenderer: () => React.createElement(Empty, { description: i18n("No records found."), styles: { image: { height: "8vh" } } }), pinnedBottomRowData: statData, rowSelection: "multiple", singleClickEdit: true, stopEditingWhenCellsLoseFocus: true, enterNavigatesVerticallyAfterEdit: true }))));
34
143
  }
35
- renderContent(theme) {
36
- const { columnDefs, data } = this.state;
37
- return (React.createElement("div", null,
38
- React.createElement(ExtendedDataGrid, { columnDefs: columnDefs, onLoadData: callback => {
39
- callback(1);
40
- }, defaultGridConfiguration: {
41
- pageSize: -1,
42
- }, onGridReady: (params) => {
43
- this.gridApi = params.api;
44
- }, rowData: data, tablePanelStyle: { marginTop: theme.paddingXXS }, panelStyle: { padding: `0 ${theme.paddingXXS}px` }, settingsMenu: {
45
- renderer: (menuElements) => menuElements.filter((e) => !["columnFilter", "columnsConfig"].includes(e.key))
46
- }, toolbar: {
47
- hideRecordCount: true,
48
- }, search: {
49
- hidden: true,
50
- searchButtonHidden: true,
51
- }, noRecordsOverlayRenderer: () => React.createElement(Empty, { description: i18n("No records found."), styles: { image: { height: "8vh" } } }), rowSelection: "multiple", singleClickEdit: true, stopEditingWhenCellsLoseFocus: true, enterNavigatesVerticallyAfterEdit: true })));
144
+ else {
145
+ return React.createElement("h1", null, "no data");
52
146
  }
53
- }
54
- export default withSharedSampleRangeContext(EdaTablePanel);
55
- function getColumnDefs(ids) {
56
- return [
57
- {
58
- field: "time",
59
- colId: "time",
60
- type: ["dateTimeColumn"],
61
- headerName: i18n("Vector Time"),
62
- group: i18n("Basic Columns")
63
- },
64
- ...ids.map((v) => ({
65
- field: `${v.ID}.value`,
66
- colId: String(v.ID),
67
- type: ["numberColumn"],
68
- headerName: v.DisplayName,
69
- group: i18n("Basic Columns"),
70
- }))
71
- ];
72
- }
147
+ };
73
148
  //# sourceMappingURL=edaTablePanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edaTablePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaTablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {Empty} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {GridApi, GridReadyEvent} from \"ag-grid-community\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {SD_EM_Tree_Item} from \"../../../../api/eda/generated/structures\";\r\nimport {AliasToken} from \"antd/es/theme/interface\";\r\nimport {BaseDataProps, BaseDataState, EdaBaseDataPanel} from \"./edaDataBasePanel\";\r\nimport {withSharedSampleRangeContext} from \"../context/sharedSampleRangeWrapper\";\r\nimport {VectorValue} from \"../../../../api/eda/edaManagerApi\";\r\nimport {UnixTime} from \"d2jsapi\";\r\nimport {UnivalValue} from \"d2jsapi/dist/unival\";\r\n\r\ninterface GridRow {\r\n id: number\r\n time?: UnixTime\r\n\r\n [id: number]: UnivalValue\r\n}\r\n\r\ninterface State extends BaseDataState {\r\n columnDefs: DataGridColDef[]\r\n data: GridRow[]\r\n}\r\n\r\nclass EdaTablePanel extends EdaBaseDataPanel<BaseDataProps, State> {\r\n //@ts-ignore\r\n private gridApi?: GridApi;\r\n\r\n constructor(props: Readonly<BaseDataProps>) {\r\n super(props);\r\n }\r\n\r\n protected getDefaultDataBaseState(): Omit<State, keyof BaseDataState> {\r\n return {\r\n columnDefs: [],\r\n data: []\r\n };\r\n }\r\n\r\n protected onDataLoaded(data: {[id: number]: VectorValue[]}, vectors: SD_EM_Tree_Item[]) {\r\n const ids = Object.keys(data).map(Number);\r\n const rowCount = ids.length > 0 ? data[ids[0]].length : 0;\r\n const result = Array.from({length: rowCount}, (_, index): GridRow => {\r\n const row: GridRow = {id: index};\r\n\r\n for (let id of ids) {\r\n const vectorValue = data[id][index];\r\n\r\n if (vectorValue) {\r\n row[id] = vectorValue.Value;\r\n\r\n if (!row.time && vectorValue.Value.valueTime) {\r\n row.time = vectorValue.Value.valueTime;\r\n }\r\n }\r\n }\r\n\r\n return row;\r\n });\r\n\r\n this.setState({data: result, columnDefs: getColumnDefs(vectors)});\r\n }\r\n\r\n protected renderContent(theme: AliasToken): React.ReactElement {\r\n const {columnDefs, data} = this.state;\r\n\r\n return (\r\n <div>\r\n <ExtendedDataGrid\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 this.gridApi = params.api;\r\n }}\r\n rowData={data}\r\n tablePanelStyle={{marginTop: theme.paddingXXS}}\r\n panelStyle={{padding: `0 ${theme.paddingXXS}px`}}\r\n settingsMenu={{\r\n renderer: (menuElements) => menuElements.filter((e) => ![\"columnFilter\", \"columnsConfig\"].includes(e.key as string))\r\n }}\r\n toolbar={{\r\n hideRecordCount: true,\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <Empty description={i18n(\"No records found.\")} styles={{image: {height: \"8vh\"}}}/>\r\n }\r\n rowSelection=\"multiple\"\r\n singleClickEdit\r\n stopEditingWhenCellsLoseFocus\r\n enterNavigatesVerticallyAfterEdit\r\n />\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default withSharedSampleRangeContext(EdaTablePanel);\r\n\r\nfunction getColumnDefs(ids: SD_EM_Tree_Item[]): DataGridColDef[] {\r\n return [\r\n {\r\n field: \"time\",\r\n colId: \"time\",\r\n type: [\"dateTimeColumn\"],\r\n headerName: i18n(\"Vector Time\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ...ids.map((v): DataGridColDef => ({\r\n field: `${v.ID}.value`,\r\n colId: String(v.ID),\r\n type: [\"numberColumn\"],\r\n headerName: v.DisplayName,\r\n group: i18n(\"Basic Columns\"),\r\n }))\r\n ]\r\n}"]}
1
+ {"version":3,"file":"edaTablePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaTablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useContext, useEffect, useMemo, useState} from \"react\";\r\nimport {SharedSampleRangeContext} from \"../context/sharedSampleRange\";\r\nimport {EdaVectorDataContext} from \"../context/edaVectorDataContext\";\r\nimport {GroupData, IdType, ScenarioData, VectorData} from \"../constants/edaTypes\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {Empty, theme} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {UnixTime} from \"d2jsapi\";\r\nimport {UnivalValue} from \"d2jsapi/dist/unival\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {EdaDataBasePanel} from \"./edaDataBasePanel\";\r\nimport {D2000UnixTimeNullValue} from \"d2core/types/unixTimeUtils\";\r\nimport {formatValue} from \"../utils/utils\";\r\n\r\nenum StatType {\r\n MIN = \"Min\",\r\n MAX = \"Max\",\r\n AVG = \"Average\",\r\n SUM = \"Sum\",\r\n}\r\n\r\ninterface GridRow {\r\n id: number\r\n time?: UnixTime\r\n\r\n [id: number]: UnivalValue\r\n}\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n pageSize?: number\r\n data?: VectorData | GroupData | ScenarioData\r\n type?: IdType\r\n isActive: boolean\r\n showTimeWindow?: boolean\r\n size?: SizeType\r\n}\r\n\r\nexport const EdaTablePanel: FC<Props> = ({api, pageSize, type, data, isActive, showTimeWindow, size}) => {\r\n const range = useContext(SharedSampleRangeContext);\r\n const dataContext = useContext(EdaVectorDataContext);\r\n const [statType, setStatType] = useState<StatType>(StatType.AVG);\r\n const {token} = theme.useToken();\r\n\r\n const tableData = useMemo(() => {\r\n if (dataContext?.data) {\r\n const ids = Object.keys(dataContext.data).map(Number);\r\n const rowByTime = new Map<number, GridRow>();\r\n\r\n for (const id of ids) {\r\n const vectorPoints = dataContext.data[id]?.data?.data || [];\r\n\r\n for (const point of vectorPoints) {\r\n const time = point.Value.valueTime;\r\n\r\n if (time === undefined) continue;\r\n\r\n let row = rowByTime.get(time);\r\n\r\n if (!row) {\r\n row = {\r\n id: time,\r\n time: time\r\n }\r\n rowByTime.set(time, row);\r\n }\r\n\r\n row[id] = point.Value;\r\n }\r\n }\r\n\r\n return Array.from(rowByTime.values()).sort((a, b) => (a.time || 0) - (b.time || 0));\r\n }\r\n\r\n return [];\r\n }, [dataContext?.data]);\r\n\r\n const statData = useMemo(() => {\r\n if (dataContext?.data) {\r\n const ids = Object.keys(dataContext.data).map(Number);\r\n const data: GridRow = {\r\n id: -1,\r\n time: D2000UnixTimeNullValue,\r\n };\r\n\r\n for (let id of ids) {\r\n const vectorStats = dataContext.data[id]?.data?.stats;\r\n\r\n if (vectorStats) {\r\n switch (statType) {\r\n case StatType.MIN:\r\n data[id] = vectorStats.Min;\r\n break;\r\n case StatType.MAX:\r\n data[id] = vectorStats.Max;\r\n break;\r\n case StatType.AVG:\r\n data[id] = vectorStats.Avg;\r\n break;\r\n case StatType.SUM:\r\n data[id] = vectorStats.Sum;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return [data];\r\n }\r\n\r\n return [];\r\n }, [dataContext?.data, statType]);\r\n\r\n const columnDefs = useMemo((): DataGridColDef[] => {\r\n if (dataContext?.vectors) {\r\n return [\r\n {\r\n field: \"time\",\r\n colId: \"time\",\r\n type: [\"dateTimeColumn\"],\r\n headerName: i18n(\"Vector Time\"),\r\n editable: (props) => props.node.isRowPinned(),\r\n cellEditor: \"customEnumCellEditor\",\r\n cellEditorParams: {\r\n values: Object.values(StatType).map((v) => i18n(v)),\r\n },\r\n valueSetter: (params) => {\r\n setStatType(Object.values(StatType)[params.newValue]);\r\n return true;\r\n },\r\n cellRendererSelector: (params) => {\r\n if (params.node.isRowPinned()) {\r\n return {component: () => i18n(statType)};\r\n }\r\n return undefined;\r\n },\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ...dataContext.vectors.map((v): DataGridColDef => ({\r\n field: `${v.ID}.value`,\r\n colId: String(v.ID),\r\n type: [\"alignRight\"],\r\n valueFormatter: (props) => formatValue(props.value, v.RoundingType, v.RoundingPlaces),\r\n headerName: v.DisplayName,\r\n group: i18n(\"Basic Columns\"),\r\n }))\r\n ];\r\n }\r\n\r\n return [];\r\n }, [dataContext?.vectors, statType]);\r\n\r\n useEffect(() => {\r\n if (type === undefined || data === undefined || !range || !dataContext || !isActive) {\r\n return;\r\n }\r\n\r\n const dataSourceChanged = dataContext.loadedType !== type || dataContext.loadedData !== data;\r\n\r\n if (dataSourceChanged) {\r\n if (range.vectorPage !== 1) {\r\n range.updateValues(range.btTotal, range.etTotal, range.sampling, 1);\r\n }\r\n\r\n dataContext.loadAllData(type, data);\r\n return;\r\n }\r\n\r\n dataContext.loadSpecificVectors(dataContext.vectors);\r\n }, [isActive, type, data, showTimeWindow, range]);\r\n\r\n if (range && dataContext) {\r\n return (\r\n <EdaDataBasePanel\r\n api={api}\r\n type={type}\r\n data={data}\r\n size={size}\r\n range={range}\r\n dataContext={dataContext}\r\n showTimeWindow={showTimeWindow}\r\n pageSize={pageSize}\r\n >\r\n <div style={{height: '100%'}}>\r\n <ExtendedDataGrid\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 rowData={tableData}\r\n tablePanelStyle={{marginTop: token?.paddingXXS}}\r\n panelStyle={{padding: `0 ${token?.paddingXXS}px`}}\r\n settingsMenu={{\r\n renderer: (menuElements) => menuElements.filter((e) => ![\"columnFilter\", \"columnsConfig\"].includes(e.key as string))\r\n }}\r\n toolbar={{\r\n hideRecordCount: true,\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <Empty description={i18n(\"No records found.\")} styles={{image: {height: \"8vh\"}}}/>\r\n }\r\n pinnedBottomRowData={statData}\r\n rowSelection=\"multiple\"\r\n singleClickEdit\r\n stopEditingWhenCellsLoseFocus\r\n enterNavigatesVerticallyAfterEdit\r\n />\r\n </div>\r\n </EdaDataBasePanel>\r\n );\r\n } else {\r\n return <h1>no data</h1>\r\n }\r\n};"]}
@@ -5,27 +5,22 @@ import { StepType } from "../constants/edaTypes";
5
5
  interface Props {
6
6
  start: dayjs.Dayjs;
7
7
  end: dayjs.Dayjs;
8
+ bt: dayjs.Dayjs;
9
+ et: dayjs.Dayjs;
8
10
  step: StepType;
9
11
  size?: SizeType;
10
12
  disabled?: boolean;
11
13
  onTimeWindowChanged?: (bt: dayjs.Dayjs, et: dayjs.Dayjs, step: StepType) => void;
12
14
  }
13
- interface State {
14
- bt: dayjs.Dayjs;
15
- et: dayjs.Dayjs;
16
- step: StepType;
17
- }
18
- export declare class EdaTimeWindowPickerPanel extends React.Component<Props, State> {
15
+ export declare class EdaTimeWindowPickerPanel extends React.Component<Props> {
19
16
  private mask;
20
17
  constructor(props: Readonly<Props>);
21
- componentDidUpdate(prevProps: Readonly<Props>): void;
22
18
  render(): React.JSX.Element;
23
19
  private toStart;
24
20
  private toEnd;
25
21
  private previous;
26
22
  private next;
27
23
  private onStepUpdated;
28
- private timeWindowChanged;
29
24
  }
30
25
  export declare function getRange(start: dayjs.Dayjs, end: dayjs.Dayjs, step: StepType): {
31
26
  bt: dayjs.Dayjs;
@@ -45,32 +45,14 @@ export class EdaTimeWindowPickerPanel extends React.Component {
45
45
  constructor(props) {
46
46
  super(props);
47
47
  this.mask = LocaleHolder.getDateTimeFormat(true, false, false);
48
- const { bt, et } = getRange(props.start, props.end, props.step);
49
- this.state = {
50
- bt: bt,
51
- et: et,
52
- step: props.step,
53
- };
54
48
  this.toStart = this.toStart.bind(this);
55
49
  this.toEnd = this.toEnd.bind(this);
56
50
  this.previous = this.previous.bind(this);
57
51
  this.next = this.next.bind(this);
58
52
  this.onStepUpdated = this.onStepUpdated.bind(this);
59
- this.timeWindowChanged = this.timeWindowChanged.bind(this);
60
- }
61
- componentDidUpdate(prevProps) {
62
- if (!prevProps.start.isSame(this.props.start) || !prevProps.end.isSame(this.props.end)) {
63
- const { bt, et } = getRange(this.props.start, this.props.end, this.state.step);
64
- this.setState({ bt, et }, this.timeWindowChanged);
65
- }
66
- if (prevProps.step !== this.props.step) {
67
- const { bt, et } = getRange(this.props.start, this.props.end, this.props.step);
68
- this.setState({ bt, et, step: this.props.step }, this.timeWindowChanged);
69
- }
70
53
  }
71
54
  render() {
72
- const { size, start, end, disabled } = this.props;
73
- const { bt, et, step } = this.state;
55
+ const { size, start, end, bt, et, step, disabled } = this.props;
74
56
  return (React.createElement(WithCss, { useStyles: useStyles }, (css) => React.createElement(Space, { size: size, className: css.styles.baseLayout },
75
57
  React.createElement(Space.Compact, { size: size },
76
58
  React.createElement(Button, { icon: React.createElement(VerticalRightOutlined, null), disabled: bt.isSameOrBefore(start) || disabled, onClick: this.toStart }),
@@ -87,28 +69,25 @@ export class EdaTimeWindowPickerPanel extends React.Component {
87
69
  } }))));
88
70
  }
89
71
  toStart() {
90
- const { start } = this.props;
91
- const { step } = this.state;
72
+ const { start, step } = this.props;
92
73
  const unit = stepToDayJsType(step);
93
74
  if (!unit) {
94
75
  return;
95
76
  }
96
- this.setState({ bt: start, et: start.endOf(unit) }, this.timeWindowChanged);
77
+ this.props.onTimeWindowChanged?.(start, start.endOf(unit), step);
97
78
  }
98
79
  toEnd() {
99
- const { end } = this.props;
100
- const { step } = this.state;
80
+ const { end, step } = this.props;
101
81
  const unit = stepToDayJsType(step);
102
82
  if (!unit) {
103
83
  return;
104
84
  }
105
- this.setState({ bt: end.startOf(unit), et: end }, this.timeWindowChanged);
85
+ this.props.onTimeWindowChanged?.(end.startOf(unit), end, step);
106
86
  }
107
87
  previous() {
108
- const { start } = this.props;
109
- const { step } = this.state;
88
+ const { start, step } = this.props;
110
89
  const unit = stepToDayJsType(step);
111
- let bt = this.state.bt;
90
+ let bt = this.props.bt;
112
91
  let et;
113
92
  if (!unit) {
114
93
  return;
@@ -118,14 +97,13 @@ export class EdaTimeWindowPickerPanel extends React.Component {
118
97
  if (bt.isBefore(start)) {
119
98
  bt = start;
120
99
  }
121
- this.setState({ bt, et }, this.timeWindowChanged);
100
+ this.props.onTimeWindowChanged?.(bt, et, step);
122
101
  }
123
102
  next() {
124
- const { end } = this.props;
125
- const { step } = this.state;
103
+ const { end, step } = this.props;
126
104
  const unit = stepToDayJsType(step);
127
105
  let bt;
128
- let et = this.state.et;
106
+ let et = this.props.et;
129
107
  if (!unit) {
130
108
  return;
131
109
  }
@@ -134,7 +112,7 @@ export class EdaTimeWindowPickerPanel extends React.Component {
134
112
  if (et.isAfter(end)) {
135
113
  et = end;
136
114
  }
137
- this.setState({ bt, et }, this.timeWindowChanged);
115
+ this.props.onTimeWindowChanged?.(bt, et, step);
138
116
  }
139
117
  onStepUpdated(step) {
140
118
  const { start, end } = this.props;
@@ -142,7 +120,7 @@ export class EdaTimeWindowPickerPanel extends React.Component {
142
120
  let bt;
143
121
  let et;
144
122
  if (unit) {
145
- bt = this.state.bt.startOf(unit);
123
+ bt = this.props.bt.startOf(unit);
146
124
  et = bt.endOf(unit);
147
125
  if (bt.isBefore(start)) {
148
126
  bt = start;
@@ -155,10 +133,6 @@ export class EdaTimeWindowPickerPanel extends React.Component {
155
133
  bt = start;
156
134
  et = end;
157
135
  }
158
- this.setState({ step, bt, et }, this.timeWindowChanged);
159
- }
160
- timeWindowChanged() {
161
- const { bt, et, step } = this.state;
162
136
  this.props.onTimeWindowChanged?.(bt, et, step);
163
137
  }
164
138
  }