d2aura 26.0.14 → 26.0.16
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/eda/edaManagerApi.d.ts +7 -3
- package/api/eda/edaManagerApi.js +28 -2
- package/api/eda/edaManagerApi.js.map +1 -1
- package/api/eda/generated/events.d.ts +93 -62
- package/api/eda/generated/events.js +146 -88
- package/api/eda/generated/events.js.map +1 -1
- package/api/eda/generated/structures.d.ts +99 -86
- package/api/eda/generated/structures.js.map +1 -1
- package/api/types/advancedFilter.d.ts +3 -0
- package/api/types/advancedFilter.js.map +1 -1
- package/api/webPush/webPushApi.js.map +1 -1
- package/api/webPush/webPushUtils.js.map +1 -1
- package/core/i18n/d2aura.en.json +14 -0
- package/core/i18n/d2aura.sk.json +62 -0
- package/coreui/abstractListPanel.d.ts +2 -1
- package/coreui/abstractListPanel.js +5 -1
- package/coreui/abstractListPanel.js.map +1 -1
- package/coreui/components/advancedFilter/advancedFilterButton.d.ts +2 -2
- package/coreui/components/advancedFilter/advancedFilterButton.js.map +1 -1
- package/coreui/components/advancedFilter/advancedFilteredGrid.d.ts +3 -2
- package/coreui/components/advancedFilter/advancedFilteredGrid.js +9 -1
- package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.d.ts +2 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js.map +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.d.ts +2 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.js.map +1 -1
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.d.ts +2 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js +10 -2
- package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map +1 -1
- package/coreui/components/d2Chart/d2ChartAdvancedZoom.d.ts +25 -0
- package/coreui/components/d2Chart/d2ChartAdvancedZoom.js +197 -0
- package/coreui/components/d2Chart/d2ChartAdvancedZoom.js.map +1 -0
- package/coreui/components/d2Chart/d2ChartPanel.d.ts +2 -0
- package/coreui/components/d2Chart/d2ChartPanel.js +9 -2
- package/coreui/components/d2Chart/d2ChartPanel.js.map +1 -1
- package/coreui/components/d2Chart/d2ChartToolboxPanel.d.ts +1 -0
- package/coreui/components/d2Chart/d2ChartToolboxPanel.js +2 -2
- package/coreui/components/d2Chart/d2ChartToolboxPanel.js.map +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js +1 -1
- package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaChartViewer.js +23 -19
- package/coreui/components/edaManagerComponent/components/edaChartViewer.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +1 -1
- package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +15 -18
- package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.d.ts +11 -3
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js +31 -24
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaTablePanel.js +116 -95
- package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +5 -0
- package/coreui/components/edaManagerComponent/components/edaTreeView.js +189 -60
- package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +1 -1
- package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/constants/actionTypes.d.ts +5 -0
- package/coreui/components/edaManagerComponent/constants/actionTypes.js +7 -0
- package/coreui/components/edaManagerComponent/constants/actionTypes.js.map +1 -0
- package/coreui/components/edaManagerComponent/constants/edaTypes.d.ts +13 -0
- package/coreui/components/edaManagerComponent/constants/edaTypes.js +15 -0
- package/coreui/components/edaManagerComponent/constants/edaTypes.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +1 -0
- package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js +8 -1
- package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +31 -38
- package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.d.ts +6 -1
- package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js +8 -1
- package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/useEdaActions.d.ts +5 -3
- package/coreui/components/edaManagerComponent/context/useEdaActions.js +21 -7
- package/coreui/components/edaManagerComponent/context/useEdaActions.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.d.ts +13 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js +19 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.d.ts +8 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js +171 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.d.ts +22 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js +75 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.d.ts +12 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js +52 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.d.ts +22 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js +130 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.d.ts +58 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js +51 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.d.ts +18 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js +74 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.d.ts +38 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js +299 -0
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.d.ts +10 -0
- package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js +343 -0
- package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/{components → dialogs}/edaTableEditorDialog.js +1 -1
- package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/{components → dialogs}/exportDialog.d.ts +2 -2
- package/coreui/components/edaManagerComponent/{components → dialogs}/exportDialog.js +7 -8
- package/coreui/components/edaManagerComponent/dialogs/exportDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.d.ts +12 -0
- package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js +74 -0
- package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js.map +1 -0
- package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.d.ts +16 -0
- package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js +32 -0
- package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js.map +1 -0
- package/coreui/components/edaManagerComponent/edaDetail.js +21 -7
- package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
- package/coreui/components/edaManagerComponent/edaNavigator.d.ts +2 -0
- package/coreui/components/edaManagerComponent/edaNavigator.js +4 -4
- package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
- package/coreui/components/edaManagerComponent/edaSelect.d.ts +2 -0
- package/coreui/components/edaManagerComponent/edaSelect.js +13 -13
- package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
- package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.d.ts +6 -0
- package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js +7 -0
- package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js.map +1 -0
- package/coreui/components/edaManagerComponent/utils/export.d.ts +1 -1
- package/coreui/components/edaManagerComponent/utils/export.js +20 -23
- package/coreui/components/edaManagerComponent/utils/export.js.map +1 -1
- package/coreui/components/select/abstractMultiSelect.d.ts +32 -0
- package/coreui/components/select/abstractMultiSelect.js +126 -0
- package/coreui/components/select/abstractMultiSelect.js.map +1 -0
- package/coreui/components/select/abstractSelectModalDialog.d.ts +5 -0
- package/coreui/components/select/abstractSelectModalDialog.js +45 -5
- package/coreui/components/select/abstractSelectModalDialog.js.map +1 -1
- package/coreui/components/webPush/webPushSwitch.js.map +1 -1
- package/coreui/images/logo.svg +9 -9
- package/coreui/images/logo_full.svg +11 -11
- package/d2configuration/edaManager/{DB.EM_EDA_DescriptiveVector.xml → DB.EM_EDA_VectorScenario.xml} +10 -10
- package/d2configuration/edaManager/E.EM_DETAIL_IMPL.xml +4 -4
- package/d2configuration/edaManager/E.EM_DETAIL_UNIT.xml +35 -15
- package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +13 -5
- package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +12 -1
- package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +113 -5
- package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +11 -1
- package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +25 -1
- package/d2configuration/edaManager/{SD.EM_EDA_StatVectorRec_V1.xml → SD.EM_EDA_VectorScenario.xml} +13 -36
- package/package.json +2 -2
- package/coreui/components/edaManagerComponent/components/edaTableEditorDialog.js.map +0 -1
- package/coreui/components/edaManagerComponent/components/exportDialog.js.map +0 -1
- package/d2configuration/edaManager/SD.EM_EDA_DescriptiveVector.xml +0 -179
- package/d2configuration/edaManager/SD.EM_EDA_InsertValuesToVector_V1.xml +0 -227
- package/d2configuration/edaManager/SD.EM_EDA_ReadValuesFromVector_V1.xml +0 -178
- package/d2configuration/edaManager/SD.EM_EDA_VectorValues.xml +0 -58
- /package/coreui/components/edaManagerComponent/{components → dialogs}/edaTableEditorDialog.d.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Icon from '@ant-design/icons';
|
|
3
|
+
const FolderRemoveOutlinedSvg = () => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "64 64 896 896", width: "1em", height: "1em", fill: "currentColor" },
|
|
4
|
+
React.createElement("path", { d: "M880 298H544l-56-112H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330c0-17.7-14.3-32-32-32zM840 768H184V262h261.3l56 112H840v394z" }),
|
|
5
|
+
React.createElement("path", { d: "M432 592h160c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8H432c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8z" })));
|
|
6
|
+
export const FolderRemoveOutlined = (props) => (React.createElement(Icon, { component: FolderRemoveOutlinedSvg, ...props }));
|
|
7
|
+
//# sourceMappingURL=folderRemoveOutlined.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folderRemoveOutlined.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/icons/folderRemoveOutlined.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,mBAAmB,CAAC;AAKrC,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,CAClC,6BAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc;IACxG,8BAAM,CAAC,EAAC,kKAAkK,GAAE;IAC5K,8BAAM,CAAC,EAAC,2FAA2F,GAAE,CACnG,CACT,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAwC,EAAE,EAAE,CAAC,CAC9E,oBAAC,IAAI,IAAC,SAAS,EAAE,uBAAuB,KAAM,KAAK,GAAI,CAC1D,CAAA","sourcesContent":["import React from \"react\";\r\nimport Icon from '@ant-design/icons';\r\nimport type {GetProps} from 'antd';\r\n\r\ntype CustomIconComponentProps = GetProps<typeof Icon>;\r\n\r\nconst FolderRemoveOutlinedSvg = () => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"64 64 896 896\" width=\"1em\" height=\"1em\" fill=\"currentColor\">\r\n <path d=\"M880 298H544l-56-112H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330c0-17.7-14.3-32-32-32zM840 768H184V262h261.3l56 112H840v394z\"/>\r\n <path d=\"M432 592h160c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8H432c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8z\"/>\r\n </svg>\r\n);\r\n\r\nexport const FolderRemoveOutlined = (props: Partial<CustomIconComponentProps>) => (\r\n <Icon component={FolderRemoveOutlinedSvg} {...props} />\r\n)"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LoadingContextValue } from "../context/loadingContext";
|
|
2
2
|
import EdaManagerApi, { GroupData, ScenarioData, VectorData } from "../../../../api/eda/edaManagerApi";
|
|
3
|
-
import { XmlVectorExportConfig } from "../
|
|
3
|
+
import { XmlVectorExportConfig } from "../dialogs/exportDialog";
|
|
4
4
|
import { MessageInstance } from "antd/es/message/interface";
|
|
5
5
|
type LoadingCallback = (value: (((prevState: LoadingContextValue) => LoadingContextValue) | LoadingContextValue)) => void;
|
|
6
6
|
export declare function exportVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]>;
|
|
@@ -367,29 +367,26 @@ async function exportDescriptiveVector(root, api, vector, dateTimeMask, message)
|
|
|
367
367
|
return;
|
|
368
368
|
}
|
|
369
369
|
const element = root.ele("popis");
|
|
370
|
-
for (let desc of data
|
|
371
|
-
element.att("idx", desc.
|
|
372
|
-
element.att("typ_periody", desc.
|
|
373
|
-
element.att("typ_hodnoty", desc.
|
|
374
|
-
element.att("hodnota", desc.
|
|
375
|
-
element.att("valid", desc.
|
|
376
|
-
if (desc.
|
|
377
|
-
element.att("
|
|
378
|
-
}
|
|
379
|
-
if (desc.
|
|
380
|
-
element.att("
|
|
381
|
-
}
|
|
382
|
-
if (desc.
|
|
383
|
-
element.att("
|
|
384
|
-
}
|
|
385
|
-
if (desc.
|
|
386
|
-
element.att("
|
|
387
|
-
}
|
|
388
|
-
if (desc.
|
|
389
|
-
element.att("
|
|
390
|
-
}
|
|
391
|
-
if (desc.DODATOK_ID !== undefined) {
|
|
392
|
-
element.att("dodatok_id", desc.DODATOK_ID);
|
|
370
|
+
for (let desc of data) {
|
|
371
|
+
element.att("idx", desc.idx);
|
|
372
|
+
element.att("typ_periody", desc.periodType);
|
|
373
|
+
element.att("typ_hodnoty", desc.valueType);
|
|
374
|
+
element.att("hodnota", desc.value);
|
|
375
|
+
element.att("valid", desc.valid);
|
|
376
|
+
if (desc.timeFrom !== undefined) {
|
|
377
|
+
element.att("od", dayjs(desc.timeFrom).format(dateTimeMask));
|
|
378
|
+
}
|
|
379
|
+
if (desc.timeTo !== undefined) {
|
|
380
|
+
element.att("do", dayjs(desc.timeTo).format(dateTimeMask));
|
|
381
|
+
}
|
|
382
|
+
if (desc.value2 !== undefined) {
|
|
383
|
+
element.att("hodnota2", desc.value2);
|
|
384
|
+
}
|
|
385
|
+
if (desc.status !== undefined) {
|
|
386
|
+
element.att("stav", desc.status);
|
|
387
|
+
}
|
|
388
|
+
if (desc.supplement !== undefined) {
|
|
389
|
+
element.att("dodatok_id", desc.supplement);
|
|
393
390
|
}
|
|
394
391
|
}
|
|
395
392
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/utils/export.ts"],"names":[],"mappings":"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","sourcesContent":["import {create, XMLElement} from \"xmlbuilder\";\r\nimport {SD_EM_EDA_PairVector} from \"../../../../api/eda/generated/structures\";\r\nimport {LoadingContextValue} from \"../context/loadingContext\";\r\nimport {EdaSamplingType, EdaVectorType} from \"../constants/edaTypes\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport EdaManagerApi, {GroupData, ScenarioData, TreeItem, VectorData, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {XmlVectorExportConfig} from \"../components/exportDialog\";\r\nimport {MessageInstance} from \"antd/es/message/interface\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\n\r\ntype LoadingCallback = (value: (((prevState: LoadingContextValue) => LoadingContextValue) | LoadingContextValue)) => void\r\n\r\nexport async function exportVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const root = create('vektor', {version: '1.0', encoding: 'UTF-8'});\r\n let pairVector: SD_EM_EDA_PairVector | undefined;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingItem: vector.data.ZOBRAZ_MENO}));\r\n\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n try {\r\n const pairVectors = ((await api.loadPairVectorData(vector.data.ID_VEKTOR)).data as SD_EM_EDA_PairVector[]);\r\n pairVector = pairVectors.length > 0 ? pairVectors[0] : undefined;\r\n } catch (e) {\r\n message.error(String(e));\r\n }\r\n }\r\n\r\n root.att(\"meno\", vector.data.MENO);\r\n root.att(\"id_vektor\", vector.data.ID_VEKTOR);\r\n root.att(\"typ\", vector.data.TYP);\r\n root.att(\"autor\", vector.data.AUTOR);\r\n root.att(\"private\", vector.data.PRIVATE);\r\n root.att(\"integral\", vector.data.INTEGRAL);\r\n root.att(\"zobraz_meno\", vector.data.ZOBRAZ_MENO);\r\n root.att(\"view_round\", vector.data.VIEW_ROUND);\r\n root.att(\"exec_round\", vector.data.EXEC_ROUND);\r\n root.att(\"view_dec_pl\", vector.data.VIEW_DEC_PL);\r\n root.att(\"exec_dec_pl\", vector.data.EXEC_DEC_PL);\r\n\r\n if (vector.data.POPIS !== undefined) {\r\n root.att(\"popis\", vector.data.POPIS);\r\n }\r\n if (vector.data.TYP !== EdaVectorType.Pair && vector.data.TECH_JEDNOTKY !== undefined) {\r\n root.att(\"tech_jednotky\", vector.data.TECH_JEDNOTKY);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.TECH_JEDNOTKY !== undefined) {\r\n root.att(\"tech_jednotky\", pairVector?.TECH_JEDNOTKY);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.TECH_JEDNOTKY_Y !== undefined) {\r\n root.att(\"tech_jednotky\", pairVector?.TECH_JEDNOTKY_Y);\r\n }\r\n if (vector.data.TYP_HODNOTY !== undefined) {\r\n root.att(\"typ_hodnoty\", vector.data.TYP_HODNOTY);\r\n }\r\n if (vector.data.PRIST_PRAVA_R !== undefined) {\r\n root.att(\"prist_prava_r\", vector.data.PRIST_PRAVA_R);\r\n }\r\n if (vector.data.PRIST_PRAVA_W !== undefined) {\r\n root.att(\"prist_prava_w\", vector.data.PRIST_PRAVA_W);\r\n }\r\n if (vector.data.MENOEX !== \".\") {\r\n root.att(\"menoex\", vector.data.MENOEX);\r\n }\r\n if (vector.data.TIME_ZONE !== undefined) {\r\n root.att(\"time_zone_offset\", vector.data.TIME_ZONE);\r\n }\r\n if (vector.data.USER_CH !== undefined) {\r\n root.att(\"user_ch\", vector.data.USER_CH);\r\n }\r\n if (vector.data.DATA_OFFSET !== undefined) {\r\n root.att(\"data_offset\", vector.data.DATA_OFFSET);\r\n }\r\n if (vector.data.ID_TABLESPACE !== undefined) {\r\n root.att(\"id_tablespace\", vector.data.ID_TABLESPACE);\r\n }\r\n if (vector.data.VERSIONED_SINCE !== undefined) {\r\n root.att(\"versioned_since\", vector.data.VERSIONED_SINCE);\r\n }\r\n if (vector.data.ARCHIVE_NAME !== undefined) {\r\n root.att(\"archive_name\", vector.data.ARCHIVE_NAME);\r\n }\r\n if (vector.data.ARCHIVE_ROW !== undefined) {\r\n root.att(\"archive_row\", vector.data.ARCHIVE_ROW);\r\n }\r\n if (vector.data.ARCHIVE_COL !== undefined) {\r\n root.att(\"archive_col\", vector.data.ARCHIVE_COL);\r\n }\r\n if (vector.data.STATUS_TEXT !== undefined) {\r\n root.att(\"status_text\", vector.data.STATUS_TEXT);\r\n }\r\n if (vector.data.LOG_ACCESS !== undefined) {\r\n root.att(\"log_access\", vector.data.LOG_ACCESS);\r\n }\r\n if (vector.data.INTERVAL_STABLE !== undefined) {\r\n root.att(\"interval_stable\", vector.data.INTERVAL_STABLE);\r\n }\r\n if (vector.data.PERIOD_BEGIN_TIME !== undefined) {\r\n root.att(\"period_begin_time\", dayjs(vector.data.PERIOD_BEGIN_TIME).format(dateTimeMask));\r\n }\r\n if (vector.data.PERIOD_STEP_BASE !== undefined) {\r\n root.att(\"period_step_base\", vector.data.PERIOD_STEP_BASE);\r\n }\r\n if (vector.data.PERIOD_STEP_COUNT !== undefined) {\r\n root.att(\"period_step_count\", vector.data.PERIOD_STEP_COUNT);\r\n }\r\n if (vector.data.ID_VALIDATOR !== undefined) {\r\n root.att(\"id_validator\", vector.data.ID_VALIDATOR);\r\n }\r\n if (vector.data.ID_MASTER_ENTITY !== undefined) {\r\n root.att(\"id_master_entity\", vector.data.ID_MASTER_ENTITY);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.HODNOTA_X !== undefined) {\r\n root.att(\"hodnota_x\", pairVector?.HODNOTA_X);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.HODNOTA_Y !== undefined) {\r\n root.att(\"hodnota_y\", pairVector?.HODNOTA_Y);\r\n }\r\n if (config.exportValues && [EdaVectorType.FifteenMinutes, EdaVectorType.Hour, EdaVectorType.Day, EdaVectorType.Change].includes(vector.data.TYP)) {\r\n resultData.push(...await exportSpecifiedVector(api, vector, config, dateTimeMask, setLoadingState, message));\r\n }\r\n if (config.exportValues && [EdaVectorType.Descriptive, EdaVectorType.Interval].includes(vector.data.TYP)) {\r\n await exportDescriptiveVector(root, api, vector, dateTimeMask, message);\r\n }\r\n if ([EdaVectorType.FifteenMinutesCalc, EdaVectorType.HourCalc, EdaVectorType.DayCalc, EdaVectorType.ChangeCalc].includes(vector.data.TYP)) {\r\n await exportCalcVector(root, api, vector, message);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n await exportPairVector(root, api, vector, config, dateTimeMask, message);\r\n }\r\n\r\n root.dtd({pubID: ''})\r\n resultData.push([`vekt_${vector.data.MENO}`, root.end({pretty: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportGroup(api: EdaManagerApi, group: GroupData, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const root = create('skupina', {version: '1.0', encoding: 'UTF-8'});\r\n\r\n root.att(\"meno\", group.data.MENO);\r\n root.att(\"id_skvektor\", group.data.ID_SKVEKTOR);\r\n root.att(\"autor\", group.data.AUTOR);\r\n root.att(\"zobraz_meno\", group.data.ZOBRAZ_MENO);\r\n root.att(\"private\", group.data.PRIVATE);\r\n\r\n if (group.data.POPIS !== undefined) {\r\n root.att(\"popis\", group.data.POPIS);\r\n }\r\n if (group.data.PRIST_PRAVA_R !== undefined) {\r\n root.att(\"prist_prava_r\", group.data.PRIST_PRAVA_R);\r\n }\r\n if (group.data.PRIST_PRAVA_W !== undefined) {\r\n root.att(\"prist_prava_w\", group.data.PRIST_PRAVA_W);\r\n }\r\n if (group.data.USERINPUTFLAG !== undefined) {\r\n root.att(\"userinputflag\", group.data.USERINPUTFLAG);\r\n }\r\n\r\n if (config.exportSubgroups) {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading subgroups\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getGroupChildren(group.data.ID_SKVEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubGroup(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getGroupChildren(group.data.ID_SKVEKTOR, offset);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubGroup(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getGroupVectors(group.data.ID_SKVEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getGroupVectors(group.data.ID_SKVEKTOR, offset);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n root.dtd({pubID: ''})\r\n resultData.push([`skup_${group.data.MENO}`, root.end({pretty: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportScenario(api: EdaManagerApi, scenario: ScenarioData, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const root = create('scenar', {version: '1.0', encoding: 'UTF-8'});\r\n\r\n root.att(\"meno\", scenario.data.MENO);\r\n root.att(\"autor\", scenario.data.AUTOR);\r\n root.att(\"zobraz_meno\", scenario.data.ZOBRAZ_MENO);\r\n root.att(\"private\", scenario.data.PRIVATE);\r\n root.att(\"ano_diagram\", scenario.data.ANO_DIAGRAM);\r\n\r\n if (scenario.data.POPIS !== undefined) {\r\n root.att(\"popis\", scenario.data.POPIS);\r\n }\r\n if (scenario.data.CAS_DLZKA !== undefined) {\r\n root.att(\"cas_dlzka\", scenario.data.CAS_DLZKA);\r\n }\r\n if (scenario.data.CAS_POSUN !== undefined) {\r\n root.att(\"cas_posun\", scenario.data.CAS_POSUN);\r\n }\r\n if (scenario.data.CAS_JEMNOST !== undefined) {\r\n root.att(\"cas_posun\", scenario.data.CAS_JEMNOST);\r\n }\r\n if (scenario.data.PRIST_PRAVA_R !== undefined) {\r\n root.att(\"prist_prava_r\", scenario.data.PRIST_PRAVA_R);\r\n }\r\n if (scenario.data.PRIST_PRAVA_W !== undefined) {\r\n root.att(\"prist_prava_w\", scenario.data.PRIST_PRAVA_W);\r\n }\r\n if (scenario.data.FILTER !== undefined) {\r\n root.att(\"filter\", scenario.data.FILTER);\r\n }\r\n if (scenario.data.FILTER_USER !== undefined) {\r\n root.att(\"filter_user\", scenario.data.FILTER_USER);\r\n }\r\n if (scenario.data.FILTER_TYP !== undefined) {\r\n root.att(\"filter_typ\", scenario.data.FILTER_TYP);\r\n }\r\n if (scenario.data.DIAGRAM !== undefined) {\r\n root.att(\"diagram\", scenario.data.DIAGRAM);\r\n }\r\n if (scenario.data.ANO_ZMENA !== undefined) {\r\n root.att(\"ano_zmena\", scenario.data.ANO_ZMENA);\r\n }\r\n if (scenario.data.ANO_GRAFXY !== undefined) {\r\n root.att(\"ano_grafxy\", scenario.data.ANO_GRAFXY);\r\n }\r\n if (scenario.data.ANO_MATICA !== undefined) {\r\n root.att(\"ano_matica\", scenario.data.ANO_MATICA);\r\n }\r\n if (scenario.data.ANO_PAIR !== undefined) {\r\n root.att(\"ano_matica\", scenario.data.ANO_PAIR);\r\n }\r\n\r\n if (config.exportSubgroups) {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading subscenarios\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getScenarioChildren(scenario.data.ID_SCENAR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubScenarios(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getScenarioChildren(scenario.data.ID_SCENAR, offset);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubScenarios(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getScenarioVectors(scenario.data.ID_SCENAR, undefined, undefined, true);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getScenarioVectors(scenario.data.ID_SCENAR, offset, undefined, true);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n root.dtd({pubID: ''})\r\n resultData.push([`scenar_${scenario.data.MENO}`, root.end({pretty: true})]);\r\n return resultData;\r\n}\r\n\r\nasync function exportCalcVector(root: XMLElement, api: EdaManagerApi, vector: VectorData, message: MessageInstance): Promise<void> {\r\n let data;\r\n\r\n try {\r\n data = await api.loadCalcVectorData(vector.data.ID_VEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return;\r\n }\r\n\r\n if (data.data.length > 0) {\r\n const prescription = data.data[0];\r\n const element = root.ele(\"predpis\");\r\n\r\n if (prescription.POPIS !== undefined) {\r\n element.att(\"popis\", prescription.POPIS);\r\n }\r\n\r\n element.cdata(data.prescription);\r\n }\r\n}\r\n\r\nasync function exportDescriptiveVector(root: XMLElement, api: EdaManagerApi, vector: VectorData, dateTimeMask: string, message: MessageInstance): Promise<void> {\r\n let data;\r\n\r\n try {\r\n data = await api.loadDescriptiveVectorData(vector.data.ID_VEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return;\r\n }\r\n\r\n const element = root.ele(\"popis\");\r\n\r\n for (let desc of data.data) {\r\n element.att(\"idx\", desc.IDX);\r\n element.att(\"typ_periody\", desc.TYP_PERIODY);\r\n element.att(\"typ_hodnoty\", desc.TYP_HODNOTY);\r\n element.att(\"hodnota\", desc.HODNOTA);\r\n element.att(\"valid\", desc.VALID);\r\n\r\n if (desc.EDA_ID !== undefined) {\r\n element.att(\"eda_id\", desc.EDA_ID);\r\n }\r\n if (desc.TIME_FROM !== undefined) {\r\n element.att(\"od\", dayjs(desc.TIME_FROM).format(dateTimeMask));\r\n }\r\n if (desc.TIME_TO !== undefined) {\r\n element.att(\"do\", dayjs(desc.TIME_TO).format(dateTimeMask));\r\n }\r\n if (desc.HODNOTA2 !== undefined) {\r\n element.att(\"hodnota2\", desc.HODNOTA2);\r\n }\r\n if (desc.STAV !== undefined) {\r\n element.att(\"stav\", desc.STAV);\r\n }\r\n if (desc.DODATOK_ID !== undefined) {\r\n element.att(\"dodatok_id\", desc.DODATOK_ID);\r\n }\r\n }\r\n}\r\n\r\nasync function exportSpecifiedVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string,\r\n setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined) {\r\n return [];\r\n }\r\n\r\n const result: [string, string][] = [];\r\n const [from, to] = exportInterval;\r\n const years: { start: dayjs.Dayjs, end: dayjs.Dayjs }[] = [];\r\n let current = from;\r\n\r\n while (current.isSameOrBefore(to, \"year\")) {\r\n const yearEnd = current.endOf(\"year\");\r\n\r\n years.push({start: current, end: yearEnd});\r\n current = current.add(1, 'year').startOf('year')\r\n }\r\n\r\n for (const range of years.values()) {\r\n let values: VectorValuesData;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingItem: vector.data.ZOBRAZ_MENO + \" - \" + range.start.year()}));\r\n\r\n try {\r\n values = await api.readVectorValues(vector.data.ID_VEKTOR, range.start, range.end, EdaSamplingType.Default);\r\n } catch (e) {\r\n message.error(String(e));\r\n continue;\r\n }\r\n\r\n const root = create('vektor', {version: '1.0', encoding: 'UTF-8'});\r\n\r\n if (!values.data) {\r\n message.error(i18n(\"No vector data found\"));\r\n continue;\r\n }\r\n\r\n for (let value of values.data) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(value.val.valueTime).format(dateTimeMask));\r\n\r\n if (value.val.value !== undefined && value.val.value !== null) {\r\n valueElement.att(\"value\", value.val.value);\r\n }\r\n\r\n if (value.val.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA\", 1);\r\n }\r\n if (value.val.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB\", 1);\r\n }\r\n if (value.val.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC\", 1);\r\n }\r\n if (value.val.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD\", 1);\r\n }\r\n }\r\n\r\n root.dtd({pubID: ''});\r\n result.push([`vekt_${vector.data.MENO}_DATA_${range.start.year()}`, root.end({pretty: true})]);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nasync function exportPairVector(root: XMLElement, api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, message: MessageInstance): Promise<void> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined || !config.exportValues) {\r\n return;\r\n }\r\n\r\n let pairData;\r\n\r\n try {\r\n pairData = await api.readPairVectorValues(vector.data.ID_VEKTOR, exportInterval[0], exportInterval[1], EdaSamplingType.Default);\r\n } catch (e) {\r\n message.error(String(e));\r\n return;\r\n }\r\n\r\n for (let data of pairData) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(data.valX.valueTime).format(dateTimeMask));\r\n\r\n if (data.valX.valueTime !== undefined) {\r\n valueElement.att(\"value_x\", data.valX.value);\r\n\r\n if (data.valX.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_x\", 1);\r\n }\r\n if (data.valX.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_x\", 1);\r\n }\r\n if (data.valX.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_x\", 1);\r\n }\r\n if (data.valX.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_x\", 1);\r\n }\r\n }\r\n\r\n if (data.valY.valueTime !== undefined) {\r\n valueElement.att(\"value_y\", data.valY.value);\r\n\r\n if (data.valY.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_y\", 1);\r\n }\r\n if (data.valY.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_y\", 1);\r\n }\r\n if (data.valY.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_y\", 1);\r\n }\r\n if (data.valY.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_y\", 1);\r\n }\r\n }\r\n\r\n if (data.idx.value !== undefined) {\r\n valueElement.att(\"idx\", data.idx.value);\r\n }\r\n }\r\n}\r\n\r\nasync function exportSubGroup(api: EdaManagerApi, item: TreeItem, root: XMLElement, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n let subgroup;\r\n\r\n root.ele(\"podskupina\", {meno: item.Name});\r\n\r\n try {\r\n subgroup = await api.loadGroupData(item.ID!);\r\n } catch (e) {\r\n message.error(String(e));\r\n console.error(e);\r\n return [];\r\n }\r\n\r\n if (subgroup) {\r\n return await exportGroup(api, subgroup, config, dateTimeMask, setLoadingState, message);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubVector(api: EdaManagerApi, item: TreeItem, root: XMLElement, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n let subVector;\r\n\r\n if (!config.vectorTypes[item.Type as EdaVectorType]) {\r\n return [];\r\n }\r\n\r\n root.ele(\"vektor\", {meno: item.Name});\r\n\r\n try {\r\n subVector = await api.loadVectorData(item.ID!);\r\n } catch (e) {\r\n message.error(String(e));\r\n console.error(e);\r\n return [];\r\n }\r\n\r\n if (subVector) {\r\n return await exportVector(api, subVector, config, dateTimeMask, setLoadingState, message);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubScenarios(api: EdaManagerApi, item: TreeItem, root: XMLElement, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n let subScenario;\r\n\r\n root.ele(\"podscenar\", {meno: item.Name});\r\n\r\n try {\r\n subScenario = await api.loadScenarioData(item.ID!);\r\n } catch (e) {\r\n message.error(String(e));\r\n console.error(e);\r\n return [];\r\n }\r\n\r\n if (subScenario) {\r\n return await exportScenario(api, subScenario, config, dateTimeMask, setLoadingState, message);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction getExportInterval(bt: dayjs.Dayjs | undefined, et: dayjs.Dayjs | undefined, vectorBt: dayjs.Dayjs | undefined, vectorEt: dayjs.Dayjs | undefined): [dayjs.Dayjs, dayjs.Dayjs] | undefined {\r\n if (vectorBt === undefined || vectorEt === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (bt !== undefined && et !== undefined) {\r\n let start = undefined;\r\n let end = undefined;\r\n\r\n if (bt.isBefore(vectorBt)) {\r\n start = bt;\r\n }\r\n if (et.isAfter(vectorEt)) {\r\n end = bt;\r\n }\r\n\r\n if (start !== undefined && end !== undefined && start.isBefore(end)) {\r\n return [start, end];\r\n }\r\n } else {\r\n return [vectorBt, vectorEt];\r\n }\r\n\r\n return undefined;\r\n}"]}
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/utils/export.ts"],"names":[],"mappings":"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","sourcesContent":["import {create, XMLElement} from \"xmlbuilder\";\r\nimport {SD_EM_EDA_PairVector} from \"../../../../api/eda/generated/structures\";\r\nimport {LoadingContextValue} from \"../context/loadingContext\";\r\nimport {EdaSamplingType, EdaVectorType} from \"../constants/edaTypes\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport EdaManagerApi, {GroupData, ScenarioData, TreeItem, VectorData, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {XmlVectorExportConfig} from \"../dialogs/exportDialog\";\r\nimport {MessageInstance} from \"antd/es/message/interface\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\n\r\ntype LoadingCallback = (value: (((prevState: LoadingContextValue) => LoadingContextValue) | LoadingContextValue)) => void\r\n\r\nexport async function exportVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const root = create('vektor', {version: '1.0', encoding: 'UTF-8'});\r\n let pairVector: SD_EM_EDA_PairVector | undefined;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingItem: vector.data.ZOBRAZ_MENO}));\r\n\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n try {\r\n const pairVectors = ((await api.loadPairVectorData(vector.data.ID_VEKTOR)).data as SD_EM_EDA_PairVector[]);\r\n pairVector = pairVectors.length > 0 ? pairVectors[0] : undefined;\r\n } catch (e) {\r\n message.error(String(e));\r\n }\r\n }\r\n\r\n root.att(\"meno\", vector.data.MENO);\r\n root.att(\"id_vektor\", vector.data.ID_VEKTOR);\r\n root.att(\"typ\", vector.data.TYP);\r\n root.att(\"autor\", vector.data.AUTOR);\r\n root.att(\"private\", vector.data.PRIVATE);\r\n root.att(\"integral\", vector.data.INTEGRAL);\r\n root.att(\"zobraz_meno\", vector.data.ZOBRAZ_MENO);\r\n root.att(\"view_round\", vector.data.VIEW_ROUND);\r\n root.att(\"exec_round\", vector.data.EXEC_ROUND);\r\n root.att(\"view_dec_pl\", vector.data.VIEW_DEC_PL);\r\n root.att(\"exec_dec_pl\", vector.data.EXEC_DEC_PL);\r\n\r\n if (vector.data.POPIS !== undefined) {\r\n root.att(\"popis\", vector.data.POPIS);\r\n }\r\n if (vector.data.TYP !== EdaVectorType.Pair && vector.data.TECH_JEDNOTKY !== undefined) {\r\n root.att(\"tech_jednotky\", vector.data.TECH_JEDNOTKY);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.TECH_JEDNOTKY !== undefined) {\r\n root.att(\"tech_jednotky\", pairVector?.TECH_JEDNOTKY);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.TECH_JEDNOTKY_Y !== undefined) {\r\n root.att(\"tech_jednotky\", pairVector?.TECH_JEDNOTKY_Y);\r\n }\r\n if (vector.data.TYP_HODNOTY !== undefined) {\r\n root.att(\"typ_hodnoty\", vector.data.TYP_HODNOTY);\r\n }\r\n if (vector.data.PRIST_PRAVA_R !== undefined) {\r\n root.att(\"prist_prava_r\", vector.data.PRIST_PRAVA_R);\r\n }\r\n if (vector.data.PRIST_PRAVA_W !== undefined) {\r\n root.att(\"prist_prava_w\", vector.data.PRIST_PRAVA_W);\r\n }\r\n if (vector.data.MENOEX !== \".\") {\r\n root.att(\"menoex\", vector.data.MENOEX);\r\n }\r\n if (vector.data.TIME_ZONE !== undefined) {\r\n root.att(\"time_zone_offset\", vector.data.TIME_ZONE);\r\n }\r\n if (vector.data.USER_CH !== undefined) {\r\n root.att(\"user_ch\", vector.data.USER_CH);\r\n }\r\n if (vector.data.DATA_OFFSET !== undefined) {\r\n root.att(\"data_offset\", vector.data.DATA_OFFSET);\r\n }\r\n if (vector.data.ID_TABLESPACE !== undefined) {\r\n root.att(\"id_tablespace\", vector.data.ID_TABLESPACE);\r\n }\r\n if (vector.data.VERSIONED_SINCE !== undefined) {\r\n root.att(\"versioned_since\", vector.data.VERSIONED_SINCE);\r\n }\r\n if (vector.data.ARCHIVE_NAME !== undefined) {\r\n root.att(\"archive_name\", vector.data.ARCHIVE_NAME);\r\n }\r\n if (vector.data.ARCHIVE_ROW !== undefined) {\r\n root.att(\"archive_row\", vector.data.ARCHIVE_ROW);\r\n }\r\n if (vector.data.ARCHIVE_COL !== undefined) {\r\n root.att(\"archive_col\", vector.data.ARCHIVE_COL);\r\n }\r\n if (vector.data.STATUS_TEXT !== undefined) {\r\n root.att(\"status_text\", vector.data.STATUS_TEXT);\r\n }\r\n if (vector.data.LOG_ACCESS !== undefined) {\r\n root.att(\"log_access\", vector.data.LOG_ACCESS);\r\n }\r\n if (vector.data.INTERVAL_STABLE !== undefined) {\r\n root.att(\"interval_stable\", vector.data.INTERVAL_STABLE);\r\n }\r\n if (vector.data.PERIOD_BEGIN_TIME !== undefined) {\r\n root.att(\"period_begin_time\", dayjs(vector.data.PERIOD_BEGIN_TIME).format(dateTimeMask));\r\n }\r\n if (vector.data.PERIOD_STEP_BASE !== undefined) {\r\n root.att(\"period_step_base\", vector.data.PERIOD_STEP_BASE);\r\n }\r\n if (vector.data.PERIOD_STEP_COUNT !== undefined) {\r\n root.att(\"period_step_count\", vector.data.PERIOD_STEP_COUNT);\r\n }\r\n if (vector.data.ID_VALIDATOR !== undefined) {\r\n root.att(\"id_validator\", vector.data.ID_VALIDATOR);\r\n }\r\n if (vector.data.ID_MASTER_ENTITY !== undefined) {\r\n root.att(\"id_master_entity\", vector.data.ID_MASTER_ENTITY);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.HODNOTA_X !== undefined) {\r\n root.att(\"hodnota_x\", pairVector?.HODNOTA_X);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector?.HODNOTA_Y !== undefined) {\r\n root.att(\"hodnota_y\", pairVector?.HODNOTA_Y);\r\n }\r\n if (config.exportValues && [EdaVectorType.FifteenMinutes, EdaVectorType.Hour, EdaVectorType.Day, EdaVectorType.Change].includes(vector.data.TYP)) {\r\n resultData.push(...await exportSpecifiedVector(api, vector, config, dateTimeMask, setLoadingState, message));\r\n }\r\n if (config.exportValues && [EdaVectorType.Descriptive, EdaVectorType.Interval].includes(vector.data.TYP)) {\r\n await exportDescriptiveVector(root, api, vector, dateTimeMask, message);\r\n }\r\n if ([EdaVectorType.FifteenMinutesCalc, EdaVectorType.HourCalc, EdaVectorType.DayCalc, EdaVectorType.ChangeCalc].includes(vector.data.TYP)) {\r\n await exportCalcVector(root, api, vector, message);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n await exportPairVector(root, api, vector, config, dateTimeMask, message);\r\n }\r\n\r\n root.dtd({pubID: ''})\r\n resultData.push([`vekt_${vector.data.MENO}`, root.end({pretty: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportGroup(api: EdaManagerApi, group: GroupData, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const root = create('skupina', {version: '1.0', encoding: 'UTF-8'});\r\n\r\n root.att(\"meno\", group.data.MENO);\r\n root.att(\"id_skvektor\", group.data.ID_SKVEKTOR);\r\n root.att(\"autor\", group.data.AUTOR);\r\n root.att(\"zobraz_meno\", group.data.ZOBRAZ_MENO);\r\n root.att(\"private\", group.data.PRIVATE);\r\n\r\n if (group.data.POPIS !== undefined) {\r\n root.att(\"popis\", group.data.POPIS);\r\n }\r\n if (group.data.PRIST_PRAVA_R !== undefined) {\r\n root.att(\"prist_prava_r\", group.data.PRIST_PRAVA_R);\r\n }\r\n if (group.data.PRIST_PRAVA_W !== undefined) {\r\n root.att(\"prist_prava_w\", group.data.PRIST_PRAVA_W);\r\n }\r\n if (group.data.USERINPUTFLAG !== undefined) {\r\n root.att(\"userinputflag\", group.data.USERINPUTFLAG);\r\n }\r\n\r\n if (config.exportSubgroups) {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading subgroups\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getGroupChildren(group.data.ID_SKVEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubGroup(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getGroupChildren(group.data.ID_SKVEKTOR, offset);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubGroup(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getGroupVectors(group.data.ID_SKVEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getGroupVectors(group.data.ID_SKVEKTOR, offset);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n root.dtd({pubID: ''})\r\n resultData.push([`skup_${group.data.MENO}`, root.end({pretty: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportScenario(api: EdaManagerApi, scenario: ScenarioData, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const root = create('scenar', {version: '1.0', encoding: 'UTF-8'});\r\n\r\n root.att(\"meno\", scenario.data.MENO);\r\n root.att(\"autor\", scenario.data.AUTOR);\r\n root.att(\"zobraz_meno\", scenario.data.ZOBRAZ_MENO);\r\n root.att(\"private\", scenario.data.PRIVATE);\r\n root.att(\"ano_diagram\", scenario.data.ANO_DIAGRAM);\r\n\r\n if (scenario.data.POPIS !== undefined) {\r\n root.att(\"popis\", scenario.data.POPIS);\r\n }\r\n if (scenario.data.CAS_DLZKA !== undefined) {\r\n root.att(\"cas_dlzka\", scenario.data.CAS_DLZKA);\r\n }\r\n if (scenario.data.CAS_POSUN !== undefined) {\r\n root.att(\"cas_posun\", scenario.data.CAS_POSUN);\r\n }\r\n if (scenario.data.CAS_JEMNOST !== undefined) {\r\n root.att(\"cas_posun\", scenario.data.CAS_JEMNOST);\r\n }\r\n if (scenario.data.PRIST_PRAVA_R !== undefined) {\r\n root.att(\"prist_prava_r\", scenario.data.PRIST_PRAVA_R);\r\n }\r\n if (scenario.data.PRIST_PRAVA_W !== undefined) {\r\n root.att(\"prist_prava_w\", scenario.data.PRIST_PRAVA_W);\r\n }\r\n if (scenario.data.FILTER !== undefined) {\r\n root.att(\"filter\", scenario.data.FILTER);\r\n }\r\n if (scenario.data.FILTER_USER !== undefined) {\r\n root.att(\"filter_user\", scenario.data.FILTER_USER);\r\n }\r\n if (scenario.data.FILTER_TYP !== undefined) {\r\n root.att(\"filter_typ\", scenario.data.FILTER_TYP);\r\n }\r\n if (scenario.data.DIAGRAM !== undefined) {\r\n root.att(\"diagram\", scenario.data.DIAGRAM);\r\n }\r\n if (scenario.data.ANO_ZMENA !== undefined) {\r\n root.att(\"ano_zmena\", scenario.data.ANO_ZMENA);\r\n }\r\n if (scenario.data.ANO_GRAFXY !== undefined) {\r\n root.att(\"ano_grafxy\", scenario.data.ANO_GRAFXY);\r\n }\r\n if (scenario.data.ANO_MATICA !== undefined) {\r\n root.att(\"ano_matica\", scenario.data.ANO_MATICA);\r\n }\r\n if (scenario.data.ANO_PAIR !== undefined) {\r\n root.att(\"ano_matica\", scenario.data.ANO_PAIR);\r\n }\r\n\r\n if (config.exportSubgroups) {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading subscenarios\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getScenarioChildren(scenario.data.ID_SCENAR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubScenarios(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getScenarioChildren(scenario.data.ID_SCENAR, offset);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubScenarios(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n {\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")}));\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n let firstPage;\r\n\r\n try {\r\n firstPage = await api.getScenarioVectors(scenario.data.ID_SCENAR, undefined, undefined, true);\r\n } catch (e) {\r\n message.error(String(e));\r\n return [];\r\n }\r\n\r\n for (let item of firstPage.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n if (firstPage.leftCount > 0) {\r\n totalItems = firstPage.items.length + firstPage.leftCount;\r\n offset += firstPage.items.length;\r\n\r\n while (offset < totalItems) {\r\n let page;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (offset / totalItems) * 100}));\r\n\r\n try {\r\n page = await api.getScenarioVectors(scenario.data.ID_SCENAR, offset, undefined, true);\r\n } catch (e) {\r\n message.error(String(e));\r\n break;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, setLoadingState, message));\r\n }\r\n\r\n offset += page.items.length;\r\n }\r\n }\r\n }\r\n\r\n root.dtd({pubID: ''})\r\n resultData.push([`scenar_${scenario.data.MENO}`, root.end({pretty: true})]);\r\n return resultData;\r\n}\r\n\r\nasync function exportCalcVector(root: XMLElement, api: EdaManagerApi, vector: VectorData, message: MessageInstance): Promise<void> {\r\n let data;\r\n\r\n try {\r\n data = await api.loadCalcVectorData(vector.data.ID_VEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return;\r\n }\r\n\r\n if (data.data.length > 0) {\r\n const prescription = data.data[0];\r\n const element = root.ele(\"predpis\");\r\n\r\n if (prescription.POPIS !== undefined) {\r\n element.att(\"popis\", prescription.POPIS);\r\n }\r\n\r\n element.cdata(data.prescription);\r\n }\r\n}\r\n\r\nasync function exportDescriptiveVector(root: XMLElement, api: EdaManagerApi, vector: VectorData, dateTimeMask: string, message: MessageInstance): Promise<void> {\r\n let data;\r\n\r\n try {\r\n data = await api.loadDescriptiveVectorData(vector.data.ID_VEKTOR);\r\n } catch (e) {\r\n message.error(String(e));\r\n return;\r\n }\r\n\r\n const element = root.ele(\"popis\");\r\n\r\n for (let desc of data) {\r\n element.att(\"idx\", desc.idx);\r\n element.att(\"typ_periody\", desc.periodType);\r\n element.att(\"typ_hodnoty\", desc.valueType);\r\n element.att(\"hodnota\", desc.value);\r\n element.att(\"valid\", desc.valid);\r\n\r\n // if (desc.id !== undefined) {\r\n // element.att(\"eda_id\", desc.id);\r\n // }\r\n if (desc.timeFrom !== undefined) {\r\n element.att(\"od\", dayjs(desc.timeFrom).format(dateTimeMask));\r\n }\r\n if (desc.timeTo !== undefined) {\r\n element.att(\"do\", dayjs(desc.timeTo).format(dateTimeMask));\r\n }\r\n if (desc.value2 !== undefined) {\r\n element.att(\"hodnota2\", desc.value2);\r\n }\r\n if (desc.status !== undefined) {\r\n element.att(\"stav\", desc.status);\r\n }\r\n if (desc.supplement !== undefined) {\r\n element.att(\"dodatok_id\", desc.supplement);\r\n }\r\n }\r\n}\r\n\r\nasync function exportSpecifiedVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string,\r\n setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined) {\r\n return [];\r\n }\r\n\r\n const result: [string, string][] = [];\r\n const [from, to] = exportInterval;\r\n const years: { start: dayjs.Dayjs, end: dayjs.Dayjs }[] = [];\r\n let current = from;\r\n\r\n while (current.isSameOrBefore(to, \"year\")) {\r\n const yearEnd = current.endOf(\"year\");\r\n\r\n years.push({start: current, end: yearEnd});\r\n current = current.add(1, 'year').startOf('year')\r\n }\r\n\r\n for (const range of years.values()) {\r\n let values: VectorValuesData;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingItem: vector.data.ZOBRAZ_MENO + \" - \" + range.start.year()}));\r\n\r\n try {\r\n values = await api.readVectorValues(vector.data.ID_VEKTOR, range.start, range.end, EdaSamplingType.Default);\r\n } catch (e) {\r\n message.error(String(e));\r\n continue;\r\n }\r\n\r\n const root = create('vektor', {version: '1.0', encoding: 'UTF-8'});\r\n\r\n if (!values.data) {\r\n message.error(i18n(\"No vector data found\"));\r\n continue;\r\n }\r\n\r\n for (let value of values.data) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(value.val.valueTime).format(dateTimeMask));\r\n\r\n if (value.val.value !== undefined && value.val.value !== null) {\r\n valueElement.att(\"value\", value.val.value);\r\n }\r\n\r\n if (value.val.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA\", 1);\r\n }\r\n if (value.val.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB\", 1);\r\n }\r\n if (value.val.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC\", 1);\r\n }\r\n if (value.val.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD\", 1);\r\n }\r\n }\r\n\r\n root.dtd({pubID: ''});\r\n result.push([`vekt_${vector.data.MENO}_DATA_${range.start.year()}`, root.end({pretty: true})]);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nasync function exportPairVector(root: XMLElement, api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, message: MessageInstance): Promise<void> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined || !config.exportValues) {\r\n return;\r\n }\r\n\r\n let pairData;\r\n\r\n try {\r\n pairData = await api.readPairVectorValues(vector.data.ID_VEKTOR, exportInterval[0], exportInterval[1], EdaSamplingType.Default);\r\n } catch (e) {\r\n message.error(String(e));\r\n return;\r\n }\r\n\r\n for (let data of pairData) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(data.valX.valueTime).format(dateTimeMask));\r\n\r\n if (data.valX.valueTime !== undefined) {\r\n valueElement.att(\"value_x\", data.valX.value);\r\n\r\n if (data.valX.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_x\", 1);\r\n }\r\n if (data.valX.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_x\", 1);\r\n }\r\n if (data.valX.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_x\", 1);\r\n }\r\n if (data.valX.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_x\", 1);\r\n }\r\n }\r\n\r\n if (data.valY.valueTime !== undefined) {\r\n valueElement.att(\"value_y\", data.valY.value);\r\n\r\n if (data.valY.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_y\", 1);\r\n }\r\n if (data.valY.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_y\", 1);\r\n }\r\n if (data.valY.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_y\", 1);\r\n }\r\n if (data.valY.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_y\", 1);\r\n }\r\n }\r\n\r\n if (data.idx.value !== undefined) {\r\n valueElement.att(\"idx\", data.idx.value);\r\n }\r\n }\r\n}\r\n\r\nasync function exportSubGroup(api: EdaManagerApi, item: TreeItem, root: XMLElement, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n let subgroup;\r\n\r\n root.ele(\"podskupina\", {meno: item.Name});\r\n\r\n try {\r\n subgroup = await api.loadGroupData(item.ID!);\r\n } catch (e) {\r\n message.error(String(e));\r\n console.error(e);\r\n return [];\r\n }\r\n\r\n if (subgroup) {\r\n return await exportGroup(api, subgroup, config, dateTimeMask, setLoadingState, message);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubVector(api: EdaManagerApi, item: TreeItem, root: XMLElement, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n let subVector;\r\n\r\n if (!config.vectorTypes[item.Type as EdaVectorType]) {\r\n return [];\r\n }\r\n\r\n root.ele(\"vektor\", {meno: item.Name});\r\n\r\n try {\r\n subVector = await api.loadVectorData(item.ID!);\r\n } catch (e) {\r\n message.error(String(e));\r\n console.error(e);\r\n return [];\r\n }\r\n\r\n if (subVector) {\r\n return await exportVector(api, subVector, config, dateTimeMask, setLoadingState, message);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubScenarios(api: EdaManagerApi, item: TreeItem, root: XMLElement, config: XmlVectorExportConfig, dateTimeMask: string, setLoadingState: LoadingCallback, message: MessageInstance): Promise<[string, string][]> {\r\n let subScenario;\r\n\r\n root.ele(\"podscenar\", {meno: item.Name});\r\n\r\n try {\r\n subScenario = await api.loadScenarioData(item.ID!);\r\n } catch (e) {\r\n message.error(String(e));\r\n console.error(e);\r\n return [];\r\n }\r\n\r\n if (subScenario) {\r\n return await exportScenario(api, subScenario, config, dateTimeMask, setLoadingState, message);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction getExportInterval(bt: dayjs.Dayjs | undefined, et: dayjs.Dayjs | undefined, vectorBt: dayjs.Dayjs | undefined, vectorEt: dayjs.Dayjs | undefined): [dayjs.Dayjs, dayjs.Dayjs] | undefined {\r\n if (vectorBt === undefined || vectorEt === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (bt !== undefined && et !== undefined) {\r\n let start = undefined;\r\n let end = undefined;\r\n\r\n if (bt.isBefore(vectorBt)) {\r\n start = bt;\r\n }\r\n if (et.isAfter(vectorEt)) {\r\n end = bt;\r\n }\r\n\r\n if (start !== undefined && end !== undefined && start.isBefore(end)) {\r\n return [start, end];\r\n }\r\n } else {\r\n return [vectorBt, vectorEt];\r\n }\r\n\r\n return undefined;\r\n}"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { SelectProps } from "antd";
|
|
3
|
+
import { AdvancedFilterApi, AdvancedFilterCondition } from "../../../api/advancedFilterApi";
|
|
4
|
+
import Entity from "../../../api/types/entity";
|
|
5
|
+
import AbstractEntityApi from "../../../api/abstractEntityApi";
|
|
6
|
+
import { SelectedEntity } from "./abstractSelect";
|
|
7
|
+
export interface AbstractMultiSelectProps<T extends Entity> extends SelectProps {
|
|
8
|
+
api: AbstractEntityApi<T>;
|
|
9
|
+
advancedFilterApi: AdvancedFilterApi;
|
|
10
|
+
value: SelectedEntity[];
|
|
11
|
+
filterConditions?: AdvancedFilterCondition[];
|
|
12
|
+
onChange(value: T[]): void;
|
|
13
|
+
}
|
|
14
|
+
interface AbstractMultiSelectSelectState<T extends Entity> {
|
|
15
|
+
selectDialogOpen: boolean;
|
|
16
|
+
loading: boolean;
|
|
17
|
+
options: T[];
|
|
18
|
+
}
|
|
19
|
+
export default abstract class AbstractMultiSelect<T extends Entity, P extends AbstractMultiSelectProps<T>, S extends AbstractMultiSelectSelectState<T> = AbstractMultiSelectSelectState<T>> extends React.Component<P, S> {
|
|
20
|
+
constructor(props: Readonly<P>);
|
|
21
|
+
protected initialState: AbstractMultiSelectSelectState<T>;
|
|
22
|
+
private getFilterConditionForCode;
|
|
23
|
+
private getFilterConditionForName;
|
|
24
|
+
private getFilterConditions;
|
|
25
|
+
onLoadData(searchString?: string): Promise<void>;
|
|
26
|
+
protected getData(filterConditions: AdvancedFilterCondition[]): Promise<import("../../../api/abstractEntityApi").PageableList<T>>;
|
|
27
|
+
private showCancelButton;
|
|
28
|
+
protected getSuffixIcon(): React.ReactNode;
|
|
29
|
+
abstract renderSelectDialog(): React.ReactNode;
|
|
30
|
+
render(): React.JSX.Element;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Select, Spin } from "antd";
|
|
3
|
+
import { AdvancedFilterLogicalOperator, AdvancedFilterOperator } from "../../../api/advancedFilterApi";
|
|
4
|
+
import AdvancedFilterUtils from "../advancedFilter/advancedFilterUtils";
|
|
5
|
+
import { GeneralEntityColumn, getStringAdvancedFilterColumn } from "../advancedFilter/advancedFilterColumnDefinitions";
|
|
6
|
+
import debounce from "lodash/debounce";
|
|
7
|
+
import { CloseCircleOutlined, LoadingOutlined, SelectOutlined } from "@ant-design/icons";
|
|
8
|
+
import { ERROR_COLOR } from "../../../api/constants/constants";
|
|
9
|
+
import i18n from "d2core/i18n/i18n";
|
|
10
|
+
import ColorTag from "../colorTag/colorTag";
|
|
11
|
+
export default class AbstractMultiSelect extends React.Component {
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super(props);
|
|
14
|
+
this.initialState = {
|
|
15
|
+
selectDialogOpen: false,
|
|
16
|
+
loading: false,
|
|
17
|
+
options: [],
|
|
18
|
+
};
|
|
19
|
+
this.onLoadData = debounce(this.onLoadData.bind(this), 250);
|
|
20
|
+
}
|
|
21
|
+
getFilterConditionForCode(searchString) {
|
|
22
|
+
return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), {
|
|
23
|
+
operator: AdvancedFilterOperator.LIKE,
|
|
24
|
+
value: `%${searchString ?? ""}%`,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
getFilterConditionForName(searchString) {
|
|
28
|
+
return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), {
|
|
29
|
+
operator: AdvancedFilterOperator.LIKE,
|
|
30
|
+
value: `%${searchString ?? ""}%`,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getFilterConditions(searchString) {
|
|
34
|
+
const filterConditionForCode = this.getFilterConditionForCode(searchString);
|
|
35
|
+
filterConditionForCode.left_par = 1;
|
|
36
|
+
filterConditionForCode.logical_operator = AdvancedFilterLogicalOperator.OR;
|
|
37
|
+
const filterConditionForName = this.getFilterConditionForName(searchString);
|
|
38
|
+
filterConditionForName.right_par = 1;
|
|
39
|
+
return [
|
|
40
|
+
filterConditionForCode,
|
|
41
|
+
filterConditionForName,
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
async onLoadData(searchString) {
|
|
45
|
+
this.setState({ loading: true });
|
|
46
|
+
const filterConditions = this.getFilterConditions(searchString);
|
|
47
|
+
if (this.props.filterConditions) {
|
|
48
|
+
filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;
|
|
49
|
+
filterConditions.push(...this.props.filterConditions);
|
|
50
|
+
}
|
|
51
|
+
const pageableList = await this.getData(filterConditions);
|
|
52
|
+
this.setState({ options: pageableList.data, loading: false });
|
|
53
|
+
}
|
|
54
|
+
async getData(filterConditions) {
|
|
55
|
+
return await this.props.api.getAllData(0, 10, "", filterConditions, true);
|
|
56
|
+
}
|
|
57
|
+
showCancelButton() {
|
|
58
|
+
return this.props.value.length > 0;
|
|
59
|
+
}
|
|
60
|
+
getSuffixIcon() {
|
|
61
|
+
if (this.state.loading) {
|
|
62
|
+
return React.createElement(LoadingOutlined, null);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return (React.createElement(React.Fragment, null,
|
|
66
|
+
this.showCancelButton() &&
|
|
67
|
+
React.createElement(CloseCircleOutlined, { style: { color: ERROR_COLOR }, title: i18n("Cancel Selected Entity"), onClick: () => {
|
|
68
|
+
this.props.onChange([]);
|
|
69
|
+
} }),
|
|
70
|
+
React.createElement(SelectOutlined, { title: i18n("Open Select Dialog"), onClick: () => {
|
|
71
|
+
this.setState({ selectDialogOpen: true });
|
|
72
|
+
} })));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
render() {
|
|
76
|
+
const { disabled, value, onChange, api, advancedFilterApi, filterConditions, ...rest } = this.props;
|
|
77
|
+
return (React.createElement("div", { onDoubleClick: () => {
|
|
78
|
+
if (!disabled && !this.state.selectDialogOpen) {
|
|
79
|
+
this.setState({ selectDialogOpen: true });
|
|
80
|
+
}
|
|
81
|
+
} },
|
|
82
|
+
this.renderSelectDialog(),
|
|
83
|
+
React.createElement(Select, { disabled: disabled, style: { width: "100%" }, labelInValue: true, filterOption: false, mode: "multiple", maxTagCount: "responsive", notFoundContent: this.state.loading
|
|
84
|
+
?
|
|
85
|
+
React.createElement("div", { style: { textAlign: "center" } },
|
|
86
|
+
React.createElement(Spin, { indicator: React.createElement(LoadingOutlined, { spin: true }), spinning: true }))
|
|
87
|
+
:
|
|
88
|
+
null, value: value.map(value => {
|
|
89
|
+
return {
|
|
90
|
+
value: value.id,
|
|
91
|
+
label: React.createElement("span", null,
|
|
92
|
+
value.code,
|
|
93
|
+
(value.code && value.name) ? ` (${value.name})` : value.name)
|
|
94
|
+
};
|
|
95
|
+
}), loading: this.state.loading, onChange: (newValue) => {
|
|
96
|
+
const selectedIds = new Set(newValue.map(opt => opt.value));
|
|
97
|
+
const allKnownEntities = [...this.state.options, ...this.props.value];
|
|
98
|
+
const seen = new Set();
|
|
99
|
+
onChange(allKnownEntities.filter(e => {
|
|
100
|
+
if (seen.has(e.id) || !selectedIds.has(e.id))
|
|
101
|
+
return false;
|
|
102
|
+
seen.add(e.id);
|
|
103
|
+
return true;
|
|
104
|
+
}));
|
|
105
|
+
}, onFocus: () => {
|
|
106
|
+
this.onLoadData();
|
|
107
|
+
}, onClick: event => {
|
|
108
|
+
if (event.target instanceof HTMLInputElement || event.target instanceof HTMLSpanElement) {
|
|
109
|
+
this.onLoadData();
|
|
110
|
+
}
|
|
111
|
+
}, onSearch: this.onLoadData, options: this.state.options.map(value => {
|
|
112
|
+
return {
|
|
113
|
+
value: value.id,
|
|
114
|
+
code: value.code,
|
|
115
|
+
name: value.name,
|
|
116
|
+
};
|
|
117
|
+
}), optionRender: option => {
|
|
118
|
+
const data = option.data;
|
|
119
|
+
const displayName = data.name ?? "";
|
|
120
|
+
return (React.createElement("div", { style: { display: "flex", justifyContent: "space-between" } },
|
|
121
|
+
data.code && React.createElement(ColorTag, null, data.code),
|
|
122
|
+
React.createElement("div", { title: displayName }, displayName)));
|
|
123
|
+
}, suffixIcon: React.createElement("span", { style: { display: "flex", gap: 4, fontSize: 14, color: "rgba(0, 0, 0, 0.55)" } }, this.getSuffixIcon()), ...rest })));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=abstractMultiSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractMultiSelect.js","sourceRoot":"","sources":["../../../../../coreui/components/select/abstractMultiSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {Select, SelectProps, Spin} from \"antd\";\r\nimport {\r\n AdvancedFilterApi,\r\n AdvancedFilterCondition,\r\n AdvancedFilterLogicalOperator,\r\n AdvancedFilterOperator\r\n} from \"../../../api/advancedFilterApi\";\r\nimport AdvancedFilterUtils from \"../advancedFilter/advancedFilterUtils\";\r\nimport {\r\n GeneralEntityColumn,\r\n getStringAdvancedFilterColumn\r\n} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {CloseCircleOutlined, LoadingOutlined, SelectOutlined} from \"@ant-design/icons\";\r\nimport {ERROR_COLOR} from \"../../../api/constants/constants\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport AbstractEntityApi from \"../../../api/abstractEntityApi\";\r\nimport {SelectedEntity} from \"./abstractSelect\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\n\r\nexport interface AbstractMultiSelectProps<T extends Entity> extends SelectProps {\r\n api: AbstractEntityApi<T>\r\n advancedFilterApi: AdvancedFilterApi\r\n\r\n value: SelectedEntity[]\r\n filterConditions?: AdvancedFilterCondition[]\r\n\r\n onChange(value: T[]): void\r\n}\r\n\r\ninterface AbstractMultiSelectSelectState<T extends Entity> {\r\n selectDialogOpen: boolean\r\n loading: boolean\r\n options: T[]\r\n}\r\n\r\nexport default abstract class AbstractMultiSelect<T extends Entity,\r\n P extends AbstractMultiSelectProps<T>,\r\n S extends AbstractMultiSelectSelectState<T> = AbstractMultiSelectSelectState<T>> extends React.Component<P, S> {\r\n\r\n constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadData = debounce(this.onLoadData.bind(this), 250);\r\n }\r\n\r\n protected initialState: AbstractMultiSelectSelectState<T> = {\r\n selectDialogOpen: false,\r\n loading: false,\r\n options: [],\r\n }\r\n\r\n private getFilterConditionForCode(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.CODE), {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n });\r\n }\r\n\r\n private getFilterConditionForName(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition(getStringAdvancedFilterColumn(GeneralEntityColumn.NAME), {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n })\r\n }\r\n\r\n private getFilterConditions(searchString?: string): AdvancedFilterCondition[] {\r\n const filterConditionForCode = this.getFilterConditionForCode(searchString);\r\n filterConditionForCode.left_par = 1;\r\n filterConditionForCode.logical_operator = AdvancedFilterLogicalOperator.OR;\r\n\r\n const filterConditionForName = this.getFilterConditionForName(searchString);\r\n filterConditionForName.right_par = 1;\r\n\r\n return [\r\n filterConditionForCode,\r\n filterConditionForName,\r\n ]\r\n }\r\n\r\n async onLoadData(searchString?: string) {\r\n this.setState({loading: true});\r\n\r\n const filterConditions = this.getFilterConditions(searchString);\r\n if (this.props.filterConditions) {\r\n filterConditions[filterConditions.length - 1].logical_operator = AdvancedFilterLogicalOperator.AND;\r\n filterConditions.push(...this.props.filterConditions);\r\n }\r\n\r\n const pageableList = await this.getData(filterConditions);\r\n\r\n this.setState({options: pageableList.data, loading: false});\r\n }\r\n\r\n protected async getData(filterConditions: AdvancedFilterCondition[]) {\r\n return await this.props.api.getAllData(0, 10, \"\", filterConditions, true);\r\n }\r\n\r\n private showCancelButton(): boolean {\r\n return this.props.value.length > 0;\r\n }\r\n\r\n protected getSuffixIcon(): React.ReactNode {\r\n if (this.state.loading) {\r\n return <LoadingOutlined/>;\r\n } else {\r\n return (\r\n <>\r\n {this.showCancelButton() &&\r\n <CloseCircleOutlined\r\n style={{color: ERROR_COLOR}}\r\n title={i18n(\"Cancel Selected Entity\")}\r\n onClick={() => {\r\n this.props.onChange([]);\r\n }}\r\n />\r\n }\r\n <SelectOutlined\r\n title={i18n(\"Open Select Dialog\")}\r\n onClick={() => {\r\n this.setState({selectDialogOpen: true})\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n }\r\n\r\n abstract renderSelectDialog(): React.ReactNode;\r\n\r\n render() {\r\n const {\r\n disabled,\r\n value,\r\n onChange,\r\n api,\r\n advancedFilterApi,\r\n filterConditions,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n <div\r\n onDoubleClick={() => {\r\n if (!disabled && !this.state.selectDialogOpen) {\r\n this.setState({selectDialogOpen: true});\r\n }\r\n }}\r\n >\r\n {this.renderSelectDialog()}\r\n <Select\r\n disabled={disabled}\r\n style={{width: \"100%\"}}\r\n labelInValue\r\n filterOption={false}\r\n mode=\"multiple\"\r\n maxTagCount=\"responsive\"\r\n notFoundContent={\r\n this.state.loading\r\n ?\r\n <div style={{textAlign: \"center\"}}>\r\n <Spin indicator={<LoadingOutlined spin/>} spinning/>\r\n </div>\r\n :\r\n null\r\n }\r\n value={\r\n value.map(value => {\r\n return {\r\n value: value.id,\r\n label:\r\n <span>\r\n {value.code}\r\n {(value.code && value.name) ? ` (${value.name})` : value.name}\r\n </span>\r\n }\r\n })\r\n }\r\n loading={this.state.loading}\r\n onChange={(newValue) => {\r\n const selectedIds = new Set((newValue as any[]).map(opt => opt.value));\r\n const allKnownEntities = [...this.state.options, ...this.props.value as unknown as T[]];\r\n const seen = new Set();\r\n onChange(\r\n allKnownEntities.filter(e => {\r\n if (seen.has(e.id) || !selectedIds.has(e.id)) return false;\r\n seen.add(e.id);\r\n return true;\r\n })\r\n );\r\n }}\r\n onFocus={() => {\r\n this.onLoadData();\r\n }}\r\n onClick={event => {\r\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLSpanElement) {\r\n this.onLoadData();\r\n }\r\n }}\r\n onSearch={this.onLoadData}\r\n options={\r\n this.state.options.map(value => {\r\n return {\r\n value: value.id,\r\n code: value.code,\r\n name: value.name,\r\n }\r\n })\r\n }\r\n optionRender={option => {\r\n const data = option.data;\r\n const displayName = data.name ?? \"\";\r\n\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"space-between\"}}>\r\n {data.code && <ColorTag>{data.code}</ColorTag>}\r\n <div title={displayName}>{displayName}</div>\r\n </div>\r\n )\r\n }}\r\n suffixIcon={\r\n <span style={{display: \"flex\", gap: 4, fontSize: 14, color: \"rgba(0, 0, 0, 0.55)\"}}>\r\n {this.getSuffixIcon()}\r\n </span>\r\n }\r\n {...rest}\r\n />\r\n </div>\r\n );\r\n }\r\n}"]}
|
|
@@ -5,9 +5,13 @@ import { RowDoubleClickedEvent, SelectionChangedEvent } from "ag-grid-community"
|
|
|
5
5
|
import AbstractEntityApi from "../../../api/abstractEntityApi";
|
|
6
6
|
import AdvancedFilteredGrid, { AdvancedFilteredGridProps, AdvancedFilteredGridState } from "../advancedFilter/advancedFilteredGrid";
|
|
7
7
|
import type { ButtonProps } from "antd/es/button/button";
|
|
8
|
+
export interface WithSelected {
|
|
9
|
+
selected?: boolean;
|
|
10
|
+
}
|
|
8
11
|
export interface AbstractSelectModalDialogProps<T extends Entity> extends AdvancedFilteredGridProps<T> {
|
|
9
12
|
api: AbstractEntityApi<T>;
|
|
10
13
|
multiSelect?: boolean;
|
|
14
|
+
preselectedIds?: number[];
|
|
11
15
|
visible: boolean;
|
|
12
16
|
initialWidth?: number;
|
|
13
17
|
initialHeight?: number;
|
|
@@ -24,6 +28,7 @@ export default abstract class AbstractSelectModalDialog<T extends Entity, P exte
|
|
|
24
28
|
protected adaptLoadedData(data: T[]): void;
|
|
25
29
|
abstract getIdColumnName(): string;
|
|
26
30
|
abstract getTitle(): string;
|
|
31
|
+
protected getSelectionColumnDefinition(): DataGridColDef;
|
|
27
32
|
protected getCodeColumnDefinition(): DataGridColDef;
|
|
28
33
|
protected getNameColumnDefinition(): DataGridColDef;
|
|
29
34
|
protected getExtraColumnDefinitions(): DataGridColDef[];
|