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,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import AbstractSelect, { AbstractSelectProps } from "../../../select/abstractSelect";
|
|
3
|
+
import { EdaVector } from "../../../../../api/edaApi";
|
|
4
|
+
interface Props extends AbstractSelectProps<EdaVector> {
|
|
5
|
+
}
|
|
6
|
+
export default class EdaVectorSelect extends AbstractSelect<EdaVector, Props> {
|
|
7
|
+
constructor(props: Readonly<Props>);
|
|
8
|
+
renderSelectDialog(): React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import EdaVectorSelectModalDialog from "./edaVectorSelectModalDialog";
|
|
3
|
+
import AbstractSelect from "../../../select/abstractSelect";
|
|
4
|
+
export default class EdaVectorSelect extends AbstractSelect {
|
|
5
|
+
constructor(props) {
|
|
6
|
+
super(props);
|
|
7
|
+
this.state = {
|
|
8
|
+
...this.initialState,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
renderSelectDialog() {
|
|
12
|
+
return (React.createElement(EdaVectorSelectModalDialog, { api: this.props.api, advancedFilterApi: this.props.advancedFilterApi, visible: this.state.selectDialogVisible, onItemsSelected: selectedVectors => {
|
|
13
|
+
this.props.onItemSelected?.(selectedVectors[0]);
|
|
14
|
+
this.setState({ selectDialogVisible: false });
|
|
15
|
+
}, onCancel: () => {
|
|
16
|
+
this.setState({ selectDialogVisible: false });
|
|
17
|
+
} }));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=edaVectorSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edaVectorSelect.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManager/components/edaVectorSelect/edaVectorSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,cAAqC,MAAM,gCAAgC,CAAC;AAMnF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,cAAgC;IACzE,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAED,kBAAkB;QACd,OAAO,CACH,oBAAC,0BAA0B,IACvB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EACnB,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACvC,eAAe,EAAE,eAAe,CAAC,EAAE;gBAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,CAAC,GACH,CACL,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport EdaVectorSelectModalDialog from \"./edaVectorSelectModalDialog\";\r\nimport AbstractSelect, {AbstractSelectProps} from \"../../../select/abstractSelect\";\r\nimport {EdaVector} from \"../../../../../api/edaApi\";\r\n\r\ninterface Props extends AbstractSelectProps<EdaVector> {\r\n}\r\n\r\nexport default class EdaVectorSelect extends AbstractSelect<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 renderSelectDialog(): React.ReactNode {\r\n return (\r\n <EdaVectorSelectModalDialog\r\n api={this.props.api}\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n visible={this.state.selectDialogVisible}\r\n onItemsSelected={selectedVectors => {\r\n this.props.onItemSelected?.(selectedVectors[0]);\r\n this.setState({selectDialogVisible: false});\r\n }}\r\n onCancel={() => {\r\n this.setState({selectDialogVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n}"]}
|
package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import AbstractSelectModalDialog, { AbstractSelectModalDialogProps } from "../../../select/abstractSelectModalDialog";
|
|
2
|
+
import { EdaVector } from "../../../../../api/edaApi";
|
|
3
|
+
import { EntityColumn } from "../../../advancedFilter/advancedFilterColumnDefinitions";
|
|
4
|
+
import { AdvancedFilterListNameEnum } from "../../../advancedFilter/advancedFilterUtils";
|
|
5
|
+
interface Props extends AbstractSelectModalDialogProps<EdaVector> {
|
|
6
|
+
}
|
|
7
|
+
export default class EdaVectorSelectModalDialog extends AbstractSelectModalDialog<EdaVector, Props> {
|
|
8
|
+
constructor(props: Readonly<Props>);
|
|
9
|
+
getIdColumnName(): EntityColumn;
|
|
10
|
+
getTitle(): string;
|
|
11
|
+
getAdvancedFilterListName(): AdvancedFilterListNameEnum;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import AbstractSelectModalDialog from "../../../select/abstractSelectModalDialog";
|
|
2
|
+
import { EntityColumn } from "../../../advancedFilter/advancedFilterColumnDefinitions";
|
|
3
|
+
import { AdvancedFilterListNameEnum } from "../../../advancedFilter/advancedFilterUtils";
|
|
4
|
+
import i18n from "d2core/i18n/i18n";
|
|
5
|
+
export default class EdaVectorSelectModalDialog extends AbstractSelectModalDialog {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super(props);
|
|
8
|
+
this.state = {
|
|
9
|
+
...this.initialState,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
getIdColumnName() {
|
|
13
|
+
return EntityColumn.ID_VEKTOR;
|
|
14
|
+
}
|
|
15
|
+
getTitle() {
|
|
16
|
+
return i18n("Vector List");
|
|
17
|
+
}
|
|
18
|
+
getAdvancedFilterListName() {
|
|
19
|
+
return AdvancedFilterListNameEnum.EDA_VECTOR_SELECT_LIST;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=edaVectorSelectModalDialog.js.map
|
package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.js.map
ADDED
|
@@ -0,0 +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,YAAY,EAAC,MAAM,yDAAyD,CAAC;AACrF,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,YAAY,CAAC,SAAS,CAAC;IAClC,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 {EntityColumn} 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(): EntityColumn {\r\n return EntityColumn.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}"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const EDA_MANAGER_LAYOUT_MODEL_GLOBAL_ATTRIBUTES = {
|
|
2
|
+
splitterSize: 4,
|
|
3
|
+
tabSetEnableMaximize: false,
|
|
4
|
+
tabSetHeaderHeight: 32,
|
|
5
|
+
tabSetTabStripHeight: 32,
|
|
6
|
+
tabEnableClose: false,
|
|
7
|
+
tabEnableRename: false,
|
|
8
|
+
tabEnableDrag: false,
|
|
9
|
+
tabSetEnableDrag: false,
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../coreui/components/edaManager/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0CAA0C,GAAsB;IACzE,YAAY,EAAE,CAAC;IACf,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,EAAE;IACtB,oBAAoB,EAAE,EAAE;IACxB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,KAAK;IACtB,aAAa,EAAE,KAAK;IACpB,gBAAgB,EAAE,KAAK;CAC1B,CAAA","sourcesContent":["import {IGlobalAttributes} from \"flexlayout-react\";\r\n\r\nexport const EDA_MANAGER_LAYOUT_MODEL_GLOBAL_ATTRIBUTES: IGlobalAttributes = {\r\n splitterSize: 4,\r\n tabSetEnableMaximize: false,\r\n tabSetHeaderHeight: 32,\r\n tabSetTabStripHeight: 32,\r\n tabEnableClose: false,\r\n tabEnableRename: false,\r\n tabEnableDrag: false,\r\n tabSetEnableDrag: false,\r\n}"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import EdaManagerAbstractPanel, { EdaManagerAbstractPanelProps, EdaManagerAbstractPanelState } from "../abstract/edaManagerAbstractPanel";
|
|
3
|
+
import * as FlexLayout from "flexlayout-react";
|
|
4
|
+
interface Props extends EdaManagerAbstractPanelProps {
|
|
5
|
+
}
|
|
6
|
+
interface State extends EdaManagerAbstractPanelState {
|
|
7
|
+
}
|
|
8
|
+
export default class EdaManagerPanel extends EdaManagerAbstractPanel<Props, State> {
|
|
9
|
+
constructor(props: Readonly<Props>);
|
|
10
|
+
protected flexLayoutFactory(node: FlexLayout.TabNode): React.ReactNode;
|
|
11
|
+
getFilterNameToSave(): string;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import EdaManagerAbstractPanel from "../abstract/edaManagerAbstractPanel";
|
|
3
|
+
import * as FlexLayout from "flexlayout-react";
|
|
4
|
+
import EdaManagerVectorList from "../components/edaManagerVectorList";
|
|
5
|
+
import { edaManagerInitialLayoutModel } from "./initialLayout";
|
|
6
|
+
export default class EdaManagerPanel extends EdaManagerAbstractPanel {
|
|
7
|
+
constructor(props) {
|
|
8
|
+
super(props);
|
|
9
|
+
this.state = {
|
|
10
|
+
layoutModel: FlexLayout.Model.fromJson(edaManagerInitialLayoutModel()),
|
|
11
|
+
...this.initialState,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
flexLayoutFactory(node) {
|
|
15
|
+
const component = node.getComponent();
|
|
16
|
+
if (component === "vectors") {
|
|
17
|
+
return (React.createElement(EdaManagerVectorList, { edaApi: this.props.edaApi, advancedFilterApi: this.props.advancedFilterApi, currentVectors: this.state.currentFilter.currentVectors, onChange: () => {
|
|
18
|
+
this.setState({ currentFilter: this.state.currentFilter }, () => {
|
|
19
|
+
this.saveFilter();
|
|
20
|
+
});
|
|
21
|
+
if (this.state.currentFilter.timePanelConfiguration.autoRefresh) {
|
|
22
|
+
this.onLoadVectors();
|
|
23
|
+
}
|
|
24
|
+
} }));
|
|
25
|
+
}
|
|
26
|
+
return super.flexLayoutFactory(node);
|
|
27
|
+
}
|
|
28
|
+
getFilterNameToSave() {
|
|
29
|
+
return "eda-manager-current-filter";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=edaManagerPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edaManagerPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/panel/edaManagerPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,uBAGN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,oBAAoB,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAC,4BAA4B,EAAC,MAAM,iBAAiB,CAAC;AAQ7D,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,uBAAqC;IAC9E,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC;YACtE,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAES,iBAAiB,CAAC,IAAwB;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,CACH,oBAAC,oBAAoB,IACjB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EACvD,QAAQ,EAAE,GAAG,EAAE;oBACX,IAAI,CAAC,QAAQ,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAC,EAAE,GAAG,EAAE;wBAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC;oBAEH,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;wBAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;oBACzB,CAAC;gBACL,CAAC,GACH,CACL,CAAA;QACL,CAAC;QACD,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,mBAAmB;QACf,OAAO,4BAA4B,CAAC;IACxC,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport EdaManagerAbstractPanel, {\r\n EdaManagerAbstractPanelProps,\r\n EdaManagerAbstractPanelState\r\n} from \"../abstract/edaManagerAbstractPanel\";\r\nimport * as FlexLayout from \"flexlayout-react\";\r\nimport EdaManagerVectorList from \"../components/edaManagerVectorList\";\r\nimport {edaManagerInitialLayoutModel} from \"./initialLayout\";\r\n\r\ninterface Props extends EdaManagerAbstractPanelProps {\r\n}\r\n\r\ninterface State extends EdaManagerAbstractPanelState {\r\n}\r\n\r\nexport default class EdaManagerPanel extends EdaManagerAbstractPanel<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n layoutModel: FlexLayout.Model.fromJson(edaManagerInitialLayoutModel()),\r\n ...this.initialState,\r\n }\r\n }\r\n\r\n protected flexLayoutFactory(node: FlexLayout.TabNode): React.ReactNode {\r\n const component = node.getComponent();\r\n if (component === \"vectors\") {\r\n return (\r\n <EdaManagerVectorList\r\n edaApi={this.props.edaApi}\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n currentVectors={this.state.currentFilter.currentVectors}\r\n onChange={() => {\r\n this.setState({currentFilter: this.state.currentFilter}, () => {\r\n this.saveFilter();\r\n });\r\n\r\n if (this.state.currentFilter.timePanelConfiguration.autoRefresh) {\r\n this.onLoadVectors();\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n return super.flexLayoutFactory(node);\r\n }\r\n\r\n getFilterNameToSave(): string {\r\n return \"eda-manager-current-filter\";\r\n }\r\n\r\n}"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import i18n from "d2core/i18n/i18n";
|
|
2
|
+
import { EDA_MANAGER_LAYOUT_MODEL_GLOBAL_ATTRIBUTES } from "../constants";
|
|
3
|
+
export function edaManagerInitialLayoutModel() {
|
|
4
|
+
return {
|
|
5
|
+
global: EDA_MANAGER_LAYOUT_MODEL_GLOBAL_ATTRIBUTES,
|
|
6
|
+
borders: [{
|
|
7
|
+
type: "border",
|
|
8
|
+
location: "left",
|
|
9
|
+
size: 320,
|
|
10
|
+
selected: 0,
|
|
11
|
+
children: [
|
|
12
|
+
{
|
|
13
|
+
type: "tab",
|
|
14
|
+
name: i18n("Vectors"),
|
|
15
|
+
component: "vectors",
|
|
16
|
+
},
|
|
17
|
+
]
|
|
18
|
+
}],
|
|
19
|
+
layout: {
|
|
20
|
+
type: "row",
|
|
21
|
+
children: [{
|
|
22
|
+
type: "tabset",
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
type: "tab",
|
|
26
|
+
name: i18n("Chart"),
|
|
27
|
+
component: "chart",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: "tab",
|
|
31
|
+
name: i18n("Table"),
|
|
32
|
+
component: "table",
|
|
33
|
+
},
|
|
34
|
+
]
|
|
35
|
+
}]
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=initialLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialLayout.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/panel/initialLayout.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,0CAA0C,EAAC,MAAM,cAAc,CAAC;AAExE,MAAM,UAAU,4BAA4B;IACxC,OAAO;QACH,MAAM,EAAE,0CAA0C;QAClD,OAAO,EAAE,CAAC;gBACN,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,KAAK;wBACX,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACrB,SAAS,EAAE,SAAS;qBACvB;iBAWJ;aACJ,CAAC;QACF,MAAM,EAAE;YACJ,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC;oBACP,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE;wBACN;4BACI,IAAI,EAAE,KAAK;4BACX,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;4BACnB,SAAS,EAAE,OAAO;yBAErB;wBACD;4BACI,IAAI,EAAE,KAAK;4BACX,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;4BACnB,SAAS,EAAE,OAAO;yBAErB;qBACJ;iBACJ,CAAC;SACL;KACJ,CAAA;AACL,CAAC","sourcesContent":["import * as FlexLayout from \"flexlayout-react\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EDA_MANAGER_LAYOUT_MODEL_GLOBAL_ATTRIBUTES} from \"../constants\";\r\n\r\nexport function edaManagerInitialLayoutModel(): FlexLayout.IJsonModel {\r\n return {\r\n global: EDA_MANAGER_LAYOUT_MODEL_GLOBAL_ATTRIBUTES,\r\n borders: [{\r\n type: \"border\",\r\n location: \"left\",\r\n size: 320,\r\n selected: 0,\r\n children: [\r\n {\r\n type: \"tab\",\r\n name: i18n(\"Vectors\"),\r\n component: \"vectors\",\r\n },\r\n // {\r\n // type: \"tab\",\r\n // name: i18n(\"Groups\"),\r\n // component: \"groups\",\r\n // },\r\n // {\r\n // type: \"tab\",\r\n // name: i18n(\"Scenarios\"),\r\n // component: \"scenarios\",\r\n // }\r\n ]\r\n }],\r\n layout: {\r\n type: \"row\",\r\n children: [{\r\n type: \"tabset\",\r\n children: [\r\n {\r\n type: \"tab\",\r\n name: i18n(\"Chart\"),\r\n component: \"chart\",\r\n // enableDrag: true,\r\n },\r\n {\r\n type: \"tab\",\r\n name: i18n(\"Table\"),\r\n component: \"table\",\r\n // enableDrag: true,\r\n },\r\n ]\r\n }]\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { InputRef } from "antd";
|
|
3
|
+
import AbstractEntityApi from "../../../api/abstractEntityApi";
|
|
4
|
+
import { AbstractBreadcrumbItem } from "../../abstractListPanel";
|
|
5
|
+
import AuditableEntity from "../../../api/types/auditableEntity";
|
|
6
|
+
import { AccessRight } from "../../../api/types/accessRight";
|
|
7
|
+
import { ErrorCode } from "../../../api/validation/abstractEntityValidationUtils";
|
|
8
|
+
interface GeneralConfigItemParams {
|
|
9
|
+
hidden?: boolean;
|
|
10
|
+
notRequired?: boolean;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface EntityValidationContext {
|
|
14
|
+
errors: ErrorCode[];
|
|
15
|
+
}
|
|
16
|
+
export interface EntityConfigPanelProperties<T extends AuditableEntity> {
|
|
17
|
+
api: AbstractEntityApi<T>;
|
|
18
|
+
selectedEntity?: T;
|
|
19
|
+
hidePrevNextButton?: boolean;
|
|
20
|
+
hideConfigHeader?: boolean;
|
|
21
|
+
hideConfigFooter?: boolean;
|
|
22
|
+
historyMode?: boolean;
|
|
23
|
+
fieldsToHighlight?: string[];
|
|
24
|
+
breadcrumbPath?: AbstractBreadcrumbItem[];
|
|
25
|
+
onClose?(): void;
|
|
26
|
+
onNextRecord?(): void;
|
|
27
|
+
onPrevRecord?(): void;
|
|
28
|
+
onSave?(savedEntity: T): void;
|
|
29
|
+
}
|
|
30
|
+
export interface EntityConfigPanelState<T extends AuditableEntity> {
|
|
31
|
+
originalEntity?: T;
|
|
32
|
+
editedEntity: T;
|
|
33
|
+
editedEntityValidationContext: EntityValidationContext;
|
|
34
|
+
validationIsRunning: boolean;
|
|
35
|
+
savingIsRunning: boolean;
|
|
36
|
+
validateOnChange: boolean;
|
|
37
|
+
waitingForLockResponse: boolean;
|
|
38
|
+
savingIsStarting: boolean;
|
|
39
|
+
nameSameAsCode: boolean;
|
|
40
|
+
}
|
|
41
|
+
export default abstract class AbstractEntityConfigPanel<P extends EntityConfigPanelProperties<E>, S extends EntityConfigPanelState<E>, E extends AuditableEntity = S extends EntityConfigPanelState<infer T> ? T : never> extends React.Component<P, S> {
|
|
42
|
+
protected codeInput: InputRef | null;
|
|
43
|
+
protected constructor(props: Readonly<P>);
|
|
44
|
+
protected initialState: EntityConfigPanelState<E>;
|
|
45
|
+
componentDidMount(): void;
|
|
46
|
+
componentDidUpdate(prevProps: Readonly<P>, prevState: Readonly<S>): void;
|
|
47
|
+
componentWillUnmount(): void;
|
|
48
|
+
getOriginal(): E | undefined;
|
|
49
|
+
getEdited(): E;
|
|
50
|
+
revertChanges(): void;
|
|
51
|
+
abstract validateObject(): ErrorCode[];
|
|
52
|
+
private validate;
|
|
53
|
+
save(isCosmeticChange?: boolean): Promise<E | undefined>;
|
|
54
|
+
protected onSave(): Promise<void>;
|
|
55
|
+
protected afterSave(): void;
|
|
56
|
+
updateEditedObject(): void;
|
|
57
|
+
onChangeEditContext(_original?: E, _edited?: E, _editedEntityValidationContext?: EntityValidationContext): void;
|
|
58
|
+
updateData(originalEntity?: E, editedEntity?: E, editedEntityValidationContext?: EntityValidationContext, callback?: () => void): void;
|
|
59
|
+
renderConfigHeader(hidePrevNextButton?: boolean): React.JSX.Element;
|
|
60
|
+
protected onEditStart(): Promise<void>;
|
|
61
|
+
focusFirstField(): void;
|
|
62
|
+
isEditDisabled(): boolean;
|
|
63
|
+
protected getCodeMaxLength(): number;
|
|
64
|
+
protected getNameMaxLength(): number;
|
|
65
|
+
protected renderCodeSuffix(): React.ReactNode | undefined;
|
|
66
|
+
protected handleCodeChange(value: string): void;
|
|
67
|
+
protected renderGeneralConfigItems(codeConfig?: GeneralConfigItemParams, nameConfig?: GeneralConfigItemParams, hideDivider?: boolean): React.JSX.Element;
|
|
68
|
+
protected renderNoteFormItem(): React.JSX.Element;
|
|
69
|
+
protected isNewEntity(): boolean;
|
|
70
|
+
protected isEditMode(): boolean | undefined;
|
|
71
|
+
protected getAccessRightForEntity(): Promise<{
|
|
72
|
+
accessRight: AccessRight;
|
|
73
|
+
message: string;
|
|
74
|
+
}>;
|
|
75
|
+
protected getFieldsToOmitForCompare(): string[];
|
|
76
|
+
protected isEntityModified(): boolean;
|
|
77
|
+
startEdit(): Promise<boolean>;
|
|
78
|
+
renderConfigFooter(): React.JSX.Element;
|
|
79
|
+
abstract renderConfigForm(): React.ReactNode;
|
|
80
|
+
render(): React.JSX.Element;
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { cloneDeep, isEqual, omit } from "lodash";
|
|
3
|
+
import { Button, Col, Divider, Form, Input, Row, Switch } from "antd";
|
|
4
|
+
import i18n from "d2core/i18n/i18n";
|
|
5
|
+
import { CloseCircleOutlined, EditOutlined, SaveOutlined } from "@ant-design/icons";
|
|
6
|
+
import { UndoIcon } from "d2coreui/components/icons/undoIcon";
|
|
7
|
+
import DetailHeaderPanel from "../grid/detailHeaderPanel";
|
|
8
|
+
import { EntityColumn } from "../advancedFilter/advancedFilterColumnDefinitions";
|
|
9
|
+
import TextArea from "antd/es/input/TextArea";
|
|
10
|
+
import { AccessRight } from "../../../api/types/accessRight";
|
|
11
|
+
import { ModalDialog } from "d2coreui/components/modal/modalDialog";
|
|
12
|
+
import { AbstractEntityValidationErrorEnum, getErrorInfo } from "../../../api/validation/abstractEntityValidationUtils";
|
|
13
|
+
import { DbBoolean } from "../../../api/types/dbBoolean";
|
|
14
|
+
export default class AbstractEntityConfigPanel extends React.Component {
|
|
15
|
+
constructor(props) {
|
|
16
|
+
super(props);
|
|
17
|
+
this.codeInput = null;
|
|
18
|
+
this.initialState = {
|
|
19
|
+
editedEntity: this.props.selectedEntity,
|
|
20
|
+
editedEntityValidationContext: { errors: [] },
|
|
21
|
+
validationIsRunning: false,
|
|
22
|
+
savingIsRunning: false,
|
|
23
|
+
validateOnChange: false,
|
|
24
|
+
waitingForLockResponse: false,
|
|
25
|
+
savingIsStarting: false,
|
|
26
|
+
nameSameAsCode: true,
|
|
27
|
+
};
|
|
28
|
+
this.updateEditedObject = this.updateEditedObject.bind(this);
|
|
29
|
+
this.renderNoteFormItem = this.renderNoteFormItem.bind(this);
|
|
30
|
+
}
|
|
31
|
+
componentDidMount() {
|
|
32
|
+
this.updateEditedObject();
|
|
33
|
+
}
|
|
34
|
+
componentDidUpdate(prevProps, prevState) {
|
|
35
|
+
if (!isEqual(prevProps.selectedEntity, this.props.selectedEntity)) {
|
|
36
|
+
if (prevState.editedEntity?.locked) {
|
|
37
|
+
this.props.api.unlockEntity(prevState.editedEntity);
|
|
38
|
+
}
|
|
39
|
+
this.updateData(this.props.selectedEntity, cloneDeep(this.props.selectedEntity), { errors: [] }, () => {
|
|
40
|
+
this.setState({ validateOnChange: false, nameSameAsCode: this.isNewEntity() });
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
componentWillUnmount() {
|
|
45
|
+
if (this.state.editedEntity?.locked) {
|
|
46
|
+
this.props.api.unlockEntity(this.state.editedEntity);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
getOriginal() {
|
|
50
|
+
return this.state.originalEntity;
|
|
51
|
+
}
|
|
52
|
+
getEdited() {
|
|
53
|
+
return this.state.editedEntity;
|
|
54
|
+
}
|
|
55
|
+
revertChanges() {
|
|
56
|
+
if (this.state.originalEntity && !isEqual(this.state.editedEntity, this.state.originalEntity)) {
|
|
57
|
+
this.updateData(undefined, cloneDeep(this.state.originalEntity), undefined, () => {
|
|
58
|
+
const editedEntityValidationContext = this.state.editedEntityValidationContext;
|
|
59
|
+
editedEntityValidationContext.errors = [];
|
|
60
|
+
this.setState({ editedEntityValidationContext: editedEntityValidationContext });
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async validate() {
|
|
65
|
+
const isNewEntity = this.state.editedEntity.id < 0 || this.state.editedEntity.id === undefined;
|
|
66
|
+
this.setState({ validationIsRunning: true });
|
|
67
|
+
const editedEntityValidationContext = this.state.editedEntityValidationContext;
|
|
68
|
+
editedEntityValidationContext.errors = this.validateObject();
|
|
69
|
+
const code = this.state.editedEntity.code;
|
|
70
|
+
if (isNewEntity && code) {
|
|
71
|
+
const codeExists = await this.props.api.codeExists(code);
|
|
72
|
+
if (codeExists) {
|
|
73
|
+
if (!editedEntityValidationContext.errors.includes(AbstractEntityValidationErrorEnum.CODE_DUPLICATE)) {
|
|
74
|
+
editedEntityValidationContext.errors.push(AbstractEntityValidationErrorEnum.CODE_DUPLICATE);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const index = editedEntityValidationContext.errors.findIndex(value => value === AbstractEntityValidationErrorEnum.CODE_DUPLICATE);
|
|
79
|
+
if (index >= 0) {
|
|
80
|
+
editedEntityValidationContext.errors.splice(index, 1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
this.setState({
|
|
85
|
+
editedEntityValidationContext: editedEntityValidationContext,
|
|
86
|
+
validateOnChange: true,
|
|
87
|
+
validationIsRunning: false,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
;
|
|
91
|
+
async save(isCosmeticChange) {
|
|
92
|
+
await this.validate();
|
|
93
|
+
const errors = this.state.editedEntityValidationContext.errors;
|
|
94
|
+
let savedEntity = undefined;
|
|
95
|
+
if (errors.length === 0 && this.state.originalEntity && !isEqual(this.state.editedEntity, this.state.originalEntity)) {
|
|
96
|
+
this.setState({ savingIsRunning: true });
|
|
97
|
+
savedEntity = await this.props.api.saveEntity(this.state.editedEntity, isCosmeticChange);
|
|
98
|
+
this.setState({ savingIsRunning: false });
|
|
99
|
+
if (savedEntity) {
|
|
100
|
+
this.updateData(savedEntity, cloneDeep(savedEntity), { errors: [] });
|
|
101
|
+
this.props.onSave?.(savedEntity);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
this.afterSave();
|
|
105
|
+
return savedEntity;
|
|
106
|
+
}
|
|
107
|
+
async onSave() {
|
|
108
|
+
await this.save();
|
|
109
|
+
}
|
|
110
|
+
afterSave() {
|
|
111
|
+
}
|
|
112
|
+
updateEditedObject() {
|
|
113
|
+
if (this.state.validateOnChange) {
|
|
114
|
+
this.validate();
|
|
115
|
+
}
|
|
116
|
+
this.updateData(undefined, this.state.editedEntity, this.state.editedEntityValidationContext);
|
|
117
|
+
}
|
|
118
|
+
onChangeEditContext(_original, _edited, _editedEntityValidationContext) {
|
|
119
|
+
}
|
|
120
|
+
updateData(originalEntity, editedEntity, editedEntityValidationContext, callback) {
|
|
121
|
+
const newState = {};
|
|
122
|
+
if (originalEntity) {
|
|
123
|
+
newState.originalEntity = originalEntity;
|
|
124
|
+
}
|
|
125
|
+
if (editedEntity) {
|
|
126
|
+
newState.editedEntity = editedEntity;
|
|
127
|
+
}
|
|
128
|
+
if (editedEntityValidationContext) {
|
|
129
|
+
newState.editedEntityValidationContext = editedEntityValidationContext;
|
|
130
|
+
}
|
|
131
|
+
this.setState(newState, () => {
|
|
132
|
+
this.onChangeEditContext(originalEntity, editedEntity, editedEntityValidationContext);
|
|
133
|
+
callback?.();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
renderConfigHeader(hidePrevNextButton) {
|
|
137
|
+
return (React.createElement(DetailHeaderPanel, { hidePrevNextButton: hidePrevNextButton, code: this.state.editedEntity?.code, onPrevRecord: this.props.onPrevRecord, onNextRecord: this.props.onNextRecord, onClose: this.props.onClose }));
|
|
138
|
+
}
|
|
139
|
+
async onEditStart() {
|
|
140
|
+
this.focusFirstField();
|
|
141
|
+
}
|
|
142
|
+
focusFirstField() {
|
|
143
|
+
if (this.props.selectedEntity?.id === undefined || this.props.selectedEntity?.id === null) {
|
|
144
|
+
this.codeInput?.focus();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
isEditDisabled() {
|
|
148
|
+
const entityExists = !!this.state.originalEntity;
|
|
149
|
+
const isNewEntity = this.state.editedEntity.id < 0 || this.state.editedEntity.id === undefined;
|
|
150
|
+
const isSaveMode = entityExists && (isNewEntity || this.state.editedEntity.locked);
|
|
151
|
+
return !isSaveMode;
|
|
152
|
+
}
|
|
153
|
+
getCodeMaxLength() {
|
|
154
|
+
return 64;
|
|
155
|
+
}
|
|
156
|
+
getNameMaxLength() {
|
|
157
|
+
return 256;
|
|
158
|
+
}
|
|
159
|
+
renderCodeSuffix() {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
handleCodeChange(value) {
|
|
163
|
+
const entity = this.state.editedEntity;
|
|
164
|
+
entity.code = value;
|
|
165
|
+
if (this.state.nameSameAsCode) {
|
|
166
|
+
entity.name = value;
|
|
167
|
+
}
|
|
168
|
+
this.updateEditedObject();
|
|
169
|
+
}
|
|
170
|
+
renderGeneralConfigItems(codeConfig, nameConfig, hideDivider) {
|
|
171
|
+
const entity = this.state.editedEntity;
|
|
172
|
+
const errors = this.state.editedEntityValidationContext.errors;
|
|
173
|
+
const fieldsToHighlight = this.props.fieldsToHighlight;
|
|
174
|
+
const [codeValidateStatus, codeErrorMessage] = getErrorInfo([AbstractEntityValidationErrorEnum.CODE_REQUIRED, AbstractEntityValidationErrorEnum.CODE_DUPLICATE], errors);
|
|
175
|
+
const [nameValidateStatus, nameErrorMessage] = getErrorInfo([AbstractEntityValidationErrorEnum.NAME_REQUIRED], errors);
|
|
176
|
+
return (React.createElement(Form, { className: "record-config-form", layout: "horizontal", labelCol: { sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 } },
|
|
177
|
+
React.createElement(Row, { gutter: 8 },
|
|
178
|
+
React.createElement(Col, { span: 6 },
|
|
179
|
+
React.createElement(Form.Item, { label: i18n("ID") },
|
|
180
|
+
React.createElement(Input, { disabled: true, value: entity.id }))),
|
|
181
|
+
!codeConfig?.hidden &&
|
|
182
|
+
React.createElement(Col, { span: 18 },
|
|
183
|
+
React.createElement(Form.Item, { label: i18n("Code"), validateStatus: fieldsToHighlight?.includes(EntityColumn.CODE) ? "warning" : codeValidateStatus, help: codeErrorMessage, required: !codeConfig?.notRequired },
|
|
184
|
+
React.createElement(Input, { disabled: entity.id !== undefined || this.isEditDisabled() || codeConfig?.disabled, ref: (input) => {
|
|
185
|
+
this.codeInput = input;
|
|
186
|
+
}, value: entity.code ?? undefined, onChange: e => {
|
|
187
|
+
this.handleCodeChange(e.target.value);
|
|
188
|
+
}, suffix: this.renderCodeSuffix(), maxLength: this.getCodeMaxLength(), showCount: true })))),
|
|
189
|
+
!nameConfig?.hidden &&
|
|
190
|
+
React.createElement(Form.Item, { className: "form-item-full-width-label", label: React.createElement("div", { style: {
|
|
191
|
+
width: "100%",
|
|
192
|
+
display: "flex",
|
|
193
|
+
justifyContent: "space-between",
|
|
194
|
+
alignItems: "baseline",
|
|
195
|
+
} },
|
|
196
|
+
React.createElement("span", null, i18n("Name")),
|
|
197
|
+
this.isNewEntity() &&
|
|
198
|
+
React.createElement("span", { style: { display: "flex" } },
|
|
199
|
+
React.createElement(Switch, { style: { marginRight: 4 }, size: "small", checked: this.state.nameSameAsCode, onChange: checked => {
|
|
200
|
+
this.setState({ nameSameAsCode: checked });
|
|
201
|
+
if (checked) {
|
|
202
|
+
entity.name = entity.code;
|
|
203
|
+
this.updateEditedObject();
|
|
204
|
+
}
|
|
205
|
+
} }),
|
|
206
|
+
i18n("Same As Code"))), validateStatus: fieldsToHighlight?.includes(EntityColumn.NAME) ? "warning" : nameValidateStatus, help: nameErrorMessage, required: !nameConfig?.notRequired },
|
|
207
|
+
React.createElement(Input, { value: entity.name ?? undefined, disabled: this.isEditDisabled() || nameConfig?.disabled || this.state.nameSameAsCode, onChange: e => {
|
|
208
|
+
entity.name = e.target.value;
|
|
209
|
+
this.updateEditedObject();
|
|
210
|
+
}, maxLength: this.getNameMaxLength() })),
|
|
211
|
+
!hideDivider && React.createElement(Divider, { className: "compact-divider" })));
|
|
212
|
+
}
|
|
213
|
+
renderNoteFormItem() {
|
|
214
|
+
const entity = this.state.editedEntity;
|
|
215
|
+
const fieldsToHighlight = this.props.fieldsToHighlight;
|
|
216
|
+
return (React.createElement(Form.Item, { label: i18n("Note"), validateStatus: fieldsToHighlight?.includes(EntityColumn.NOTE) ? "warning" : undefined },
|
|
217
|
+
React.createElement(TextArea, { disabled: this.isEditDisabled(), value: entity.note ?? undefined, onChange: event => {
|
|
218
|
+
entity.note = event.target.value;
|
|
219
|
+
this.updateEditedObject();
|
|
220
|
+
} })));
|
|
221
|
+
}
|
|
222
|
+
isNewEntity() {
|
|
223
|
+
return !this.state.editedEntity?.id;
|
|
224
|
+
}
|
|
225
|
+
isEditMode() {
|
|
226
|
+
return this.state.originalEntity && !this.isNewEntity() && !this.state.editedEntity.locked;
|
|
227
|
+
}
|
|
228
|
+
async getAccessRightForEntity() {
|
|
229
|
+
return {
|
|
230
|
+
accessRight: AccessRight.WRITE,
|
|
231
|
+
message: "",
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
getFieldsToOmitForCompare() {
|
|
235
|
+
return ["locked"];
|
|
236
|
+
}
|
|
237
|
+
isEntityModified() {
|
|
238
|
+
return !isEqual(omit(cloneDeep(this.state.editedEntity), this.getFieldsToOmitForCompare()), omit(cloneDeep(this.state.originalEntity), this.getFieldsToOmitForCompare()));
|
|
239
|
+
}
|
|
240
|
+
async startEdit() {
|
|
241
|
+
this.setState({ savingIsStarting: true });
|
|
242
|
+
await this.onEditStart();
|
|
243
|
+
const accessRightResult = await this.getAccessRightForEntity();
|
|
244
|
+
this.setState({ savingIsStarting: false });
|
|
245
|
+
if (accessRightResult.accessRight !== AccessRight.WRITE) {
|
|
246
|
+
ModalDialog.error({
|
|
247
|
+
mode: "OK",
|
|
248
|
+
title: i18n("Edit is not allowed"),
|
|
249
|
+
content: accessRightResult.message,
|
|
250
|
+
okText: i18n("Cancel")
|
|
251
|
+
});
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
this.setState({ waitingForLockResponse: true, nameSameAsCode: false });
|
|
256
|
+
const isOk = await this.props.api.lockEntity(this.state.editedEntity);
|
|
257
|
+
this.setState({ waitingForLockResponse: false });
|
|
258
|
+
if (isOk) {
|
|
259
|
+
this.updateEditedObject();
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
renderConfigFooter() {
|
|
268
|
+
const entityExists = !!this.state.originalEntity;
|
|
269
|
+
const isNewEntity = this.isNewEntity();
|
|
270
|
+
const isEditMode = this.isEditMode();
|
|
271
|
+
const isSaveMode = entityExists && (isNewEntity || this.state.editedEntity.locked);
|
|
272
|
+
const isEntityModified = entityExists && this.isEntityModified();
|
|
273
|
+
return (React.createElement("div", { style: { padding: 8 } },
|
|
274
|
+
React.createElement(Button.Group, { style: { width: "100%" } },
|
|
275
|
+
React.createElement(Button, { disabled: !entityExists || (isSaveMode ? !isEntityModified : !isEditMode) || this.state.editedEntityValidationContext.errors.length !== 0 || this.state.validationIsRunning, block: true, loading: this.state.waitingForLockResponse || this.state.savingIsStarting || this.state.savingIsRunning, type: "primary", icon: isSaveMode ? React.createElement(SaveOutlined, null) : React.createElement(EditOutlined, null), onClick: async () => {
|
|
276
|
+
if (isSaveMode) {
|
|
277
|
+
await this.onSave();
|
|
278
|
+
}
|
|
279
|
+
else if (isEditMode) {
|
|
280
|
+
await this.startEdit();
|
|
281
|
+
}
|
|
282
|
+
} }, isSaveMode ? i18n("Save") : i18n("Edit")),
|
|
283
|
+
React.createElement(Button, { disabled: !entityExists || !isSaveMode, block: true, danger: true, icon: (isEntityModified && !isNewEntity) ? React.createElement(UndoIcon, null) : React.createElement(CloseCircleOutlined, null), onClick: async () => {
|
|
284
|
+
if (isNewEntity) {
|
|
285
|
+
this.props.onClose?.();
|
|
286
|
+
}
|
|
287
|
+
else if (isSaveMode) {
|
|
288
|
+
if (this.state.editedEntity.locked) {
|
|
289
|
+
await this.props.api.unlockEntity(this.state.editedEntity);
|
|
290
|
+
}
|
|
291
|
+
this.revertChanges();
|
|
292
|
+
}
|
|
293
|
+
} }, (isEntityModified && !isNewEntity) ? i18n("Revert Changes") : i18n("Cancel")))));
|
|
294
|
+
}
|
|
295
|
+
render() {
|
|
296
|
+
const entity = this.state.editedEntity;
|
|
297
|
+
const { hideConfigHeader, hideConfigFooter, historyMode } = this.props;
|
|
298
|
+
return (React.createElement("div", { style: { display: "flex", flexDirection: "column", overflow: "hidden", width: "100%", height: "100%" } },
|
|
299
|
+
!hideConfigHeader && !historyMode && this.renderConfigHeader(entity?.id === undefined || this.props.hidePrevNextButton),
|
|
300
|
+
React.createElement("div", { style: { flex: "1 1 auto", overflow: "hidden" } },
|
|
301
|
+
React.createElement("div", { style: { height: `calc(100% - ${hideConfigFooter ? 0 : 48}px)` } },
|
|
302
|
+
React.createElement("div", { style: { height: "100%", overflow: "auto" } },
|
|
303
|
+
React.createElement("div", { style: { margin: "0px 12px 16px" } }, entity && this.renderConfigForm()))),
|
|
304
|
+
!hideConfigFooter && !historyMode && entity?.ano_platny === DbBoolean.TRUE && this.renderConfigFooter())));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=abstractEntityConfigPanel.js.map
|