d2aura 23.0.74 → 23.0.76
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/assignEntitiesToEntity/abstractEntitiesOnEntityList.d.ts +1 -1
- package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.js +3 -3
- package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.js.map +1 -1
- package/coreui/components/d2Chart/d2ChartTablePanel.js +1 -1
- package/coreui/components/d2Chart/d2ChartTablePanel.js.map +1 -1
- package/package.json +5 -4
|
@@ -24,7 +24,7 @@ export declare abstract class AbstractEntitiesOnEntityList<ME extends Entity, SE
|
|
|
24
24
|
protected initialState: AbstractEntitiesOnEntityListState<SE>;
|
|
25
25
|
componentDidUpdate(prevProps: Readonly<P>): void;
|
|
26
26
|
abstract getInitialColumnDefs(): DataGridColDef[];
|
|
27
|
-
abstract getSubEntities(): SE[];
|
|
27
|
+
abstract getSubEntities(): SE[] | undefined;
|
|
28
28
|
protected renderSelectModalDialog(): React.ReactNode | undefined;
|
|
29
29
|
protected renderControlPanel(): JSX.Element | null;
|
|
30
30
|
protected noRecordsOverlayRenderer(): React.JSX.Element;
|
|
@@ -34,7 +34,7 @@ export class AbstractEntitiesOnEntityList extends React.Component {
|
|
|
34
34
|
return React.createElement("div", null);
|
|
35
35
|
}
|
|
36
36
|
onExcludeRecords() {
|
|
37
|
-
const subEntities = this.getSubEntities();
|
|
37
|
+
const subEntities = this.getSubEntities() ?? [];
|
|
38
38
|
this.state.selectedRecords.forEach(subEntityToExclude => {
|
|
39
39
|
const index = subEntities.findIndex(value => value.id === subEntityToExclude.id);
|
|
40
40
|
subEntities.splice(index, 1);
|
|
@@ -119,7 +119,7 @@ export class AbstractEntitiesOnEntityList extends React.Component {
|
|
|
119
119
|
this.gridApi = params.api;
|
|
120
120
|
}
|
|
121
121
|
}, defaultGridConfiguration: { pageSize: -1 }, columnDefs: this.state.columnDefs, rowData: subEntities, onLoadData: (callback) => {
|
|
122
|
-
callback(subEntities
|
|
122
|
+
callback(subEntities?.length ?? 0);
|
|
123
123
|
}, search: {
|
|
124
124
|
hidden: true,
|
|
125
125
|
searchButtonHidden: true,
|
|
@@ -137,7 +137,7 @@ export class AbstractEntitiesOnEntityList extends React.Component {
|
|
|
137
137
|
}, controlPanel: {
|
|
138
138
|
renderer: this.renderControlPanel
|
|
139
139
|
}, panelStyle: { padding: 0 }, tableConfigVisible: false, noRecordsOverlayRenderer: () => {
|
|
140
|
-
if (this.getSubEntities()
|
|
140
|
+
if (this.getSubEntities()?.length === 0) {
|
|
141
141
|
return this.noRecordsOverlayRenderer();
|
|
142
142
|
}
|
|
143
143
|
return React.createElement("div", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractEntitiesOnEntityList.js","sourceRoot":"","sources":["../../../../../coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridApi, GridReadyEvent, SelectionChangedEvent, RowDoubleClickedEvent} from \"ag-grid-community\";\r\nimport {Button} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {CloseCircleOutlined, DeleteOutlined, FullscreenOutlined, PlusCircleOutlined} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {ERROR_COLOR, WARNING_COLOR} from \"../../../api/constants/constants\";\r\n\r\nexport interface AbstractEntitiesOnEntityListProps<ME extends Entity> {\r\n editedEntity: ME\r\n height: number\r\n disabled?: boolean\r\n isHighlighted?: boolean\r\n isError?: boolean\r\n\r\n onChange?(): void\r\n}\r\n\r\nexport interface AbstractEntitiesOnEntityListState<SE extends Entity> {\r\n selectedRecords: SE[]\r\n selectModalDialogVisible: boolean\r\n columnDefs: DataGridColDef[]\r\n fullscreenModalOpen: boolean\r\n}\r\n\r\nexport abstract class AbstractEntitiesOnEntityList<\r\n ME extends Entity,\r\n SE extends Entity,\r\n P extends AbstractEntitiesOnEntityListProps<ME>,\r\n S extends AbstractEntitiesOnEntityListState<SE>\r\n> extends React.Component<P, S> {\r\n protected gridApi?: GridApi;\r\n protected fullscreenGridApi?: GridApi;\r\n protected initialColumnDefs?: DataGridColDef[];\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.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onExcludeRecords = this.onExcludeRecords.bind(this);\r\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n }\r\n\r\n protected initialState: AbstractEntitiesOnEntityListState<SE> = {\r\n selectedRecords: [],\r\n selectModalDialogVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n fullscreenModalOpen: false,\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<P>) {\r\n if (prevProps.disabled !== this.props.disabled || prevProps.editedEntity.id !== this.props.editedEntity.id) {\r\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\r\n }\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract getSubEntities(): SE[];\r\n\r\n protected renderSelectModalDialog(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected noRecordsOverlayRenderer() {\r\n return <div/>\r\n }\r\n\r\n protected onExcludeRecords() {\r\n const subEntities = this.getSubEntities();\r\n\r\n this.state.selectedRecords.forEach(subEntityToExclude => {\r\n const index = subEntities.findIndex(value => value.id === subEntityToExclude.id);\r\n subEntities.splice(index, 1);\r\n });\r\n\r\n this.props.onChange?.();\r\n if (this.state.fullscreenModalOpen) {\r\n this.fullscreenGridApi?.applyTransaction({remove: this.state.selectedRecords});\r\n } else {\r\n this.gridApi?.applyTransaction({remove: this.state.selectedRecords});\r\n }\r\n }\r\n\r\n protected renderToolbarButtons() {\r\n return <>\r\n <Button\r\n title={i18n(\"Add Record\")}\r\n disabled={this.props.disabled}\r\n onClick={() => {\r\n this.setState({selectModalDialogVisible: true});\r\n }}\r\n >\r\n <PlusCircleOutlined/>\r\n </Button>\r\n <Button\r\n title={i18n(\"Exclude Record\")}\r\n disabled={this.state.selectedRecords.length === 0 || this.props.disabled}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title:\r\n <span style={{whiteSpace: \"nowrap\"}}>\r\n {i18n(\"Exclude %n records?\", this.state.selectedRecords.length)}\r\n </span>,\r\n icon: <DeleteOutlined style={{color: ERROR_COLOR}}/>,\r\n onOk: this.onExcludeRecords\r\n });\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n </>;\r\n }\r\n\r\n private onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n this.setState({selectedRecords: selectedRows});\r\n }\r\n\r\n protected addRecordsToGrid(records: SE[], idToSelect?: number) {\r\n if (records.length > 0) {\r\n if (this.state.fullscreenModalOpen) {\r\n this.fullscreenGridApi?.applyTransaction({add: records});\r\n } else {\r\n this.gridApi?.applyTransaction({add: records});\r\n }\r\n this.props.onChange?.();\r\n }\r\n\r\n if (idToSelect !== undefined) {\r\n let rowNode;\r\n if (this.state.fullscreenModalOpen) {\r\n rowNode = this.fullscreenGridApi?.getRowNode(idToSelect.toString());\r\n this.fullscreenGridApi?.ensureNodeVisible(rowNode);\r\n } else {\r\n rowNode = this.gridApi?.getRowNode(idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n }\r\n\r\n rowNode?.setSelected(true, true);\r\n }\r\n }\r\n\r\n protected onRowDoubleClicked(_event: RowDoubleClickedEvent) {\r\n }\r\n\r\n private renderFullScreenModalDialog() {\r\n return (\r\n <ModalDialog\r\n styles={{body: {paddingTop: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.fullscreenModalOpen}\r\n onCancel={() => this.setState({fullscreenModalOpen: false})}\r\n afterClose={() => {\r\n if (this.renderSelectModalDialog()) {\r\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\r\n } else {\r\n this.gridApi?.refreshCells({force: true});\r\n }\r\n }}\r\n title={i18n(\"Fullscreen\")}\r\n initialWidth={800}\r\n initialHeight={window.innerHeight - 20}\r\n >\r\n {this.renderGrid(true)}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected renderGrid(fullscreen: boolean) {\r\n const subEntities = this.getSubEntities();\r\n\r\n let tablePanelStyleBorder: React.CSSProperties[\"border\"] = \"unset\";\r\n if (this.props.isHighlighted) {\r\n tablePanelStyleBorder = `1px solid ${WARNING_COLOR}`;\r\n } else if (this.props.isError) {\r\n tablePanelStyleBorder = `1px solid ${ERROR_COLOR}`;\r\n }\r\n\r\n return (\r\n <ExtendedDataGrid\r\n onGridReady={(params: GridReadyEvent) => {\r\n if (fullscreen) {\r\n this.fullscreenGridApi = params.api;\r\n } else {\r\n this.gridApi = params.api;\r\n }\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n columnDefs={this.state.columnDefs}\r\n rowData={subEntities}\r\n onLoadData={(callback) => {\r\n callback(subEntities.length);\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n rowSelection=\"multiple\"\r\n onSelectionChanged={this.onSelectionChanged}\r\n toolbar={{\r\n renderToolbar: (originalSearchBar) => this.renderSelectModalDialog() ? originalSearchBar : <></>,\r\n toolbarButtons: this.renderSelectModalDialog() ? this.renderToolbarButtons() : <></>,\r\n extraContent:\r\n !fullscreen\r\n ?\r\n <FullscreenOutlined\r\n style={{cursor: \"pointer\", height: 32}}\r\n title={i18n(\"Fullscreen\")}\r\n onClick={() => this.setState({fullscreenModalOpen: true})}\r\n />\r\n :\r\n undefined\r\n }}\r\n tablePanelStyle={{\r\n marginTop: this.renderSelectModalDialog() ? 4 : 0,\r\n border: tablePanelStyleBorder,\r\n }}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n panelStyle={{padding: 0}}\r\n tableConfigVisible={false}\r\n noRecordsOverlayRenderer={() => {\r\n if (this.getSubEntities().length === 0) {\r\n return this.noRecordsOverlayRenderer();\r\n }\r\n return <div/>\r\n }}\r\n onRowDoubleClicked={this.onRowDoubleClicked}\r\n singleClickEdit\r\n stopEditingWhenCellsLoseFocus\r\n enterNavigatesVerticallyAfterEdit\r\n />\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{height: this.props.height, overflow: \"auto\", resize: \"vertical\"}}>\r\n {this.renderFullScreenModalDialog()}\r\n {this.renderSelectModalDialog()}\r\n {this.renderGrid(false)}\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"abstractEntitiesOnEntityList.js","sourceRoot":"","sources":["../../../../../coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport Entity from \"../../../api/types/entity\";\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\nimport {GridApi, GridReadyEvent, SelectionChangedEvent, RowDoubleClickedEvent} from \"ag-grid-community\";\nimport {Button} from \"antd\";\nimport i18n from \"d2core/i18n/i18n\";\nimport {CloseCircleOutlined, DeleteOutlined, FullscreenOutlined, PlusCircleOutlined} from \"@ant-design/icons\";\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\nimport {ERROR_COLOR, WARNING_COLOR} from \"../../../api/constants/constants\";\n\nexport interface AbstractEntitiesOnEntityListProps<ME extends Entity> {\n editedEntity: ME\n height: number\n disabled?: boolean\n isHighlighted?: boolean\n isError?: boolean\n\n onChange?(): void\n}\n\nexport interface AbstractEntitiesOnEntityListState<SE extends Entity> {\n selectedRecords: SE[]\n selectModalDialogVisible: boolean\n columnDefs: DataGridColDef[]\n fullscreenModalOpen: boolean\n}\n\nexport abstract class AbstractEntitiesOnEntityList<\n ME extends Entity,\n SE extends Entity,\n P extends AbstractEntitiesOnEntityListProps<ME>,\n S extends AbstractEntitiesOnEntityListState<SE>\n> extends React.Component<P, S> {\n protected gridApi?: GridApi;\n protected fullscreenGridApi?: GridApi;\n protected initialColumnDefs?: DataGridColDef[];\n\n protected constructor(props: Readonly<P>) {\n super(props);\n\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\n this.renderControlPanel = this.renderControlPanel.bind(this);\n this.onExcludeRecords = this.onExcludeRecords.bind(this);\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\n }\n\n protected initialState: AbstractEntitiesOnEntityListState<SE> = {\n selectedRecords: [],\n selectModalDialogVisible: false,\n columnDefs: this.getInitialColumnDefs(),\n fullscreenModalOpen: false,\n }\n\n componentDidUpdate(prevProps: Readonly<P>) {\n if (prevProps.disabled !== this.props.disabled || prevProps.editedEntity.id !== this.props.editedEntity.id) {\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\n }\n }\n\n abstract getInitialColumnDefs(): DataGridColDef[];\n\n abstract getSubEntities(): SE[] | undefined;\n\n protected renderSelectModalDialog(): React.ReactNode | undefined {\n return undefined;\n }\n\n protected renderControlPanel(): JSX.Element | null {\n return null;\n }\n\n protected noRecordsOverlayRenderer() {\n return <div/>\n }\n\n protected onExcludeRecords() {\n const subEntities = this.getSubEntities() ?? [];\n\n this.state.selectedRecords.forEach(subEntityToExclude => {\n const index = subEntities.findIndex(value => value.id === subEntityToExclude.id);\n subEntities.splice(index, 1);\n });\n\n this.props.onChange?.();\n if (this.state.fullscreenModalOpen) {\n this.fullscreenGridApi?.applyTransaction({remove: this.state.selectedRecords});\n } else {\n this.gridApi?.applyTransaction({remove: this.state.selectedRecords});\n }\n }\n\n protected renderToolbarButtons() {\n return <>\n <Button\n title={i18n(\"Add Record\")}\n disabled={this.props.disabled}\n onClick={() => {\n this.setState({selectModalDialogVisible: true});\n }}\n >\n <PlusCircleOutlined/>\n </Button>\n <Button\n title={i18n(\"Exclude Record\")}\n disabled={this.state.selectedRecords.length === 0 || this.props.disabled}\n onClick={() => {\n ModalDialog.delete({\n mode: ModalDialogMode.YES_NO,\n title:\n <span style={{whiteSpace: \"nowrap\"}}>\n {i18n(\"Exclude %n records?\", this.state.selectedRecords.length)}\n </span>,\n icon: <DeleteOutlined style={{color: ERROR_COLOR}}/>,\n onOk: this.onExcludeRecords\n });\n }}\n >\n <CloseCircleOutlined/>\n </Button>\n </>;\n }\n\n private onSelectionChanged(event: SelectionChangedEvent): void {\n const selectedRows = event.api.getSelectedRows();\n this.setState({selectedRecords: selectedRows});\n }\n\n protected addRecordsToGrid(records: SE[], idToSelect?: number) {\n if (records.length > 0) {\n if (this.state.fullscreenModalOpen) {\n this.fullscreenGridApi?.applyTransaction({add: records});\n } else {\n this.gridApi?.applyTransaction({add: records});\n }\n this.props.onChange?.();\n }\n\n if (idToSelect !== undefined) {\n let rowNode;\n if (this.state.fullscreenModalOpen) {\n rowNode = this.fullscreenGridApi?.getRowNode(idToSelect.toString());\n this.fullscreenGridApi?.ensureNodeVisible(rowNode);\n } else {\n rowNode = this.gridApi?.getRowNode(idToSelect.toString());\n this.gridApi?.ensureNodeVisible(rowNode);\n }\n\n rowNode?.setSelected(true, true);\n }\n }\n\n protected onRowDoubleClicked(_event: RowDoubleClickedEvent) {\n }\n\n private renderFullScreenModalDialog() {\n return (\n <ModalDialog\n styles={{body: {paddingTop: 0}}}\n mode={ModalDialogMode.NO_BUTTONS}\n open={this.state.fullscreenModalOpen}\n onCancel={() => this.setState({fullscreenModalOpen: false})}\n afterClose={() => {\n if (this.renderSelectModalDialog()) {\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\n } else {\n this.gridApi?.refreshCells({force: true});\n }\n }}\n title={i18n(\"Fullscreen\")}\n initialWidth={800}\n initialHeight={window.innerHeight - 20}\n >\n {this.renderGrid(true)}\n </ModalDialog>\n )\n }\n\n protected renderGrid(fullscreen: boolean) {\n const subEntities = this.getSubEntities();\n\n let tablePanelStyleBorder: React.CSSProperties[\"border\"] = \"unset\";\n if (this.props.isHighlighted) {\n tablePanelStyleBorder = `1px solid ${WARNING_COLOR}`;\n } else if (this.props.isError) {\n tablePanelStyleBorder = `1px solid ${ERROR_COLOR}`;\n }\n\n return (\n <ExtendedDataGrid\n onGridReady={(params: GridReadyEvent) => {\n if (fullscreen) {\n this.fullscreenGridApi = params.api;\n } else {\n this.gridApi = params.api;\n }\n }}\n defaultGridConfiguration={{pageSize: -1}}\n columnDefs={this.state.columnDefs}\n rowData={subEntities}\n onLoadData={(callback) => {\n callback(subEntities?.length ?? 0);\n }}\n search={{\n hidden: true,\n searchButtonHidden: true,\n }}\n rowSelection=\"multiple\"\n onSelectionChanged={this.onSelectionChanged}\n toolbar={{\n renderToolbar: (originalSearchBar) => this.renderSelectModalDialog() ? originalSearchBar : <></>,\n toolbarButtons: this.renderSelectModalDialog() ? this.renderToolbarButtons() : <></>,\n extraContent:\n !fullscreen\n ?\n <FullscreenOutlined\n style={{cursor: \"pointer\", height: 32}}\n title={i18n(\"Fullscreen\")}\n onClick={() => this.setState({fullscreenModalOpen: true})}\n />\n :\n undefined\n }}\n tablePanelStyle={{\n marginTop: this.renderSelectModalDialog() ? 4 : 0,\n border: tablePanelStyleBorder,\n }}\n controlPanel={{\n renderer: this.renderControlPanel\n }}\n panelStyle={{padding: 0}}\n tableConfigVisible={false}\n noRecordsOverlayRenderer={() => {\n if (this.getSubEntities()?.length === 0) {\n return this.noRecordsOverlayRenderer();\n }\n return <div/>\n }}\n onRowDoubleClicked={this.onRowDoubleClicked}\n singleClickEdit\n stopEditingWhenCellsLoseFocus\n enterNavigatesVerticallyAfterEdit\n />\n );\n }\n\n render() {\n return (\n <div style={{height: this.props.height, overflow: \"auto\", resize: \"vertical\"}}>\n {this.renderFullScreenModalDialog()}\n {this.renderSelectModalDialog()}\n {this.renderGrid(false)}\n </div>\n );\n }\n\n}"]}
|
|
@@ -109,7 +109,7 @@ export default class D2ChartTablePanel extends React.Component {
|
|
|
109
109
|
}, toolbar: {
|
|
110
110
|
renderToolbar: () => React.createElement(React.Fragment, null),
|
|
111
111
|
hideRecordCount: true
|
|
112
|
-
}, rowData: this.props.tableItems, panelStyle: { padding: 0 }, tablePanelStyle: { marginTop: 8 }, noRecordsOverlayRenderer: () => React.createElement("div", null),
|
|
112
|
+
}, rowData: this.props.tableItems, panelStyle: { padding: 0 }, tablePanelStyle: { marginTop: 8 }, noRecordsOverlayRenderer: () => React.createElement("div", null), rowSelection: {
|
|
113
113
|
mode: "singleRow",
|
|
114
114
|
checkboxes: false,
|
|
115
115
|
isRowSelectable: () => false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d2ChartTablePanel.js","sourceRoot":"","sources":["../../../../../coreui/components/d2Chart/d2ChartTablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport DataGrid, {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {ColDef, GridApi, GridReadyEvent} from \"ag-grid-community\";\r\nimport {DateTimeUtils} from \"d2core/utils/dateTimeUtils\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {UnixTime} from \"d2jsapi\";\r\n\r\nexport interface D2ChartTableItem {\r\n id: string\r\n displayName: string\r\n color: string\r\n visible: boolean\r\n\r\n min?: number\r\n max?: number\r\n sum?: number\r\n avg?: number\r\n\r\n tooltipValue?: number\r\n}\r\n\r\ninterface Props {\r\n tableItems: D2ChartTableItem[]\r\n tooltipTime?: UnixTime\r\n\r\n style?: React.CSSProperties\r\n\r\n onSwitchLegend(name: string): void\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nexport default class D2ChartTablePanel extends React.Component<Props, State> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private gridApi?: GridApi;\r\n\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n }\r\n\r\n updateGrid() {\r\n this.gridApi?.applyTransaction({update: this.props.tableItems});\r\n\r\n const columnDefs = this.gridApi?.getColumnDefs() as ColDef[] | undefined;\r\n if (columnDefs) {\r\n const columnDefinition = columnDefs.find(value => value.colId === \"tooltipValue\");\r\n if (columnDefinition) {\r\n if (this.props.tooltipTime) {\r\n columnDefinition.headerName = DateTimeUtils.fromUnixTime(this.props.tooltipTime / 1000).format(LocaleHolder.getDateTimeFormat(true, true, false));\r\n } else {\r\n columnDefinition.headerName = i18n(\"Value\");\r\n }\r\n }\r\n this.gridApi?.updateGridOptions({columnDefs: columnDefs});\r\n }\r\n }\r\n\r\n getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n {\r\n headerName: \"\",\r\n colId: \"visible\",\r\n field: \"visible\",\r\n minWidth: 48,\r\n maxWidth: 48,\r\n initialWidth: 48,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as D2ChartTableItem;\r\n\r\n return (\r\n <div\r\n style={{\r\n width: 22,\r\n height: 22,\r\n marginTop: 2,\r\n backgroundColor: data.color,\r\n flex: \"none\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={() => this.props.onSwitchLegend(data.id)}\r\n >\r\n {data.visible &&\r\n <svg viewBox=\"0 0 22 22\" style={{width: 20, height: 20, fill: \"white\"}}>\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"/>\r\n </svg>\r\n }\r\n </div>\r\n );\r\n },\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n headerName: i18n(\"Title\"),\r\n colId: \"title\",\r\n field: \"displayName\",\r\n initialWidth: 240,\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Value\"),\r\n colId: \"tooltipValue\",\r\n field: \"tooltipValue\",\r\n initialWidth: 154,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Min\"),\r\n colId: \"min\",\r\n field: \"min\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Max\"),\r\n colId: \"max\",\r\n field: \"max\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Sum\"),\r\n colId: \"sum\",\r\n field: \"sum\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Avg\"),\r\n colId: \"avg\",\r\n field: \"avg\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n ]\r\n }\r\n\r\n return this.initialColumnDefs;\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={this.props.style}>\r\n <DataGrid\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n paging={{pageSize: -1}}\r\n columnDefs={this.getInitialColumnDefs()}\r\n onLoadData={callback => {\r\n callback(this.props.tableItems.length);\r\n }}\r\n toolbar={{\r\n renderToolbar: () => <></>,\r\n hideRecordCount: true\r\n }}\r\n rowData={this.props.tableItems}\r\n panelStyle={{padding: 0}}\r\n tablePanelStyle={{marginTop: 8}}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n selection={{\r\n mode: \"singleRow\",\r\n checkboxes: false,\r\n isRowSelectable: () => false,\r\n }}\r\n getRowStyle={(params: any) => {\r\n const data = params.node.data as D2ChartTableItem;\r\n if (!data.visible) {\r\n return {background: \"#ddd\"}\r\n }\r\n return;\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"d2ChartTablePanel.js","sourceRoot":"","sources":["../../../../../coreui/components/d2Chart/d2ChartTablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport DataGrid, {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {ColDef, GridApi, GridReadyEvent} from \"ag-grid-community\";\r\nimport {DateTimeUtils} from \"d2core/utils/dateTimeUtils\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {UnixTime} from \"d2jsapi\";\r\n\r\nexport interface D2ChartTableItem {\r\n id: string\r\n displayName: string\r\n color: string\r\n visible: boolean\r\n\r\n min?: number\r\n max?: number\r\n sum?: number\r\n avg?: number\r\n\r\n tooltipValue?: number\r\n}\r\n\r\ninterface Props {\r\n tableItems: D2ChartTableItem[]\r\n tooltipTime?: UnixTime\r\n\r\n style?: React.CSSProperties\r\n\r\n onSwitchLegend(name: string): void\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nexport default class D2ChartTablePanel extends React.Component<Props, State> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private gridApi?: GridApi;\r\n\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n }\r\n\r\n updateGrid() {\r\n this.gridApi?.applyTransaction({update: this.props.tableItems});\r\n\r\n const columnDefs = this.gridApi?.getColumnDefs() as ColDef[] | undefined;\r\n if (columnDefs) {\r\n const columnDefinition = columnDefs.find(value => value.colId === \"tooltipValue\");\r\n if (columnDefinition) {\r\n if (this.props.tooltipTime) {\r\n columnDefinition.headerName = DateTimeUtils.fromUnixTime(this.props.tooltipTime / 1000).format(LocaleHolder.getDateTimeFormat(true, true, false));\r\n } else {\r\n columnDefinition.headerName = i18n(\"Value\");\r\n }\r\n }\r\n this.gridApi?.updateGridOptions({columnDefs: columnDefs});\r\n }\r\n }\r\n\r\n getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n {\r\n headerName: \"\",\r\n colId: \"visible\",\r\n field: \"visible\",\r\n minWidth: 48,\r\n maxWidth: 48,\r\n initialWidth: 48,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as D2ChartTableItem;\r\n\r\n return (\r\n <div\r\n style={{\r\n width: 22,\r\n height: 22,\r\n marginTop: 2,\r\n backgroundColor: data.color,\r\n flex: \"none\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={() => this.props.onSwitchLegend(data.id)}\r\n >\r\n {data.visible &&\r\n <svg viewBox=\"0 0 22 22\" style={{width: 20, height: 20, fill: \"white\"}}>\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"/>\r\n </svg>\r\n }\r\n </div>\r\n );\r\n },\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n headerName: i18n(\"Title\"),\r\n colId: \"title\",\r\n field: \"displayName\",\r\n initialWidth: 240,\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Value\"),\r\n colId: \"tooltipValue\",\r\n field: \"tooltipValue\",\r\n initialWidth: 154,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Min\"),\r\n colId: \"min\",\r\n field: \"min\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Max\"),\r\n colId: \"max\",\r\n field: \"max\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Sum\"),\r\n colId: \"sum\",\r\n field: \"sum\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n headerName: i18n(\"Avg\"),\r\n colId: \"avg\",\r\n field: \"avg\",\r\n initialWidth: 120,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n ]\r\n }\r\n\r\n return this.initialColumnDefs;\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={this.props.style}>\r\n <DataGrid\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n paging={{pageSize: -1}}\r\n columnDefs={this.getInitialColumnDefs()}\r\n onLoadData={callback => {\r\n callback(this.props.tableItems.length);\r\n }}\r\n toolbar={{\r\n renderToolbar: () => <></>,\r\n hideRecordCount: true\r\n }}\r\n rowData={this.props.tableItems}\r\n panelStyle={{padding: 0}}\r\n tablePanelStyle={{marginTop: 8}}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n rowSelection={{\r\n mode: \"singleRow\",\r\n checkboxes: false,\r\n isRowSelectable: () => false,\r\n }}\r\n getRowStyle={(params: any) => {\r\n const data = params.node.data as D2ChartTableItem;\r\n if (!data.visible) {\r\n return {background: \"#ddd\"}\r\n }\r\n return;\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "d2aura",
|
|
3
|
-
"version": "23.0.
|
|
3
|
+
"version": "23.0.76",
|
|
4
4
|
"description": "D2 AURA - Advanced User Interface Resource Architecture",
|
|
5
5
|
"author": "Ipesoft s.r.o.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"typescript": "5.5.2"
|
|
32
32
|
},
|
|
33
33
|
"resolutions": {
|
|
34
|
-
"through2": ""
|
|
34
|
+
"through2": "",
|
|
35
|
+
"dayjs": "1.11.13"
|
|
35
36
|
},
|
|
36
37
|
"dependencies": {
|
|
37
38
|
"@ant-design/icons": "5.5.1",
|
|
@@ -42,8 +43,8 @@
|
|
|
42
43
|
"@types/urijs": "1.19.16",
|
|
43
44
|
"antd": "5.21.2",
|
|
44
45
|
"d2core": "23.0.15",
|
|
45
|
-
"d2coreui": "23.0.
|
|
46
|
-
"d2jsapi": "
|
|
46
|
+
"d2coreui": "23.0.30",
|
|
47
|
+
"d2jsapi": "21.0.31",
|
|
47
48
|
"echarts": "5.5.1",
|
|
48
49
|
"echarts-for-react": "3.0.2",
|
|
49
50
|
"file-saver": "2.0.5",
|