d2aura 23.0.53 → 23.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coreui/components/advancedFilter/advancedFilteredGrid.js +1 -1
- package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -1
- package/coreui/components/d2Chart/d2ChartPanel.js +1 -1
- package/coreui/components/d2Chart/d2ChartPanel.js.map +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.d.ts +7 -3
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js +25 -7
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js.map +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.d.ts +2 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.js.map +1 -1
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.d.ts +2 -1
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js +3 -1
- package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js.map +1 -1
- package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.js.map +1 -1
- package/coreui/components/edaManager/components/edaManagerTablePanel.d.ts +3 -1
- package/coreui/components/edaManager/components/edaManagerTablePanel.js +65 -41
- package/coreui/components/edaManager/components/edaManagerTablePanel.js.map +1 -1
- package/coreui/components/edaManager/panel/edaManagerPanel.js.map +1 -1
- package/coreui/components/editor/abstractEntityConfigPanel.d.ts +8 -1
- package/coreui/components/editor/abstractEntityConfigPanel.js +5 -4
- package/coreui/components/editor/abstractEntityConfigPanel.js.map +1 -1
- package/coreui/components/grid/detailHeaderPanel.d.ts +1 -0
- package/coreui/components/grid/detailHeaderPanel.js +6 -4
- package/coreui/components/grid/detailHeaderPanel.js.map +1 -1
- package/coreui/components/select/abstractSelect.d.ts +2 -1
- package/coreui/components/select/abstractSelect.js +6 -6
- package/coreui/components/select/abstractSelect.js.map +1 -1
- package/coreui/style/index.less +5 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaManagerCompactPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/compactPanel/edaManagerCompactPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,uBAIN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,4BAA4B,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAY,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAE9D,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,SAAS,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"edaManagerCompactPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/compactPanel/edaManagerCompactPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,uBAIN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,4BAA4B,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAY,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAE9D,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAazC,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,uBAAqC;IACrF,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;IAED,kBAAkB,CAAC,SAA0B;QACzC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnU,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAC/C,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACrE,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YACzD,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YACnF,aAAa,CAAC,sBAAsB,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAC/E,aAAa,CAAC,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,aAAa,CAAC;YAExG,IAAI,CAAC,QAAQ,CAAC;gBACV,aAAa,EAAE,EAAE;gBACjB,oBAAoB,EAAE,EAAE;gBACxB,aAAa,EAAE,aAAa;gBAC5B,gBAAgB,EAAE,SAAS,CAAC,aAAa,CAAC;aAC7C,EAAE,GAAG,EAAE;gBACJ,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;oBAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,IAAc,2BAA2B;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAc,eAAe;QACzB,OAAO,EAAC,OAAO,EAAE,aAAa,EAAC,CAAC;IACpC,CAAC;IAED,IAAc,aAAa;QACvB,OAAO;YACH,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB;YACrD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACzC,sBAAsB,EAAE;gBACpB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;gBAC5C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACxC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,aAAa;gBACjE,WAAW,EAAE,KAAK;aACrB;SACJ,CAAA;IACL,CAAC;CACJ","sourcesContent":["import EdaManagerAbstractPanel, {\r\n EdaManagerAbstractPanelProps,\r\n EdaManagerAbstractPanelState,\r\n EdaManagerFilter\r\n} from \"../abstract/edaManagerAbstractPanel\";\r\nimport * as FlexLayout from \"flexlayout-react\";\r\nimport {edaManagerCompactLayoutModel} from \"./initialLayout\";\r\nimport {EdaVector, EdaStepEnum} from \"../../../../api/edaApi\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\n\r\ninterface Props extends EdaManagerAbstractPanelProps {\r\n initialArchiveValues?: string[]\r\n initialVectors?: EdaVector[]\r\n initialTimeFrom: dayjs.Dayjs | null\r\n initialTimeTo: dayjs.Dayjs | null\r\n initialStep?: EdaStepEnum\r\n}\r\n\r\ninterface State extends EdaManagerAbstractPanelState {\r\n}\r\n\r\nexport default class EdaManagerCompactPanel 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(edaManagerCompactLayoutModel()),\r\n ...this.initialState,\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<Props>) {\r\n if (!isEqual(prevProps.initialVectors, this.props.initialVectors) || !isEqual(prevProps.initialArchiveValues, this.props.initialArchiveValues) || !isEqual(prevProps.initialTimeFrom, this.props.initialTimeFrom) || !isEqual(prevProps.initialTimeTo, this.props.initialTimeTo) || prevProps.initialStep !== this.props.initialStep) {\r\n const currentFilter = this.state.currentFilter;\r\n currentFilter.currentArchiveValues = this.props.initialArchiveValues;\r\n currentFilter.currentVectors = this.props.initialVectors;\r\n currentFilter.timePanelConfiguration.selectedTimeFrom = this.props.initialTimeFrom;\r\n currentFilter.timePanelConfiguration.selectedTimeTo = this.props.initialTimeTo;\r\n currentFilter.timePanelConfiguration.selectedStep = this.props.initialStep ?? EdaStepEnum.DEFAULT_VALUE;\r\n\r\n this.setState({\r\n loadedVectors: [],\r\n loadedCalendarVector: [],\r\n currentFilter: currentFilter,\r\n loadedDataFilter: cloneDeep(currentFilter),\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 protected get edaManagerChartPanelCompact(): boolean {\r\n return true;\r\n }\r\n\r\n protected get tabWrapperStyle(): React.CSSProperties {\r\n return {padding: \"8px 0px 0px\"};\r\n }\r\n\r\n protected get initialFilter(): EdaManagerFilter {\r\n return {\r\n currentArchiveValues: this.props.initialArchiveValues,\r\n currentVectors: this.props.initialVectors,\r\n timePanelConfiguration: {\r\n selectedTimeFrom: this.props.initialTimeFrom,\r\n selectedTimeTo: this.props.initialTimeTo,\r\n selectedStep: this.props.initialStep ?? EdaStepEnum.DEFAULT_VALUE,\r\n autoRefresh: false,\r\n }\r\n }\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaVectorDetailTablePanel.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,4BAGN,MAAM,6CAA6C,CAAC;AAErD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAGpC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAStD,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,4BAA0C;IAC7F,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAEO,aAAa,CAAC,IAAsB;QACxC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IAES,WAAW,CAAC,IAAsB;QACxC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAC,eAAe,EAAE,SAAS,EAAC,CAAC;QACxC,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAsBD,aAAa;QACT,OAAO;YACH,IAAI,CAAC,iBAAiB,EAAE;YACxB;gBACI,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"edaVectorDetailTablePanel.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,4BAGN,MAAM,6CAA6C,CAAC;AAErD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAGpC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAStD,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,4BAA0C;IAC7F,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;IAEO,aAAa,CAAC,IAAsB;QACxC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IAES,WAAW,CAAC,IAAsB;QACxC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAC,eAAe,EAAE,SAAS,EAAC,CAAC;QACxC,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAsBD,aAAa;QACT,OAAO;YACH,IAAI,CAAC,iBAAiB,EAAE;YACxB;gBACI,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,cAAe,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;gBACpD,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,CAAC,YAAY,CAAC;gBACpB,YAAY,EAAE,GAAG;gBACjB,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,CAAC,MAAW,EAAE,EAAE;oBAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAwB,CAAC;oBAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;oBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;oBACxB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACxC,MAAM,KAAK,GAAG,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3D,OAAO,8BAAM,KAAK,EAAE,KAAK,IAAG,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAQ,CAAC;oBACpF,CAAC;yBAAM,CAAC;wBACJ,OAAO,EAAE,CAAC;oBACd,CAAC;gBACL,CAAC;gBACD,kBAAkB,EAAE,GAAG,EAAE;oBACrB,OAAO;wBACH,SAAS,EAAE,kBAAkB;wBAC7B,MAAM,EAAE;4BACJ,gBAAgB,EAAE,GAAG;yBACxB;qBACJ,CAAA;gBACL,CAAC;gBACD,WAAW,EAAE,MAAM,CAAC,EAAE;oBAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAwB,CAAC;oBAC7C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;oBAEnE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAEtB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,qBAAqB,EAAE,IAAI;gBAC3B,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B;SACJ,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport EdaManagerAbstractTablePanel, {\r\n EdaManagerAbstractTablePanelProps,\r\n EdaManagerAbstractTablePanelState\r\n} from \"../../abstract/edaManagerAbstractTablePanel\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EdaManagerRecord} from \"../../../../../api/edaApi\";\r\nimport {GridRowStyle} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\n\r\ninterface Props extends EdaManagerAbstractTablePanelProps {\r\n onChange(): void\r\n}\r\n\r\ninterface State extends EdaManagerAbstractTablePanelState {\r\n}\r\n\r\nexport default class EdaVectorDetailTablePanel extends EdaManagerAbstractTablePanel<Props, State> {\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 private isDataChanged(data: EdaManagerRecord): boolean {\r\n return data.col0 !== data.col1;\r\n }\r\n\r\n protected getRowStyle(data: EdaManagerRecord): GridRowStyle | undefined {\r\n if (this.isDataChanged(data)) {\r\n return {backgroundColor: \"#f4ffb8\"};\r\n }\r\n return undefined;\r\n }\r\n\r\n // protected renderContextMenu(originalMenuItems: MenuElement[]): MenuElement[] {\r\n // console.log(\"XX\", this.state.selectedData);\r\n //\r\n // return [\r\n // <Menu.Item key=\"revertCell\" icon={<UndoMenuIcon/>} disabled={false}>\r\n // {i18n(\"Revert Changes\")}\r\n // </Menu.Item>,\r\n // <Menu.Divider/>,\r\n // <Menu.SubMenu key=\"exportSubMenu\" icon={<DownloadOutlined/>} title={i18n(\"Export\")}>\r\n // {originalMenuItems}\r\n // </Menu.SubMenu>\r\n // ];\r\n // }\r\n //\r\n // protected onClickContextMenuItem(key: string) {\r\n // if (key === \"setNull\") {\r\n //\r\n // }\r\n // }\r\n\r\n getColumnDefs(): DataGridColDef[] {\r\n return [\r\n this.getDateTimeColumn(),\r\n {\r\n headerName: this.props.currentVectors![1].name ?? \"\",\r\n colId: \"col1\",\r\n field: \"col1\",\r\n type: [\"alignRight\"],\r\n initialWidth: 140,\r\n editable: true,\r\n cellRenderer: (params: any) => {\r\n const data = params.data as EdaManagerRecord;\r\n const originalValue = data.col0;\r\n const value = data.col1;\r\n if (value !== undefined && value !== null) {\r\n const title = originalValue !== value ? originalValue : \"\";\r\n return <span title={title}>{LocaleHolder.formatNumber(value, 13, false)}</span>;\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n cellEditorSelector: () => {\r\n return {\r\n component: \"numberCellEditor\",\r\n params: {\r\n decimalSeparator: \",\"\r\n }\r\n }\r\n },\r\n valueSetter: params => {\r\n const data = params.data as EdaManagerRecord;\r\n data.col1 = params.newValue !== null ? params.newValue : undefined;\r\n\r\n this.props.onChange();\r\n\r\n return true;\r\n },\r\n enableCellChangeFlash: true,\r\n group: i18n(\"Basic Columns\"),\r\n }\r\n ];\r\n }\r\n\r\n}"]}
|
|
@@ -3,7 +3,7 @@ import { DataGridColDef } from "d2coreui/components/grid/dataGrid";
|
|
|
3
3
|
import { EdaApi, EdaManagerRecord, EdaVector } from "../../../../api/edaApi";
|
|
4
4
|
import EdaManagerAbstractTablePanel, { EdaManagerAbstractTablePanelProps, EdaManagerAbstractTablePanelState } from "../abstract/edaManagerAbstractTablePanel";
|
|
5
5
|
interface Props extends EdaManagerAbstractTablePanelProps {
|
|
6
|
-
edaApi
|
|
6
|
+
edaApi?: EdaApi;
|
|
7
7
|
timePanel?: React.ReactElement;
|
|
8
8
|
onReloadVectorData(code: string): void;
|
|
9
9
|
}
|
|
@@ -14,6 +14,8 @@ interface State extends EdaManagerAbstractTablePanelState {
|
|
|
14
14
|
}
|
|
15
15
|
export default class EdaManagerTablePanel extends EdaManagerAbstractTablePanel<Props, State> {
|
|
16
16
|
constructor(props: Readonly<Props>);
|
|
17
|
+
private getColumnDefsForEdaVectors;
|
|
18
|
+
private getColumnDefsForArchiveValues;
|
|
17
19
|
getColumnDefs(): DataGridColDef[];
|
|
18
20
|
private renderEdaVectorDetailModalDialog;
|
|
19
21
|
protected renderToolbarButtons(): React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
|
|
@@ -14,50 +14,74 @@ export default class EdaManagerTablePanel extends EdaManagerAbstractTablePanel {
|
|
|
14
14
|
...this.initialState
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
+
getColumnDefsForEdaVectors() {
|
|
18
|
+
return this.props.currentVectors?.map((vector, index) => {
|
|
19
|
+
return {
|
|
20
|
+
headerName: vector.name ?? "",
|
|
21
|
+
colId: vector.code ?? "",
|
|
22
|
+
field: `col${index}`,
|
|
23
|
+
type: ["numberColumn", "alignRight"],
|
|
24
|
+
cellRenderer: (params) => {
|
|
25
|
+
const value = params.value;
|
|
26
|
+
if (value !== undefined && value !== null) {
|
|
27
|
+
return LocaleHolder.formatNumber(value, 6, false);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return "";
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
initialWidth: 140,
|
|
34
|
+
onCellDoubleClicked: (event) => {
|
|
35
|
+
const edaVectorForDetailPanel = cloneDeep(this.props.currentVectors.find(value => value.code === event.colDef.colId));
|
|
36
|
+
const vectorToEdit = cloneDeep(edaVectorForDetailPanel);
|
|
37
|
+
edaVectorForDetailPanel.name = i18n("Original Data");
|
|
38
|
+
vectorToEdit.code += "-edited";
|
|
39
|
+
if (vectorToEdit.colorIndex !== undefined) {
|
|
40
|
+
vectorToEdit.colorIndex++;
|
|
41
|
+
}
|
|
42
|
+
this.setState({
|
|
43
|
+
edaVectorDetailModalVisible: true,
|
|
44
|
+
edaVectorsForDetailPanel: [edaVectorForDetailPanel, vectorToEdit],
|
|
45
|
+
loadedVectorDataForDetailPanel: this.props.loadedVectors.map(value => {
|
|
46
|
+
return {
|
|
47
|
+
id: value.id,
|
|
48
|
+
date: value.date,
|
|
49
|
+
col0: value[event.colDef.field],
|
|
50
|
+
col1: value[event.colDef.field],
|
|
51
|
+
};
|
|
52
|
+
})
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
group: i18n("Basic Columns"),
|
|
56
|
+
};
|
|
57
|
+
}) ?? [];
|
|
58
|
+
}
|
|
59
|
+
getColumnDefsForArchiveValues() {
|
|
60
|
+
return this.props.currentArchiveValues?.map((value, index) => {
|
|
61
|
+
return {
|
|
62
|
+
headerName: value,
|
|
63
|
+
colId: value,
|
|
64
|
+
field: `col${index}`,
|
|
65
|
+
type: ["numberColumn", "alignRight"],
|
|
66
|
+
cellRenderer: (params) => {
|
|
67
|
+
const value = params.value;
|
|
68
|
+
if (value !== undefined && value !== null) {
|
|
69
|
+
return LocaleHolder.formatNumber(value, 6, false);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return "";
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
initialWidth: 140,
|
|
76
|
+
group: i18n("Basic Columns"),
|
|
77
|
+
};
|
|
78
|
+
}) ?? [];
|
|
79
|
+
}
|
|
17
80
|
getColumnDefs() {
|
|
18
81
|
return [
|
|
19
82
|
this.getDateTimeColumn(),
|
|
20
|
-
...this.
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
headerName: vector.name ?? "",
|
|
24
|
-
colId: vector.code ?? "",
|
|
25
|
-
field: `col${index}`,
|
|
26
|
-
type: ["numberColumn", "alignRight"],
|
|
27
|
-
cellRenderer: (params) => {
|
|
28
|
-
const value = params.value;
|
|
29
|
-
if (value !== undefined && value !== null) {
|
|
30
|
-
return LocaleHolder.formatNumber(value, 6, false);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return "";
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
initialWidth: 140,
|
|
37
|
-
onCellDoubleClicked: (event) => {
|
|
38
|
-
const edaVectorForDetailPanel = cloneDeep(this.props.currentVectors.find(value => value.code === event.colDef.colId));
|
|
39
|
-
const vectorToEdit = cloneDeep(edaVectorForDetailPanel);
|
|
40
|
-
edaVectorForDetailPanel.name = i18n("Original Data");
|
|
41
|
-
vectorToEdit.code += "-edited";
|
|
42
|
-
if (vectorToEdit.colorIndex !== undefined) {
|
|
43
|
-
vectorToEdit.colorIndex++;
|
|
44
|
-
}
|
|
45
|
-
this.setState({
|
|
46
|
-
edaVectorDetailModalVisible: true,
|
|
47
|
-
edaVectorsForDetailPanel: [edaVectorForDetailPanel, vectorToEdit],
|
|
48
|
-
loadedVectorDataForDetailPanel: this.props.loadedVectors.map(value => {
|
|
49
|
-
return {
|
|
50
|
-
id: value.id,
|
|
51
|
-
date: value.date,
|
|
52
|
-
col0: value[event.colDef.field],
|
|
53
|
-
col1: value[event.colDef.field],
|
|
54
|
-
};
|
|
55
|
-
})
|
|
56
|
-
});
|
|
57
|
-
},
|
|
58
|
-
group: i18n("Basic Columns"),
|
|
59
|
-
};
|
|
60
|
-
})
|
|
83
|
+
...this.getColumnDefsForEdaVectors(),
|
|
84
|
+
...this.getColumnDefsForArchiveValues(),
|
|
61
85
|
];
|
|
62
86
|
}
|
|
63
87
|
renderEdaVectorDetailModalDialog() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edaManagerTablePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/components/edaManagerTablePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAGpC,OAAO,0BAA0B,MAAM,qCAAqC,CAAC;AAC7E,OAAO,4BAGN,MAAM,0CAA0C,CAAC;AAClD,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAetD,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,4BAA0C;IACxF,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,2BAA2B,EAAE,KAAK;YAClC,wBAAwB,EAAE,EAAE;YAC5B,8BAA8B,EAAE,EAAE;YAClC,GAAG,IAAI,CAAC,YAAY;SACvB,CAAA;IACL,CAAC;
|
|
1
|
+
{"version":3,"file":"edaManagerTablePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/components/edaManagerTablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EdaApi, EdaManagerRecord, EdaVector} from \"../../../../api/edaApi\";\r\nimport {CellDoubleClickedEvent} from \"ag-grid-community\";\r\nimport EdaVectorDetailModalDialog from \"./detail/edaVectorDetailModalDialog\";\r\nimport EdaManagerAbstractTablePanel, {\r\n EdaManagerAbstractTablePanelProps,\r\n EdaManagerAbstractTablePanelState\r\n} from \"../abstract/edaManagerAbstractTablePanel\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\n\r\ninterface Props extends EdaManagerAbstractTablePanelProps {\r\n edaApi?: EdaApi\r\n timePanel?: React.ReactElement\r\n\r\n onReloadVectorData(code: string): void\r\n}\r\n\r\ninterface State extends EdaManagerAbstractTablePanelState {\r\n edaVectorDetailModalVisible: boolean\r\n edaVectorsForDetailPanel: EdaVector[]\r\n loadedVectorDataForDetailPanel: EdaManagerRecord[],\r\n}\r\n\r\nexport default class EdaManagerTablePanel extends EdaManagerAbstractTablePanel<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n edaVectorDetailModalVisible: false,\r\n edaVectorsForDetailPanel: [],\r\n loadedVectorDataForDetailPanel: [],\r\n ...this.initialState\r\n }\r\n }\r\n\r\n private getColumnDefsForEdaVectors(): DataGridColDef[] {\r\n return this.props.currentVectors?.map((vector, index) => {\r\n return {\r\n headerName: vector.name ?? \"\",\r\n colId: vector.code ?? \"\",\r\n field: `col${index}`,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n cellRenderer: (params: any): string => {\r\n const value = params.value;\r\n if (value !== undefined && value !== null) {\r\n return LocaleHolder.formatNumber(value, 6, false);\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n initialWidth: 140,\r\n onCellDoubleClicked: (event: CellDoubleClickedEvent) => {\r\n const edaVectorForDetailPanel = cloneDeep(this.props.currentVectors!.find(value => value.code === event.colDef.colId)!);\r\n const vectorToEdit = cloneDeep(edaVectorForDetailPanel);\r\n\r\n edaVectorForDetailPanel.name = i18n(\"Original Data\");\r\n\r\n vectorToEdit.code += \"-edited\";\r\n if (vectorToEdit.colorIndex !== undefined) {\r\n vectorToEdit.colorIndex++;\r\n }\r\n\r\n this.setState({\r\n edaVectorDetailModalVisible: true,\r\n edaVectorsForDetailPanel: [edaVectorForDetailPanel, vectorToEdit],\r\n loadedVectorDataForDetailPanel: this.props.loadedVectors.map(value => {\r\n return {\r\n id: value.id,\r\n date: value.date,\r\n col0: value[event.colDef.field!],\r\n col1: value[event.colDef.field!],\r\n };\r\n })\r\n });\r\n },\r\n group: i18n(\"Basic Columns\"),\r\n }\r\n }) ?? []\r\n }\r\n\r\n private getColumnDefsForArchiveValues(): DataGridColDef[] {\r\n return this.props.currentArchiveValues?.map((value, index) => {\r\n return {\r\n headerName: value,\r\n colId: value,\r\n field: `col${index}`,\r\n type: [\"numberColumn\", \"alignRight\"],\r\n cellRenderer: (params: any): string => {\r\n const value = params.value;\r\n if (value !== undefined && value !== null) {\r\n return LocaleHolder.formatNumber(value, 6, false);\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n initialWidth: 140,\r\n group: i18n(\"Basic Columns\"),\r\n }\r\n }) ?? []\r\n }\r\n\r\n\r\n getColumnDefs(): DataGridColDef[] {\r\n return [\r\n this.getDateTimeColumn(),\r\n ...this.getColumnDefsForEdaVectors(),\r\n ...this.getColumnDefsForArchiveValues(),\r\n ]\r\n }\r\n\r\n private renderEdaVectorDetailModalDialog() {\r\n return (\r\n <EdaVectorDetailModalDialog\r\n edaApi={this.props.edaApi!}\r\n visible={this.state.edaVectorDetailModalVisible}\r\n onCancel={() => this.setState({edaVectorDetailModalVisible: false})}\r\n edaVectors={this.state.edaVectorsForDetailPanel}\r\n loadedVectorData={this.state.loadedVectorDataForDetailPanel}\r\n onReloadVectorData={() => {\r\n this.props.onReloadVectorData(this.state.edaVectorsForDetailPanel[0]?.code ?? \"\");\r\n this.setState({\r\n edaVectorDetailModalVisible: false,\r\n edaVectorsForDetailPanel: [],\r\n loadedVectorDataForDetailPanel: [],\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderToolbarButtons() {\r\n return this.props.timePanel;\r\n }\r\n\r\n protected renderAdditionalContent(): React.ReactNode | undefined {\r\n return this.renderEdaVectorDetailModalDialog()\r\n }\r\n\r\n}"]}
|
|
@@ -1 +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;AAU7D,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,
|
|
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;AAU7D,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,MAAO,EAC1B,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAe,EACxD,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\nimport {AdvancedFilterApi} from \"../../../../api/advancedFilterApi\";\r\n\r\ninterface Props extends EdaManagerAbstractPanelProps {\r\n advancedFilterApi: AdvancedFilterApi\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}"]}
|
|
@@ -5,6 +5,7 @@ import { AbstractBreadcrumbItem } from "../../abstractListPanel";
|
|
|
5
5
|
import AuditableEntity from "../../../api/types/auditableEntity";
|
|
6
6
|
import { AccessRight } from "../../../api/types/accessRight";
|
|
7
7
|
import { ErrorCode } from "../../../api/validation/abstractEntityValidationUtils";
|
|
8
|
+
import { SizeType } from "antd/lib/config-provider/SizeContext";
|
|
8
9
|
interface GeneralConfigItemParams {
|
|
9
10
|
hidden?: boolean;
|
|
10
11
|
notRequired?: boolean;
|
|
@@ -16,6 +17,7 @@ export interface EntityValidationContext {
|
|
|
16
17
|
export interface EntityConfigPanelProperties<T extends AuditableEntity> {
|
|
17
18
|
api: AbstractEntityApi<T>;
|
|
18
19
|
selectedEntity?: T;
|
|
20
|
+
title?: React.ReactNode;
|
|
19
21
|
hidePrevNextButton?: boolean;
|
|
20
22
|
hideConfigHeader?: boolean;
|
|
21
23
|
hideConfigFooter?: boolean;
|
|
@@ -67,7 +69,12 @@ export default abstract class AbstractEntityConfigPanel<P extends EntityConfigPa
|
|
|
67
69
|
protected renderNamePrefix(): React.ReactNode | undefined;
|
|
68
70
|
protected handleCodeChange(value: string): void;
|
|
69
71
|
protected handleNameChange(value: string): void;
|
|
70
|
-
protected renderGeneralConfigItems(
|
|
72
|
+
protected renderGeneralConfigItems(config?: {
|
|
73
|
+
codeConfig?: GeneralConfigItemParams;
|
|
74
|
+
nameConfig?: GeneralConfigItemParams;
|
|
75
|
+
dividerHidden?: boolean;
|
|
76
|
+
size?: SizeType;
|
|
77
|
+
}): React.JSX.Element;
|
|
71
78
|
protected renderNoteFormItem(): React.JSX.Element;
|
|
72
79
|
protected isNewEntity(): boolean;
|
|
73
80
|
protected isEditMode(): boolean | undefined;
|
|
@@ -134,7 +134,7 @@ export default class AbstractEntityConfigPanel extends React.Component {
|
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
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 }));
|
|
137
|
+
return (React.createElement(DetailHeaderPanel, { title: this.props.title, hidePrevNextButton: hidePrevNextButton, code: this.state.editedEntity?.code, onPrevRecord: this.props.onPrevRecord, onNextRecord: this.props.onNextRecord, onClose: this.props.onClose }));
|
|
138
138
|
}
|
|
139
139
|
async onEditStart() {
|
|
140
140
|
this.focusFirstField();
|
|
@@ -178,13 +178,14 @@ export default class AbstractEntityConfigPanel extends React.Component {
|
|
|
178
178
|
entity.name = value;
|
|
179
179
|
this.updateEditedObject();
|
|
180
180
|
}
|
|
181
|
-
renderGeneralConfigItems(
|
|
181
|
+
renderGeneralConfigItems(config) {
|
|
182
182
|
const entity = this.state.editedEntity;
|
|
183
183
|
const errors = this.state.editedEntityValidationContext.errors;
|
|
184
184
|
const fieldsToHighlight = this.props.fieldsToHighlight;
|
|
185
|
+
const { codeConfig, nameConfig, dividerHidden, size } = config ?? {};
|
|
185
186
|
const [codeValidateStatus, codeErrorMessage] = getAbstractEntityErrorInfo([AbstractEntityValidationErrorEnum.CODE_REQUIRED, AbstractEntityValidationErrorEnum.CODE_DUPLICATE], errors);
|
|
186
187
|
const [nameValidateStatus, nameErrorMessage] = getAbstractEntityErrorInfo([AbstractEntityValidationErrorEnum.NAME_REQUIRED], errors);
|
|
187
|
-
return (React.createElement(Form, { className: "record-config-form", layout: "horizontal", labelCol: { sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 } },
|
|
188
|
+
return (React.createElement(Form, { className: "record-config-form", layout: "horizontal", labelCol: { sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 }, size: size },
|
|
188
189
|
React.createElement(Row, { gutter: 8 },
|
|
189
190
|
React.createElement(Col, { span: 6 },
|
|
190
191
|
React.createElement(Form.Item, { label: i18n("ID") },
|
|
@@ -217,7 +218,7 @@ export default class AbstractEntityConfigPanel extends React.Component {
|
|
|
217
218
|
React.createElement(Input, { value: entity.name ?? undefined, disabled: this.isEditDisabled() || nameConfig?.disabled || this.state.nameSameAsCode, onChange: e => {
|
|
218
219
|
this.handleNameChange(e.target.value);
|
|
219
220
|
}, maxLength: this.getNameMaxLength(), prefix: this.renderNamePrefix() })),
|
|
220
|
-
!
|
|
221
|
+
!dividerHidden && React.createElement(Divider, { className: "compact-divider" })));
|
|
221
222
|
}
|
|
222
223
|
renderNoteFormItem() {
|
|
223
224
|
const entity = this.state.editedEntity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractEntityConfigPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/editor/abstractEntityConfigPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {cloneDeep, isEqual, omit} from \"lodash\";\r\nimport {Button, Col, Divider, Form, Input, InputRef, Row, Switch} from \"antd\";\r\nimport AbstractEntityApi from \"../../../api/abstractEntityApi\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {CloseCircleOutlined, EditOutlined, SaveOutlined} from \"@ant-design/icons\";\r\nimport {UndoIcon} from \"d2coreui/components/icons/undoIcon\";\r\nimport DetailHeaderPanel from \"../grid/detailHeaderPanel\";\r\nimport {AbstractBreadcrumbItem} from \"../../abstractListPanel\";\r\nimport {GeneralEntityColumn} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport TextArea from \"antd/es/input/TextArea\";\r\nimport AuditableEntity from \"../../../api/types/auditableEntity\";\r\nimport {AccessRight} from \"../../../api/types/accessRight\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport {\r\n AbstractEntityValidationErrorEnum,\r\n ErrorCode,\r\n getAbstractEntityErrorInfo\r\n} from \"../../../api/validation/abstractEntityValidationUtils\";\r\nimport {DbBoolean} from \"../../../api/types/dbBoolean\";\r\n\r\ninterface GeneralConfigItemParams {\r\n hidden?: boolean,\r\n notRequired?: boolean,\r\n disabled?: boolean\r\n}\r\n\r\n/**\r\n * Additional data needed for object validation\r\n */\r\nexport interface EntityValidationContext {\r\n errors: ErrorCode[]\r\n}\r\n\r\nexport interface EntityConfigPanelProperties<T extends AuditableEntity> {\r\n api: AbstractEntityApi<T>\r\n selectedEntity?: T\r\n hidePrevNextButton?: boolean\r\n hideConfigHeader?: boolean\r\n hideConfigFooter?: boolean\r\n historyMode?: boolean\r\n fieldsToHighlight?: string[]\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n // detail close handler\r\n onClose?(): void\r\n\r\n // next record handler\r\n onNextRecord?(): void\r\n\r\n // previous record handler\r\n onPrevRecord?(): void\r\n\r\n onSave?(savedEntity: T): void\r\n}\r\n\r\nexport interface EntityConfigPanelState<T extends AuditableEntity> {\r\n originalEntity?: T\r\n editedEntity: T\r\n editedEntityValidationContext: EntityValidationContext\r\n validationIsRunning: boolean\r\n savingIsRunning: boolean\r\n validateOnChange: boolean\r\n waitingForLockResponse: boolean\r\n savingIsStarting: boolean\r\n nameSameAsCode: boolean\r\n}\r\n\r\nexport default abstract class AbstractEntityConfigPanel<P extends EntityConfigPanelProperties<E>,\r\n S extends EntityConfigPanelState<E>,\r\n E extends AuditableEntity = S extends EntityConfigPanelState<infer T> ? T : never> extends React.Component<P, S> {\r\n protected codeInput: InputRef | null = null;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.updateEditedObject = this.updateEditedObject.bind(this);\r\n this.renderNoteFormItem = this.renderNoteFormItem.bind(this);\r\n }\r\n\r\n protected initialState: EntityConfigPanelState<E> = {\r\n editedEntity: this.props.selectedEntity as unknown as E,\r\n editedEntityValidationContext: {errors: []},\r\n validationIsRunning: false,\r\n savingIsRunning: false,\r\n validateOnChange: false,\r\n waitingForLockResponse: false,\r\n savingIsStarting: false,\r\n nameSameAsCode: true,\r\n }\r\n\r\n componentDidMount() {\r\n this.updateEditedObject();\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<P>, prevState: Readonly<S>) {\r\n if (!isEqual(prevProps.selectedEntity, this.props.selectedEntity)) {\r\n if (prevState.editedEntity?.locked) {\r\n this.props.api.unlockEntity(prevState.editedEntity);\r\n }\r\n this.updateData(this.props.selectedEntity, cloneDeep(this.props.selectedEntity), {errors: []}, () => {\r\n this.setState({validateOnChange: false, nameSameAsCode: this.isNewEntity()});\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.state.editedEntity?.locked) {\r\n this.props.api.unlockEntity(this.state.editedEntity);\r\n }\r\n }\r\n\r\n getOriginal(): E | undefined {\r\n return this.state.originalEntity;\r\n }\r\n\r\n getEdited(): E {\r\n return this.state.editedEntity;\r\n }\r\n\r\n revertChanges() {\r\n if (this.state.originalEntity && !isEqual(this.state.editedEntity, this.state.originalEntity)) {\r\n this.updateData(undefined, cloneDeep(this.state.originalEntity), undefined, () => {\r\n const editedEntityValidationContext = this.state.editedEntityValidationContext;\r\n editedEntityValidationContext.errors = [];\r\n this.setState({editedEntityValidationContext: editedEntityValidationContext});\r\n });\r\n }\r\n }\r\n\r\n abstract validateObject(): ErrorCode[];\r\n\r\n private async validate() {\r\n const isNewEntity = this.state.editedEntity.id < 0 || this.state.editedEntity.id === undefined;\r\n this.setState({validationIsRunning: true});\r\n\r\n const editedEntityValidationContext = this.state.editedEntityValidationContext;\r\n editedEntityValidationContext.errors = this.validateObject();\r\n\r\n // code validation - only when creating new entity (editation of code is not allowed)\r\n const code = this.state.editedEntity.code;\r\n if (isNewEntity && code) {\r\n const codeExists = await this.props.api.codeExists(code);\r\n\r\n if (codeExists) {\r\n if (!editedEntityValidationContext.errors.includes(AbstractEntityValidationErrorEnum.CODE_DUPLICATE)) {\r\n editedEntityValidationContext.errors.push(AbstractEntityValidationErrorEnum.CODE_DUPLICATE);\r\n }\r\n } else {\r\n const index = editedEntityValidationContext.errors.findIndex(value => value === AbstractEntityValidationErrorEnum.CODE_DUPLICATE);\r\n if (index >= 0) {\r\n editedEntityValidationContext.errors.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n this.setState({\r\n editedEntityValidationContext: editedEntityValidationContext,\r\n validateOnChange: true,\r\n validationIsRunning: false,\r\n });\r\n };\r\n\r\n async save(isCosmeticChange?: boolean): Promise<E | undefined> {\r\n await this.validate();\r\n const errors = this.state.editedEntityValidationContext.errors;\r\n let savedEntity: E | undefined = undefined;\r\n\r\n if (errors.length === 0 && this.state.originalEntity && !isEqual(this.state.editedEntity, this.state.originalEntity)) {\r\n this.setState({savingIsRunning: true});\r\n savedEntity = await this.props.api.saveEntity(this.state.editedEntity, isCosmeticChange);\r\n this.setState({savingIsRunning: false});\r\n if (savedEntity) {\r\n this.updateData(savedEntity, cloneDeep(savedEntity), {errors: []});\r\n this.props.onSave?.(savedEntity);\r\n }\r\n }\r\n this.afterSave();\r\n\r\n return savedEntity;\r\n }\r\n\r\n protected async onSave() {\r\n await this.save();\r\n }\r\n\r\n protected afterSave() {\r\n }\r\n\r\n updateEditedObject() {\r\n if (this.state.validateOnChange) {\r\n this.validate();\r\n }\r\n this.updateData(undefined, this.state.editedEntity as E, this.state.editedEntityValidationContext);\r\n }\r\n\r\n onChangeEditContext(_original?: E, _edited?: E, _editedEntityValidationContext?: EntityValidationContext) {\r\n }\r\n\r\n updateData(originalEntity?: E, editedEntity?: E, editedEntityValidationContext?: EntityValidationContext, callback?: () => void) {\r\n const newState: Partial<S> = {};\r\n if (originalEntity) {\r\n newState.originalEntity = originalEntity;\r\n }\r\n if (editedEntity) {\r\n newState.editedEntity = editedEntity;\r\n }\r\n if (editedEntityValidationContext) {\r\n newState.editedEntityValidationContext = editedEntityValidationContext;\r\n }\r\n this.setState(newState as S, () => {\r\n this.onChangeEditContext(originalEntity, editedEntity, editedEntityValidationContext);\r\n callback?.();\r\n })\r\n }\r\n\r\n renderConfigHeader(hidePrevNextButton?: boolean) {\r\n return (\r\n <DetailHeaderPanel\r\n hidePrevNextButton={hidePrevNextButton}\r\n code={this.state.editedEntity?.code}\r\n onPrevRecord={this.props.onPrevRecord}\r\n onNextRecord={this.props.onNextRecord}\r\n onClose={this.props.onClose}\r\n />\r\n );\r\n }\r\n\r\n protected async onEditStart() {\r\n this.focusFirstField();\r\n }\r\n\r\n focusFirstField() {\r\n if (this.props.selectedEntity?.id === undefined || this.props.selectedEntity?.id === null) {\r\n this.codeInput?.focus();\r\n }\r\n }\r\n\r\n isEditDisabled() {\r\n const entityExists = !!this.state.originalEntity;\r\n const isNewEntity = this.state.editedEntity.id < 0 || this.state.editedEntity.id === undefined;\r\n const isSaveMode = entityExists && (isNewEntity || this.state.editedEntity.locked);\r\n return !isSaveMode;\r\n }\r\n\r\n protected getCodeMaxLength() {\r\n return 64;\r\n }\r\n\r\n protected getNameMaxLength() {\r\n return 256;\r\n }\r\n\r\n protected renderCodePrefix(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderCodeSuffix(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderNamePrefix(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected handleCodeChange(value: string) {\r\n const entity = this.state.editedEntity;\r\n\r\n entity.code = value;\r\n if (this.state.nameSameAsCode) {\r\n entity.name = value;\r\n }\r\n this.updateEditedObject();\r\n }\r\n\r\n protected handleNameChange(value: string) {\r\n const entity = this.state.editedEntity;\r\n\r\n entity.name = value;\r\n this.updateEditedObject();\r\n }\r\n\r\n protected renderGeneralConfigItems(codeConfig?: GeneralConfigItemParams, nameConfig?: GeneralConfigItemParams, hideDivider?: boolean) {\r\n const entity = this.state.editedEntity;\r\n const errors = this.state.editedEntityValidationContext.errors;\r\n const fieldsToHighlight = this.props.fieldsToHighlight;\r\n\r\n const [codeValidateStatus, codeErrorMessage] = getAbstractEntityErrorInfo([AbstractEntityValidationErrorEnum.CODE_REQUIRED, AbstractEntityValidationErrorEnum.CODE_DUPLICATE], errors);\r\n const [nameValidateStatus, nameErrorMessage] = getAbstractEntityErrorInfo([AbstractEntityValidationErrorEnum.NAME_REQUIRED], errors);\r\n\r\n return (\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 <Row gutter={8}>\r\n <Col span={6}>\r\n <Form.Item label={i18n(\"ID\")}>\r\n <Input disabled value={entity.id}/>\r\n </Form.Item>\r\n </Col>\r\n {!codeConfig?.hidden &&\r\n <Col span={18}>\r\n <Form.Item\r\n label={i18n(\"Code\")}\r\n validateStatus={fieldsToHighlight?.includes(GeneralEntityColumn.CODE) ? \"warning\" : codeValidateStatus}\r\n help={codeErrorMessage}\r\n required={!codeConfig?.notRequired}\r\n >\r\n <Input\r\n disabled={entity.id !== undefined || this.isEditDisabled() || codeConfig?.disabled}\r\n ref={(input) => {\r\n this.codeInput = input;\r\n }}\r\n value={entity.code ?? undefined}\r\n onChange={e => {\r\n this.handleCodeChange(e.target.value);\r\n }}\r\n prefix={this.renderCodePrefix()}\r\n suffix={this.renderCodeSuffix()}\r\n maxLength={this.getCodeMaxLength()}\r\n showCount\r\n />\r\n </Form.Item>\r\n </Col>\r\n }\r\n </Row>\r\n {!nameConfig?.hidden &&\r\n <Form.Item\r\n className=\"form-item-full-width-label\"\r\n label={\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <span>{i18n(\"Name\")}</span>\r\n {this.isNewEntity() &&\r\n <span style={{display: \"flex\"}}>\r\n <Switch\r\n style={{marginRight: 4}}\r\n size=\"small\"\r\n checked={this.state.nameSameAsCode}\r\n onChange={checked => {\r\n this.setState({nameSameAsCode: checked})\r\n if (checked) {\r\n entity.name = entity.code;\r\n this.updateEditedObject();\r\n }\r\n }}\r\n />\r\n {i18n(\"Same As Code\")}\r\n </span>\r\n }\r\n </div>\r\n }\r\n validateStatus={fieldsToHighlight?.includes(GeneralEntityColumn.NAME) ? \"warning\" : nameValidateStatus}\r\n help={nameErrorMessage}\r\n required={!nameConfig?.notRequired}\r\n >\r\n <Input\r\n value={entity.name ?? undefined}\r\n disabled={this.isEditDisabled() || nameConfig?.disabled || this.state.nameSameAsCode}\r\n onChange={e => {\r\n this.handleNameChange(e.target.value);\r\n }}\r\n maxLength={this.getNameMaxLength()}\r\n prefix={this.renderNamePrefix()}\r\n />\r\n </Form.Item>\r\n }\r\n {!hideDivider && <Divider className=\"compact-divider\"/>}\r\n </Form>\r\n )\r\n }\r\n\r\n protected renderNoteFormItem() {\r\n const entity = this.state.editedEntity;\r\n const fieldsToHighlight = this.props.fieldsToHighlight;\r\n\r\n return (\r\n <Form.Item\r\n label={i18n(\"Note\")}\r\n validateStatus={fieldsToHighlight?.includes(GeneralEntityColumn.NOTE) ? \"warning\" : undefined}\r\n >\r\n <TextArea\r\n disabled={this.isEditDisabled()}\r\n value={entity.note ?? undefined}\r\n onChange={event => {\r\n entity.note = event.target.value;\r\n this.updateEditedObject();\r\n }}\r\n />\r\n </Form.Item>\r\n );\r\n }\r\n\r\n protected isNewEntity() {\r\n return !this.state.editedEntity?.id;\r\n }\r\n\r\n protected isEditMode() {\r\n return this.state.originalEntity && !this.isNewEntity() && !this.state.editedEntity.locked;\r\n }\r\n\r\n protected async getAccessRightForEntity(): Promise<{ accessRight: AccessRight, message: string }> {\r\n return {\r\n accessRight: AccessRight.WRITE,\r\n message: \"\",\r\n }\r\n }\r\n\r\n protected getFieldsToOmitForCompare(): string[] {\r\n return [\"locked\"]\r\n }\r\n\r\n protected isEntityModified() {\r\n return !isEqual(\r\n omit(cloneDeep(this.state.editedEntity), this.getFieldsToOmitForCompare()),\r\n omit(cloneDeep(this.state.originalEntity), this.getFieldsToOmitForCompare())\r\n );\r\n }\r\n\r\n async startEdit(): Promise<boolean> {\r\n this.setState({savingIsStarting: true});\r\n await this.onEditStart();\r\n const accessRightResult = await this.getAccessRightForEntity();\r\n this.setState({savingIsStarting: false});\r\n if (accessRightResult.accessRight !== AccessRight.WRITE) {\r\n ModalDialog.error({\r\n mode: ModalDialogMode.OK,\r\n title: i18n(\"Edit is not allowed\"),\r\n content: accessRightResult.message,\r\n okText: i18n(\"Cancel\")\r\n });\r\n return false;\r\n } else {\r\n this.setState({waitingForLockResponse: true, nameSameAsCode: false});\r\n const isOk = await this.props.api.lockEntity(this.state.editedEntity);\r\n this.setState({waitingForLockResponse: false});\r\n if (isOk) {\r\n this.updateEditedObject();\r\n } else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n renderConfigFooter() {\r\n const entityExists = !!this.state.originalEntity;\r\n const isNewEntity = this.isNewEntity();\r\n const isEditMode = this.isEditMode();\r\n const isSaveMode = entityExists && (isNewEntity || this.state.editedEntity.locked);\r\n const isEntityModified = entityExists && this.isEntityModified();\r\n\r\n return (\r\n <div style={{padding: 8}}>\r\n <Button.Group style={{width: \"100%\"}}>\r\n <Button\r\n disabled={!entityExists || (isSaveMode ? !isEntityModified : !isEditMode) || this.state.editedEntityValidationContext.errors.length !== 0 || this.state.validationIsRunning}\r\n block\r\n loading={this.state.waitingForLockResponse || this.state.savingIsStarting || this.state.savingIsRunning}\r\n type=\"primary\"\r\n icon={isSaveMode ? <SaveOutlined/> : <EditOutlined/>}\r\n onClick={async () => {\r\n if (isSaveMode) {\r\n await this.onSave();\r\n } else if (isEditMode) {\r\n await this.startEdit();\r\n }\r\n }}\r\n >\r\n {isSaveMode ? i18n(\"Save\") : i18n(\"Edit\")}\r\n </Button>\r\n <Button\r\n disabled={!entityExists || !isSaveMode}\r\n block\r\n danger\r\n icon={(isEntityModified && !isNewEntity) ? <UndoIcon/> : <CloseCircleOutlined/>}\r\n onClick={async () => {\r\n if (isNewEntity) {\r\n this.props.onClose?.();\r\n } else if (isSaveMode) {\r\n if (this.state.editedEntity.locked) {\r\n await this.props.api.unlockEntity(this.state.editedEntity);\r\n }\r\n this.revertChanges();\r\n }\r\n }}\r\n >\r\n {(isEntityModified && !isNewEntity) ? i18n(\"Revert Changes\") : i18n(\"Cancel\")}\r\n </Button>\r\n </Button.Group>\r\n </div>\r\n );\r\n }\r\n\r\n abstract renderConfigForm(): React.ReactNode;\r\n\r\n render() {\r\n const entity = this.state.editedEntity;\r\n const {hideConfigHeader, hideConfigFooter, historyMode} = this.props;\r\n\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", overflow: \"hidden\", width: \"100%\", height: \"100%\"}}>\r\n {!hideConfigHeader && !historyMode && this.renderConfigHeader(entity?.id === undefined || this.props.hidePrevNextButton)}\r\n <div style={{flex: \"1 1 auto\", overflow: \"hidden\"}}>\r\n <div style={{height: `calc(100% - ${hideConfigFooter ? 0 : 48}px)`}}>\r\n <div style={{height: \"100%\", overflow: \"auto\"}}>\r\n <div style={{margin: \"0px 12px 16px\"}}>\r\n {entity && this.renderConfigForm()}\r\n </div>\r\n </div>\r\n </div>\r\n {!hideConfigFooter && !historyMode && entity?.ano_platny === DbBoolean.TRUE && this.renderConfigFooter()}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"abstractEntityConfigPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/editor/abstractEntityConfigPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {cloneDeep, isEqual, omit} from \"lodash\";\r\nimport {Button, Col, Divider, Form, Input, InputRef, Row, Switch} from \"antd\";\r\nimport AbstractEntityApi from \"../../../api/abstractEntityApi\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {CloseCircleOutlined, EditOutlined, SaveOutlined} from \"@ant-design/icons\";\r\nimport {UndoIcon} from \"d2coreui/components/icons/undoIcon\";\r\nimport DetailHeaderPanel from \"../grid/detailHeaderPanel\";\r\nimport {AbstractBreadcrumbItem} from \"../../abstractListPanel\";\r\nimport {GeneralEntityColumn} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport TextArea from \"antd/es/input/TextArea\";\r\nimport AuditableEntity from \"../../../api/types/auditableEntity\";\r\nimport {AccessRight} from \"../../../api/types/accessRight\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport {\r\n AbstractEntityValidationErrorEnum,\r\n ErrorCode,\r\n getAbstractEntityErrorInfo\r\n} from \"../../../api/validation/abstractEntityValidationUtils\";\r\nimport {DbBoolean} from \"../../../api/types/dbBoolean\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\n\r\ninterface GeneralConfigItemParams {\r\n hidden?: boolean,\r\n notRequired?: boolean,\r\n disabled?: boolean\r\n}\r\n\r\n/**\r\n * Additional data needed for object validation\r\n */\r\nexport interface EntityValidationContext {\r\n errors: ErrorCode[]\r\n}\r\n\r\nexport interface EntityConfigPanelProperties<T extends AuditableEntity> {\r\n api: AbstractEntityApi<T>\r\n selectedEntity?: T\r\n title?: React.ReactNode\r\n hidePrevNextButton?: boolean\r\n hideConfigHeader?: boolean\r\n hideConfigFooter?: boolean\r\n historyMode?: boolean\r\n fieldsToHighlight?: string[]\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n // detail close handler\r\n onClose?(): void\r\n\r\n // next record handler\r\n onNextRecord?(): void\r\n\r\n // previous record handler\r\n onPrevRecord?(): void\r\n\r\n onSave?(savedEntity: T): void\r\n}\r\n\r\nexport interface EntityConfigPanelState<T extends AuditableEntity> {\r\n originalEntity?: T\r\n editedEntity: T\r\n editedEntityValidationContext: EntityValidationContext\r\n validationIsRunning: boolean\r\n savingIsRunning: boolean\r\n validateOnChange: boolean\r\n waitingForLockResponse: boolean\r\n savingIsStarting: boolean\r\n nameSameAsCode: boolean\r\n}\r\n\r\nexport default abstract class AbstractEntityConfigPanel<P extends EntityConfigPanelProperties<E>,\r\n S extends EntityConfigPanelState<E>,\r\n E extends AuditableEntity = S extends EntityConfigPanelState<infer T> ? T : never> extends React.Component<P, S> {\r\n protected codeInput: InputRef | null = null;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.updateEditedObject = this.updateEditedObject.bind(this);\r\n this.renderNoteFormItem = this.renderNoteFormItem.bind(this);\r\n }\r\n\r\n protected initialState: EntityConfigPanelState<E> = {\r\n editedEntity: this.props.selectedEntity as unknown as E,\r\n editedEntityValidationContext: {errors: []},\r\n validationIsRunning: false,\r\n savingIsRunning: false,\r\n validateOnChange: false,\r\n waitingForLockResponse: false,\r\n savingIsStarting: false,\r\n nameSameAsCode: true,\r\n }\r\n\r\n componentDidMount() {\r\n this.updateEditedObject();\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<P>, prevState: Readonly<S>) {\r\n if (!isEqual(prevProps.selectedEntity, this.props.selectedEntity)) {\r\n if (prevState.editedEntity?.locked) {\r\n this.props.api.unlockEntity(prevState.editedEntity);\r\n }\r\n this.updateData(this.props.selectedEntity, cloneDeep(this.props.selectedEntity), {errors: []}, () => {\r\n this.setState({validateOnChange: false, nameSameAsCode: this.isNewEntity()});\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.state.editedEntity?.locked) {\r\n this.props.api.unlockEntity(this.state.editedEntity);\r\n }\r\n }\r\n\r\n getOriginal(): E | undefined {\r\n return this.state.originalEntity;\r\n }\r\n\r\n getEdited(): E {\r\n return this.state.editedEntity;\r\n }\r\n\r\n revertChanges() {\r\n if (this.state.originalEntity && !isEqual(this.state.editedEntity, this.state.originalEntity)) {\r\n this.updateData(undefined, cloneDeep(this.state.originalEntity), undefined, () => {\r\n const editedEntityValidationContext = this.state.editedEntityValidationContext;\r\n editedEntityValidationContext.errors = [];\r\n this.setState({editedEntityValidationContext: editedEntityValidationContext});\r\n });\r\n }\r\n }\r\n\r\n abstract validateObject(): ErrorCode[];\r\n\r\n private async validate() {\r\n const isNewEntity = this.state.editedEntity.id < 0 || this.state.editedEntity.id === undefined;\r\n this.setState({validationIsRunning: true});\r\n\r\n const editedEntityValidationContext = this.state.editedEntityValidationContext;\r\n editedEntityValidationContext.errors = this.validateObject();\r\n\r\n // code validation - only when creating new entity (editation of code is not allowed)\r\n const code = this.state.editedEntity.code;\r\n if (isNewEntity && code) {\r\n const codeExists = await this.props.api.codeExists(code);\r\n\r\n if (codeExists) {\r\n if (!editedEntityValidationContext.errors.includes(AbstractEntityValidationErrorEnum.CODE_DUPLICATE)) {\r\n editedEntityValidationContext.errors.push(AbstractEntityValidationErrorEnum.CODE_DUPLICATE);\r\n }\r\n } else {\r\n const index = editedEntityValidationContext.errors.findIndex(value => value === AbstractEntityValidationErrorEnum.CODE_DUPLICATE);\r\n if (index >= 0) {\r\n editedEntityValidationContext.errors.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n this.setState({\r\n editedEntityValidationContext: editedEntityValidationContext,\r\n validateOnChange: true,\r\n validationIsRunning: false,\r\n });\r\n };\r\n\r\n async save(isCosmeticChange?: boolean): Promise<E | undefined> {\r\n await this.validate();\r\n const errors = this.state.editedEntityValidationContext.errors;\r\n let savedEntity: E | undefined = undefined;\r\n\r\n if (errors.length === 0 && this.state.originalEntity && !isEqual(this.state.editedEntity, this.state.originalEntity)) {\r\n this.setState({savingIsRunning: true});\r\n savedEntity = await this.props.api.saveEntity(this.state.editedEntity, isCosmeticChange);\r\n this.setState({savingIsRunning: false});\r\n if (savedEntity) {\r\n this.updateData(savedEntity, cloneDeep(savedEntity), {errors: []});\r\n this.props.onSave?.(savedEntity);\r\n }\r\n }\r\n this.afterSave();\r\n\r\n return savedEntity;\r\n }\r\n\r\n protected async onSave() {\r\n await this.save();\r\n }\r\n\r\n protected afterSave() {\r\n }\r\n\r\n updateEditedObject() {\r\n if (this.state.validateOnChange) {\r\n this.validate();\r\n }\r\n this.updateData(undefined, this.state.editedEntity as E, this.state.editedEntityValidationContext);\r\n }\r\n\r\n onChangeEditContext(_original?: E, _edited?: E, _editedEntityValidationContext?: EntityValidationContext) {\r\n }\r\n\r\n updateData(originalEntity?: E, editedEntity?: E, editedEntityValidationContext?: EntityValidationContext, callback?: () => void) {\r\n const newState: Partial<S> = {};\r\n if (originalEntity) {\r\n newState.originalEntity = originalEntity;\r\n }\r\n if (editedEntity) {\r\n newState.editedEntity = editedEntity;\r\n }\r\n if (editedEntityValidationContext) {\r\n newState.editedEntityValidationContext = editedEntityValidationContext;\r\n }\r\n this.setState(newState as S, () => {\r\n this.onChangeEditContext(originalEntity, editedEntity, editedEntityValidationContext);\r\n callback?.();\r\n })\r\n }\r\n\r\n renderConfigHeader(hidePrevNextButton?: boolean) {\r\n return (\r\n <DetailHeaderPanel\r\n title={this.props.title}\r\n hidePrevNextButton={hidePrevNextButton}\r\n code={this.state.editedEntity?.code}\r\n onPrevRecord={this.props.onPrevRecord}\r\n onNextRecord={this.props.onNextRecord}\r\n onClose={this.props.onClose}\r\n />\r\n );\r\n }\r\n\r\n protected async onEditStart() {\r\n this.focusFirstField();\r\n }\r\n\r\n focusFirstField() {\r\n if (this.props.selectedEntity?.id === undefined || this.props.selectedEntity?.id === null) {\r\n this.codeInput?.focus();\r\n }\r\n }\r\n\r\n isEditDisabled() {\r\n const entityExists = !!this.state.originalEntity;\r\n const isNewEntity = this.state.editedEntity.id < 0 || this.state.editedEntity.id === undefined;\r\n const isSaveMode = entityExists && (isNewEntity || this.state.editedEntity.locked);\r\n return !isSaveMode;\r\n }\r\n\r\n protected getCodeMaxLength() {\r\n return 64;\r\n }\r\n\r\n protected getNameMaxLength() {\r\n return 256;\r\n }\r\n\r\n protected renderCodePrefix(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderCodeSuffix(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderNamePrefix(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected handleCodeChange(value: string) {\r\n const entity = this.state.editedEntity;\r\n\r\n entity.code = value;\r\n if (this.state.nameSameAsCode) {\r\n entity.name = value;\r\n }\r\n this.updateEditedObject();\r\n }\r\n\r\n protected handleNameChange(value: string) {\r\n const entity = this.state.editedEntity;\r\n\r\n entity.name = value;\r\n this.updateEditedObject();\r\n }\r\n\r\n protected renderGeneralConfigItems(\r\n config?: {\r\n codeConfig?: GeneralConfigItemParams\r\n nameConfig?: GeneralConfigItemParams\r\n dividerHidden?: boolean\r\n size?: SizeType\r\n }\r\n ) {\r\n const entity = this.state.editedEntity;\r\n const errors = this.state.editedEntityValidationContext.errors;\r\n const fieldsToHighlight = this.props.fieldsToHighlight;\r\n const {codeConfig, nameConfig, dividerHidden, size} = config ?? {};\r\n\r\n const [codeValidateStatus, codeErrorMessage] = getAbstractEntityErrorInfo([AbstractEntityValidationErrorEnum.CODE_REQUIRED, AbstractEntityValidationErrorEnum.CODE_DUPLICATE], errors);\r\n const [nameValidateStatus, nameErrorMessage] = getAbstractEntityErrorInfo([AbstractEntityValidationErrorEnum.NAME_REQUIRED], errors);\r\n\r\n return (\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 size={size}\r\n >\r\n <Row gutter={8}>\r\n <Col span={6}>\r\n <Form.Item label={i18n(\"ID\")}>\r\n <Input disabled value={entity.id}/>\r\n </Form.Item>\r\n </Col>\r\n {!codeConfig?.hidden &&\r\n <Col span={18}>\r\n <Form.Item\r\n label={i18n(\"Code\")}\r\n validateStatus={fieldsToHighlight?.includes(GeneralEntityColumn.CODE) ? \"warning\" : codeValidateStatus}\r\n help={codeErrorMessage}\r\n required={!codeConfig?.notRequired}\r\n >\r\n <Input\r\n disabled={entity.id !== undefined || this.isEditDisabled() || codeConfig?.disabled}\r\n ref={(input) => {\r\n this.codeInput = input;\r\n }}\r\n value={entity.code ?? undefined}\r\n onChange={e => {\r\n this.handleCodeChange(e.target.value);\r\n }}\r\n prefix={this.renderCodePrefix()}\r\n suffix={this.renderCodeSuffix()}\r\n maxLength={this.getCodeMaxLength()}\r\n showCount\r\n />\r\n </Form.Item>\r\n </Col>\r\n }\r\n </Row>\r\n {!nameConfig?.hidden &&\r\n <Form.Item\r\n className=\"form-item-full-width-label\"\r\n label={\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <span>{i18n(\"Name\")}</span>\r\n {this.isNewEntity() &&\r\n <span style={{display: \"flex\"}}>\r\n <Switch\r\n style={{marginRight: 4}}\r\n size=\"small\"\r\n checked={this.state.nameSameAsCode}\r\n onChange={checked => {\r\n this.setState({nameSameAsCode: checked})\r\n if (checked) {\r\n entity.name = entity.code;\r\n this.updateEditedObject();\r\n }\r\n }}\r\n />\r\n {i18n(\"Same As Code\")}\r\n </span>\r\n }\r\n </div>\r\n }\r\n validateStatus={fieldsToHighlight?.includes(GeneralEntityColumn.NAME) ? \"warning\" : nameValidateStatus}\r\n help={nameErrorMessage}\r\n required={!nameConfig?.notRequired}\r\n >\r\n <Input\r\n value={entity.name ?? undefined}\r\n disabled={this.isEditDisabled() || nameConfig?.disabled || this.state.nameSameAsCode}\r\n onChange={e => {\r\n this.handleNameChange(e.target.value);\r\n }}\r\n maxLength={this.getNameMaxLength()}\r\n prefix={this.renderNamePrefix()}\r\n />\r\n </Form.Item>\r\n }\r\n {!dividerHidden && <Divider className=\"compact-divider\"/>}\r\n </Form>\r\n )\r\n }\r\n\r\n protected renderNoteFormItem() {\r\n const entity = this.state.editedEntity;\r\n const fieldsToHighlight = this.props.fieldsToHighlight;\r\n\r\n return (\r\n <Form.Item\r\n label={i18n(\"Note\")}\r\n validateStatus={fieldsToHighlight?.includes(GeneralEntityColumn.NOTE) ? \"warning\" : undefined}\r\n >\r\n <TextArea\r\n disabled={this.isEditDisabled()}\r\n value={entity.note ?? undefined}\r\n onChange={event => {\r\n entity.note = event.target.value;\r\n this.updateEditedObject();\r\n }}\r\n />\r\n </Form.Item>\r\n );\r\n }\r\n\r\n protected isNewEntity() {\r\n return !this.state.editedEntity?.id;\r\n }\r\n\r\n protected isEditMode() {\r\n return this.state.originalEntity && !this.isNewEntity() && !this.state.editedEntity.locked;\r\n }\r\n\r\n protected async getAccessRightForEntity(): Promise<{ accessRight: AccessRight, message: string }> {\r\n return {\r\n accessRight: AccessRight.WRITE,\r\n message: \"\",\r\n }\r\n }\r\n\r\n protected getFieldsToOmitForCompare(): string[] {\r\n return [\"locked\"]\r\n }\r\n\r\n protected isEntityModified() {\r\n return !isEqual(\r\n omit(cloneDeep(this.state.editedEntity), this.getFieldsToOmitForCompare()),\r\n omit(cloneDeep(this.state.originalEntity), this.getFieldsToOmitForCompare())\r\n );\r\n }\r\n\r\n async startEdit(): Promise<boolean> {\r\n this.setState({savingIsStarting: true});\r\n await this.onEditStart();\r\n const accessRightResult = await this.getAccessRightForEntity();\r\n this.setState({savingIsStarting: false});\r\n if (accessRightResult.accessRight !== AccessRight.WRITE) {\r\n ModalDialog.error({\r\n mode: ModalDialogMode.OK,\r\n title: i18n(\"Edit is not allowed\"),\r\n content: accessRightResult.message,\r\n okText: i18n(\"Cancel\")\r\n });\r\n return false;\r\n } else {\r\n this.setState({waitingForLockResponse: true, nameSameAsCode: false});\r\n const isOk = await this.props.api.lockEntity(this.state.editedEntity);\r\n this.setState({waitingForLockResponse: false});\r\n if (isOk) {\r\n this.updateEditedObject();\r\n } else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n renderConfigFooter() {\r\n const entityExists = !!this.state.originalEntity;\r\n const isNewEntity = this.isNewEntity();\r\n const isEditMode = this.isEditMode();\r\n const isSaveMode = entityExists && (isNewEntity || this.state.editedEntity.locked);\r\n const isEntityModified = entityExists && this.isEntityModified();\r\n\r\n return (\r\n <div style={{padding: 8}}>\r\n <Button.Group style={{width: \"100%\"}}>\r\n <Button\r\n disabled={!entityExists || (isSaveMode ? !isEntityModified : !isEditMode) || this.state.editedEntityValidationContext.errors.length !== 0 || this.state.validationIsRunning}\r\n block\r\n loading={this.state.waitingForLockResponse || this.state.savingIsStarting || this.state.savingIsRunning}\r\n type=\"primary\"\r\n icon={isSaveMode ? <SaveOutlined/> : <EditOutlined/>}\r\n onClick={async () => {\r\n if (isSaveMode) {\r\n await this.onSave();\r\n } else if (isEditMode) {\r\n await this.startEdit();\r\n }\r\n }}\r\n >\r\n {isSaveMode ? i18n(\"Save\") : i18n(\"Edit\")}\r\n </Button>\r\n <Button\r\n disabled={!entityExists || !isSaveMode}\r\n block\r\n danger\r\n icon={(isEntityModified && !isNewEntity) ? <UndoIcon/> : <CloseCircleOutlined/>}\r\n onClick={async () => {\r\n if (isNewEntity) {\r\n this.props.onClose?.();\r\n } else if (isSaveMode) {\r\n if (this.state.editedEntity.locked) {\r\n await this.props.api.unlockEntity(this.state.editedEntity);\r\n }\r\n this.revertChanges();\r\n }\r\n }}\r\n >\r\n {(isEntityModified && !isNewEntity) ? i18n(\"Revert Changes\") : i18n(\"Cancel\")}\r\n </Button>\r\n </Button.Group>\r\n </div>\r\n );\r\n }\r\n\r\n abstract renderConfigForm(): React.ReactNode;\r\n\r\n render() {\r\n const entity = this.state.editedEntity;\r\n const {hideConfigHeader, hideConfigFooter, historyMode} = this.props;\r\n\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", overflow: \"hidden\", width: \"100%\", height: \"100%\"}}>\r\n {!hideConfigHeader && !historyMode && this.renderConfigHeader(entity?.id === undefined || this.props.hidePrevNextButton)}\r\n <div style={{flex: \"1 1 auto\", overflow: \"hidden\"}}>\r\n <div style={{height: `calc(100% - ${hideConfigFooter ? 0 : 48}px)`}}>\r\n <div style={{height: \"100%\", overflow: \"auto\"}}>\r\n <div style={{margin: \"0px 12px 16px\"}}>\r\n {entity && this.renderConfigForm()}\r\n </div>\r\n </div>\r\n </div>\r\n {!hideConfigFooter && !historyMode && entity?.ano_platny === DbBoolean.TRUE && this.renderConfigFooter()}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
|
|
@@ -8,12 +8,14 @@ export default class DetailHeaderPanel extends React.Component {
|
|
|
8
8
|
super(props);
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
const code = this.props
|
|
11
|
+
const { title, code } = this.props;
|
|
12
12
|
return (React.createElement("div", { style: { padding: "8px 4px 8px 12px", display: "flex", justifyContent: "space-between", fontSize: 16 } },
|
|
13
13
|
React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 2 } },
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
title ??
|
|
15
|
+
React.createElement(React.Fragment, null,
|
|
16
|
+
React.createElement(ProfileOutlined, null),
|
|
17
|
+
" ",
|
|
18
|
+
i18n("Detail")),
|
|
17
19
|
code && React.createElement(ColorTag, { style: { marginLeft: 4, fontSize: 13 } }, code)),
|
|
18
20
|
React.createElement("div", null,
|
|
19
21
|
!this.props.hidePrevNextButton &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detailHeaderPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/grid/detailHeaderPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACrG,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAC5B,OAAO,QAAQ,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"detailHeaderPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/grid/detailHeaderPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACrG,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAC5B,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAc5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAgB;IACjE,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM;QACF,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAC;YACrG,6BAAK,KAAK,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAC;gBACtD,KAAK;oBACF;wBAAE,oBAAC,eAAe,OAAE;;wBAAE,IAAI,CAAC,QAAQ,CAAC,CAAI;gBAE3C,IAAI,IAAI,oBAAC,QAAQ,IAAC,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAC,IAAG,IAAI,CAAY,CACxE;YACN;gBACK,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB;oBAC3B,oBAAC,MAAM,CAAC,KAAK,IAAC,KAAK,EAAE,EAAC,SAAS,EAAE,CAAC,CAAC,EAAC;wBAChC,oBAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;4BACpE,oBAAC,eAAe,OAAE,CACb;wBACT,oBAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;4BAChE,oBAAC,iBAAiB,OAAE,CACf,CACE;gBAEnB,oBAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;oBACjE,oBAAC,aAAa,OAAE,CACX,CACP,CACJ,CACT,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React from \"react\";\r\nimport {ArrowDownOutlined, ArrowUpOutlined, CloseOutlined, ProfileOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Button} from \"antd\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\n\r\ninterface Props {\r\n hidePrevNextButton?: boolean\r\n title?: React.ReactNode\r\n code?: string | null\r\n\r\n onPrevRecord?(): void\r\n\r\n onNextRecord?(): void\r\n\r\n onClose?(): void\r\n}\r\n\r\nexport default class DetailHeaderPanel extends React.Component<Props> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {title, code} = this.props;\r\n\r\n return (\r\n <div style={{padding: \"8px 4px 8px 12px\", display: \"flex\", justifyContent: \"space-between\", fontSize: 16}}>\r\n <div style={{display: \"flex\", alignItems: \"center\", gap: 2}}>\r\n {title ??\r\n <><ProfileOutlined/> {i18n(\"Detail\")}</>\r\n }\r\n {code && <ColorTag style={{marginLeft: 4, fontSize: 13}}>{code}</ColorTag>}\r\n </div>\r\n <div>\r\n {!this.props.hidePrevNextButton &&\r\n <Button.Group style={{marginTop: -4}}>\r\n <Button title={i18n(\"Previous Record\")} onClick={this.props.onPrevRecord}>\r\n <ArrowUpOutlined/>\r\n </Button>\r\n <Button title={i18n(\"Next Record\")} onClick={this.props.onNextRecord}>\r\n <ArrowDownOutlined/>\r\n </Button>\r\n </Button.Group>\r\n }\r\n <Button title={i18n(\"Close\")} type=\"text\" onClick={this.props.onClose}>\r\n <CloseOutlined/>\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import Entity from "../../../api/types/entity";
|
|
3
|
+
import { SelectProps } from "antd/es/select";
|
|
3
4
|
import AbstractEntityApi from "../../../api/abstractEntityApi";
|
|
4
5
|
import { AdvancedFilterApi, AdvancedFilterCondition } from "../../../api/advancedFilterApi";
|
|
5
6
|
export declare enum DetailModalDialogMode {
|
|
@@ -12,7 +13,7 @@ export interface SelectedEntity {
|
|
|
12
13
|
code: string | null;
|
|
13
14
|
extra?: string;
|
|
14
15
|
}
|
|
15
|
-
export interface AbstractSelectProps<T extends Entity> {
|
|
16
|
+
export interface AbstractSelectProps<T extends Entity> extends SelectProps {
|
|
16
17
|
api: AbstractEntityApi<T>;
|
|
17
18
|
advancedFilterApi: AdvancedFilterApi;
|
|
18
19
|
disabled?: boolean;
|