d2aura 23.0.77 → 23.0.78

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.
@@ -37,6 +37,7 @@ export default abstract class AdvancedFilteredGrid<T extends Entity, P extends A
37
37
  protected getAdditionalFilterConditions(): AdvancedFilterCondition[];
38
38
  protected getAllFilterConditions(): AdvancedFilterCondition[];
39
39
  protected onRecordsLoaded(): Promise<void>;
40
+ protected getLoadedData(): T[];
40
41
  private saveConfiguration;
41
42
  abstract getAdvancedFilterConfig(): AdvancedFilterConfig | undefined;
42
43
  protected getAdvancedFilterColumnDefinitions(): AdvancedFilterColumnDefinition[];
@@ -80,6 +80,11 @@ export default class AdvancedFilteredGrid extends React.Component {
80
80
  }
81
81
  async onRecordsLoaded() {
82
82
  }
83
+ getLoadedData() {
84
+ const data = [];
85
+ this.gridApi?.forEachNode(value => data.push(value.data));
86
+ return data;
87
+ }
83
88
  saveConfiguration() {
84
89
  const advancedFilterConfig = this.getAdvancedFilterConfig();
85
90
  if (advancedFilterConfig) {
@@ -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.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}"]}
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 protected getLoadedData(): T[] {\r\n const data: T[] = [];\r\n this.gridApi?.forEachNode(value => data.push(value.data));\r\n\r\n return data;\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,9 +1,10 @@
1
1
  import React from "react";
2
2
  import Entity from "../../../api/types/entity";
3
3
  import { DataGridColDef } from "d2coreui/components/grid/dataGrid";
4
- import { SelectionChangedEvent } from "ag-grid-community";
4
+ import { RowDoubleClickedEvent, SelectionChangedEvent } from "ag-grid-community";
5
5
  import AbstractEntityApi from "../../../api/abstractEntityApi";
6
6
  import AdvancedFilteredGrid, { AdvancedFilteredGridProps, AdvancedFilteredGridState } from "../advancedFilter/advancedFilteredGrid";
7
+ import type { ButtonProps } from "antd/es/button/button";
7
8
  export interface AbstractSelectModalDialogProps<T extends Entity> extends AdvancedFilteredGridProps<T> {
8
9
  api: AbstractEntityApi<T>;
9
10
  multiSelect?: boolean;
@@ -20,6 +21,7 @@ export default abstract class AbstractSelectModalDialog<T extends Entity, P exte
20
21
  private static MAX_ROWS_TO_SHOW;
21
22
  protected initialState: AbstractSelectModalDialogState<T>;
22
23
  protected constructor(props: Readonly<P>);
24
+ protected adaptLoadedData(data: T[]): void;
23
25
  abstract getIdColumnName(): string;
24
26
  abstract getTitle(): string;
25
27
  protected getCodeColumnDefinition(): DataGridColDef;
@@ -30,5 +32,8 @@ export default abstract class AbstractSelectModalDialog<T extends Entity, P exte
30
32
  protected renderToolbarButtons(): React.ReactElement | undefined;
31
33
  onSelectionChanged(event: SelectionChangedEvent): void;
32
34
  protected getInitialWidth(): number;
35
+ protected onOk(): void;
36
+ protected get okButtonProps(): ButtonProps | undefined;
37
+ protected onRowDoubleClicked(event: RowDoubleClickedEvent): void;
33
38
  render(): React.JSX.Element;
34
39
  }
@@ -28,6 +28,7 @@ class AbstractSelectModalDialog extends AdvancedFilteredGrid {
28
28
  if (totalNumberOfRows > AbstractSelectModalDialog.MAX_ROWS_TO_SHOW) {
29
29
  totalNumberOfRows = AbstractSelectModalDialog.MAX_ROWS_TO_SHOW;
30
30
  }
31
+ this.adaptLoadedData(pageableList.data);
31
32
  params.successCallback(pageableList.data, totalNumberOfRows);
32
33
  }
33
34
  else {
@@ -39,6 +40,11 @@ class AbstractSelectModalDialog extends AdvancedFilteredGrid {
39
40
  filterConditions: [],
40
41
  };
41
42
  this.onSelectionChanged = this.onSelectionChanged.bind(this);
43
+ this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);
44
+ this.onOk = this.onOk.bind(this);
45
+ }
46
+ adaptLoadedData(data) {
47
+ data;
42
48
  }
43
49
  getCodeColumnDefinition() {
44
50
  return this.getCodeColumn({ flex: 0.5 });
@@ -77,6 +83,18 @@ class AbstractSelectModalDialog extends AdvancedFilteredGrid {
77
83
  getInitialWidth() {
78
84
  return 800;
79
85
  }
86
+ onOk() {
87
+ if (this.state.selectedData.length > 0) {
88
+ this.props.onItemsSelected(this.state.selectedData);
89
+ }
90
+ }
91
+ get okButtonProps() {
92
+ return { disabled: this.state.selectedData.length === 0 };
93
+ }
94
+ onRowDoubleClicked(event) {
95
+ const item = event.data;
96
+ this.props.onItemsSelected([item]);
97
+ }
80
98
  render() {
81
99
  const { visible, initialWidth, initialHeight } = this.props;
82
100
  return (React.createElement(ModalDialog, { mode: "OK_CANCEL", title: React.createElement(React.Fragment, null,
@@ -84,23 +102,16 @@ class AbstractSelectModalDialog extends AdvancedFilteredGrid {
84
102
  !!this.state.totalNumberOfRows && this.state.totalNumberOfRows > AbstractSelectModalDialog.MAX_ROWS_TO_SHOW &&
85
103
  React.createElement("div", { style: { display: "inline" } },
86
104
  React.createElement(ColorTag, { style: { whiteSpace: "break-spaces", marginLeft: 8 }, color: "warning", icon: React.createElement(WarningOutlined, null) },
87
- React.createElement("span", null, i18n("Displaying first %{count} records", { count: AbstractSelectModalDialog.MAX_ROWS_TO_SHOW + "" }))))), onOk: () => {
88
- if (this.state.selectedData.length > 0) {
89
- this.props.onItemsSelected(this.state.selectedData);
90
- }
91
- }, onCancel: this.props.onCancel, initialWidth: initialWidth ?? this.getInitialWidth(), initialHeight: initialHeight ?? window.innerHeight * 0.9, maskClosable: false, open: visible, okButtonProps: { disabled: this.state.selectedData.length === 0 } },
105
+ React.createElement("span", null, i18n("Displaying first %{count} records", { count: AbstractSelectModalDialog.MAX_ROWS_TO_SHOW + "" }))))), onOk: this.onOk, onCancel: this.props.onCancel, initialWidth: initialWidth ?? this.getInitialWidth(), initialHeight: initialHeight ?? window.innerHeight * 0.9, maskClosable: false, open: visible, okButtonProps: this.okButtonProps },
92
106
  React.createElement(ExtendedDataGrid, { ref: (dataGrid) => {
93
107
  this.dataGrid = dataGrid;
94
108
  }, defaultGridConfiguration: { pageSize: -1, columnSearchVisible: true }, onGridReady: (params) => {
95
109
  this.gridApi = params.api;
96
- }, columnDefs: this.state.columnDefs, onLoadData: this.onLoadData, rowModelType: "infinite", datasource: this.state.datasource, rowSelection: this.props.multiSelect ? "multiple" : "single", onSelectionChanged: this.onSelectionChanged, onRowDoubleClicked: event => {
97
- const item = event.data;
98
- this.props.onItemsSelected([item]);
99
- }, toolbar: {
110
+ }, columnDefs: this.state.columnDefs, onLoadData: this.onLoadData, rowModelType: "infinite", datasource: this.state.datasource, rowSelection: this.props.multiSelect ? "multiple" : "single", onSelectionChanged: this.onSelectionChanged, onRowDoubleClicked: this.onRowDoubleClicked, toolbar: {
100
111
  toolbarButtons: this.renderToolbarButtons(),
101
112
  }, search: {
102
113
  hidden: true,
103
- }, onSortChanged: _event => {
114
+ }, onSortChanged: () => {
104
115
  this.dataGrid?.loadData();
105
116
  }, panelStyle: { padding: 0 }, noRecordsOverlayRenderer: () => React.createElement("div", null) })));
106
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"abstractSelectModalDialog.js","sourceRoot":"","sources":["../../../../../coreui/components/select/abstractSelectModalDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {GridReadyEvent, IGetRowsParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AbstractEntityApi, {PageableList} from \"../../../api/abstractEntityApi\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"../advancedFilter/advancedFilteredGrid\";\r\nimport AdvancedFilterButton from \"../advancedFilter/advancedFilterButton\";\r\nimport {WarningOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\n\r\nexport interface AbstractSelectModalDialogProps<T extends Entity> extends AdvancedFilteredGridProps<T> {\r\n api: AbstractEntityApi<T>\r\n\r\n multiSelect?: boolean\r\n visible: boolean\r\n initialWidth?: number\r\n initialHeight?: number\r\n\r\n onItemsSelected(selectedItems: T[]): void\r\n\r\n onCancel(): void\r\n}\r\n\r\nexport interface AbstractSelectModalDialogState<T extends Entity> extends AdvancedFilteredGridState<T> {\r\n totalNumberOfRows?: number\r\n}\r\n\r\nexport default abstract class AbstractSelectModalDialog<T extends Entity,\r\n P extends AbstractSelectModalDialogProps<T>,\r\n S extends AbstractSelectModalDialogState<T> = AbstractSelectModalDialogState<T>>\r\n extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n private static MAX_ROWS_TO_SHOW = 1_000;\r\n\r\n protected initialState: AbstractSelectModalDialogState<T> = {\r\n loading: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n this.setState({totalNumberOfRows: pageableList.totalNumberOfRows});\r\n let totalNumberOfRows = pageableList.totalNumberOfRows;\r\n if (totalNumberOfRows > AbstractSelectModalDialog.MAX_ROWS_TO_SHOW) {\r\n totalNumberOfRows = AbstractSelectModalDialog.MAX_ROWS_TO_SHOW;\r\n }\r\n params.successCallback(pageableList.data, totalNumberOfRows);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n\r\n filterConditions: [],\r\n }\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n }\r\n\r\n abstract getIdColumnName(): string;\r\n\r\n abstract getTitle(): string;\r\n\r\n protected getCodeColumnDefinition(): DataGridColDef {\r\n return this.getCodeColumn({flex: 0.5});\r\n }\r\n\r\n protected getNameColumnDefinition(): DataGridColDef {\r\n return this.getNameColumn({flex: 0.5});\r\n }\r\n\r\n protected getExtraColumnDefinitions(): DataGridColDef[] {\r\n return [];\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return true;\r\n }\r\n\r\n protected getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n this.getIdColumn(this.getIdColumnName()),\r\n this.getCodeColumnDefinition(),\r\n this.getNameColumnDefinition(),\r\n ...this.getExtraColumnDefinitions()\r\n ]\r\n }\r\n return this.initialColumnDefs;\r\n }\r\n\r\n protected renderToolbarButtons(): React.ReactElement | undefined {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterConfig.listName}\r\n columnDefinitions={this.getAdvancedFilterColumnDefinitions()}\r\n filterConditions={this.state.filterConditions}\r\n onApplyFilter={this.onApplyFilter}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n this.setState({selectedData: selectedRows});\r\n }\r\n\r\n protected getInitialWidth(): number {\r\n return 800;\r\n }\r\n\r\n render() {\r\n const {visible, initialWidth, initialHeight} = this.props;\r\n\r\n return (\r\n <ModalDialog\r\n mode={ModalDialogMode.OK_CANCEL}\r\n title={\r\n <>\r\n {this.getTitle()}\r\n {!!this.state.totalNumberOfRows && this.state.totalNumberOfRows > AbstractSelectModalDialog.MAX_ROWS_TO_SHOW &&\r\n <div style={{display: \"inline\"}}>\r\n <ColorTag\r\n style={{whiteSpace: \"break-spaces\", marginLeft: 8}}\r\n color=\"warning\"\r\n icon={<WarningOutlined/>}\r\n >\r\n <span>{i18n(\"Displaying first %{count} records\", {count: AbstractSelectModalDialog.MAX_ROWS_TO_SHOW+\"\"})}</span>\r\n </ColorTag>\r\n </div>\r\n }\r\n </>\r\n }\r\n onOk={() => {\r\n if (this.state.selectedData.length > 0) {\r\n this.props.onItemsSelected(this.state.selectedData);\r\n }\r\n }}\r\n onCancel={this.props.onCancel}\r\n initialWidth={initialWidth ?? this.getInitialWidth()}\r\n initialHeight={initialHeight ?? window.innerHeight * 0.9}\r\n maskClosable={false}\r\n open={visible}\r\n okButtonProps={{disabled: this.state.selectedData.length === 0}}\r\n >\r\n <ExtendedDataGrid<T>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1, columnSearchVisible: true}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n columnDefs={this.state.columnDefs}\r\n onLoadData={this.onLoadData}\r\n rowModelType=\"infinite\"\r\n datasource={this.state.datasource}\r\n rowSelection={this.props.multiSelect ? \"multiple\" : \"single\"}\r\n onSelectionChanged={this.onSelectionChanged}\r\n onRowDoubleClicked={event => {\r\n const item = event.data as T;\r\n this.props.onItemsSelected([item]);\r\n }}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n }}\r\n search={{\r\n hidden: true,\r\n }}\r\n onSortChanged={_event => {\r\n this.dataGrid?.loadData();\r\n }}\r\n panelStyle={{padding: 0}}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n />\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"abstractSelectModalDialog.js","sourceRoot":"","sources":["../../../../../coreui/components/select/abstractSelectModalDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {GridReadyEvent, IGetRowsParams, RowDoubleClickedEvent, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AbstractEntityApi, {PageableList} from \"../../../api/abstractEntityApi\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"../advancedFilter/advancedFilteredGrid\";\r\nimport AdvancedFilterButton from \"../advancedFilter/advancedFilterButton\";\r\nimport {WarningOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\nimport type {ButtonProps} from \"antd/es/button/button\";\r\n\r\nexport interface AbstractSelectModalDialogProps<T extends Entity> extends AdvancedFilteredGridProps<T> {\r\n api: AbstractEntityApi<T>\r\n\r\n multiSelect?: boolean\r\n visible: boolean\r\n initialWidth?: number\r\n initialHeight?: number\r\n\r\n onItemsSelected(selectedItems: T[]): void\r\n\r\n onCancel(): void\r\n}\r\n\r\nexport interface AbstractSelectModalDialogState<T extends Entity> extends AdvancedFilteredGridState<T> {\r\n totalNumberOfRows?: number\r\n}\r\n\r\nexport default abstract class AbstractSelectModalDialog<T extends Entity,\r\n P extends AbstractSelectModalDialogProps<T>,\r\n S extends AbstractSelectModalDialogState<T> = AbstractSelectModalDialogState<T>>\r\n extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n private static MAX_ROWS_TO_SHOW = 1_000;\r\n\r\n protected initialState: AbstractSelectModalDialogState<T> = {\r\n loading: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n this.setState({totalNumberOfRows: pageableList.totalNumberOfRows});\r\n let totalNumberOfRows = pageableList.totalNumberOfRows;\r\n if (totalNumberOfRows > AbstractSelectModalDialog.MAX_ROWS_TO_SHOW) {\r\n totalNumberOfRows = AbstractSelectModalDialog.MAX_ROWS_TO_SHOW;\r\n }\r\n this.adaptLoadedData(pageableList.data);\r\n params.successCallback(pageableList.data, totalNumberOfRows);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n\r\n filterConditions: [],\r\n }\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n this.onOk = this.onOk.bind(this);\r\n }\r\n\r\n protected adaptLoadedData(data: T[]) {\r\n data;\r\n }\r\n\r\n abstract getIdColumnName(): string;\r\n\r\n abstract getTitle(): string;\r\n\r\n protected getCodeColumnDefinition(): DataGridColDef {\r\n return this.getCodeColumn({flex: 0.5});\r\n }\r\n\r\n protected getNameColumnDefinition(): DataGridColDef {\r\n return this.getNameColumn({flex: 0.5});\r\n }\r\n\r\n protected getExtraColumnDefinitions(): DataGridColDef[] {\r\n return [];\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return true;\r\n }\r\n\r\n protected getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n this.getIdColumn(this.getIdColumnName()),\r\n this.getCodeColumnDefinition(),\r\n this.getNameColumnDefinition(),\r\n ...this.getExtraColumnDefinitions()\r\n ]\r\n }\r\n return this.initialColumnDefs;\r\n }\r\n\r\n protected renderToolbarButtons(): React.ReactElement | undefined {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterConfig.listName}\r\n columnDefinitions={this.getAdvancedFilterColumnDefinitions()}\r\n filterConditions={this.state.filterConditions}\r\n onApplyFilter={this.onApplyFilter}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n this.setState({selectedData: selectedRows});\r\n }\r\n\r\n protected getInitialWidth(): number {\r\n return 800;\r\n }\r\n\r\n protected onOk() {\r\n if (this.state.selectedData.length > 0) {\r\n this.props.onItemsSelected(this.state.selectedData);\r\n }\r\n }\r\n\r\n protected get okButtonProps(): ButtonProps | undefined {\r\n return {disabled: this.state.selectedData.length === 0}\r\n }\r\n\r\n protected onRowDoubleClicked(event: RowDoubleClickedEvent): void {\r\n const item = event.data as T;\r\n this.props.onItemsSelected([item]);\r\n }\r\n\r\n render() {\r\n const {visible, initialWidth, initialHeight} = this.props;\r\n\r\n return (\r\n <ModalDialog\r\n mode={ModalDialogMode.OK_CANCEL}\r\n title={\r\n <>\r\n {this.getTitle()}\r\n {!!this.state.totalNumberOfRows && this.state.totalNumberOfRows > AbstractSelectModalDialog.MAX_ROWS_TO_SHOW &&\r\n <div style={{display: \"inline\"}}>\r\n <ColorTag\r\n style={{whiteSpace: \"break-spaces\", marginLeft: 8}}\r\n color=\"warning\"\r\n icon={<WarningOutlined/>}\r\n >\r\n <span>{i18n(\"Displaying first %{count} records\", {count: AbstractSelectModalDialog.MAX_ROWS_TO_SHOW+\"\"})}</span>\r\n </ColorTag>\r\n </div>\r\n }\r\n </>\r\n }\r\n onOk={this.onOk}\r\n onCancel={this.props.onCancel}\r\n initialWidth={initialWidth ?? this.getInitialWidth()}\r\n initialHeight={initialHeight ?? window.innerHeight * 0.9}\r\n maskClosable={false}\r\n open={visible}\r\n okButtonProps={this.okButtonProps}\r\n >\r\n <ExtendedDataGrid<T>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1, columnSearchVisible: true}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n columnDefs={this.state.columnDefs}\r\n onLoadData={this.onLoadData}\r\n rowModelType=\"infinite\"\r\n datasource={this.state.datasource}\r\n rowSelection={this.props.multiSelect ? \"multiple\" : \"single\"}\r\n onSelectionChanged={this.onSelectionChanged}\r\n onRowDoubleClicked={this.onRowDoubleClicked}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n }}\r\n search={{\r\n hidden: true,\r\n }}\r\n onSortChanged={() => {\r\n this.dataGrid?.loadData();\r\n }}\r\n panelStyle={{padding: 0}}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n />\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d2aura",
3
- "version": "23.0.77",
3
+ "version": "23.0.78",
4
4
  "description": "D2 AURA - Advanced User Interface Resource Architecture",
5
5
  "author": "Ipesoft s.r.o.",
6
6
  "license": "MIT",