d2aura 23.0.53 → 23.0.56
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/coreui/components/advancedFilter/advancedFilteredGrid.js +1 -1
- package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -1
- package/coreui/components/d2Chart/d2ChartPanel.js +1 -1
- package/coreui/components/d2Chart/d2ChartPanel.js.map +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.d.ts +7 -3
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js +25 -7
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js.map +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.d.ts +2 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.js.map +1 -1
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.d.ts +2 -1
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js +3 -1
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js.map +1 -1
- package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.js.map +1 -1
- package/coreui/components/edaManager/components/edaManagerTablePanel.d.ts +3 -1
- package/coreui/components/edaManager/components/edaManagerTablePanel.js +65 -41
- package/coreui/components/edaManager/components/edaManagerTablePanel.js.map +1 -1
- package/coreui/components/edaManager/panel/edaManagerPanel.js.map +1 -1
- package/coreui/components/editor/abstractEntityConfigPanel.d.ts +8 -1
- package/coreui/components/editor/abstractEntityConfigPanel.js +5 -4
- package/coreui/components/editor/abstractEntityConfigPanel.js.map +1 -1
- package/coreui/components/grid/detailHeaderPanel.d.ts +1 -0
- package/coreui/components/grid/detailHeaderPanel.js +6 -4
- package/coreui/components/grid/detailHeaderPanel.js.map +1 -1
- package/coreui/components/select/abstractSelect.d.ts +2 -1
- package/coreui/components/select/abstractSelect.js +6 -6
- package/coreui/components/select/abstractSelect.js.map +1 -1
- package/coreui/style/index.less +5 -1
- package/package.json +1 -1
|
@@ -59,7 +59,7 @@ export default class AdvancedFilteredGrid extends React.Component {
|
|
|
59
59
|
return [];
|
|
60
60
|
}
|
|
61
61
|
getAllFilterConditions() {
|
|
62
|
-
const filterConditions =
|
|
62
|
+
const filterConditions = cloneDeep(this.state.filterConditions);
|
|
63
63
|
if (this.props.filterConditions) {
|
|
64
64
|
if (filterConditions.length > 0) {
|
|
65
65
|
filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advancedFilteredGrid.js","sourceRoot":"","sources":["../../../../../coreui/components/advancedFilter/advancedFilteredGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {\r\n AdvancedFilterApi,\r\n AdvancedFilterCondition,\r\n AdvancedFilterLogicalOperator,\r\n AdvancedFilterOperator,\r\n AdvancedFilterValue\r\n} from \"../../../api/advancedFilterApi\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {GridApi, IDatasource} from \"ag-grid-community\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport AdvancedFilterFloatingColumnComponent from \"./floatingColumnFilter/advancedFilterFloatingColumnComponent\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"./advancedFilterUtils\";\r\nimport {\r\n getCodeColumn,\r\n getDateColumn,\r\n getDateTimeColumn,\r\n getDbBooleanColumn,\r\n getEntityColumn,\r\n getIDColumn,\r\n getNameColumn,\r\n getNumberColumn,\r\n getStringColumn\r\n} from \"../grid/standardColumns\";\r\nimport {\r\n GeneralEntityColumn,\r\n getDateAdvancedFilterColumn,\r\n getDateTimeAdvancedFilterColumn,\r\n getDbBooleanAdvancedFilterColumn,\r\n getNumberAdvancedFilterColumn,\r\n getStringAdvancedFilterColumn\r\n} from \"./advancedFilterColumnDefinitions\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport AbstractEntityApi, {PageableList} from \"../../../api/abstractEntityApi\";\r\n\r\ninterface AdvancedFilterSavedConditions {\r\n version: number\r\n filterConditions: AdvancedFilterCondition[]\r\n}\r\n\r\nexport interface AdvancedFilterConfig {\r\n version: number\r\n listName: string\r\n}\r\n\r\nexport interface AdvancedFilteredGridProps<T extends Entity> {\r\n api: AbstractEntityApi<T>\r\n advancedFilterApi: AdvancedFilterApi\r\n filterConditions?: AdvancedFilterCondition[]\r\n}\r\n\r\nexport interface AdvancedFilteredGridState<T extends Entity> {\r\n filterConditions: AdvancedFilterCondition[]\r\n selectedData: T[]\r\n columnDefs: DataGridColDef[]\r\n loading: boolean\r\n datasource: IDatasource\r\n}\r\n\r\nexport default abstract class AdvancedFilteredGrid<T extends Entity, P extends AdvancedFilteredGridProps<T>, S extends AdvancedFilteredGridState<T>> extends React.Component<P, S> {\r\n protected dataGrid: ExtendedDataGrid<T> | null = null;\r\n protected gridApi?: GridApi;\r\n protected firstLoadedPage: PageableList<T> | null = null;\r\n protected manualReload = true;\r\n protected initialColumnDefs?: DataGridColDef[];\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.renderFloatingFilter = this.renderFloatingFilter.bind(this);\r\n this.onApplyFilter = this.onApplyFilter.bind(this);\r\n this.onAddCondition = this.onAddCondition.bind(this);\r\n this.onSetCondition = this.onSetCondition.bind(this);\r\n this.onClearCondition = this.onClearCondition.bind(this);\r\n this.onLoadData = this.onLoadData.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n // can be set in child component from url parameters\r\n if (this.state.filterConditions.length === 0) {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n const item = localStorage.getItem(advancedFilterConfig.listName);\r\n\r\n if (item) {\r\n try {\r\n const savedConditions: AdvancedFilterSavedConditions = JSON.parse(item);\r\n if (savedConditions.version === advancedFilterConfig.version) {\r\n this.setState({filterConditions: savedConditions.filterConditions});\r\n }\r\n } catch {\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected async onLoadData(callback: OnLoadDataCallback) {\r\n this.manualReload = true;\r\n this.firstLoadedPage = await this.getRecords(0, 100);\r\n callback(this.firstLoadedPage.totalNumberOfRows);\r\n this.gridApi?.onFilterChanged();\r\n }\r\n\r\n protected async getRecords(from: number, to: number): Promise<PageableList<T>> {\r\n this.setState({loading: true});\r\n\r\n let orderBy = \"\";\r\n const sortModel = this.dataGrid?.getSortModel()[0];\r\n if (sortModel) {\r\n orderBy = `${sortModel.colId} ${sortModel.sort}`;\r\n }\r\n const pageableList = await this.props.api.getAllData(from, to, orderBy, AdvancedFilterUtils.serializeConditionValues(this.getAllFilterConditions()), this.getOnlyValidRecords());\r\n await this.onRecordsLoaded();\r\n\r\n this.setState({loading: false});\r\n return pageableList;\r\n }\r\n\r\n abstract getOnlyValidRecords(): boolean\r\n\r\n protected getAdditionalFilterConditions(): AdvancedFilterCondition[] {\r\n return [];\r\n }\r\n\r\n protected getAllFilterConditions(): AdvancedFilterCondition[] {\r\n const filterConditions = [...this.state.filterConditions];\r\n if (this.props.filterConditions) {\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(...this.props.filterConditions);\r\n }\r\n\r\n const additionalFilterConditions = this.getAdditionalFilterConditions();\r\n if (additionalFilterConditions.length > 0) {\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(...additionalFilterConditions);\r\n }\r\n\r\n return filterConditions;\r\n }\r\n\r\n protected async onRecordsLoaded() {\r\n }\r\n\r\n private saveConfiguration() {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n const conditionsToSave: AdvancedFilterSavedConditions = {\r\n version: advancedFilterConfig.version,\r\n filterConditions: this.state.filterConditions,\r\n }\r\n\r\n localStorage.setItem(advancedFilterConfig.listName, JSON.stringify(conditionsToSave));\r\n }\r\n }\r\n\r\n abstract getAdvancedFilterConfig(): AdvancedFilterConfig | undefined\r\n\r\n protected getAdvancedFilterColumnDefinitions(): AdvancedFilterColumnDefinition[] {\r\n return this.dataGrid?.props.columnDefs\r\n .filter(value => value.renderFilter && value.context)\r\n .map(value => value.context as AdvancedFilterColumnDefinition)\r\n ?? [];\r\n }\r\n\r\n protected renderFloatingFilter(columnDefinition: AdvancedFilterColumnDefinition) {\r\n const filterCondition = this.state.filterConditions.find(value => value.column_name === columnDefinition.columnName);\r\n return (\r\n <AdvancedFilterFloatingColumnComponent\r\n filterCondition={filterCondition}\r\n columnDefinition={columnDefinition}\r\n onAddCondition={(operator, value) => this.onAddCondition(columnDefinition, operator, value)}\r\n onSetCondition={(operator, value) => this.onSetCondition(columnDefinition, operator, value)}\r\n onClearCondition={() => this.onClearCondition(columnDefinition)}\r\n />\r\n );\r\n }\r\n\r\n protected onApplyFilter(filterConditions: AdvancedFilterCondition[]) {\r\n this.setState({filterConditions: filterConditions}, () => {\r\n this.dataGrid?.loadData();\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n private onAddCondition(columnDefinition: AdvancedFilterColumnDefinition, operator: AdvancedFilterOperator, value: AdvancedFilterValue) {\r\n const filterConditions = cloneDeep(this.state.filterConditions);\r\n\r\n const filterConditionIndex = filterConditions.findIndex(filterCondition => filterCondition.column_name === columnDefinition.columnName);\r\n\r\n if (filterConditionIndex >= 0) {\r\n if (filterConditions[filterConditionIndex + 1]) {\r\n filterConditions[filterConditionIndex].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions[filterConditionIndex].operator = operator;\r\n filterConditions[filterConditionIndex].value = value;\r\n } else {\r\n const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;\r\n const newCondition = AdvancedFilterUtils.newCondition(columnDefinition, {operator, value});\r\n newCondition.id = newId;\r\n\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(newCondition);\r\n }\r\n\r\n this.setState({filterConditions: filterConditions}, () => {\r\n this.dataGrid?.loadData();\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n private onSetCondition(columnDefinition: AdvancedFilterColumnDefinition, operator: AdvancedFilterOperator, value: AdvancedFilterValue) {\r\n const newCondition = AdvancedFilterUtils.newCondition(columnDefinition, {operator, value});\r\n\r\n this.setState({filterConditions: [newCondition]}, () => {\r\n this.dataGrid?.loadData()\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n private onClearCondition(columnDefinition: AdvancedFilterColumnDefinition) {\r\n const filterConditions = this.state.filterConditions.filter(value => value.column_name !== columnDefinition.columnName);\r\n\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = null;\r\n }\r\n\r\n this.setState({filterConditions: filterConditions}, () => {\r\n this.dataGrid?.loadData();\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n // columns\r\n protected getIdColumn(columnName: string) {\r\n return getIDColumn(() => this.renderFloatingFilter(getNumberAdvancedFilterColumn(columnName)), {colId: columnName, context: getNumberAdvancedFilterColumn(columnName)});\r\n }\r\n\r\n protected getCodeColumn(params?: Partial<DataGridColDef>) {\r\n return getCodeColumn(() => this.renderFloatingFilter(getStringAdvancedFilterColumn(GeneralEntityColumn.CODE)), {context: getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), ...params});\r\n }\r\n\r\n protected getCodeColumnWithBackgroundColor() {\r\n return this.getEntityColumn({codeColumn: GeneralEntityColumn.CODE, nameColumn: GeneralEntityColumn.NAME, backgroundColorColumn: GeneralEntityColumn.BG_COLOR}, {headerName: i18n(\"Code\")});\r\n }\r\n\r\n protected getNameColumn(params?: Partial<DataGridColDef>) {\r\n return getNameColumn(() => this.renderFloatingFilter(getStringAdvancedFilterColumn(GeneralEntityColumn.NAME)), {context: getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), ...params});\r\n }\r\n\r\n protected getEntityColumn(columnConfig: {codeColumn: string, nameColumn: string, backgroundColorColumn?: string}, params?: Partial<DataGridColDef>, omitFilter?: boolean) {\r\n return getEntityColumn(\r\n columnConfig,\r\n omitFilter ? undefined : () => this.renderFloatingFilter(getStringAdvancedFilterColumn(columnConfig.codeColumn)),\r\n {context: getStringAdvancedFilterColumn(columnConfig.codeColumn), ...params}\r\n );\r\n }\r\n\r\n protected getDateColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getDateColumn(columnName, () => this.renderFloatingFilter(getDateAdvancedFilterColumn(columnName)), {context: getDateAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getDateTimeColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getDateTimeColumn(columnName, () => this.renderFloatingFilter(getDateTimeAdvancedFilterColumn(columnName)), {context: getDateTimeAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getDbBooleanColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getDbBooleanColumn(columnName, () => this.renderFloatingFilter(getDbBooleanAdvancedFilterColumn(columnName)), {context: getDbBooleanAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getStringColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getStringColumn(columnName, () => this.renderFloatingFilter(getStringAdvancedFilterColumn(columnName)), {context: getStringAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getNumberColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getNumberColumn(columnName, () => this.renderFloatingFilter(getNumberAdvancedFilterColumn(columnName)), {context: getNumberAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"advancedFilteredGrid.js","sourceRoot":"","sources":["../../../../../coreui/components/advancedFilter/advancedFilteredGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {\r\n AdvancedFilterApi,\r\n AdvancedFilterCondition,\r\n AdvancedFilterLogicalOperator,\r\n AdvancedFilterOperator,\r\n AdvancedFilterValue\r\n} from \"../../../api/advancedFilterApi\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {GridApi, IDatasource} from \"ag-grid-community\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport AdvancedFilterFloatingColumnComponent from \"./floatingColumnFilter/advancedFilterFloatingColumnComponent\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"./advancedFilterUtils\";\r\nimport {\r\n getCodeColumn,\r\n getDateColumn,\r\n getDateTimeColumn,\r\n getDbBooleanColumn,\r\n getEntityColumn,\r\n getIDColumn,\r\n getNameColumn,\r\n getNumberColumn,\r\n getStringColumn\r\n} from \"../grid/standardColumns\";\r\nimport {\r\n GeneralEntityColumn,\r\n getDateAdvancedFilterColumn,\r\n getDateTimeAdvancedFilterColumn,\r\n getDbBooleanAdvancedFilterColumn,\r\n getNumberAdvancedFilterColumn,\r\n getStringAdvancedFilterColumn\r\n} from \"./advancedFilterColumnDefinitions\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport AbstractEntityApi, {PageableList} from \"../../../api/abstractEntityApi\";\r\n\r\ninterface AdvancedFilterSavedConditions {\r\n version: number\r\n filterConditions: AdvancedFilterCondition[]\r\n}\r\n\r\nexport interface AdvancedFilterConfig {\r\n version: number\r\n listName: string\r\n}\r\n\r\nexport interface AdvancedFilteredGridProps<T extends Entity> {\r\n api: AbstractEntityApi<T>\r\n advancedFilterApi: AdvancedFilterApi\r\n filterConditions?: AdvancedFilterCondition[]\r\n}\r\n\r\nexport interface AdvancedFilteredGridState<T extends Entity> {\r\n filterConditions: AdvancedFilterCondition[]\r\n selectedData: T[]\r\n columnDefs: DataGridColDef[]\r\n loading: boolean\r\n datasource: IDatasource\r\n}\r\n\r\nexport default abstract class AdvancedFilteredGrid<T extends Entity, P extends AdvancedFilteredGridProps<T>, S extends AdvancedFilteredGridState<T>> extends React.Component<P, S> {\r\n protected dataGrid: ExtendedDataGrid<T> | null = null;\r\n protected gridApi?: GridApi;\r\n protected firstLoadedPage: PageableList<T> | null = null;\r\n protected manualReload = true;\r\n protected initialColumnDefs?: DataGridColDef[];\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.renderFloatingFilter = this.renderFloatingFilter.bind(this);\r\n this.onApplyFilter = this.onApplyFilter.bind(this);\r\n this.onAddCondition = this.onAddCondition.bind(this);\r\n this.onSetCondition = this.onSetCondition.bind(this);\r\n this.onClearCondition = this.onClearCondition.bind(this);\r\n this.onLoadData = this.onLoadData.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n // can be set in child component from url parameters\r\n if (this.state.filterConditions.length === 0) {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n const item = localStorage.getItem(advancedFilterConfig.listName);\r\n\r\n if (item) {\r\n try {\r\n const savedConditions: AdvancedFilterSavedConditions = JSON.parse(item);\r\n if (savedConditions.version === advancedFilterConfig.version) {\r\n this.setState({filterConditions: savedConditions.filterConditions});\r\n }\r\n } catch {\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected async onLoadData(callback: OnLoadDataCallback) {\r\n this.manualReload = true;\r\n this.firstLoadedPage = await this.getRecords(0, 100);\r\n callback(this.firstLoadedPage.totalNumberOfRows);\r\n this.gridApi?.onFilterChanged();\r\n }\r\n\r\n protected async getRecords(from: number, to: number): Promise<PageableList<T>> {\r\n this.setState({loading: true});\r\n\r\n let orderBy = \"\";\r\n const sortModel = this.dataGrid?.getSortModel()[0];\r\n if (sortModel) {\r\n orderBy = `${sortModel.colId} ${sortModel.sort}`;\r\n }\r\n const pageableList = await this.props.api.getAllData(from, to, orderBy, AdvancedFilterUtils.serializeConditionValues(this.getAllFilterConditions()), this.getOnlyValidRecords());\r\n await this.onRecordsLoaded();\r\n\r\n this.setState({loading: false});\r\n return pageableList;\r\n }\r\n\r\n abstract getOnlyValidRecords(): boolean\r\n\r\n protected getAdditionalFilterConditions(): AdvancedFilterCondition[] {\r\n return [];\r\n }\r\n\r\n protected getAllFilterConditions(): AdvancedFilterCondition[] {\r\n const filterConditions = cloneDeep(this.state.filterConditions);\r\n if (this.props.filterConditions) {\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(...this.props.filterConditions);\r\n }\r\n\r\n const additionalFilterConditions = this.getAdditionalFilterConditions();\r\n if (additionalFilterConditions.length > 0) {\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(...additionalFilterConditions);\r\n }\r\n\r\n return filterConditions;\r\n }\r\n\r\n protected async onRecordsLoaded() {\r\n }\r\n\r\n private saveConfiguration() {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n const conditionsToSave: AdvancedFilterSavedConditions = {\r\n version: advancedFilterConfig.version,\r\n filterConditions: this.state.filterConditions,\r\n }\r\n\r\n localStorage.setItem(advancedFilterConfig.listName, JSON.stringify(conditionsToSave));\r\n }\r\n }\r\n\r\n abstract getAdvancedFilterConfig(): AdvancedFilterConfig | undefined\r\n\r\n protected getAdvancedFilterColumnDefinitions(): AdvancedFilterColumnDefinition[] {\r\n return this.dataGrid?.props.columnDefs\r\n .filter(value => value.renderFilter && value.context)\r\n .map(value => value.context as AdvancedFilterColumnDefinition)\r\n ?? [];\r\n }\r\n\r\n protected renderFloatingFilter(columnDefinition: AdvancedFilterColumnDefinition) {\r\n const filterCondition = this.state.filterConditions.find(value => value.column_name === columnDefinition.columnName);\r\n return (\r\n <AdvancedFilterFloatingColumnComponent\r\n filterCondition={filterCondition}\r\n columnDefinition={columnDefinition}\r\n onAddCondition={(operator, value) => this.onAddCondition(columnDefinition, operator, value)}\r\n onSetCondition={(operator, value) => this.onSetCondition(columnDefinition, operator, value)}\r\n onClearCondition={() => this.onClearCondition(columnDefinition)}\r\n />\r\n );\r\n }\r\n\r\n protected onApplyFilter(filterConditions: AdvancedFilterCondition[]) {\r\n this.setState({filterConditions: filterConditions}, () => {\r\n this.dataGrid?.loadData();\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n private onAddCondition(columnDefinition: AdvancedFilterColumnDefinition, operator: AdvancedFilterOperator, value: AdvancedFilterValue) {\r\n const filterConditions = cloneDeep(this.state.filterConditions);\r\n\r\n const filterConditionIndex = filterConditions.findIndex(filterCondition => filterCondition.column_name === columnDefinition.columnName);\r\n\r\n if (filterConditionIndex >= 0) {\r\n if (filterConditions[filterConditionIndex + 1]) {\r\n filterConditions[filterConditionIndex].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions[filterConditionIndex].operator = operator;\r\n filterConditions[filterConditionIndex].value = value;\r\n } else {\r\n const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;\r\n const newCondition = AdvancedFilterUtils.newCondition(columnDefinition, {operator, value});\r\n newCondition.id = newId;\r\n\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(newCondition);\r\n }\r\n\r\n this.setState({filterConditions: filterConditions}, () => {\r\n this.dataGrid?.loadData();\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n private onSetCondition(columnDefinition: AdvancedFilterColumnDefinition, operator: AdvancedFilterOperator, value: AdvancedFilterValue) {\r\n const newCondition = AdvancedFilterUtils.newCondition(columnDefinition, {operator, value});\r\n\r\n this.setState({filterConditions: [newCondition]}, () => {\r\n this.dataGrid?.loadData()\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n private onClearCondition(columnDefinition: AdvancedFilterColumnDefinition) {\r\n const filterConditions = this.state.filterConditions.filter(value => value.column_name !== columnDefinition.columnName);\r\n\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = null;\r\n }\r\n\r\n this.setState({filterConditions: filterConditions}, () => {\r\n this.dataGrid?.loadData();\r\n this.saveConfiguration();\r\n });\r\n }\r\n\r\n // columns\r\n protected getIdColumn(columnName: string) {\r\n return getIDColumn(() => this.renderFloatingFilter(getNumberAdvancedFilterColumn(columnName)), {colId: columnName, context: getNumberAdvancedFilterColumn(columnName)});\r\n }\r\n\r\n protected getCodeColumn(params?: Partial<DataGridColDef>) {\r\n return getCodeColumn(() => this.renderFloatingFilter(getStringAdvancedFilterColumn(GeneralEntityColumn.CODE)), {context: getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), ...params});\r\n }\r\n\r\n protected getCodeColumnWithBackgroundColor() {\r\n return this.getEntityColumn({codeColumn: GeneralEntityColumn.CODE, nameColumn: GeneralEntityColumn.NAME, backgroundColorColumn: GeneralEntityColumn.BG_COLOR}, {headerName: i18n(\"Code\")});\r\n }\r\n\r\n protected getNameColumn(params?: Partial<DataGridColDef>) {\r\n return getNameColumn(() => this.renderFloatingFilter(getStringAdvancedFilterColumn(GeneralEntityColumn.NAME)), {context: getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), ...params});\r\n }\r\n\r\n protected getEntityColumn(columnConfig: {codeColumn: string, nameColumn: string, backgroundColorColumn?: string}, params?: Partial<DataGridColDef>, omitFilter?: boolean) {\r\n return getEntityColumn(\r\n columnConfig,\r\n omitFilter ? undefined : () => this.renderFloatingFilter(getStringAdvancedFilterColumn(columnConfig.codeColumn)),\r\n {context: getStringAdvancedFilterColumn(columnConfig.codeColumn), ...params}\r\n );\r\n }\r\n\r\n protected getDateColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getDateColumn(columnName, () => this.renderFloatingFilter(getDateAdvancedFilterColumn(columnName)), {context: getDateAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getDateTimeColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getDateTimeColumn(columnName, () => this.renderFloatingFilter(getDateTimeAdvancedFilterColumn(columnName)), {context: getDateTimeAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getDbBooleanColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getDbBooleanColumn(columnName, () => this.renderFloatingFilter(getDbBooleanAdvancedFilterColumn(columnName)), {context: getDbBooleanAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getStringColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getStringColumn(columnName, () => this.renderFloatingFilter(getStringAdvancedFilterColumn(columnName)), {context: getStringAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n protected getNumberColumn(columnName: string, params?: Partial<DataGridColDef>) {\r\n return getNumberColumn(columnName, () => this.renderFloatingFilter(getNumberAdvancedFilterColumn(columnName)), {context: getNumberAdvancedFilterColumn(columnName), ...params});\r\n }\r\n\r\n}"]}
|
|
@@ -172,7 +172,7 @@ class D2ChartPanel extends React.Component {
|
|
|
172
172
|
return {
|
|
173
173
|
id: uniqueId,
|
|
174
174
|
displayName: series.name,
|
|
175
|
-
color: optionColors[series.colorIndex !== undefined ? series.colorIndex : index % optionColors.length],
|
|
175
|
+
color: optionColors[series.colorIndex !== undefined ? series.colorIndex % optionColors.length : index % optionColors.length],
|
|
176
176
|
visible: this.state.tableItems.find(value => value.id === uniqueId)?.visible ?? true,
|
|
177
177
|
min: recordValues.length === 0 ? undefined : min,
|
|
178
178
|
max: recordValues.length === 0 ? undefined : max,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d2ChartPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/d2Chart/d2ChartPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ReactEcharts, {EChartsInstance, EChartsOption} from \"echarts-for-react\";\r\nimport {compactChartOptions, d2ChartOptions} from \"./d2ChartOptions\";\r\nimport {at} from \"lodash\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Empty} from \"antd\";\r\nimport {UnixTime} from \"d2jsapi\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport D2ChartTablePanel, {D2ChartTableItem} from \"./d2ChartTablePanel\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport D2ChartToolboxPanel from \"./d2ChartToolboxPanel\";\r\nimport {LoadingOutlined} from \"@ant-design/icons\";\r\nimport {D2ChartRecord, D2ChartSeriesItem, LineStyleEnum, MarkArea, MarkAreaData} from \"../../../api/types/d2ChartTypes\";\r\nimport D2ChartUtils from \"../../../api/util/d2ChartUtils\";\r\n\r\ninterface SeriesItem {\r\n name: string,\r\n type: string,\r\n sampling: string,\r\n symbol?: string,\r\n step?: string,\r\n color?: string,\r\n encode?: { x: string, y: string },\r\n markArea?: MarkArea\r\n}\r\n\r\nexport interface D2ChartPanelProps {\r\n d2ChartSeries: D2ChartSeriesItem[]\r\n d2ChartRecords: D2ChartRecord[]\r\n d2ChartCalendarRecords?: D2ChartRecord[]\r\n loading?: boolean\r\n\r\n markArea?: MarkArea\r\n compact?: boolean\r\n yAxisLabel?: string\r\n\r\n tableHeight: number | \"auto\"\r\n tableWrapperStyle?: Omit<React.CSSProperties, \"height\">\r\n}\r\n\r\ninterface State {\r\n tableItems: D2ChartTableItem[]\r\n tooltipTime?: UnixTime\r\n missingData: MarkAreaData[][]\r\n\r\n modalVisible: boolean\r\n calendarDataVisible: boolean\r\n missingDataVisible: boolean\r\n}\r\n\r\nexport default class D2ChartPanel extends React.Component<D2ChartPanelProps, State> {\r\n private static SAMPLING_MODE = \"minmax\";\r\n private chartInstance: EChartsInstance | null = null;\r\n private d2ChartPanelInModal: D2ChartPanel | null = null;\r\n private d2ChartTablePanel: D2ChartTablePanel | null = null;\r\n\r\n constructor(props: Readonly<D2ChartPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n tableItems: [],\r\n missingData: [],\r\n modalVisible: false,\r\n calendarDataVisible: false,\r\n missingDataVisible: true,\r\n }\r\n\r\n this.onSwitchCalendarData = this.onSwitchCalendarData.bind(this);\r\n this.onSwitchLegend = this.onSwitchLegend.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<D2ChartPanelProps>) {\r\n if (!isEqual(this.props.markArea, prevProps.markArea) && this.props.d2ChartRecords.length > 0) {\r\n this.onReload();\r\n }\r\n }\r\n\r\n private onSwitchLegend(name: string) {\r\n const tableData = this.state.tableItems;\r\n const d2ChartTableItem = tableData.find(value => value.id === name);\r\n\r\n if (d2ChartTableItem) {\r\n this.chartInstance.dispatchAction({\r\n type: d2ChartTableItem.visible ? \"legendUnSelect\" : \"legendSelect\",\r\n name: name,\r\n });\r\n\r\n d2ChartTableItem.visible = !d2ChartTableItem.visible\r\n this.setState({tableItems: tableData}, () => this.d2ChartTablePanel?.updateGrid());\r\n }\r\n }\r\n\r\n private onSwitchCalendarData() {\r\n const calendarDataVisible = this.state.calendarDataVisible;\r\n const option = this.chartInstance.getOption();\r\n\r\n if (calendarDataVisible) {\r\n this.prepareCalendarMarkarea(option.series, option.dataset[0]);\r\n this.chartInstance.setOption(option);\r\n }\r\n const calendarSeries = option.series.filter((value: SeriesItem) => value.name.startsWith(\"__markArea-calendar-\")) as SeriesItem[];\r\n calendarSeries.forEach(value => {\r\n this.chartInstance.dispatchAction({\r\n type: calendarDataVisible ? \"legendSelect\" : \"legendUnSelect\",\r\n name: value.name,\r\n });\r\n });\r\n }\r\n\r\n private prepareCalendarMarkarea(series: SeriesItem[], dataset: any) {\r\n if (this.props.d2ChartCalendarRecords) {\r\n const markAreas = D2ChartUtils.calendarRecordsToMarkAreas(this.props.d2ChartCalendarRecords);\r\n Object.keys(markAreas).forEach(key => {\r\n const markAreaName = `__markArea-calendar-${key}`;\r\n const markArea = {\r\n name: markAreaName,\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n markArea: markAreas[key],\r\n encode: {\r\n x: \"timestamp\",\r\n y: markAreaName,\r\n },\r\n }\r\n\r\n const seriesIndex = series.findIndex(value => value.name === markAreaName);\r\n if (seriesIndex >= 0) {\r\n series[seriesIndex] = markArea;\r\n } else {\r\n series.push(markArea);\r\n }\r\n\r\n const dimensionsIndex = dataset.dimensions.findIndex((value: string) => value === markAreaName);\r\n if (dimensionsIndex >= 0) {\r\n dataset.dimensions[dimensionsIndex] = markAreaName;\r\n } else {\r\n dataset.dimensions.push(markAreaName);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private onSwitchMissingData() {\r\n this.chartInstance.dispatchAction({\r\n type: this.state.missingDataVisible ? \"legendSelect\" : \"legendUnSelect\",\r\n name: \"__markArea-missing-data\",\r\n });\r\n }\r\n\r\n private setTooltip(option: EChartsOption) {\r\n option.tooltip = {\r\n trigger: \"axis\",\r\n position: (_pos: any, params: any[]) => {\r\n const param = params[0];\r\n if (param && param.data) {\r\n const data = this.state.tableItems;\r\n data.forEach((value, index) => {\r\n if (value.visible) {\r\n value.tooltipValue = param.data[index + 1]; //index 0 is timestamp\r\n } else {\r\n value.tooltipValue = undefined;\r\n }\r\n });\r\n\r\n this.setState({tableItems: data, tooltipTime: param.data[0]}, () => {\r\n this.d2ChartTablePanel?.updateGrid();\r\n });\r\n }\r\n },\r\n formatter: (params: Object | Array<any>) => {\r\n if (Array.isArray(params)) {\r\n const seriesToCompare = params.filter(value => !value.seriesName.startsWith(\"__\"));\r\n if (seriesToCompare.length === 2) {\r\n const data = seriesToCompare[0].data;\r\n const seriesName1 = seriesToCompare[0].seriesName;\r\n const seriesName2 = seriesToCompare[1].seriesName;\r\n const dimensions = seriesToCompare[0].dimensionNames as string[];\r\n\r\n const value1 = data[dimensions.findIndex(value => value === seriesName1)]\r\n const value2 = data[dimensions.findIndex(value => value === seriesName2)]\r\n if (value1 !== undefined && value2 !== undefined) {\r\n const gap = value1 - value2;\r\n return `Gap: ${gap.toFixed(4)}`;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n }\r\n }\r\n\r\n private getUniqueId(code: string, index: number): string {\r\n return `${code}@${index}`;\r\n }\r\n\r\n private getDiemnsions(currentSeries: D2ChartSeriesItem[]): string[] {\r\n return currentSeries.map((value, index) => this.getUniqueId(value.code!, index));\r\n }\r\n\r\n private getSeriesFields(currentSeries: D2ChartSeriesItem[]): string[] {\r\n return currentSeries.map((_, index) => `col${index}`);\r\n }\r\n\r\n private getSeries(currentSeries: D2ChartSeriesItem[], optionColors: string[]): SeriesItem[] {\r\n return currentSeries.map((value, index) => {\r\n return {\r\n name: this.getUniqueId(value.code!, index),\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n symbol: \"none\",\r\n step: \"end\",\r\n color: optionColors[value.colorIndex !== undefined ? value.colorIndex : index % optionColors.length],\r\n encode: {\r\n x: \"timestamp\",\r\n y: this.getUniqueId(value.code!, index)\r\n },\r\n areaStyle: value.fillColor ? {} : undefined,\r\n lineStyle: {type: value.lineStyle ?? LineStyleEnum.SOLID}\r\n }\r\n })\r\n }\r\n\r\n private getTableItems(currentSeries: D2ChartSeriesItem[], seriesFields: string[], optionColors: string[]): D2ChartTableItem[] {\r\n return currentSeries.map((series, index) => {\r\n const recordValues = this.props.d2ChartRecords.map(value => at(value, seriesFields[index])[0]).filter(value => value !== undefined) as number[];\r\n const uniqueId = this.getUniqueId(series.code!, index);\r\n const [min, max, sum] = recordValues.reduce(([min, max, sum], val) =>\r\n [Math.min(min, val), Math.max(max, val), sum + val],\r\n [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, 0]\r\n );\r\n\r\n return {\r\n id: uniqueId,\r\n displayName: series.name!,\r\n color: optionColors[series.colorIndex !== undefined ? series.colorIndex : index % optionColors.length],\r\n visible: this.state.tableItems.find(value => value.id === uniqueId)?.visible ?? true,\r\n min: recordValues.length === 0 ? undefined : min,\r\n max: recordValues.length === 0 ? undefined : max,\r\n avg: recordValues.length === 0 ? undefined : sum / recordValues.length,\r\n sum: sum,\r\n }\r\n });\r\n }\r\n\r\n private getDatasetSource(seriesFields: string[]): (number | undefined)[][] {\r\n return this.props.d2ChartRecords.map(record => {\r\n const seriesValuesInTime: (number | undefined | null)[] = at(record, seriesFields);\r\n const roundedSeriesValues = seriesValuesInTime.map(value => value !== undefined && value !== null ? +value.toFixed(4) : undefined) as (number | undefined)[];\r\n roundedSeriesValues.unshift(record.date.getTime());\r\n\r\n return roundedSeriesValues;\r\n })\r\n }\r\n\r\n onReload() {\r\n const tableItems: D2ChartTableItem[] = [];\r\n let missingData: MarkAreaData[][] = [];\r\n\r\n const option = this.chartInstance?.getOption() as EChartsOption | undefined | null;\r\n if (option) {\r\n const currentSeries = this.props.d2ChartSeries;\r\n const seriesFields = this.getSeriesFields(currentSeries);\r\n const series = this.getSeries(currentSeries, option.color);\r\n const dataset: { dimensions: string[], source: (number | undefined)[][] } = {\r\n dimensions: [\"timestamp\", ...this.getDiemnsions(currentSeries)],\r\n source: this.getDatasetSource(seriesFields),\r\n }\r\n tableItems.push(...this.getTableItems(currentSeries, seriesFields, option.color));\r\n\r\n this.setTooltip(option);\r\n\r\n // chart markArea\r\n if (this.props.markArea) {\r\n series.push({\r\n name: \"__markArea\",\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n markArea: this.props.markArea,\r\n encode: {\r\n x: \"timestamp\",\r\n y: \"__markArea\",\r\n },\r\n });\r\n\r\n dataset.dimensions.push(\"__markArea\");\r\n }\r\n\r\n //calendar markArea\r\n if (this.state.calendarDataVisible) {\r\n this.prepareCalendarMarkarea(series, dataset);\r\n }\r\n\r\n // missing data markArea\r\n const missingDataMarkArea = D2ChartUtils.getMissingDataMarkArea(this.props.d2ChartRecords, seriesFields);\r\n missingData = missingDataMarkArea.data;\r\n series.push({\r\n name: \"__markArea-missing-data\",\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n markArea: missingDataMarkArea,\r\n encode: {\r\n x: \"timestamp\",\r\n y: \"__markArea-missing-data\",\r\n },\r\n });\r\n\r\n dataset.dimensions.push(\"__markArea-missing-data\");\r\n\r\n option.dataset = dataset;\r\n option.series = series;\r\n option.markArea = undefined;\r\n option.legend[0].selected = Object.fromEntries(tableItems.map(value => [value.id, value.visible]));\r\n\r\n if (this.props.yAxisLabel) {\r\n option.yAxis[0].name = this.props.yAxisLabel;\r\n }\r\n\r\n this.chartInstance.setOption(option, true);\r\n }\r\n\r\n this.setState({\r\n tableItems: tableItems,\r\n missingData: missingData,\r\n });\r\n }\r\n\r\n private renderToolbox() {\r\n return (\r\n <D2ChartToolboxPanel\r\n missingData={this.state.missingData}\r\n calendarDataVisible={this.state.calendarDataVisible}\r\n missingDataVisible={this.state.missingDataVisible}\r\n showCalendarIcon={!!this.props.d2ChartCalendarRecords}\r\n onSwitchCalendarData={() => {\r\n this.setState({calendarDataVisible: !this.state.calendarDataVisible}, () => {\r\n this.onSwitchCalendarData();\r\n })\r\n }}\r\n onSwitchMissingData={() => {\r\n this.setState({missingDataVisible: !this.state.missingDataVisible}, () => {\r\n this.onSwitchMissingData();\r\n })\r\n }}\r\n onZoomControlSwitch={zoomEnabled => {\r\n this.chartInstance.dispatchAction({\r\n type: \"takeGlobalCursor\",\r\n key: \"dataZoomSelect\",\r\n dataZoomSelectActive: zoomEnabled\r\n });\r\n }}\r\n onZoomReset={() => {\r\n this.chartInstance.dispatchAction({\r\n type: \"dataZoom\",\r\n start: 0,\r\n end: 100,\r\n });\r\n }}\r\n compact={this.props.compact}\r\n onFullScreen={() => {\r\n this.setState({modalVisible: true}, () => {\r\n setTimeout(() => this.d2ChartPanelInModal?.onReload());\r\n })\r\n }}\r\n />\r\n )\r\n }\r\n\r\n private renderModalDialog() {\r\n return (\r\n <ModalDialog\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.modalVisible}\r\n onCancel={() => this.setState({modalVisible: false})}\r\n title={i18n(\"Chart\")}\r\n initialWidth={window.innerWidth * 0.8}\r\n initialHeight={window.innerHeight * 0.98}\r\n >\r\n <D2ChartPanel\r\n ref={component => {\r\n this.d2ChartPanelInModal = component;\r\n }}\r\n d2ChartSeries={this.props.d2ChartSeries}\r\n d2ChartRecords={this.props.d2ChartRecords}\r\n d2ChartCalendarRecords={this.props.d2ChartCalendarRecords}\r\n loading={this.props.loading}\r\n tableHeight={180}\r\n tableWrapperStyle={{padding: \"0px 12px 8px\"}}\r\n markArea={this.props.markArea}\r\n />\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n render() {\r\n const style: React.CSSProperties = {\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n }\r\n\r\n if (this.props.loading) {\r\n return (\r\n <div style={{alignItems: \"center\", ...style}}>\r\n <LoadingOutlined/>\r\n </div>\r\n );\r\n } else if (this.props.d2ChartRecords.length === 0) {\r\n return (\r\n <Empty\r\n style={style}\r\n description={i18n(\"No records found.\")}\r\n imageStyle={{height: \"8vh\"}}\r\n />\r\n );\r\n } else {\r\n let computedTableHeight = this.props.tableHeight;\r\n if (computedTableHeight === \"auto\") {\r\n computedTableHeight = 62 + this.props.d2ChartSeries.length * 28;\r\n }\r\n\r\n return (\r\n <div style={{position: \"relative\", ...style}}>\r\n {this.renderModalDialog()}\r\n {this.renderToolbox()}\r\n <ReactEcharts\r\n style={{height: `calc(100% - ${computedTableHeight}px)`}}\r\n onChartReady={instance => {\r\n this.chartInstance = instance;\r\n const zr = instance.getZr();\r\n zr.on(\"mouseout\", () => {\r\n const tableItems = this.state.tableItems;\r\n tableItems.forEach(value => value.tooltipValue = undefined);\r\n this.setState({tableItems: tableItems, tooltipTime: undefined}, () => {\r\n this.d2ChartTablePanel?.updateGrid();\r\n });\r\n });\r\n setTimeout(() => instance.resize(), 50);\r\n }}\r\n option={this.props.compact ? compactChartOptions : d2ChartOptions}\r\n />\r\n <D2ChartTablePanel\r\n style={{height: computedTableHeight, ...this.props.tableWrapperStyle}}\r\n ref={component => this.d2ChartTablePanel = component}\r\n tableItems={this.state.tableItems}\r\n tooltipTime={this.state.tooltipTime}\r\n onSwitchLegend={this.onSwitchLegend}\r\n />\r\n </div>\r\n )\r\n }\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"d2ChartPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/d2Chart/d2ChartPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ReactEcharts, {EChartsInstance, EChartsOption} from \"echarts-for-react\";\r\nimport {compactChartOptions, d2ChartOptions} from \"./d2ChartOptions\";\r\nimport {at} from \"lodash\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Empty} from \"antd\";\r\nimport {UnixTime} from \"d2jsapi\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport D2ChartTablePanel, {D2ChartTableItem} from \"./d2ChartTablePanel\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport D2ChartToolboxPanel from \"./d2ChartToolboxPanel\";\r\nimport {LoadingOutlined} from \"@ant-design/icons\";\r\nimport {D2ChartRecord, D2ChartSeriesItem, LineStyleEnum, MarkArea, MarkAreaData} from \"../../../api/types/d2ChartTypes\";\r\nimport D2ChartUtils from \"../../../api/util/d2ChartUtils\";\r\n\r\ninterface SeriesItem {\r\n name: string,\r\n type: string,\r\n sampling: string,\r\n symbol?: string,\r\n step?: string,\r\n color?: string,\r\n encode?: { x: string, y: string },\r\n markArea?: MarkArea\r\n}\r\n\r\nexport interface D2ChartPanelProps {\r\n d2ChartSeries: D2ChartSeriesItem[]\r\n d2ChartRecords: D2ChartRecord[]\r\n d2ChartCalendarRecords?: D2ChartRecord[]\r\n loading?: boolean\r\n\r\n markArea?: MarkArea\r\n compact?: boolean\r\n yAxisLabel?: string\r\n\r\n tableHeight: number | \"auto\"\r\n tableWrapperStyle?: Omit<React.CSSProperties, \"height\">\r\n}\r\n\r\ninterface State {\r\n tableItems: D2ChartTableItem[]\r\n tooltipTime?: UnixTime\r\n missingData: MarkAreaData[][]\r\n\r\n modalVisible: boolean\r\n calendarDataVisible: boolean\r\n missingDataVisible: boolean\r\n}\r\n\r\nexport default class D2ChartPanel extends React.Component<D2ChartPanelProps, State> {\r\n private static SAMPLING_MODE = \"minmax\";\r\n private chartInstance: EChartsInstance | null = null;\r\n private d2ChartPanelInModal: D2ChartPanel | null = null;\r\n private d2ChartTablePanel: D2ChartTablePanel | null = null;\r\n\r\n constructor(props: Readonly<D2ChartPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n tableItems: [],\r\n missingData: [],\r\n modalVisible: false,\r\n calendarDataVisible: false,\r\n missingDataVisible: true,\r\n }\r\n\r\n this.onSwitchCalendarData = this.onSwitchCalendarData.bind(this);\r\n this.onSwitchLegend = this.onSwitchLegend.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<D2ChartPanelProps>) {\r\n if (!isEqual(this.props.markArea, prevProps.markArea) && this.props.d2ChartRecords.length > 0) {\r\n this.onReload();\r\n }\r\n }\r\n\r\n private onSwitchLegend(name: string) {\r\n const tableData = this.state.tableItems;\r\n const d2ChartTableItem = tableData.find(value => value.id === name);\r\n\r\n if (d2ChartTableItem) {\r\n this.chartInstance.dispatchAction({\r\n type: d2ChartTableItem.visible ? \"legendUnSelect\" : \"legendSelect\",\r\n name: name,\r\n });\r\n\r\n d2ChartTableItem.visible = !d2ChartTableItem.visible\r\n this.setState({tableItems: tableData}, () => this.d2ChartTablePanel?.updateGrid());\r\n }\r\n }\r\n\r\n private onSwitchCalendarData() {\r\n const calendarDataVisible = this.state.calendarDataVisible;\r\n const option = this.chartInstance.getOption();\r\n\r\n if (calendarDataVisible) {\r\n this.prepareCalendarMarkarea(option.series, option.dataset[0]);\r\n this.chartInstance.setOption(option);\r\n }\r\n const calendarSeries = option.series.filter((value: SeriesItem) => value.name.startsWith(\"__markArea-calendar-\")) as SeriesItem[];\r\n calendarSeries.forEach(value => {\r\n this.chartInstance.dispatchAction({\r\n type: calendarDataVisible ? \"legendSelect\" : \"legendUnSelect\",\r\n name: value.name,\r\n });\r\n });\r\n }\r\n\r\n private prepareCalendarMarkarea(series: SeriesItem[], dataset: any) {\r\n if (this.props.d2ChartCalendarRecords) {\r\n const markAreas = D2ChartUtils.calendarRecordsToMarkAreas(this.props.d2ChartCalendarRecords);\r\n Object.keys(markAreas).forEach(key => {\r\n const markAreaName = `__markArea-calendar-${key}`;\r\n const markArea = {\r\n name: markAreaName,\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n markArea: markAreas[key],\r\n encode: {\r\n x: \"timestamp\",\r\n y: markAreaName,\r\n },\r\n }\r\n\r\n const seriesIndex = series.findIndex(value => value.name === markAreaName);\r\n if (seriesIndex >= 0) {\r\n series[seriesIndex] = markArea;\r\n } else {\r\n series.push(markArea);\r\n }\r\n\r\n const dimensionsIndex = dataset.dimensions.findIndex((value: string) => value === markAreaName);\r\n if (dimensionsIndex >= 0) {\r\n dataset.dimensions[dimensionsIndex] = markAreaName;\r\n } else {\r\n dataset.dimensions.push(markAreaName);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private onSwitchMissingData() {\r\n this.chartInstance.dispatchAction({\r\n type: this.state.missingDataVisible ? \"legendSelect\" : \"legendUnSelect\",\r\n name: \"__markArea-missing-data\",\r\n });\r\n }\r\n\r\n private setTooltip(option: EChartsOption) {\r\n option.tooltip = {\r\n trigger: \"axis\",\r\n position: (_pos: any, params: any[]) => {\r\n const param = params[0];\r\n if (param && param.data) {\r\n const data = this.state.tableItems;\r\n data.forEach((value, index) => {\r\n if (value.visible) {\r\n value.tooltipValue = param.data[index + 1]; //index 0 is timestamp\r\n } else {\r\n value.tooltipValue = undefined;\r\n }\r\n });\r\n\r\n this.setState({tableItems: data, tooltipTime: param.data[0]}, () => {\r\n this.d2ChartTablePanel?.updateGrid();\r\n });\r\n }\r\n },\r\n formatter: (params: Object | Array<any>) => {\r\n if (Array.isArray(params)) {\r\n const seriesToCompare = params.filter(value => !value.seriesName.startsWith(\"__\"));\r\n if (seriesToCompare.length === 2) {\r\n const data = seriesToCompare[0].data;\r\n const seriesName1 = seriesToCompare[0].seriesName;\r\n const seriesName2 = seriesToCompare[1].seriesName;\r\n const dimensions = seriesToCompare[0].dimensionNames as string[];\r\n\r\n const value1 = data[dimensions.findIndex(value => value === seriesName1)]\r\n const value2 = data[dimensions.findIndex(value => value === seriesName2)]\r\n if (value1 !== undefined && value2 !== undefined) {\r\n const gap = value1 - value2;\r\n return `Gap: ${gap.toFixed(4)}`;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n }\r\n }\r\n\r\n private getUniqueId(code: string, index: number): string {\r\n return `${code}@${index}`;\r\n }\r\n\r\n private getDiemnsions(currentSeries: D2ChartSeriesItem[]): string[] {\r\n return currentSeries.map((value, index) => this.getUniqueId(value.code!, index));\r\n }\r\n\r\n private getSeriesFields(currentSeries: D2ChartSeriesItem[]): string[] {\r\n return currentSeries.map((_, index) => `col${index}`);\r\n }\r\n\r\n private getSeries(currentSeries: D2ChartSeriesItem[], optionColors: string[]): SeriesItem[] {\r\n return currentSeries.map((value, index) => {\r\n return {\r\n name: this.getUniqueId(value.code!, index),\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n symbol: \"none\",\r\n step: \"end\",\r\n color: optionColors[value.colorIndex !== undefined ? value.colorIndex : index % optionColors.length],\r\n encode: {\r\n x: \"timestamp\",\r\n y: this.getUniqueId(value.code!, index)\r\n },\r\n areaStyle: value.fillColor ? {} : undefined,\r\n lineStyle: {type: value.lineStyle ?? LineStyleEnum.SOLID}\r\n }\r\n })\r\n }\r\n\r\n private getTableItems(currentSeries: D2ChartSeriesItem[], seriesFields: string[], optionColors: string[]): D2ChartTableItem[] {\r\n return currentSeries.map((series, index) => {\r\n const recordValues = this.props.d2ChartRecords.map(value => at(value, seriesFields[index])[0]).filter(value => value !== undefined) as number[];\r\n const uniqueId = this.getUniqueId(series.code!, index);\r\n const [min, max, sum] = recordValues.reduce(([min, max, sum], val) =>\r\n [Math.min(min, val), Math.max(max, val), sum + val],\r\n [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, 0]\r\n );\r\n\r\n return {\r\n id: uniqueId,\r\n displayName: series.name!,\r\n color: optionColors[series.colorIndex !== undefined ? series.colorIndex % optionColors.length : index % optionColors.length],\r\n visible: this.state.tableItems.find(value => value.id === uniqueId)?.visible ?? true,\r\n min: recordValues.length === 0 ? undefined : min,\r\n max: recordValues.length === 0 ? undefined : max,\r\n avg: recordValues.length === 0 ? undefined : sum / recordValues.length,\r\n sum: sum,\r\n }\r\n });\r\n }\r\n\r\n private getDatasetSource(seriesFields: string[]): (number | undefined)[][] {\r\n return this.props.d2ChartRecords.map(record => {\r\n const seriesValuesInTime: (number | undefined | null)[] = at(record, seriesFields);\r\n const roundedSeriesValues = seriesValuesInTime.map(value => value !== undefined && value !== null ? +value.toFixed(4) : undefined) as (number | undefined)[];\r\n roundedSeriesValues.unshift(record.date.getTime());\r\n\r\n return roundedSeriesValues;\r\n })\r\n }\r\n\r\n onReload() {\r\n const tableItems: D2ChartTableItem[] = [];\r\n let missingData: MarkAreaData[][] = [];\r\n\r\n const option = this.chartInstance?.getOption() as EChartsOption | undefined | null;\r\n if (option) {\r\n const currentSeries = this.props.d2ChartSeries;\r\n const seriesFields = this.getSeriesFields(currentSeries);\r\n const series = this.getSeries(currentSeries, option.color);\r\n const dataset: { dimensions: string[], source: (number | undefined)[][] } = {\r\n dimensions: [\"timestamp\", ...this.getDiemnsions(currentSeries)],\r\n source: this.getDatasetSource(seriesFields),\r\n }\r\n tableItems.push(...this.getTableItems(currentSeries, seriesFields, option.color));\r\n\r\n this.setTooltip(option);\r\n\r\n // chart markArea\r\n if (this.props.markArea) {\r\n series.push({\r\n name: \"__markArea\",\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n markArea: this.props.markArea,\r\n encode: {\r\n x: \"timestamp\",\r\n y: \"__markArea\",\r\n },\r\n });\r\n\r\n dataset.dimensions.push(\"__markArea\");\r\n }\r\n\r\n //calendar markArea\r\n if (this.state.calendarDataVisible) {\r\n this.prepareCalendarMarkarea(series, dataset);\r\n }\r\n\r\n // missing data markArea\r\n const missingDataMarkArea = D2ChartUtils.getMissingDataMarkArea(this.props.d2ChartRecords, seriesFields);\r\n missingData = missingDataMarkArea.data;\r\n series.push({\r\n name: \"__markArea-missing-data\",\r\n type: \"line\",\r\n sampling: D2ChartPanel.SAMPLING_MODE,\r\n markArea: missingDataMarkArea,\r\n encode: {\r\n x: \"timestamp\",\r\n y: \"__markArea-missing-data\",\r\n },\r\n });\r\n\r\n dataset.dimensions.push(\"__markArea-missing-data\");\r\n\r\n option.dataset = dataset;\r\n option.series = series;\r\n option.markArea = undefined;\r\n option.legend[0].selected = Object.fromEntries(tableItems.map(value => [value.id, value.visible]));\r\n\r\n if (this.props.yAxisLabel) {\r\n option.yAxis[0].name = this.props.yAxisLabel;\r\n }\r\n\r\n this.chartInstance.setOption(option, true);\r\n }\r\n\r\n this.setState({\r\n tableItems: tableItems,\r\n missingData: missingData,\r\n });\r\n }\r\n\r\n private renderToolbox() {\r\n return (\r\n <D2ChartToolboxPanel\r\n missingData={this.state.missingData}\r\n calendarDataVisible={this.state.calendarDataVisible}\r\n missingDataVisible={this.state.missingDataVisible}\r\n showCalendarIcon={!!this.props.d2ChartCalendarRecords}\r\n onSwitchCalendarData={() => {\r\n this.setState({calendarDataVisible: !this.state.calendarDataVisible}, () => {\r\n this.onSwitchCalendarData();\r\n })\r\n }}\r\n onSwitchMissingData={() => {\r\n this.setState({missingDataVisible: !this.state.missingDataVisible}, () => {\r\n this.onSwitchMissingData();\r\n })\r\n }}\r\n onZoomControlSwitch={zoomEnabled => {\r\n this.chartInstance.dispatchAction({\r\n type: \"takeGlobalCursor\",\r\n key: \"dataZoomSelect\",\r\n dataZoomSelectActive: zoomEnabled\r\n });\r\n }}\r\n onZoomReset={() => {\r\n this.chartInstance.dispatchAction({\r\n type: \"dataZoom\",\r\n start: 0,\r\n end: 100,\r\n });\r\n }}\r\n compact={this.props.compact}\r\n onFullScreen={() => {\r\n this.setState({modalVisible: true}, () => {\r\n setTimeout(() => this.d2ChartPanelInModal?.onReload());\r\n })\r\n }}\r\n />\r\n )\r\n }\r\n\r\n private renderModalDialog() {\r\n return (\r\n <ModalDialog\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.modalVisible}\r\n onCancel={() => this.setState({modalVisible: false})}\r\n title={i18n(\"Chart\")}\r\n initialWidth={window.innerWidth * 0.8}\r\n initialHeight={window.innerHeight * 0.98}\r\n >\r\n <D2ChartPanel\r\n ref={component => {\r\n this.d2ChartPanelInModal = component;\r\n }}\r\n d2ChartSeries={this.props.d2ChartSeries}\r\n d2ChartRecords={this.props.d2ChartRecords}\r\n d2ChartCalendarRecords={this.props.d2ChartCalendarRecords}\r\n loading={this.props.loading}\r\n tableHeight={180}\r\n tableWrapperStyle={{padding: \"0px 12px 8px\"}}\r\n markArea={this.props.markArea}\r\n />\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n render() {\r\n const style: React.CSSProperties = {\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n }\r\n\r\n if (this.props.loading) {\r\n return (\r\n <div style={{alignItems: \"center\", ...style}}>\r\n <LoadingOutlined/>\r\n </div>\r\n );\r\n } else if (this.props.d2ChartRecords.length === 0) {\r\n return (\r\n <Empty\r\n style={style}\r\n description={i18n(\"No records found.\")}\r\n imageStyle={{height: \"8vh\"}}\r\n />\r\n );\r\n } else {\r\n let computedTableHeight = this.props.tableHeight;\r\n if (computedTableHeight === \"auto\") {\r\n computedTableHeight = 62 + this.props.d2ChartSeries.length * 28;\r\n }\r\n\r\n return (\r\n <div style={{position: \"relative\", ...style}}>\r\n {this.renderModalDialog()}\r\n {this.renderToolbox()}\r\n <ReactEcharts\r\n style={{height: `calc(100% - ${computedTableHeight}px)`}}\r\n onChartReady={instance => {\r\n this.chartInstance = instance;\r\n const zr = instance.getZr();\r\n zr.on(\"mouseout\", () => {\r\n const tableItems = this.state.tableItems;\r\n tableItems.forEach(value => value.tooltipValue = undefined);\r\n this.setState({tableItems: tableItems, tooltipTime: undefined}, () => {\r\n this.d2ChartTablePanel?.updateGrid();\r\n });\r\n });\r\n setTimeout(() => instance.resize(), 50);\r\n }}\r\n option={this.props.compact ? compactChartOptions : d2ChartOptions}\r\n />\r\n <D2ChartTablePanel\r\n style={{height: computedTableHeight, ...this.props.tableWrapperStyle}}\r\n ref={component => this.d2ChartTablePanel = component}\r\n tableItems={this.state.tableItems}\r\n tooltipTime={this.state.tooltipTime}\r\n onSwitchLegend={this.onSwitchLegend}\r\n />\r\n </div>\r\n )\r\n }\r\n }\r\n}"]}
|
|
@@ -3,6 +3,7 @@ import { EdaApi, EdaManagerRecord, EdaStepEnum, EdaVector } from "../../../../ap
|
|
|
3
3
|
import { EdaManagerTimePanelConfiguration } from "../components/edaManagerTimePanel";
|
|
4
4
|
import * as FlexLayout from "flexlayout-react";
|
|
5
5
|
import { D2ChartPanelProps } from "../../d2Chart/d2ChartPanel";
|
|
6
|
+
import { ArchiveApi } from "../../../../api/archiveApi";
|
|
6
7
|
export interface EdaManagerFilterToSave {
|
|
7
8
|
version: number;
|
|
8
9
|
currentVectors: EdaVector[];
|
|
@@ -12,12 +13,14 @@ export interface EdaManagerFilterToSave {
|
|
|
12
13
|
autoRefresh: boolean;
|
|
13
14
|
}
|
|
14
15
|
export interface EdaManagerFilter {
|
|
15
|
-
|
|
16
|
+
currentArchiveValues?: string[];
|
|
17
|
+
currentVectors?: EdaVector[];
|
|
16
18
|
timePanelConfiguration: EdaManagerTimePanelConfiguration;
|
|
17
19
|
}
|
|
18
20
|
export interface EdaManagerAbstractPanelProps extends Omit<D2ChartPanelProps, "d2ChartSeries" | "d2ChartRecords" | "d2ChartCalendarRecords" | "loading"> {
|
|
19
21
|
style?: React.CSSProperties;
|
|
20
|
-
|
|
22
|
+
archiveApi?: ArchiveApi;
|
|
23
|
+
edaApi?: EdaApi;
|
|
21
24
|
onVectorsLoaded?(loadedVectors: EdaManagerRecord[]): void;
|
|
22
25
|
}
|
|
23
26
|
export interface EdaManagerAbstractPanelState {
|
|
@@ -37,7 +40,8 @@ export default abstract class EdaManagerAbstractPanel<P extends EdaManagerAbstra
|
|
|
37
40
|
componentDidMount(): void;
|
|
38
41
|
protected saveFilter(): void;
|
|
39
42
|
getFilterNameToSave(): string | undefined;
|
|
40
|
-
protected
|
|
43
|
+
protected getActiveArchiveValues(): string[] | undefined;
|
|
44
|
+
protected getActiveVectors(): EdaVector[] | undefined;
|
|
41
45
|
protected onReload(): void;
|
|
42
46
|
onLoadVectors(): Promise<void>;
|
|
43
47
|
private onLoadVector;
|
|
@@ -76,18 +76,29 @@ export default class EdaManagerAbstractPanel extends React.Component {
|
|
|
76
76
|
getFilterNameToSave() {
|
|
77
77
|
return undefined;
|
|
78
78
|
}
|
|
79
|
+
getActiveArchiveValues() {
|
|
80
|
+
return this.state.currentFilter.currentArchiveValues;
|
|
81
|
+
}
|
|
79
82
|
getActiveVectors() {
|
|
80
|
-
return this.state.currentFilter.currentVectors
|
|
83
|
+
return this.state.currentFilter.currentVectors?.filter(vector => vector.active);
|
|
81
84
|
}
|
|
82
85
|
onReload() {
|
|
83
86
|
this.edaManagerTablePanel?.onReload();
|
|
84
87
|
this.edaManagerChartPanel?.onReload();
|
|
85
88
|
}
|
|
86
89
|
async onLoadVectors() {
|
|
90
|
+
const activeArchiveValues = this.getActiveArchiveValues();
|
|
87
91
|
const activeVectors = this.getActiveVectors();
|
|
92
|
+
let loadedVectors = [];
|
|
93
|
+
let loadedCalendarVector;
|
|
88
94
|
this.setState({ loading: true });
|
|
89
|
-
|
|
90
|
-
|
|
95
|
+
if (activeArchiveValues) {
|
|
96
|
+
loadedVectors = await this.props.archiveApi.getArchiveData(activeArchiveValues, this.state.currentFilter.timePanelConfiguration.selectedTimeFrom, this.state.currentFilter.timePanelConfiguration.selectedTimeTo, Number(this.state.currentFilter.timePanelConfiguration.selectedStep));
|
|
97
|
+
}
|
|
98
|
+
else if (activeVectors) {
|
|
99
|
+
loadedVectors = await this.props.edaApi.loadVectors(activeVectors, this.state.currentFilter.timePanelConfiguration.selectedTimeFrom, this.state.currentFilter.timePanelConfiguration.selectedTimeTo, this.state.currentFilter.timePanelConfiguration.selectedStep);
|
|
100
|
+
loadedCalendarVector = await this.props.edaApi.loadCalendarVector(this.state.currentFilter.timePanelConfiguration.selectedTimeFrom, this.state.currentFilter.timePanelConfiguration.selectedTimeTo);
|
|
101
|
+
}
|
|
91
102
|
this.setState({
|
|
92
103
|
loading: false,
|
|
93
104
|
loadedVectors: loadedVectors,
|
|
@@ -113,7 +124,7 @@ export default class EdaManagerAbstractPanel extends React.Component {
|
|
|
113
124
|
}
|
|
114
125
|
renderTimePanel() {
|
|
115
126
|
const pathsToOmit = ["timePanelConfiguration.autoRefresh"];
|
|
116
|
-
this.state.currentFilter.currentVectors
|
|
127
|
+
this.state.currentFilter.currentVectors?.forEach((_, index) => {
|
|
117
128
|
pathsToOmit.push(`currentVectors[${index}].target`);
|
|
118
129
|
});
|
|
119
130
|
const filterChanged = !isEqual(omit(cloneDeep(this.state.currentFilter), pathsToOmit), omit(cloneDeep(this.state.loadedDataFilter), pathsToOmit));
|
|
@@ -139,14 +150,15 @@ export default class EdaManagerAbstractPanel extends React.Component {
|
|
|
139
150
|
}
|
|
140
151
|
flexLayoutFactory(node) {
|
|
141
152
|
const component = node.getComponent();
|
|
153
|
+
const activeArchiveValues = this.getActiveArchiveValues();
|
|
142
154
|
const activeVectors = this.getActiveVectors();
|
|
143
155
|
if (component === "table") {
|
|
144
|
-
return (React.createElement(EdaManagerTablePanel, { style: this.tabWrapperStyle, ref: component => this.edaManagerTablePanel = component, edaApi: this.props.edaApi, timePanel: this.renderTimePanel(), currentVectors: activeVectors, loadedVectors: this.state.loadedVectors, loading: this.state.loading, onReloadVectorData: code => {
|
|
156
|
+
return (React.createElement(EdaManagerTablePanel, { style: this.tabWrapperStyle, ref: component => this.edaManagerTablePanel = component, edaApi: this.props.edaApi, timePanel: this.renderTimePanel(), currentArchiveValues: activeArchiveValues, currentVectors: activeVectors, loadedVectors: this.state.loadedVectors, loading: this.state.loading, onReloadVectorData: code => {
|
|
145
157
|
this.onLoadVector(code);
|
|
146
158
|
} }));
|
|
147
159
|
}
|
|
148
160
|
else if (component === "chart") {
|
|
149
|
-
const d2ChartSeries = activeVectors
|
|
161
|
+
const d2ChartSeries = activeVectors?.map(value => {
|
|
150
162
|
return {
|
|
151
163
|
id: value.id,
|
|
152
164
|
code: value.code,
|
|
@@ -154,7 +166,13 @@ export default class EdaManagerAbstractPanel extends React.Component {
|
|
|
154
166
|
colorIndex: value.colorIndex,
|
|
155
167
|
lineStyle: value.lineStyle,
|
|
156
168
|
};
|
|
157
|
-
})
|
|
169
|
+
}) ?? activeArchiveValues?.map((value, index) => {
|
|
170
|
+
return {
|
|
171
|
+
id: index,
|
|
172
|
+
code: value,
|
|
173
|
+
name: value,
|
|
174
|
+
};
|
|
175
|
+
}) ?? [];
|
|
158
176
|
return (React.createElement("div", { style: Object.assign({ display: "flex", flexDirection: "column", height: "100%" }, this.tabWrapperStyle) },
|
|
159
177
|
this.renderTimePanel(),
|
|
160
178
|
React.createElement(D2ChartPanel, { ref: component => this.edaManagerChartPanel = component, d2ChartSeries: d2ChartSeries, d2ChartRecords: this.state.loadedVectors, d2ChartCalendarRecords: this.state.loadedCalendarVector, loading: this.state.loading, compact: this.edaManagerChartPanelCompact, markArea: this.props.markArea, tableHeight: this.props.tableHeight, tableWrapperStyle: this.props.tableWrapperStyle })));
|
|
@@ -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\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 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 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 getActiveVectors(): EdaVector[] {\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 activeVectors = this.getActiveVectors();\r\n this.setState({loading: true});\r\n\r\n const 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 const 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 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 activeVectors = this.getActiveVectors();\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 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[] = 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 });\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":"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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\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?: string[]\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(): string[] | 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,\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,\r\n name: value,\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}"]}
|
|
@@ -5,7 +5,8 @@ import { GridRowStyle } from "d2coreui/components/grid/cell/tableDefaultRowStyle
|
|
|
5
5
|
import { GridApi } from "ag-grid-community";
|
|
6
6
|
export interface EdaManagerAbstractTablePanelProps {
|
|
7
7
|
style?: React.CSSProperties;
|
|
8
|
-
|
|
8
|
+
currentArchiveValues?: string[];
|
|
9
|
+
currentVectors?: EdaVector[];
|
|
9
10
|
loadedVectors: EdaManagerRecord[];
|
|
10
11
|
loading?: boolean;
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaManagerAbstractTablePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAC,KAAK,EAAC,MAAM,MAAM,CAAC;AAC3B,OAAO,IAAI,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"edaManagerAbstractTablePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {DataGridColDef, MenuElement} from \"d2coreui/components/grid/dataGrid\";\r\nimport {LoadingOutlined} from \"@ant-design/icons\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {Empty} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EdaManagerRecord, EdaVector} from \"../../../../api/edaApi\";\r\nimport {GridRowStyle} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {SelectionChangedEvent, GridReadyEvent, GridApi} from \"ag-grid-community\";\r\n\r\nexport interface EdaManagerAbstractTablePanelProps {\r\n style?: React.CSSProperties\r\n currentArchiveValues?: string[]\r\n currentVectors?: EdaVector[],\r\n loadedVectors: EdaManagerRecord[],\r\n loading?: boolean\r\n}\r\n\r\nexport interface EdaManagerAbstractTablePanelState {\r\n columnDefs: DataGridColDef[]\r\n selectedData: EdaManagerRecord[]\r\n}\r\n\r\nexport default abstract class EdaManagerAbstractTablePanel<P extends EdaManagerAbstractTablePanelProps, S extends EdaManagerAbstractTablePanelState> extends React.Component<P, S> {\r\n protected gridApi?: GridApi;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.renderContextMenu = this.renderContextMenu.bind(this);\r\n this.onClickContextMenuItem = this.onClickContextMenuItem.bind(this);\r\n }\r\n\r\n protected initialState: EdaManagerAbstractTablePanelState = {\r\n columnDefs: this.getColumnDefs(),\r\n selectedData: [],\r\n }\r\n\r\n onReload() {\r\n this.setState({columnDefs: this.getColumnDefs()});\r\n }\r\n\r\n refreshCells() {\r\n this.gridApi?.refreshCells();\r\n }\r\n\r\n redrawRows() {\r\n this.gridApi?.redrawRows();\r\n }\r\n\r\n protected getDateTimeColumn(): DataGridColDef {\r\n return {\r\n headerName: i18n(\"Date\"),\r\n colId: \"date\",\r\n field: \"date\",\r\n type: \"dateTimeColumn\",\r\n initialWidth: 140,\r\n group: i18n(\"Basic Columns\"),\r\n }\r\n }\r\n\r\n abstract getColumnDefs(): DataGridColDef[];\r\n\r\n private onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n this.setState({selectedData: selectedRows});\r\n }\r\n\r\n protected renderToolbarButtons(): React.ReactElement | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalContent(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected getRowStyle(data: EdaManagerRecord): GridRowStyle | undefined {\r\n data;\r\n return undefined;\r\n }\r\n\r\n protected renderContextMenu(originalMenuItems: MenuElement[]): MenuElement[] {\r\n return originalMenuItems;\r\n }\r\n\r\n protected onClickContextMenuItem(key: string) {\r\n key;\r\n }\r\n\r\n render() {\r\n const toolbarButtons = this.renderToolbarButtons();\r\n\r\n if (this.props.loading) {\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\", ...this.props.style}}>\r\n {toolbarButtons}\r\n <div style={{height: \"100%\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\"}}>\r\n <LoadingOutlined/>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div style={{height: \"100%\"}}>\r\n {this.renderAdditionalContent()}\r\n <ExtendedDataGrid\r\n columnDefs={this.state.columnDefs}\r\n onLoadData={callback => {\r\n callback(this.props.loadedVectors.length)\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={this.props.loadedVectors}\r\n onSelectionChanged={this.onSelectionChanged}\r\n tablePanelStyle={{marginTop: 8}}\r\n panelStyle={this.props.style}\r\n toolbar={{\r\n hideRecordCount: true,\r\n toolbarButtons: toolbarButtons,\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n contextMenu={{\r\n renderer: this.renderContextMenu,\r\n onClick: this.onClickContextMenuItem\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}/>\r\n }\r\n getRowStyle={params => {\r\n const data = params.node.data as EdaManagerRecord;\r\n return this.getRowStyle(data);\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}"]}
|
|
@@ -2,7 +2,8 @@ import EdaManagerAbstractPanel, { EdaManagerAbstractPanelProps, EdaManagerAbstra
|
|
|
2
2
|
import { EdaVector, EdaStepEnum } from "../../../../api/edaApi";
|
|
3
3
|
import dayjs from "d2core/dayjs";
|
|
4
4
|
interface Props extends EdaManagerAbstractPanelProps {
|
|
5
|
-
|
|
5
|
+
initialArchiveValues?: string[];
|
|
6
|
+
initialVectors?: EdaVector[];
|
|
6
7
|
initialTimeFrom: dayjs.Dayjs | null;
|
|
7
8
|
initialTimeTo: dayjs.Dayjs | null;
|
|
8
9
|
initialStep?: EdaStepEnum;
|
|
@@ -13,8 +13,9 @@ export default class EdaManagerCompactPanel extends EdaManagerAbstractPanel {
|
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
componentDidUpdate(prevProps) {
|
|
16
|
-
if (!isEqual(prevProps.initialVectors, this.props.initialVectors) || !isEqual(prevProps.initialTimeFrom, this.props.initialTimeFrom) || !isEqual(prevProps.initialTimeTo, this.props.initialTimeTo) || prevProps.initialStep !== this.props.initialStep) {
|
|
16
|
+
if (!isEqual(prevProps.initialVectors, this.props.initialVectors) || !isEqual(prevProps.initialArchiveValues, this.props.initialArchiveValues) || !isEqual(prevProps.initialTimeFrom, this.props.initialTimeFrom) || !isEqual(prevProps.initialTimeTo, this.props.initialTimeTo) || prevProps.initialStep !== this.props.initialStep) {
|
|
17
17
|
const currentFilter = this.state.currentFilter;
|
|
18
|
+
currentFilter.currentArchiveValues = this.props.initialArchiveValues;
|
|
18
19
|
currentFilter.currentVectors = this.props.initialVectors;
|
|
19
20
|
currentFilter.timePanelConfiguration.selectedTimeFrom = this.props.initialTimeFrom;
|
|
20
21
|
currentFilter.timePanelConfiguration.selectedTimeTo = this.props.initialTimeTo;
|
|
@@ -39,6 +40,7 @@ export default class EdaManagerCompactPanel extends EdaManagerAbstractPanel {
|
|
|
39
40
|
}
|
|
40
41
|
get initialFilter() {
|
|
41
42
|
return {
|
|
43
|
+
currentArchiveValues: this.props.initialArchiveValues,
|
|
42
44
|
currentVectors: this.props.initialVectors,
|
|
43
45
|
timePanelConfiguration: {
|
|
44
46
|
selectedTimeFrom: this.props.initialTimeFrom,
|