d2aura 26.0.11 → 26.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/api/eda/edaManagerApi.d.ts +19 -2
  2. package/api/eda/edaManagerApi.js +36 -3
  3. package/api/eda/edaManagerApi.js.map +1 -1
  4. package/api/eda/generated/events.d.ts +86 -28
  5. package/api/eda/generated/events.js +154 -42
  6. package/api/eda/generated/events.js.map +1 -1
  7. package/api/eda/generated/structures.d.ts +21 -0
  8. package/api/eda/generated/structures.js.map +1 -1
  9. package/api/impl/utils/reportError.js +16 -0
  10. package/api/impl/utils/reportError.js.map +1 -1
  11. package/api/webPush/webPushApi.js.map +1 -1
  12. package/api/webPush/webPushUtils.js.map +1 -1
  13. package/core/i18n/d2aura.sk.json +8 -0
  14. package/core/i18n/jsapi.sk.json +4 -0
  15. package/core/i18n/jsapi.ua.json +4 -0
  16. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.d.ts +13 -37
  17. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +114 -211
  18. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
  19. package/coreui/components/edaManagerComponent/components/edaDetailPanel.d.ts +2 -0
  20. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js +2 -2
  21. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js.map +1 -1
  22. package/coreui/components/edaManagerComponent/components/edaGraphPanel.d.ts +14 -5
  23. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +338 -326
  24. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
  25. package/coreui/components/edaManagerComponent/components/edaTablePanel.d.ts +15 -4
  26. package/coreui/components/edaManagerComponent/components/edaTablePanel.js +139 -64
  27. package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
  28. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.d.ts +3 -8
  29. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js +12 -38
  30. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js.map +1 -1
  31. package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +1 -1
  32. package/coreui/components/edaManagerComponent/components/edaTreeView.js +5 -5
  33. package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
  34. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.d.ts +8 -2
  35. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +39 -11
  36. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
  37. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +33 -0
  38. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js +3 -0
  39. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -0
  40. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.d.ts +9 -0
  41. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +267 -0
  42. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -0
  43. package/coreui/components/edaManagerComponent/context/loadingContext.d.ts +7 -0
  44. package/coreui/components/edaManagerComponent/context/loadingContext.js +3 -0
  45. package/coreui/components/edaManagerComponent/context/loadingContext.js.map +1 -0
  46. package/coreui/components/edaManagerComponent/context/sharedSampleRange.d.ts +1 -2
  47. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js +10 -0
  48. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js.map +1 -1
  49. package/coreui/components/edaManagerComponent/edaDetail.d.ts +4 -12
  50. package/coreui/components/edaManagerComponent/edaDetail.js +53 -88
  51. package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
  52. package/coreui/components/edaManagerComponent/edaNavigator.d.ts +2 -1
  53. package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
  54. package/coreui/components/edaManagerComponent/edaSelect.d.ts +13 -7
  55. package/coreui/components/edaManagerComponent/edaSelect.js +211 -7
  56. package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
  57. package/coreui/components/edaManagerComponent/utils/utils.d.ts +17 -0
  58. package/coreui/components/edaManagerComponent/utils/utils.js +57 -0
  59. package/coreui/components/edaManagerComponent/utils/utils.js.map +1 -1
  60. package/coreui/components/webPush/webPushSwitch.js.map +1 -1
  61. package/coreui/images/logo.svg +9 -9
  62. package/coreui/images/logo_full.svg +11 -11
  63. package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +64 -2
  64. package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +51 -13
  65. package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +304 -4
  66. package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +9 -3
  67. package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +89 -3
  68. package/d2configuration/edaManager/EDA_StatVectorRec.xml +56 -0
  69. package/d2configuration/edaManager/SD.EM_EDA_StatVectorRec_V1.xml +125 -0
  70. package/d2configuration/edaManager/SD.EM_Filter_Condition.xml +156 -0
  71. package/d2configuration/edaManager/SD.EM_Tree_Item.xml +34 -1
  72. package/package.json +3 -3
  73. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.d.ts +0 -6
  74. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.js +0 -14
  75. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"edaDetail.js","sourceRoot":"","sources":["../../../../../coreui/components/edaManagerComponent/edaDetail.tsx"],"names":[],"mappings":"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","sourcesContent":["import EdaManagerApi from \"../../../api/eda/edaManagerApi\";\r\nimport React from \"react\";\r\nimport {SD_EM_EDA_Function, SD_EM_EDA_GroupVector, SD_EM_EDA_Scenario, SD_EM_EDA_Vector, SD_EM_EDA_VectorEx, SD_EM_Tree_Item} from \"../../../api/eda/generated/structures\";\r\nimport {EdaSamplingType, GroupData, IdType, ScenarioData, StepType, TypedIndex, VectorData} from \"./constants/edaTypes\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Tabs} from \"antd\";\r\nimport {Tab} from \"rc-tabs/lib/interface\"\r\nimport {EdaDetailPanel} from \"./components/edaDetailPanel\";\r\nimport EdaTablePanel from \"./components/edaTablePanel\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\nimport EdaGraphPanel from \"./components/edaGraphPanel\";\r\nimport {SharedSampleRange, SharedSampleRangeContext} from \"./context/sharedSampleRange\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {getRange} from \"./components/edaTimeWindowPickerPanel\";\r\nimport {loadPreference, savePreference} from \"./utils/utils\";\r\nimport {StorageTypes} from \"./constants/storageTypes\";\r\nimport {Variant} from \"antd/es/config-provider\";\r\n\r\nconst useStyles = createStyles(({css},) => {\r\n return {\r\n baseLayout: css`\r\n height: 100%;\r\n overflow: hidden;\r\n \r\n .ant-tabs-content {\r\n height: 100%;\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport type ItemType = SD_EM_Tree_Item[] | TypedIndex\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n item?: ItemType\r\n className?: string\r\n style?: React.CSSProperties\r\n\r\n size?: SizeType\r\n variant?: Variant\r\n\r\n showTimeWindow?: boolean\r\n showChartLegend?: boolean\r\n}\r\n\r\ninterface State {\r\n type?: IdType\r\n data?: VectorData | GroupData | ScenarioData\r\n tabs: Tab[]\r\n activeTabKey: string\r\n\r\n btTotal: dayjs.Dayjs\r\n etTotal: dayjs.Dayjs\r\n btWindow: dayjs.Dayjs\r\n etWindow: dayjs.Dayjs\r\n sampling: EdaSamplingType\r\n vectorPage: number\r\n totalCount: number\r\n step: StepType\r\n}\r\n\r\nexport class EdaDetail extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n const btTotal = dayjs(loadPreference(StorageTypes.EDA_DETAIL_BT, dayjs().startOf('day').toISOString()));\r\n const etTotal = dayjs(loadPreference(StorageTypes.EDA_DETAIL_ET, dayjs().endOf('day').toISOString()));\r\n const step = loadPreference(StorageTypes.EDA_DETAIL_STEP, StepType.Daily);\r\n const {bt, et} = getRange(btTotal, etTotal, step);\r\n\r\n this.state = {\r\n tabs: [],\r\n activeTabKey: \"detail\",\r\n\r\n btTotal: btTotal,\r\n etTotal: etTotal,\r\n btWindow: bt,\r\n etWindow: et,\r\n sampling: EdaSamplingType.Default,\r\n vectorPage: 1,\r\n totalCount: 0,\r\n step: step\r\n }\r\n\r\n this.updateSampleRange = this.updateSampleRange.bind(this);\r\n this.updateTimeWindow = this.updateTimeWindow.bind(this);\r\n this.updateTotalCount = this.updateTotalCount.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n const {data, type} = this.state;\r\n\r\n await this.loadData(this.props.item);\r\n this.setState({tabs: this.getTabs(data, type)});\r\n }\r\n\r\n async componentDidUpdate(prevProps: Readonly<Props>, prevState: Readonly<State>) {\r\n const {data, type, activeTabKey, btTotal, etTotal, step} = this.state;\r\n const {item, size, variant, showTimeWindow, showChartLegend} = this.props;\r\n\r\n if (prevProps.item !== item) {\r\n await this.loadData(item);\r\n } else if (\r\n prevProps.size !== size ||\r\n prevProps.variant !== variant ||\r\n prevState.activeTabKey !== activeTabKey ||\r\n prevProps.showTimeWindow !== showTimeWindow ||\r\n prevProps.showChartLegend !== showChartLegend\r\n ) {\r\n this.setState({tabs: this.getTabs(data, type)});\r\n }\r\n\r\n if (!prevState.btTotal.isSame(btTotal)) {\r\n savePreference(StorageTypes.EDA_DETAIL_BT, btTotal);\r\n }\r\n if (!prevState.etTotal.isSame(etTotal)) {\r\n savePreference(StorageTypes.EDA_DETAIL_ET, etTotal);\r\n }\r\n if (prevState.step !== step) {\r\n savePreference(StorageTypes.EDA_DETAIL_STEP, step);\r\n }\r\n }\r\n\r\n render() {\r\n const {className, style, size} = this.props;\r\n const {btTotal, etTotal, btWindow, etWindow, sampling, step, vectorPage, totalCount, activeTabKey} = this.state;\r\n const context: SharedSampleRange = {\r\n btTotal,\r\n etTotal,\r\n btWindow,\r\n etWindow,\r\n sampling,\r\n step,\r\n vectorPage,\r\n totalCount,\r\n updateValues: this.updateSampleRange,\r\n updateTimeWindow: this.updateTimeWindow,\r\n updateTotalCount: this.updateTotalCount,\r\n };\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <WithCss useStyles={useStyles}>\r\n {(css) =>\r\n <SharedSampleRangeContext.Provider value={context}>\r\n <Tabs\r\n size={size}\r\n type={\"card\"}\r\n className={css.styles.baseLayout}\r\n onChange={(key) => this.setState({activeTabKey: key})}\r\n activeKey={activeTabKey}\r\n items={this.state.tabs}/>\r\n </SharedSampleRangeContext.Provider>\r\n }\r\n </WithCss>\r\n </div>\r\n )\r\n }\r\n\r\n private updateSampleRange(bt: dayjs.Dayjs, et: dayjs.Dayjs, step: EdaSamplingType, vectorPage: number) {\r\n this.setState({btTotal: bt, etTotal: et, sampling: step, vectorPage: vectorPage});\r\n }\r\n\r\n private updateTotalCount(totalCount: number) {\r\n this.setState({totalCount: totalCount});\r\n }\r\n\r\n private updateTimeWindow(bt: dayjs.Dayjs, et: dayjs.Dayjs, step: StepType) {\r\n this.setState({btWindow: bt, etWindow: et, step: step});\r\n }\r\n\r\n private getTabs(data?: VectorData | GroupData | ScenarioData, type?: IdType): Tab[] {\r\n const {size, variant, api, showTimeWindow, showChartLegend} = this.props;\r\n const {activeTabKey} = this.state;\r\n\r\n return [\r\n {\r\n key: \"detail\",\r\n label: i18n(\"Detail\"),\r\n children: (\r\n <EdaDetailPanel\r\n data={data}\r\n type={type}\r\n size={size}\r\n variant={variant}\r\n />\r\n ),\r\n },\r\n {\r\n key: \"table\",\r\n label: i18n(\"Table\"),\r\n children: (\r\n <EdaTablePanel\r\n api={api}\r\n data={data}\r\n type={type}\r\n size={size}\r\n isActive={activeTabKey === \"table\"}\r\n showTimeWindow={showTimeWindow}\r\n />\r\n ),\r\n },\r\n {\r\n key: \"graph\",\r\n label: i18n(\"Graph\"),\r\n children: (\r\n <EdaGraphPanel\r\n api={api}\r\n data={data}\r\n type={type}\r\n size={size}\r\n isActive={activeTabKey === \"graph\"}\r\n showTimeWindow={showTimeWindow}\r\n showChartLegend={showChartLegend}\r\n />\r\n ),\r\n },\r\n ]\r\n }\r\n\r\n private async loadData(item?: ItemType) {\r\n const {api} = this.props;\r\n\r\n if (item) {\r\n if (Array.isArray(item)) {\r\n\r\n } else {\r\n let dataItem: VectorData | GroupData | ScenarioData | null = null;\r\n\r\n switch (item.type) {\r\n case IdType.VECTOR: {\r\n const data = await api.loadVectorData(item.id);\r\n\r\n if (data.data.length > 0) {\r\n const item = data.data[0] as SD_EM_EDA_Vector\r\n const itemEx = data.dataEx[0] as SD_EM_EDA_VectorEx\r\n const dataFunction = data.dataFunction[0] as SD_EM_EDA_Function\r\n dataItem = {data: item, extData: itemEx, dataFunction: dataFunction};\r\n }\r\n break;\r\n }\r\n case IdType.GROUP: {\r\n const data = await api.loadGroupData(item.id);\r\n\r\n if (data.data.length > 0) {\r\n const item = data.data[0] as SD_EM_EDA_GroupVector;\r\n dataItem = {data: item};\r\n }\r\n break;\r\n }\r\n case IdType.SCENARIO: {\r\n const data = await api.loadScenarioData(item.id);\r\n\r\n if (data.data.length > 0) {\r\n const item = data.data[0] as SD_EM_EDA_Scenario;\r\n dataItem = {data: item};\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (dataItem !== null) {\r\n this.setState({\r\n type: item.type,\r\n data: dataItem,\r\n tabs: this.getTabs(dataItem, item.type),\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}"]}
1
+ {"version":3,"file":"edaDetail.js","sourceRoot":"","sources":["../../../../../coreui/components/edaManagerComponent/edaDetail.tsx"],"names":[],"mappings":"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","sourcesContent":["import EdaManagerApi from \"../../../api/eda/edaManagerApi\";\r\nimport React from \"react\";\r\nimport {SD_EM_Tree_Item} from \"../../../api/eda/generated/structures\";\r\nimport {EdaSamplingType, GroupData, IdType, ScenarioData, StepType, TypedIndex, VectorData} from \"./constants/edaTypes\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Tabs} from \"antd\";\r\nimport {Tab} from \"rc-tabs/lib/interface\"\r\nimport {EdaDetailPanel} from \"./components/edaDetailPanel\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\nimport {SharedSampleRange, SharedSampleRangeContext} from \"./context/sharedSampleRange\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {getRange} from \"./components/edaTimeWindowPickerPanel\";\r\nimport {loadDetail, loadPreference, savePreference} from \"./utils/utils\";\r\nimport {StorageTypes} from \"./constants/storageTypes\";\r\nimport {Variant} from \"antd/es/config-provider\";\r\nimport {EdaVectorDataProvider} from \"./context/edaVectorDataProvider\";\r\nimport {EdaTablePanel} from \"./components/edaTablePanel\";\r\nimport {EdaGraphPanel} from \"./components/edaGraphPanel\";\r\n\r\nconst useStyles = createStyles(({css},) => {\r\n return {\r\n baseLayout: css`\r\n height: 100%;\r\n overflow: hidden;\r\n \r\n .ant-tabs-content {\r\n height: 100%;\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport type ItemType = SD_EM_Tree_Item[] | TypedIndex\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n item?: ItemType\r\n className?: string\r\n style?: React.CSSProperties\r\n\r\n size?: SizeType\r\n variant?: Variant\r\n\r\n showTimeWindow?: boolean\r\n showChartLegend?: boolean\r\n}\r\n\r\ninterface State {\r\n type?: IdType\r\n data?: VectorData | GroupData | ScenarioData\r\n tabs: Tab[]\r\n activeTabKey: string\r\n context: SharedSampleRange\r\n}\r\n\r\nexport class EdaDetail extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n const btTotal = dayjs(loadPreference(StorageTypes.EDA_DETAIL_BT, dayjs().startOf('day').toISOString()));\r\n const etTotal = dayjs(loadPreference(StorageTypes.EDA_DETAIL_ET, dayjs().endOf('day').toISOString()));\r\n const step = loadPreference(StorageTypes.EDA_DETAIL_STEP, StepType.Daily);\r\n const {bt, et} = getRange(btTotal, etTotal, step);\r\n const context: SharedSampleRange = {\r\n btTotal,\r\n etTotal,\r\n btWindow: bt,\r\n etWindow: et,\r\n sampling: EdaSamplingType.Default,\r\n step,\r\n vectorPage: 1,\r\n updateValues: (bt, et, step, vectorPage) => this.updateSampleRange(bt, et, step, vectorPage),\r\n updateTimeWindow: (bt, et, step) => this.updateTimeWindow(bt, et, step),\r\n }\r\n\r\n this.state = {\r\n tabs: [],\r\n activeTabKey: \"detail\",\r\n context: context,\r\n }\r\n\r\n this.updateSampleRange = this.updateSampleRange.bind(this);\r\n this.updateTimeWindow = this.updateTimeWindow.bind(this);\r\n this.setContextState = this.setContextState.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n const {api, item} = this.props;\r\n const {data, type} = this.state;\r\n\r\n if (item && !Array.isArray(item)) {\r\n const result = await loadDetail(api, item);\r\n\r\n this.setState({\r\n type: item.type,\r\n data: result,\r\n tabs: this.getTabs(result, item.type),\r\n });\r\n } else {\r\n this.setState({tabs: this.getTabs(data, type)});\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps: Readonly<Props>, prevState: Readonly<State>) {\r\n const {data, type, activeTabKey, context} = this.state;\r\n const {api, item, size, variant, showTimeWindow, showChartLegend} = this.props;\r\n\r\n if (prevProps.item !== item) {\r\n if (item && !Array.isArray(item)) {\r\n const result = await loadDetail(api, item);\r\n\r\n this.setState({\r\n type: item.type,\r\n data: result,\r\n tabs: this.getTabs(result, item.type),\r\n });\r\n }\r\n } else if (\r\n prevProps.size !== size ||\r\n prevProps.variant !== variant ||\r\n prevState.activeTabKey !== activeTabKey ||\r\n prevProps.showTimeWindow !== showTimeWindow ||\r\n prevProps.showChartLegend !== showChartLegend\r\n ) {\r\n this.setState({tabs: this.getTabs(data, type)});\r\n }\r\n\r\n if (!prevState.context.btTotal.isSame(context.btTotal)) {\r\n savePreference(StorageTypes.EDA_DETAIL_BT, context.btTotal);\r\n }\r\n if (!prevState.context.etTotal.isSame(context.etTotal)) {\r\n savePreference(StorageTypes.EDA_DETAIL_ET, context.etTotal);\r\n }\r\n if (prevState.context.step !== context.step) {\r\n savePreference(StorageTypes.EDA_DETAIL_STEP, context.step);\r\n }\r\n }\r\n\r\n render() {\r\n const {api, className, style, size, showTimeWindow} = this.props;\r\n const {context, activeTabKey} = this.state;\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <WithCss useStyles={useStyles}>\r\n {(css) =>\r\n <SharedSampleRangeContext.Provider value={context}>\r\n <EdaVectorDataProvider\r\n api={api}\r\n showTimeWindow={showTimeWindow}\r\n >\r\n <Tabs\r\n size={size}\r\n type={\"card\"}\r\n className={css.styles.baseLayout}\r\n onChange={(key) => this.setState({activeTabKey: key})}\r\n activeKey={activeTabKey}\r\n items={this.state.tabs}/>\r\n </EdaVectorDataProvider>\r\n </SharedSampleRangeContext.Provider>\r\n }\r\n </WithCss>\r\n </div>\r\n )\r\n }\r\n\r\n private updateSampleRange(bt: dayjs.Dayjs, et: dayjs.Dayjs, step: EdaSamplingType, vectorPage: number) {\r\n this.setContextState({btTotal: bt, etTotal: et, sampling: step, vectorPage: vectorPage});\r\n }\r\n\r\n private updateTimeWindow(bt: dayjs.Dayjs, et: dayjs.Dayjs, step: StepType) {\r\n this.setContextState({btWindow: bt, etWindow: et, step: step});\r\n }\r\n\r\n private getTabs(data?: VectorData | GroupData | ScenarioData, type?: IdType): Tab[] {\r\n const {size, variant, api, showTimeWindow, showChartLegend} = this.props;\r\n const {activeTabKey} = this.state;\r\n\r\n return [\r\n {\r\n key: \"detail\",\r\n label: i18n(\"Detail\"),\r\n children: (\r\n <EdaDetailPanel\r\n api={api}\r\n data={data}\r\n type={type}\r\n size={size}\r\n variant={variant}\r\n />\r\n ),\r\n },\r\n {\r\n key: \"table\",\r\n label: i18n(\"Table\"),\r\n children: (\r\n <EdaTablePanel\r\n api={api}\r\n data={data}\r\n type={type}\r\n size={size}\r\n isActive={activeTabKey === \"table\"}\r\n showTimeWindow={showTimeWindow}\r\n />\r\n ),\r\n },\r\n {\r\n key: \"graph\",\r\n label: i18n(\"Graph\"),\r\n children: (\r\n <EdaGraphPanel\r\n api={api}\r\n data={data}\r\n type={type}\r\n size={size}\r\n isActive={activeTabKey === \"graph\"}\r\n showTimeWindow={showTimeWindow}\r\n showChartLegend={showChartLegend}\r\n />\r\n ),\r\n },\r\n ]\r\n }\r\n\r\n private setContextState(partialContext: Partial<SharedSampleRange>) {\r\n this.setState({context: {...this.state.context, ...partialContext}});\r\n }\r\n}"]}
@@ -2,11 +2,12 @@ import React from "react";
2
2
  import EdaManagerApi from "../../../api/eda/edaManagerApi";
3
3
  import { TypedIndex } from "./constants/edaTypes";
4
4
  import { SizeType } from "antd/lib/config-provider/SizeContext";
5
+ import { SD_EM_Tree_Item } from "../../../api/eda/generated/structures";
5
6
  interface Props {
6
7
  api: EdaManagerApi;
7
8
  style?: React.CSSProperties;
8
9
  size?: SizeType;
9
- onDoubleClick?: (item: TypedIndex) => void;
10
+ onDoubleClick?: (id: TypedIndex, item: SD_EM_Tree_Item) => void;
10
11
  }
11
12
  interface State {
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"edaNavigator.js","sourceRoot":"","sources":["../../../../../coreui/components/edaManagerComponent/edaNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,MAAM,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAGpC,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAG,EAAE;IAC7C,OAAO;QACH,UAAU,EAAE,GAAG,CAAA;;;;;oCAKa,KAAK,CAAC,gBAAgB;iCACzB,KAAK,CAAC,YAAY;;;;;2BAKxB,KAAK,CAAC,UAAU;;SAElC;KACJ,CAAA;AACL,CAAC,CAAC,CAAC;AAcH,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAuB;IAC3D,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EACZ,CAAA;IACL,CAAC;IAED,YAAY;QACR,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9C,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAC;YAClE,6BAAK,SAAS,EAAE,iBAAiB;gBAC7B,oBAAC,KAAK,CAAC,OAAO,IAAC,IAAI,EAAE,IAAI;oBACrB,oBAAC,MAAM,IAAC,IAAI,EAAE,oBAAC,cAAc,OAAE,GAAI,CACvB,CACd;YACN,6BAAK,KAAK,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;gBAC1B,oBAAC,WAAW,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,YAAY,CAAC,KAAK,EACxB,iBAAiB,EAAE,aAAa,GAClC,CACA,CACJ,CACT,CAAC;IACN,CAAC;IAED,eAAe;QACX,MAAM,EAAC,GAAG,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAExC,OAAO,CACH;YACI,oBAAC,WAAW,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,YAAY,CAAC,QAAQ,EAC3B,iBAAiB,EAAE,aAAa,GAClC,CACH,CACN,CAAC;IACN,CAAC;IAED,MAAM;QACF,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,OAAO,CACH,oBAAC,OAAO,IAAC,SAAS,EAAE,SAAS,IACxB,CAAC,GAAG,EAAE,EAAE,CACL,6BAAK,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK;YAC/C,oBAAC,IAAI,IACD,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,EACvB,KAAK,EAAE;oBACH;wBACI,GAAG,EAAE,QAAQ;wBACb,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;wBACrB,QAAQ,EAAE,KAAK;wBACf,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE;qBAChC;oBACD;wBACI,GAAG,EAAE,WAAW;wBAChB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;wBACxB,QAAQ,EAAE,KAAK;wBACf,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE;qBACnC;iBACJ,GACH,CACA,CAEJ,CACb,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React from \"react\";\r\nimport EdaManagerApi from \"../../../api/eda/edaManagerApi\";\r\nimport {EdaTreeView, TreeViewType} from \"./components/edaTreeView\";\r\nimport {Button, Space, Tabs} from \"antd\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport {SearchOutlined} from \"@ant-design/icons\";\r\nimport {TypedIndex} from \"./constants/edaTypes\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\n\r\nconst useStyles = createStyles(({css, token},) => {\r\n return {\r\n baseLayout: css`\r\n height: 100%;\r\n \r\n .ant-tabs-content {\r\n height: 100%;\r\n background-color: ${token.colorBgContainer};\r\n border-radius: ${token.borderRadius}px;\r\n transition: background-color 0.3s;\r\n }\r\n \r\n .control-buttons {\r\n padding: ${token.paddingXXS}px;\r\n }\r\n `\r\n }\r\n});\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n style?: React.CSSProperties\r\n\r\n size?: SizeType\r\n\r\n onDoubleClick?: (item: TypedIndex) => void\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nexport class EdaNavigator extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n this.state = {\r\n }\r\n }\r\n\r\n renderGroups(): React.ReactNode {\r\n const {size, api, onDoubleClick} = this.props;\r\n\r\n return (\r\n <div style={{height: \"100%\", display: \"flex\", flexDirection: \"column\"}}>\r\n <div className={\"control-buttons\"}>\r\n <Space.Compact size={size}>\r\n <Button icon={<SearchOutlined/>} />\r\n </Space.Compact>\r\n </div>\r\n <div style={{flex: \"1 1 auto\"}}>\r\n <EdaTreeView\r\n api={api}\r\n type={TreeViewType.GROUP}\r\n onItemDoubleClick={onDoubleClick}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n renderScenarios(): React.ReactNode {\r\n const {api, onDoubleClick} = this.props;\r\n\r\n return (\r\n <>\r\n <EdaTreeView\r\n api={api}\r\n type={TreeViewType.SCENARIO}\r\n onItemDoubleClick={onDoubleClick}\r\n />\r\n </>\r\n );\r\n }\r\n\r\n render(): React.ReactNode {\r\n const {style, size} = this.props;\r\n\r\n return (\r\n <WithCss useStyles={useStyles}>\r\n {(css) =>\r\n <div className={css.styles.baseLayout} style={style}>\r\n <Tabs\r\n type={\"editable-card\"}\r\n size={size}\r\n style={{height: \"100%\"}}\r\n items={[\r\n {\r\n key: \"groups\",\r\n label: i18n(\"Groups\"),\r\n closable: false,\r\n children: this.renderGroups(),\r\n },\r\n {\r\n key: \"scenarios\",\r\n label: i18n(\"Scenarios\"),\r\n closable: false,\r\n children: this.renderScenarios(),\r\n },\r\n ]}\r\n />\r\n </div>\r\n }\r\n </WithCss>\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"edaNavigator.js","sourceRoot":"","sources":["../../../../../coreui/components/edaManagerComponent/edaNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,MAAM,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAIpC,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAG,EAAE;IAC7C,OAAO;QACH,UAAU,EAAE,GAAG,CAAA;;;;;oCAKa,KAAK,CAAC,gBAAgB;iCACzB,KAAK,CAAC,YAAY;;;;;2BAKxB,KAAK,CAAC,UAAU;;SAElC;KACJ,CAAA;AACL,CAAC,CAAC,CAAC;AAcH,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAuB;IAC3D,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EACZ,CAAA;IACL,CAAC;IAED,YAAY;QACR,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9C,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAC;YAClE,6BAAK,SAAS,EAAE,iBAAiB;gBAC7B,oBAAC,KAAK,CAAC,OAAO,IAAC,IAAI,EAAE,IAAI;oBACrB,oBAAC,MAAM,IAAC,IAAI,EAAE,oBAAC,cAAc,OAAE,GAAI,CACvB,CACd;YACN,6BAAK,KAAK,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;gBAC1B,oBAAC,WAAW,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,YAAY,CAAC,KAAK,EACxB,iBAAiB,EAAE,aAAa,GAClC,CACA,CACJ,CACT,CAAC;IACN,CAAC;IAED,eAAe;QACX,MAAM,EAAC,GAAG,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAExC,OAAO,CACH;YACI,oBAAC,WAAW,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,YAAY,CAAC,QAAQ,EAC3B,iBAAiB,EAAE,aAAa,GAClC,CACH,CACN,CAAC;IACN,CAAC;IAED,MAAM;QACF,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,OAAO,CACH,oBAAC,OAAO,IAAC,SAAS,EAAE,SAAS,IACxB,CAAC,GAAG,EAAE,EAAE,CACL,6BAAK,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK;YAC/C,oBAAC,IAAI,IACD,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,EACvB,KAAK,EAAE;oBACH;wBACI,GAAG,EAAE,QAAQ;wBACb,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;wBACrB,QAAQ,EAAE,KAAK;wBACf,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE;qBAChC;oBACD;wBACI,GAAG,EAAE,WAAW;wBAChB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;wBACxB,QAAQ,EAAE,KAAK;wBACf,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE;qBACnC;iBACJ,GACH,CACA,CAEJ,CACb,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React from \"react\";\r\nimport EdaManagerApi from \"../../../api/eda/edaManagerApi\";\r\nimport {EdaTreeView, TreeViewType} from \"./components/edaTreeView\";\r\nimport {Button, Space, Tabs} from \"antd\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport {SearchOutlined} from \"@ant-design/icons\";\r\nimport {TypedIndex} from \"./constants/edaTypes\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\nimport {SD_EM_Tree_Item} from \"../../../api/eda/generated/structures\";\r\n\r\nconst useStyles = createStyles(({css, token},) => {\r\n return {\r\n baseLayout: css`\r\n height: 100%;\r\n \r\n .ant-tabs-content {\r\n height: 100%;\r\n background-color: ${token.colorBgContainer};\r\n border-radius: ${token.borderRadius}px;\r\n transition: background-color 0.3s;\r\n }\r\n \r\n .control-buttons {\r\n padding: ${token.paddingXXS}px;\r\n }\r\n `\r\n }\r\n});\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n style?: React.CSSProperties\r\n\r\n size?: SizeType\r\n\r\n onDoubleClick?: (id: TypedIndex, item: SD_EM_Tree_Item) => void\r\n}\r\n\r\ninterface State {\r\n}\r\n\r\nexport class EdaNavigator extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n this.state = {\r\n }\r\n }\r\n\r\n renderGroups(): React.ReactNode {\r\n const {size, api, onDoubleClick} = this.props;\r\n\r\n return (\r\n <div style={{height: \"100%\", display: \"flex\", flexDirection: \"column\"}}>\r\n <div className={\"control-buttons\"}>\r\n <Space.Compact size={size}>\r\n <Button icon={<SearchOutlined/>} />\r\n </Space.Compact>\r\n </div>\r\n <div style={{flex: \"1 1 auto\"}}>\r\n <EdaTreeView\r\n api={api}\r\n type={TreeViewType.GROUP}\r\n onItemDoubleClick={onDoubleClick}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n renderScenarios(): React.ReactNode {\r\n const {api, onDoubleClick} = this.props;\r\n\r\n return (\r\n <>\r\n <EdaTreeView\r\n api={api}\r\n type={TreeViewType.SCENARIO}\r\n onItemDoubleClick={onDoubleClick}\r\n />\r\n </>\r\n );\r\n }\r\n\r\n render(): React.ReactNode {\r\n const {style, size} = this.props;\r\n\r\n return (\r\n <WithCss useStyles={useStyles}>\r\n {(css) =>\r\n <div className={css.styles.baseLayout} style={style}>\r\n <Tabs\r\n type={\"editable-card\"}\r\n size={size}\r\n style={{height: \"100%\"}}\r\n items={[\r\n {\r\n key: \"groups\",\r\n label: i18n(\"Groups\"),\r\n closable: false,\r\n children: this.renderGroups(),\r\n },\r\n {\r\n key: \"scenarios\",\r\n label: i18n(\"Scenarios\"),\r\n closable: false,\r\n children: this.renderScenarios(),\r\n },\r\n ]}\r\n />\r\n </div>\r\n }\r\n </WithCss>\r\n );\r\n }\r\n}"]}
@@ -1,10 +1,16 @@
1
- import React from "react";
1
+ import { FC } from "react";
2
2
  import { SelectProps } from "antd/es/select";
3
- interface Props extends SelectProps {
4
- }
5
- interface State {
6
- }
7
- export declare class EdaSelect extends React.Component<Props, State> {
8
- render(): React.JSX.Element;
3
+ import { SD_EM_Tree_Item } from "../../../api/eda/generated/structures";
4
+ import EdaManagerApi from "../../../api/eda/edaManagerApi";
5
+ import { IdType } from "./constants/edaTypes";
6
+ export type DisplayType = "code" | "name" | "code_name" | "name_code";
7
+ interface Props extends Omit<SelectProps<SD_EM_Tree_Item | undefined, SD_EM_Tree_Item>, "allowClear" | "clearIcon" | "showSearch" | "labelInValue" | "fieldNames" | "options" | "suffixIcon" | "onSearch" | "onFocus" | "showArrow" | "mode" | "loading" | "filterOption" | "notFoundContent" | "menuItemSelectedIcon" | "searchValue"> {
8
+ api: EdaManagerApi;
9
+ type: IdType;
10
+ displayType?: DisplayType;
11
+ showCancelButton?: boolean;
12
+ showDetailButton?: boolean;
13
+ showNewObjectButton?: boolean;
9
14
  }
15
+ export declare const EdaSelect: FC<Props>;
10
16
  export {};
@@ -1,9 +1,213 @@
1
- import React from "react";
2
- import { Select } from "antd";
3
- export class EdaSelect extends React.Component {
4
- render() {
5
- const { ...others } = this.props;
6
- return (React.createElement(Select, { ...others }));
7
- }
1
+ import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
2
+ import { Select, theme, Typography } from "antd";
3
+ import { CloseCircleOutlined, InfoCircleOutlined, LoadingOutlined, SelectOutlined } from "@ant-design/icons";
4
+ import i18n from "d2core/i18n/i18n";
5
+ import SizeContext from "antd/es/config-provider/SizeContext";
6
+ import debounce from "lodash/debounce";
7
+ import { AdvancedFilterLogicalOperator, AdvancedFilterOperator } from "../../../api/advancedFilterApi";
8
+ import AdvancedFilterUtils from "../advancedFilter/advancedFilterUtils";
9
+ import { AdvancedFilterValueType } from "../../../api/types/advancedFilter";
10
+ import ColorTag from "../colorTag/colorTag";
11
+ import { ModalDialog } from "d2coreui/components/modal/modalDialog";
12
+ import { EdaNavigator } from "./edaNavigator";
13
+ import { loadDetail } from "./utils/utils";
14
+ import { EdaVectorDetailPanel } from "./components/edaVectorDetailPanel";
15
+ import { EdaGroupDetailPanel } from "./components/edaGroupDetailPanel";
16
+ import { EdaScenarioDetailPanel } from "./components/edaScenarioDetailPanel";
17
+ export const EdaSelect = ({ api, type, showCancelButton, showDetailButton, showNewObjectButton, displayType, disabled, size, value, onClear, onChange, onSelect, ...otherProps }) => {
18
+ const [loading, setLoading] = useState(false);
19
+ const [options, setOptions] = useState([]);
20
+ const [detailVisible, setDetailVisible] = useState(false);
21
+ const [searchVisible, setSearchVisible] = useState(false);
22
+ const [fullDetailData, setFullDetailData] = useState(undefined);
23
+ const [detailLoading, setDetailLoading] = useState(false);
24
+ const { token } = theme.useToken();
25
+ const lastSearchRef = useRef(null);
26
+ const activeRequestRef = useRef(0);
27
+ const sizeContext = useContext(SizeContext);
28
+ const mergeSize = size ?? sizeContext;
29
+ const iconSize = useMemo(() => {
30
+ switch (mergeSize) {
31
+ case "small":
32
+ return token.fontSizeSM;
33
+ case "large":
34
+ return token.fontSizeLG;
35
+ case "middle":
36
+ default:
37
+ return token.fontSize;
38
+ }
39
+ }, [mergeSize]);
40
+ const suffixIcon = useMemo(() => {
41
+ if (disabled) {
42
+ return React.createElement(React.Fragment, null);
43
+ }
44
+ else if (loading) {
45
+ return React.createElement(LoadingOutlined, { style: { fontSize: iconSize } });
46
+ }
47
+ else {
48
+ return (React.createElement(React.Fragment, null,
49
+ showCancelButton && value &&
50
+ React.createElement(CloseCircleOutlined, { style: { color: token.colorError, fontSize: iconSize }, onClick: () => {
51
+ onChange?.(undefined, []);
52
+ onClear?.();
53
+ } }),
54
+ showDetailButton && value &&
55
+ React.createElement(InfoCircleOutlined, { style: { fontSize: iconSize }, onClick: () => setDetailVisible(true) }),
56
+ showNewObjectButton &&
57
+ React.createElement(React.Fragment, null),
58
+ React.createElement(SelectOutlined, { style: { fontSize: iconSize }, title: i18n("Open Select Dialog"), onClick: () => {
59
+ setSearchVisible(true);
60
+ } })));
61
+ }
62
+ }, [disabled, loading, showCancelButton, iconSize, token.colorError, value, onClear, onChange]);
63
+ const loadData = useCallback(async (searchString) => {
64
+ if (searchString === lastSearchRef.current) {
65
+ return;
66
+ }
67
+ const requestId = ++activeRequestRef.current;
68
+ const filterConditions = getFilterConditions(searchString);
69
+ setLoading(true);
70
+ lastSearchRef.current = searchString;
71
+ try {
72
+ let result;
73
+ switch (type) {
74
+ case 0:
75
+ result = await api.findVectors(filterConditions);
76
+ break;
77
+ case 1:
78
+ result = await api.findGroups(filterConditions);
79
+ break;
80
+ case 2:
81
+ result = await api.findScenarios(filterConditions);
82
+ break;
83
+ }
84
+ if (requestId === activeRequestRef.current) {
85
+ setOptions(result.items);
86
+ }
87
+ }
88
+ catch (e) {
89
+ console.error(e);
90
+ }
91
+ finally {
92
+ if (requestId === activeRequestRef.current) {
93
+ setLoading(false);
94
+ }
95
+ }
96
+ }, [api, type]);
97
+ const debounceSearch = useMemo(() => {
98
+ return debounce(loadData, 500);
99
+ }, [loadData]);
100
+ const handleFocus = useCallback(() => {
101
+ if (options.length === 0 && !disabled) {
102
+ loadData("");
103
+ }
104
+ }, [options, disabled, loadData]);
105
+ const handleDoubleClick = useCallback(() => {
106
+ if (!disabled) {
107
+ setSearchVisible(true);
108
+ }
109
+ }, [disabled]);
110
+ const renderOption = useCallback((oriOption) => {
111
+ return (React.createElement("div", { style: { display: "flex", justifyContent: "space-between" } },
112
+ React.createElement("span", null, oriOption.data.DisplayName),
113
+ React.createElement(ColorTag, null, oriOption.data.Name)));
114
+ }, []);
115
+ const renderLabel = useCallback(() => {
116
+ switch (displayType) {
117
+ default:
118
+ case "code_name":
119
+ return React.createElement("span", null,
120
+ value?.Name,
121
+ " ",
122
+ React.createElement(Typography.Text, { type: "secondary" },
123
+ "(",
124
+ value?.DisplayName,
125
+ ")"));
126
+ case "name_code":
127
+ return React.createElement("span", null,
128
+ value?.DisplayName,
129
+ " ",
130
+ React.createElement(Typography.Text, { type: "secondary" },
131
+ "(",
132
+ value?.Name,
133
+ ")"));
134
+ case "code":
135
+ return React.createElement("span", null, value?.Name);
136
+ case "name":
137
+ return React.createElement("span", null, value?.DisplayName);
138
+ }
139
+ }, [value, displayType]);
140
+ const renderDetailModalContent = () => {
141
+ if (detailLoading || !fullDetailData) {
142
+ return (React.createElement("div", { style: { display: 'flex', justifyContent: 'center', padding: 40 } },
143
+ React.createElement(LoadingOutlined, { style: { fontSize: 24 }, spin: true })));
144
+ }
145
+ switch (type) {
146
+ case 0:
147
+ return (React.createElement(EdaVectorDetailPanel, { api: api, size: size, data: fullDetailData }));
148
+ case 1:
149
+ return (React.createElement(EdaGroupDetailPanel, { size: size, data: fullDetailData }));
150
+ case 2:
151
+ return (React.createElement(EdaScenarioDetailPanel, { size: size, data: fullDetailData }));
152
+ }
153
+ };
154
+ const renderDetailPanelDialog = useMemo(() => {
155
+ return (React.createElement(ModalDialog, { open: detailVisible, mode: "NO_BUTTONS", onCancel: () => setDetailVisible(false), onOk: () => setDetailVisible(false), title: React.createElement("span", null,
156
+ i18n("Detail"),
157
+ " ",
158
+ React.createElement(Typography.Text, { type: "secondary" },
159
+ "(",
160
+ value ? value.Name : "",
161
+ ")")), styles: { body: { padding: 8 } }, initialWidth: 720, initialHeight: window.innerHeight * 0.75 }, detailVisible && renderDetailModalContent()));
162
+ }, [detailVisible, detailLoading, fullDetailData, api, size]);
163
+ const renderSearchPanelDialog = useMemo(() => {
164
+ return (React.createElement(ModalDialog, { open: searchVisible, mode: "NO_BUTTONS", onCancel: () => setSearchVisible(false), onOk: () => setSearchVisible(false), title: i18n("Search"), styles: { body: { padding: 8 } }, initialWidth: 640, initialHeight: window.innerHeight * 0.75, forceRender: true },
165
+ React.createElement(EdaNavigator, { api: api, size: size, onDoubleClick: (id, item) => {
166
+ if (id.type === type) {
167
+ onChange?.(item, item);
168
+ onSelect?.(item, item);
169
+ setSearchVisible(false);
170
+ }
171
+ } })));
172
+ }, [searchVisible, api]);
173
+ useEffect(() => {
174
+ if (detailVisible && value) {
175
+ setDetailLoading(true);
176
+ loadDetail(api, { type: type, id: value.ID }).then((result) => {
177
+ setFullDetailData(result);
178
+ setDetailLoading(false);
179
+ });
180
+ }
181
+ }, [detailVisible, value, api]);
182
+ useEffect(() => {
183
+ return () => debounceSearch.cancel();
184
+ }, [debounceSearch]);
185
+ return (React.createElement(React.Fragment, null,
186
+ renderDetailPanelDialog,
187
+ renderSearchPanelDialog,
188
+ React.createElement(Select, { ...otherProps, disabled: disabled, size: size, value: value, onSelect: onSelect, onChange: onChange, options: options, showSearch: true, labelInValue: true, filterOption: false, fieldNames: { label: 'DisplayName', value: 'ID' }, optionFilterProp: "DisplayName", onSearch: debounceSearch, onFocus: handleFocus, optionRender: renderOption, labelRender: renderLabel, notFoundContent: null, suffixIcon: React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 4, color: token.colorTextSecondary } }, suffixIcon), onDoubleClick: handleDoubleClick })));
189
+ };
190
+ function getFilterConditionForCode(searchString) {
191
+ return AdvancedFilterUtils.newCondition({ columnName: "Meno", valueType: AdvancedFilterValueType.STRING }, {
192
+ operator: AdvancedFilterOperator.LIKE,
193
+ value: `%${searchString ?? ""}%`,
194
+ });
195
+ }
196
+ function getFilterConditionForName(searchString) {
197
+ return AdvancedFilterUtils.newCondition({ columnName: "Zobraz_Meno", valueType: AdvancedFilterValueType.STRING }, {
198
+ operator: AdvancedFilterOperator.LIKE,
199
+ value: `%${searchString ?? ""}%`,
200
+ });
201
+ }
202
+ function getFilterConditions(searchString) {
203
+ const filterConditionForCode = getFilterConditionForCode(searchString);
204
+ filterConditionForCode.left_par = 1;
205
+ filterConditionForCode.logical_operator = AdvancedFilterLogicalOperator.OR;
206
+ const filterConditionForName = getFilterConditionForName(searchString);
207
+ filterConditionForName.right_par = 1;
208
+ return [
209
+ filterConditionForCode,
210
+ filterConditionForName,
211
+ ];
8
212
  }
9
213
  //# sourceMappingURL=edaSelect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edaSelect.js","sourceRoot":"","sources":["../../../../../coreui/components/edaManagerComponent/edaSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAW5B,MAAM,OAAO,SAAU,SAAQ,KAAK,CAAC,SAAuB;IACxD,MAAM;QACF,MAAM,EAAC,GAAG,MAAM,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/B,OAAO,CACH,oBAAC,MAAM,OACC,MAAM,GACZ,CACL,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React from \"react\";\r\nimport {Select} from \"antd\";\r\nimport {SelectProps} from \"antd/es/select\";\r\n\r\ninterface Props extends SelectProps {\r\n\r\n}\r\n\r\ninterface State {\r\n\r\n}\r\n\r\nexport class EdaSelect extends React.Component<Props, State> {\r\n render() {\r\n const {...others} = this.props;\r\n return (\r\n <Select\r\n {...others}\r\n />\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"edaSelect.js","sourceRoot":"","sources":["../../../../../coreui/components/edaManagerComponent/edaSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useContext, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport {Select, theme, Typography} from \"antd\";\r\nimport {SelectProps} from \"antd/es/select\";\r\nimport {CloseCircleOutlined, InfoCircleOutlined, LoadingOutlined, SelectOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport SizeContext from \"antd/es/config-provider/SizeContext\";\r\nimport {SD_EM_Tree_Item} from \"../../../api/eda/generated/structures\";\r\nimport EdaManagerApi from \"../../../api/eda/edaManagerApi\";\r\nimport {GroupData, IdType, ScenarioData, VectorData} from \"./constants/edaTypes\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {AdvancedFilterCondition, AdvancedFilterLogicalOperator, AdvancedFilterOperator} from \"../../../api/advancedFilterApi\";\r\nimport AdvancedFilterUtils from \"../advancedFilter/advancedFilterUtils\";\r\nimport {AdvancedFilterValueType} from \"../../../api/types/advancedFilter\";\r\nimport {FlattenOptionData} from \"rc-select/lib/interface\";\r\nimport ColorTag from \"../colorTag/colorTag\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport {EdaNavigator} from \"./edaNavigator\";\r\nimport {loadDetail} from \"./utils/utils\";\r\nimport {EdaVectorDetailPanel} from \"./components/edaVectorDetailPanel\";\r\nimport {EdaGroupDetailPanel} from \"./components/edaGroupDetailPanel\";\r\nimport {EdaScenarioDetailPanel} from \"./components/edaScenarioDetailPanel\";\r\n\r\nexport type DisplayType = \"code\" | \"name\" | \"code_name\" | \"name_code\";\r\n\r\ninterface Props extends Omit<SelectProps<SD_EM_Tree_Item | undefined, SD_EM_Tree_Item>, \"allowClear\" | \"clearIcon\" | \"showSearch\" | \"labelInValue\" | \"fieldNames\" |\r\n \"options\" | \"suffixIcon\" | \"onSearch\" | \"onFocus\" | \"showArrow\" | \"mode\" | \"loading\" | \"filterOption\" | \"notFoundContent\" | \"menuItemSelectedIcon\" |\r\n \"searchValue\"> {\r\n api: EdaManagerApi\r\n type: IdType\r\n displayType?: DisplayType\r\n showCancelButton?: boolean\r\n showDetailButton?: boolean\r\n showNewObjectButton?: boolean\r\n}\r\n\r\nexport const EdaSelect: FC<Props> = ({\r\n api, type, showCancelButton, showDetailButton, showNewObjectButton, displayType,\r\n disabled, size, value, onClear, onChange, onSelect, ...otherProps\r\n}) => {\r\n const [loading, setLoading] = useState(false);\r\n const [options, setOptions] = useState<SD_EM_Tree_Item[]>([]);\r\n const [detailVisible, setDetailVisible] = useState<boolean>(false);\r\n const [searchVisible, setSearchVisible] = useState<boolean>(false);\r\n const [fullDetailData, setFullDetailData] = useState<VectorData | GroupData | ScenarioData | undefined>(undefined);\r\n const [detailLoading, setDetailLoading] = useState(false);\r\n const {token} = theme.useToken();\r\n const lastSearchRef = useRef<string | null>(null);\r\n const activeRequestRef = useRef<number>(0);\r\n const sizeContext = useContext(SizeContext);\r\n const mergeSize = size ?? sizeContext\r\n\r\n const iconSize = useMemo(() => {\r\n switch (mergeSize) {\r\n case \"small\":\r\n return token.fontSizeSM;\r\n case \"large\":\r\n return token.fontSizeLG;\r\n case \"middle\":\r\n default:\r\n return token.fontSize;\r\n }\r\n }, [mergeSize]);\r\n\r\n const suffixIcon = useMemo(() => {\r\n if (disabled) {\r\n return <></>;\r\n } else if (loading) {\r\n return <LoadingOutlined\r\n style={{fontSize: iconSize}}\r\n />;\r\n } else {\r\n return (\r\n <>\r\n {showCancelButton && value &&\r\n <CloseCircleOutlined\r\n style={{color: token.colorError, fontSize: iconSize}}\r\n onClick={() => {\r\n onChange?.(undefined, [])\r\n onClear?.();\r\n }}\r\n />\r\n }\r\n {showDetailButton && value &&\r\n <InfoCircleOutlined\r\n style={{fontSize: iconSize}}\r\n onClick={() => setDetailVisible(true)}\r\n />\r\n }\r\n {showNewObjectButton &&\r\n <></>\r\n }\r\n <SelectOutlined\r\n style={{fontSize: iconSize}}\r\n title={i18n(\"Open Select Dialog\")}\r\n onClick={() => {\r\n setSearchVisible(true);\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n\r\n }, [disabled, loading, showCancelButton, iconSize, token.colorError, value, onClear, onChange]);\r\n\r\n const loadData = useCallback(async (searchString: string) => {\r\n if (searchString === lastSearchRef.current) {\r\n return;\r\n }\r\n\r\n const requestId = ++activeRequestRef.current;\r\n const filterConditions = getFilterConditions(searchString);\r\n\r\n setLoading(true);\r\n lastSearchRef.current = searchString;\r\n\r\n try {\r\n let result;\r\n\r\n switch (type) {\r\n case IdType.VECTOR:\r\n result = await api.findVectors(filterConditions);\r\n break;\r\n case IdType.GROUP:\r\n result = await api.findGroups(filterConditions);\r\n break;\r\n case IdType.SCENARIO:\r\n result = await api.findScenarios(filterConditions);\r\n break;\r\n }\r\n\r\n if (requestId === activeRequestRef.current) {\r\n setOptions(result.items as SD_EM_Tree_Item[]);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n if (requestId === activeRequestRef.current) {\r\n setLoading(false);\r\n }\r\n }\r\n }, [api, type]);\r\n\r\n const debounceSearch = useMemo(() => {\r\n return debounce(loadData, 500);\r\n }, [loadData]);\r\n\r\n const handleFocus = useCallback(() => {\r\n if (options.length === 0 && !disabled) {\r\n loadData(\"\");\r\n }\r\n }, [options, disabled, loadData]);\r\n\r\n const handleDoubleClick = useCallback(() => {\r\n if (!disabled) {\r\n setSearchVisible(true);\r\n }\r\n }, [disabled]);\r\n\r\n const renderOption = useCallback((oriOption: FlattenOptionData<SD_EM_Tree_Item>) => {\r\n return (\r\n <div style={{display: \"flex\", justifyContent: \"space-between\"}}>\r\n <span>{oriOption.data.DisplayName}</span>\r\n <ColorTag>{oriOption.data.Name}</ColorTag>\r\n </div>\r\n )\r\n }, []);\r\n\r\n const renderLabel = useCallback(() => {\r\n switch (displayType) {\r\n default:\r\n case \"code_name\":\r\n return <span>{value?.Name} <Typography.Text type={\"secondary\"}>({value?.DisplayName})</Typography.Text></span>;\r\n case \"name_code\":\r\n return <span>{value?.DisplayName} <Typography.Text type={\"secondary\"}>({value?.Name})</Typography.Text></span>;\r\n case \"code\":\r\n return <span>{value?.Name}</span>;\r\n case \"name\":\r\n return <span>{value?.DisplayName}</span>;\r\n }\r\n }, [value, displayType]);\r\n\r\n const renderDetailModalContent = () => {\r\n if (detailLoading || !fullDetailData) {\r\n return (\r\n <div style={{display: 'flex', justifyContent: 'center', padding: 40}}>\r\n <LoadingOutlined style={{fontSize: 24}} spin/>\r\n </div>\r\n )\r\n }\r\n\r\n switch (type) {\r\n case IdType.VECTOR:\r\n return (\r\n <EdaVectorDetailPanel\r\n api={api}\r\n size={size}\r\n data={fullDetailData as VectorData}\r\n />\r\n );\r\n case IdType.GROUP:\r\n return (\r\n <EdaGroupDetailPanel\r\n size={size}\r\n data={fullDetailData as GroupData}\r\n />\r\n );\r\n case IdType.SCENARIO:\r\n return (\r\n <EdaScenarioDetailPanel\r\n size={size}\r\n data={fullDetailData as ScenarioData}\r\n />\r\n );\r\n }\r\n }\r\n\r\n const renderDetailPanelDialog = useMemo(() => {\r\n return (\r\n <ModalDialog\r\n open={detailVisible}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n onCancel={() => setDetailVisible(false)}\r\n onOk={() => setDetailVisible(false)}\r\n title={<span>{i18n(\"Detail\")} <Typography.Text type={\"secondary\"}>({value ? value.Name : \"\"})</Typography.Text></span>}\r\n styles={{body: {padding: 8}}}\r\n initialWidth={720}\r\n initialHeight={window.innerHeight * 0.75}\r\n >\r\n {detailVisible && renderDetailModalContent()}\r\n </ModalDialog>\r\n )\r\n }, [detailVisible, detailLoading, fullDetailData, api, size]);\r\n\r\n const renderSearchPanelDialog = useMemo(() => {\r\n return (\r\n <ModalDialog\r\n open={searchVisible}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n onCancel={() => setSearchVisible(false)}\r\n onOk={() => setSearchVisible(false)}\r\n title={i18n(\"Search\")}\r\n styles={{body: {padding: 8}}}\r\n initialWidth={640}\r\n initialHeight={window.innerHeight * 0.75}\r\n forceRender\r\n >\r\n <EdaNavigator\r\n api={api}\r\n size={size}\r\n onDoubleClick={(id, item) => {\r\n if (id.type === type) {\r\n onChange?.(item, item);\r\n onSelect?.(item, item);\r\n setSearchVisible(false);\r\n }\r\n }}\r\n />\r\n </ModalDialog>\r\n )\r\n }, [searchVisible, api]);\r\n\r\n useEffect(() => {\r\n if (detailVisible && value) {\r\n setDetailLoading(true);\r\n loadDetail(api, {type: type, id: value.ID}).then((result) => {\r\n setFullDetailData(result);\r\n setDetailLoading(false);\r\n });\r\n }\r\n }, [detailVisible, value, api]);\r\n\r\n useEffect(() => {\r\n return () => debounceSearch.cancel();\r\n }, [debounceSearch]);\r\n\r\n return (\r\n <>\r\n {renderDetailPanelDialog}\r\n {renderSearchPanelDialog}\r\n <Select<SD_EM_Tree_Item | undefined, SD_EM_Tree_Item>\r\n {...otherProps}\r\n disabled={disabled}\r\n size={size}\r\n value={value}\r\n onSelect={onSelect}\r\n onChange={onChange}\r\n options={options}\r\n showSearch\r\n labelInValue\r\n filterOption={false}\r\n fieldNames={{label: 'DisplayName', value: 'ID'}}\r\n optionFilterProp={\"DisplayName\"}\r\n onSearch={debounceSearch}\r\n onFocus={handleFocus}\r\n optionRender={renderOption}\r\n labelRender={renderLabel}\r\n notFoundContent={null}\r\n suffixIcon={<div style={{display: \"flex\", alignItems: \"center\", gap: 4, color: token.colorTextSecondary}}>{suffixIcon}</div>}\r\n // @ts-ignore\r\n onDoubleClick={handleDoubleClick}\r\n />\r\n </>\r\n );\r\n}\r\n\r\nfunction getFilterConditionForCode(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition({columnName: \"Meno\", valueType: AdvancedFilterValueType.STRING}, {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n });\r\n}\r\n\r\nfunction getFilterConditionForName(searchString?: string): AdvancedFilterCondition {\r\n return AdvancedFilterUtils.newCondition({columnName: \"Zobraz_Meno\", valueType: AdvancedFilterValueType.STRING}, {\r\n operator: AdvancedFilterOperator.LIKE,\r\n value: `%${searchString ?? \"\"}%`,\r\n })\r\n}\r\n\r\nfunction getFilterConditions(searchString?: string): AdvancedFilterCondition[] {\r\n const filterConditionForCode = getFilterConditionForCode(searchString);\r\n filterConditionForCode.left_par = 1;\r\n filterConditionForCode.logical_operator = AdvancedFilterLogicalOperator.OR;\r\n\r\n const filterConditionForName = getFilterConditionForName(searchString);\r\n filterConditionForName.right_par = 1;\r\n\r\n return [\r\n filterConditionForCode,\r\n filterConditionForName,\r\n ]\r\n}"]}
@@ -1,2 +1,19 @@
1
+ import { EdaRoundingType, GroupData, IdType, ScenarioData, VectorData } from "../constants/edaTypes";
2
+ import { ItemType } from "../edaDetail";
3
+ import EdaManagerApi from "../../../../api/eda/edaManagerApi";
1
4
  export declare function savePreference(key: string, value: any): void;
2
5
  export declare function loadPreference<T>(key: string, defaultValue: T): T;
6
+ export declare function formatValue(value: number | null | undefined, roundType: EdaRoundingType, decPlaces: number): string;
7
+ export declare function loadDetail(api: EdaManagerApi, item: {
8
+ type: IdType.VECTOR;
9
+ id: number;
10
+ }): Promise<VectorData | undefined>;
11
+ export declare function loadDetail(api: EdaManagerApi, item: {
12
+ type: IdType.GROUP;
13
+ id: number;
14
+ }): Promise<GroupData | undefined>;
15
+ export declare function loadDetail(api: EdaManagerApi, item: {
16
+ type: IdType.SCENARIO;
17
+ id: number;
18
+ }): Promise<ScenarioData | undefined>;
19
+ export declare function loadDetail(api: EdaManagerApi, item: ItemType): Promise<VectorData | GroupData | ScenarioData | undefined>;
@@ -1,3 +1,5 @@
1
+ import { EdaRoundingType } from "../constants/edaTypes";
2
+ import { LocaleHolder } from "d2core/i18n/localeHolder";
1
3
  export function savePreference(key, value) {
2
4
  localStorage.setItem(key, JSON.stringify(value));
3
5
  }
@@ -5,4 +7,59 @@ export function loadPreference(key, defaultValue) {
5
7
  const stored = localStorage.getItem(key);
6
8
  return stored !== null ? JSON.parse(stored) : defaultValue;
7
9
  }
10
+ const TOTAL_DEC_PLACES = 7;
11
+ export function formatValue(value, roundType, decPlaces) {
12
+ if (value === undefined || value === null) {
13
+ return '';
14
+ }
15
+ const multiplier = Math.pow(10, decPlaces);
16
+ switch (roundType) {
17
+ case EdaRoundingType.NoRounding:
18
+ return LocaleHolder.formatNumber(value, TOTAL_DEC_PLACES);
19
+ case EdaRoundingType.RoundToNearest:
20
+ return LocaleHolder.formatNumber(value, decPlaces);
21
+ case EdaRoundingType.Floor:
22
+ return LocaleHolder.formatNumber(Math.floor(value * multiplier) / multiplier, TOTAL_DEC_PLACES);
23
+ case EdaRoundingType.Ceiling:
24
+ return LocaleHolder.formatNumber(Math.ceil(value * multiplier) / multiplier, TOTAL_DEC_PLACES);
25
+ }
26
+ }
27
+ export async function loadDetail(api, item) {
28
+ if (!item) {
29
+ return undefined;
30
+ }
31
+ if (Array.isArray(item)) {
32
+ return undefined;
33
+ }
34
+ let dataItem = undefined;
35
+ switch (item.type) {
36
+ case 0: {
37
+ const data = await api.loadVectorData(item.id);
38
+ if (data.data.length > 0) {
39
+ const item = data.data[0];
40
+ const itemEx = data.dataEx[0];
41
+ const dataFunction = data.dataFunction[0];
42
+ dataItem = { data: item, extData: itemEx, dataFunction: dataFunction };
43
+ }
44
+ break;
45
+ }
46
+ case 1: {
47
+ const data = await api.loadGroupData(item.id);
48
+ if (data.data.length > 0) {
49
+ const item = data.data[0];
50
+ dataItem = { data: item };
51
+ }
52
+ break;
53
+ }
54
+ case 2: {
55
+ const data = await api.loadScenarioData(item.id);
56
+ if (data.data.length > 0) {
57
+ const item = data.data[0];
58
+ dataItem = { data: item };
59
+ }
60
+ break;
61
+ }
62
+ }
63
+ return dataItem;
64
+ }
8
65
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/utils/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,KAAU;IAClD,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,GAAW,EAAE,YAAe;IAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEzC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAC/D,CAAC","sourcesContent":["export function savePreference(key: string, value: any) {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n}\r\n\r\nexport function loadPreference<T>(key: string, defaultValue: T): T {\r\n const stored = localStorage.getItem(key);\r\n\r\n return stored !== null ? JSON.parse(stored) : defaultValue;\r\n}"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {EdaRoundingType, GroupData, IdType, ScenarioData, VectorData} from \"../constants/edaTypes\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {SD_EM_EDA_Function, SD_EM_EDA_GroupVector, SD_EM_EDA_Scenario, SD_EM_EDA_Vector, SD_EM_EDA_VectorEx} from \"../../../../api/eda/generated/structures\";\r\nimport {ItemType} from \"../edaDetail\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\n\r\nexport function savePreference(key: string, value: any) {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n}\r\n\r\nexport function loadPreference<T>(key: string, defaultValue: T): T {\r\n const stored = localStorage.getItem(key);\r\n\r\n return stored !== null ? JSON.parse(stored) : defaultValue;\r\n}\r\n\r\nconst TOTAL_DEC_PLACES = 7 //FIXME configurable\r\n\r\nexport function formatValue(value: number | null | undefined, roundType: EdaRoundingType, decPlaces: number): string {\r\n if (value === undefined || value === null) {\r\n return '';\r\n }\r\n\r\n const multiplier = Math.pow(10, decPlaces);\r\n\r\n switch (roundType) {\r\n case EdaRoundingType.NoRounding:\r\n return LocaleHolder.formatNumber(value, TOTAL_DEC_PLACES);\r\n case EdaRoundingType.RoundToNearest:\r\n return LocaleHolder.formatNumber(value, decPlaces);\r\n case EdaRoundingType.Floor:\r\n return LocaleHolder.formatNumber(Math.floor(value * multiplier) / multiplier, TOTAL_DEC_PLACES);\r\n case EdaRoundingType.Ceiling:\r\n return LocaleHolder.formatNumber(Math.ceil(value * multiplier) / multiplier, TOTAL_DEC_PLACES);\r\n }\r\n}\r\n\r\nexport async function loadDetail(api: EdaManagerApi, item: {type: IdType.VECTOR, id: number}): Promise<VectorData | undefined>;\r\nexport async function loadDetail(api: EdaManagerApi, item: {type: IdType.GROUP, id: number}): Promise<GroupData | undefined>;\r\nexport async function loadDetail(api: EdaManagerApi, item: {type: IdType.SCENARIO, id: number}): Promise<ScenarioData | undefined>;\r\nexport async function loadDetail(api: EdaManagerApi, item: ItemType): Promise<VectorData | GroupData | ScenarioData | undefined>;\r\nexport async function loadDetail(api: EdaManagerApi, item: ItemType): Promise<VectorData | GroupData | ScenarioData | undefined> {\r\n if (!item) {\r\n return undefined;\r\n }\r\n\r\n if (Array.isArray(item)) {\r\n //TODO\r\n return undefined;\r\n }\r\n\r\n let dataItem: any = undefined;\r\n\r\n switch (item.type) {\r\n case IdType.VECTOR: {\r\n const data = await api.loadVectorData(item.id);\r\n\r\n if (data.data.length > 0) {\r\n const item = data.data[0] as SD_EM_EDA_Vector\r\n const itemEx = data.dataEx[0] as SD_EM_EDA_VectorEx\r\n const dataFunction = data.dataFunction[0] as SD_EM_EDA_Function\r\n dataItem = {data: item, extData: itemEx, dataFunction: dataFunction};\r\n }\r\n break;\r\n }\r\n case IdType.GROUP: {\r\n const data = await api.loadGroupData(item.id);\r\n\r\n if (data.data.length > 0) {\r\n const item = data.data[0] as SD_EM_EDA_GroupVector;\r\n dataItem = {data: item};\r\n }\r\n break;\r\n }\r\n case IdType.SCENARIO: {\r\n const data = await api.loadScenarioData(item.id);\r\n\r\n if (data.data.length > 0) {\r\n const item = data.data[0] as SD_EM_EDA_Scenario;\r\n dataItem = {data: item};\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return dataItem;\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"webPushSwitch.js","sourceRoot":"","sources":["../../../../../coreui/components/webPush/webPushSwitch.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport {Switch} from \"antd\";\nimport i18n from \"d2core/i18n/i18n\";\nimport {WebPushApi} from \"../../../api/webPush/webPushApi\";\nimport WebPushUtils from \"../../../api/webPush/webPushUtils\";\nimport {EncodingUtils} from \"../../../api/encoding/encodingUtils\";\n\ninterface Props {\n webPushApi: WebPushApi\n}\n\ninterface State {\n loading: boolean\n isSubscribed: boolean\n}\n\nexport default class WebPushSwitch extends React.Component<Props, State> {\n constructor(props: Readonly<Props>) {\n super(props);\n\n this.state = {\n loading: true,\n isSubscribed: false,\n }\n }\n\n componentDidMount() {\n this.updateSubscriptionState();\n }\n\n private updateSubscriptionState() {\n WebPushUtils.getSubscription().then(subscription => {\n this.setState({\n isSubscribed: subscription !== null,\n loading: false,\n });\n });\n }\n\n private async subscribe() {\n const applicationServerKey = await this.props.webPushApi.getPublicVapidKey();\n\n // 1. Ask for notification permission\n const permission = await Notification.requestPermission();\n if (permission !== \"granted\") {\n alert(\"Notifications not allowed\");\n return;\n }\n\n // 2. Get service worker\n const registration = await navigator.serviceWorker.ready;\n\n // 3. Subscribe to push\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: EncodingUtils.base64ToUint8Array(applicationServerKey),\n });\n\n await this.props.webPushApi.saveSubscription(subscription);\n }\n\n private async unsubscribe() {\n const subscription = await WebPushUtils.getSubscription();\n\n if (subscription) {\n const success = await subscription.unsubscribe();\n\n if (success) {\n console.log(\"Unsubscribed: \", subscription.endpoint);\n await this.props.webPushApi.deleteSubscription(subscription);\n } else {\n console.warn(\"Failed to unsubscribe.\");\n }\n } else {\n console.log(\"No subscription found.\");\n }\n }\n\n render() {\n return (\n <Switch\n loading={this.state.loading}\n checked={this.state.isSubscribed}\n checkedChildren={i18n(\"Notifications\")}\n unCheckedChildren={i18n(\"Notifications\")}\n onChange={async checked => {\n this.setState({loading: true});\n if (checked) {\n await this.subscribe();\n } else {\n await this.unsubscribe()\n }\n\n this.updateSubscriptionState();\n }}\n />\n );\n }\n\n}"]}
1
+ {"version":3,"file":"webPushSwitch.js","sourceRoot":"","sources":["../../../../../coreui/components/webPush/webPushSwitch.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {Switch} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {WebPushApi} from \"../../../api/webPush/webPushApi\";\r\nimport WebPushUtils from \"../../../api/webPush/webPushUtils\";\r\nimport {EncodingUtils} from \"../../../api/encoding/encodingUtils\";\r\n\r\ninterface Props {\r\n webPushApi: WebPushApi\r\n}\r\n\r\ninterface State {\r\n loading: boolean\r\n isSubscribed: boolean\r\n}\r\n\r\nexport default class WebPushSwitch extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n isSubscribed: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.updateSubscriptionState();\r\n }\r\n\r\n private updateSubscriptionState() {\r\n WebPushUtils.getSubscription().then(subscription => {\r\n this.setState({\r\n isSubscribed: subscription !== null,\r\n loading: false,\r\n });\r\n });\r\n }\r\n\r\n private async subscribe() {\r\n const applicationServerKey = await this.props.webPushApi.getPublicVapidKey();\r\n\r\n // 1. Ask for notification permission\r\n const permission = await Notification.requestPermission();\r\n if (permission !== \"granted\") {\r\n alert(\"Notifications not allowed\");\r\n return;\r\n }\r\n\r\n // 2. Get service worker\r\n const registration = await navigator.serviceWorker.ready;\r\n\r\n // 3. Subscribe to push\r\n const subscription = await registration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n applicationServerKey: EncodingUtils.base64ToUint8Array(applicationServerKey),\r\n });\r\n\r\n await this.props.webPushApi.saveSubscription(subscription);\r\n }\r\n\r\n private async unsubscribe() {\r\n const subscription = await WebPushUtils.getSubscription();\r\n\r\n if (subscription) {\r\n const success = await subscription.unsubscribe();\r\n\r\n if (success) {\r\n console.log(\"Unsubscribed: \", subscription.endpoint);\r\n await this.props.webPushApi.deleteSubscription(subscription);\r\n } else {\r\n console.warn(\"Failed to unsubscribe.\");\r\n }\r\n } else {\r\n console.log(\"No subscription found.\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Switch\r\n loading={this.state.loading}\r\n checked={this.state.isSubscribed}\r\n checkedChildren={i18n(\"Notifications\")}\r\n unCheckedChildren={i18n(\"Notifications\")}\r\n onChange={async checked => {\r\n this.setState({loading: true});\r\n if (checked) {\r\n await this.subscribe();\r\n } else {\r\n await this.unsubscribe()\r\n }\r\n\r\n this.updateSubscriptionState();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n}"]}
@@ -1,9 +1,9 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="100%" height="100%" viewBox="0 0 68 62" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4
- <g transform="matrix(1,0,0,1,-172.565,-296.134)">
5
- <g transform="matrix(1,0,0,1,182.93,310.677)">
6
- <path d="M0,32.646L-10.365,32.646L-10.365,41.595L0,41.595C1.637,44.92 5.052,47.189 9.036,47.189C13.018,47.189 16.433,44.92 18.07,41.595L56.763,41.595L56.763,32.646L18.071,32.646C16.434,29.321 13.018,27.053 9.036,27.053C5.052,27.053 1.637,29.321 0,32.646M28.326,11.846L-10.365,11.846L-10.365,20.795L28.327,20.795C29.963,24.12 33.379,26.388 37.364,26.388C41.346,26.388 44.761,24.12 46.398,20.795L56.763,20.795L56.763,11.846L46.398,11.846C44.761,8.521 41.346,6.254 37.364,6.254C33.379,6.254 29.963,8.521 28.326,11.846M0.001,-8.951L-10.365,-8.951L-10.365,-0.003L0,-0.003C1.637,3.323 5.052,5.59 9.036,5.59C13.018,5.59 16.434,3.323 18.071,-0.003L56.763,-0.003L56.763,-8.951L18.07,-8.951C16.433,-12.276 13.018,-14.543 9.036,-14.543C5.052,-14.543 1.637,-12.276 0.001,-8.951" style="fill:rgb(1,52,255);"/>
7
- </g>
8
- </g>
9
- </svg>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="100%" height="100%" viewBox="0 0 68 62" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4
+ <g transform="matrix(1,0,0,1,-172.565,-296.134)">
5
+ <g transform="matrix(1,0,0,1,182.93,310.677)">
6
+ <path d="M0,32.646L-10.365,32.646L-10.365,41.595L0,41.595C1.637,44.92 5.052,47.189 9.036,47.189C13.018,47.189 16.433,44.92 18.07,41.595L56.763,41.595L56.763,32.646L18.071,32.646C16.434,29.321 13.018,27.053 9.036,27.053C5.052,27.053 1.637,29.321 0,32.646M28.326,11.846L-10.365,11.846L-10.365,20.795L28.327,20.795C29.963,24.12 33.379,26.388 37.364,26.388C41.346,26.388 44.761,24.12 46.398,20.795L56.763,20.795L56.763,11.846L46.398,11.846C44.761,8.521 41.346,6.254 37.364,6.254C33.379,6.254 29.963,8.521 28.326,11.846M0.001,-8.951L-10.365,-8.951L-10.365,-0.003L0,-0.003C1.637,3.323 5.052,5.59 9.036,5.59C13.018,5.59 16.434,3.323 18.071,-0.003L56.763,-0.003L56.763,-8.951L18.07,-8.951C16.433,-12.276 13.018,-14.543 9.036,-14.543C5.052,-14.543 1.637,-12.276 0.001,-8.951" style="fill:rgb(1,52,255);"/>
7
+ </g>
8
+ </g>
9
+ </svg>