d2aura 23.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/abstractApi.d.ts +21 -0
- package/api/abstractApi.js +56 -0
- package/api/abstractApi.js.map +1 -0
- package/api/abstractEntityApi.d.ts +37 -0
- package/api/abstractEntityApi.js +145 -0
- package/api/abstractEntityApi.js.map +1 -0
- package/api/advancedFilterApi.d.ts +56 -0
- package/api/advancedFilterApi.js +108 -0
- package/api/advancedFilterApi.js.map +1 -0
- package/api/archiveApi.d.ts +14 -0
- package/api/archiveApi.js +25 -0
- package/api/archiveApi.js.map +1 -0
- package/api/comparison/entityComparisonUtils.d.ts +4 -0
- package/api/comparison/entityComparisonUtils.js +15 -0
- package/api/comparison/entityComparisonUtils.js.map +1 -0
- package/api/constants/constants.d.ts +5 -0
- package/api/constants/constants.js +6 -0
- package/api/constants/constants.js.map +1 -0
- package/api/constants/d2ChartConstants.d.ts +5 -0
- package/api/constants/d2ChartConstants.js +6 -0
- package/api/constants/d2ChartConstants.js.map +1 -0
- package/api/edaApi.d.ts +36 -0
- package/api/edaApi.js +109 -0
- package/api/edaApi.js.map +1 -0
- package/api/impl/errorHandling.d.ts +1 -0
- package/api/impl/errorHandling.js +72 -0
- package/api/impl/errorHandling.js.map +1 -0
- package/api/impl/utils/reportError.d.ts +2 -0
- package/api/impl/utils/reportError.js +157 -0
- package/api/impl/utils/reportError.js.map +1 -0
- package/api/impl/utils/reportServiceMessage.d.ts +1 -0
- package/api/impl/utils/reportServiceMessage.js +29 -0
- package/api/impl/utils/reportServiceMessage.js.map +1 -0
- package/api/types/accessRight.d.ts +5 -0
- package/api/types/accessRight.js +7 -0
- package/api/types/accessRight.js.map +1 -0
- package/api/types/advancedFilter.d.ts +22 -0
- package/api/types/advancedFilter.js +16 -0
- package/api/types/advancedFilter.js.map +1 -0
- package/api/types/apiResult.d.ts +5 -0
- package/api/types/apiResult.js +2 -0
- package/api/types/apiResult.js.map +1 -0
- package/api/types/auditableEntity.d.ts +10 -0
- package/api/types/auditableEntity.js +2 -0
- package/api/types/auditableEntity.js.map +1 -0
- package/api/types/d2ArTypes.d.ts +5 -0
- package/api/types/d2ArTypes.js +2 -0
- package/api/types/d2ArTypes.js.map +1 -0
- package/api/types/d2ChartTypes.d.ts +26 -0
- package/api/types/d2ChartTypes.js +7 -0
- package/api/types/d2ChartTypes.js.map +1 -0
- package/api/types/dbBoolean.d.ts +5 -0
- package/api/types/dbBoolean.js +15 -0
- package/api/types/dbBoolean.js.map +1 -0
- package/api/types/entity.d.ts +7 -0
- package/api/types/entity.js +2 -0
- package/api/types/entity.js.map +1 -0
- package/api/types/entityListResult.d.ts +4 -0
- package/api/types/entityListResult.js +2 -0
- package/api/types/entityListResult.js.map +1 -0
- package/api/types/entityResult.d.ts +4 -0
- package/api/types/entityResult.js +2 -0
- package/api/types/entityResult.js.map +1 -0
- package/api/types/nounGender.d.ts +5 -0
- package/api/types/nounGender.js +7 -0
- package/api/types/nounGender.js.map +1 -0
- package/api/util/d2Boolean.d.ts +8 -0
- package/api/util/d2Boolean.js +14 -0
- package/api/util/d2Boolean.js.map +1 -0
- package/api/util/d2ChartUtils.d.ts +7 -0
- package/api/util/d2ChartUtils.js +62 -0
- package/api/util/d2ChartUtils.js.map +1 -0
- package/api/util/edaUtils.d.ts +5 -0
- package/api/util/edaUtils.js +33 -0
- package/api/util/edaUtils.js.map +1 -0
- package/api/util/fileUtils.d.ts +3 -0
- package/api/util/fileUtils.js +22 -0
- package/api/util/fileUtils.js.map +1 -0
- package/api/validation/abstractEntityValidationUtils.d.ts +8 -0
- package/api/validation/abstractEntityValidationUtils.js +24 -0
- package/api/validation/abstractEntityValidationUtils.js.map +1 -0
- package/core/types/panelConfiguration.d.ts +3 -0
- package/core/types/panelConfiguration.js +2 -0
- package/core/types/panelConfiguration.js.map +1 -0
- package/core/util/humanizeDuration.d.ts +1 -0
- package/core/util/humanizeDuration.js +24 -0
- package/core/util/humanizeDuration.js.map +1 -0
- package/core/util/isStringEmpty.d.ts +1 -0
- package/core/util/isStringEmpty.js +4 -0
- package/core/util/isStringEmpty.js.map +1 -0
- package/core/util/locationUtils.d.ts +10 -0
- package/core/util/locationUtils.js +34 -0
- package/core/util/locationUtils.js.map +1 -0
- package/coreui/abstractApp.d.ts +22 -0
- package/coreui/abstractApp.js +49 -0
- package/coreui/abstractApp.js.map +1 -0
- package/coreui/abstractListPanel.d.ts +88 -0
- package/coreui/abstractListPanel.js +426 -0
- package/coreui/abstractListPanel.js.map +1 -0
- package/coreui/abstractPage.d.ts +18 -0
- package/coreui/abstractPage.js +104 -0
- package/coreui/abstractPage.js.map +1 -0
- package/coreui/auth/loginForm.d.ts +27 -0
- package/coreui/auth/loginForm.js +47 -0
- package/coreui/auth/loginForm.js.map +1 -0
- package/coreui/auth/logoutButton.d.ts +9 -0
- package/coreui/auth/logoutButton.js +23 -0
- package/coreui/auth/logoutButton.js.map +1 -0
- package/coreui/components/about/aboutModalDialog.d.ts +30 -0
- package/coreui/components/about/aboutModalDialog.js +96 -0
- package/coreui/components/about/aboutModalDialog.js.map +1 -0
- package/coreui/components/advancedFilter/advancedFilterButton.d.ts +26 -0
- package/coreui/components/advancedFilter/advancedFilterButton.js +115 -0
- package/coreui/components/advancedFilter/advancedFilterButton.js.map +1 -0
- package/coreui/components/advancedFilter/advancedFilterColumnDefinitions.d.ts +18 -0
- package/coreui/components/advancedFilter/advancedFilterColumnDefinitions.js +39 -0
- package/coreui/components/advancedFilter/advancedFilterColumnDefinitions.js.map +1 -0
- package/coreui/components/advancedFilter/advancedFilterUtils.d.ts +12 -0
- package/coreui/components/advancedFilter/advancedFilterUtils.js +101 -0
- package/coreui/components/advancedFilter/advancedFilterUtils.js.map +1 -0
- package/coreui/components/advancedFilter/advancedFilterValidationUtils.d.ts +11 -0
- package/coreui/components/advancedFilter/advancedFilterValidationUtils.js +59 -0
- package/coreui/components/advancedFilter/advancedFilterValidationUtils.js.map +1 -0
- package/coreui/components/advancedFilter/advancedFilteredGrid.d.ts +55 -0
- package/coreui/components/advancedFilter/advancedFilteredGrid.js +165 -0
- package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -0
- package/coreui/components/advancedFilter/components/advancedFilterOperatorSelect.d.ts +14 -0
- package/coreui/components/advancedFilter/components/advancedFilterOperatorSelect.js +35 -0
- package/coreui/components/advancedFilter/components/advancedFilterOperatorSelect.js.map +1 -0
- package/coreui/components/advancedFilter/components/advancedFilterValueInput.d.ts +23 -0
- package/coreui/components/advancedFilter/components/advancedFilterValueInput.js +148 -0
- package/coreui/components/advancedFilter/components/advancedFilterValueInput.js.map +1 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.d.ts +18 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js +82 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js.map +1 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.d.ts +23 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.js +58 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.js.map +1 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.d.ts +31 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js +211 -0
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map +1 -0
- package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.d.ts +15 -0
- package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.js +48 -0
- package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.js.map +1 -0
- package/coreui/components/advancedFilter/filterSave/filterSaveModalDialog.d.ts +18 -0
- package/coreui/components/advancedFilter/filterSave/filterSaveModalDialog.js +37 -0
- package/coreui/components/advancedFilter/filterSave/filterSaveModalDialog.js.map +1 -0
- package/coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.d.ts +26 -0
- package/coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.js +81 -0
- package/coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.js.map +1 -0
- package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.d.ts +32 -0
- package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.js +102 -0
- package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.js.map +1 -0
- package/coreui/components/changePasswordModalDialog/changePasswordModalDialog.d.ts +23 -0
- package/coreui/components/changePasswordModalDialog/changePasswordModalDialog.js +83 -0
- package/coreui/components/changePasswordModalDialog/changePasswordModalDialog.js.map +1 -0
- package/coreui/components/colorTag/colorTag.d.ts +9 -0
- package/coreui/components/colorTag/colorTag.js +17 -0
- package/coreui/components/colorTag/colorTag.js.map +1 -0
- package/coreui/components/d2Chart/d2ChartOptions.d.ts +3 -0
- package/coreui/components/d2Chart/d2ChartOptions.js +73 -0
- package/coreui/components/d2Chart/d2ChartOptions.js.map +1 -0
- package/coreui/components/d2Chart/d2ChartPanel.d.ts +48 -0
- package/coreui/components/d2Chart/d2ChartPanel.js +325 -0
- package/coreui/components/d2Chart/d2ChartPanel.js.map +1 -0
- package/coreui/components/d2Chart/d2ChartTablePanel.d.ts +31 -0
- package/coreui/components/d2Chart/d2ChartTablePanel.js +121 -0
- package/coreui/components/d2Chart/d2ChartTablePanel.js.map +1 -0
- package/coreui/components/d2Chart/d2ChartToolboxPanel.d.ts +27 -0
- package/coreui/components/d2Chart/d2ChartToolboxPanel.js +116 -0
- package/coreui/components/d2Chart/d2ChartToolboxPanel.js.map +1 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.d.ts +51 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js +169 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js.map +1 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.d.ts +32 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.js +87 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.js.map +1 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractVectorList.d.ts +24 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractVectorList.js +98 -0
- package/coreui/components/edaManager/abstract/edaManagerAbstractVectorList.js.map +1 -0
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.d.ts +19 -0
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js +52 -0
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js.map +1 -0
- package/coreui/components/edaManager/compactPanel/initialLayout.d.ts +2 -0
- package/coreui/components/edaManager/compactPanel/initialLayout.js +26 -0
- package/coreui/components/edaManager/compactPanel/initialLayout.js.map +1 -0
- package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.d.ts +38 -0
- package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js +182 -0
- package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js.map +1 -0
- package/coreui/components/edaManager/components/detail/edaVectorDetailModalDialog.d.ts +23 -0
- package/coreui/components/edaManager/components/detail/edaVectorDetailModalDialog.js +122 -0
- package/coreui/components/edaManager/components/detail/edaVectorDetailModalDialog.js.map +1 -0
- package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.d.ts +16 -0
- package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.js +63 -0
- package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.js.map +1 -0
- package/coreui/components/edaManager/components/detail/initialLayout.d.ts +2 -0
- package/coreui/components/edaManager/components/detail/initialLayout.js +29 -0
- package/coreui/components/edaManager/components/detail/initialLayout.js.map +1 -0
- package/coreui/components/edaManager/components/edaManagerTablePanel.d.ts +22 -0
- package/coreui/components/edaManager/components/edaManagerTablePanel.js +80 -0
- package/coreui/components/edaManager/components/edaManagerTablePanel.js.map +1 -0
- package/coreui/components/edaManager/components/edaManagerTimePanel.d.ts +22 -0
- package/coreui/components/edaManager/components/edaManagerTimePanel.js +38 -0
- package/coreui/components/edaManager/components/edaManagerTimePanel.js.map +1 -0
- package/coreui/components/edaManager/components/edaManagerVectorList.d.ts +11 -0
- package/coreui/components/edaManager/components/edaManagerVectorList.js +35 -0
- package/coreui/components/edaManager/components/edaManagerVectorList.js.map +1 -0
- package/coreui/components/edaManager/components/edaStepSelect/edaStepConstants.d.ts +0 -0
- package/coreui/components/edaManager/components/edaStepSelect/edaStepConstants.js +2 -0
- package/coreui/components/edaManager/components/edaStepSelect/edaStepConstants.js.map +1 -0
- package/coreui/components/edaManager/components/edaStepSelect/edaStepSelect.d.ts +13 -0
- package/coreui/components/edaManager/components/edaStepSelect/edaStepSelect.js +14 -0
- package/coreui/components/edaManager/components/edaStepSelect/edaStepSelect.js.map +1 -0
- package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelect.d.ts +10 -0
- package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelect.js +20 -0
- package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelect.js.map +1 -0
- package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.d.ts +13 -0
- package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.js +22 -0
- package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.js.map +1 -0
- package/coreui/components/edaManager/constants.d.ts +2 -0
- package/coreui/components/edaManager/constants.js +11 -0
- package/coreui/components/edaManager/constants.js.map +1 -0
- package/coreui/components/edaManager/panel/edaManagerPanel.d.ts +13 -0
- package/coreui/components/edaManager/panel/edaManagerPanel.js +32 -0
- package/coreui/components/edaManager/panel/edaManagerPanel.js.map +1 -0
- package/coreui/components/edaManager/panel/initialLayout.d.ts +2 -0
- package/coreui/components/edaManager/panel/initialLayout.js +39 -0
- package/coreui/components/edaManager/panel/initialLayout.js.map +1 -0
- package/coreui/components/editor/abstractEntityConfigPanel.d.ts +82 -0
- package/coreui/components/editor/abstractEntityConfigPanel.js +307 -0
- package/coreui/components/editor/abstractEntityConfigPanel.js.map +1 -0
- package/coreui/components/filePicker/filePicker.d.ts +20 -0
- package/coreui/components/filePicker/filePicker.js +57 -0
- package/coreui/components/filePicker/filePicker.js.map +1 -0
- package/coreui/components/grid/auditEntityRowStyleRules.d.ts +3 -0
- package/coreui/components/grid/auditEntityRowStyleRules.js +34 -0
- package/coreui/components/grid/auditEntityRowStyleRules.js.map +1 -0
- package/coreui/components/grid/detailHeaderPanel.d.ts +13 -0
- package/coreui/components/grid/detailHeaderPanel.js +29 -0
- package/coreui/components/grid/detailHeaderPanel.js.map +1 -0
- package/coreui/components/grid/standardColumns.d.ts +14 -0
- package/coreui/components/grid/standardColumns.js +150 -0
- package/coreui/components/grid/standardColumns.js.map +1 -0
- package/coreui/components/history/entityHistoryListPanel.d.ts +38 -0
- package/coreui/components/history/entityHistoryListPanel.js +154 -0
- package/coreui/components/history/entityHistoryListPanel.js.map +1 -0
- package/coreui/components/languageSelect/languageSelect.d.ts +17 -0
- package/coreui/components/languageSelect/languageSelect.js +28 -0
- package/coreui/components/languageSelect/languageSelect.js.map +1 -0
- package/coreui/components/modalWithIcon/openModalWithIcon.d.ts +8 -0
- package/coreui/components/modalWithIcon/openModalWithIcon.js +30 -0
- package/coreui/components/modalWithIcon/openModalWithIcon.js.map +1 -0
- package/coreui/components/select/abstractSelect.d.ts +57 -0
- package/coreui/components/select/abstractSelect.js +233 -0
- package/coreui/components/select/abstractSelect.js.map +1 -0
- package/coreui/components/select/abstractSelectModalDialog.d.ts +33 -0
- package/coreui/components/select/abstractSelectModalDialog.js +110 -0
- package/coreui/components/select/abstractSelectModalDialog.js.map +1 -0
- package/coreui/components/select/selectUtils.d.ts +4 -0
- package/coreui/components/select/selectUtils.js +14 -0
- package/coreui/components/select/selectUtils.js.map +1 -0
- package/coreui/components/titleWithCodePanel/titleWithCodePanel.d.ts +10 -0
- package/coreui/components/titleWithCodePanel/titleWithCodePanel.js +20 -0
- package/coreui/components/titleWithCodePanel/titleWithCodePanel.js.map +1 -0
- package/coreui/icons/icons.d.ts +3 -0
- package/coreui/icons/icons.js +18 -0
- package/coreui/icons/icons.js.map +1 -0
- package/coreui/layout/contextToolbar.d.ts +15 -0
- package/coreui/layout/contextToolbar.js +41 -0
- package/coreui/layout/contextToolbar.js.map +1 -0
- package/coreui/style/index.less +165 -0
- package/coreui/style/login.css +214 -0
- package/package.json +65 -0
- package/tsconfig.json +38 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import ExtendedDataGrid from "d2coreui/components/grid/extendedDataGrid";
|
|
3
|
+
import { getAdvancedFilterOperatorString } from "../../../../api/advancedFilterApi";
|
|
4
|
+
import i18n from "d2core/i18n/i18n";
|
|
5
|
+
import { Button } from "antd";
|
|
6
|
+
import { CloseCircleOutlined, ExclamationCircleOutlined, PlusCircleOutlined } from "@ant-design/icons";
|
|
7
|
+
import AdvancedFilterConditionDetailPanel from "./advancedFilterConditionDetailPanel";
|
|
8
|
+
import AdvancedFilterUtils from "../advancedFilterUtils";
|
|
9
|
+
import ColorTag from "../../colorTag/colorTag";
|
|
10
|
+
export default class AdvancedFilterConditionListPanel extends React.Component {
|
|
11
|
+
constructor(props) {
|
|
12
|
+
super(props);
|
|
13
|
+
this.dataGrid = null;
|
|
14
|
+
this.state = {
|
|
15
|
+
selectedCondition: null,
|
|
16
|
+
loading: false,
|
|
17
|
+
};
|
|
18
|
+
this.onSelectionChanged = this.onSelectionChanged.bind(this);
|
|
19
|
+
this.renderDetailPanel = this.renderDetailPanel.bind(this);
|
|
20
|
+
this.renderControlPanel = this.renderControlPanel.bind(this);
|
|
21
|
+
this.onAddNewCondition = this.onAddNewCondition.bind(this);
|
|
22
|
+
}
|
|
23
|
+
componentDidMount() {
|
|
24
|
+
if (this.props.filterConditions.length === 0) {
|
|
25
|
+
this.onAddNewCondition();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
refreshData() {
|
|
29
|
+
this.gridApi?.applyTransaction({ update: this.props.filterConditions });
|
|
30
|
+
const selectedRows = this.gridApi?.getSelectedRows();
|
|
31
|
+
this.setState({ selectedCondition: selectedRows?.[0] ?? null });
|
|
32
|
+
}
|
|
33
|
+
getInitialColumnDefs() {
|
|
34
|
+
if (!this.initialColumnDefs) {
|
|
35
|
+
this.initialColumnDefs = [
|
|
36
|
+
{
|
|
37
|
+
headerName: i18n("Negation"),
|
|
38
|
+
colId: "not_flag",
|
|
39
|
+
field: "not_flag",
|
|
40
|
+
initialWidth: 80,
|
|
41
|
+
cellRenderer: (params) => {
|
|
42
|
+
const data = params.data;
|
|
43
|
+
return data.not_flag === 1 ? "NOT" : "";
|
|
44
|
+
},
|
|
45
|
+
enableCellChangeFlash: true,
|
|
46
|
+
group: i18n("Basic Columns"),
|
|
47
|
+
rowDrag: true,
|
|
48
|
+
}, {
|
|
49
|
+
headerName: "(",
|
|
50
|
+
colId: "left_par",
|
|
51
|
+
field: "left_par",
|
|
52
|
+
initialWidth: 44,
|
|
53
|
+
cellRenderer: (params) => {
|
|
54
|
+
const data = params.data;
|
|
55
|
+
return data.left_par === 1 ? "(" : "";
|
|
56
|
+
},
|
|
57
|
+
enableCellChangeFlash: true,
|
|
58
|
+
group: i18n("Basic Columns"),
|
|
59
|
+
}, {
|
|
60
|
+
headerName: i18n("Column"),
|
|
61
|
+
colId: "column_name",
|
|
62
|
+
field: "column_name",
|
|
63
|
+
initialWidth: 120,
|
|
64
|
+
enableCellChangeFlash: true,
|
|
65
|
+
group: i18n("Basic Columns"),
|
|
66
|
+
}, {
|
|
67
|
+
headerName: i18n("Operator"),
|
|
68
|
+
colId: "operator",
|
|
69
|
+
field: "operator",
|
|
70
|
+
cellRenderer: (params) => {
|
|
71
|
+
const data = params.data;
|
|
72
|
+
return getAdvancedFilterOperatorString(data.operator);
|
|
73
|
+
},
|
|
74
|
+
initialWidth: 120,
|
|
75
|
+
enableCellChangeFlash: true,
|
|
76
|
+
group: i18n("Basic Columns"),
|
|
77
|
+
}, {
|
|
78
|
+
headerName: i18n("Value"),
|
|
79
|
+
colId: "value",
|
|
80
|
+
field: "value",
|
|
81
|
+
initialWidth: 160,
|
|
82
|
+
cellRenderer: (params) => {
|
|
83
|
+
const data = params.data;
|
|
84
|
+
const columnDefinition = this.props.columnDefinitions.find(value => value.columnName === data.column_name);
|
|
85
|
+
if (columnDefinition) {
|
|
86
|
+
return AdvancedFilterUtils.humanizeCondition(columnDefinition, false, data);
|
|
87
|
+
}
|
|
88
|
+
return "";
|
|
89
|
+
},
|
|
90
|
+
enableCellChangeFlash: true,
|
|
91
|
+
group: i18n("Basic Columns"),
|
|
92
|
+
}, {
|
|
93
|
+
headerName: ")",
|
|
94
|
+
colId: "right_par",
|
|
95
|
+
field: "right_par",
|
|
96
|
+
initialWidth: 44,
|
|
97
|
+
cellRenderer: (params) => {
|
|
98
|
+
const data = params.data;
|
|
99
|
+
return data.right_par === 1 ? ")" : "";
|
|
100
|
+
},
|
|
101
|
+
enableCellChangeFlash: true,
|
|
102
|
+
group: i18n("Basic Columns"),
|
|
103
|
+
}, {
|
|
104
|
+
headerName: i18n("Logical Operator"),
|
|
105
|
+
colId: "logical_operator",
|
|
106
|
+
field: "logical_operator",
|
|
107
|
+
initialWidth: 120,
|
|
108
|
+
enableCellChangeFlash: true,
|
|
109
|
+
group: i18n("Basic Columns"),
|
|
110
|
+
}
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
return this.initialColumnDefs;
|
|
114
|
+
}
|
|
115
|
+
onSelectionChanged(event) {
|
|
116
|
+
const selectedRows = event.api.getSelectedRows();
|
|
117
|
+
if (selectedRows.length > 0) {
|
|
118
|
+
this.setState({ selectedCondition: selectedRows[0] });
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.setState({ selectedCondition: null });
|
|
122
|
+
this.dataGrid?.showDetailPanel(false);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
onAddNewCondition() {
|
|
126
|
+
const filterConditions = this.props.filterConditions;
|
|
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]);
|
|
129
|
+
filterConditions.push(newCondition);
|
|
130
|
+
this.setState({ selectedCondition: newCondition });
|
|
131
|
+
this.props.onChange(filterConditions);
|
|
132
|
+
this.gridApi?.applyTransaction({ add: [newCondition] });
|
|
133
|
+
const rowNode = this.gridApi?.getRowNode(newCondition.id.toString());
|
|
134
|
+
rowNode?.setSelected(true, true);
|
|
135
|
+
this.gridApi?.ensureNodeVisible(rowNode);
|
|
136
|
+
this.dataGrid?.showDetailPanel(true);
|
|
137
|
+
}
|
|
138
|
+
renderToolbarButtons() {
|
|
139
|
+
const operationsDisabled = this.state.loading;
|
|
140
|
+
return React.createElement(React.Fragment, null,
|
|
141
|
+
React.createElement(Button, { title: i18n("New Condition"), disabled: operationsDisabled, onClick: this.onAddNewCondition },
|
|
142
|
+
React.createElement(PlusCircleOutlined, null)),
|
|
143
|
+
React.createElement(Button, { title: i18n("Remove Expression"), disabled: operationsDisabled || this.state.selectedCondition === null, onClick: () => {
|
|
144
|
+
const conditionToRemove = this.state.selectedCondition;
|
|
145
|
+
if (conditionToRemove) {
|
|
146
|
+
let filterConditions = this.props.filterConditions;
|
|
147
|
+
filterConditions = filterConditions.filter(value => value.id !== conditionToRemove.id);
|
|
148
|
+
this.props.onChange(filterConditions);
|
|
149
|
+
this.gridApi?.applyTransaction({ remove: [conditionToRemove] });
|
|
150
|
+
this.dataGrid?.showDetailPanel(false);
|
|
151
|
+
}
|
|
152
|
+
} },
|
|
153
|
+
React.createElement(CloseCircleOutlined, null)));
|
|
154
|
+
}
|
|
155
|
+
renderDetailPanel() {
|
|
156
|
+
if (this.state.selectedCondition) {
|
|
157
|
+
return (React.createElement(AdvancedFilterConditionDetailPanel, { editedCondition: this.state.selectedCondition, columnDefinitions: this.props.columnDefinitions, onClose: () => this.dataGrid?.showDetailPanel(false), onNextRecord: () => this.dataGrid?.selectNextPreviousRecord(false), onPrevRecord: () => this.dataGrid?.selectNextPreviousRecord(true), onChange: editedCondition => {
|
|
158
|
+
this.setState({ selectedCondition: editedCondition });
|
|
159
|
+
this.gridApi?.applyTransaction({ update: [editedCondition] });
|
|
160
|
+
this.props.onChange(this.props.filterConditions);
|
|
161
|
+
} }));
|
|
162
|
+
}
|
|
163
|
+
return React.createElement("div", null);
|
|
164
|
+
}
|
|
165
|
+
renderControlPanel() {
|
|
166
|
+
if (this.props.isParenthesisError) {
|
|
167
|
+
return (React.createElement("div", { style: { display: "flex", justifyContent: "center", padding: "0px 12px 8px" } },
|
|
168
|
+
React.createElement(ColorTag, { icon: React.createElement(ExclamationCircleOutlined, null), color: "error" }, i18n("Parentheses match error"))));
|
|
169
|
+
}
|
|
170
|
+
return React.createElement("div", null);
|
|
171
|
+
}
|
|
172
|
+
render() {
|
|
173
|
+
return (React.createElement("div", { style: { position: "relative", width: "100%", height: "100%" } },
|
|
174
|
+
React.createElement(ExtendedDataGrid, { ref: (dataGrid) => {
|
|
175
|
+
this.dataGrid = dataGrid;
|
|
176
|
+
}, defaultGridConfiguration: { pageSize: -1 }, onGridReady: (params) => {
|
|
177
|
+
this.gridApi = params.api;
|
|
178
|
+
}, columnDefs: this.getInitialColumnDefs(), onLoadData: callback => callback(this.props.filterConditions.length), rowData: this.props.filterConditions, toolbar: {
|
|
179
|
+
toolbarButtons: this.renderToolbarButtons(),
|
|
180
|
+
}, search: {
|
|
181
|
+
hidden: true,
|
|
182
|
+
searchButtonHidden: true,
|
|
183
|
+
}, controlPanel: {
|
|
184
|
+
renderer: this.renderControlPanel
|
|
185
|
+
}, onSelectionChanged: this.onSelectionChanged, onRowDoubleClicked: (event) => {
|
|
186
|
+
this.setState({ selectedCondition: event.data });
|
|
187
|
+
this.dataGrid?.showDetailPanel(true);
|
|
188
|
+
}, detailPanel: {
|
|
189
|
+
defaultWidth: 400,
|
|
190
|
+
renderer: this.renderDetailPanel
|
|
191
|
+
}, suppressMovableColumns: true, rowDragManaged: true, animateRows: true, onRowDragEnd: (event) => {
|
|
192
|
+
const draggedCondition = event.node.data;
|
|
193
|
+
const filterConditions = this.props.filterConditions;
|
|
194
|
+
const toIndex = event.overIndex !== -1 ? event.overIndex : filterConditions.length;
|
|
195
|
+
const fromIndex = filterConditions.findIndex(value => value.id === draggedCondition.id);
|
|
196
|
+
filterConditions.splice(toIndex, 0, filterConditions.splice(fromIndex, 1)[0]);
|
|
197
|
+
this.props.onChange(filterConditions);
|
|
198
|
+
}, noRecordsOverlayRenderer: () => React.createElement("div", null,
|
|
199
|
+
React.createElement(Button, { type: "primary", onClick: this.onAddNewCondition },
|
|
200
|
+
React.createElement(PlusCircleOutlined, null),
|
|
201
|
+
" ",
|
|
202
|
+
i18n("Add Condition"))), getRowStyle: params => {
|
|
203
|
+
const data = params.data;
|
|
204
|
+
if (data._errors && data._errors.length > 0) {
|
|
205
|
+
return { color: "#d4380d", background: "#fff2e8" };
|
|
206
|
+
}
|
|
207
|
+
return;
|
|
208
|
+
} })));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=advancedFilterConditionListPanel.js.map
|
package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map
ADDED
|
@@ -0,0 +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}"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import AbstractSelectModalDialog, { AbstractSelectModalDialogProps } from "../../select/abstractSelectModalDialog";
|
|
3
|
+
import { AdvancedFilterEntity } from "../../../../api/advancedFilterApi";
|
|
4
|
+
import { DataGridColDef } from "d2coreui/components/grid/dataGrid";
|
|
5
|
+
interface Props extends AbstractSelectModalDialogProps<AdvancedFilterEntity> {
|
|
6
|
+
}
|
|
7
|
+
export default class AdvancedFilterListModalDialog extends AbstractSelectModalDialog<AdvancedFilterEntity, Props> {
|
|
8
|
+
constructor(props: Readonly<Props>);
|
|
9
|
+
protected renderToolbarButtons(): React.JSX.Element;
|
|
10
|
+
getIdColumnName(): string;
|
|
11
|
+
getTitle(): string;
|
|
12
|
+
protected getInitialColumnDefs(): DataGridColDef[];
|
|
13
|
+
getAdvancedFilterListName(): undefined;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import AbstractSelectModalDialog from "../../select/abstractSelectModalDialog";
|
|
3
|
+
import { Button } from "antd";
|
|
4
|
+
import { CloseCircleOutlined, DeleteOutlined } from "@ant-design/icons";
|
|
5
|
+
import { ModalDialog } from "d2coreui/components/modal/modalDialog";
|
|
6
|
+
import i18n from "d2core/i18n/i18n";
|
|
7
|
+
import { getIDColumn, getNameColumn } from "../../grid/standardColumns";
|
|
8
|
+
import { ERROR_COLOR } from "../../../../api/constants/constants";
|
|
9
|
+
export default class AdvancedFilterListModalDialog extends AbstractSelectModalDialog {
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super(props);
|
|
12
|
+
this.state = {
|
|
13
|
+
...this.initialState,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
renderToolbarButtons() {
|
|
17
|
+
return (React.createElement(Button, { title: i18n("Delete Filter"), disabled: this.state.selectedData.length === 0, onClick: () => {
|
|
18
|
+
ModalDialog.delete({
|
|
19
|
+
mode: "YES_NO",
|
|
20
|
+
title: React.createElement("span", { style: { whiteSpace: "nowrap" } }, i18n("Remove %n records?", this.state.selectedData.length)),
|
|
21
|
+
icon: React.createElement(DeleteOutlined, { style: { color: ERROR_COLOR } }),
|
|
22
|
+
onOk: () => {
|
|
23
|
+
this.state.selectedData.forEach(async (value) => {
|
|
24
|
+
await this.props.api.deleteFilter(value.id_filter);
|
|
25
|
+
});
|
|
26
|
+
this.gridApi?.refreshInfiniteCache();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
} },
|
|
30
|
+
React.createElement(CloseCircleOutlined, null)));
|
|
31
|
+
}
|
|
32
|
+
getIdColumnName() {
|
|
33
|
+
return "";
|
|
34
|
+
}
|
|
35
|
+
getTitle() {
|
|
36
|
+
return i18n("Filter List");
|
|
37
|
+
}
|
|
38
|
+
getInitialColumnDefs() {
|
|
39
|
+
return [
|
|
40
|
+
getIDColumn(),
|
|
41
|
+
getNameColumn(undefined, { flex: 1 }),
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
getAdvancedFilterListName() {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=advancedFilterListModalDialog.js.map
|
|
@@ -0,0 +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}"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface Props {
|
|
3
|
+
visible: boolean;
|
|
4
|
+
saving: boolean;
|
|
5
|
+
onOk(filterName: string): void;
|
|
6
|
+
onCancel(): void;
|
|
7
|
+
}
|
|
8
|
+
interface State {
|
|
9
|
+
filterName: string;
|
|
10
|
+
}
|
|
11
|
+
export default class FilterSaveModalDialog extends React.Component<Props, State> {
|
|
12
|
+
constructor(props: Readonly<Props>);
|
|
13
|
+
componentDidUpdate(prevProps: Readonly<Props>): void;
|
|
14
|
+
private isOkDisabled;
|
|
15
|
+
private onSave;
|
|
16
|
+
render(): React.JSX.Element;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ModalDialog } from "d2coreui/components/modal/modalDialog";
|
|
3
|
+
import i18n from "d2core/i18n/i18n";
|
|
4
|
+
import { Form, Input } from "antd";
|
|
5
|
+
export default class FilterSaveModalDialog extends React.Component {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super(props);
|
|
8
|
+
this.state = {
|
|
9
|
+
filterName: "",
|
|
10
|
+
};
|
|
11
|
+
this.onSave = this.onSave.bind(this);
|
|
12
|
+
}
|
|
13
|
+
componentDidUpdate(prevProps) {
|
|
14
|
+
if (!prevProps.visible && this.props.visible) {
|
|
15
|
+
this.setState({ filterName: "" });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
isOkDisabled() {
|
|
19
|
+
return this.state.filterName.trim().length === 0;
|
|
20
|
+
}
|
|
21
|
+
onSave() {
|
|
22
|
+
this.props.onOk(this.state.filterName);
|
|
23
|
+
}
|
|
24
|
+
render() {
|
|
25
|
+
return (React.createElement(ModalDialog, { mode: "OK_CANCEL", open: this.props.visible, title: i18n("Save Filter"), initialWidth: 400, initialHeight: 220, okText: i18n("Save"), okButtonProps: { disabled: this.isOkDisabled() }, onOk: this.onSave, onCancel: this.props.onCancel, confirmLoading: this.props.saving },
|
|
26
|
+
React.createElement(Form, { className: "record-config-form", layout: "horizontal", labelCol: { sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 } },
|
|
27
|
+
React.createElement(Form.Item, { label: i18n("Filter Name") },
|
|
28
|
+
React.createElement(Input, { value: this.state.filterName, onChange: event => {
|
|
29
|
+
this.setState({ filterName: event.target.value });
|
|
30
|
+
}, onPressEnter: () => {
|
|
31
|
+
if (!this.isOkDisabled()) {
|
|
32
|
+
this.onSave();
|
|
33
|
+
}
|
|
34
|
+
}, autoFocus: true })))));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=filterSaveModalDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterSaveModalDialog.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/filterSave/filterSaveModalDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAkB,MAAM,uCAAuC,CAAC;AACnF,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AAejC,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,KAAK,CAAC,SAAuB;IAC5E,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,UAAU,EAAE,EAAE;SACjB,CAAA;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB,CAAC,SAA0B;QACzC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAE,EAAE,EAAC,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAEO,YAAY;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IACrD,CAAC;IAEO,MAAM;QACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACF,OAAO,CACH,oBAAC,WAAW,IACR,IAAI,eACJ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EACxB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAC1B,YAAY,EAAE,GAAG,EACjB,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACpB,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAC,EAC9C,IAAI,EAAE,IAAI,CAAC,MAAM,EACjB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAEjC,oBAAC,IAAI,IACD,SAAS,EAAC,oBAAoB,EAC9B,MAAM,EAAC,YAAY,EACnB,QAAQ,EAAE,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAC;gBAEnD,oBAAC,IAAI,CAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;oBACjC,oBAAC,KAAK,IACF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAC5B,QAAQ,EAAE,KAAK,CAAC,EAAE;4BACd,IAAI,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,CAAA;wBACnD,CAAC,EACD,YAAY,EAAE,GAAG,EAAE;4BACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gCACvB,IAAI,CAAC,MAAM,EAAE,CAAC;4BAClB,CAAC;wBACL,CAAC,EACD,SAAS,SACX,CACM,CACT,CACG,CACjB,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Form, Input} from \"antd\";\r\n\r\ninterface Props {\r\n visible: boolean\r\n saving: boolean\r\n\r\n onOk(filterName: string): void\r\n\r\n onCancel(): void\r\n}\r\n\r\ninterface State {\r\n filterName: string\r\n}\r\n\r\nexport default class FilterSaveModalDialog extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n filterName: \"\",\r\n }\r\n\r\n this.onSave = this.onSave.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<Props>) {\r\n if (!prevProps.visible && this.props.visible) {\r\n this.setState({filterName: \"\"});\r\n }\r\n }\r\n\r\n private isOkDisabled() {\r\n return this.state.filterName.trim().length === 0;\r\n }\r\n\r\n private onSave() {\r\n this.props.onOk(this.state.filterName);\r\n }\r\n\r\n render() {\r\n return (\r\n <ModalDialog\r\n mode={ModalDialogMode.OK_CANCEL}\r\n open={this.props.visible}\r\n title={i18n(\"Save Filter\")}\r\n initialWidth={400}\r\n initialHeight={220}\r\n okText={i18n(\"Save\")}\r\n okButtonProps={{disabled: this.isOkDisabled()}}\r\n onOk={this.onSave}\r\n onCancel={this.props.onCancel}\r\n confirmLoading={this.props.saving}\r\n >\r\n <Form\r\n className=\"record-config-form\"\r\n layout=\"horizontal\"\r\n labelCol={{sm: 24, md: 24, lg: 24, xl: 24, xxl: 24}}\r\n >\r\n <Form.Item label={i18n(\"Filter Name\")}>\r\n <Input\r\n value={this.state.filterName}\r\n onChange={event => {\r\n this.setState({filterName: event.target.value})\r\n }}\r\n onPressEnter={() => {\r\n if (!this.isOkDisabled()) {\r\n this.onSave();\r\n }\r\n }}\r\n autoFocus\r\n />\r\n </Form.Item>\r\n </Form>\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n}"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AdvancedFilterCondition, AdvancedFilterOperator, AdvancedFilterValue } from "../../../../api/advancedFilterApi";
|
|
3
|
+
import { AdvancedFilterColumnDefinition } from "../../../../api/types/advancedFilter";
|
|
4
|
+
interface AdvancedFilterFloatingColumnComponentProps {
|
|
5
|
+
filterCondition?: AdvancedFilterCondition;
|
|
6
|
+
columnDefinition: AdvancedFilterColumnDefinition;
|
|
7
|
+
onAddCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void;
|
|
8
|
+
onSetCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void;
|
|
9
|
+
onClearCondition(): void;
|
|
10
|
+
}
|
|
11
|
+
interface AdvancedFilterFloatingColumnComponentState {
|
|
12
|
+
visible: boolean;
|
|
13
|
+
humanizedCondition: string;
|
|
14
|
+
editedOperator: AdvancedFilterOperator;
|
|
15
|
+
editedValue: AdvancedFilterValue;
|
|
16
|
+
}
|
|
17
|
+
export default class AdvancedFilterFloatingColumnComponent extends React.Component<AdvancedFilterFloatingColumnComponentProps, AdvancedFilterFloatingColumnComponentState> {
|
|
18
|
+
private advancedFilterValueInput;
|
|
19
|
+
private allowedOperators;
|
|
20
|
+
constructor(props: Readonly<AdvancedFilterFloatingColumnComponentProps>);
|
|
21
|
+
componentDidUpdate(prevProps: Readonly<AdvancedFilterFloatingColumnComponentProps>): void;
|
|
22
|
+
private onAddCondition;
|
|
23
|
+
private onSetCondition;
|
|
24
|
+
render(): React.JSX.Element;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Button, Card, Col, Input, Popover, Row, Space } from "antd";
|
|
3
|
+
import i18n from "d2core/i18n/i18n";
|
|
4
|
+
import AdvancedFilterOperatorSelect from "../components/advancedFilterOperatorSelect";
|
|
5
|
+
import AdvancedFilterValueInput from "../components/advancedFilterValueInput";
|
|
6
|
+
import AdvancedFilterValidationUtils from "../advancedFilterValidationUtils";
|
|
7
|
+
import AdvancedFilterUtils from "../advancedFilterUtils";
|
|
8
|
+
export default class AdvancedFilterFloatingColumnComponent extends React.Component {
|
|
9
|
+
constructor(props) {
|
|
10
|
+
super(props);
|
|
11
|
+
this.advancedFilterValueInput = null;
|
|
12
|
+
this.allowedOperators = AdvancedFilterUtils.getOperatorsForValueType(this.props.columnDefinition.valueType);
|
|
13
|
+
const operator = props.filterCondition?.operator ?? this.allowedOperators[0];
|
|
14
|
+
this.state = {
|
|
15
|
+
visible: false,
|
|
16
|
+
humanizedCondition: AdvancedFilterUtils.humanizeCondition(props.columnDefinition, true, props.filterCondition),
|
|
17
|
+
editedOperator: operator,
|
|
18
|
+
editedValue: props.filterCondition?.value,
|
|
19
|
+
};
|
|
20
|
+
this.onAddCondition = this.onAddCondition.bind(this);
|
|
21
|
+
this.onSetCondition = this.onSetCondition.bind(this);
|
|
22
|
+
}
|
|
23
|
+
componentDidUpdate(prevProps) {
|
|
24
|
+
if (prevProps.filterCondition?.operator !== this.props.filterCondition?.operator || prevProps.filterCondition?.value !== this.props.filterCondition?.value) {
|
|
25
|
+
const operator = this.props.filterCondition?.operator ?? this.allowedOperators[0];
|
|
26
|
+
this.setState({
|
|
27
|
+
humanizedCondition: AdvancedFilterUtils.humanizeCondition(this.props.columnDefinition, true, this.props.filterCondition),
|
|
28
|
+
editedOperator: operator,
|
|
29
|
+
editedValue: this.props.filterCondition?.value,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
onAddCondition() {
|
|
34
|
+
this.props.onAddCondition(this.state.editedOperator, this.state.editedValue);
|
|
35
|
+
this.setState({ visible: false });
|
|
36
|
+
}
|
|
37
|
+
onSetCondition() {
|
|
38
|
+
this.props.onSetCondition(this.state.editedOperator, this.state.editedValue);
|
|
39
|
+
this.setState({ visible: false });
|
|
40
|
+
}
|
|
41
|
+
render() {
|
|
42
|
+
let { editedOperator, editedValue } = this.state;
|
|
43
|
+
const conditionValueInvalid = AdvancedFilterValidationUtils.isConditionValueInvalid(editedValue);
|
|
44
|
+
return (React.createElement("div", { style: { width: "100%" } },
|
|
45
|
+
React.createElement(Popover, { trigger: "click", placement: "bottom", open: this.state.visible, onOpenChange: visible => {
|
|
46
|
+
if (visible) {
|
|
47
|
+
setTimeout(() => {
|
|
48
|
+
this.advancedFilterValueInput?.focusInput();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
this.setState({ visible: visible });
|
|
52
|
+
}, color: "#F5F7F7", content: React.createElement(Card, { size: "small", styles: { body: { padding: 0, backgroundColor: "#F5F7F7" } } },
|
|
53
|
+
React.createElement(Space, { style: { width: 240 }, direction: "vertical" },
|
|
54
|
+
React.createElement(AdvancedFilterOperatorSelect, { operator: editedOperator, value: editedValue, valueType: this.props.columnDefinition.valueType, onChange: (operator, value) => {
|
|
55
|
+
this.setState({ editedOperator: operator, editedValue: value });
|
|
56
|
+
} }),
|
|
57
|
+
React.createElement(AdvancedFilterValueInput, { ref: instance => this.advancedFilterValueInput = instance, operator: editedOperator, editedValue: editedValue, columnDefinition: this.props.columnDefinition, onPressEnter: (isCtrl, isAlt) => {
|
|
58
|
+
if (!conditionValueInvalid) {
|
|
59
|
+
if (isCtrl) {
|
|
60
|
+
this.onAddCondition();
|
|
61
|
+
}
|
|
62
|
+
else if (isAlt) {
|
|
63
|
+
this.onSetCondition();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}, onChange: value => {
|
|
67
|
+
this.setState({ editedValue: value });
|
|
68
|
+
} }),
|
|
69
|
+
React.createElement(Row, { gutter: 8 },
|
|
70
|
+
React.createElement(Col, { span: 12 },
|
|
71
|
+
React.createElement(Button, { title: "Ctrl + Enter", disabled: conditionValueInvalid, size: "small", block: true, onClick: this.onAddCondition }, i18n("Add"))),
|
|
72
|
+
React.createElement(Col, { span: 12 },
|
|
73
|
+
React.createElement(Button, { title: "Alt + Enter", disabled: conditionValueInvalid, size: "small", block: true, type: "primary", onClick: this.onSetCondition }, i18n("Set")))))) },
|
|
74
|
+
React.createElement(Input, { style: { marginTop: 2, caretColor: "transparent", cursor: "pointer" }, title: this.state.humanizedCondition, size: "small", allowClear: this.state.humanizedCondition !== "", value: this.state.humanizedCondition, onChange: event => {
|
|
75
|
+
if (!event.target.value) {
|
|
76
|
+
this.props.onClearCondition();
|
|
77
|
+
}
|
|
78
|
+
} }))));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=advancedFilterFloatingColumnComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advancedFilterFloatingColumnComponent.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {Button, Card, Col, Input, Popover, Row, Space} from \"antd\";\r\nimport {AdvancedFilterCondition, AdvancedFilterOperator, AdvancedFilterValue,} from \"../../../../api/advancedFilterApi\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport AdvancedFilterOperatorSelect from \"../components/advancedFilterOperatorSelect\";\r\nimport AdvancedFilterValueInput from \"../components/advancedFilterValueInput\";\r\nimport AdvancedFilterValidationUtils from \"../advancedFilterValidationUtils\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"../advancedFilterUtils\";\r\n\r\ninterface AdvancedFilterFloatingColumnComponentProps {\r\n filterCondition?: AdvancedFilterCondition\r\n columnDefinition: AdvancedFilterColumnDefinition\r\n\r\n onAddCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void\r\n\r\n onSetCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void\r\n\r\n onClearCondition(): void\r\n}\r\n\r\ninterface AdvancedFilterFloatingColumnComponentState {\r\n visible: boolean\r\n humanizedCondition: string\r\n\r\n editedOperator: AdvancedFilterOperator\r\n editedValue: AdvancedFilterValue\r\n}\r\n\r\nexport default class AdvancedFilterFloatingColumnComponent extends React.Component<AdvancedFilterFloatingColumnComponentProps, AdvancedFilterFloatingColumnComponentState> {\r\n private advancedFilterValueInput: AdvancedFilterValueInput | null = null;\r\n private allowedOperators = AdvancedFilterUtils.getOperatorsForValueType(this.props.columnDefinition.valueType);\r\n\r\n constructor(props: Readonly<AdvancedFilterFloatingColumnComponentProps>) {\r\n super(props);\r\n const operator = props.filterCondition?.operator ?? this.allowedOperators[0];\r\n\r\n this.state = {\r\n visible: false,\r\n humanizedCondition: AdvancedFilterUtils.humanizeCondition(props.columnDefinition, true, props.filterCondition),\r\n editedOperator: operator,\r\n editedValue: props.filterCondition?.value,\r\n }\r\n\r\n this.onAddCondition = this.onAddCondition.bind(this);\r\n this.onSetCondition = this.onSetCondition.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<AdvancedFilterFloatingColumnComponentProps>) {\r\n if (prevProps.filterCondition?.operator !== this.props.filterCondition?.operator || prevProps.filterCondition?.value !== this.props.filterCondition?.value) {\r\n const operator = this.props.filterCondition?.operator ?? this.allowedOperators[0];\r\n\r\n this.setState({\r\n humanizedCondition: AdvancedFilterUtils.humanizeCondition(this.props.columnDefinition, true, this.props.filterCondition),\r\n editedOperator: operator,\r\n editedValue: this.props.filterCondition?.value,\r\n });\r\n }\r\n }\r\n\r\n private onAddCondition() {\r\n this.props.onAddCondition(this.state.editedOperator, this.state.editedValue);\r\n this.setState({visible: false});\r\n }\r\n\r\n private onSetCondition() {\r\n this.props.onSetCondition(this.state.editedOperator, this.state.editedValue);\r\n this.setState({visible: false});\r\n }\r\n\r\n render() {\r\n let {editedOperator, editedValue} = this.state;\r\n const conditionValueInvalid = AdvancedFilterValidationUtils.isConditionValueInvalid(editedValue);\r\n\r\n return (\r\n <div style={{width: \"100%\"}}>\r\n <Popover\r\n trigger=\"click\"\r\n placement=\"bottom\"\r\n open={this.state.visible}\r\n onOpenChange={visible => {\r\n if (visible) {\r\n setTimeout(() => {\r\n this.advancedFilterValueInput?.focusInput();\r\n });\r\n }\r\n this.setState({visible: visible});\r\n }}\r\n color={\"#F5F7F7\"}\r\n content={\r\n <Card size={\"small\"} styles={{body: {padding: 0, backgroundColor: \"#F5F7F7\"}}}>\r\n <Space style={{width: 240}} direction=\"vertical\">\r\n <AdvancedFilterOperatorSelect\r\n operator={editedOperator}\r\n value={editedValue}\r\n valueType={this.props.columnDefinition.valueType}\r\n onChange={(operator, value) => {\r\n this.setState({editedOperator: operator, editedValue: value});\r\n }}\r\n />\r\n <AdvancedFilterValueInput\r\n ref={instance => this.advancedFilterValueInput = instance}\r\n operator={editedOperator}\r\n editedValue={editedValue}\r\n columnDefinition={this.props.columnDefinition}\r\n onPressEnter={(isCtrl, isAlt) => {\r\n if (!conditionValueInvalid) {\r\n if (isCtrl) {\r\n this.onAddCondition();\r\n } else if (isAlt) {\r\n this.onSetCondition();\r\n }\r\n }\r\n }}\r\n onChange={value => {\r\n this.setState({editedValue: value});\r\n }}\r\n />\r\n <Row gutter={8}>\r\n <Col span={12}>\r\n <Button\r\n title=\"Ctrl + Enter\"\r\n disabled={conditionValueInvalid}\r\n size=\"small\"\r\n block\r\n onClick={this.onAddCondition}\r\n >\r\n {i18n(\"Add\")}\r\n </Button>\r\n </Col>\r\n <Col span={12}>\r\n <Button\r\n title=\"Alt + Enter\"\r\n disabled={conditionValueInvalid}\r\n size=\"small\"\r\n block\r\n type=\"primary\"\r\n onClick={this.onSetCondition}\r\n >\r\n {i18n(\"Set\")}\r\n </Button>\r\n </Col>\r\n </Row>\r\n </Space>\r\n </Card>\r\n }\r\n >\r\n <Input\r\n style={{marginTop: 2, caretColor: \"transparent\", cursor: \"pointer\"}}\r\n title={this.state.humanizedCondition}\r\n size=\"small\"\r\n allowClear={this.state.humanizedCondition !== \"\"}\r\n value={this.state.humanizedCondition}\r\n onChange={event => {\r\n if (!event.target.value) {\r\n this.props.onClearCondition();\r\n }\r\n }}\r\n />\r\n </Popover>\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Entity from "../../../api/types/entity";
|
|
3
|
+
import { DataGridColDef } from "d2coreui/components/grid/dataGrid";
|
|
4
|
+
import { GridApi } from "ag-grid-community";
|
|
5
|
+
export interface AbstractEntitiesOnEntityListProps<ME extends Entity> {
|
|
6
|
+
editedEntity: ME;
|
|
7
|
+
height: number;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
isError?: boolean;
|
|
10
|
+
onChange?(): void;
|
|
11
|
+
}
|
|
12
|
+
export interface AbstractEntitiesOnEntityListState<SE extends Entity> {
|
|
13
|
+
selectedRecords: SE[];
|
|
14
|
+
selectModalDialogVisible: boolean;
|
|
15
|
+
columnDefs: DataGridColDef[];
|
|
16
|
+
}
|
|
17
|
+
export declare abstract class AbstractEntitiesOnEntityList<ME extends Entity, SE extends Entity, P extends AbstractEntitiesOnEntityListProps<ME>, S extends AbstractEntitiesOnEntityListState<SE>> extends React.Component<P, S> {
|
|
18
|
+
protected gridApi?: GridApi;
|
|
19
|
+
protected initialColumnDefs?: DataGridColDef[];
|
|
20
|
+
protected constructor(props: Readonly<P>);
|
|
21
|
+
protected initialState: AbstractEntitiesOnEntityListState<SE>;
|
|
22
|
+
componentDidUpdate(prevProps: Readonly<P>): void;
|
|
23
|
+
abstract getInitialColumnDefs(): DataGridColDef[];
|
|
24
|
+
abstract getSubEntities(): SE[];
|
|
25
|
+
protected renderSelectModalDialog(): React.ReactNode | undefined;
|
|
26
|
+
protected renderControlPanel(): JSX.Element | null;
|
|
27
|
+
protected noRecordsOverlayRenderer(): React.JSX.Element;
|
|
28
|
+
protected renderToolbarButtons(): React.JSX.Element;
|
|
29
|
+
private onSelectionChanged;
|
|
30
|
+
protected addRecordsToGrid(records: SE[], idToSelect?: number): void;
|
|
31
|
+
render(): React.JSX.Element;
|
|
32
|
+
}
|