@itwin/grouping-mapping-widget 0.3.4 → 0.3.5

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 (77) hide show
  1. package/lib/cjs/formula/FormulaTokensValidator.d.ts +1 -1
  2. package/lib/cjs/formula/FormulaTokensValidator.js +3 -1
  3. package/lib/cjs/formula/FormulaTokensValidator.js.map +1 -1
  4. package/lib/cjs/formula/FormulaValidator.d.ts +1 -1
  5. package/lib/cjs/formula/FormulaValidator.js +2 -2
  6. package/lib/cjs/formula/FormulaValidator.js.map +1 -1
  7. package/lib/cjs/widget/components/CalculatedPropertyAction.js +1 -2
  8. package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
  9. package/lib/cjs/widget/components/CalculatedPropertyTable.js +2 -2
  10. package/lib/cjs/widget/components/CalculatedPropertyTable.js.map +1 -1
  11. package/lib/cjs/widget/components/ConfirmMappingsImport.js +1 -2
  12. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  13. package/lib/cjs/widget/components/CustomCalculationAction.js +2 -3
  14. package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
  15. package/lib/cjs/widget/components/CustomCalculationTable.js +2 -2
  16. package/lib/cjs/widget/components/CustomCalculationTable.js.map +1 -1
  17. package/lib/cjs/widget/components/GroupAction.js +1 -2
  18. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  19. package/lib/cjs/widget/components/GroupPropertyAction.js +2 -3
  20. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  21. package/lib/cjs/widget/components/GroupPropertyTable.js +2 -2
  22. package/lib/cjs/widget/components/GroupPropertyTable.js.map +1 -1
  23. package/lib/cjs/widget/components/Grouping.js +2 -3
  24. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  25. package/lib/cjs/widget/components/Mapping.js +3 -4
  26. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  27. package/lib/cjs/widget/components/MappingAction.js +2 -3
  28. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  29. package/lib/cjs/widget/components/PropertyMenu.js +21 -12
  30. package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
  31. package/lib/cjs/widget/components/SelectMappings.js +1 -2
  32. package/lib/cjs/widget/components/SelectMappings.js.map +1 -1
  33. package/lib/cjs/widget/components/utils.d.ts +2 -0
  34. package/lib/cjs/widget/components/utils.js +13 -1
  35. package/lib/cjs/widget/components/utils.js.map +1 -1
  36. package/lib/cjs/widget/hooks/useFormulaValidation.d.ts +1 -1
  37. package/lib/cjs/widget/hooks/useFormulaValidation.js +5 -5
  38. package/lib/cjs/widget/hooks/useFormulaValidation.js.map +1 -1
  39. package/lib/esm/formula/FormulaTokensValidator.d.ts +1 -1
  40. package/lib/esm/formula/FormulaTokensValidator.js +3 -1
  41. package/lib/esm/formula/FormulaTokensValidator.js.map +1 -1
  42. package/lib/esm/formula/FormulaValidator.d.ts +1 -1
  43. package/lib/esm/formula/FormulaValidator.js +2 -2
  44. package/lib/esm/formula/FormulaValidator.js.map +1 -1
  45. package/lib/esm/widget/components/CalculatedPropertyAction.js +2 -3
  46. package/lib/esm/widget/components/CalculatedPropertyAction.js.map +1 -1
  47. package/lib/esm/widget/components/CalculatedPropertyTable.js +2 -2
  48. package/lib/esm/widget/components/CalculatedPropertyTable.js.map +1 -1
  49. package/lib/esm/widget/components/ConfirmMappingsImport.js +2 -3
  50. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  51. package/lib/esm/widget/components/CustomCalculationAction.js +3 -4
  52. package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
  53. package/lib/esm/widget/components/CustomCalculationTable.js +2 -2
  54. package/lib/esm/widget/components/CustomCalculationTable.js.map +1 -1
  55. package/lib/esm/widget/components/GroupAction.js +2 -3
  56. package/lib/esm/widget/components/GroupAction.js.map +1 -1
  57. package/lib/esm/widget/components/GroupPropertyAction.js +3 -4
  58. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  59. package/lib/esm/widget/components/GroupPropertyTable.js +2 -2
  60. package/lib/esm/widget/components/GroupPropertyTable.js.map +1 -1
  61. package/lib/esm/widget/components/Grouping.js +3 -4
  62. package/lib/esm/widget/components/Grouping.js.map +1 -1
  63. package/lib/esm/widget/components/Mapping.js +4 -5
  64. package/lib/esm/widget/components/Mapping.js.map +1 -1
  65. package/lib/esm/widget/components/MappingAction.js +3 -4
  66. package/lib/esm/widget/components/MappingAction.js.map +1 -1
  67. package/lib/esm/widget/components/PropertyMenu.js +22 -13
  68. package/lib/esm/widget/components/PropertyMenu.js.map +1 -1
  69. package/lib/esm/widget/components/SelectMappings.js +2 -3
  70. package/lib/esm/widget/components/SelectMappings.js.map +1 -1
  71. package/lib/esm/widget/components/utils.d.ts +2 -0
  72. package/lib/esm/widget/components/utils.js +11 -0
  73. package/lib/esm/widget/components/utils.js.map +1 -1
  74. package/lib/esm/widget/hooks/useFormulaValidation.d.ts +1 -1
  75. package/lib/esm/widget/hooks/useFormulaValidation.js +5 -5
  76. package/lib/esm/widget/hooks/useFormulaValidation.js.map +1 -1
  77. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Mapping.js","sourceRoot":"","sources":["../../../../src/widget/components/Mapping.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n SvgProcess,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { handleError, onSelectionChanged, WidgetHeader } from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { Groupings } from \"./Grouping\";\nimport MappingAction from \"./MappingAction\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nenum MappingView {\n MAPPINGS = \"mappings\",\n GROUPS = \"groups\",\n ADDING = \"adding\",\n MODIFYING = \"modifying\",\n IMPORT = \"import\",\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (apiContext: Api, iModelId: string, mapping: Mapping) => {\n try {\n const newState = !mapping?.extractionEnabled;\n const reportingClient = new ReportingClient(apiContext.prefix);\n await reportingClient.updateMapping(\n apiContext.accessToken,\n iModelId,\n mapping?.id ?? \"\",\n { extractionEnabled: newState }\n );\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = () => {\n const apiContext = useContext(ApiContext);\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] = useState<boolean>(false);\n const [mappingView, setMappingView] = useState<MappingView>(\n MappingView.MAPPINGS\n );\n const [selectedMapping, setSelectedMapping] = useState<\n Mapping | undefined\n >(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n useEffect(() => {\n const removeListener =\n Presentation.selection.selectionChange.addListener(onSelectionChanged);\n return () => {\n removeListener();\n };\n }, []);\n\n const refresh = useCallback(async () => {\n setMappingView(MappingView.MAPPINGS);\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setMappings]);\n\n const addMapping = async () => {\n setMappingView(MappingView.ADDING);\n };\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Cell: (value: CellProps<{ mappingName: string }>) => (\n <div\n className=\"iui-anchor\"\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.GROUPS);\n }}\n >\n {value.row.original.mappingName}\n </div>\n ),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<MappingType>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n\n <MenuItem\n key={1}\n onClick={async () => {\n setSelectedMapping(value.row.original);\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(apiContext, iModelId, value.row.original);\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {value.row.original.extractionEnabled ? \"Disable extraction\" : \"Enable extraction\"}\n </MenuItem>,\n\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton styleType=\"borderless\">\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n [apiContext, iModelId, refresh]\n );\n\n switch (mappingView) {\n case MappingView.ADDING:\n return <MappingAction iModelId={iModelId} returnFn={refresh} />;\n case MappingView.MODIFYING:\n return (\n <MappingAction\n iModelId={iModelId}\n mapping={selectedMapping}\n returnFn={refresh}\n />\n );\n case MappingView.GROUPS:\n return (\n <Groupings\n mapping={selectedMapping as Mapping}\n goBack={refresh}\n />\n );\n default:\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <WidgetHeader title=\"Mappings\" />\n <div className=\"mappings-container\">\n <div className=\"table-toolbar\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <ButtonGroup onClick={() => setShowImportModal(true)}>\n <IconButton title=\"Import Mappings\">\n <SvgImport />\n </IconButton>\n </ButtonGroup>\n </div>\n <Table<MappingType>\n data={mappings}\n density=\"extra-condensed\"\n columns={mappingsColumns}\n emptyTableContent=\"No Mappings available.\"\n isSortable\n isLoading={isLoading}\n />\n </div>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n await reportingClientApi.deleteMapping(\n apiContext.accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n }\n};\n"]}
1
+ {"version":3,"file":"Mapping.js","sourceRoot":"","sources":["../../../../src/widget/components/Mapping.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n SvgProcess,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { getReportingClient, handleError, onSelectionChanged, WidgetHeader } from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { Groupings } from \"./Grouping\";\nimport MappingAction from \"./MappingAction\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\n\nexport type MappingType = CreateTypeFromInterface<Mapping>;\n\nenum MappingView {\n MAPPINGS = \"mappings\",\n GROUPS = \"groups\",\n ADDING = \"adding\",\n MODIFYING = \"modifying\",\n IMPORT = \"import\",\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = getReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (apiContext: Api, iModelId: string, mapping: Mapping) => {\n try {\n const newState = !mapping?.extractionEnabled;\n const reportingClient = getReportingClient(apiContext.prefix);\n await reportingClient.updateMapping(\n apiContext.accessToken,\n iModelId,\n mapping?.id ?? \"\",\n { extractionEnabled: newState }\n );\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = () => {\n const apiContext = useContext(ApiContext);\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] = useState<boolean>(false);\n const [mappingView, setMappingView] = useState<MappingView>(\n MappingView.MAPPINGS\n );\n const [selectedMapping, setSelectedMapping] = useState<\n Mapping | undefined\n >(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n useEffect(() => {\n const removeListener =\n Presentation.selection.selectionChange.addListener(onSelectionChanged);\n return () => {\n removeListener();\n };\n }, []);\n\n const refresh = useCallback(async () => {\n setMappingView(MappingView.MAPPINGS);\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setMappings]);\n\n const addMapping = async () => {\n setMappingView(MappingView.ADDING);\n };\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Cell: (value: CellProps<{ mappingName: string }>) => (\n <div\n className=\"iui-anchor\"\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.GROUPS);\n }}\n >\n {value.row.original.mappingName}\n </div>\n ),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<MappingType>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n\n <MenuItem\n key={1}\n onClick={async () => {\n setSelectedMapping(value.row.original);\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(apiContext, iModelId, value.row.original);\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {value.row.original.extractionEnabled ? \"Disable extraction\" : \"Enable extraction\"}\n </MenuItem>,\n\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton styleType=\"borderless\">\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n [apiContext, iModelId, refresh]\n );\n\n switch (mappingView) {\n case MappingView.ADDING:\n return <MappingAction iModelId={iModelId} returnFn={refresh} />;\n case MappingView.MODIFYING:\n return (\n <MappingAction\n iModelId={iModelId}\n mapping={selectedMapping}\n returnFn={refresh}\n />\n );\n case MappingView.GROUPS:\n return (\n <Groupings\n mapping={selectedMapping as Mapping}\n goBack={refresh}\n />\n );\n default:\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <WidgetHeader title=\"Mappings\" />\n <div className=\"mappings-container\">\n <div className=\"table-toolbar\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <ButtonGroup onClick={() => setShowImportModal(true)}>\n <IconButton title=\"Import Mappings\">\n <SvgImport />\n </IconButton>\n </ButtonGroup>\n </div>\n <Table<MappingType>\n data={mappings}\n density=\"extra-condensed\"\n columns={mappingsColumns}\n emptyTableContent=\"No Mappings available.\"\n isSortable\n isLoading={isLoading}\n />\n </div>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const reportingClientApi = getReportingClient(apiContext.prefix);\n await reportingClientApi.deleteMapping(\n apiContext.accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n }\n};\n"]}
@@ -33,7 +33,6 @@ const useValidator_1 = __importStar(require("../hooks/useValidator"));
33
33
  const utils_1 = require("./utils");
34
34
  require("./MappingAction.scss");
35
35
  const GroupingMapping_1 = require("./GroupingMapping");
36
- const insights_client_1 = require("@itwin/insights-client");
37
36
  const MappingAction = ({ iModelId, mapping, returnFn }) => {
38
37
  var _a, _b, _c;
39
38
  const apiContext = react_1.useContext(GroupingMapping_1.ApiContext);
@@ -53,7 +52,7 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
53
52
  return;
54
53
  }
55
54
  setIsLoading(true);
56
- const reportingClientApi = new insights_client_1.ReportingClient(apiContext.prefix);
55
+ const reportingClientApi = utils_1.getReportingClient(apiContext.prefix);
57
56
  mapping
58
57
  ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, (_a = mapping.id) !== null && _a !== void 0 ? _a : "", {
59
58
  mappingName: values.name,
@@ -91,7 +90,7 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
91
90
  react_1.default.createElement(itwinui_react_1.LabeledInput, { id: 'description', name: 'description', label: 'Description', value: values.description, onChange: (event) => {
92
91
  utils_1.handleInputChange(event, values, setValues);
93
92
  } }),
94
- react_1.default.createElement(itwinui_react_1.ToggleSwitch, { id: 'extractionEnabled', name: 'extractionEnabled', label: 'Extraction enabled', labelPosition: "left", checked: values.extractionEnabled, onChange: (event) => {
93
+ react_1.default.createElement(itwinui_react_1.ToggleSwitch, { id: 'extractionEnabled', name: 'extractionEnabled', label: 'Extract data from iModel', labelPosition: "right", checked: values.extractionEnabled, onChange: (event) => {
95
94
  setValues({ ...values, extractionEnabled: event.currentTarget.checked });
96
95
  } }))),
97
96
  react_1.default.createElement(ActionPanel_1.default, { onSave: onSave, onCancel: returnFn, isSavingDisabled: !values.name, isLoading: isLoading })));
@@ -1 +1 @@
1
- {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,wDAAmF;AACnF,+CAAoD;AACpD,gEAAwC;AACxC,sEAAwE;AACxE,mCAAuE;AACvE,gCAA8B;AAC9B,uDAA+C;AAE/C,4DAAyD;AAQzD,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAsB,EAAE,EAAE;;IAC5E,MAAM,UAAU,GAAG,kBAAU,CAAC,4BAAU,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,gBAAQ,CAAC;QACnC,IAAI,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,EAAE;QAChC,WAAW,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,EAAE;QACvC,iBAAiB,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,mCAAI,IAAI;KACtD,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC,GAAG,sBAAY,EAAE,CAAC;IAC1D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,gBAAQ,CAAU,KAAK,CAAC,CAAC;IAE3D,qBAAqB;IACrB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;;QACxB,IAAI;YACF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;gBACzB,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO;aACR;YACD,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,kBAAkB,GAAG,IAAI,iCAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClE,OAAO;gBACL,CAAC,CAAC,MAAM,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAA,OAAO,CAAC,EAAE,mCAAI,EAAE,EAAE;oBAC3F,WAAW,EAAE,MAAM,CAAC,IAAI;oBACxB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;iBAC5C,CAAC;gBACF,CAAC,CAAC,MAAM,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE;oBACzE,WAAW,EAAE,MAAM,CAAC,IAAI;oBACxB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;iBAC5C,CAAC,CAAC;YACL,MAAM,QAAQ,EAAE,CAAC;SAClB;QAAC,OAAO,KAAU,EAAE;YACnB,mBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,YAAY,CAAC,KAAK,CAAC,CAAC;SACrB;IACH,CAAC,CAAC;IAEF,OAAO,CACL;QACE,8BAAC,oBAAY,IACX,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,EACjD,QAAQ,EAAE,QAAQ,GAClB;QACF,uCAAK,SAAS,EAAC,wBAAwB;YACrC,8BAAC,wBAAQ,IAAC,MAAM,EAAC,iBAAiB,EAAC,SAAS,EAAC,cAAc;gBACzD,8BAAC,qBAAK,IAAC,SAAS,EAAC,cAAc,6CAEvB;gBACR,8BAAC,4BAAY,IACX,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,IAAI,EAClB,QAAQ,QACR,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,yBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;wBAC5C,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC,EACD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,gCAAiB,CAAC,EAClE,MAAM,EACJ,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,gCAAiB,CAAC;wBACvD,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,SAAS,EAEf,MAAM,EAAE,GAAG,EAAE;wBACX,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC,EACD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,yBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;wBAC5C,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC,GACD;gBACF,8BAAC,4BAAY,IACX,EAAE,EAAC,aAAa,EAChB,IAAI,EAAC,aAAa,EAClB,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE,MAAM,CAAC,WAAW,EACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,yBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;oBAC9C,CAAC,GACD;gBACF,8BAAC,4BAAY,IACX,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,mBAAmB,EACxB,KAAK,EAAC,oBAAoB,EAC1B,aAAa,EAAC,MAAM,EACpB,OAAO,EAAE,MAAM,CAAC,iBAAiB,EACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3E,CAAC,GACD,CACO,CACP;QACN,8BAAC,qBAAW,IACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,CAAC,MAAM,CAAC,IAAI,EAC9B,SAAS,EAAE,SAAS,GACpB,CACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Fieldset, LabeledInput, Small, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport React, { useContext, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, handleInputChange, WidgetHeader } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\ninterface MappingActionProps {\n iModelId: string;\n mapping?: Mapping;\n returnFn: () => Promise<void>;\n}\n\nconst MappingAction = ({ iModelId, mapping, returnFn }: MappingActionProps) => {\n const apiContext = useContext(ApiContext);\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n extractionEnabled: mapping?.extractionEnabled ?? true,\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // TODO ERRORED STATE\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n mapping\n ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, mapping.id ?? \"\", {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n })\n : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n });\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <WidgetHeader\n title={mapping ? \"Modify Mapping\" : \"Add Mapping\"}\n returnFn={returnFn}\n />\n <div className='details-form-container'>\n <Fieldset legend='Mapping Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n <ToggleSwitch\n id='extractionEnabled'\n name='extractionEnabled'\n label='Extraction enabled'\n labelPosition=\"left\"\n checked={values.extractionEnabled}\n onChange={(event) => {\n setValues({ ...values, extractionEnabled: event.currentTarget.checked });\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default MappingAction;\n"]}
1
+ {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Fieldset, LabeledInput, Small, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport React, { useContext, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { getReportingClient, handleError, handleInputChange, WidgetHeader } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { Mapping } from \"@itwin/insights-client\";\n\ninterface MappingActionProps {\n iModelId: string;\n mapping?: Mapping;\n returnFn: () => Promise<void>;\n}\n\nconst MappingAction = ({ iModelId, mapping, returnFn }: MappingActionProps) => {\n const apiContext = useContext(ApiContext);\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n extractionEnabled: mapping?.extractionEnabled ?? true,\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // TODO ERRORED STATE\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const reportingClientApi = getReportingClient(apiContext.prefix);\n mapping\n ? await reportingClientApi.updateMapping(apiContext.accessToken, iModelId, mapping.id ?? \"\", {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n })\n : await reportingClientApi.createMapping(apiContext.accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n });\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <WidgetHeader\n title={mapping ? \"Modify Mapping\" : \"Add Mapping\"}\n returnFn={returnFn}\n />\n <div className='details-form-container'>\n <Fieldset legend='Mapping Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n <ToggleSwitch\n id='extractionEnabled'\n name='extractionEnabled'\n label='Extract data from iModel'\n labelPosition=\"right\"\n checked={values.extractionEnabled}\n onChange={(event) => {\n setValues({ ...values, extractionEnabled: event.currentTarget.checked });\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default MappingAction;\n"]}
@@ -40,7 +40,6 @@ const presentation_common_1 = require("@itwin/presentation-common");
40
40
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
41
41
  const useFetchData_1 = require("../hooks/useFetchData");
42
42
  const GroupingMapping_1 = require("./GroupingMapping");
43
- const insights_client_1 = require("@itwin/insights-client");
44
43
  var PropertyMenuView;
45
44
  (function (PropertyMenuView) {
46
45
  PropertyMenuView["DEFAULT"] = "default";
@@ -62,15 +61,26 @@ const stringToPossibleDataType = (str) => {
62
61
  default: return "undefined";
63
62
  }
64
63
  };
65
- const convertToPropertyMap = (groupProperties, calculatedProperties) => {
64
+ const convertToPropertyMap = (groupProperties, calculatedProperties, customCalculations, selectedPropertyName) => {
66
65
  const map = {};
66
+ const selectedLowerName = selectedPropertyName === null || selectedPropertyName === void 0 ? void 0 : selectedPropertyName.toLowerCase();
67
67
  groupProperties.forEach((p) => {
68
- if (p.propertyName)
69
- map[p.propertyName] = stringToPossibleDataType(p.dataType);
68
+ var _a;
69
+ const lowerName = (_a = p.propertyName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
70
+ if (lowerName && lowerName !== selectedLowerName)
71
+ map[lowerName] = stringToPossibleDataType(p.dataType);
70
72
  });
71
73
  calculatedProperties.forEach((p) => {
72
- if (p.propertyName)
73
- map[p.propertyName] = "number";
74
+ var _a;
75
+ const lowerName = (_a = p.propertyName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
76
+ if (lowerName)
77
+ map[lowerName] = "number";
78
+ });
79
+ customCalculations.forEach((p) => {
80
+ var _a;
81
+ const lowerName = (_a = p.propertyName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
82
+ if (lowerName && lowerName !== selectedLowerName)
83
+ map[lowerName] = stringToPossibleDataType(p.dataType);
74
84
  });
75
85
  return map;
76
86
  };
@@ -88,21 +98,20 @@ const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProps = fal
88
98
  const [keySet, setKeySet] = react_1.useState();
89
99
  const [isLoading, setIsLoading] = react_1.useState(true);
90
100
  const fetchGroupProperties = react_1.useMemo(() => {
91
- const reportingClientApi = new insights_client_1.ReportingClient(apiContext.prefix);
101
+ const reportingClientApi = utils_1.getReportingClient(apiContext.prefix);
92
102
  return async () => reportingClientApi.getGroupProperties(apiContext.accessToken, iModelId, mappingId, groupId);
93
103
  }, [apiContext, iModelId, mappingId, groupId]);
94
104
  const { isLoading: isLoadingGroupProperties, data: groupProperties, refreshData: refreshGroupProperties } = useFetchData_1.useCombinedFetchRefresh(fetchGroupProperties);
95
105
  const fetchCalculatedProperties = react_1.useMemo(() => {
96
- const reportingClientApi = new insights_client_1.ReportingClient(apiContext.prefix);
106
+ const reportingClientApi = utils_1.getReportingClient(apiContext.prefix);
97
107
  return async () => reportingClientApi.getCalculatedProperties(apiContext.accessToken, iModelId, mappingId, groupId);
98
108
  }, [apiContext, iModelId, mappingId, groupId]);
99
109
  const { isLoading: isLoadingCalculatedProperties, data: calculatedProperties, refreshData: refreshCalculatedProperties } = useFetchData_1.useCombinedFetchRefresh(fetchCalculatedProperties);
100
110
  const fetchCustomCalculations = react_1.useMemo(() => {
101
- const reportingClientApi = new insights_client_1.ReportingClient(apiContext.prefix);
111
+ const reportingClientApi = utils_1.getReportingClient(apiContext.prefix);
102
112
  return async () => reportingClientApi.getCustomCalculations(apiContext.accessToken, iModelId, mappingId, groupId);
103
113
  }, [apiContext, iModelId, mappingId, groupId]);
104
114
  const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } = useFetchData_1.useCombinedFetchRefresh(fetchCustomCalculations);
105
- const properties = react_1.useMemo(() => convertToPropertyMap(groupProperties, calculatedProperties), [groupProperties, calculatedProperties]);
106
115
  react_1.useEffect(() => {
107
116
  const initialize = async () => {
108
117
  var _a;
@@ -170,9 +179,9 @@ const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProps = fal
170
179
  case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:
171
180
  return (react_1.default.createElement(CalculatedPropertyAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, property: selectedCalculatedProperty, ids: resolvedHiliteIds, returnFn: calculatedPropertyReturn }));
172
181
  case PropertyMenuView.ADD_CUSTOM_CALCULATION:
173
- return (react_1.default.createElement(CustomCalculationAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, properties: properties, returnFn: customCalculationReturn }));
182
+ return (react_1.default.createElement(CustomCalculationAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, properties: convertToPropertyMap(groupProperties, calculatedProperties, customCalculations), returnFn: customCalculationReturn }));
174
183
  case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:
175
- return (react_1.default.createElement(CustomCalculationAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, properties: properties, customCalculation: selectedCustomCalculation, returnFn: customCalculationReturn }));
184
+ return (react_1.default.createElement(CustomCalculationAction_1.default, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, properties: convertToPropertyMap(groupProperties, calculatedProperties, customCalculations, selectedCustomCalculation === null || selectedCustomCalculation === void 0 ? void 0 : selectedCustomCalculation.propertyName), customCalculation: selectedCustomCalculation, returnFn: customCalculationReturn }));
176
185
  default:
177
186
  return (react_1.default.createElement(itwinui_react_1.InformationPanelWrapper, { className: 'property-menu-wrapper' },
178
187
  react_1.default.createElement("div", { className: 'property-header' },
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/widget/components/PropertyMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\n\nimport { fetchIdsFromQuery, WidgetHeader } from \"./utils\";\nimport {\n clearEmphasizedElements,\n manufactureKeys,\n visualizeElements,\n visualizeElementsByKeys,\n zoomToElements,\n} from \"./viewerUtils\";\nimport type { GroupType } from \"./Grouping\";\nimport \"./PropertyMenu.scss\";\nimport GroupPropertyAction from \"./GroupPropertyAction\";\nimport CalculatedPropertyAction from \"./CalculatedPropertyAction\";\nimport type { GroupPropertyType } from \"./GroupPropertyTable\";\nimport GroupPropertyTable from \"./GroupPropertyTable\";\nimport type {\n CalculatedPropertyType,\n} from \"./CalculatedPropertyTable\";\nimport CalculatedPropertyTable from \"./CalculatedPropertyTable\";\nimport {\n IconButton,\n InformationPanel,\n InformationPanelBody,\n InformationPanelHeader,\n InformationPanelWrapper,\n LabeledTextarea,\n ProgressRadial,\n Text,\n toaster,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport type {\n CustomCalculationType,\n} from \"./CustomCalculationTable\";\nimport CustomCalculationTable from \"./CustomCalculationTable\";\nimport CustomCalculationAction from \"./CustomCalculationAction\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport type { PossibleDataType, PropertyMap } from \"../../formula/Types\";\nimport { useCombinedFetchRefresh } from \"../hooks/useFetchData\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport { ReportingClient } from \"@itwin/insights-client\";\n\ninterface PropertyModifyProps {\n iModelId: string;\n mappingId: string;\n group: GroupType;\n goBack: () => Promise<void>;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n}\n\nexport enum PropertyMenuView {\n DEFAULT = \"default\",\n ADD_GROUP_PROPERTY = \"add_group_property\",\n MODIFY_GROUP_PROPERTY = \"modify_group_property\",\n ADD_CALCULATED_PROPERTY = \"add_calculated_property\",\n MODIFY_CALCULATED_PROPERTY = \"modify_calculated_property\",\n ADD_CUSTOM_CALCULATION = \"add_custom_calculation\",\n MODIFY_CUSTOM_CALCULATION = \"modify_custom_calculation\",\n}\n\nconst stringToPossibleDataType = (str?: string): PossibleDataType => {\n if (!str)\n return \"undefined\";\n\n switch (str.toLowerCase()) {\n case \"double\":\n case \"number\": return \"number\";\n case \"string\": return \"string\";\n case \"boolean\": return \"boolean\";\n default: return \"undefined\";\n }\n};\n\nconst convertToPropertyMap = (groupProperties: GroupPropertyType[], calculatedProperties: CalculatedPropertyType[]): PropertyMap => {\n const map: PropertyMap = {};\n\n groupProperties.forEach((p) => {\n if (p.propertyName)\n map[p.propertyName] = stringToPossibleDataType(p.dataType);\n });\n\n calculatedProperties.forEach((p) => {\n if (p.propertyName)\n map[p.propertyName] = \"number\";\n });\n\n return map;\n};\n\nexport const PropertyMenu = ({\n iModelId,\n mappingId,\n group,\n goBack,\n hideGroupProps = false,\n hideCalculatedProps = false,\n hideCustomCalculationProps = false,\n}: PropertyModifyProps) => {\n const groupId = group.id ?? \"\";\n\n const apiContext = useContext(ApiContext);\n\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const [propertyMenuView, setPropertyMenuView] = useState<PropertyMenuView>(\n PropertyMenuView.DEFAULT,\n );\n const [selectedGroupProperty, setSelectedGroupProperty] = useState<\n GroupPropertyType | undefined\n >(undefined);\n const [selectedCalculatedProperty, setSelectedCalculatedProperty] = useState<\n CalculatedPropertyType | undefined\n >(undefined);\n const [selectedCustomCalculation, setSelectedCustomCalculation] = useState<\n CustomCalculationType | undefined\n >(undefined);\n const [isInformationPanelOpen, setIsInformationPanelOpen] =\n useState<boolean>(false);\n const [resolvedHiliteIds, setResolvedHiliteIds] = useState<string[]>([]);\n const [keySet, setKeySet] = useState<KeySet>();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const fetchGroupProperties = useMemo(\n () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n return async () => reportingClientApi.getGroupProperties(apiContext.accessToken, iModelId, mappingId, groupId);\n },\n [apiContext, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingGroupProperties, data: groupProperties, refreshData: refreshGroupProperties } =\n useCombinedFetchRefresh<GroupPropertyType>(fetchGroupProperties);\n\n const fetchCalculatedProperties = useMemo(\n () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n return async () => reportingClientApi.getCalculatedProperties(apiContext.accessToken, iModelId, mappingId, groupId);\n },\n [apiContext, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCalculatedProperties, data: calculatedProperties, refreshData: refreshCalculatedProperties } =\n useCombinedFetchRefresh<CalculatedPropertyType>(fetchCalculatedProperties);\n\n const fetchCustomCalculations = useMemo(\n () => {\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n return async () => reportingClientApi.getCustomCalculations(apiContext.accessToken, iModelId, mappingId, groupId);\n },\n [apiContext, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } =\n useCombinedFetchRefresh<CustomCalculationType>(fetchCustomCalculations);\n\n const properties = useMemo(() => convertToPropertyMap(groupProperties, calculatedProperties), [groupProperties, calculatedProperties]);\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const ids = await fetchIdsFromQuery(group.query ?? \"\", iModelConnection);\n if (ids.length === 0) {\n toaster.warning(\"The query is valid but produced no results.\");\n await goBack();\n }\n const keys = await manufactureKeys(ids, iModelConnection);\n setKeySet(keys);\n Presentation.selection.clearSelection(\n \"GroupingMappingWidget\",\n iModelConnection,\n );\n clearEmphasizedElements();\n const resolvedIds = await visualizeElementsByKeys(keys, \"red\");\n await zoomToElements(resolvedIds);\n setResolvedHiliteIds(resolvedIds);\n setIsLoading(false);\n } catch {\n toaster.negative(`Could not load ${group.groupName}.`);\n await goBack();\n }\n };\n void initialize();\n }, [iModelConnection, group.query, goBack, group.groupName]);\n\n const onGroupPropertyModify = useCallback(\n (value: CellProps<GroupPropertyType>) => {\n setSelectedGroupProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_GROUP_PROPERTY);\n },\n [],\n );\n\n const onCalculatedPropertyModify = useCallback(\n (value: CellProps<CalculatedPropertyType>) => {\n setSelectedCalculatedProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CALCULATED_PROPERTY);\n },\n [],\n );\n\n const onCustomCalculationModify = useCallback(\n (value: CellProps<CustomCalculationType>) => {\n setSelectedCustomCalculation(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CUSTOM_CALCULATION);\n },\n [],\n );\n\n const groupPropertyReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshGroupProperties();\n }, [refreshGroupProperties]);\n\n const calculatedPropertyReturn = useCallback(async (modified: boolean) => {\n visualizeElements(resolvedHiliteIds, \"red\");\n await zoomToElements(resolvedHiliteIds);\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCalculatedProperties();\n }, [resolvedHiliteIds, refreshCalculatedProperties]);\n\n const customCalculationReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCustomCalculations();\n }, [refreshCustomCalculations]);\n\n if (isLoading) {\n return (\n <div className='loading-overlay'>\n <Text>Loading Group</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n );\n }\n\n switch (propertyMenuView) {\n case PropertyMenuView.ADD_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n groupPropertyId={selectedGroupProperty?.id ?? \"\"}\n groupPropertyName={selectedGroupProperty?.propertyName ?? \"\"}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n property={selectedCalculatedProperty}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={properties}\n returnFn={customCalculationReturn}\n />\n );\n case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={properties}\n customCalculation={selectedCustomCalculation}\n returnFn={customCalculationReturn}\n />\n );\n default:\n return (\n <InformationPanelWrapper className='property-menu-wrapper'>\n <div className='property-header'>\n <WidgetHeader\n title={`${group.groupName ?? \"\"}`}\n returnFn={goBack}\n />\n <IconButton\n styleType='borderless'\n onClick={() => setIsInformationPanelOpen(true)}\n >\n <SvgProperties />\n </IconButton>\n </div>\n <div className='property-menu-container'>\n {!hideGroupProps && (\n <div className='property-table'>\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onGroupPropertyModify={onGroupPropertyModify}\n setSelectedGroupProperty={setSelectedGroupProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingGroupProperties={isLoadingGroupProperties}\n groupProperties={groupProperties}\n refreshGroupProperties={refreshGroupProperties}\n selectedGroupProperty={selectedGroupProperty}\n />\n </div>\n )}\n\n {!hideCalculatedProps && (\n <div className='property-table'>\n <CalculatedPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCalculatedPropertyModify={onCalculatedPropertyModify}\n setSelectedCalculatedProperty={setSelectedCalculatedProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCalculatedProperties={isLoadingCalculatedProperties}\n calculatedProperties={calculatedProperties}\n refreshCalculatedProperties={refreshCalculatedProperties}\n selectedCalculatedProperty={selectedCalculatedProperty}\n />\n </div>\n )}\n {!hideCustomCalculationProps && (\n <div className='property-table'>\n <CustomCalculationTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCustomCalculationModify={onCustomCalculationModify}\n setSelectedCustomCalculation={setSelectedCustomCalculation}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCustomCalculations={isLoadingCustomCalculations}\n customCalculations={customCalculations}\n refreshCustomCalculations={refreshCustomCalculations}\n selectedCustomCalculation={selectedCustomCalculation}\n />\n </div>\n )}\n </div>\n <InformationPanel\n className='information-panel'\n isOpen={isInformationPanelOpen}\n >\n <InformationPanelHeader\n onClose={() => setIsInformationPanelOpen(false)}\n >\n <Text variant='subheading'>{`${group.groupName ?? \"\"\n } Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className='information-body'>\n <LabeledTextarea\n label='Query'\n rows={15}\n readOnly\n defaultValue={group.query ?? \"\"}\n />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n </InformationPanelWrapper>\n );\n }\n};\n"]}
1
+ {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/widget/components/PropertyMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\n\nimport { fetchIdsFromQuery, getReportingClient, WidgetHeader } from \"./utils\";\nimport {\n clearEmphasizedElements,\n manufactureKeys,\n visualizeElements,\n visualizeElementsByKeys,\n zoomToElements,\n} from \"./viewerUtils\";\nimport type { GroupType } from \"./Grouping\";\nimport \"./PropertyMenu.scss\";\nimport GroupPropertyAction from \"./GroupPropertyAction\";\nimport CalculatedPropertyAction from \"./CalculatedPropertyAction\";\nimport type { GroupPropertyType } from \"./GroupPropertyTable\";\nimport GroupPropertyTable from \"./GroupPropertyTable\";\nimport type {\n CalculatedPropertyType,\n} from \"./CalculatedPropertyTable\";\nimport CalculatedPropertyTable from \"./CalculatedPropertyTable\";\nimport {\n IconButton,\n InformationPanel,\n InformationPanelBody,\n InformationPanelHeader,\n InformationPanelWrapper,\n LabeledTextarea,\n ProgressRadial,\n Text,\n toaster,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport type {\n CustomCalculationType,\n} from \"./CustomCalculationTable\";\nimport CustomCalculationTable from \"./CustomCalculationTable\";\nimport CustomCalculationAction from \"./CustomCalculationAction\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport type { PossibleDataType, PropertyMap } from \"../../formula/Types\";\nimport { useCombinedFetchRefresh } from \"../hooks/useFetchData\";\nimport { ApiContext } from \"./GroupingMapping\";\n\ninterface PropertyModifyProps {\n iModelId: string;\n mappingId: string;\n group: GroupType;\n goBack: () => Promise<void>;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n}\n\nexport enum PropertyMenuView {\n DEFAULT = \"default\",\n ADD_GROUP_PROPERTY = \"add_group_property\",\n MODIFY_GROUP_PROPERTY = \"modify_group_property\",\n ADD_CALCULATED_PROPERTY = \"add_calculated_property\",\n MODIFY_CALCULATED_PROPERTY = \"modify_calculated_property\",\n ADD_CUSTOM_CALCULATION = \"add_custom_calculation\",\n MODIFY_CUSTOM_CALCULATION = \"modify_custom_calculation\",\n}\n\nconst stringToPossibleDataType = (str?: string): PossibleDataType => {\n if (!str)\n return \"undefined\";\n\n switch (str.toLowerCase()) {\n case \"double\":\n case \"number\": return \"number\";\n case \"string\": return \"string\";\n case \"boolean\": return \"boolean\";\n default: return \"undefined\";\n }\n};\n\nconst convertToPropertyMap = (\n groupProperties: GroupPropertyType[],\n calculatedProperties: CalculatedPropertyType[],\n customCalculations: CustomCalculationType[],\n selectedPropertyName?: string\n): PropertyMap => {\n const map: PropertyMap = {};\n const selectedLowerName = selectedPropertyName?.toLowerCase();\n\n groupProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n calculatedProperties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName)\n map[lowerName] = \"number\";\n });\n\n customCalculations.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName)\n map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n return map;\n};\n\nexport const PropertyMenu = ({\n iModelId,\n mappingId,\n group,\n goBack,\n hideGroupProps = false,\n hideCalculatedProps = false,\n hideCustomCalculationProps = false,\n}: PropertyModifyProps) => {\n const groupId = group.id ?? \"\";\n\n const apiContext = useContext(ApiContext);\n\n const iModelConnection = useActiveIModelConnection() as IModelConnection;\n const [propertyMenuView, setPropertyMenuView] = useState<PropertyMenuView>(\n PropertyMenuView.DEFAULT,\n );\n const [selectedGroupProperty, setSelectedGroupProperty] = useState<\n GroupPropertyType | undefined\n >(undefined);\n const [selectedCalculatedProperty, setSelectedCalculatedProperty] = useState<\n CalculatedPropertyType | undefined\n >(undefined);\n const [selectedCustomCalculation, setSelectedCustomCalculation] = useState<\n CustomCalculationType | undefined\n >(undefined);\n const [isInformationPanelOpen, setIsInformationPanelOpen] =\n useState<boolean>(false);\n const [resolvedHiliteIds, setResolvedHiliteIds] = useState<string[]>([]);\n const [keySet, setKeySet] = useState<KeySet>();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const fetchGroupProperties = useMemo(\n () => {\n const reportingClientApi = getReportingClient(apiContext.prefix);\n return async () => reportingClientApi.getGroupProperties(apiContext.accessToken, iModelId, mappingId, groupId);\n },\n [apiContext, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingGroupProperties, data: groupProperties, refreshData: refreshGroupProperties } =\n useCombinedFetchRefresh<GroupPropertyType>(fetchGroupProperties);\n\n const fetchCalculatedProperties = useMemo(\n () => {\n const reportingClientApi = getReportingClient(apiContext.prefix);\n return async () => reportingClientApi.getCalculatedProperties(apiContext.accessToken, iModelId, mappingId, groupId);\n },\n [apiContext, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCalculatedProperties, data: calculatedProperties, refreshData: refreshCalculatedProperties } =\n useCombinedFetchRefresh<CalculatedPropertyType>(fetchCalculatedProperties);\n\n const fetchCustomCalculations = useMemo(\n () => {\n const reportingClientApi = getReportingClient(apiContext.prefix);\n return async () => reportingClientApi.getCustomCalculations(apiContext.accessToken, iModelId, mappingId, groupId);\n },\n [apiContext, iModelId, mappingId, groupId],\n );\n const { isLoading: isLoadingCustomCalculations, data: customCalculations, refreshData: refreshCustomCalculations } =\n useCombinedFetchRefresh<CustomCalculationType>(fetchCustomCalculations);\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const ids = await fetchIdsFromQuery(group.query ?? \"\", iModelConnection);\n if (ids.length === 0) {\n toaster.warning(\"The query is valid but produced no results.\");\n await goBack();\n }\n const keys = await manufactureKeys(ids, iModelConnection);\n setKeySet(keys);\n Presentation.selection.clearSelection(\n \"GroupingMappingWidget\",\n iModelConnection,\n );\n clearEmphasizedElements();\n const resolvedIds = await visualizeElementsByKeys(keys, \"red\");\n await zoomToElements(resolvedIds);\n setResolvedHiliteIds(resolvedIds);\n setIsLoading(false);\n } catch {\n toaster.negative(`Could not load ${group.groupName}.`);\n await goBack();\n }\n };\n void initialize();\n }, [iModelConnection, group.query, goBack, group.groupName]);\n\n const onGroupPropertyModify = useCallback(\n (value: CellProps<GroupPropertyType>) => {\n setSelectedGroupProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_GROUP_PROPERTY);\n },\n [],\n );\n\n const onCalculatedPropertyModify = useCallback(\n (value: CellProps<CalculatedPropertyType>) => {\n setSelectedCalculatedProperty(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CALCULATED_PROPERTY);\n },\n [],\n );\n\n const onCustomCalculationModify = useCallback(\n (value: CellProps<CustomCalculationType>) => {\n setSelectedCustomCalculation(value.row.original);\n setPropertyMenuView(PropertyMenuView.MODIFY_CUSTOM_CALCULATION);\n },\n [],\n );\n\n const groupPropertyReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshGroupProperties();\n }, [refreshGroupProperties]);\n\n const calculatedPropertyReturn = useCallback(async (modified: boolean) => {\n visualizeElements(resolvedHiliteIds, \"red\");\n await zoomToElements(resolvedHiliteIds);\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCalculatedProperties();\n }, [resolvedHiliteIds, refreshCalculatedProperties]);\n\n const customCalculationReturn = useCallback(async (modified: boolean) => {\n setPropertyMenuView(PropertyMenuView.DEFAULT);\n modified && await refreshCustomCalculations();\n }, [refreshCustomCalculations]);\n\n if (isLoading) {\n return (\n <div className='loading-overlay'>\n <Text>Loading Group</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n );\n }\n\n switch (propertyMenuView) {\n case PropertyMenuView.ADD_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_GROUP_PROPERTY:\n return (\n <GroupPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n keySet={keySet ?? new KeySet()}\n groupPropertyId={selectedGroupProperty?.id ?? \"\"}\n groupPropertyName={selectedGroupProperty?.propertyName ?? \"\"}\n returnFn={groupPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.MODIFY_CALCULATED_PROPERTY:\n return (\n <CalculatedPropertyAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n property={selectedCalculatedProperty}\n ids={resolvedHiliteIds}\n returnFn={calculatedPropertyReturn}\n />\n );\n case PropertyMenuView.ADD_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations)}\n returnFn={customCalculationReturn}\n />\n );\n case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:\n return (\n <CustomCalculationAction\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n properties={convertToPropertyMap(groupProperties, calculatedProperties, customCalculations, selectedCustomCalculation?.propertyName)}\n customCalculation={selectedCustomCalculation}\n returnFn={customCalculationReturn}\n />\n );\n default:\n return (\n <InformationPanelWrapper className='property-menu-wrapper'>\n <div className='property-header'>\n <WidgetHeader\n title={`${group.groupName ?? \"\"}`}\n returnFn={goBack}\n />\n <IconButton\n styleType='borderless'\n onClick={() => setIsInformationPanelOpen(true)}\n >\n <SvgProperties />\n </IconButton>\n </div>\n <div className='property-menu-container'>\n {!hideGroupProps && (\n <div className='property-table'>\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onGroupPropertyModify={onGroupPropertyModify}\n setSelectedGroupProperty={setSelectedGroupProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingGroupProperties={isLoadingGroupProperties}\n groupProperties={groupProperties}\n refreshGroupProperties={refreshGroupProperties}\n selectedGroupProperty={selectedGroupProperty}\n />\n </div>\n )}\n\n {!hideCalculatedProps && (\n <div className='property-table'>\n <CalculatedPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCalculatedPropertyModify={onCalculatedPropertyModify}\n setSelectedCalculatedProperty={setSelectedCalculatedProperty}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCalculatedProperties={isLoadingCalculatedProperties}\n calculatedProperties={calculatedProperties}\n refreshCalculatedProperties={refreshCalculatedProperties}\n selectedCalculatedProperty={selectedCalculatedProperty}\n />\n </div>\n )}\n {!hideCustomCalculationProps && (\n <div className='property-table'>\n <CustomCalculationTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onCustomCalculationModify={onCustomCalculationModify}\n setSelectedCustomCalculation={setSelectedCustomCalculation}\n setGroupModifyView={setPropertyMenuView}\n isLoadingCustomCalculations={isLoadingCustomCalculations}\n customCalculations={customCalculations}\n refreshCustomCalculations={refreshCustomCalculations}\n selectedCustomCalculation={selectedCustomCalculation}\n />\n </div>\n )}\n </div>\n <InformationPanel\n className='information-panel'\n isOpen={isInformationPanelOpen}\n >\n <InformationPanelHeader\n onClose={() => setIsInformationPanelOpen(false)}\n >\n <Text variant='subheading'>{`${group.groupName ?? \"\"\n } Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className='information-body'>\n <LabeledTextarea\n label='Query'\n rows={15}\n readOnly\n defaultValue={group.query ?? \"\"}\n />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n </InformationPanelWrapper>\n );\n }\n};\n"]}
@@ -21,14 +21,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
22
  const itwinui_react_1 = require("@itwin/itwinui-react");
23
23
  const react_1 = __importStar(require("react"));
24
- const insights_client_1 = require("@itwin/insights-client");
25
24
  const GroupingMapping_1 = require("./GroupingMapping");
26
25
  require("./SelectMapping.scss");
27
26
  const utils_1 = require("./utils");
28
27
  const fetchMappings = async (setMappings, iModelId, setIsLoading, apiContext) => {
29
28
  try {
30
29
  setIsLoading(true);
31
- const reportingClientApi = new insights_client_1.ReportingClient(apiContext.prefix);
30
+ const reportingClientApi = utils_1.getReportingClient(apiContext.prefix);
32
31
  const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);
33
32
  setMappings(mappings);
34
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectMappings.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectMappings.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type {\n TablePaginatorRendererProps,\n} from \"@itwin/itwinui-react\";\nimport {\n Button,\n Table,\n tableFilters,\n TablePaginator,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { ReportingClient } from \"@itwin/insights-client\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { MappingType } from \"./Mapping\";\nimport \"./SelectMapping.scss\";\nimport { handleError } from \"./utils\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectMappingsProps {\n iModelId: string;\n onSelect: (selectedMappings: MappingType[]) => void;\n onCancel: () => void;\n backFn: () => void;\n}\n\nconst SelectMappings = ({\n iModelId,\n onSelect,\n onCancel,\n backFn,\n}: SelectMappingsProps) => {\n const apiContext = useContext(ApiContext);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [selectedMappings, setSelectedMappings] = useState<MappingType[]>([]);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n []\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className='select-mapping-container'>\n <Table<MappingType>\n data={mappings}\n columns={mappingsColumns}\n className='select-mapping-table'\n emptyTableContent='No Mappings available.'\n isSortable\n isSelectable\n isLoading={isLoading}\n onSelect={(selectData: MappingType[] | undefined) => {\n selectData && setSelectedMappings(selectData);\n }}\n paginatorRenderer={paginator}\n />\n <div className='import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button\n styleType='high-visibility'\n onClick={() => {\n onSelect(selectedMappings);\n }}\n disabled={isLoading || selectedMappings.length === 0}\n >\n Next\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectMappings;\n"]}
1
+ {"version":3,"file":"SelectMappings.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectMappings.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type {\n TablePaginatorRendererProps,\n} from \"@itwin/itwinui-react\";\nimport {\n Button,\n Table,\n tableFilters,\n TablePaginator,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport type { Api } from \"./GroupingMapping\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport type { MappingType } from \"./Mapping\";\nimport \"./SelectMapping.scss\";\nimport { getReportingClient, handleError } from \"./utils\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n apiContext: Api\n) => {\n try {\n setIsLoading(true);\n const reportingClientApi = getReportingClient(apiContext.prefix);\n const mappings = await reportingClientApi.getMappings(apiContext.accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectMappingsProps {\n iModelId: string;\n onSelect: (selectedMappings: MappingType[]) => void;\n onCancel: () => void;\n backFn: () => void;\n}\n\nconst SelectMappings = ({\n iModelId,\n onSelect,\n onCancel,\n backFn,\n}: SelectMappingsProps) => {\n const apiContext = useContext(ApiContext);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [selectedMappings, setSelectedMappings] = useState<MappingType[]>([]);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, apiContext);\n }, [apiContext, iModelId, setIsLoading]);\n\n const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n []\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className='select-mapping-container'>\n <Table<MappingType>\n data={mappings}\n columns={mappingsColumns}\n className='select-mapping-table'\n emptyTableContent='No Mappings available.'\n isSortable\n isSelectable\n isLoading={isLoading}\n onSelect={(selectData: MappingType[] | undefined) => {\n selectData && setSelectedMappings(selectData);\n }}\n paginatorRenderer={paginator}\n />\n <div className='import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button\n styleType='high-visibility'\n onClick={() => {\n onSelect(selectedMappings);\n }}\n disabled={isLoading || selectedMappings.length === 0}\n >\n Next\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectMappings;\n"]}
@@ -2,6 +2,7 @@ import "./utils.scss";
2
2
  import React from "react";
3
3
  import type { ISelectionProvider, SelectionChangeEventArgs } from "@itwin/presentation-frontend";
4
4
  import type { IModelConnection } from "@itwin/core-frontend";
5
+ import { ReportingClient } from "@itwin/insights-client";
5
6
  export declare const onSelectionChanged: (evt: SelectionChangeEventArgs, selectionProvider: ISelectionProvider) => void;
6
7
  export interface WidgetHeaderProps {
7
8
  title: string;
@@ -13,4 +14,5 @@ export declare const handleInputChange: <T>(e: React.ChangeEvent<HTMLInputElemen
13
14
  export declare const fetchIdsFromQuery: (query: string, iModelConnection: IModelConnection) => Promise<string[]>;
14
15
  export declare const handleError: (errorStatus: number) => void;
15
16
  export declare const LoadingSpinner: () => JSX.Element;
17
+ export declare const getReportingClient: (prefix?: "" | "qa" | "dev" | undefined) => ReportingClient;
16
18
  //# sourceMappingURL=utils.d.ts.map
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LoadingSpinner = exports.handleError = exports.fetchIdsFromQuery = exports.handleInputChange = exports.WidgetHeader = exports.onSelectionChanged = void 0;
6
+ exports.getReportingClient = exports.LoadingSpinner = exports.handleError = exports.fetchIdsFromQuery = exports.handleInputChange = exports.WidgetHeader = exports.onSelectionChanged = void 0;
7
7
  /*---------------------------------------------------------------------------------------------
8
8
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
9
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -13,6 +13,7 @@ const itwinui_react_1 = require("@itwin/itwinui-react");
13
13
  require("./utils.scss");
14
14
  const react_1 = __importDefault(require("react"));
15
15
  const core_common_1 = require("@itwin/core-common");
16
+ const insights_client_1 = require("@itwin/insights-client");
16
17
  const onSelectionChanged = (evt, selectionProvider) => {
17
18
  /* eslint-disable no-console */
18
19
  const selection = selectionProvider.getSelection(evt.imodel, evt.level);
@@ -120,4 +121,15 @@ const LoadingSpinner = () => {
120
121
  react_1.default.createElement(itwinui_react_1.ProgressRadial, { size: "small", indeterminate: true })));
121
122
  };
122
123
  exports.LoadingSpinner = LoadingSpinner;
124
+ const prefixUrl = (baseUrl, prefix) => {
125
+ if (prefix && baseUrl) {
126
+ return baseUrl.replace("api.bentley.com", `${prefix}-api.bentley.com`);
127
+ }
128
+ return baseUrl;
129
+ };
130
+ const getReportingClient = (prefix) => {
131
+ const url = prefixUrl(insights_client_1.REPORTING_BASE_PATH, prefix);
132
+ return new insights_client_1.ReportingClient(url);
133
+ };
134
+ exports.getReportingClient = getReportingClient;
123
135
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/widget/components/utils.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { SvgChevronLeft } from \"@itwin/itwinui-icons-react\";\nimport { ProgressRadial, Text, toaster } from \"@itwin/itwinui-react\";\nimport \"./utils.scss\";\nimport React from \"react\";\nimport type {\n ISelectionProvider,\n SelectionChangeEventArgs,\n} from \"@itwin/presentation-frontend\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\n\nexport const onSelectionChanged = (\n evt: SelectionChangeEventArgs,\n selectionProvider: ISelectionProvider,\n) => {\n /* eslint-disable no-console */\n const selection = selectionProvider.getSelection(evt.imodel, evt.level);\n if (selection.isEmpty) {\n console.log(\"========== Selection cleared ==========\");\n } else {\n console.log(\"========== Selection change ===========\");\n if (selection.instanceKeys.size !== 0) {\n // log all selected ECInstance ids grouped by ECClass name\n console.log(\"ECInstances:\");\n selection.instanceKeys.forEach((ids, ecclass) => {\n console.log(`${ecclass}: [${[...ids].join(\",\")}]`);\n });\n }\n if (selection.nodeKeys.size !== 0) {\n // log all selected node keys\n console.log(\"Nodes:\");\n selection.nodeKeys.forEach((key) => console.log(JSON.stringify(key)));\n }\n console.log(\"=======================================\");\n }\n /* eslint-enable no-console */\n};\n\nexport interface WidgetHeaderProps {\n title: string;\n disabled?: boolean;\n returnFn?: () => Promise<void>;\n}\n\nexport const WidgetHeader = ({\n title,\n disabled = false,\n returnFn,\n}: WidgetHeaderProps) => {\n return (\n <div className='widget-header-container'>\n {returnFn && (\n <div\n className={disabled ? \"chevron-disabled\" : \"chevron\"}\n onClick={disabled ? undefined : returnFn}\n >\n <SvgChevronLeft />\n </div>\n )}\n <Text className='title' variant='title'>\n {title}\n </Text>\n </div>\n );\n};\n\nexport const handleInputChange = <T,>(\n e: React.ChangeEvent<HTMLInputElement>,\n values: T,\n setValues: React.Dispatch<React.SetStateAction<T>>,\n) => {\n const { name, value } = e.target;\n\n setValues({\n ...values,\n [name]: value,\n });\n};\n\nexport const fetchIdsFromQuery = async (\n query: string,\n iModelConnection: IModelConnection,\n) => {\n if (query === \"\") {\n return [];\n }\n const ids: string[] = [];\n const rowIterator = iModelConnection.query(query, undefined, {\n rowFormat: QueryRowFormat.UseJsPropertyNames,\n });\n while (true) {\n const { done, value } = await rowIterator.next();\n if (done) {\n break;\n }\n if (Object.keys(value).includes(\"id\")) {\n ids.push(value.id);\n } else if (Object.keys(value).includes(\"element.id\")) {\n ids.push(value[\"element.id\"]);\n } else if (Object.keys(value).includes(\"eCInstanceId\")) {\n ids.push(value.eCInstanceId);\n }\n }\n return ids;\n};\n\nexport const handleError = (errorStatus: number) => {\n let errorMessage = \"Error! \";\n switch (errorStatus) {\n case 401:\n errorMessage += `You are unauthorized to do this operation.`;\n break;\n case 403:\n errorMessage += `You don't have permission to access the requested resource.`;\n break;\n case 404:\n errorMessage += `The requested resource was not found.`;\n break;\n case 409:\n errorMessage += `This property name is already being used.`;\n break;\n case 422:\n errorMessage += `Unable to process the request.`;\n break;\n case 429:\n errorMessage += `Too many requests.`;\n break;\n case 500:\n errorMessage += `Internal server error.`;\n break;\n case 502:\n errorMessage += `Bad gateway.`;\n break;\n case 503:\n errorMessage += `Service unavailable.`;\n break;\n default:\n errorMessage += `Something went wrong!`;\n }\n toaster.negative(errorMessage);\n\n};\n\nexport const LoadingSpinner = () => {\n return (\n <div className=\"gm-loading-spinner\">\n <ProgressRadial size=\"small\" indeterminate />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/widget/components/utils.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { SvgChevronLeft } from \"@itwin/itwinui-icons-react\";\nimport { ProgressRadial, Text, toaster } from \"@itwin/itwinui-react\";\nimport \"./utils.scss\";\nimport React from \"react\";\nimport type {\n ISelectionProvider,\n SelectionChangeEventArgs,\n} from \"@itwin/presentation-frontend\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\nimport { REPORTING_BASE_PATH, ReportingClient } from \"@itwin/insights-client\";\n\nexport const onSelectionChanged = (\n evt: SelectionChangeEventArgs,\n selectionProvider: ISelectionProvider,\n) => {\n /* eslint-disable no-console */\n const selection = selectionProvider.getSelection(evt.imodel, evt.level);\n if (selection.isEmpty) {\n console.log(\"========== Selection cleared ==========\");\n } else {\n console.log(\"========== Selection change ===========\");\n if (selection.instanceKeys.size !== 0) {\n // log all selected ECInstance ids grouped by ECClass name\n console.log(\"ECInstances:\");\n selection.instanceKeys.forEach((ids, ecclass) => {\n console.log(`${ecclass}: [${[...ids].join(\",\")}]`);\n });\n }\n if (selection.nodeKeys.size !== 0) {\n // log all selected node keys\n console.log(\"Nodes:\");\n selection.nodeKeys.forEach((key) => console.log(JSON.stringify(key)));\n }\n console.log(\"=======================================\");\n }\n /* eslint-enable no-console */\n};\n\nexport interface WidgetHeaderProps {\n title: string;\n disabled?: boolean;\n returnFn?: () => Promise<void>;\n}\n\nexport const WidgetHeader = ({\n title,\n disabled = false,\n returnFn,\n}: WidgetHeaderProps) => {\n return (\n <div className='widget-header-container'>\n {returnFn && (\n <div\n className={disabled ? \"chevron-disabled\" : \"chevron\"}\n onClick={disabled ? undefined : returnFn}\n >\n <SvgChevronLeft />\n </div>\n )}\n <Text className='title' variant='title'>\n {title}\n </Text>\n </div>\n );\n};\n\nexport const handleInputChange = <T,>(\n e: React.ChangeEvent<HTMLInputElement>,\n values: T,\n setValues: React.Dispatch<React.SetStateAction<T>>,\n) => {\n const { name, value } = e.target;\n\n setValues({\n ...values,\n [name]: value,\n });\n};\n\nexport const fetchIdsFromQuery = async (\n query: string,\n iModelConnection: IModelConnection,\n) => {\n if (query === \"\") {\n return [];\n }\n const ids: string[] = [];\n const rowIterator = iModelConnection.query(query, undefined, {\n rowFormat: QueryRowFormat.UseJsPropertyNames,\n });\n while (true) {\n const { done, value } = await rowIterator.next();\n if (done) {\n break;\n }\n if (Object.keys(value).includes(\"id\")) {\n ids.push(value.id);\n } else if (Object.keys(value).includes(\"element.id\")) {\n ids.push(value[\"element.id\"]);\n } else if (Object.keys(value).includes(\"eCInstanceId\")) {\n ids.push(value.eCInstanceId);\n }\n }\n return ids;\n};\n\nexport const handleError = (errorStatus: number) => {\n let errorMessage = \"Error! \";\n switch (errorStatus) {\n case 401:\n errorMessage += `You are unauthorized to do this operation.`;\n break;\n case 403:\n errorMessage += `You don't have permission to access the requested resource.`;\n break;\n case 404:\n errorMessage += `The requested resource was not found.`;\n break;\n case 409:\n errorMessage += `This property name is already being used.`;\n break;\n case 422:\n errorMessage += `Unable to process the request.`;\n break;\n case 429:\n errorMessage += `Too many requests.`;\n break;\n case 500:\n errorMessage += `Internal server error.`;\n break;\n case 502:\n errorMessage += `Bad gateway.`;\n break;\n case 503:\n errorMessage += `Service unavailable.`;\n break;\n default:\n errorMessage += `Something went wrong!`;\n }\n toaster.negative(errorMessage);\n\n};\n\nexport const LoadingSpinner = () => {\n return (\n <div className=\"gm-loading-spinner\">\n <ProgressRadial size=\"small\" indeterminate />\n </div>\n );\n};\n\nconst prefixUrl = (baseUrl?: string, prefix?: string) => {\n if (prefix && baseUrl) {\n return baseUrl.replace(\"api.bentley.com\", `${prefix}-api.bentley.com`);\n }\n return baseUrl;\n};\n\nexport const getReportingClient = (prefix?: \"\" | \"qa\" | \"dev\") => {\n const url = prefixUrl(REPORTING_BASE_PATH, prefix);\n return new ReportingClient(url);\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { PropertyMap } from "../../formula/Types";
2
- export declare function useFormulaValidation(formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void): {
2
+ export declare function useFormulaValidation(formulaName: string, formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void): {
3
3
  isValid: boolean;
4
4
  forceValidation: () => boolean;
5
5
  };
@@ -8,22 +8,22 @@ exports.useFormulaValidation = void 0;
8
8
  const react_1 = require("react");
9
9
  const FormulaValidator_1 = require("../../formula/FormulaValidator");
10
10
  const utils_1 = require("../utils");
11
- function validate(formula, properties, setFormulaErrorMessage, setIsValid) {
11
+ function validate(formulaName, formula, properties, setFormulaErrorMessage, setIsValid) {
12
12
  if (!formula) {
13
13
  setFormulaErrorMessage("");
14
14
  setIsValid(false);
15
15
  return false;
16
16
  }
17
- const error = FormulaValidator_1.validateFormula(formula, properties);
17
+ const error = FormulaValidator_1.validateFormula(formulaName, formula, properties);
18
18
  setFormulaErrorMessage(error);
19
19
  setIsValid(!error);
20
20
  return !error;
21
21
  }
22
22
  const debouncedValidationFunc = utils_1.debounce(validate, 1000);
23
- function useFormulaValidation(formula, properties, setFormulaErrorMessage) {
23
+ function useFormulaValidation(formulaName, formula, properties, setFormulaErrorMessage) {
24
24
  const [isValid, setIsValid] = react_1.useState(false);
25
- react_1.useEffect(() => debouncedValidationFunc(formula, properties, setFormulaErrorMessage, setIsValid), [formula, properties, setFormulaErrorMessage]);
26
- return { isValid, forceValidation: () => validate(formula, properties, setFormulaErrorMessage, setIsValid) };
25
+ react_1.useEffect(() => debouncedValidationFunc(formulaName, formula, properties, setFormulaErrorMessage, setIsValid), [formulaName, formula, properties, setFormulaErrorMessage]);
26
+ return { isValid, forceValidation: () => validate(formulaName, formula, properties, setFormulaErrorMessage, setIsValid) };
27
27
  }
28
28
  exports.useFormulaValidation = useFormulaValidation;
29
29
  //# sourceMappingURL=useFormulaValidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormulaValidation.js","sourceRoot":"","sources":["../../../../src/widget/hooks/useFormulaValidation.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,iCAA4C;AAC5C,qEAAiE;AAEjE,oCAAoC;AAEpC,SAAS,QAAQ,CAAC,OAAe,EAAE,UAAuB,EAAE,sBAA2C,EAAE,UAAgC;IACvI,IAAI,CAAC,OAAO,EAAE;QACZ,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC3B,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG,kCAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9B,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC;AAChB,CAAC;AAED,MAAM,uBAAuB,GAAG,gBAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEzD,SAAgB,oBAAoB,CAAC,OAAe,EAAE,UAAuB,EAAE,sBAA2C;IACxH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,gBAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,iBAAS,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACjJ,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC;AAC/G,CAAC;AAJD,oDAIC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { useEffect, useState } from \"react\";\nimport { validateFormula } from \"../../formula/FormulaValidator\";\nimport type { PropertyMap } from \"../../formula/Types\";\nimport { debounce } from \"../utils\";\n\nfunction validate(formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void, setIsValid: (b: boolean) => void): boolean {\n if (!formula) {\n setFormulaErrorMessage(\"\");\n setIsValid(false);\n return false;\n }\n\n const error = validateFormula(formula, properties);\n setFormulaErrorMessage(error);\n setIsValid(!error);\n return !error;\n}\n\nconst debouncedValidationFunc = debounce(validate, 1000);\n\nexport function useFormulaValidation(formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void) {\n const [isValid, setIsValid] = useState(false);\n useEffect(() => debouncedValidationFunc(formula, properties, setFormulaErrorMessage, setIsValid), [formula, properties, setFormulaErrorMessage]);\n return { isValid, forceValidation: () => validate(formula, properties, setFormulaErrorMessage, setIsValid) };\n}\n"]}
1
+ {"version":3,"file":"useFormulaValidation.js","sourceRoot":"","sources":["../../../../src/widget/hooks/useFormulaValidation.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,iCAA4C;AAC5C,qEAAiE;AAEjE,oCAAoC;AAEpC,SAAS,QAAQ,CAAC,WAAmB,EAAE,OAAe,EAAE,UAAuB,EAAE,sBAA2C,EAAE,UAAgC;IAC5J,IAAI,CAAC,OAAO,EAAE;QACZ,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC3B,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG,kCAAe,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAChE,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9B,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC;AAChB,CAAC;AAED,MAAM,uBAAuB,GAAG,gBAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEzD,SAAgB,oBAAoB,CAAC,WAAmB,EAAE,OAAe,EAAE,UAAuB,EAAE,sBAA2C;IAC7I,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,gBAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,iBAAS,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC3K,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC;AAC5H,CAAC;AAJD,oDAIC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { useEffect, useState } from \"react\";\nimport { validateFormula } from \"../../formula/FormulaValidator\";\nimport type { PropertyMap } from \"../../formula/Types\";\nimport { debounce } from \"../utils\";\n\nfunction validate(formulaName: string, formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void, setIsValid: (b: boolean) => void): boolean {\n if (!formula) {\n setFormulaErrorMessage(\"\");\n setIsValid(false);\n return false;\n }\n\n const error = validateFormula(formulaName, formula, properties);\n setFormulaErrorMessage(error);\n setIsValid(!error);\n return !error;\n}\n\nconst debouncedValidationFunc = debounce(validate, 1000);\n\nexport function useFormulaValidation(formulaName: string, formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void) {\n const [isValid, setIsValid] = useState(false);\n useEffect(() => debouncedValidationFunc(formulaName, formula, properties, setFormulaErrorMessage, setIsValid), [formulaName, formula, properties, setFormulaErrorMessage]);\n return { isValid, forceValidation: () => validate(formulaName, formula, properties, setFormulaErrorMessage, setIsValid) };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { Token } from "./InfixToPostfixConverter";
2
2
  import type { Queue } from "./Queue";
3
3
  import type { PropertyMap } from "./Types";
4
- export declare function validateTokens(tokens: Queue<Token>, properties: PropertyMap): string;
4
+ export declare function validateTokens(formulaName: string, tokens: Queue<Token>, properties: PropertyMap): string;
5
5
  //# sourceMappingURL=FormulaTokensValidator.d.ts.map
@@ -18,7 +18,7 @@ function isNumericalConstant(name) {
18
18
  "sqrt2",
19
19
  ].includes(name.toLowerCase());
20
20
  }
21
- export function validateTokens(tokens, properties) {
21
+ export function validateTokens(formulaName, tokens, properties) {
22
22
  if (tokens.length === 0)
23
23
  return "Formula cannot be empty.";
24
24
  const argStack = new Stack();
@@ -43,6 +43,8 @@ export function validateTokens(tokens, properties) {
43
43
  argStack.push("number");
44
44
  }
45
45
  else {
46
+ if (token.value === formulaName)
47
+ return "Formula cannot reference itself.";
46
48
  const prop = properties[token.value];
47
49
  if (!prop)
48
50
  return `Variable "${token.value}" is not available.`;