d2aura 23.0.11 → 23.0.12

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.
Files changed (24) hide show
  1. package/core/util/locationUtils.js +1 -1
  2. package/core/util/locationUtils.js.map +1 -1
  3. package/coreui/abstractListPanel.d.ts +2 -0
  4. package/coreui/abstractListPanel.js +18 -9
  5. package/coreui/abstractListPanel.js.map +1 -1
  6. package/coreui/components/advancedFilter/advancedFilterUtils.d.ts +1 -1
  7. package/coreui/components/advancedFilter/advancedFilterUtils.js +2 -2
  8. package/coreui/components/advancedFilter/advancedFilterUtils.js.map +1 -1
  9. package/coreui/components/advancedFilter/advancedFilteredGrid.d.ts +6 -1
  10. package/coreui/components/advancedFilter/advancedFilteredGrid.js +21 -11
  11. package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -1
  12. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js +2 -1
  13. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map +1 -1
  14. package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.d.ts +2 -1
  15. package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.js +1 -1
  16. package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.js.map +1 -1
  17. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.d.ts +2 -2
  18. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.js +5 -2
  19. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.js.map +1 -1
  20. package/coreui/components/select/abstractSelect.js +2 -2
  21. package/coreui/components/select/abstractSelect.js.map +1 -1
  22. package/coreui/components/select/abstractSelectModalDialog.js +3 -3
  23. package/coreui/components/select/abstractSelectModalDialog.js.map +1 -1
  24. package/package.json +2 -2
@@ -25,7 +25,7 @@ export default class LocationUtils {
25
25
  if (allowedColumnName) {
26
26
  const searchParameter = this.getSearchParameter(hash);
27
27
  if (searchParameter && searchParameter.columnName === allowedColumnName && isFinite(Number(searchParameter.value))) {
28
- return AdvancedFilterUtils.createNewCondition(-1, { columnName: searchParameter.columnName, valueType: AdvancedFilterValueType.NUMBER }, { operator: AdvancedFilterOperator.EQUALS, value: searchParameter.value });
28
+ return AdvancedFilterUtils.newCondition({ columnName: searchParameter.columnName, valueType: AdvancedFilterValueType.NUMBER }, { operator: AdvancedFilterOperator.EQUALS, value: searchParameter.value });
29
29
  }
30
30
  }
31
31
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"locationUtils.js","sourceRoot":"","sources":["../../../../core/util/locationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAC5F,OAAO,mBAAmB,MAAM,4DAA4D,CAAC;AAC7F,OAAO,EAAC,uBAAuB,EAAC,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,aAAa;IAE9B,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAClC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;YACnD,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,iCAAiC,CAAC,IAAY;QACjD,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,6BAA6B,CAAC,IAAY,EAAE,iBAA0B;QACzE,IAAI,iBAAiB,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,eAAe,IAAI,eAAe,CAAC,UAAU,KAAK,iBAAiB,IAAI,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjH,OAAO,mBAAmB,CAAC,kBAAkB,CACzC,CAAC,CAAC,EACF,EAAC,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,uBAAuB,CAAC,MAAM,EAAC,EACnF,EAAC,QAAQ,EAAE,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAC,CAC1E,CAAA;YACL,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CAEJ","sourcesContent":["import {AdvancedFilterCondition, AdvancedFilterOperator} from \"../../api/advancedFilterApi\";\r\nimport AdvancedFilterUtils from \"../../coreui/components/advancedFilter/advancedFilterUtils\";\r\nimport {AdvancedFilterValueType} from \"../../api/types/advancedFilter\";\r\n\r\nexport default class LocationUtils {\r\n\r\n static hasSearchParameter(hash: string) {\r\n return hash.includes(\"?\");\r\n }\r\n\r\n static getSearchParameter(hash: string): {columnName: string, value: string} | undefined {\r\n if (this.hasSearchParameter(hash)) {\r\n const searchParameter = hash.substring(hash.indexOf(\"?\") + 1);\r\n const split = searchParameter.split(\"=\");\r\n if (split.length === 2) {\r\n return {columnName: split[0], value: split[1]};\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n static getLocationWithoutSearchParameter(hash: string): string {\r\n if (this.hasSearchParameter(hash)) {\r\n return hash.substring(1, hash.indexOf(\"?\"));\r\n }\r\n return hash.substring(1);\r\n }\r\n\r\n static hashToAdvancedFilterCondition(hash: string, allowedColumnName?: string): AdvancedFilterCondition | undefined {\r\n if (allowedColumnName) {\r\n const searchParameter = this.getSearchParameter(hash);\r\n if (searchParameter && searchParameter.columnName === allowedColumnName && isFinite(Number(searchParameter.value))) {\r\n return AdvancedFilterUtils.createNewCondition(\r\n -1,\r\n {columnName: searchParameter.columnName, valueType: AdvancedFilterValueType.NUMBER},\r\n {operator: AdvancedFilterOperator.EQUALS, value: searchParameter.value},\r\n )\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"locationUtils.js","sourceRoot":"","sources":["../../../../core/util/locationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAC5F,OAAO,mBAAmB,MAAM,4DAA4D,CAAC;AAC7F,OAAO,EAAC,uBAAuB,EAAC,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,aAAa;IAE9B,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAClC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;YACnD,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,iCAAiC,CAAC,IAAY;QACjD,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,6BAA6B,CAAC,IAAY,EAAE,iBAA0B;QACzE,IAAI,iBAAiB,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,eAAe,IAAI,eAAe,CAAC,UAAU,KAAK,iBAAiB,IAAI,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjH,OAAO,mBAAmB,CAAC,YAAY,CACnC,EAAC,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,uBAAuB,CAAC,MAAM,EAAC,EACnF,EAAC,QAAQ,EAAE,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAC,CAC1E,CAAA;YACL,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CAEJ","sourcesContent":["import {AdvancedFilterCondition, AdvancedFilterOperator} from \"../../api/advancedFilterApi\";\r\nimport AdvancedFilterUtils from \"../../coreui/components/advancedFilter/advancedFilterUtils\";\r\nimport {AdvancedFilterValueType} from \"../../api/types/advancedFilter\";\r\n\r\nexport default class LocationUtils {\r\n\r\n static hasSearchParameter(hash: string) {\r\n return hash.includes(\"?\");\r\n }\r\n\r\n static getSearchParameter(hash: string): {columnName: string, value: string} | undefined {\r\n if (this.hasSearchParameter(hash)) {\r\n const searchParameter = hash.substring(hash.indexOf(\"?\") + 1);\r\n const split = searchParameter.split(\"=\");\r\n if (split.length === 2) {\r\n return {columnName: split[0], value: split[1]};\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n static getLocationWithoutSearchParameter(hash: string): string {\r\n if (this.hasSearchParameter(hash)) {\r\n return hash.substring(1, hash.indexOf(\"?\"));\r\n }\r\n return hash.substring(1);\r\n }\r\n\r\n static hashToAdvancedFilterCondition(hash: string, allowedColumnName?: string): AdvancedFilterCondition | undefined {\r\n if (allowedColumnName) {\r\n const searchParameter = this.getSearchParameter(hash);\r\n if (searchParameter && searchParameter.columnName === allowedColumnName && isFinite(Number(searchParameter.value))) {\r\n return AdvancedFilterUtils.newCondition(\r\n {columnName: searchParameter.columnName, valueType: AdvancedFilterValueType.NUMBER},\r\n {operator: AdvancedFilterOperator.EQUALS, value: searchParameter.value},\r\n )\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n}"]}
@@ -60,6 +60,7 @@ export declare abstract class AbstractListPanel<T extends AuditableEntity, P ext
60
60
  protected isValidityChangeDisabled(): boolean;
61
61
  private renderValidityButton;
62
62
  protected renderAdvancedFilterButton(): React.JSX.Element | undefined;
63
+ protected isMobile(): boolean;
63
64
  private renderCopyButton;
64
65
  private renderNewRecordButton;
65
66
  protected renderDetailPanelButton(): React.JSX.Element;
@@ -69,6 +70,7 @@ export declare abstract class AbstractListPanel<T extends AuditableEntity, P ext
69
70
  protected renderHistoryButton(): React.JSX.Element;
70
71
  protected renderShortcutPanel(): React.ReactNode | undefined;
71
72
  protected renderShortcutDrawer(): React.JSX.Element;
73
+ protected renderToolbar(originalSearchBar: React.ReactElement): React.ReactElement;
72
74
  renderToolbarButtons(): React.JSX.Element;
73
75
  protected renderControlPanel(): JSX.Element | null;
74
76
  protected getRowSelection(): "single" | "multiple";
@@ -23,6 +23,7 @@ const useStyles = createStyles(({ css }) => {
23
23
  ol {
24
24
  display: table;
25
25
  }
26
+
26
27
  ol li {
27
28
  display: table-cell;
28
29
  white-space: nowrap;
@@ -95,6 +96,7 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
95
96
  this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);
96
97
  this.renderControlPanel = this.renderControlPanel.bind(this);
97
98
  this.onLocationChanged = this.onLocationChanged.bind(this);
99
+ this.renderToolbar = this.renderToolbar.bind(this);
98
100
  window.addEventListener("hashchange", this.onLocationChanged, false);
99
101
  }
100
102
  getAllowedColumnNameForSearchParams() {
@@ -215,14 +217,17 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
215
217
  } }));
216
218
  }
217
219
  renderAdvancedFilterButton() {
218
- const advancedFilterListName = this.getAdvancedFilterListName();
219
- if (advancedFilterListName) {
220
- return (React.createElement(AdvancedFilterButton, { advancedFilterApi: this.props.advancedFilterApi, listName: advancedFilterListName, columnDefinitions: this.getAdvancedFilterColumnDefinitions(), filterConditions: this.state.filterConditions, onApplyFilter: this.onApplyFilter, onMenuItemClicked: () => {
220
+ const advancedFilterConfig = this.getAdvancedFilterConfig();
221
+ if (advancedFilterConfig) {
222
+ return (React.createElement(AdvancedFilterButton, { advancedFilterApi: this.props.advancedFilterApi, listName: advancedFilterConfig.listName, columnDefinitions: this.getAdvancedFilterColumnDefinitions(), filterConditions: this.state.filterConditions, onApplyFilter: this.onApplyFilter, onMenuItemClicked: () => {
221
223
  this.setState({ dropdownMenuVisible: false });
222
224
  } }));
223
225
  }
224
226
  return undefined;
225
227
  }
228
+ isMobile() {
229
+ return window.innerWidth <= MAX_WIDTH_MOBILE;
230
+ }
226
231
  renderCopyButton() {
227
232
  const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;
228
233
  return (React.createElement(Button, { style: { width: 44 }, title: i18n("Create Copy"), disabled: disabled, loading: this.state.waitingForEntityCopy, icon: React.createElement(CopyOutlined, null), onClick: async () => {
@@ -230,7 +235,7 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
230
235
  const newRecord = await this.props.api.createNewEntity(this.state.selectedData[0]);
231
236
  this.adaptNewRecord(newRecord);
232
237
  this.setState({ selectedData: [newRecord], dropdownMenuVisible: false, waitingForEntityCopy: false });
233
- if (window.innerWidth <= MAX_WIDTH_MOBILE) {
238
+ if (this.isMobile()) {
234
239
  this.setState({ modalDetailPanelVisible: true });
235
240
  }
236
241
  else {
@@ -248,7 +253,7 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
248
253
  const newRecord = await this.props.api.createNewEntity();
249
254
  this.adaptNewRecord(newRecord);
250
255
  this.setState({ selectedData: [newRecord], waitingForNewEntity: false });
251
- if (window.innerWidth <= MAX_WIDTH_MOBILE) {
256
+ if (this.isMobile()) {
252
257
  this.setState({ modalDetailPanelVisible: true });
253
258
  }
254
259
  else {
@@ -262,7 +267,7 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
262
267
  renderDetailPanelButton() {
263
268
  const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;
264
269
  return (React.createElement(Button, { style: { width: 44 }, type: this.state.detailPanelVisible ? "primary" : "default", title: i18n(this.state.detailPanelVisible ? "Hide Detail" : "Show Detail"), disabled: disabled, icon: React.createElement(ProfileOutlined, null), onClick: () => {
265
- if (window.innerWidth <= MAX_WIDTH_MOBILE) {
270
+ if (this.isMobile()) {
266
271
  this.setState({ modalDetailPanelVisible: true });
267
272
  }
268
273
  else {
@@ -305,8 +310,11 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
305
310
  this.setState({ quickActionsListVisible: false });
306
311
  }, open: this.state.quickActionsListVisible }, this.renderShortcutPanel()));
307
312
  }
313
+ renderToolbar(originalSearchBar) {
314
+ return originalSearchBar;
315
+ }
308
316
  renderToolbarButtons() {
309
- if (window.innerWidth <= MAX_WIDTH_MOBILE) {
317
+ if (this.isMobile()) {
310
318
  return (React.createElement(React.Fragment, null,
311
319
  React.createElement(Popover, { open: this.state.dropdownMenuVisible, onOpenChange: visible => {
312
320
  this.setState({ dropdownMenuVisible: visible });
@@ -411,9 +419,9 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
411
419
  this.setState({
412
420
  selectedData: [event.data],
413
421
  detailPanelVisible: true,
414
- modalDetailPanelVisible: window.innerWidth <= MAX_WIDTH_MOBILE,
422
+ modalDetailPanelVisible: this.isMobile(),
415
423
  });
416
- if (window.innerWidth > MAX_WIDTH_MOBILE) {
424
+ if (!this.isMobile()) {
417
425
  this.dataGrid?.showDetailPanel(true);
418
426
  }
419
427
  }, detailPanel: {
@@ -421,6 +429,7 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
421
429
  renderer: this.renderDetailPanel
422
430
  }, toolbar: {
423
431
  toolbarButtons: this.renderToolbarButtons(),
432
+ renderToolbar: this.renderToolbar,
424
433
  }, animateRows: true, rowSelection: this.getRowSelection(), controlPanel: {
425
434
  renderer: this.renderControlPanel
426
435
  }, noRecordsOverlayRenderer: () => React.createElement("div", null) }))));
@@ -1 +1 @@
1
- {"version":3,"file":"abstractListPanel.js","sourceRoot":"","sources":["../../../coreui/abstractListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ExtendedDataGrid, {GridConfiguration} from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridReadyEvent, IGetRowsParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {PageableList} from \"../api/abstractEntityApi\";\r\nimport {Breadcrumb, Button, Drawer, Popover} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {\r\n BulbOutlined,\r\n CheckCircleOutlined,\r\n CloseCircleOutlined,\r\n CopyOutlined,\r\n DeleteOutlined,\r\n HistoryOutlined,\r\n MoreOutlined,\r\n PlusCircleOutlined,\r\n ProfileOutlined\r\n} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AuditableEntity from \"../api/types/auditableEntity\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"./components/advancedFilter/advancedFilteredGrid\";\r\nimport {GeneralEntityColumn} from \"./components/advancedFilter/advancedFilterColumnDefinitions\";\r\nimport AdvancedFilterButton from \"./components/advancedFilter/advancedFilterButton\";\r\nimport {PanelConfiguration} from \"../core/types/panelConfiguration\";\r\nimport auditEntityRowStyleRules from \"./components/grid/auditEntityRowStyleRules\";\r\nimport LocationUtils from \"../core/util/locationUtils\";\r\nimport TitleWithCodePanel from \"./components/titleWithCodePanel/titleWithCodePanel\";\r\nimport EntityHistoryListPanel from \"./components/history/entityHistoryListPanel\";\r\nimport {AccessRight} from \"../api/types/accessRight\";\r\nimport {ERROR_COLOR, SUCCESS_COLOR} from \"../api/constants/constants\";\r\nimport AbstractEntityConfigPanel from \"./components/editor/abstractEntityConfigPanel\";\r\nimport {DbBoolean} from \"../api/types/dbBoolean\";\r\nimport {ItemType} from \"antd/es/breadcrumb/Breadcrumb\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport ColorTag from \"./components/colorTag/colorTag\";\r\n\r\nconst useStyles = createStyles(({css}) => {\r\n return {\r\n compactBreadcrumb: css`\r\n ol {\r\n display: table;\r\n }\r\n ol li {\r\n display: table-cell;\r\n white-space: nowrap;\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport const DETAIL_PANEL_DEFAULT_WIDTH = 560;\r\nconst MAX_WIDTH_MOBILE = 500;\r\n\r\nexport interface AbstractBreadcrumbItem {\r\n pageName: string\r\n code: string\r\n}\r\n\r\nexport interface AbstractListPanelConfiguration extends PanelConfiguration {\r\n gridConfiguration: GridConfiguration\r\n}\r\n\r\nexport interface AbstractListPanelProps<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridProps<T> {\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n getConfiguration(initialConfiguration: C): C\r\n\r\n onPanelConfigurationChanged(): void\r\n}\r\n\r\nexport interface AbstractListPanelState<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridState<T> {\r\n panelConfiguration: C\r\n detailPanelVisible: boolean\r\n modalDetailPanelVisible: boolean\r\n deletedRecordsVisible: boolean\r\n historyModalVisible: boolean\r\n dropdownMenuVisible: boolean\r\n waitingForNewEntity: boolean\r\n waitingForEntityCopy: boolean\r\n quickActionsListVisible: boolean\r\n accessRight: AccessRight\r\n}\r\n\r\nexport abstract class AbstractListPanel<\r\n T extends AuditableEntity,\r\n P extends AbstractListPanelProps<T, C>,\r\n S extends AbstractListPanelState<T, C>,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration,\r\n> extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n protected detailPanel: AbstractEntityConfigPanel<any, any> | null = null;\r\n private idToSelect: number | undefined = undefined;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n const advancedFilterCondition = LocationUtils.hashToAdvancedFilterCondition(window.location.hash, this.getAllowedColumnNameForSearchParams());\r\n if (advancedFilterCondition) {\r\n this.initialState.filterConditions = [advancedFilterCondition];\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onHistoryListPanelSelectionChanged = this.onHistoryListPanelSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onLocationChanged = this.onLocationChanged.bind(this);\r\n\r\n window.addEventListener(\"hashchange\", this.onLocationChanged, false);\r\n }\r\n\r\n protected initialState: Omit<AbstractListPanelState<T, C>, \"panelConfiguration\"> = {\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false,\r\n deletedRecordsVisible: false,\r\n historyModalVisible: false,\r\n dropdownMenuVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\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 params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n setTimeout(() => {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n\r\n if (this.idToSelect !== undefined && pageableList.data.some(value => value.id === this.idToSelect)) {\r\n const rowNode = this.gridApi?.getRowNode(this.idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n rowNode?.setSelected(true, true);\r\n this.idToSelect = undefined;\r\n }\r\n }, 200);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityCopy: false,\r\n quickActionsListVisible: false,\r\n accessRight: AccessRight.NONE,\r\n filterConditions: [],\r\n }\r\n\r\n protected getAllowedColumnNameForSearchParams(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n onLocationChanged() {\r\n const advancedFilterCondition = LocationUtils.hashToAdvancedFilterCondition(window.location.hash, this.getAllowedColumnNameForSearchParams());\r\n if (advancedFilterCondition) {\r\n this.onApplyFilter([advancedFilterCondition]);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"hashchange\", this.onLocationChanged);\r\n }\r\n\r\n protected initialGridConfiguration: GridConfiguration = {\r\n pageSize: -1,\r\n columnSearchVisible: true,\r\n rowStyleRules: auditEntityRowStyleRules(),\r\n defaultRowStyleRules: auditEntityRowStyleRules(),\r\n }\r\n\r\n getPanelConfiguration(): AbstractListPanelConfiguration {\r\n return this.state.panelConfiguration;\r\n }\r\n\r\n onPanelConfigurationChanged(configuration: Partial<AbstractListPanelConfiguration>) {\r\n const panelConfiguration = this.state.panelConfiguration;\r\n Object.assign(panelConfiguration, configuration);\r\n this.setState({panelConfiguration: panelConfiguration}, () => {\r\n this.props.onPanelConfigurationChanged();\r\n });\r\n }\r\n\r\n protected async onRecordsLoaded(): Promise<void> {\r\n const accessRight = await this.props.api.getAccessRight();\r\n this.setState({accessRight: accessRight});\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return !this.state.deletedRecordsVisible;\r\n }\r\n\r\n updateGrid(entity: T) {\r\n this.setState({modalDetailPanelVisible: false});\r\n this.idToSelect = entity.id;\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract renderDetailPanel(): React.ReactElement;\r\n\r\n abstract renderDetailPanelForHistory(entity: T | undefined, differences: string[]): React.ReactElement;\r\n\r\n protected focusFieldInDetailPanel(): void {\r\n this.detailPanel?.focusFirstField();\r\n }\r\n\r\n protected getAuditColumnDefs(): DataGridColDef[] {\r\n const auditColumnParams: Partial<DataGridColDef> = {\r\n group: i18n(\"Audit\"),\r\n initialHide: true,\r\n }\r\n\r\n return [\r\n this.getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, {headerName: i18n(\"Date of Insert\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.CREATED_BY, {headerName: i18n(\"Created By\"), ...auditColumnParams}),\r\n this.getDateTimeColumn(GeneralEntityColumn.MODIFY_DATE, {headerName: i18n(\"Modify Date\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.MODIFIED_BY, {headerName: i18n(\"Modified By\"), ...auditColumnParams}),\r\n this.getDbBooleanColumn(GeneralEntityColumn.VALIDITY, {headerName: i18n(\"Valid\"), ...auditColumnParams}),\r\n ]\r\n }\r\n\r\n protected onCloseDetailPanel() {\r\n this.setState({\r\n selectedData: this.gridApi?.getSelectedRows() ?? [],\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false\r\n });\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n protected getDetailPanelDefaultWidth(): number {\r\n return DETAIL_PANEL_DEFAULT_WIDTH;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: [], detailPanelVisible: false});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n protected adaptNewRecord(newRecord: T) {\r\n newRecord;\r\n }\r\n\r\n protected getDataToDelete() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.TRUE);\r\n }\r\n\r\n protected getDataToRecover() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.FALSE);\r\n }\r\n\r\n protected isValidityChangeDisabled(): boolean {\r\n return this.state.loading || this.state.selectedData[0]?.id === undefined;\r\n }\r\n\r\n private renderValidityButton() {\r\n const operationDisabled = this.isValidityChangeDisabled();\r\n\r\n const dataToDelete = this.getDataToDelete();\r\n const dataToRecover = this.getDataToRecover();\r\n\r\n let allowedAction: \"delete\" | \"recover\" | \"none\" = \"none\";\r\n if (dataToDelete.length > 0) {\r\n allowedAction = \"delete\";\r\n } else if (dataToRecover.length > 0) {\r\n allowedAction = \"recover\";\r\n } else {\r\n allowedAction = \"none\";\r\n }\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={allowedAction === \"recover\" ? i18n(\"Mark Record As Valid\") : i18n(\"Mark Record As Deleted\")}\r\n disabled={operationDisabled || allowedAction === \"none\"}\r\n icon={allowedAction === \"recover\" ? <CheckCircleOutlined/> : <CloseCircleOutlined/>}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {allowedAction === \"recover\" ? i18n(\"Mark %n records as valid?\", dataToRecover.length) : i18n(\"Mark %n records as deleted?\", dataToDelete.length)}\r\n </span>,\r\n icon:\r\n allowedAction === \"delete\" ?\r\n <CloseCircleOutlined style={{color: ERROR_COLOR}}/>\r\n :\r\n <CheckCircleOutlined style={{color: SUCCESS_COLOR}}/>,\r\n onOk: async () => {\r\n for (const data of allowedAction === \"delete\" ? dataToDelete : dataToRecover) {\r\n const isOk = await this.props.api.setValidity(data, allowedAction === \"recover\");\r\n if (!isOk) {\r\n return;\r\n }\r\n }\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderAdvancedFilterButton() {\r\n const advancedFilterListName = this.getAdvancedFilterListName();\r\n\r\n if (advancedFilterListName) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterListName}\r\n columnDefinitions={this.getAdvancedFilterColumnDefinitions()}\r\n filterConditions={this.state.filterConditions}\r\n onApplyFilter={this.onApplyFilter}\r\n onMenuItemClicked={() => {\r\n this.setState({dropdownMenuVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private renderCopyButton() {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Create Copy\")}\r\n disabled={disabled}\r\n loading={this.state.waitingForEntityCopy}\r\n icon={<CopyOutlined/>}\r\n onClick={async () => {\r\n this.setState({waitingForEntityCopy: true});\r\n const newRecord = await this.props.api.createNewEntity(this.state.selectedData[0]);\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], dropdownMenuVisible: false, waitingForEntityCopy: false});\r\n if (window.innerWidth <= MAX_WIDTH_MOBILE) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n setTimeout(() => this.focusFieldInDetailPanel());\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderNewRecordButton() {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"New Record\")}\r\n disabled={this.state.loading}\r\n loading={this.state.waitingForNewEntity}\r\n icon={<PlusCircleOutlined/>}\r\n onClick={() => {\r\n this.gridApi?.deselectAll();\r\n setTimeout(async () => {\r\n this.setState({waitingForNewEntity: true});\r\n const newRecord = await this.props.api.createNewEntity();\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], waitingForNewEntity: false});\r\n if (window.innerWidth <= MAX_WIDTH_MOBILE) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n this.focusFieldInDetailPanel();\r\n }\r\n })\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderDetailPanelButton() {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.detailPanelVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.detailPanelVisible ? \"Hide Detail\" : \"Show Detail\")}\r\n disabled={disabled}\r\n icon={<ProfileOutlined/>}\r\n onClick={() => {\r\n if (window.innerWidth <= MAX_WIDTH_MOBILE) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n const detailPanelVisible = this.state.detailPanelVisible;\r\n this.setState({detailPanelVisible: !detailPanelVisible});\r\n this.dataGrid?.showDetailPanel(!detailPanelVisible);\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n\r\n private renderTrashButton() {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.deletedRecordsVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.deletedRecordsVisible ? \"Hide Deleted Records\" : \"Show Deleted Records\")}\r\n icon={<DeleteOutlined/>}\r\n onClick={() => {\r\n this.setState({deletedRecordsVisible: !this.state.deletedRecordsVisible}, () => {\r\n this.gridApi?.refreshInfiniteCache();\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderShortcutButton() {\r\n if (this.renderShortcutPanel()) {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Quick Actions\")}\r\n disabled={disabled}\r\n icon={<BulbOutlined/>}\r\n onClick={() => {\r\n this.setState({quickActionsListVisible: true, dropdownMenuVisible: false});\r\n }}\r\n />\r\n )\r\n }\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalButtons(): JSX.Element | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderHistoryButton() {\r\n return (\r\n <Button\r\n disabled={this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined}\r\n onClick={() => {\r\n this.setState({historyModalVisible: true});\r\n }}\r\n >\r\n <HistoryOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n protected renderShortcutPanel(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderShortcutDrawer() {\r\n return (\r\n <Drawer\r\n title={<TitleWithCodePanel title={this.getPageTitle()} code={this.getBreadcrumbCode() ?? \"\"}/>}\r\n styles={{body: {padding: 0}}}\r\n placement=\"top\"\r\n height={240}\r\n onClose={() => {\r\n this.setState({quickActionsListVisible: false})\r\n }}\r\n open={this.state.quickActionsListVisible}\r\n >\r\n {this.renderShortcutPanel()}\r\n </Drawer>\r\n );\r\n }\r\n\r\n renderToolbarButtons() {\r\n if (window.innerWidth <= MAX_WIDTH_MOBILE) {\r\n return (\r\n <>\r\n <Popover\r\n open={this.state.dropdownMenuVisible}\r\n onOpenChange={visible => {\r\n this.setState({dropdownMenuVisible: visible})\r\n }}\r\n content={\r\n <>\r\n <div>{this.renderAdvancedFilterButton()}</div>\r\n <div>{this.renderCopyButton()}</div>\r\n <div>{this.renderValidityButton()}</div>\r\n <div>{this.renderTrashButton()}</div>\r\n <div>{this.renderShortcutButton()}</div>\r\n <div>{this.renderAdditionalButtons()}</div>\r\n </>\r\n }\r\n trigger=\"click\"\r\n >\r\n <Button>\r\n <MoreOutlined/>\r\n </Button>\r\n </Popover>\r\n {this.renderNewRecordButton()}\r\n {this.renderDetailPanelButton()}\r\n </>\r\n )\r\n } else {\r\n return <>\r\n {this.renderAdvancedFilterButton()}\r\n {this.renderNewRecordButton()}\r\n {this.renderCopyButton()}\r\n {this.renderDetailPanelButton()}\r\n {this.renderValidityButton()}\r\n {this.renderTrashButton()}\r\n {this.renderHistoryButton()}\r\n {this.renderShortcutButton()}\r\n {this.renderAdditionalButtons()}\r\n </>\r\n }\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected getRowSelection(): \"single\" | \"multiple\" {\r\n return \"multiple\";\r\n }\r\n\r\n abstract getPageTitle(): string\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 renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n className=\"modal-no-header full-screen-modal\"\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n closable={false}\r\n open={this.state.modalDetailPanelVisible}\r\n styles={{body: {padding: 0}}}\r\n initialWidth={window.innerWidth}\r\n initialHeight={window.innerHeight}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected onHistoryListPanelSelectionChanged() {\r\n }\r\n\r\n private renderHistoryModalDialog(): React.ReactElement {\r\n const selectedEntity = this.state.selectedData[0];\r\n\r\n return (\r\n <ModalDialog\r\n styles={{body: {padding: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.historyModalVisible}\r\n onCancel={() => this.setState({historyModalVisible: false})}\r\n title={<TitleWithCodePanel title={i18n(\"History\")} code={selectedEntity?.code ?? \"\"}/>}\r\n initialWidth={window.innerWidth * 0.99}\r\n initialHeight={window.innerHeight * 0.95}\r\n >\r\n <EntityHistoryListPanel\r\n api={this.props.api}\r\n entity={selectedEntity}\r\n renderDetail={this.renderDetailPanelForHistory}\r\n detailPanelWidth={this.getDetailPanelDefaultWidth() * 2}\r\n onSelectionChanged={this.onHistoryListPanelSelectionChanged}\r\n />\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n private renderBreadcrumbItem(pageName: React.ReactNode, code?: string): ItemType {\r\n return {\r\n title: <>\r\n {pageName}\r\n {code && <ColorTag style={{marginLeft: 4, fontSize: 14}}>{code}</ColorTag>}\r\n </>,\r\n }\r\n }\r\n\r\n private renderBreadcrumb() {\r\n const pageTitle = this.getPageTitle();\r\n\r\n if (pageTitle) {\r\n const breadcrumbCode = this.getBreadcrumbCode();\r\n return (\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <Breadcrumb\r\n className={css.styles.compactBreadcrumb}\r\n style={{paddingBottom: 10, fontSize: 20, overflowX: \"auto\"}}\r\n items={\r\n [\r\n ...this.props.breadcrumbPath?.map(value => this.renderBreadcrumbItem(value.pageName, value.code)) ?? [],\r\n this.renderBreadcrumbItem(pageTitle, breadcrumbCode),\r\n ]\r\n }\r\n >\r\n </Breadcrumb>\r\n }</WithCss>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n protected getBreadcrumbCode() {\r\n return this.state.selectedData[0]?.code ?? undefined;\r\n }\r\n\r\n protected getExtendedBreadcrumbPath() {\r\n return [\r\n ...this.props.breadcrumbPath ?? [],\r\n {pageName: this.getPageTitle() ?? \"\", code: this.getBreadcrumbCode() ?? \"\"}\r\n ]\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\"}}>\r\n <div style={{padding: \"10px 12px 0px\", borderBottom: \"2px solid #f5f5f5\", fontWeight: 500}}>\r\n {this.renderBreadcrumb()}\r\n </div>\r\n <div style={{position: \"relative\", height: \"100%\"}}>\r\n {this.renderHistoryModalDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n {this.renderShortcutDrawer()}\r\n <ExtendedDataGrid<T>\r\n tablePanelStyle={{\r\n marginTop: 8,\r\n }}\r\n panelStyle={{\r\n paddingTop: 8,\r\n }}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={this.state.panelConfiguration.gridConfiguration}\r\n onChangeConfiguration={gridConfiguration => {\r\n this.onPanelConfigurationChanged({gridConfiguration: gridConfiguration});\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType=\"infinite\"\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onSortChanged={_event => {\r\n this.dataGrid?.loadData();\r\n }}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({\r\n selectedData: [event.data],\r\n detailPanelVisible: true,\r\n modalDetailPanelVisible: window.innerWidth <= MAX_WIDTH_MOBILE,\r\n });\r\n\r\n if (window.innerWidth > MAX_WIDTH_MOBILE) {\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n }}\r\n detailPanel={{\r\n defaultWidth: this.getDetailPanelDefaultWidth(),\r\n renderer: this.renderDetailPanel\r\n }}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n }}\r\n animateRows\r\n rowSelection={this.getRowSelection()}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"abstractListPanel.js","sourceRoot":"","sources":["../../../coreui/abstractListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ExtendedDataGrid, {GridConfiguration} from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridReadyEvent, IGetRowsParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {PageableList} from \"../api/abstractEntityApi\";\r\nimport {Breadcrumb, Button, Drawer, Popover} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {\r\n BulbOutlined,\r\n CheckCircleOutlined,\r\n CloseCircleOutlined,\r\n CopyOutlined,\r\n DeleteOutlined,\r\n HistoryOutlined,\r\n MoreOutlined,\r\n PlusCircleOutlined,\r\n ProfileOutlined\r\n} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AuditableEntity from \"../api/types/auditableEntity\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"./components/advancedFilter/advancedFilteredGrid\";\r\nimport {GeneralEntityColumn} from \"./components/advancedFilter/advancedFilterColumnDefinitions\";\r\nimport AdvancedFilterButton from \"./components/advancedFilter/advancedFilterButton\";\r\nimport {PanelConfiguration} from \"../core/types/panelConfiguration\";\r\nimport auditEntityRowStyleRules from \"./components/grid/auditEntityRowStyleRules\";\r\nimport LocationUtils from \"../core/util/locationUtils\";\r\nimport TitleWithCodePanel from \"./components/titleWithCodePanel/titleWithCodePanel\";\r\nimport EntityHistoryListPanel from \"./components/history/entityHistoryListPanel\";\r\nimport {AccessRight} from \"../api/types/accessRight\";\r\nimport {ERROR_COLOR, SUCCESS_COLOR} from \"../api/constants/constants\";\r\nimport AbstractEntityConfigPanel from \"./components/editor/abstractEntityConfigPanel\";\r\nimport {DbBoolean} from \"../api/types/dbBoolean\";\r\nimport {ItemType} from \"antd/es/breadcrumb/Breadcrumb\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport ColorTag from \"./components/colorTag/colorTag\";\r\n\r\nconst useStyles = createStyles(({css}) => {\r\n return {\r\n compactBreadcrumb: css`\r\n ol {\r\n display: table;\r\n }\r\n\r\n ol li {\r\n display: table-cell;\r\n white-space: nowrap;\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport const DETAIL_PANEL_DEFAULT_WIDTH = 560;\r\nconst MAX_WIDTH_MOBILE = 500;\r\n\r\nexport interface AbstractBreadcrumbItem {\r\n pageName: string\r\n code: string\r\n}\r\n\r\nexport interface AbstractListPanelConfiguration extends PanelConfiguration {\r\n gridConfiguration: GridConfiguration\r\n}\r\n\r\nexport interface AbstractListPanelProps<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridProps<T> {\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n getConfiguration(initialConfiguration: C): C\r\n\r\n onPanelConfigurationChanged(): void\r\n}\r\n\r\nexport interface AbstractListPanelState<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridState<T> {\r\n panelConfiguration: C\r\n detailPanelVisible: boolean\r\n modalDetailPanelVisible: boolean\r\n deletedRecordsVisible: boolean\r\n historyModalVisible: boolean\r\n dropdownMenuVisible: boolean\r\n waitingForNewEntity: boolean\r\n waitingForEntityCopy: boolean\r\n quickActionsListVisible: boolean\r\n accessRight: AccessRight\r\n}\r\n\r\nexport abstract class AbstractListPanel<\r\n T extends AuditableEntity,\r\n P extends AbstractListPanelProps<T, C>,\r\n S extends AbstractListPanelState<T, C>,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration,\r\n> extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n protected detailPanel: AbstractEntityConfigPanel<any, any> | null = null;\r\n private idToSelect: number | undefined = undefined;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n const advancedFilterCondition = LocationUtils.hashToAdvancedFilterCondition(window.location.hash, this.getAllowedColumnNameForSearchParams());\r\n if (advancedFilterCondition) {\r\n this.initialState.filterConditions = [advancedFilterCondition];\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onHistoryListPanelSelectionChanged = this.onHistoryListPanelSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onLocationChanged = this.onLocationChanged.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n\r\n window.addEventListener(\"hashchange\", this.onLocationChanged, false);\r\n }\r\n\r\n protected initialState: Omit<AbstractListPanelState<T, C>, \"panelConfiguration\"> = {\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false,\r\n deletedRecordsVisible: false,\r\n historyModalVisible: false,\r\n dropdownMenuVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\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 params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n setTimeout(() => {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n\r\n if (this.idToSelect !== undefined && pageableList.data.some(value => value.id === this.idToSelect)) {\r\n const rowNode = this.gridApi?.getRowNode(this.idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n rowNode?.setSelected(true, true);\r\n this.idToSelect = undefined;\r\n }\r\n }, 200);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityCopy: false,\r\n quickActionsListVisible: false,\r\n accessRight: AccessRight.NONE,\r\n filterConditions: [],\r\n }\r\n\r\n protected getAllowedColumnNameForSearchParams(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n onLocationChanged() {\r\n const advancedFilterCondition = LocationUtils.hashToAdvancedFilterCondition(window.location.hash, this.getAllowedColumnNameForSearchParams());\r\n if (advancedFilterCondition) {\r\n this.onApplyFilter([advancedFilterCondition]);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"hashchange\", this.onLocationChanged);\r\n }\r\n\r\n protected initialGridConfiguration: GridConfiguration = {\r\n pageSize: -1,\r\n columnSearchVisible: true,\r\n rowStyleRules: auditEntityRowStyleRules(),\r\n defaultRowStyleRules: auditEntityRowStyleRules(),\r\n }\r\n\r\n getPanelConfiguration(): AbstractListPanelConfiguration {\r\n return this.state.panelConfiguration;\r\n }\r\n\r\n onPanelConfigurationChanged(configuration: Partial<AbstractListPanelConfiguration>) {\r\n const panelConfiguration = this.state.panelConfiguration;\r\n Object.assign(panelConfiguration, configuration);\r\n this.setState({panelConfiguration: panelConfiguration}, () => {\r\n this.props.onPanelConfigurationChanged();\r\n });\r\n }\r\n\r\n protected async onRecordsLoaded(): Promise<void> {\r\n const accessRight = await this.props.api.getAccessRight();\r\n this.setState({accessRight: accessRight});\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return !this.state.deletedRecordsVisible;\r\n }\r\n\r\n updateGrid(entity: T) {\r\n this.setState({modalDetailPanelVisible: false});\r\n this.idToSelect = entity.id;\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract renderDetailPanel(): React.ReactElement;\r\n\r\n abstract renderDetailPanelForHistory(entity: T | undefined, differences: string[]): React.ReactElement;\r\n\r\n protected focusFieldInDetailPanel(): void {\r\n this.detailPanel?.focusFirstField();\r\n }\r\n\r\n protected getAuditColumnDefs(): DataGridColDef[] {\r\n const auditColumnParams: Partial<DataGridColDef> = {\r\n group: i18n(\"Audit\"),\r\n initialHide: true,\r\n }\r\n\r\n return [\r\n this.getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, {headerName: i18n(\"Date of Insert\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.CREATED_BY, {headerName: i18n(\"Created By\"), ...auditColumnParams}),\r\n this.getDateTimeColumn(GeneralEntityColumn.MODIFY_DATE, {headerName: i18n(\"Modify Date\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.MODIFIED_BY, {headerName: i18n(\"Modified By\"), ...auditColumnParams}),\r\n this.getDbBooleanColumn(GeneralEntityColumn.VALIDITY, {headerName: i18n(\"Valid\"), ...auditColumnParams}),\r\n ]\r\n }\r\n\r\n protected onCloseDetailPanel() {\r\n this.setState({\r\n selectedData: this.gridApi?.getSelectedRows() ?? [],\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false\r\n });\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n protected getDetailPanelDefaultWidth(): number {\r\n return DETAIL_PANEL_DEFAULT_WIDTH;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: [], detailPanelVisible: false});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n protected adaptNewRecord(newRecord: T) {\r\n newRecord;\r\n }\r\n\r\n protected getDataToDelete() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.TRUE);\r\n }\r\n\r\n protected getDataToRecover() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.FALSE);\r\n }\r\n\r\n protected isValidityChangeDisabled(): boolean {\r\n return this.state.loading || this.state.selectedData[0]?.id === undefined;\r\n }\r\n\r\n private renderValidityButton() {\r\n const operationDisabled = this.isValidityChangeDisabled();\r\n\r\n const dataToDelete = this.getDataToDelete();\r\n const dataToRecover = this.getDataToRecover();\r\n\r\n let allowedAction: \"delete\" | \"recover\" | \"none\" = \"none\";\r\n if (dataToDelete.length > 0) {\r\n allowedAction = \"delete\";\r\n } else if (dataToRecover.length > 0) {\r\n allowedAction = \"recover\";\r\n } else {\r\n allowedAction = \"none\";\r\n }\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={allowedAction === \"recover\" ? i18n(\"Mark Record As Valid\") : i18n(\"Mark Record As Deleted\")}\r\n disabled={operationDisabled || allowedAction === \"none\"}\r\n icon={allowedAction === \"recover\" ? <CheckCircleOutlined/> : <CloseCircleOutlined/>}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {allowedAction === \"recover\" ? i18n(\"Mark %n records as valid?\", dataToRecover.length) : i18n(\"Mark %n records as deleted?\", dataToDelete.length)}\r\n </span>,\r\n icon:\r\n allowedAction === \"delete\" ?\r\n <CloseCircleOutlined style={{color: ERROR_COLOR}}/>\r\n :\r\n <CheckCircleOutlined style={{color: SUCCESS_COLOR}}/>,\r\n onOk: async () => {\r\n for (const data of allowedAction === \"delete\" ? dataToDelete : dataToRecover) {\r\n const isOk = await this.props.api.setValidity(data, allowedAction === \"recover\");\r\n if (!isOk) {\r\n return;\r\n }\r\n }\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderAdvancedFilterButton() {\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 onMenuItemClicked={() => {\r\n this.setState({dropdownMenuVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected isMobile(): boolean {\r\n return window.innerWidth <= MAX_WIDTH_MOBILE;\r\n }\r\n\r\n private renderCopyButton() {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Create Copy\")}\r\n disabled={disabled}\r\n loading={this.state.waitingForEntityCopy}\r\n icon={<CopyOutlined/>}\r\n onClick={async () => {\r\n this.setState({waitingForEntityCopy: true});\r\n const newRecord = await this.props.api.createNewEntity(this.state.selectedData[0]);\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], dropdownMenuVisible: false, waitingForEntityCopy: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n setTimeout(() => this.focusFieldInDetailPanel());\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderNewRecordButton() {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"New Record\")}\r\n disabled={this.state.loading}\r\n loading={this.state.waitingForNewEntity}\r\n icon={<PlusCircleOutlined/>}\r\n onClick={() => {\r\n this.gridApi?.deselectAll();\r\n setTimeout(async () => {\r\n this.setState({waitingForNewEntity: true});\r\n const newRecord = await this.props.api.createNewEntity();\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], waitingForNewEntity: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n this.focusFieldInDetailPanel();\r\n }\r\n })\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderDetailPanelButton() {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.detailPanelVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.detailPanelVisible ? \"Hide Detail\" : \"Show Detail\")}\r\n disabled={disabled}\r\n icon={<ProfileOutlined/>}\r\n onClick={() => {\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n const detailPanelVisible = this.state.detailPanelVisible;\r\n this.setState({detailPanelVisible: !detailPanelVisible});\r\n this.dataGrid?.showDetailPanel(!detailPanelVisible);\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n\r\n private renderTrashButton() {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.deletedRecordsVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.deletedRecordsVisible ? \"Hide Deleted Records\" : \"Show Deleted Records\")}\r\n icon={<DeleteOutlined/>}\r\n onClick={() => {\r\n this.setState({deletedRecordsVisible: !this.state.deletedRecordsVisible}, () => {\r\n this.gridApi?.refreshInfiniteCache();\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderShortcutButton() {\r\n if (this.renderShortcutPanel()) {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Quick Actions\")}\r\n disabled={disabled}\r\n icon={<BulbOutlined/>}\r\n onClick={() => {\r\n this.setState({quickActionsListVisible: true, dropdownMenuVisible: false});\r\n }}\r\n />\r\n )\r\n }\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalButtons(): JSX.Element | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderHistoryButton() {\r\n return (\r\n <Button\r\n disabled={this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined}\r\n onClick={() => {\r\n this.setState({historyModalVisible: true});\r\n }}\r\n >\r\n <HistoryOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n protected renderShortcutPanel(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderShortcutDrawer() {\r\n return (\r\n <Drawer\r\n title={<TitleWithCodePanel title={this.getPageTitle()} code={this.getBreadcrumbCode() ?? \"\"}/>}\r\n styles={{body: {padding: 0}}}\r\n placement=\"top\"\r\n height={240}\r\n onClose={() => {\r\n this.setState({quickActionsListVisible: false})\r\n }}\r\n open={this.state.quickActionsListVisible}\r\n >\r\n {this.renderShortcutPanel()}\r\n </Drawer>\r\n );\r\n }\r\n\r\n protected renderToolbar(originalSearchBar: React.ReactElement): React.ReactElement {\r\n return originalSearchBar;\r\n }\r\n\r\n renderToolbarButtons() {\r\n if (this.isMobile()) {\r\n return (\r\n <>\r\n <Popover\r\n open={this.state.dropdownMenuVisible}\r\n onOpenChange={visible => {\r\n this.setState({dropdownMenuVisible: visible})\r\n }}\r\n content={\r\n <>\r\n <div>{this.renderAdvancedFilterButton()}</div>\r\n <div>{this.renderCopyButton()}</div>\r\n <div>{this.renderValidityButton()}</div>\r\n <div>{this.renderTrashButton()}</div>\r\n <div>{this.renderShortcutButton()}</div>\r\n <div>{this.renderAdditionalButtons()}</div>\r\n </>\r\n }\r\n trigger=\"click\"\r\n >\r\n <Button>\r\n <MoreOutlined/>\r\n </Button>\r\n </Popover>\r\n {this.renderNewRecordButton()}\r\n {this.renderDetailPanelButton()}\r\n </>\r\n )\r\n } else {\r\n return <>\r\n {this.renderAdvancedFilterButton()}\r\n {this.renderNewRecordButton()}\r\n {this.renderCopyButton()}\r\n {this.renderDetailPanelButton()}\r\n {this.renderValidityButton()}\r\n {this.renderTrashButton()}\r\n {this.renderHistoryButton()}\r\n {this.renderShortcutButton()}\r\n {this.renderAdditionalButtons()}\r\n </>\r\n }\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected getRowSelection(): \"single\" | \"multiple\" {\r\n return \"multiple\";\r\n }\r\n\r\n abstract getPageTitle(): string\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 renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n className=\"modal-no-header full-screen-modal\"\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n closable={false}\r\n open={this.state.modalDetailPanelVisible}\r\n styles={{body: {padding: 0}}}\r\n initialWidth={window.innerWidth}\r\n initialHeight={window.innerHeight}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected onHistoryListPanelSelectionChanged() {\r\n }\r\n\r\n private renderHistoryModalDialog(): React.ReactElement {\r\n const selectedEntity = this.state.selectedData[0];\r\n\r\n return (\r\n <ModalDialog\r\n styles={{body: {padding: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.historyModalVisible}\r\n onCancel={() => this.setState({historyModalVisible: false})}\r\n title={<TitleWithCodePanel title={i18n(\"History\")} code={selectedEntity?.code ?? \"\"}/>}\r\n initialWidth={window.innerWidth * 0.99}\r\n initialHeight={window.innerHeight * 0.95}\r\n >\r\n <EntityHistoryListPanel\r\n api={this.props.api}\r\n entity={selectedEntity}\r\n renderDetail={this.renderDetailPanelForHistory}\r\n detailPanelWidth={this.getDetailPanelDefaultWidth() * 2}\r\n onSelectionChanged={this.onHistoryListPanelSelectionChanged}\r\n />\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n private renderBreadcrumbItem(pageName: React.ReactNode, code?: string): ItemType {\r\n return {\r\n title: <>\r\n {pageName}\r\n {code && <ColorTag style={{marginLeft: 4, fontSize: 14}}>{code}</ColorTag>}\r\n </>,\r\n }\r\n }\r\n\r\n private renderBreadcrumb() {\r\n const pageTitle = this.getPageTitle();\r\n\r\n if (pageTitle) {\r\n const breadcrumbCode = this.getBreadcrumbCode();\r\n return (\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <Breadcrumb\r\n className={css.styles.compactBreadcrumb}\r\n style={{paddingBottom: 10, fontSize: 20, overflowX: \"auto\"}}\r\n items={\r\n [\r\n ...this.props.breadcrumbPath?.map(value => this.renderBreadcrumbItem(value.pageName, value.code)) ?? [],\r\n this.renderBreadcrumbItem(pageTitle, breadcrumbCode),\r\n ]\r\n }\r\n >\r\n </Breadcrumb>\r\n }</WithCss>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n protected getBreadcrumbCode() {\r\n return this.state.selectedData[0]?.code ?? undefined;\r\n }\r\n\r\n protected getExtendedBreadcrumbPath() {\r\n return [\r\n ...this.props.breadcrumbPath ?? [],\r\n {pageName: this.getPageTitle() ?? \"\", code: this.getBreadcrumbCode() ?? \"\"}\r\n ]\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\"}}>\r\n <div style={{padding: \"10px 12px 0px\", borderBottom: \"2px solid #f5f5f5\", fontWeight: 500}}>\r\n {this.renderBreadcrumb()}\r\n </div>\r\n <div style={{position: \"relative\", height: \"100%\"}}>\r\n {this.renderHistoryModalDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n {this.renderShortcutDrawer()}\r\n <ExtendedDataGrid<T>\r\n tablePanelStyle={{\r\n marginTop: 8,\r\n }}\r\n panelStyle={{\r\n paddingTop: 8,\r\n }}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={this.state.panelConfiguration.gridConfiguration}\r\n onChangeConfiguration={gridConfiguration => {\r\n this.onPanelConfigurationChanged({gridConfiguration: gridConfiguration});\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType=\"infinite\"\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onSortChanged={_event => {\r\n this.dataGrid?.loadData();\r\n }}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({\r\n selectedData: [event.data],\r\n detailPanelVisible: true,\r\n modalDetailPanelVisible: this.isMobile(),\r\n });\r\n\r\n if (!this.isMobile()) {\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n }}\r\n detailPanel={{\r\n defaultWidth: this.getDetailPanelDefaultWidth(),\r\n renderer: this.renderDetailPanel\r\n }}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n renderToolbar: this.renderToolbar,\r\n }}\r\n animateRows\r\n rowSelection={this.getRowSelection()}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n}"]}
@@ -7,6 +7,6 @@ export default class AdvancedFilterUtils {
7
7
  static humanizeCondition(columnDefinition: AdvancedFilterColumnDefinition, withOperator: boolean, filterCondition?: AdvancedFilterCondition): string;
8
8
  static serializeConditionValues(filterConditions: AdvancedFilterCondition[]): AdvancedFilterCondition[];
9
9
  static parseConditionValues(filterConditions: AdvancedFilterCondition[]): AdvancedFilterCondition[];
10
- static createNewCondition(id: number, columnDefinition: AdvancedFilterColumnDefinition, additionalConfig?: Partial<AdvancedFilterCondition>): AdvancedFilterCondition;
10
+ static newCondition(columnDefinition: AdvancedFilterColumnDefinition, additionalConfig?: Partial<AdvancedFilterCondition>): AdvancedFilterCondition;
11
11
  static getOperatorsForValueType(valueType: AdvancedFilterValueType): AdvancedFilterOperator[];
12
12
  }
@@ -61,10 +61,10 @@ export default class AdvancedFilterUtils {
61
61
  });
62
62
  return parsedFilterConditions;
63
63
  }
64
- static createNewCondition(id, columnDefinition, additionalConfig) {
64
+ static newCondition(columnDefinition, additionalConfig) {
65
65
  const allowedOperators = this.getOperatorsForValueType(columnDefinition.valueType);
66
66
  return cloneDeep(Object.assign({
67
- id: id,
67
+ id: -1,
68
68
  id_condition: -1,
69
69
  id_filter: -1,
70
70
  not_flag: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"advancedFilterUtils.js","sourceRoot":"","sources":["../../../../../coreui/components/advancedFilter/advancedFilterUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AdvancedFilterCondition,\r\n AdvancedFilterOperator,\r\n getAdvancedFilterOperatorString\r\n} from \"../../../api/advancedFilterApi\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport {AdvancedFilterColumnDefinition, AdvancedFilterValueType} from \"../../../api/types/advancedFilter\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {ADVANCED_FILTER_DATE_FORMAT} from \"./components/advancedFilterValueInput\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\n\r\nexport enum AdvancedFilterListNameEnum {\r\n EDA_VECTOR_SELECT_LIST = \"eda_vector_select_list\",\r\n}\r\n\r\nexport default class AdvancedFilterUtils {\r\n\r\n static humanizeCondition(columnDefinition: AdvancedFilterColumnDefinition, withOperator: boolean, filterCondition?: AdvancedFilterCondition) {\r\n let result = \"\";\r\n\r\n if (filterCondition?.value !== undefined) {\r\n const {operator, value, value_type} = filterCondition;\r\n\r\n if (value_type === AdvancedFilterValueType.DATE_TIME) {\r\n result = dayjs(value as string, ADVANCED_FILTER_DATE_FORMAT).format(LocaleHolder.getDateTimeFormat(true, true, false));\r\n } else if (value_type === AdvancedFilterValueType.DATE) {\r\n result = dayjs(value as string, ADVANCED_FILTER_DATE_FORMAT).format(LocaleHolder.getDateFormat(true));\r\n } else if (value_type === AdvancedFilterValueType.NUMBER_LIST) {\r\n if (operator === AdvancedFilterOperator.IN) {\r\n result = `(${\r\n columnDefinition.optionList\r\n ?.filter(v => typeof v.value === \"number\" && (value as number[]).includes(v.value))\r\n .map(v => v.title)\r\n .join(\", \")\r\n })`;\r\n } else {\r\n result = columnDefinition.optionList?.find(v => v.value == value)?.title ?? \"\";\r\n }\r\n } else if (Array.isArray(value)) {\r\n result = `(${value.join(\", \")})`;\r\n } else {\r\n result = value.toString();\r\n }\r\n\r\n if (withOperator) {\r\n const operatorString = getAdvancedFilterOperatorString(operator);\r\n result = `${operatorString} ${result}`;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static serializeConditionValues(filterConditions: AdvancedFilterCondition[]): AdvancedFilterCondition[] {\r\n const serializedFilterConditions = cloneDeep(filterConditions);\r\n serializedFilterConditions.forEach(filterCondition => {\r\n if (Array.isArray(filterCondition.value)) {\r\n filterCondition.value = filterCondition.value.join(\"@#@\");\r\n }\r\n });\r\n\r\n return serializedFilterConditions;\r\n }\r\n\r\n static parseConditionValues(filterConditions: AdvancedFilterCondition[]): AdvancedFilterCondition[] {\r\n const parsedFilterConditions = cloneDeep(filterConditions);\r\n parsedFilterConditions.forEach(value => {\r\n if (typeof value.value === \"string\" && value.value.includes(\"@#@\")) {\r\n value.value = value.value.split(\"@#@\");\r\n }\r\n });\r\n\r\n return parsedFilterConditions;\r\n }\r\n\r\n static createNewCondition(id: number, columnDefinition: AdvancedFilterColumnDefinition, additionalConfig?: Partial<AdvancedFilterCondition>): AdvancedFilterCondition {\r\n const allowedOperators = this.getOperatorsForValueType(columnDefinition.valueType);\r\n\r\n return cloneDeep(Object.assign({\r\n id: id,\r\n id_condition: -1,\r\n id_filter: -1,\r\n not_flag: 0,\r\n left_par: 0,\r\n column_name: columnDefinition.columnName,\r\n operator: allowedOperators[0],\r\n value: undefined,\r\n value_type: columnDefinition.valueType,\r\n right_par: 0,\r\n logical_operator: null,\r\n }, additionalConfig));\r\n }\r\n\r\n static getOperatorsForValueType(valueType: AdvancedFilterValueType): AdvancedFilterOperator[] {\r\n switch (valueType) {\r\n case AdvancedFilterValueType.STRING:\r\n return [AdvancedFilterOperator.LIKE, AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.LESS_THAN,\r\n AdvancedFilterOperator.GREATER_THAN, AdvancedFilterOperator.NOT_EQUALS, AdvancedFilterOperator.LESS_THAN_EQUALS,\r\n AdvancedFilterOperator.GREATER_THAN_EQUALS, AdvancedFilterOperator.IN, AdvancedFilterOperator.IS_NULL];\r\n case AdvancedFilterValueType.NUMBER:\r\n return [AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.LESS_THAN, AdvancedFilterOperator.GREATER_THAN,\r\n AdvancedFilterOperator.NOT_EQUALS, AdvancedFilterOperator.LESS_THAN_EQUALS, AdvancedFilterOperator.GREATER_THAN_EQUALS,\r\n AdvancedFilterOperator.IN, AdvancedFilterOperator.IS_NULL];\r\n case AdvancedFilterValueType.STRING_LIST:\r\n case AdvancedFilterValueType.NUMBER_LIST:\r\n return [AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.IN, AdvancedFilterOperator.IS_NULL];\r\n case AdvancedFilterValueType.DATE_TIME:\r\n case AdvancedFilterValueType.DATE:\r\n return [AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.LESS_THAN, AdvancedFilterOperator.GREATER_THAN,\r\n AdvancedFilterOperator.NOT_EQUALS, AdvancedFilterOperator.LESS_THAN_EQUALS, AdvancedFilterOperator.GREATER_THAN_EQUALS,\r\n AdvancedFilterOperator.IS_NULL];\r\n }\r\n }\r\n}"]}
1
+ {"version":3,"file":"advancedFilterUtils.js","sourceRoot":"","sources":["../../../../../coreui/components/advancedFilter/advancedFilterUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AdvancedFilterCondition,\r\n AdvancedFilterOperator,\r\n getAdvancedFilterOperatorString\r\n} from \"../../../api/advancedFilterApi\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport {AdvancedFilterColumnDefinition, AdvancedFilterValueType} from \"../../../api/types/advancedFilter\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {ADVANCED_FILTER_DATE_FORMAT} from \"./components/advancedFilterValueInput\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\n\r\nexport enum AdvancedFilterListNameEnum {\r\n EDA_VECTOR_SELECT_LIST = \"eda_vector_select_list\",\r\n}\r\n\r\nexport default class AdvancedFilterUtils {\r\n\r\n static humanizeCondition(columnDefinition: AdvancedFilterColumnDefinition, withOperator: boolean, filterCondition?: AdvancedFilterCondition) {\r\n let result = \"\";\r\n\r\n if (filterCondition?.value !== undefined) {\r\n const {operator, value, value_type} = filterCondition;\r\n\r\n if (value_type === AdvancedFilterValueType.DATE_TIME) {\r\n result = dayjs(value as string, ADVANCED_FILTER_DATE_FORMAT).format(LocaleHolder.getDateTimeFormat(true, true, false));\r\n } else if (value_type === AdvancedFilterValueType.DATE) {\r\n result = dayjs(value as string, ADVANCED_FILTER_DATE_FORMAT).format(LocaleHolder.getDateFormat(true));\r\n } else if (value_type === AdvancedFilterValueType.NUMBER_LIST) {\r\n if (operator === AdvancedFilterOperator.IN) {\r\n result = `(${\r\n columnDefinition.optionList\r\n ?.filter(v => typeof v.value === \"number\" && (value as number[]).includes(v.value))\r\n .map(v => v.title)\r\n .join(\", \")\r\n })`;\r\n } else {\r\n result = columnDefinition.optionList?.find(v => v.value == value)?.title ?? \"\";\r\n }\r\n } else if (Array.isArray(value)) {\r\n result = `(${value.join(\", \")})`;\r\n } else {\r\n result = value.toString();\r\n }\r\n\r\n if (withOperator) {\r\n const operatorString = getAdvancedFilterOperatorString(operator);\r\n result = `${operatorString} ${result}`;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static serializeConditionValues(filterConditions: AdvancedFilterCondition[]): AdvancedFilterCondition[] {\r\n const serializedFilterConditions = cloneDeep(filterConditions);\r\n serializedFilterConditions.forEach(filterCondition => {\r\n if (Array.isArray(filterCondition.value)) {\r\n filterCondition.value = filterCondition.value.join(\"@#@\");\r\n }\r\n });\r\n\r\n return serializedFilterConditions;\r\n }\r\n\r\n static parseConditionValues(filterConditions: AdvancedFilterCondition[]): AdvancedFilterCondition[] {\r\n const parsedFilterConditions = cloneDeep(filterConditions);\r\n parsedFilterConditions.forEach(value => {\r\n if (typeof value.value === \"string\" && value.value.includes(\"@#@\")) {\r\n value.value = value.value.split(\"@#@\");\r\n }\r\n });\r\n\r\n return parsedFilterConditions;\r\n }\r\n\r\n static newCondition(columnDefinition: AdvancedFilterColumnDefinition, additionalConfig?: Partial<AdvancedFilterCondition>): AdvancedFilterCondition {\r\n const allowedOperators = this.getOperatorsForValueType(columnDefinition.valueType);\r\n\r\n return cloneDeep(Object.assign({\r\n id: -1,\r\n id_condition: -1,\r\n id_filter: -1,\r\n not_flag: 0,\r\n left_par: 0,\r\n column_name: columnDefinition.columnName,\r\n operator: allowedOperators[0],\r\n value: undefined,\r\n value_type: columnDefinition.valueType,\r\n right_par: 0,\r\n logical_operator: null,\r\n }, additionalConfig));\r\n }\r\n\r\n static getOperatorsForValueType(valueType: AdvancedFilterValueType): AdvancedFilterOperator[] {\r\n switch (valueType) {\r\n case AdvancedFilterValueType.STRING:\r\n return [AdvancedFilterOperator.LIKE, AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.LESS_THAN,\r\n AdvancedFilterOperator.GREATER_THAN, AdvancedFilterOperator.NOT_EQUALS, AdvancedFilterOperator.LESS_THAN_EQUALS,\r\n AdvancedFilterOperator.GREATER_THAN_EQUALS, AdvancedFilterOperator.IN, AdvancedFilterOperator.IS_NULL];\r\n case AdvancedFilterValueType.NUMBER:\r\n return [AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.LESS_THAN, AdvancedFilterOperator.GREATER_THAN,\r\n AdvancedFilterOperator.NOT_EQUALS, AdvancedFilterOperator.LESS_THAN_EQUALS, AdvancedFilterOperator.GREATER_THAN_EQUALS,\r\n AdvancedFilterOperator.IN, AdvancedFilterOperator.IS_NULL];\r\n case AdvancedFilterValueType.STRING_LIST:\r\n case AdvancedFilterValueType.NUMBER_LIST:\r\n return [AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.IN, AdvancedFilterOperator.IS_NULL];\r\n case AdvancedFilterValueType.DATE_TIME:\r\n case AdvancedFilterValueType.DATE:\r\n return [AdvancedFilterOperator.EQUALS, AdvancedFilterOperator.LESS_THAN, AdvancedFilterOperator.GREATER_THAN,\r\n AdvancedFilterOperator.NOT_EQUALS, AdvancedFilterOperator.LESS_THAN_EQUALS, AdvancedFilterOperator.GREATER_THAN_EQUALS,\r\n AdvancedFilterOperator.IS_NULL];\r\n }\r\n }\r\n}"]}
@@ -6,6 +6,10 @@ import { GridApi, IDatasource } from "ag-grid-community";
6
6
  import { AdvancedFilterColumnDefinition } from "../../../api/types/advancedFilter";
7
7
  import { DataGridColDef, OnLoadDataCallback } from "d2coreui/components/grid/dataGrid";
8
8
  import AbstractEntityApi, { PageableList } from "../../../api/abstractEntityApi";
9
+ export interface AdvancedFilterConfig {
10
+ version: number;
11
+ listName: string;
12
+ }
9
13
  export interface AdvancedFilteredGridProps<T extends Entity> {
10
14
  api: AbstractEntityApi<T>;
11
15
  advancedFilterApi: AdvancedFilterApi;
@@ -29,9 +33,10 @@ export default abstract class AdvancedFilteredGrid<T extends Entity, P extends A
29
33
  protected onLoadData(callback: OnLoadDataCallback): Promise<void>;
30
34
  protected getRecords(from: number, to: number): Promise<PageableList<T>>;
31
35
  abstract getOnlyValidRecords(): boolean;
36
+ protected getAdditionalFilterConditions(): AdvancedFilterCondition[];
32
37
  protected onRecordsLoaded(): Promise<void>;
33
38
  private saveConfiguration;
34
- abstract getAdvancedFilterListName(): string | undefined;
39
+ abstract getAdvancedFilterConfig(): AdvancedFilterConfig | undefined;
35
40
  protected getAdvancedFilterColumnDefinitions(): AdvancedFilterColumnDefinition[];
36
41
  protected renderFloatingFilter(columnDefinition: AdvancedFilterColumnDefinition): React.JSX.Element;
37
42
  protected onApplyFilter(filterConditions: AdvancedFilterCondition[]): void;
@@ -6,7 +6,6 @@ import AdvancedFilterUtils from "./advancedFilterUtils";
6
6
  import { getCodeColumn, getDateColumn, getDateTimeColumn, getDbBooleanColumn, getEntityColumn, getIDColumn, getNameColumn, getNumberColumn, getStringColumn } from "../grid/standardColumns";
7
7
  import { GeneralEntityColumn, getDateAdvancedFilterColumn, getDateTimeAdvancedFilterColumn, getDbBooleanAdvancedFilterColumn, getNumberAdvancedFilterColumn, getStringAdvancedFilterColumn } from "./advancedFilterColumnDefinitions";
8
8
  import i18n from "d2core/i18n/i18n";
9
- const CONFIGURATION_VERSION = 1;
10
9
  export default class AdvancedFilteredGrid extends React.Component {
11
10
  constructor(props) {
12
11
  super(props);
@@ -22,13 +21,13 @@ export default class AdvancedFilteredGrid extends React.Component {
22
21
  }
23
22
  componentDidMount() {
24
23
  if (this.state.filterConditions.length === 0) {
25
- const advancedFilterListName = this.getAdvancedFilterListName();
26
- if (advancedFilterListName) {
27
- const item = localStorage.getItem(advancedFilterListName);
24
+ const advancedFilterConfig = this.getAdvancedFilterConfig();
25
+ if (advancedFilterConfig) {
26
+ const item = localStorage.getItem(advancedFilterConfig.listName);
28
27
  if (item) {
29
28
  try {
30
29
  const savedConditions = JSON.parse(item);
31
- if (savedConditions.version === CONFIGURATION_VERSION) {
30
+ if (savedConditions.version === advancedFilterConfig.version) {
32
31
  this.setState({ filterConditions: savedConditions.filterConditions });
33
32
  }
34
33
  }
@@ -53,6 +52,13 @@ export default class AdvancedFilteredGrid extends React.Component {
53
52
  }
54
53
  filterConditions.push(...this.props.filterConditions);
55
54
  }
55
+ const additionalFilterConditions = this.getAdditionalFilterConditions();
56
+ if (additionalFilterConditions.length > 0) {
57
+ if (filterConditions.length > 0) {
58
+ filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;
59
+ }
60
+ filterConditions.push(...additionalFilterConditions);
61
+ }
56
62
  let orderBy = "";
57
63
  const sortModel = this.dataGrid?.getSortModel()[0];
58
64
  if (sortModel) {
@@ -63,16 +69,19 @@ export default class AdvancedFilteredGrid extends React.Component {
63
69
  this.setState({ loading: false });
64
70
  return pageableList;
65
71
  }
72
+ getAdditionalFilterConditions() {
73
+ return [];
74
+ }
66
75
  async onRecordsLoaded() {
67
76
  }
68
77
  saveConfiguration() {
69
- const advancedFilterListName = this.getAdvancedFilterListName();
70
- if (advancedFilterListName) {
78
+ const advancedFilterConfig = this.getAdvancedFilterConfig();
79
+ if (advancedFilterConfig) {
71
80
  const conditionsToSave = {
72
- version: CONFIGURATION_VERSION,
81
+ version: advancedFilterConfig.version,
73
82
  filterConditions: this.state.filterConditions,
74
83
  };
75
- localStorage.setItem(advancedFilterListName, JSON.stringify(conditionsToSave));
84
+ localStorage.setItem(advancedFilterConfig.listName, JSON.stringify(conditionsToSave));
76
85
  }
77
86
  }
78
87
  getAdvancedFilterColumnDefinitions() {
@@ -103,7 +112,8 @@ export default class AdvancedFilteredGrid extends React.Component {
103
112
  }
104
113
  else {
105
114
  const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;
106
- const newCondition = AdvancedFilterUtils.createNewCondition(newId, columnDefinition, { operator, value });
115
+ const newCondition = AdvancedFilterUtils.newCondition(columnDefinition, { operator, value });
116
+ newCondition.id = newId;
107
117
  if (filterConditions.length > 0) {
108
118
  filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;
109
119
  }
@@ -115,7 +125,7 @@ export default class AdvancedFilteredGrid extends React.Component {
115
125
  });
116
126
  }
117
127
  onSetCondition(columnDefinition, operator, value) {
118
- const newCondition = AdvancedFilterUtils.createNewCondition(0, columnDefinition, { operator, value });
128
+ const newCondition = AdvancedFilterUtils.newCondition(columnDefinition, { operator, value });
119
129
  this.setState({ filterConditions: [newCondition] }, () => {
120
130
  this.dataGrid?.loadData();
121
131
  this.saveConfiguration();
@@ -1 +1 @@
1
- {"version":3,"file":"advancedFilteredGrid.js","sourceRoot":"","sources":["../../../../../coreui/components/advancedFilter/advancedFilteredGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAGH,6BAA6B,EAGhC,MAAM,gCAAgC,CAAC;AAIxC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,qCAAqC,MAAM,8DAA8D,CAAC;AAEjH,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,EAC/B,gCAAgC,EAChC,6BAA6B,EAC7B,6BAA6B,EAChC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAGpC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAqBhC,MAAM,CAAC,OAAO,OAAgB,oBAAuH,SAAQ,KAAK,CAAC,SAAe;IAO9K,YAAsB,KAAkB;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAPP,aAAQ,GAA+B,IAAI,CAAC;QAE5C,oBAAe,GAA2B,IAAI,CAAC;QAC/C,iBAAY,GAAG,IAAI,CAAC;QAM1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB;QAEb,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEhE,IAAI,sBAAsB,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBAE1D,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC;wBACD,MAAM,eAAe,GAAkC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACxE,IAAI,eAAe,CAAC,OAAO,KAAK,qBAAqB,EAAE,CAAC;4BACpD,IAAI,CAAC,QAAQ,CAAC,EAAC,gBAAgB,EAAE,eAAe,CAAC,gBAAgB,EAAC,CAAC,CAAC;wBACxE,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;oBACT,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,QAA4B;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IACpC,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,EAAU;QAC/C,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAE/B,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,6BAA6B,CAAC,GAAG,CAAC;YACvG,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,GAAG,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACpK,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QAChC,OAAO,YAAY,CAAC;IACxB,CAAC;IAIS,KAAK,CAAC,eAAe;IAC/B,CAAC;IAEO,iBAAiB;QACrB,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEhE,IAAI,sBAAsB,EAAE,CAAC;YACzB,MAAM,gBAAgB,GAAkC;gBACpD,OAAO,EAAE,qBAAqB;gBAC9B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;aAChD,CAAA;YAED,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;IAIS,kCAAkC;QACxC,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU;aACjC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC;aACpD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAyC,CAAC;eAC3D,EAAE,CAAC;IACd,CAAC;IAES,oBAAoB,CAAC,gBAAgD;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACrH,OAAO,CACH,oBAAC,qCAAqC,IAClC,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC3F,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC3F,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GACjE,CACL,CAAC;IACN,CAAC;IAES,aAAa,CAAC,gBAA2C;QAC/D,IAAI,CAAC,QAAQ,CAAC,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,EAAE,GAAG,EAAE;YACrD,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,cAAc,CAAC,gBAAgD,EAAE,QAAgC,EAAE,KAA0B;QACjI,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEhE,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAExI,IAAI,oBAAoB,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,gBAAgB,CAAC,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7C,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,GAAG,6BAA6B,CAAC,GAAG,CAAC;YAChG,CAAC;YACD,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC3D,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3G,MAAM,YAAY,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;YAExG,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,6BAA6B,CAAC,GAAG,CAAC;YACvG,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,EAAE,GAAG,EAAE;YACrD,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,cAAc,CAAC,gBAAgD,EAAE,QAAgC,EAAE,KAA0B;QACjI,MAAM,YAAY,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;QAEpG,IAAI,CAAC,QAAQ,CAAC,EAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAC,EAAE,GAAG,EAAE;YACnD,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gBAAgB,CAAC,gBAAgD;QACrE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAExH,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,EAAE,GAAG,EAAE;YACrD,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAGS,WAAW,CAAC,UAAkB;QACpC,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,EAAE,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC;IAC5K,CAAC;IAES,aAAa,CAAC,MAAgC;QACpD,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;IAClM,CAAC;IAES,gCAAgC;QACtC,OAAO,IAAI,CAAC,eAAe,CAAC,EAAC,UAAU,EAAE,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,QAAQ,EAAC,EAAE,EAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IAC/L,CAAC;IAES,aAAa,CAAC,MAAgC;QACpD,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;IAClM,CAAC;IAES,eAAe,CAAC,YAAsF,EAAE,MAAgC,EAAE,UAAoB;QACpK,OAAO,eAAe,CAClB,YAAY,EACZ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAChH,EAAC,OAAO,EAAE,6BAA6B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAC,CAC/E,CAAC;IACN,CAAC;IAES,aAAa,CAAC,UAAkB,EAAE,MAAgC;QACxE,OAAO,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;IAC9K,CAAC;IAES,iBAAiB,CAAC,UAAkB,EAAE,MAAgC;QAC5E,OAAO,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,+BAA+B,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;IAC1L,CAAC;IAES,kBAAkB,CAAC,UAAkB,EAAE,MAAgC;QAC7E,OAAO,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,gCAAgC,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;IAC7L,CAAC;IAES,eAAe,CAAC,UAAkB,EAAE,MAAgC;QAC1E,OAAO,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,6BAA6B,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;IACpL,CAAC;IAES,eAAe,CAAC,UAAkB,EAAE,MAAgC;QAC1E,OAAO,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,6BAA6B,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;IACpL,CAAC;CAEJ","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\nconst CONFIGURATION_VERSION = 1;\r\n\r\ninterface AdvancedFilterSavedConditions {\r\n version: number\r\n filterConditions: AdvancedFilterCondition[]\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 advancedFilterListName = this.getAdvancedFilterListName();\r\n\r\n if (advancedFilterListName) {\r\n const item = localStorage.getItem(advancedFilterListName);\r\n\r\n if (item) {\r\n try {\r\n const savedConditions: AdvancedFilterSavedConditions = JSON.parse(item);\r\n if (savedConditions.version === CONFIGURATION_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 const filterConditions = [...this.state.filterConditions];\r\n if (this.props.filterConditions) {\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(...this.props.filterConditions);\r\n }\r\n\r\n 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(filterConditions), 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 async onRecordsLoaded() {\r\n }\r\n\r\n private saveConfiguration() {\r\n const advancedFilterListName = this.getAdvancedFilterListName();\r\n\r\n if (advancedFilterListName) {\r\n const conditionsToSave: AdvancedFilterSavedConditions = {\r\n version: CONFIGURATION_VERSION,\r\n filterConditions: this.state.filterConditions,\r\n }\r\n\r\n localStorage.setItem(advancedFilterListName, JSON.stringify(conditionsToSave));\r\n }\r\n }\r\n\r\n abstract getAdvancedFilterListName(): string | 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.createNewCondition(newId, columnDefinition, {operator, value});\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.createNewCondition(0, 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 const filterConditions = [...this.state.filterConditions];\r\n if (this.props.filterConditions) {\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(...this.props.filterConditions);\r\n }\r\n\r\n const additionalFilterConditions = this.getAdditionalFilterConditions();\r\n if (additionalFilterConditions.length > 0) {\r\n if (filterConditions.length > 0) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n }\r\n filterConditions.push(...additionalFilterConditions);\r\n }\r\n\r\n 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(filterConditions), 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 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}"]}
@@ -125,7 +125,8 @@ export default class AdvancedFilterConditionListPanel extends React.Component {
125
125
  onAddNewCondition() {
126
126
  const filterConditions = this.props.filterConditions;
127
127
  const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;
128
- const newCondition = AdvancedFilterUtils.createNewCondition(newId, this.props.columnDefinitions[0]);
128
+ const newCondition = AdvancedFilterUtils.newCondition(this.props.columnDefinitions[0]);
129
+ newCondition.id = newId;
129
130
  filterConditions.push(newCondition);
130
131
  this.setState({ selectedCondition: newCondition });
131
132
  this.props.onChange(filterConditions);
@@ -1 +1 @@
1
- {"version":3,"file":"advancedFilterConditionListPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {AdvancedFilterCondition, getAdvancedFilterOperatorString} from \"../../../../api/advancedFilterApi\";\r\nimport {GridApi, GridReadyEvent, RowDragEndEvent, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Button} from \"antd\";\r\nimport {CloseCircleOutlined, ExclamationCircleOutlined, PlusCircleOutlined} from \"@ant-design/icons\";\r\nimport AdvancedFilterConditionDetailPanel from \"./advancedFilterConditionDetailPanel\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"../advancedFilterUtils\";\r\nimport ColorTag from \"../../colorTag/colorTag\";\r\n\r\ninterface AdvancedFilterConditionListPanelProps {\r\n filterConditions: AdvancedFilterCondition[]\r\n columnDefinitions: AdvancedFilterColumnDefinition[]\r\n isParenthesisError: boolean\r\n\r\n onChange(filterConditions: AdvancedFilterCondition[]): void\r\n}\r\n\r\ninterface AdvancedFilterConditionListPanelState {\r\n selectedCondition: AdvancedFilterCondition | null\r\n loading: boolean\r\n}\r\n\r\nexport default class AdvancedFilterConditionListPanel extends React.Component<AdvancedFilterConditionListPanelProps, AdvancedFilterConditionListPanelState> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private dataGrid: ExtendedDataGrid<AdvancedFilterCondition> | null = null;\r\n private gridApi?: GridApi;\r\n\r\n constructor(props: Readonly<AdvancedFilterConditionListPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n selectedCondition: null,\r\n loading: false,\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onAddNewCondition = this.onAddNewCondition.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.filterConditions.length === 0) {\r\n this.onAddNewCondition();\r\n }\r\n }\r\n\r\n refreshData() {\r\n this.gridApi?.applyTransaction({update: this.props.filterConditions});\r\n\r\n const selectedRows = this.gridApi?.getSelectedRows();\r\n this.setState({selectedCondition: selectedRows?.[0] ?? null});\r\n }\r\n\r\n getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n {\r\n headerName: i18n(\"Negation\"),\r\n colId: \"not_flag\",\r\n field: \"not_flag\",\r\n initialWidth: 80,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.not_flag === 1 ? \"NOT\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n rowDrag: true,\r\n }, {\r\n headerName: \"(\",\r\n colId: \"left_par\",\r\n field: \"left_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.left_par === 1 ? \"(\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Column\"),\r\n colId: \"column_name\",\r\n field: \"column_name\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Operator\"),\r\n colId: \"operator\",\r\n field: \"operator\",\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return getAdvancedFilterOperatorString(data.operator);\r\n },\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Value\"),\r\n colId: \"value\",\r\n field: \"value\",\r\n initialWidth: 160,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n const columnDefinition = this.props.columnDefinitions.find(value => value.columnName === data.column_name);\r\n if (columnDefinition) {\r\n return AdvancedFilterUtils.humanizeCondition(columnDefinition, false, data);\r\n }\r\n return \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: \")\",\r\n colId: \"right_par\",\r\n field: \"right_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.right_par === 1 ? \")\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Logical Operator\"),\r\n colId: \"logical_operator\",\r\n field: \"logical_operator\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }\r\n ]\r\n }\r\n\r\n return this.initialColumnDefs;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedCondition: selectedRows[0]});\r\n } else {\r\n this.setState({selectedCondition: null});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n private onAddNewCondition() {\r\n const filterConditions = this.props.filterConditions;\r\n const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;\r\n const newCondition = AdvancedFilterUtils.createNewCondition(newId, this.props.columnDefinitions[0]);\r\n\r\n filterConditions.push(newCondition);\r\n this.setState({selectedCondition: newCondition});\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // add new expression to grid and preselect new row\r\n this.gridApi?.applyTransaction({add: [newCondition]});\r\n const rowNode = this.gridApi?.getRowNode(newCondition.id.toString());\r\n rowNode?.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n\r\n renderToolbarButtons() {\r\n const operationsDisabled = this.state.loading;\r\n\r\n return <>\r\n <Button\r\n title={i18n(\"New Condition\")}\r\n disabled={operationsDisabled}\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/>\r\n </Button>\r\n <Button\r\n title={i18n(\"Remove Expression\")}\r\n disabled={operationsDisabled || this.state.selectedCondition === null}\r\n onClick={() => {\r\n const conditionToRemove = this.state.selectedCondition;\r\n if (conditionToRemove) {\r\n let filterConditions = this.props.filterConditions;\r\n filterConditions = filterConditions.filter(value => value.id !== conditionToRemove.id);\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // remove expression from grid\r\n this.gridApi?.applyTransaction({remove: [conditionToRemove]});\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n </>\r\n }\r\n\r\n renderDetailPanel() {\r\n if (this.state.selectedCondition) {\r\n return (\r\n <AdvancedFilterConditionDetailPanel\r\n editedCondition={this.state.selectedCondition}\r\n columnDefinitions={this.props.columnDefinitions}\r\n onClose={() => this.dataGrid?.showDetailPanel(false)}\r\n onNextRecord={() => this.dataGrid?.selectNextPreviousRecord(false)}\r\n onPrevRecord={() => this.dataGrid?.selectNextPreviousRecord(true)}\r\n onChange={editedCondition => {\r\n this.setState({selectedCondition: editedCondition});\r\n this.gridApi?.applyTransaction({update: [editedCondition]});\r\n this.props.onChange(this.props.filterConditions);\r\n }}\r\n />\r\n );\r\n }\r\n return <div/>;\r\n }\r\n\r\n renderControlPanel() {\r\n if (this.props.isParenthesisError) {\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"center\", padding: \"0px 12px 8px\"}}>\r\n <ColorTag icon={<ExclamationCircleOutlined/>} color=\"error\">\r\n {i18n(\"Parentheses match error\")}\r\n </ColorTag>\r\n </div>\r\n );\r\n }\r\n\r\n return <div/>;\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{position: \"relative\", width: \"100%\", height: \"100%\"}}>\r\n <ExtendedDataGrid<AdvancedFilterCondition>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n columnDefs={this.getInitialColumnDefs()}\r\n onLoadData={callback => callback(this.props.filterConditions.length)}\r\n rowData={this.props.filterConditions}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n onSelectionChanged={this.onSelectionChanged}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({selectedCondition: event.data});\r\n this.dataGrid?.showDetailPanel(true);\r\n }}\r\n detailPanel={{\r\n defaultWidth: 400,\r\n renderer: this.renderDetailPanel\r\n }}\r\n suppressMovableColumns\r\n rowDragManaged\r\n animateRows\r\n onRowDragEnd={(event: RowDragEndEvent) => {\r\n const draggedCondition = event.node.data as AdvancedFilterCondition;\r\n const filterConditions = this.props.filterConditions;\r\n\r\n const toIndex = event.overIndex !== -1 ? event.overIndex : filterConditions.length;\r\n const fromIndex = filterConditions.findIndex(value => value.id === draggedCondition.id);\r\n\r\n filterConditions.splice(toIndex, 0, filterConditions.splice(fromIndex, 1)[0]);\r\n\r\n this.props.onChange(filterConditions);\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <div>\r\n <Button\r\n type=\"primary\"\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/> {i18n(\"Add Condition\")}\r\n </Button>\r\n </div>\r\n }\r\n getRowStyle={params => {\r\n const data = params.data as AdvancedFilterCondition;\r\n if (data._errors && data._errors.length > 0) {\r\n return {color: \"#d4380d\", background: \"#fff2e8\"}\r\n }\r\n return;\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"advancedFilterConditionListPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {AdvancedFilterCondition, getAdvancedFilterOperatorString} from \"../../../../api/advancedFilterApi\";\r\nimport {GridApi, GridReadyEvent, RowDragEndEvent, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Button} from \"antd\";\r\nimport {CloseCircleOutlined, ExclamationCircleOutlined, PlusCircleOutlined} from \"@ant-design/icons\";\r\nimport AdvancedFilterConditionDetailPanel from \"./advancedFilterConditionDetailPanel\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"../advancedFilterUtils\";\r\nimport ColorTag from \"../../colorTag/colorTag\";\r\n\r\ninterface AdvancedFilterConditionListPanelProps {\r\n filterConditions: AdvancedFilterCondition[]\r\n columnDefinitions: AdvancedFilterColumnDefinition[]\r\n isParenthesisError: boolean\r\n\r\n onChange(filterConditions: AdvancedFilterCondition[]): void\r\n}\r\n\r\ninterface AdvancedFilterConditionListPanelState {\r\n selectedCondition: AdvancedFilterCondition | null\r\n loading: boolean\r\n}\r\n\r\nexport default class AdvancedFilterConditionListPanel extends React.Component<AdvancedFilterConditionListPanelProps, AdvancedFilterConditionListPanelState> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private dataGrid: ExtendedDataGrid<AdvancedFilterCondition> | null = null;\r\n private gridApi?: GridApi;\r\n\r\n constructor(props: Readonly<AdvancedFilterConditionListPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n selectedCondition: null,\r\n loading: false,\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onAddNewCondition = this.onAddNewCondition.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.filterConditions.length === 0) {\r\n this.onAddNewCondition();\r\n }\r\n }\r\n\r\n refreshData() {\r\n this.gridApi?.applyTransaction({update: this.props.filterConditions});\r\n\r\n const selectedRows = this.gridApi?.getSelectedRows();\r\n this.setState({selectedCondition: selectedRows?.[0] ?? null});\r\n }\r\n\r\n getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n {\r\n headerName: i18n(\"Negation\"),\r\n colId: \"not_flag\",\r\n field: \"not_flag\",\r\n initialWidth: 80,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.not_flag === 1 ? \"NOT\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n rowDrag: true,\r\n }, {\r\n headerName: \"(\",\r\n colId: \"left_par\",\r\n field: \"left_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.left_par === 1 ? \"(\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Column\"),\r\n colId: \"column_name\",\r\n field: \"column_name\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Operator\"),\r\n colId: \"operator\",\r\n field: \"operator\",\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return getAdvancedFilterOperatorString(data.operator);\r\n },\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Value\"),\r\n colId: \"value\",\r\n field: \"value\",\r\n initialWidth: 160,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n const columnDefinition = this.props.columnDefinitions.find(value => value.columnName === data.column_name);\r\n if (columnDefinition) {\r\n return AdvancedFilterUtils.humanizeCondition(columnDefinition, false, data);\r\n }\r\n return \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: \")\",\r\n colId: \"right_par\",\r\n field: \"right_par\",\r\n initialWidth: 44,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as AdvancedFilterCondition;\r\n return data.right_par === 1 ? \")\" : \"\";\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }, {\r\n headerName: i18n(\"Logical Operator\"),\r\n colId: \"logical_operator\",\r\n field: \"logical_operator\",\r\n initialWidth: 120,\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }\r\n ]\r\n }\r\n\r\n return this.initialColumnDefs;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedCondition: selectedRows[0]});\r\n } else {\r\n this.setState({selectedCondition: null});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n private onAddNewCondition() {\r\n const filterConditions = this.props.filterConditions;\r\n const newId = filterConditions.length === 0 ? 0 : Math.max(...filterConditions.map(value => value.id)) + 1;\r\n const newCondition = AdvancedFilterUtils.newCondition(this.props.columnDefinitions[0]);\r\n newCondition.id = newId;\r\n\r\n filterConditions.push(newCondition);\r\n this.setState({selectedCondition: newCondition});\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // add new expression to grid and preselect new row\r\n this.gridApi?.applyTransaction({add: [newCondition]});\r\n const rowNode = this.gridApi?.getRowNode(newCondition.id.toString());\r\n rowNode?.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n\r\n renderToolbarButtons() {\r\n const operationsDisabled = this.state.loading;\r\n\r\n return <>\r\n <Button\r\n title={i18n(\"New Condition\")}\r\n disabled={operationsDisabled}\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/>\r\n </Button>\r\n <Button\r\n title={i18n(\"Remove Expression\")}\r\n disabled={operationsDisabled || this.state.selectedCondition === null}\r\n onClick={() => {\r\n const conditionToRemove = this.state.selectedCondition;\r\n if (conditionToRemove) {\r\n let filterConditions = this.props.filterConditions;\r\n filterConditions = filterConditions.filter(value => value.id !== conditionToRemove.id);\r\n\r\n this.props.onChange(filterConditions);\r\n\r\n // remove expression from grid\r\n this.gridApi?.applyTransaction({remove: [conditionToRemove]});\r\n\r\n // show conditionList panel\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n </>\r\n }\r\n\r\n renderDetailPanel() {\r\n if (this.state.selectedCondition) {\r\n return (\r\n <AdvancedFilterConditionDetailPanel\r\n editedCondition={this.state.selectedCondition}\r\n columnDefinitions={this.props.columnDefinitions}\r\n onClose={() => this.dataGrid?.showDetailPanel(false)}\r\n onNextRecord={() => this.dataGrid?.selectNextPreviousRecord(false)}\r\n onPrevRecord={() => this.dataGrid?.selectNextPreviousRecord(true)}\r\n onChange={editedCondition => {\r\n this.setState({selectedCondition: editedCondition});\r\n this.gridApi?.applyTransaction({update: [editedCondition]});\r\n this.props.onChange(this.props.filterConditions);\r\n }}\r\n />\r\n );\r\n }\r\n return <div/>;\r\n }\r\n\r\n renderControlPanel() {\r\n if (this.props.isParenthesisError) {\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"center\", padding: \"0px 12px 8px\"}}>\r\n <ColorTag icon={<ExclamationCircleOutlined/>} color=\"error\">\r\n {i18n(\"Parentheses match error\")}\r\n </ColorTag>\r\n </div>\r\n );\r\n }\r\n\r\n return <div/>;\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{position: \"relative\", width: \"100%\", height: \"100%\"}}>\r\n <ExtendedDataGrid<AdvancedFilterCondition>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n columnDefs={this.getInitialColumnDefs()}\r\n onLoadData={callback => callback(this.props.filterConditions.length)}\r\n rowData={this.props.filterConditions}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n onSelectionChanged={this.onSelectionChanged}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({selectedCondition: event.data});\r\n this.dataGrid?.showDetailPanel(true);\r\n }}\r\n detailPanel={{\r\n defaultWidth: 400,\r\n renderer: this.renderDetailPanel\r\n }}\r\n suppressMovableColumns\r\n rowDragManaged\r\n animateRows\r\n onRowDragEnd={(event: RowDragEndEvent) => {\r\n const draggedCondition = event.node.data as AdvancedFilterCondition;\r\n const filterConditions = this.props.filterConditions;\r\n\r\n const toIndex = event.overIndex !== -1 ? event.overIndex : filterConditions.length;\r\n const fromIndex = filterConditions.findIndex(value => value.id === draggedCondition.id);\r\n\r\n filterConditions.splice(toIndex, 0, filterConditions.splice(fromIndex, 1)[0]);\r\n\r\n this.props.onChange(filterConditions);\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <div>\r\n <Button\r\n type=\"primary\"\r\n onClick={this.onAddNewCondition}\r\n >\r\n <PlusCircleOutlined/> {i18n(\"Add Condition\")}\r\n </Button>\r\n </div>\r\n }\r\n getRowStyle={params => {\r\n const data = params.data as AdvancedFilterCondition;\r\n if (data._errors && data._errors.length > 0) {\r\n return {color: \"#d4380d\", background: \"#fff2e8\"}\r\n }\r\n return;\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import AbstractSelectModalDialog, { AbstractSelectModalDialogProps } from "../../select/abstractSelectModalDialog";
3
3
  import { AdvancedFilterEntity } from "../../../../api/advancedFilterApi";
4
4
  import { DataGridColDef } from "d2coreui/components/grid/dataGrid";
5
+ import { AdvancedFilterConfig } from "../advancedFilteredGrid";
5
6
  interface Props extends AbstractSelectModalDialogProps<AdvancedFilterEntity> {
6
7
  }
7
8
  export default class AdvancedFilterListModalDialog extends AbstractSelectModalDialog<AdvancedFilterEntity, Props> {
@@ -10,6 +11,6 @@ export default class AdvancedFilterListModalDialog extends AbstractSelectModalDi
10
11
  getIdColumnName(): string;
11
12
  getTitle(): string;
12
13
  protected getInitialColumnDefs(): DataGridColDef[];
13
- getAdvancedFilterListName(): undefined;
14
+ getAdvancedFilterConfig(): AdvancedFilterConfig | undefined;
14
15
  }
15
16
  export {};
@@ -41,7 +41,7 @@ export default class AdvancedFilterListModalDialog extends AbstractSelectModalDi
41
41
  getNameColumn(undefined, { flex: 1 }),
42
42
  ];
43
43
  }
44
- getAdvancedFilterListName() {
44
+ getAdvancedFilterConfig() {
45
45
  return undefined;
46
46
  }
47
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"advancedFilterListModalDialog.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,yBAA2D,MAAM,wCAAwC,CAAC;AAGjH,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAC,WAAW,EAAkB,MAAM,uCAAuC,CAAC;AACnF,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAC,WAAW,EAAC,MAAM,qCAAqC,CAAC;AAKhE,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,yBAAsD;IAC7G,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAES,oBAAoB;QAC1B,OAAO,CACH,oBAAC,MAAM,IACH,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,EAC5B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE;gBACV,WAAW,CAAC,MAAM,CAAC;oBACf,IAAI,UAAwB;oBAC5B,KAAK,EAAE,8BAAM,KAAK,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,IACjC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CACxD;oBACX,IAAI,EAAE,oBAAC,cAAc,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,GAAG;oBACpD,IAAI,EAAE,GAAG,EAAE;wBACP,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;4BAC1C,MAAO,IAAI,CAAC,KAAK,CAAC,GAAyB,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBAC9E,CAAC,CAAC,CAAC;wBACH,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,CAAC;oBACzC,CAAC;iBACJ,CAAC,CAAA;YACN,CAAC;YAED,oBAAC,mBAAmB,OAAE,CACjB,CACZ,CAAC;IACN,CAAC;IAED,eAAe;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAES,oBAAoB;QAC1B,OAAO;YACH,WAAW,EAAE;YACb,aAAa,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC;SACtC,CAAC;IACN,CAAC;IAED,yBAAyB;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport AbstractSelectModalDialog, {AbstractSelectModalDialogProps} from \"../../select/abstractSelectModalDialog\";\r\nimport {AdvancedFilterApi, AdvancedFilterEntity} from \"../../../../api/advancedFilterApi\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {Button} from \"antd\";\r\nimport {CloseCircleOutlined, DeleteOutlined} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {getIDColumn, getNameColumn} from \"../../grid/standardColumns\";\r\nimport {ERROR_COLOR} from \"../../../../api/constants/constants\";\r\n\r\ninterface Props extends AbstractSelectModalDialogProps<AdvancedFilterEntity> {\r\n}\r\n\r\nexport default class AdvancedFilterListModalDialog extends AbstractSelectModalDialog<AdvancedFilterEntity, Props> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n ...this.initialState,\r\n }\r\n }\r\n\r\n protected renderToolbarButtons() {\r\n return (\r\n <Button\r\n title={i18n(\"Delete Filter\")}\r\n disabled={this.state.selectedData.length === 0}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {i18n(\"Remove %n records?\", this.state.selectedData.length)}\r\n </span>,\r\n icon: <DeleteOutlined style={{color: ERROR_COLOR}}/>,\r\n onOk: () => {\r\n this.state.selectedData.forEach(async value => {\r\n await (this.props.api as AdvancedFilterApi).deleteFilter(value.id_filter);\r\n });\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n })\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n getIdColumnName(): string {\r\n return \"\";\r\n }\r\n\r\n getTitle(): string {\r\n return i18n(\"Filter List\");\r\n }\r\n\r\n protected getInitialColumnDefs(): DataGridColDef[] {\r\n return [\r\n getIDColumn(),\r\n getNameColumn(undefined, {flex: 1}),\r\n ];\r\n }\r\n\r\n getAdvancedFilterListName(): undefined {\r\n return undefined;\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"advancedFilterListModalDialog.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,yBAA2D,MAAM,wCAAwC,CAAC;AAGjH,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAC,WAAW,EAAkB,MAAM,uCAAuC,CAAC;AACnF,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAC,WAAW,EAAC,MAAM,qCAAqC,CAAC;AAMhE,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,yBAAsD;IAC7G,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAES,oBAAoB;QAC1B,OAAO,CACH,oBAAC,MAAM,IACH,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,EAC5B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE;gBACV,WAAW,CAAC,MAAM,CAAC;oBACf,IAAI,UAAwB;oBAC5B,KAAK,EAAE,8BAAM,KAAK,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,IACjC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CACxD;oBACX,IAAI,EAAE,oBAAC,cAAc,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,GAAG;oBACpD,IAAI,EAAE,GAAG,EAAE;wBACP,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;4BAC1C,MAAO,IAAI,CAAC,KAAK,CAAC,GAAyB,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBAC9E,CAAC,CAAC,CAAC;wBACH,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,CAAC;oBACzC,CAAC;iBACJ,CAAC,CAAA;YACN,CAAC;YAED,oBAAC,mBAAmB,OAAE,CACjB,CACZ,CAAC;IACN,CAAC;IAED,eAAe;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAES,oBAAoB;QAC1B,OAAO;YACH,WAAW,EAAE;YACb,aAAa,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC;SACtC,CAAC;IACN,CAAC;IAED,uBAAuB;QACnB,OAAO,SAAS,CAAC;IACrB,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport AbstractSelectModalDialog, {AbstractSelectModalDialogProps} from \"../../select/abstractSelectModalDialog\";\r\nimport {AdvancedFilterApi, AdvancedFilterEntity} from \"../../../../api/advancedFilterApi\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {Button} from \"antd\";\r\nimport {CloseCircleOutlined, DeleteOutlined} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {getIDColumn, getNameColumn} from \"../../grid/standardColumns\";\r\nimport {ERROR_COLOR} from \"../../../../api/constants/constants\";\r\nimport {AdvancedFilterConfig} from \"../advancedFilteredGrid\";\r\n\r\ninterface Props extends AbstractSelectModalDialogProps<AdvancedFilterEntity> {\r\n}\r\n\r\nexport default class AdvancedFilterListModalDialog extends AbstractSelectModalDialog<AdvancedFilterEntity, Props> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n ...this.initialState,\r\n }\r\n }\r\n\r\n protected renderToolbarButtons() {\r\n return (\r\n <Button\r\n title={i18n(\"Delete Filter\")}\r\n disabled={this.state.selectedData.length === 0}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {i18n(\"Remove %n records?\", this.state.selectedData.length)}\r\n </span>,\r\n icon: <DeleteOutlined style={{color: ERROR_COLOR}}/>,\r\n onOk: () => {\r\n this.state.selectedData.forEach(async value => {\r\n await (this.props.api as AdvancedFilterApi).deleteFilter(value.id_filter);\r\n });\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n })\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n getIdColumnName(): string {\r\n return \"\";\r\n }\r\n\r\n getTitle(): string {\r\n return i18n(\"Filter List\");\r\n }\r\n\r\n protected getInitialColumnDefs(): DataGridColDef[] {\r\n return [\r\n getIDColumn(),\r\n getNameColumn(undefined, {flex: 1}),\r\n ];\r\n }\r\n\r\n getAdvancedFilterConfig(): AdvancedFilterConfig | undefined {\r\n return undefined;\r\n }\r\n\r\n}"]}
@@ -1,13 +1,13 @@
1
1
  import AbstractSelectModalDialog, { AbstractSelectModalDialogProps } from "../../../select/abstractSelectModalDialog";
2
2
  import { EdaVector } from "../../../../../api/edaApi";
3
3
  import { GeneralEntityColumn } from "../../../advancedFilter/advancedFilterColumnDefinitions";
4
- import { AdvancedFilterListNameEnum } from "../../../advancedFilter/advancedFilterUtils";
4
+ import { AdvancedFilterConfig } from "../../../advancedFilter/advancedFilteredGrid";
5
5
  interface Props extends AbstractSelectModalDialogProps<EdaVector> {
6
6
  }
7
7
  export default class EdaVectorSelectModalDialog extends AbstractSelectModalDialog<EdaVector, Props> {
8
8
  constructor(props: Readonly<Props>);
9
9
  getIdColumnName(): GeneralEntityColumn;
10
10
  getTitle(): string;
11
- getAdvancedFilterListName(): AdvancedFilterListNameEnum;
11
+ getAdvancedFilterConfig(): AdvancedFilterConfig;
12
12
  }
13
13
  export {};
@@ -15,8 +15,11 @@ export default class EdaVectorSelectModalDialog extends AbstractSelectModalDialo
15
15
  getTitle() {
16
16
  return i18n("Vector List");
17
17
  }
18
- getAdvancedFilterListName() {
19
- return AdvancedFilterListNameEnum.EDA_VECTOR_SELECT_LIST;
18
+ getAdvancedFilterConfig() {
19
+ return {
20
+ version: 1,
21
+ listName: AdvancedFilterListNameEnum.EDA_VECTOR_SELECT_LIST
22
+ };
20
23
  }
21
24
  }
22
25
  //# sourceMappingURL=edaVectorSelectModalDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edaVectorSelectModalDialog.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,yBAA2D,MAAM,2CAA2C,CAAC;AAEpH,OAAO,EAAC,mBAAmB,EAAC,MAAM,yDAAyD,CAAC;AAC5F,OAAO,EAAC,0BAA0B,EAAC,MAAM,6CAA6C,CAAC;AACvF,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAKpC,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,yBAA2C;IAC/F,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAED,eAAe;QACX,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,yBAAyB;QACrB,OAAO,0BAA0B,CAAC,sBAAsB,CAAC;IAC7D,CAAC;CAEJ","sourcesContent":["import AbstractSelectModalDialog, {AbstractSelectModalDialogProps} from \"../../../select/abstractSelectModalDialog\";\r\nimport {EdaVector} from \"../../../../../api/edaApi\";\r\nimport {GeneralEntityColumn} from \"../../../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport {AdvancedFilterListNameEnum} from \"../../../advancedFilter/advancedFilterUtils\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\n\r\ninterface Props extends AbstractSelectModalDialogProps<EdaVector> {\r\n}\r\n\r\nexport default class EdaVectorSelectModalDialog extends AbstractSelectModalDialog<EdaVector, Props> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n ...this.initialState,\r\n }\r\n }\r\n\r\n getIdColumnName(): GeneralEntityColumn {\r\n return GeneralEntityColumn.ID_VEKTOR;\r\n }\r\n\r\n getTitle(): string {\r\n return i18n(\"Vector List\");\r\n }\r\n\r\n getAdvancedFilterListName(): AdvancedFilterListNameEnum {\r\n return AdvancedFilterListNameEnum.EDA_VECTOR_SELECT_LIST;\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"edaVectorSelectModalDialog.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,yBAA2D,MAAM,2CAA2C,CAAC;AAEpH,OAAO,EAAC,mBAAmB,EAAC,MAAM,yDAAyD,CAAC;AAC5F,OAAO,EAAC,0BAA0B,EAAC,MAAM,6CAA6C,CAAC;AACvF,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAMpC,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,yBAA2C;IAC/F,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAED,eAAe;QACX,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,uBAAuB;QACnB,OAAO;YACH,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,0BAA0B,CAAC,sBAAsB;SAC9D,CAAA;IACL,CAAC;CAEJ","sourcesContent":["import AbstractSelectModalDialog, {AbstractSelectModalDialogProps} from \"../../../select/abstractSelectModalDialog\";\r\nimport {EdaVector} from \"../../../../../api/edaApi\";\r\nimport {GeneralEntityColumn} from \"../../../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport {AdvancedFilterListNameEnum} from \"../../../advancedFilter/advancedFilterUtils\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {AdvancedFilterConfig} from \"../../../advancedFilter/advancedFilteredGrid\";\r\n\r\ninterface Props extends AbstractSelectModalDialogProps<EdaVector> {\r\n}\r\n\r\nexport default class EdaVectorSelectModalDialog extends AbstractSelectModalDialog<EdaVector, Props> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n ...this.initialState,\r\n }\r\n }\r\n\r\n getIdColumnName(): GeneralEntityColumn {\r\n return GeneralEntityColumn.ID_VEKTOR;\r\n }\r\n\r\n getTitle(): string {\r\n return i18n(\"Vector List\");\r\n }\r\n\r\n getAdvancedFilterConfig(): AdvancedFilterConfig {\r\n return {\r\n version: 1,\r\n listName: AdvancedFilterListNameEnum.EDA_VECTOR_SELECT_LIST\r\n }\r\n }\r\n\r\n}"]}
@@ -46,13 +46,13 @@ export default class AbstractSelect extends React.Component {
46
46
  }
47
47
  }
48
48
  getFilterConditionForCode(searchString) {
49
- return AdvancedFilterUtils.createNewCondition(-1, getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), {
49
+ return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), {
50
50
  operator: AdvancedFilterOperator.LIKE,
51
51
  value: `%${searchString ?? ""}%`,
52
52
  });
53
53
  }
54
54
  getFilterConditionForName(searchString) {
55
- return AdvancedFilterUtils.createNewCondition(-2, getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), {
55
+ return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), {
56
56
  operator: AdvancedFilterOperator.LIKE,
57
57
  value: `%${searchString ?? ""}%`,
58
58
  });
@@ -1 +1 @@
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} 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> {\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.createNewCondition(-1, 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.createNewCondition(-2, 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 selectedItem = this.props.selectedItem;\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 (!this.props.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={!this.props.disabled && hasDetailPanel ? css.styles.abstractSelectWithDetail : undefined}\r\n disabled={this.props.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 this.props.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 this.props.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 >\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} 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> {\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 selectedItem = this.props.selectedItem;\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 (!this.props.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={!this.props.disabled && hasDetailPanel ? css.styles.abstractSelectWithDetail : undefined}\r\n disabled={this.props.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 this.props.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 this.props.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 >\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}"]}
@@ -64,9 +64,9 @@ class AbstractSelectModalDialog extends AdvancedFilteredGrid {
64
64
  return this.initialColumnDefs;
65
65
  }
66
66
  renderToolbarButtons() {
67
- const advancedFilterListName = this.getAdvancedFilterListName();
68
- if (advancedFilterListName) {
69
- return (React.createElement(AdvancedFilterButton, { advancedFilterApi: this.props.advancedFilterApi, listName: advancedFilterListName, columnDefinitions: this.getAdvancedFilterColumnDefinitions(), filterConditions: this.state.filterConditions, onApplyFilter: this.onApplyFilter }));
67
+ const advancedFilterConfig = this.getAdvancedFilterConfig();
68
+ if (advancedFilterConfig) {
69
+ return (React.createElement(AdvancedFilterButton, { advancedFilterApi: this.props.advancedFilterApi, listName: advancedFilterConfig.listName, columnDefinitions: this.getAdvancedFilterColumnDefinitions(), filterConditions: this.state.filterConditions, onApplyFilter: this.onApplyFilter }));
70
70
  }
71
71
  return undefined;
72
72
  }
@@ -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 advancedFilterListName = this.getAdvancedFilterListName();\r\n\r\n if (advancedFilterListName) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterListName}\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, 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}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d2aura",
3
- "version": "23.0.11",
3
+ "version": "23.0.12",
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.14",
45
- "d2coreui": "23.0.20",
45
+ "d2coreui": "23.0.21",
46
46
  "d2jsapi": "21.0.30",
47
47
  "echarts": "5.5.1",
48
48
  "echarts-for-react": "3.0.2",