d2aura 23.0.80 → 23.0.82
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/conditionList/advancedFilterConditionListPanel.js +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map +1 -1
- package/coreui/components/select/abstractMultiSelect.js +10 -3
- package/coreui/components/select/abstractMultiSelect.js.map +1 -1
- package/package.json +1 -1
|
@@ -181,7 +181,7 @@ export default class AdvancedFilterConditionListPanel extends React.Component {
|
|
|
181
181
|
}, search: {
|
|
182
182
|
hidden: true,
|
|
183
183
|
searchButtonHidden: true,
|
|
184
|
-
}, controlPanel: {
|
|
184
|
+
}, rowSelection: "single", controlPanel: {
|
|
185
185
|
renderer: this.renderControlPanel
|
|
186
186
|
}, onSelectionChanged: this.onSelectionChanged, onRowDoubleClicked: (event) => {
|
|
187
187
|
this.setState({ selectedCondition: event.data });
|
package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advancedFilterConditionListPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {AdvancedFilterCondition, getAdvancedFilterOperatorString} from \"../../../../api/advancedFilterApi\";\r\nimport {GridApi, GridReadyEvent, RowDragEndEvent, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Button} from \"antd\";\r\nimport {CloseCircleOutlined, ExclamationCircleOutlined, PlusCircleOutlined} from \"@ant-design/icons\";\r\nimport AdvancedFilterConditionDetailPanel from \"./advancedFilterConditionDetailPanel\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"../advancedFilterUtils\";\r\nimport ColorTag from \"../../colorTag/colorTag\";\r\n\r\ninterface AdvancedFilterConditionListPanelProps {\r\n filterConditions: AdvancedFilterCondition[]\r\n columnDefinitions: AdvancedFilterColumnDefinition[]\r\n isParenthesisError: boolean\r\n\r\n onChange(filterConditions: AdvancedFilterCondition[]): void\r\n}\r\n\r\ninterface AdvancedFilterConditionListPanelState {\r\n selectedCondition: AdvancedFilterCondition | null\r\n loading: boolean\r\n}\r\n\r\nexport default class AdvancedFilterConditionListPanel extends React.Component<AdvancedFilterConditionListPanelProps, AdvancedFilterConditionListPanelState> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private dataGrid: ExtendedDataGrid<AdvancedFilterCondition> | null = null;\r\n private gridApi?: GridApi;\r\n\r\n constructor(props: Readonly<AdvancedFilterConditionListPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n selectedCondition: null,\r\n loading: false,\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onAddNewCondition = this.onAddNewCondition.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.filterConditions.length === 0) {\r\n this.onAddNewCondition();\r\n }\r\n }\r\n\r\n refreshData() {\r\n this.gridApi?.applyTransaction({update: this.props.filterConditions});\r\n\r\n const selectedRows = this.gridApi?.getSelectedRows();\r\n this.setState({selectedCondition: selectedRows?.[0] ?? null});\r\n }\r\n\r\n getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n {\r\n headerName: i18n(\"Negation\"),\r\n colId: \"not_flag\",\r\n field: \"not_flag\",\r\n initialWidth: 80,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.not_flag === 1 ? \"NOT\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n rowDrag: true,\r\n }, {\r\n headerName: \"(\",\r\n colId: \"left_par\",\r\n field: \"left_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.left_par === 1 ? \"(\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Column\"),\r\n colId: \"column_name\",\r\n field: \"column_name\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Operator\"),\r\n colId: \"operator\",\r\n field: \"operator\",\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return getAdvancedFilterOperatorString(data.operator);\r\n },\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Value\"),\r\n colId: \"value\",\r\n field: \"value\",\r\n initialWidth: 160,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n const columnDefinition = this.props.columnDefinitions.find(value => value.columnName === data.column_name);\r\n if (columnDefinition) {\r\n return AdvancedFilterUtils.humanizeCondition(columnDefinition, false, data);\r\n }\r\n return \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: \")\",\r\n colId: \"right_par\",\r\n field: \"right_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.right_par === 1 ? \")\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Logical Operator\"),\r\n colId: \"logical_operator\",\r\n field: \"logical_operator\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\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 onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedCondition: selectedRows[0]});\r\n } else {\r\n this.setState({selectedCondition: null});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n private onAddNewCondition() {\r\n const filterConditions = this.props.filterConditions;\r\n const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;\r\n const newCondition = AdvancedFilterUtils.newCondition(this.props.columnDefinitions[0]);\r\n newCondition.id = newId;\r\n\r\n filterConditions.push(newCondition);\r\n this.setState({selectedCondition: newCondition});\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // add new expression to grid and preselect new row\r\n this.gridApi?.applyTransaction({add: [newCondition]});\r\n const rowNode = this.gridApi?.getRowNode(newCondition.id.toString());\r\n rowNode?.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n\r\n renderToolbarButtons() {\r\n const operationsDisabled = this.state.loading;\r\n\r\n return <>\r\n <Button\r\n title={i18n(\"New Condition\")}\r\n disabled={operationsDisabled}\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/>\r\n </Button>\r\n <Button\r\n title={i18n(\"Remove Expression\")}\r\n disabled={operationsDisabled || this.state.selectedCondition === null}\r\n onClick={() => {\r\n const conditionToRemove = this.state.selectedCondition;\r\n if (conditionToRemove) {\r\n let filterConditions = this.props.filterConditions;\r\n filterConditions = filterConditions.filter(value => value.id !== conditionToRemove.id);\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // remove expression from grid\r\n this.gridApi?.applyTransaction({remove: [conditionToRemove]});\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n </>\r\n }\r\n\r\n renderDetailPanel() {\r\n if (this.state.selectedCondition) {\r\n return (\r\n <AdvancedFilterConditionDetailPanel\r\n editedCondition={this.state.selectedCondition}\r\n columnDefinitions={this.props.columnDefinitions}\r\n onClose={() => this.dataGrid?.showDetailPanel(false)}\r\n onNextRecord={() => this.dataGrid?.selectNextPreviousRecord(false)}\r\n onPrevRecord={() => this.dataGrid?.selectNextPreviousRecord(true)}\r\n onChange={editedCondition => {\r\n this.setState({selectedCondition: editedCondition});\r\n this.gridApi?.applyTransaction({update: [editedCondition]});\r\n this.props.onChange(this.props.filterConditions);\r\n }}\r\n />\r\n );\r\n }\r\n return <div/>;\r\n }\r\n\r\n renderControlPanel() {\r\n if (this.props.isParenthesisError) {\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"center\", padding: \"0px 12px 8px\"}}>\r\n <ColorTag icon={<ExclamationCircleOutlined/>} color=\"error\">\r\n {i18n(\"Parentheses match error\")}\r\n </ColorTag>\r\n </div>\r\n );\r\n }\r\n\r\n return <div/>;\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{position: \"relative\", width: \"100%\", height: \"100%\"}}>\r\n <ExtendedDataGrid<AdvancedFilterCondition>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n columnDefs={this.getInitialColumnDefs()}\r\n onLoadData={callback => callback(this.props.filterConditions.length)}\r\n rowData={this.props.filterConditions}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n onSelectionChanged={this.onSelectionChanged}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({selectedCondition: event.data});\r\n this.dataGrid?.showDetailPanel(true);\r\n }}\r\n detailPanel={{\r\n defaultWidth: 400,\r\n renderer: this.renderDetailPanel\r\n }}\r\n suppressMovableColumns\r\n rowDragManaged\r\n animateRows\r\n onRowDragEnd={(event: RowDragEndEvent) => {\r\n const draggedCondition = event.node.data as AdvancedFilterCondition;\r\n const filterConditions = this.props.filterConditions;\r\n\r\n const toIndex = event.overIndex !== -1 ? event.overIndex : filterConditions.length;\r\n const fromIndex = filterConditions.findIndex(value => value.id === draggedCondition.id);\r\n\r\n filterConditions.splice(toIndex, 0, filterConditions.splice(fromIndex, 1)[0]);\r\n\r\n this.props.onChange(filterConditions);\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <div>\r\n <Button\r\n type=\"primary\"\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/> {i18n(\"Add Condition\")}\r\n </Button>\r\n </div>\r\n }\r\n getRowStyle={params => {\r\n const data = params.data as AdvancedFilterCondition;\r\n if (data._errors && data._errors.length > 0) {\r\n return {color: \"#d4380d\", background: \"#fff2e8\"}\r\n }\r\n return;\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"advancedFilterConditionListPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {AdvancedFilterCondition, getAdvancedFilterOperatorString} from \"../../../../api/advancedFilterApi\";\r\nimport {GridApi, GridReadyEvent, RowDragEndEvent, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Button} from \"antd\";\r\nimport {CloseCircleOutlined, ExclamationCircleOutlined, PlusCircleOutlined} from \"@ant-design/icons\";\r\nimport AdvancedFilterConditionDetailPanel from \"./advancedFilterConditionDetailPanel\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"../advancedFilterUtils\";\r\nimport ColorTag from \"../../colorTag/colorTag\";\r\n\r\ninterface AdvancedFilterConditionListPanelProps {\r\n filterConditions: AdvancedFilterCondition[]\r\n columnDefinitions: AdvancedFilterColumnDefinition[]\r\n isParenthesisError: boolean\r\n\r\n onChange(filterConditions: AdvancedFilterCondition[]): void\r\n}\r\n\r\ninterface AdvancedFilterConditionListPanelState {\r\n selectedCondition: AdvancedFilterCondition | null\r\n loading: boolean\r\n}\r\n\r\nexport default class AdvancedFilterConditionListPanel extends React.Component<AdvancedFilterConditionListPanelProps, AdvancedFilterConditionListPanelState> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private dataGrid: ExtendedDataGrid<AdvancedFilterCondition> | null = null;\r\n private gridApi?: GridApi;\r\n\r\n constructor(props: Readonly<AdvancedFilterConditionListPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n selectedCondition: null,\r\n loading: false,\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onAddNewCondition = this.onAddNewCondition.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.filterConditions.length === 0) {\r\n this.onAddNewCondition();\r\n }\r\n }\r\n\r\n refreshData() {\r\n this.gridApi?.applyTransaction({update: this.props.filterConditions});\r\n\r\n const selectedRows = this.gridApi?.getSelectedRows();\r\n this.setState({selectedCondition: selectedRows?.[0] ?? null});\r\n }\r\n\r\n getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n {\r\n headerName: i18n(\"Negation\"),\r\n colId: \"not_flag\",\r\n field: \"not_flag\",\r\n initialWidth: 80,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.not_flag === 1 ? \"NOT\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n rowDrag: true,\r\n }, {\r\n headerName: \"(\",\r\n colId: \"left_par\",\r\n field: \"left_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.left_par === 1 ? \"(\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Column\"),\r\n colId: \"column_name\",\r\n field: \"column_name\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Operator\"),\r\n colId: \"operator\",\r\n field: \"operator\",\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return getAdvancedFilterOperatorString(data.operator);\r\n },\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Value\"),\r\n colId: \"value\",\r\n field: \"value\",\r\n initialWidth: 160,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n const columnDefinition = this.props.columnDefinitions.find(value => value.columnName === data.column_name);\r\n if (columnDefinition) {\r\n return AdvancedFilterUtils.humanizeCondition(columnDefinition, false, data);\r\n }\r\n return \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: \")\",\r\n colId: \"right_par\",\r\n field: \"right_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.right_par === 1 ? \")\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Logical Operator\"),\r\n colId: \"logical_operator\",\r\n field: \"logical_operator\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\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 onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedCondition: selectedRows[0]});\r\n } else {\r\n this.setState({selectedCondition: null});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n private onAddNewCondition() {\r\n const filterConditions = this.props.filterConditions;\r\n const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;\r\n const newCondition = AdvancedFilterUtils.newCondition(this.props.columnDefinitions[0]);\r\n newCondition.id = newId;\r\n\r\n filterConditions.push(newCondition);\r\n this.setState({selectedCondition: newCondition});\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // add new expression to grid and preselect new row\r\n this.gridApi?.applyTransaction({add: [newCondition]});\r\n const rowNode = this.gridApi?.getRowNode(newCondition.id.toString());\r\n rowNode?.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n\r\n renderToolbarButtons() {\r\n const operationsDisabled = this.state.loading;\r\n\r\n return <>\r\n <Button\r\n title={i18n(\"New Condition\")}\r\n disabled={operationsDisabled}\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/>\r\n </Button>\r\n <Button\r\n title={i18n(\"Remove Expression\")}\r\n disabled={operationsDisabled || this.state.selectedCondition === null}\r\n onClick={() => {\r\n const conditionToRemove = this.state.selectedCondition;\r\n if (conditionToRemove) {\r\n let filterConditions = this.props.filterConditions;\r\n filterConditions = filterConditions.filter(value => value.id !== conditionToRemove.id);\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // remove expression from grid\r\n this.gridApi?.applyTransaction({remove: [conditionToRemove]});\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n </>\r\n }\r\n\r\n renderDetailPanel() {\r\n if (this.state.selectedCondition) {\r\n return (\r\n <AdvancedFilterConditionDetailPanel\r\n editedCondition={this.state.selectedCondition}\r\n columnDefinitions={this.props.columnDefinitions}\r\n onClose={() => this.dataGrid?.showDetailPanel(false)}\r\n onNextRecord={() => this.dataGrid?.selectNextPreviousRecord(false)}\r\n onPrevRecord={() => this.dataGrid?.selectNextPreviousRecord(true)}\r\n onChange={editedCondition => {\r\n this.setState({selectedCondition: editedCondition});\r\n this.gridApi?.applyTransaction({update: [editedCondition]});\r\n this.props.onChange(this.props.filterConditions);\r\n }}\r\n />\r\n );\r\n }\r\n return <div/>;\r\n }\r\n\r\n renderControlPanel() {\r\n if (this.props.isParenthesisError) {\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"center\", padding: \"0px 12px 8px\"}}>\r\n <ColorTag icon={<ExclamationCircleOutlined/>} color=\"error\">\r\n {i18n(\"Parentheses match error\")}\r\n </ColorTag>\r\n </div>\r\n );\r\n }\r\n\r\n return <div/>;\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{position: \"relative\", width: \"100%\", height: \"100%\"}}>\r\n <ExtendedDataGrid<AdvancedFilterCondition>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n columnDefs={this.getInitialColumnDefs()}\r\n onLoadData={callback => callback(this.props.filterConditions.length)}\r\n rowData={this.props.filterConditions}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n rowSelection=\"single\"\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n onSelectionChanged={this.onSelectionChanged}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({selectedCondition: event.data});\r\n this.dataGrid?.showDetailPanel(true);\r\n }}\r\n detailPanel={{\r\n defaultWidth: 400,\r\n renderer: this.renderDetailPanel\r\n }}\r\n suppressMovableColumns\r\n rowDragManaged\r\n animateRows\r\n onRowDragEnd={(event: RowDragEndEvent) => {\r\n const draggedCondition = event.node.data as AdvancedFilterCondition;\r\n const filterConditions = this.props.filterConditions;\r\n\r\n const toIndex = event.overIndex !== -1 ? event.overIndex : filterConditions.length;\r\n const fromIndex = filterConditions.findIndex(value => value.id === draggedCondition.id);\r\n\r\n filterConditions.splice(toIndex, 0, filterConditions.splice(fromIndex, 1)[0]);\r\n\r\n this.props.onChange(filterConditions);\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <div>\r\n <Button\r\n type=\"primary\"\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/> {i18n(\"Add Condition\")}\r\n </Button>\r\n </div>\r\n }\r\n getRowStyle={params => {\r\n const data = params.data as AdvancedFilterCondition;\r\n if (data._errors && data._errors.length > 0) {\r\n return {color: \"#d4380d\", background: \"#fff2e8\"}\r\n }\r\n return;\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
@@ -92,8 +92,16 @@ export default class AbstractMultiSelect extends React.Component {
|
|
|
92
92
|
value.code,
|
|
93
93
|
(value.code && value.name) ? ` (${value.name})` : value.name)
|
|
94
94
|
};
|
|
95
|
-
}), loading: this.state.loading, onChange: (
|
|
96
|
-
|
|
95
|
+
}), loading: this.state.loading, onChange: (newValue) => {
|
|
96
|
+
const selectedIds = new Set(newValue.map(opt => opt.value));
|
|
97
|
+
const allKnownEntities = [...this.state.options, ...this.props.value];
|
|
98
|
+
const seen = new Set();
|
|
99
|
+
onChange(allKnownEntities.filter(e => {
|
|
100
|
+
if (seen.has(e.id) || !selectedIds.has(e.id))
|
|
101
|
+
return false;
|
|
102
|
+
seen.add(e.id);
|
|
103
|
+
return true;
|
|
104
|
+
}));
|
|
97
105
|
}, onFocus: () => {
|
|
98
106
|
this.onLoadData();
|
|
99
107
|
}, onClick: event => {
|
|
@@ -105,7 +113,6 @@ export default class AbstractMultiSelect extends React.Component {
|
|
|
105
113
|
value: value.id,
|
|
106
114
|
code: value.code,
|
|
107
115
|
name: value.name,
|
|
108
|
-
data: value,
|
|
109
116
|
};
|
|
110
117
|
}), optionRender: option => {
|
|
111
118
|
const data = option.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractMultiSelect.js","sourceRoot":"","sources":["../../../../../coreui/components/select/abstractMultiSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {Select, SelectProps, Spin} from \"antd\";\r\nimport {\r\n AdvancedFilterApi,\r\n AdvancedFilterCondition,\r\n AdvancedFilterLogicalOperator,\r\n AdvancedFilterOperator\r\n} from \"../../../api/advancedFilterApi\";\r\nimport AdvancedFilterUtils from \"../advancedFilter/advancedFilterUtils\";\r\nimport {\r\n GeneralEntityColumn,\r\n getStringAdvancedFilterColumn\r\n} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {CloseCircleOutlined, LoadingOutlined, SelectOutlined} from \"@ant-design/icons\";\r\nimport {ERROR_COLOR} from \"../../../api/constants/constants\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport AbstractEntityApi from \"../../../api/abstractEntityApi\";\r\nimport {SelectedEntity} from \"./abstractSelect\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\n\r\nexport interface AbstractMultiSelectProps<T extends Entity> extends SelectProps {\r\n api: AbstractEntityApi<T>\r\n advancedFilterApi: AdvancedFilterApi\r\n\r\n value: SelectedEntity[]\r\n filterConditions?: AdvancedFilterCondition[]\r\n\r\n onChange(value: T[]): void\r\n}\r\n\r\ninterface AbstractMultiSelectSelectState<T extends Entity> {\r\n selectDialogOpen: boolean\r\n loading: boolean\r\n options: T[]\r\n}\r\n\r\nexport default abstract class AbstractMultiSelect<T extends Entity,\r\n P extends AbstractMultiSelectProps<T>,\r\n S extends AbstractMultiSelectSelectState<T> = AbstractMultiSelectSelectState<T>> extends React.Component<P, S> {\r\n\r\n constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadData = debounce(this.onLoadData.bind(this), 250);\r\n }\r\n\r\n protected initialState: AbstractMultiSelectSelectState<T> = {\r\n selectDialogOpen: false,\r\n loading: false,\r\n options: [],\r\n }\r\n\r\n private getFilterConditionForCode(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n });\r\n }\r\n\r\n private getFilterConditionForName(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n })\r\n }\r\n\r\n private getFilterConditions(searchString?: string): AdvancedFilterCondition[] {\r\n const filterConditionForCode = this.getFilterConditionForCode(searchString);\r\n filterConditionForCode.left_par = 1;\r\n filterConditionForCode.logical_operator = AdvancedFilterLogicalOperator.OR;\r\n\r\n const filterConditionForName = this.getFilterConditionForName(searchString);\r\n filterConditionForName.right_par = 1;\r\n\r\n return [\r\n filterConditionForCode,\r\n filterConditionForName,\r\n ]\r\n }\r\n\r\n async onLoadData(searchString?: string) {\r\n this.setState({loading: true});\r\n\r\n const filterConditions = this.getFilterConditions(searchString);\r\n if (this.props.filterConditions) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n filterConditions.push(...this.props.filterConditions);\r\n }\r\n\r\n const pageableList = await this.getData(filterConditions);\r\n\r\n this.setState({options: pageableList.data, loading: false});\r\n }\r\n\r\n protected async getData(filterConditions: AdvancedFilterCondition[]) {\r\n return await this.props.api.getAllData(0, 10, \"\", filterConditions, true);\r\n }\r\n\r\n private showCancelButton(): boolean {\r\n return this.props.value.length > 0;\r\n }\r\n\r\n protected getSuffixIcon(): React.ReactNode {\r\n if (this.state.loading) {\r\n return <LoadingOutlined/>;\r\n } else {\r\n return (\r\n <>\r\n {this.showCancelButton() &&\r\n <CloseCircleOutlined\r\n style={{color: ERROR_COLOR}}\r\n title={i18n(\"Cancel Selected Entity\")}\r\n onClick={() => {\r\n this.props.onChange([]);\r\n }}\r\n />\r\n }\r\n <SelectOutlined\r\n title={i18n(\"Open Select Dialog\")}\r\n onClick={() => {\r\n this.setState({selectDialogOpen: true})\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n }\r\n\r\n abstract renderSelectDialog(): React.ReactNode;\r\n\r\n render() {\r\n const {\r\n disabled,\r\n value,\r\n onChange,\r\n api,\r\n advancedFilterApi,\r\n filterConditions,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n <div\r\n onDoubleClick={() => {\r\n if (!disabled && !this.state.selectDialogOpen) {\r\n this.setState({selectDialogOpen: true});\r\n }\r\n }}\r\n >\r\n {this.renderSelectDialog()}\r\n <Select\r\n disabled={disabled}\r\n style={{width: \"100%\"}}\r\n labelInValue\r\n filterOption={false}\r\n mode=\"multiple\"\r\n maxTagCount=\"responsive\"\r\n notFoundContent={\r\n this.state.loading\r\n ?\r\n <div style={{textAlign: \"center\"}}>\r\n <Spin indicator={<LoadingOutlined spin/>} spinning/>\r\n </div>\r\n :\r\n null\r\n }\r\n value={\r\n value.map(value => {\r\n return {\r\n value: value.id,\r\n label:\r\n <span>\r\n {value.code}\r\n {(value.code && value.name) ? ` (${value.name})` : value.name}\r\n </span>\r\n }\r\n })\r\n }\r\n loading={this.state.loading}\r\n onChange={(_, option) => {\r\n onChange((option as any[]).map(value => value.data));\r\n }}\r\n onFocus={() => {\r\n this.onLoadData();\r\n }}\r\n onClick={event => {\r\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLSpanElement) {\r\n this.onLoadData();\r\n }\r\n }}\r\n onSearch={this.onLoadData}\r\n options={\r\n this.state.options.map(value => {\r\n\r\n return {\r\n value: value.id,\r\n code: value.code,\r\n name: value.name,\r\n data: value,\r\n }\r\n })\r\n }\r\n optionRender={option => {\r\n const data = option.data;\r\n const displayName = data.name ?? \"\";\r\n\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"space-between\"}}>\r\n {data.code && <ColorTag>{data.code}</ColorTag>}\r\n <div title={displayName}>{displayName}</div>\r\n </div>\r\n )\r\n }}\r\n suffixIcon={\r\n <span style={{display: \"flex\", gap: 4, fontSize: 14, color: \"rgba(0, 0, 0, 0.55)\"}}>\r\n {this.getSuffixIcon()}\r\n </span>\r\n }\r\n {...rest}\r\n />\r\n </div>\r\n );\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"abstractMultiSelect.js","sourceRoot":"","sources":["../../../../../coreui/components/select/abstractMultiSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {Select, SelectProps, Spin} from \"antd\";\r\nimport {\r\n AdvancedFilterApi,\r\n AdvancedFilterCondition,\r\n AdvancedFilterLogicalOperator,\r\n AdvancedFilterOperator\r\n} from \"../../../api/advancedFilterApi\";\r\nimport AdvancedFilterUtils from \"../advancedFilter/advancedFilterUtils\";\r\nimport {\r\n GeneralEntityColumn,\r\n getStringAdvancedFilterColumn\r\n} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {CloseCircleOutlined, LoadingOutlined, SelectOutlined} from \"@ant-design/icons\";\r\nimport {ERROR_COLOR} from \"../../../api/constants/constants\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport AbstractEntityApi from \"../../../api/abstractEntityApi\";\r\nimport {SelectedEntity} from \"./abstractSelect\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\n\r\nexport interface AbstractMultiSelectProps<T extends Entity> extends SelectProps {\r\n api: AbstractEntityApi<T>\r\n advancedFilterApi: AdvancedFilterApi\r\n\r\n value: SelectedEntity[]\r\n filterConditions?: AdvancedFilterCondition[]\r\n\r\n onChange(value: T[]): void\r\n}\r\n\r\ninterface AbstractMultiSelectSelectState<T extends Entity> {\r\n selectDialogOpen: boolean\r\n loading: boolean\r\n options: T[]\r\n}\r\n\r\nexport default abstract class AbstractMultiSelect<T extends Entity,\r\n P extends AbstractMultiSelectProps<T>,\r\n S extends AbstractMultiSelectSelectState<T> = AbstractMultiSelectSelectState<T>> extends React.Component<P, S> {\r\n\r\n constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadData = debounce(this.onLoadData.bind(this), 250);\r\n }\r\n\r\n protected initialState: AbstractMultiSelectSelectState<T> = {\r\n selectDialogOpen: false,\r\n loading: false,\r\n options: [],\r\n }\r\n\r\n private getFilterConditionForCode(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n });\r\n }\r\n\r\n private getFilterConditionForName(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n })\r\n }\r\n\r\n private getFilterConditions(searchString?: string): AdvancedFilterCondition[] {\r\n const filterConditionForCode = this.getFilterConditionForCode(searchString);\r\n filterConditionForCode.left_par = 1;\r\n filterConditionForCode.logical_operator = AdvancedFilterLogicalOperator.OR;\r\n\r\n const filterConditionForName = this.getFilterConditionForName(searchString);\r\n filterConditionForName.right_par = 1;\r\n\r\n return [\r\n filterConditionForCode,\r\n filterConditionForName,\r\n ]\r\n }\r\n\r\n async onLoadData(searchString?: string) {\r\n this.setState({loading: true});\r\n\r\n const filterConditions = this.getFilterConditions(searchString);\r\n if (this.props.filterConditions) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n filterConditions.push(...this.props.filterConditions);\r\n }\r\n\r\n const pageableList = await this.getData(filterConditions);\r\n\r\n this.setState({options: pageableList.data, loading: false});\r\n }\r\n\r\n protected async getData(filterConditions: AdvancedFilterCondition[]) {\r\n return await this.props.api.getAllData(0, 10, \"\", filterConditions, true);\r\n }\r\n\r\n private showCancelButton(): boolean {\r\n return this.props.value.length > 0;\r\n }\r\n\r\n protected getSuffixIcon(): React.ReactNode {\r\n if (this.state.loading) {\r\n return <LoadingOutlined/>;\r\n } else {\r\n return (\r\n <>\r\n {this.showCancelButton() &&\r\n <CloseCircleOutlined\r\n style={{color: ERROR_COLOR}}\r\n title={i18n(\"Cancel Selected Entity\")}\r\n onClick={() => {\r\n this.props.onChange([]);\r\n }}\r\n />\r\n }\r\n <SelectOutlined\r\n title={i18n(\"Open Select Dialog\")}\r\n onClick={() => {\r\n this.setState({selectDialogOpen: true})\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n }\r\n\r\n abstract renderSelectDialog(): React.ReactNode;\r\n\r\n render() {\r\n const {\r\n disabled,\r\n value,\r\n onChange,\r\n api,\r\n advancedFilterApi,\r\n filterConditions,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n <div\r\n onDoubleClick={() => {\r\n if (!disabled && !this.state.selectDialogOpen) {\r\n this.setState({selectDialogOpen: true});\r\n }\r\n }}\r\n >\r\n {this.renderSelectDialog()}\r\n <Select\r\n disabled={disabled}\r\n style={{width: \"100%\"}}\r\n labelInValue\r\n filterOption={false}\r\n mode=\"multiple\"\r\n maxTagCount=\"responsive\"\r\n notFoundContent={\r\n this.state.loading\r\n ?\r\n <div style={{textAlign: \"center\"}}>\r\n <Spin indicator={<LoadingOutlined spin/>} spinning/>\r\n </div>\r\n :\r\n null\r\n }\r\n value={\r\n value.map(value => {\r\n return {\r\n value: value.id,\r\n label:\r\n <span>\r\n {value.code}\r\n {(value.code && value.name) ? ` (${value.name})` : value.name}\r\n </span>\r\n }\r\n })\r\n }\r\n loading={this.state.loading}\r\n onChange={(newValue) => {\r\n const selectedIds = new Set((newValue as any[]).map(opt => opt.value));\r\n const allKnownEntities = [...this.state.options, ...this.props.value as unknown as T[]];\r\n const seen = new Set();\r\n onChange(\r\n allKnownEntities.filter(e => {\r\n if (seen.has(e.id) || !selectedIds.has(e.id)) return false;\r\n seen.add(e.id);\r\n return true;\r\n })\r\n );\r\n }}\r\n onFocus={() => {\r\n this.onLoadData();\r\n }}\r\n onClick={event => {\r\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLSpanElement) {\r\n this.onLoadData();\r\n }\r\n }}\r\n onSearch={this.onLoadData}\r\n options={\r\n this.state.options.map(value => {\r\n return {\r\n value: value.id,\r\n code: value.code,\r\n name: value.name,\r\n }\r\n })\r\n }\r\n optionRender={option => {\r\n const data = option.data;\r\n const displayName = data.name ?? \"\";\r\n\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"space-between\"}}>\r\n {data.code && <ColorTag>{data.code}</ColorTag>}\r\n <div title={displayName}>{displayName}</div>\r\n </div>\r\n )\r\n }}\r\n suffixIcon={\r\n <span style={{display: \"flex\", gap: 4, fontSize: 14, color: \"rgba(0, 0, 0, 0.55)\"}}>\r\n {this.getSuffixIcon()}\r\n </span>\r\n }\r\n {...rest}\r\n />\r\n </div>\r\n );\r\n }\r\n}"]}
|