d2aura 23.0.59 → 23.0.61
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.d.ts +1 -0
- package/coreui/components/advancedFilter/advancedFilteredGrid.js +4 -1
- package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -1
- package/coreui/components/select/abstractSelect.d.ts +1 -0
- package/coreui/components/select/abstractSelect.js +4 -1
- package/coreui/components/select/abstractSelect.js.map +1 -1
- package/package.json +2 -2
|
@@ -32,6 +32,7 @@ export default abstract class AdvancedFilteredGrid<T extends Entity, P extends A
|
|
|
32
32
|
componentDidMount(): void;
|
|
33
33
|
protected onLoadData(callback: OnLoadDataCallback): Promise<void>;
|
|
34
34
|
protected getRecords(from: number, to: number): Promise<PageableList<T>>;
|
|
35
|
+
protected getData(from: number, to: number, orderBy: string, filterConditions: AdvancedFilterCondition[]): Promise<PageableList<T>>;
|
|
35
36
|
abstract getOnlyValidRecords(): boolean;
|
|
36
37
|
protected getAdditionalFilterConditions(): AdvancedFilterCondition[];
|
|
37
38
|
protected getAllFilterConditions(): AdvancedFilterCondition[];
|
|
@@ -50,11 +50,14 @@ export default class AdvancedFilteredGrid extends React.Component {
|
|
|
50
50
|
if (sortModel) {
|
|
51
51
|
orderBy = `${sortModel.colId} ${sortModel.sort}`;
|
|
52
52
|
}
|
|
53
|
-
const pageableList = await this.
|
|
53
|
+
const pageableList = await this.getData(from, to, orderBy, AdvancedFilterUtils.serializeConditionValues(this.getAllFilterConditions()));
|
|
54
54
|
await this.onRecordsLoaded();
|
|
55
55
|
this.setState({ loading: false });
|
|
56
56
|
return pageableList;
|
|
57
57
|
}
|
|
58
|
+
async getData(from, to, orderBy, filterConditions) {
|
|
59
|
+
return await this.props.api.getAllData(from, to, orderBy, filterConditions, this.getOnlyValidRecords());
|
|
60
|
+
}
|
|
58
61
|
getAdditionalFilterConditions() {
|
|
59
62
|
return [];
|
|
60
63
|
}
|
|
@@ -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 = 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}"]}
|
|
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.getData(from, to, orderBy, AdvancedFilterUtils.serializeConditionValues(this.getAllFilterConditions()));\r\n\r\n await this.onRecordsLoaded();\r\n\r\n this.setState({loading: false});\r\n return pageableList;\r\n }\r\n\r\n protected async getData(from: number, to: number, orderBy: string, filterConditions: AdvancedFilterCondition[]) {\r\n return await this.props.api.getAllData(from, to, orderBy, filterConditions, this.getOnlyValidRecords());\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}"]}
|
|
@@ -39,6 +39,7 @@ export default abstract class AbstractSelect<T extends Entity, P extends Abstrac
|
|
|
39
39
|
protected getFilterConditionForName(searchString?: string): AdvancedFilterCondition;
|
|
40
40
|
protected getFilterConditions(searchString?: string): AdvancedFilterCondition[];
|
|
41
41
|
private onLoadData;
|
|
42
|
+
protected getData(filterConditions: AdvancedFilterCondition[]): Promise<import("../../../api/abstractEntityApi").PageableList<T>>;
|
|
42
43
|
protected createNewEntity(): Promise<T>;
|
|
43
44
|
protected getEntity(id: number): Promise<T>;
|
|
44
45
|
private renderNewEntityButton;
|
|
@@ -75,9 +75,12 @@ export default class AbstractSelect extends React.Component {
|
|
|
75
75
|
filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;
|
|
76
76
|
filterConditions.push(...this.props.filterConditions);
|
|
77
77
|
}
|
|
78
|
-
const pageableList = await this.
|
|
78
|
+
const pageableList = await this.getData(filterConditions);
|
|
79
79
|
this.setState({ suggestedItems: pageableList.data, loading: false });
|
|
80
80
|
}
|
|
81
|
+
async getData(filterConditions) {
|
|
82
|
+
return await this.props.api.getAllData(0, 10, "", filterConditions, true);
|
|
83
|
+
}
|
|
81
84
|
async createNewEntity() {
|
|
82
85
|
return await this.props.api.createNewEntity();
|
|
83
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractSelect.js","sourceRoot":"","sources":["../../../../../coreui/components/select/abstractSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,EACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAE5B,OAAO,EAGH,6BAA6B,EAC7B,sBAAsB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,mBAAmB,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAC,WAAW,EAAkB,MAAM,uCAAuC,CAAC;AACnF,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,mBAAmB,EAAE,6BAA6B,EAAC,MAAM,mDAAmD,CAAC;AACrH,OAAO,EAAC,WAAW,EAAC,MAAM,kCAAkC,CAAC;AAC7D,OAAO,kBAAkB,MAAM,0CAA0C,CAAC;AAC1E,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,OAAO,MAAM,mCAAmC,CAAC;AAExD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAE;IACrC,OAAO;QACH,wBAAwB,EAAE,GAAG,CAAA;;;;SAI5B;KACJ,CAAA;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC7B,+DAAG,CAAA;IAAE,qEAAM,CAAA;AACf,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AA+BD,MAAM,CAAC,OAAO,OAAgB,cAEiC,SAAQ,KAAK,CAAC,SAAe;IAExF,YAAsB,KAAkB;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAOP,iBAAY,GAA2B;YAC7C,mBAAmB,EAAE,KAAK;YAC1B,mBAAmB,EAAE,KAAK;YAC1B,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,EAAE;YAClB,mBAAmB,EAAE,KAAK;YAC1B,sBAAsB,EAAE,KAAK;SAChC,CAAA;QAXG,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAWD,kBAAkB,CAAC,SAAsB;QACrC,IAAI,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,EAAC,cAAc,EAAE,EAAE,EAAC,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAES,yBAAyB,CAAC,YAAqB;QACrD,OAAO,mBAAmB,CAAC,YAAY,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;YAC7F,QAAQ,EAAE,sBAAsB,CAAC,IAAI;YACrC,KAAK,EAAE,IAAI,YAAY,IAAI,EAAE,GAAG;SACnC,CAAC,CAAC;IACP,CAAC;IAES,yBAAyB,CAAC,YAAqB;QACrD,OAAO,mBAAmB,CAAC,YAAY,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;YAC7F,QAAQ,EAAE,sBAAsB,CAAC,IAAI;YACrC,KAAK,EAAE,IAAI,YAAY,IAAI,EAAE,GAAG;SACnC,CAAC,CAAA;IACN,CAAC;IAES,mBAAmB,CAAC,YAAqB;QAC/C,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;QAC5E,sBAAsB,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpC,sBAAsB,CAAC,gBAAgB,GAAG,6BAA6B,CAAC,EAAE,CAAC;QAE3E,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;QAC5E,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;QAErC,OAAO;YACH,sBAAsB;YACtB,sBAAsB;SACzB,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,YAAqB;QAC1C,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAE/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,6BAA6B,CAAC,GAAG,CAAC;YACnG,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAChD,CAAC,EACD,EAAE,EACF,EAAE,EACF,gBAAgB,EAChB,IAAI,CACP,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAC,cAAc,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IACvE,CAAC;IAES,KAAK,CAAC,eAAe;QAC3B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,EAAU;QAChC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEO,qBAAqB;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;YACjC,OAAO,oBAAC,eAAe,OAAE,CAAA;QAC7B,CAAC;aAAM,CAAC;YACJ,OAAO,CACH,oBAAC,kBAAkB,IACf,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAChC,KAAK,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,EAC1B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAC3C,OAAO,EAAE,KAAK,IAAI,EAAE;oBAChB,IAAI,CAAC,QAAQ,CAAC;wBACV,mBAAmB,EAAE,IAAI;wBACzB,qBAAqB,EAAE,qBAAqB,CAAC,GAAG;qBACnD,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC;wBACV,oBAAoB,EAAE,SAAS;wBAC/B,mBAAmB,EAAE,IAAI;wBACzB,mBAAmB,EAAE,KAAK;qBAC7B,CAAC,CAAC;gBACP,CAAC,GACH,CACL,CAAC;QACN,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,EAAU;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;YACpC,OAAO,oBAAC,eAAe,OAAE,CAAA;QAC7B,CAAC;aAAM,CAAC;YACJ,OAAO,CACH,oBAAC,eAAe,IACZ,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAC1B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACxC,OAAO,EAAE,KAAK,IAAI,EAAE;oBAChB,IAAI,CAAC,QAAQ,CAAC;wBACV,sBAAsB,EAAE,IAAI;wBAC5B,qBAAqB,EAAE,qBAAqB,CAAC,MAAM;qBACtD,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBACxC,IAAI,CAAC,QAAQ,CAAC;wBACV,oBAAoB,EAAE,MAAM;wBAC5B,mBAAmB,EAAE,IAAI;wBACzB,sBAAsB,EAAE,KAAK;qBAChC,CAAC,CAAC;gBACP,CAAC,GACH,CACL,CAAC;QACN,CAAC;IACL,CAAC;IAEO,gBAAgB;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IACrC,CAAC;IAEO,gBAAgB;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACnE,CAAC;IAEO,mBAAmB;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAES,aAAa;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAa,CAAC,EAAE,CAAC,CAAA;YACrE,CAAC;iBAAM,CAAC;gBACJ,OAAO,iCAAO,CAAC;YACnB,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,oBAAC,eAAe,OAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACJ,OAAO,CACH;gBACK,IAAI,CAAC,gBAAgB,EAAE;oBACpB,oBAAC,mBAAmB,IAChB,KAAK,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,EAC3B,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,EACrC,OAAO,EAAE,GAAG,EAAE;4BACV,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;wBAC3C,CAAC,GACH;gBAEL,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAa,CAAC,EAAE,CAAC;gBACrF,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC3D,oBAAC,cAAc,IACX,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,EACjC,OAAO,EAAE,GAAG,EAAE;wBACV,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,IAAI,EAAC,CAAC,CAAA;oBAC9C,CAAC,GACH,CACH,CACN,CAAC;QACN,CAAC;IACL,CAAC;IAIS,YAAY,CAAC,WAAc;QACjC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAC,CAAC,CAAC;IACjF,CAAC;IAED,iBAAiB;QACb,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,4BAA4B;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9B,CAAC;IAEO,mBAAmB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,KAAK,qBAAqB,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC/C,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,KAAK,qBAAqB,CAAC,MAAM,EAAE,CAAC;YAC3E,OAAO,oBAAC,kBAAkB,IAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,IAAI,EAAE,GAAG,CAAA;QAC1G,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,4BAA4B;QAChC,OAAO,CACH,oBAAC,WAAW,IACR,IAAI,gBACJ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,KAAK,EAAC,CAAC,EAC3D,MAAM,EAAE,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EAAC,EAC5B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,EACjC,YAAY,EAAE,GAAG,EACjB,aAAa,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,EACxC,WAAW,UAEV,IAAI,CAAC,iBAAiB,EAAE,CACf,CACjB,CAAC;IACN,CAAC;IAES,wBAAwB,CAAC,cAAiB;QAChD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM;QACF,MAAM,EACF,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,GAAG,IAAI,EACV,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAElD,IAAI,KAA+B,CAAC;QACpC,IAAI,YAAY,IAAI,YAAY,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YACvC,KAAK,GAAG;gBACJ,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;gBAC/B,KAAK,EAAE,YAAY,CAAC,EAAE;gBACtB,KAAK,EACD;oBACK,YAAY,CAAC,IAAI;oBACjB,CAAC,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI;oBACxF,YAAY,CAAC,KAAK,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,CAC5C;aACd,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,SAAS,CAAC;QACtB,CAAC;QAED,OAAO,CACH,6BACI,aAAa,EAAE,GAAG,EAAE;gBAChB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,IAAI,EAAC,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;YAEA,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,4BAA4B,EAAE;YACpC,oBAAC,OAAO,IAAC,SAAS,EAAE,SAAS,IAAG,CAAC,GAAG,EAAE,EAAE,CACpC,oBAAC,MAAM,IACH,SAAS,EAAE,CAAC,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,EACxF,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,EACtB,YAAY,QACZ,UAAU,QACV,YAAY,EAAE,KAAK,EACnB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,IAAI,EACrB,QAAQ,EAAE,CAAC,KAAU,EAAE,EAAE;oBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;wBACT,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;oBACV,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,CAAC,EACD,OAAO,EAAE,KAAK,CAAC,EAAE;oBACb,IAAI,KAAK,CAAC,MAAM,YAAY,gBAAgB,IAAI,KAAK,CAAC,MAAM,YAAY,eAAe,EAAE,CAAC;wBACtF,IAAI,CAAC,UAAU,EAAE,CAAC;oBACtB,CAAC;gBACL,CAAC,EACD,QAAQ,EAAE,YAAY,CAAC,EAAE;oBACrB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAClC,CAAC,EACD,QAAQ,EAAE,CAAC,aAA2B,EAAE,EAAE;oBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvF,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC,EACD,UAAU,EACN,8BAAM,KAAK,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAC,IAC7E,IAAI,CAAC,aAAa,EAAE,CAClB,KAEP,IAAI,IAEP,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;gBAC3C,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;gBAC3E,MAAM,WAAW,GAAG,GAAG,aAAa,CAAC,IAAI,IAAI,EAAE,IAAI,qBAAqB,IAAI,EAAE,EAAE,CAAA;gBAChF,OAAO,CACH,oBAAC,MAAM,CAAC,MAAM,IAAC,KAAK,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE;oBACzD,6BAAK,KAAK,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAC;wBACzD,aAAa,CAAC,IAAI,IAAI,oBAAC,QAAQ,QAAE,aAAa,CAAC,IAAI,CAAY;wBAChE,6BAAK,KAAK,EAAE,WAAW,IAAG,WAAW,CAAO,CAC1C,CACM,CACnB,CAAC;YACN,CAAC,CAAC,CACG,CACF,CACT,CACT,CAAA;IACL,CAAC;CACJ","sourcesContent":["import React from \"react\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport {\r\n CloseCircleOutlined,\r\n LoadingOutlined,\r\n MonitorOutlined,\r\n PlusCircleOutlined,\r\n SelectOutlined\r\n} from \"@ant-design/icons\";\r\nimport {LabeledValue, SelectProps} from \"antd/es/select\";\r\nimport {Select} from \"antd\";\r\nimport AbstractEntityApi from \"../../../api/abstractEntityApi\";\r\nimport {\r\n AdvancedFilterApi,\r\n AdvancedFilterCondition,\r\n AdvancedFilterLogicalOperator,\r\n AdvancedFilterOperator\r\n} from \"../../../api/advancedFilterApi\";\r\nimport debounce from \"lodash/debounce\";\r\nimport AdvancedFilterUtils from \"../advancedFilter/advancedFilterUtils\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {GeneralEntityColumn, getStringAdvancedFilterColumn} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport {ERROR_COLOR} from \"../../../api/constants/constants\";\r\nimport TitleWithCodePanel from \"../titleWithCodePanel/titleWithCodePanel\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\n\r\nconst useStyles = createStyles(({css}) => {\r\n return {\r\n abstractSelectWithDetail: css`\r\n .ant-select-selection-item {\r\n max-width: calc(100% - 52px);\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport enum DetailModalDialogMode {\r\n NEW, DETAIL\r\n}\r\n\r\nexport interface SelectedEntity {\r\n id: number\r\n name: string | null\r\n code: string | null\r\n extra?: string\r\n}\r\n\r\nexport interface AbstractSelectProps<T extends Entity> extends SelectProps {\r\n api: AbstractEntityApi<T>\r\n advancedFilterApi: AdvancedFilterApi\r\n disabled?: boolean\r\n\r\n selectedItem?: SelectedEntity\r\n filterConditions?: AdvancedFilterCondition[]\r\n\r\n onItemSelected?(selectedItem?: T): void\r\n}\r\n\r\nexport interface AbstractSelectState<T extends Entity> {\r\n selectDialogVisible: boolean\r\n detailDialogVisible: boolean\r\n detailModalDialogMode?: DetailModalDialogMode\r\n entityToCreateOrEdit?: T\r\n loading: boolean\r\n suggestedItems: T[]\r\n waitingForNewEntity: boolean\r\n waitingForEntityDetail: boolean\r\n}\r\n\r\nexport default abstract class AbstractSelect<T extends Entity,\r\n P extends AbstractSelectProps<T>,\r\n S extends AbstractSelectState<T> = AbstractSelectState<T>> extends React.Component<P, S> {\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadData = debounce(this.onLoadData.bind(this), 500);\r\n this.onSaveEntity = this.onSaveEntity.bind(this);\r\n }\r\n\r\n protected initialState: AbstractSelectState<T> = {\r\n selectDialogVisible: false,\r\n detailDialogVisible: false,\r\n loading: false,\r\n suggestedItems: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityDetail: false,\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<P>) {\r\n if (prevProps.selectedItem?.id !== this.props.selectedItem?.id) {\r\n this.setState({suggestedItems: []});\r\n }\r\n }\r\n\r\n protected 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 protected 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 protected 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 private 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.props.api.getAllData(\r\n 0,\r\n 10,\r\n \"\",\r\n filterConditions,\r\n true\r\n );\r\n\r\n this.setState({suggestedItems: pageableList.data, loading: false});\r\n }\r\n\r\n protected async createNewEntity(): Promise<T> {\r\n return await this.props.api.createNewEntity();\r\n }\r\n\r\n protected async getEntity(id: number): Promise<T> {\r\n return await this.props.api.getEntity(id);\r\n }\r\n\r\n private renderNewEntityButton() {\r\n if (this.state.waitingForNewEntity) {\r\n return <LoadingOutlined/>\r\n } else {\r\n return (\r\n <PlusCircleOutlined\r\n title={i18n(\"Create New Entity\")}\r\n style={{cursor: \"pointer\"}}\r\n disabled={this.state.waitingForEntityDetail}\r\n onClick={async () => {\r\n this.setState({\r\n waitingForNewEntity: true,\r\n detailModalDialogMode: DetailModalDialogMode.NEW\r\n });\r\n const newEntity = await this.createNewEntity();\r\n this.setState({\r\n entityToCreateOrEdit: newEntity,\r\n detailDialogVisible: true,\r\n waitingForNewEntity: false\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n\r\n private renderDetailEntityButton(id: number) {\r\n if (this.state.waitingForEntityDetail) {\r\n return <LoadingOutlined/>\r\n } else {\r\n return (\r\n <MonitorOutlined\r\n title={i18n(\"Show Detail\")}\r\n disabled={this.state.waitingForNewEntity}\r\n onClick={async () => {\r\n this.setState({\r\n waitingForEntityDetail: true,\r\n detailModalDialogMode: DetailModalDialogMode.DETAIL\r\n });\r\n const entity = await this.getEntity(id);\r\n this.setState({\r\n entityToCreateOrEdit: entity,\r\n detailDialogVisible: true,\r\n waitingForEntityDetail: false\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n\r\n private showCancelButton(): boolean {\r\n return !!this.props.selectedItem;\r\n }\r\n\r\n private showDetailButton(): boolean {\r\n return !!this.props.selectedItem && !!this.renderDetailPanel();\r\n }\r\n\r\n private showNewEntityButton(): boolean {\r\n return !!this.renderDetailPanel();\r\n }\r\n\r\n protected getSuffixIcon(): React.ReactNode {\r\n if (this.props.disabled) {\r\n if (this.showDetailButton()) {\r\n return this.renderDetailEntityButton(this.props.selectedItem!.id)\r\n } else {\r\n return <span/>;\r\n }\r\n } else 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.onItemSelected?.(undefined);\r\n }}\r\n />\r\n }\r\n {this.showDetailButton() && this.renderDetailEntityButton(this.props.selectedItem!.id)}\r\n {this.showNewEntityButton() && this.renderNewEntityButton()}\r\n <SelectOutlined\r\n title={i18n(\"Open Select Dialog\")}\r\n onClick={() => {\r\n this.setState({selectDialogVisible: 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 protected onSaveEntity(savedEntity: T) {\r\n this.props.onItemSelected?.(savedEntity);\r\n this.setState({detailDialogVisible: false, entityToCreateOrEdit: undefined});\r\n }\r\n\r\n renderDetailPanel(): React.ReactNode {\r\n return undefined;\r\n }\r\n\r\n protected getNewEntityModalDialogTitle(): string {\r\n return i18n(\"New Entity\");\r\n }\r\n\r\n private getModalDialogTitle() {\r\n if (this.state.detailModalDialogMode === DetailModalDialogMode.NEW) {\r\n return this.getNewEntityModalDialogTitle();\r\n } else if (this.state.detailModalDialogMode === DetailModalDialogMode.DETAIL) {\r\n return <TitleWithCodePanel title={i18n(\"Detail\")} code={this.state.entityToCreateOrEdit?.code ?? \"\"}/>\r\n }\r\n return undefined;\r\n }\r\n\r\n private renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.detailDialogVisible}\r\n onCancel={() => this.setState({detailDialogVisible: false})}\r\n styles={{body: {padding: 0}}}\r\n title={this.getModalDialogTitle()}\r\n initialWidth={720}\r\n initialHeight={window.innerHeight * 0.95}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n protected getExtraValueForDropdown(_suggestedItem: T): string | undefined {\r\n return undefined;\r\n }\r\n\r\n render() {\r\n const {\r\n api,\r\n advancedFilterApi,\r\n disabled,\r\n selectedItem,\r\n filterConditions,\r\n onItemSelected,\r\n ...rest\r\n } = this.props;\r\n\r\n const hasDetailPanel = !!this.renderDetailPanel();\r\n\r\n let value: LabeledValue | undefined;\r\n if (selectedItem && selectedItem.id >= 0) {\r\n value = {\r\n key: selectedItem.id.toString(),\r\n value: selectedItem.id,\r\n label:\r\n <span>\r\n {selectedItem.code}\r\n {(selectedItem.code && selectedItem.name) ? ` (${selectedItem.name})` : selectedItem.name}\r\n {selectedItem.extra && ` ${selectedItem.extra}`}\r\n </span>\r\n };\r\n } else {\r\n value = undefined;\r\n }\r\n\r\n return (\r\n <div\r\n onDoubleClick={() => {\r\n if (!disabled && !this.state.detailDialogVisible) {\r\n this.setState({selectDialogVisible: true});\r\n }\r\n }}\r\n >\r\n {this.renderSelectDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <Select\r\n className={!disabled && hasDetailPanel ? css.styles.abstractSelectWithDetail : undefined}\r\n disabled={disabled}\r\n style={{width: \"100%\"}}\r\n labelInValue\r\n showSearch\r\n filterOption={false}\r\n value={value}\r\n notFoundContent={null}\r\n onChange={(value: any) => {\r\n if (!value) {\r\n onItemSelected?.(undefined);\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={searchString => {\r\n this.onLoadData(searchString);\r\n }}\r\n onSelect={(selectedValue: LabeledValue) => {\r\n const item = this.state.suggestedItems.find(value => value.id === selectedValue.value);\r\n onItemSelected?.(item);\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 {this.state.suggestedItems.map(suggestedItem => {\r\n const extraValueForDropdown = this.getExtraValueForDropdown(suggestedItem);\r\n const displayName = `${suggestedItem.name ?? \"\"} ${extraValueForDropdown ?? \"\"}`\r\n return (\r\n <Select.Option value={suggestedItem.id} key={suggestedItem.id}>\r\n <div style={{display: \"flex\", justifyContent: \"space-between\"}}>\r\n {suggestedItem.code && <ColorTag>{suggestedItem.code}</ColorTag>}\r\n <div title={displayName}>{displayName}</div>\r\n </div>\r\n </Select.Option>\r\n );\r\n })}\r\n </Select>\r\n }</WithCss>\r\n </div>\r\n )\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"abstractSelect.js","sourceRoot":"","sources":["../../../../../coreui/components/select/abstractSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport {\r\n CloseCircleOutlined,\r\n LoadingOutlined,\r\n MonitorOutlined,\r\n PlusCircleOutlined,\r\n SelectOutlined\r\n} from \"@ant-design/icons\";\r\nimport {LabeledValue, SelectProps} from \"antd/es/select\";\r\nimport {Select} from \"antd\";\r\nimport AbstractEntityApi from \"../../../api/abstractEntityApi\";\r\nimport {\r\n AdvancedFilterApi,\r\n AdvancedFilterCondition,\r\n AdvancedFilterLogicalOperator,\r\n AdvancedFilterOperator\r\n} from \"../../../api/advancedFilterApi\";\r\nimport debounce from \"lodash/debounce\";\r\nimport AdvancedFilterUtils from \"../advancedFilter/advancedFilterUtils\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {GeneralEntityColumn, getStringAdvancedFilterColumn} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport {ERROR_COLOR} from \"../../../api/constants/constants\";\r\nimport TitleWithCodePanel from \"../titleWithCodePanel/titleWithCodePanel\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\n\r\nconst useStyles = createStyles(({css}) => {\r\n return {\r\n abstractSelectWithDetail: css`\r\n .ant-select-selection-item {\r\n max-width: calc(100% - 52px);\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport enum DetailModalDialogMode {\r\n NEW, DETAIL\r\n}\r\n\r\nexport interface SelectedEntity {\r\n id: number\r\n name: string | null\r\n code: string | null\r\n extra?: string\r\n}\r\n\r\nexport interface AbstractSelectProps<T extends Entity> extends SelectProps {\r\n api: AbstractEntityApi<T>\r\n advancedFilterApi: AdvancedFilterApi\r\n disabled?: boolean\r\n\r\n selectedItem?: SelectedEntity\r\n filterConditions?: AdvancedFilterCondition[]\r\n\r\n onItemSelected?(selectedItem?: T): void\r\n}\r\n\r\nexport interface AbstractSelectState<T extends Entity> {\r\n selectDialogVisible: boolean\r\n detailDialogVisible: boolean\r\n detailModalDialogMode?: DetailModalDialogMode\r\n entityToCreateOrEdit?: T\r\n loading: boolean\r\n suggestedItems: T[]\r\n waitingForNewEntity: boolean\r\n waitingForEntityDetail: boolean\r\n}\r\n\r\nexport default abstract class AbstractSelect<T extends Entity,\r\n P extends AbstractSelectProps<T>,\r\n S extends AbstractSelectState<T> = AbstractSelectState<T>> extends React.Component<P, S> {\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadData = debounce(this.onLoadData.bind(this), 500);\r\n this.onSaveEntity = this.onSaveEntity.bind(this);\r\n }\r\n\r\n protected initialState: AbstractSelectState<T> = {\r\n selectDialogVisible: false,\r\n detailDialogVisible: false,\r\n loading: false,\r\n suggestedItems: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityDetail: false,\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<P>) {\r\n if (prevProps.selectedItem?.id !== this.props.selectedItem?.id) {\r\n this.setState({suggestedItems: []});\r\n }\r\n }\r\n\r\n protected 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 protected 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 protected 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 private 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({suggestedItems: 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 protected async createNewEntity(): Promise<T> {\r\n return await this.props.api.createNewEntity();\r\n }\r\n\r\n protected async getEntity(id: number): Promise<T> {\r\n return await this.props.api.getEntity(id);\r\n }\r\n\r\n private renderNewEntityButton() {\r\n if (this.state.waitingForNewEntity) {\r\n return <LoadingOutlined/>\r\n } else {\r\n return (\r\n <PlusCircleOutlined\r\n title={i18n(\"Create New Entity\")}\r\n style={{cursor: \"pointer\"}}\r\n disabled={this.state.waitingForEntityDetail}\r\n onClick={async () => {\r\n this.setState({\r\n waitingForNewEntity: true,\r\n detailModalDialogMode: DetailModalDialogMode.NEW\r\n });\r\n const newEntity = await this.createNewEntity();\r\n this.setState({\r\n entityToCreateOrEdit: newEntity,\r\n detailDialogVisible: true,\r\n waitingForNewEntity: false\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n\r\n private renderDetailEntityButton(id: number) {\r\n if (this.state.waitingForEntityDetail) {\r\n return <LoadingOutlined/>\r\n } else {\r\n return (\r\n <MonitorOutlined\r\n title={i18n(\"Show Detail\")}\r\n disabled={this.state.waitingForNewEntity}\r\n onClick={async () => {\r\n this.setState({\r\n waitingForEntityDetail: true,\r\n detailModalDialogMode: DetailModalDialogMode.DETAIL\r\n });\r\n const entity = await this.getEntity(id);\r\n this.setState({\r\n entityToCreateOrEdit: entity,\r\n detailDialogVisible: true,\r\n waitingForEntityDetail: false\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n\r\n private showCancelButton(): boolean {\r\n return !!this.props.selectedItem;\r\n }\r\n\r\n private showDetailButton(): boolean {\r\n return !!this.props.selectedItem && !!this.renderDetailPanel();\r\n }\r\n\r\n private showNewEntityButton(): boolean {\r\n return !!this.renderDetailPanel();\r\n }\r\n\r\n protected getSuffixIcon(): React.ReactNode {\r\n if (this.props.disabled) {\r\n if (this.showDetailButton()) {\r\n return this.renderDetailEntityButton(this.props.selectedItem!.id)\r\n } else {\r\n return <span/>;\r\n }\r\n } else 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.onItemSelected?.(undefined);\r\n }}\r\n />\r\n }\r\n {this.showDetailButton() && this.renderDetailEntityButton(this.props.selectedItem!.id)}\r\n {this.showNewEntityButton() && this.renderNewEntityButton()}\r\n <SelectOutlined\r\n title={i18n(\"Open Select Dialog\")}\r\n onClick={() => {\r\n this.setState({selectDialogVisible: 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 protected onSaveEntity(savedEntity: T) {\r\n this.props.onItemSelected?.(savedEntity);\r\n this.setState({detailDialogVisible: false, entityToCreateOrEdit: undefined});\r\n }\r\n\r\n renderDetailPanel(): React.ReactNode {\r\n return undefined;\r\n }\r\n\r\n protected getNewEntityModalDialogTitle(): string {\r\n return i18n(\"New Entity\");\r\n }\r\n\r\n private getModalDialogTitle() {\r\n if (this.state.detailModalDialogMode === DetailModalDialogMode.NEW) {\r\n return this.getNewEntityModalDialogTitle();\r\n } else if (this.state.detailModalDialogMode === DetailModalDialogMode.DETAIL) {\r\n return <TitleWithCodePanel title={i18n(\"Detail\")} code={this.state.entityToCreateOrEdit?.code ?? \"\"}/>\r\n }\r\n return undefined;\r\n }\r\n\r\n private renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.detailDialogVisible}\r\n onCancel={() => this.setState({detailDialogVisible: false})}\r\n styles={{body: {padding: 0}}}\r\n title={this.getModalDialogTitle()}\r\n initialWidth={720}\r\n initialHeight={window.innerHeight * 0.95}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n protected getExtraValueForDropdown(_suggestedItem: T): string | undefined {\r\n return undefined;\r\n }\r\n\r\n render() {\r\n const {\r\n api,\r\n advancedFilterApi,\r\n disabled,\r\n selectedItem,\r\n filterConditions,\r\n onItemSelected,\r\n ...rest\r\n } = this.props;\r\n\r\n const hasDetailPanel = !!this.renderDetailPanel();\r\n\r\n let value: LabeledValue | undefined;\r\n if (selectedItem && selectedItem.id >= 0) {\r\n value = {\r\n key: selectedItem.id.toString(),\r\n value: selectedItem.id,\r\n label:\r\n <span>\r\n {selectedItem.code}\r\n {(selectedItem.code && selectedItem.name) ? ` (${selectedItem.name})` : selectedItem.name}\r\n {selectedItem.extra && ` ${selectedItem.extra}`}\r\n </span>\r\n };\r\n } else {\r\n value = undefined;\r\n }\r\n\r\n return (\r\n <div\r\n onDoubleClick={() => {\r\n if (!disabled && !this.state.detailDialogVisible) {\r\n this.setState({selectDialogVisible: true});\r\n }\r\n }}\r\n >\r\n {this.renderSelectDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <Select\r\n className={!disabled && hasDetailPanel ? css.styles.abstractSelectWithDetail : undefined}\r\n disabled={disabled}\r\n style={{width: \"100%\"}}\r\n labelInValue\r\n showSearch\r\n filterOption={false}\r\n value={value}\r\n notFoundContent={null}\r\n onChange={(value: any) => {\r\n if (!value) {\r\n onItemSelected?.(undefined);\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={searchString => {\r\n this.onLoadData(searchString);\r\n }}\r\n onSelect={(selectedValue: LabeledValue) => {\r\n const item = this.state.suggestedItems.find(value => value.id === selectedValue.value);\r\n onItemSelected?.(item);\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 {this.state.suggestedItems.map(suggestedItem => {\r\n const extraValueForDropdown = this.getExtraValueForDropdown(suggestedItem);\r\n const displayName = `${suggestedItem.name ?? \"\"} ${extraValueForDropdown ?? \"\"}`\r\n return (\r\n <Select.Option value={suggestedItem.id} key={suggestedItem.id}>\r\n <div style={{display: \"flex\", justifyContent: \"space-between\"}}>\r\n {suggestedItem.code && <ColorTag>{suggestedItem.code}</ColorTag>}\r\n <div title={displayName}>{displayName}</div>\r\n </div>\r\n </Select.Option>\r\n );\r\n })}\r\n </Select>\r\n }</WithCss>\r\n </div>\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.61",
|
|
4
4
|
"description": "D2 AURA - Advanced User Interface Resource Architecture",
|
|
5
5
|
"author": "Ipesoft s.r.o.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@types/urijs": "1.19.16",
|
|
43
43
|
"antd": "5.21.2",
|
|
44
44
|
"d2core": "23.0.15",
|
|
45
|
-
"d2coreui": "23.0.
|
|
45
|
+
"d2coreui": "23.0.28",
|
|
46
46
|
"d2jsapi": "21.0.31",
|
|
47
47
|
"echarts": "5.5.1",
|
|
48
48
|
"echarts-for-react": "3.0.2",
|