@itwin/grouping-mapping-widget 0.2.3 → 0.3.2

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 (139) hide show
  1. package/lib/cjs/widget/GroupingMappingWidget.d.ts +4 -0
  2. package/lib/cjs/widget/GroupingMappingWidget.js +6 -23
  3. package/lib/cjs/widget/GroupingMappingWidget.js.map +1 -1
  4. package/lib/cjs/widget/components/ActionPanel.d.ts +3 -2
  5. package/lib/cjs/widget/components/ActionPanel.js +3 -3
  6. package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
  7. package/lib/cjs/widget/components/CalculatedPropertyAction.d.ts +2 -2
  8. package/lib/cjs/widget/components/CalculatedPropertyAction.js +14 -9
  9. package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
  10. package/lib/cjs/widget/components/CalculatedPropertyAction.scss +5 -5
  11. package/lib/cjs/widget/components/CalculatedPropertyTable.d.ts +5 -5
  12. package/lib/cjs/widget/components/CalculatedPropertyTable.js +15 -16
  13. package/lib/cjs/widget/components/CalculatedPropertyTable.js.map +1 -1
  14. package/lib/cjs/widget/components/ConfirmMappingsImport.d.ts +3 -3
  15. package/lib/cjs/widget/components/ConfirmMappingsImport.js +6 -3
  16. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  17. package/lib/cjs/widget/components/CustomCalculationAction.d.ts +2 -2
  18. package/lib/cjs/widget/components/CustomCalculationAction.js +15 -9
  19. package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
  20. package/lib/cjs/widget/components/CustomCalculationTable.d.ts +5 -5
  21. package/lib/cjs/widget/components/CustomCalculationTable.js +15 -16
  22. package/lib/cjs/widget/components/CustomCalculationTable.js.map +1 -1
  23. package/lib/cjs/widget/components/GroupAction.d.ts +2 -2
  24. package/lib/cjs/widget/components/GroupAction.js +25 -42
  25. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  26. package/lib/cjs/widget/components/GroupPropertyAction.js +9 -5
  27. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  28. package/lib/cjs/widget/components/GroupPropertyTable.d.ts +5 -5
  29. package/lib/cjs/widget/components/GroupPropertyTable.js +15 -16
  30. package/lib/cjs/widget/components/GroupPropertyTable.js.map +1 -1
  31. package/lib/cjs/widget/components/Grouping.d.ts +3 -3
  32. package/lib/cjs/widget/components/Grouping.js +26 -26
  33. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  34. package/lib/cjs/widget/components/GroupingMapping.d.ts +12 -2
  35. package/lib/cjs/widget/components/GroupingMapping.js +18 -4
  36. package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
  37. package/lib/cjs/widget/components/Mapping.d.ts +2 -2
  38. package/lib/cjs/widget/components/Mapping.js +14 -14
  39. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  40. package/lib/cjs/widget/components/MappingAction.d.ts +2 -2
  41. package/lib/cjs/widget/components/MappingAction.js +7 -4
  42. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  43. package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
  44. package/lib/cjs/widget/components/PropertyMenu.d.ts +2 -2
  45. package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
  46. package/lib/cjs/widget/components/SelectIModel.js +4 -8
  47. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  48. package/lib/cjs/widget/components/SelectMappings.d.ts +2 -2
  49. package/lib/cjs/widget/components/SelectMappings.js +10 -11
  50. package/lib/cjs/widget/components/SelectMappings.js.map +1 -1
  51. package/lib/cjs/widget/components/SelectProject.js +4 -8
  52. package/lib/cjs/widget/components/SelectProject.js.map +1 -1
  53. package/lib/cjs/widget/components/property-grid/PropertyView.js +4 -1
  54. package/lib/cjs/widget/components/property-grid/PropertyView.js.map +1 -1
  55. package/lib/esm/widget/GroupingMappingWidget.d.ts +4 -0
  56. package/lib/esm/widget/GroupingMappingWidget.js +6 -4
  57. package/lib/esm/widget/GroupingMappingWidget.js.map +1 -1
  58. package/lib/esm/widget/components/ActionPanel.d.ts +3 -2
  59. package/lib/esm/widget/components/ActionPanel.js +3 -3
  60. package/lib/esm/widget/components/ActionPanel.js.map +1 -1
  61. package/lib/esm/widget/components/CalculatedPropertyAction.d.ts +2 -2
  62. package/lib/esm/widget/components/CalculatedPropertyAction.js +15 -10
  63. package/lib/esm/widget/components/CalculatedPropertyAction.js.map +1 -1
  64. package/lib/esm/widget/components/CalculatedPropertyAction.scss +5 -5
  65. package/lib/esm/widget/components/CalculatedPropertyTable.d.ts +5 -5
  66. package/lib/esm/widget/components/CalculatedPropertyTable.js +16 -17
  67. package/lib/esm/widget/components/CalculatedPropertyTable.js.map +1 -1
  68. package/lib/esm/widget/components/ConfirmMappingsImport.d.ts +3 -3
  69. package/lib/esm/widget/components/ConfirmMappingsImport.js +7 -4
  70. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  71. package/lib/esm/widget/components/CustomCalculationAction.d.ts +2 -2
  72. package/lib/esm/widget/components/CustomCalculationAction.js +16 -10
  73. package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
  74. package/lib/esm/widget/components/CustomCalculationTable.d.ts +5 -5
  75. package/lib/esm/widget/components/CustomCalculationTable.js +16 -17
  76. package/lib/esm/widget/components/CustomCalculationTable.js.map +1 -1
  77. package/lib/esm/widget/components/GroupAction.d.ts +2 -2
  78. package/lib/esm/widget/components/GroupAction.js +26 -43
  79. package/lib/esm/widget/components/GroupAction.js.map +1 -1
  80. package/lib/esm/widget/components/GroupPropertyAction.js +10 -6
  81. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  82. package/lib/esm/widget/components/GroupPropertyTable.d.ts +5 -5
  83. package/lib/esm/widget/components/GroupPropertyTable.js +16 -17
  84. package/lib/esm/widget/components/GroupPropertyTable.js.map +1 -1
  85. package/lib/esm/widget/components/Grouping.d.ts +3 -3
  86. package/lib/esm/widget/components/Grouping.js +27 -27
  87. package/lib/esm/widget/components/Grouping.js.map +1 -1
  88. package/lib/esm/widget/components/GroupingMapping.d.ts +12 -2
  89. package/lib/esm/widget/components/GroupingMapping.js +17 -4
  90. package/lib/esm/widget/components/GroupingMapping.js.map +1 -1
  91. package/lib/esm/widget/components/Mapping.d.ts +2 -2
  92. package/lib/esm/widget/components/Mapping.js +15 -15
  93. package/lib/esm/widget/components/Mapping.js.map +1 -1
  94. package/lib/esm/widget/components/MappingAction.d.ts +2 -2
  95. package/lib/esm/widget/components/MappingAction.js +8 -5
  96. package/lib/esm/widget/components/MappingAction.js.map +1 -1
  97. package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
  98. package/lib/esm/widget/components/PropertyMenu.d.ts +2 -2
  99. package/lib/esm/widget/components/PropertyMenu.js.map +1 -1
  100. package/lib/esm/widget/components/SelectIModel.js +5 -6
  101. package/lib/esm/widget/components/SelectIModel.js.map +1 -1
  102. package/lib/esm/widget/components/SelectMappings.d.ts +2 -2
  103. package/lib/esm/widget/components/SelectMappings.js +11 -12
  104. package/lib/esm/widget/components/SelectMappings.js.map +1 -1
  105. package/lib/esm/widget/components/SelectProject.js +5 -6
  106. package/lib/esm/widget/components/SelectProject.js.map +1 -1
  107. package/lib/esm/widget/components/property-grid/PropertyView.js +4 -1
  108. package/lib/esm/widget/components/property-grid/PropertyView.js.map +1 -1
  109. package/package.json +6 -3
  110. package/lib/cjs/api/generated/api.d.ts +0 -3222
  111. package/lib/cjs/api/generated/api.js +0 -5291
  112. package/lib/cjs/api/generated/api.js.map +0 -1
  113. package/lib/cjs/api/generated/configuration.d.ts +0 -56
  114. package/lib/cjs/api/generated/configuration.js +0 -30
  115. package/lib/cjs/api/generated/configuration.js.map +0 -1
  116. package/lib/cjs/api/generated/index.d.ts +0 -14
  117. package/lib/cjs/api/generated/index.js +0 -31
  118. package/lib/cjs/api/generated/index.js.map +0 -1
  119. package/lib/cjs/api/reportingClient.d.ts +0 -34
  120. package/lib/cjs/api/reportingClient.js +0 -177
  121. package/lib/cjs/api/reportingClient.js.map +0 -1
  122. package/lib/cjs/widget/hooks/useFetchAccessToken.d.ts +0 -3
  123. package/lib/cjs/widget/hooks/useFetchAccessToken.js +0 -22
  124. package/lib/cjs/widget/hooks/useFetchAccessToken.js.map +0 -1
  125. package/lib/esm/api/generated/api.d.ts +0 -3222
  126. package/lib/esm/api/generated/api.js +0 -5248
  127. package/lib/esm/api/generated/api.js.map +0 -1
  128. package/lib/esm/api/generated/configuration.d.ts +0 -56
  129. package/lib/esm/api/generated/configuration.js +0 -26
  130. package/lib/esm/api/generated/configuration.js.map +0 -1
  131. package/lib/esm/api/generated/index.d.ts +0 -14
  132. package/lib/esm/api/generated/index.js +0 -19
  133. package/lib/esm/api/generated/index.js.map +0 -1
  134. package/lib/esm/api/reportingClient.d.ts +0 -34
  135. package/lib/esm/api/reportingClient.js +0 -173
  136. package/lib/esm/api/reportingClient.js.map +0 -1
  137. package/lib/esm/widget/hooks/useFetchAccessToken.d.ts +0 -3
  138. package/lib/esm/widget/hooks/useFetchAccessToken.js +0 -20
  139. package/lib/esm/widget/hooks/useFetchAccessToken.js.map +0 -1
@@ -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, useEffect, useMemo, useState } from \"react\";\nimport type { MappingReportingAPI } from \"../../api/generated/api\";\nimport { reportingClientApi } from \"../../api/reportingClient\";\nimport type { Mapping } from \"./Mapping\";\nimport \"./SelectMapping.scss\";\nimport { handleError } from \"./utils\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<MappingReportingAPI[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>\n) => {\n try {\n setIsLoading(true);\n const mappings = await reportingClientApi.getMappings(iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst useFetchMappings = (\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>\n): [\n MappingReportingAPI[],\n React.Dispatch<React.SetStateAction<MappingReportingAPI[]>>\n] => {\n const [mappings, setMappings] = useState<MappingReportingAPI[]>([]);\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading);\n }, [iModelId, setIsLoading]);\n\n return [mappings, setMappings];\n};\n\ninterface SelectMappingsProps {\n iModelId: string;\n onSelect: (selectedMappings: Mapping[]) => void;\n onCancel: () => void;\n backFn: () => void;\n}\n\nconst SelectMappings = ({\n iModelId,\n onSelect,\n onCancel,\n backFn,\n}: SelectMappingsProps) => {\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings] = useFetchMappings(iModelId, setIsLoading);\n const [selectedMappings, setSelectedMappings] = useState<Mapping[]>([]);\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<Mapping>\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: Mapping[] | 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 { 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"]}
@@ -18,16 +18,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
21
  Object.defineProperty(exports, "__esModule", { value: true });
25
22
  const imodel_browser_react_1 = require("@itwin/imodel-browser-react");
26
23
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
27
24
  const itwinui_react_1 = require("@itwin/itwinui-react");
28
25
  const react_1 = __importStar(require("react"));
29
- const reportingClient_1 = require("../../api/reportingClient");
30
- const useFetchAccessToken_1 = __importDefault(require("../hooks/useFetchAccessToken"));
26
+ const GroupingMapping_1 = require("./GroupingMapping");
31
27
  require("./SelectProject.scss");
32
28
  const tabsWithIcons = [
33
29
  react_1.default.createElement(itwinui_react_1.Tab, { key: 'favorite', label: 'Favorite projects', startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgStarHollow, null) }),
@@ -35,14 +31,14 @@ const tabsWithIcons = [
35
31
  react_1.default.createElement(itwinui_react_1.Tab, { key: 'all', label: 'My projects', startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgList, null) }),
36
32
  ];
37
33
  const SelectProject = ({ onSelect, onCancel }) => {
38
- const accessToken = useFetchAccessToken_1.default();
34
+ const apiContext = react_1.useContext(GroupingMapping_1.ApiContext);
39
35
  const [projectType, setProjectType] = react_1.useState(0);
40
36
  const [searchInput, setSearchInput] = react_1.useState("");
41
37
  const [activeSearchInput, setActiveSearchInput] = react_1.useState("");
42
38
  const startSearch = react_1.useCallback(() => {
43
39
  setActiveSearchInput(searchInput);
44
40
  }, [searchInput]);
45
- const apiOverrides = react_1.useMemo(() => ({ serverEnvironmentPrefix: reportingClient_1.getUrlPrefix() }), []);
41
+ const apiOverrides = react_1.useMemo(() => ({ serverEnvironmentPrefix: apiContext.prefix }), [apiContext.prefix]);
46
42
  return (react_1.default.createElement("div", { className: 'select-project-grid-container' },
47
43
  react_1.default.createElement(itwinui_react_1.HorizontalTabs, { labels: tabsWithIcons, onTabSelected: setProjectType, activeIndex: projectType, type: "borderless", contentClassName: 'grid-holding-tab' },
48
44
  react_1.default.createElement(itwinui_react_1.LabeledInput, { displayStyle: 'inline', iconDisplayStyle: 'inline', className: 'search-input', label: 'Search', value: searchInput, onChange: (event) => {
@@ -59,7 +55,7 @@ const SelectProject = ({ onSelect, onCancel }) => {
59
55
  }, svgIcon: react_1.default.createElement(itwinui_react_1.IconButton, { onClick: () => startSearch(), styleType: 'borderless' },
60
56
  react_1.default.createElement(itwinui_icons_react_1.SvgSearch, null)) }),
61
57
  react_1.default.createElement("div", { className: 'project-grid' },
62
- react_1.default.createElement(imodel_browser_react_1.ProjectGrid, { onThumbnailClick: onSelect, accessToken: accessToken, apiOverrides: apiOverrides, filterOptions: activeSearchInput, requestType: projectType === 0
58
+ react_1.default.createElement(imodel_browser_react_1.ProjectGrid, { onThumbnailClick: onSelect, accessToken: apiContext.accessToken, apiOverrides: apiOverrides, filterOptions: activeSearchInput, requestType: projectType === 0
63
59
  ? "favorites"
64
60
  : projectType === 1
65
61
  ? "recents"
@@ -1 +1 @@
1
- {"version":3,"file":"SelectProject.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectProject.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAQA,sEAEqC;AACrC,oEAKoC;AACpC,wDAM8B;AAC9B,+CAA8D;AAC9D,+DAAyD;AACzD,uFAA+D;AAC/D,gCAA8B;AAE9B,MAAM,aAAa,GAAG;IACpB,8BAAC,mBAAG,IACF,GAAG,EAAC,UAAU,EACd,KAAK,EAAC,mBAAmB,EACzB,SAAS,EAAE,8BAAC,mCAAa,OAAG,GAC5B;IACF,8BAAC,mBAAG,IAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,iBAAiB,EAAC,SAAS,EAAE,8BAAC,iCAAW,OAAG,GAAI;IACzE,8BAAC,mBAAG,IAAC,GAAG,EAAC,KAAK,EAAC,KAAK,EAAC,aAAa,EAAC,SAAS,EAAE,8BAAC,6BAAO,OAAG,GAAI;CAC9D,CAAC;AAKF,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAsB,EAAE,EAAE;IACnE,MAAM,WAAW,GAAG,6BAAmB,EAAE,CAAC;IAC1C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,gBAAQ,CAAS,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,gBAAQ,CAAS,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,gBAAQ,CAAS,EAAE,CAAC,CAAC;IAEvE,MAAM,WAAW,GAAG,mBAAW,CAAC,GAAG,EAAE;QACnC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,YAAY,GAAG,eAAO,CAC1B,GAAG,EAAE,CAAC,CAAC,EAAE,uBAAuB,EAAE,8BAAY,EAAE,EAAE,CAAC,EACnD,EAAE,CACH,CAAC;IAEF,OAAO,CACL,uCAAK,SAAS,EAAC,+BAA+B;QAC5C,8BAAC,8BAAc,IACb,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,YAAY,EAClB,gBAAgB,EAAC,kBAAkB;YAEnC,8BAAC,4BAAY,IACX,YAAY,EAAC,QAAQ,EACrB,gBAAgB,EAAC,QAAQ,EACzB,SAAS,EAAC,cAAc,EACxB,KAAK,EAAC,QAAQ,EACd,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,MAAM,EACJ,MAAM,EAAE,EAAE,KAAK,EAAE,GAClB,GAAG,KAAK,CAAC;oBACV,cAAc,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;oBACnB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;wBACzB,WAAW,EAAE,CAAC;qBACf;oBACD,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;wBAC1B,cAAc,CAAC,EAAE,CAAC,CAAC;wBACnB,oBAAoB,CAAC,EAAE,CAAC,CAAC;qBAC1B;gBACH,CAAC,EACD,OAAO,EACL,8BAAC,0BAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAC,YAAY;oBAC9D,8BAAC,+BAAS,OAAG,CACF,GAEf;YACF,uCAAK,SAAS,EAAC,cAAc;gBAC3B,8BAAC,kCAAW,IACV,gBAAgB,EAAE,QAAQ,EAC1B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,iBAAiB,EAChC,WAAW,EACT,WAAW,KAAK,CAAC;wBACf,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,WAAW,KAAK,CAAC;4BACjB,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,EAAE,GAEV,CACE;YACN,uCAAK,SAAS,EAAC,6BAA6B;gBAC1C,8BAAC,sBAAM,IAAC,OAAO,EAAE,QAAQ,aAAiB,CACtC,CACS,CACb,CACP,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 type {\n ApiOverrides,\n ProjectFull,\n} from \"@itwin/imodel-browser-react\";\nimport {\n ProjectGrid,\n} from \"@itwin/imodel-browser-react\";\nimport {\n SvgCalendar,\n SvgList,\n SvgSearch,\n SvgStarHollow,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n HorizontalTabs,\n IconButton,\n LabeledInput,\n Tab,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { getUrlPrefix } from \"../../api/reportingClient\";\nimport useFetchAccessToken from \"../hooks/useFetchAccessToken\";\nimport \"./SelectProject.scss\";\n\nconst tabsWithIcons = [\n <Tab\n key='favorite'\n label='Favorite projects'\n startIcon={<SvgStarHollow />}\n />,\n <Tab key='recents' label='Recent projects' startIcon={<SvgCalendar />} />,\n <Tab key='all' label='My projects' startIcon={<SvgList />} />,\n];\ninterface SelectProjectProps {\n onSelect: (project: ProjectFull) => void;\n onCancel: () => void;\n}\nconst SelectProject = ({ onSelect, onCancel }: SelectProjectProps) => {\n const accessToken = useFetchAccessToken();\n const [projectType, setProjectType] = useState<number>(0);\n const [searchInput, setSearchInput] = useState<string>(\"\");\n const [activeSearchInput, setActiveSearchInput] = useState<string>(\"\");\n\n const startSearch = useCallback(() => {\n setActiveSearchInput(searchInput);\n }, [searchInput]);\n\n const apiOverrides = useMemo<ApiOverrides<ProjectFull[]>>(\n () => ({ serverEnvironmentPrefix: getUrlPrefix() }),\n [],\n );\n\n return (\n <div className='select-project-grid-container'>\n <HorizontalTabs\n labels={tabsWithIcons}\n onTabSelected={setProjectType}\n activeIndex={projectType}\n type={\"borderless\"}\n contentClassName='grid-holding-tab'\n >\n <LabeledInput\n displayStyle='inline'\n iconDisplayStyle='inline'\n className='search-input'\n label='Search'\n value={searchInput}\n onChange={(event) => {\n const {\n target: { value },\n } = event;\n setSearchInput(value);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n startSearch();\n }\n if (event.key === \"Escape\") {\n setSearchInput(\"\");\n setActiveSearchInput(\"\");\n }\n }}\n svgIcon={\n <IconButton onClick={() => startSearch()} styleType='borderless'>\n <SvgSearch />\n </IconButton>\n }\n />\n <div className='project-grid'>\n <ProjectGrid\n onThumbnailClick={onSelect}\n accessToken={accessToken}\n apiOverrides={apiOverrides}\n filterOptions={activeSearchInput}\n requestType={\n projectType === 0\n ? \"favorites\"\n : projectType === 1\n ? \"recents\"\n : \"\"\n }\n />\n </div>\n <div className='select-project-action-panel'>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </HorizontalTabs>\n </div>\n );\n};\n\nexport default SelectProject;\n"]}
1
+ {"version":3,"file":"SelectProject.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectProject.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 ApiOverrides,\n ProjectFull,\n} from \"@itwin/imodel-browser-react\";\nimport {\n ProjectGrid,\n} from \"@itwin/imodel-browser-react\";\nimport {\n SvgCalendar,\n SvgList,\n SvgSearch,\n SvgStarHollow,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n HorizontalTabs,\n IconButton,\n LabeledInput,\n Tab,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useContext, useMemo, useState } from \"react\";\nimport { ApiContext } from \"./GroupingMapping\";\nimport \"./SelectProject.scss\";\n\nconst tabsWithIcons = [\n <Tab\n key='favorite'\n label='Favorite projects'\n startIcon={<SvgStarHollow />}\n />,\n <Tab key='recents' label='Recent projects' startIcon={<SvgCalendar />} />,\n <Tab key='all' label='My projects' startIcon={<SvgList />} />,\n];\ninterface SelectProjectProps {\n onSelect: (project: ProjectFull) => void;\n onCancel: () => void;\n}\nconst SelectProject = ({ onSelect, onCancel }: SelectProjectProps) => {\n const apiContext = useContext(ApiContext);\n const [projectType, setProjectType] = useState<number>(0);\n const [searchInput, setSearchInput] = useState<string>(\"\");\n const [activeSearchInput, setActiveSearchInput] = useState<string>(\"\");\n\n const startSearch = useCallback(() => {\n setActiveSearchInput(searchInput);\n }, [searchInput]);\n\n const apiOverrides = useMemo<ApiOverrides<ProjectFull[]>>(\n () => ({ serverEnvironmentPrefix: apiContext.prefix }),\n [apiContext.prefix],\n );\n\n return (\n <div className='select-project-grid-container'>\n <HorizontalTabs\n labels={tabsWithIcons}\n onTabSelected={setProjectType}\n activeIndex={projectType}\n type={\"borderless\"}\n contentClassName='grid-holding-tab'\n >\n <LabeledInput\n displayStyle='inline'\n iconDisplayStyle='inline'\n className='search-input'\n label='Search'\n value={searchInput}\n onChange={(event) => {\n const {\n target: { value },\n } = event;\n setSearchInput(value);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n startSearch();\n }\n if (event.key === \"Escape\") {\n setSearchInput(\"\");\n setActiveSearchInput(\"\");\n }\n }}\n svgIcon={\n <IconButton onClick={() => startSearch()} styleType='borderless'>\n <SvgSearch />\n </IconButton>\n }\n />\n <div className='project-grid'>\n <ProjectGrid\n onThumbnailClick={onSelect}\n accessToken={apiContext.accessToken}\n apiOverrides={apiOverrides}\n filterOptions={activeSearchInput}\n requestType={\n projectType === 0\n ? \"favorites\"\n : projectType === 1\n ? \"recents\"\n : \"\"\n }\n />\n </div>\n <div className='select-project-action-panel'>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </HorizontalTabs>\n </div>\n );\n};\n\nexport default SelectProject;\n"]}
@@ -138,7 +138,9 @@ const PropertyView = (props) => {
138
138
  React.useEffect(() => {
139
139
  if (props === null || props === void 0 ? void 0 : props.propertyRecord) {
140
140
  if (isPropertySelected) {
141
- setIsCheckboxLoading(true);
141
+ if (context.isRendering) {
142
+ setIsCheckboxLoading(true);
143
+ }
142
144
  _addNestedProperties(props.propertyRecord);
143
145
  }
144
146
  else {
@@ -150,6 +152,7 @@ const PropertyView = (props) => {
150
152
  _removeNestedProperties,
151
153
  isPropertySelected,
152
154
  props.propertyRecord,
155
+ context.isRendering,
153
156
  ]);
154
157
  React.useEffect(() => {
155
158
  if (!context.isRendering)
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyView.js","sourceRoot":"","sources":["../../../../../src/widget/components/property-grid/PropertyView.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 * as React from \"react\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport { ElementSeparator, Orientation } from \"@itwin/core-react\";\nimport { ActionButtonList } from \"@itwin/components-react\";\n\nimport \"./PropertyView.scss\";\nimport type { SharedRendererProps } from \"./PropertyRender\";\nimport { GroupQueryBuilderContext } from \"../GroupQueryBuilderContext\";\nimport { useCallback } from \"react\";\nimport { PropertyGridColumnStyleProvider } from \"@itwin/components-react/lib/cjs/components-react/properties/renderers/PropertyGridColumns\";\nimport { Checkbox } from \"@itwin/itwinui-react\";\nimport { CommonPropertyRenderer } from \"@itwin/components-react/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer\";\n\n/** Properties of [[PropertyView]] React component\n * @public\n */\nexport interface PropertyViewProps extends SharedRendererProps {\n /** Property label as a React element */\n labelElement: React.ReactNode;\n /** Property value as a React element */\n valueElement?: React.ReactNode;\n /** Render callback for property value. If specified, `valueElement` is ignored. */\n valueElementRenderer?: () => React.ReactNode;\n /** Multiplier of how much the property is indented to the right */\n indentation?: number;\n}\n\n/**\n * A React component that renders property as label/value pair\n * @public\n */\nexport const PropertyView = (props: PropertyViewProps) => {\n const context = React.useContext(GroupQueryBuilderContext);\n const [isCheckboxLoading, setIsCheckboxLoading] = React.useState(false);\n\n const _validatePropertySelection = () => {\n if (context.currentPropertyList.includes(props.propertyRecord)) {\n return true;\n }\n // Check if all subproperties are selected\n if (!_validateNestedPropertiesSelection(props.propertyRecord)) {\n return false;\n }\n return true;\n };\n\n const _validateNestedPropertiesSelection = (prop: PropertyRecord) => {\n switch (prop.value.valueFormat) {\n case PropertyValueFormat.Primitive:\n if (!context.currentPropertyList.includes(prop)) {\n return false;\n }\n break;\n case PropertyValueFormat.Array:\n if (prop.value.items.length === 0) {\n if (!context.currentPropertyList.includes(prop)) {\n return false;\n }\n }\n break;\n case PropertyValueFormat.Struct:\n for (const subPropName in prop.value.members) {\n if (\n Object.prototype.hasOwnProperty.call(\n prop.value.members,\n subPropName\n )\n ) {\n if (\n !_validateNestedPropertiesSelection(\n prop.value.members[subPropName]\n )\n ) {\n return false;\n }\n }\n }\n }\n return true;\n };\n\n const [isHovered, setIsHovered] = React.useState<boolean>(false);\n const [isPropertySelected, setIsPropertySelected] = React.useState<boolean>(\n _validatePropertySelection()\n );\n\n const _addSelectedProperty = useCallback(\n async (prop: PropertyRecord) => {\n // TODO: roof selected item/category value is an object but format is primitive(needs further exploration)\n if (\n !context.currentPropertyList.includes(prop) &&\n prop.value.valueFormat === PropertyValueFormat.Primitive\n ) {\n\n if (!(await context.queryBuilder.addProperty(prop))) {\n setIsCheckboxLoading(false);\n setIsPropertySelected(false);\n return;\n }\n context.setCurrentPropertyList(\n context.currentPropertyList.concat(prop)\n );\n context.setQuery(context.queryBuilder.buildQueryString());\n }\n },\n [context]\n );\n\n const _addNestedProperties = useCallback(\n (prop: PropertyRecord) => {\n switch (prop.value.valueFormat) {\n case PropertyValueFormat.Primitive:\n void _addSelectedProperty(prop);\n break;\n case PropertyValueFormat.Array:\n if (prop.value.items.length === 0) {\n void _addSelectedProperty(prop);\n }\n break;\n case PropertyValueFormat.Struct:\n for (const subPropName in prop.value.members) {\n if (\n Object.prototype.hasOwnProperty.call(\n prop.value.members,\n subPropName\n )\n ) {\n _addNestedProperties(prop.value.members[subPropName]);\n }\n }\n }\n },\n [_addSelectedProperty]\n );\n\n const _removeSelectedProperty = useCallback(\n async (prop: PropertyRecord): Promise<void> => {\n if (context.currentPropertyList.includes(prop)) {\n context.setCurrentPropertyList(\n context.currentPropertyList.filter((x: PropertyRecord) => x !== prop)\n );\n await context.queryBuilder.removeProperty(prop);\n context.setQuery(context.queryBuilder.buildQueryString());\n }\n },\n [context]\n );\n\n const _removeNestedProperties = useCallback(\n (prop: PropertyRecord) => {\n switch (prop.value.valueFormat) {\n case PropertyValueFormat.Primitive:\n void _removeSelectedProperty(prop);\n break;\n case PropertyValueFormat.Array:\n if (prop.value.items.length === 0) {\n void _removeSelectedProperty(prop);\n }\n break;\n case PropertyValueFormat.Struct:\n for (const subPropName in prop.value.members) {\n if (\n Object.prototype.hasOwnProperty.call(\n prop.value.members,\n subPropName\n )\n ) {\n _removeNestedProperties(prop.value.members[subPropName]);\n }\n }\n }\n },\n [_removeSelectedProperty]\n );\n\n React.useEffect(() => {\n if (props?.propertyRecord) {\n if (isPropertySelected) {\n setIsCheckboxLoading(true);\n _addNestedProperties(props.propertyRecord);\n } else {\n _removeNestedProperties(props.propertyRecord);\n }\n }\n }, [\n _addNestedProperties,\n _removeNestedProperties,\n isPropertySelected,\n props.propertyRecord,\n ]);\n\n React.useEffect(() => {\n if (!context.isRendering)\n setIsCheckboxLoading(false);\n }, [context.isRendering]);\n\n const _onPropertySelectionChanged = () => {\n setIsPropertySelected(!isPropertySelected);\n };\n\n const _onClick = () => {\n if (props.onClick) {\n props.onClick(props.propertyRecord, props.uniqueKey);\n }\n };\n\n const _onMouseEnter = () => {\n if (props.isHoverable) {\n setIsHovered(true);\n }\n };\n\n const _onMouseLeave = () => {\n if (props.isHoverable) {\n setIsHovered(false);\n }\n };\n\n const _onContextMenu = (e: React.MouseEvent) => {\n if (props.onContextMenu) {\n props.onContextMenu(props.propertyRecord, e);\n }\n if (props.onRightClick) {\n props.onRightClick(props.propertyRecord, props.uniqueKey);\n }\n e.preventDefault();\n return false;\n };\n\n const getClassName = (viewProps: PropertyViewProps) => {\n let propertyRecordClassName =\n viewProps.orientation === Orientation.Horizontal\n ? \"components-property-record--horizontal\"\n : \"components-property-record--vertical\";\n if (viewProps.isSelected) {\n propertyRecordClassName += \" components--selected\";\n }\n if (viewProps.onClick) {\n propertyRecordClassName += \" components--clickable\";\n }\n if (viewProps.isHoverable) {\n propertyRecordClassName += \" components--hoverable\";\n }\n return propertyRecordClassName;\n };\n\n const ratio = props.columnRatio ? props.columnRatio : 0.25;\n const needElementSeparator =\n props.orientation === Orientation.Horizontal &&\n !!props.onColumnRatioChanged;\n const needActionButtons = !!props.actionButtonRenderers;\n const columnsStyleProvider = new PropertyGridColumnStyleProvider(\n props.columnInfo\n );\n\n const offset = CommonPropertyRenderer.getLabelOffset(\n props.indentation,\n props.orientation,\n props.width,\n props.columnRatio,\n props.columnInfo?.minLabelWidth,\n );\n\n return (\n <div\n style={columnsStyleProvider.getStyle(\n props.orientation,\n needActionButtons,\n ratio,\n needElementSeparator\n )}\n className={getClassName(props)}\n onClick={_onClick}\n onContextMenu={_onContextMenu}\n onMouseEnter={_onMouseEnter}\n onMouseLeave={_onMouseLeave}\n role='presentation'\n >\n <div className='components-property-record-label'>\n {props.propertyRecord.value.valueFormat ===\n PropertyValueFormat.Primitive && (\n <Checkbox\n style={{ marginLeft: offset }}\n className='components-property-selection-checkbox'\n checked={isPropertySelected}\n onChange={_onPropertySelectionChanged}\n disabled={context.isLoading || context.isRendering || (props.propertyRecord.value.value === undefined)}\n isLoading={isCheckboxLoading}\n />\n )}\n {props.labelElement}\n </div>\n {needElementSeparator ? (\n <ElementSeparator\n movableArea={props.width}\n onRatioChanged={props.onColumnRatioChanged}\n ratio={ratio}\n orientation={props.orientation}\n isResizeHandleHovered={props.isResizeHandleHovered}\n onResizeHandleHoverChanged={props.onResizeHandleHoverChanged}\n isResizeHandleBeingDragged={props.isResizeHandleBeingDragged}\n onResizeHandleDragChanged={props.onResizeHandleDragChanged}\n />\n ) : undefined}\n {props.propertyRecord.value.valueFormat ===\n PropertyValueFormat.Primitive ? (\n <div className='components-property-record-value'>\n <span>\n {props.valueElementRenderer\n ? props.valueElementRenderer()\n : props.valueElement}\n </span>\n </div>\n ) : undefined}\n {props.actionButtonRenderers ? (\n <ActionButtonList\n orientation={props.orientation}\n property={props.propertyRecord}\n isPropertyHovered={isHovered}\n actionButtonRenderers={props.actionButtonRenderers}\n />\n ) : undefined}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"PropertyView.js","sourceRoot":"","sources":["../../../../../src/widget/components/property-grid/PropertyView.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 * as React from \"react\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport { ElementSeparator, Orientation } from \"@itwin/core-react\";\nimport { ActionButtonList } from \"@itwin/components-react\";\n\nimport \"./PropertyView.scss\";\nimport type { SharedRendererProps } from \"./PropertyRender\";\nimport { GroupQueryBuilderContext } from \"../GroupQueryBuilderContext\";\nimport { useCallback } from \"react\";\nimport { PropertyGridColumnStyleProvider } from \"@itwin/components-react/lib/cjs/components-react/properties/renderers/PropertyGridColumns\";\nimport { Checkbox } from \"@itwin/itwinui-react\";\nimport { CommonPropertyRenderer } from \"@itwin/components-react/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer\";\n\n/** Properties of [[PropertyView]] React component\n * @public\n */\nexport interface PropertyViewProps extends SharedRendererProps {\n /** Property label as a React element */\n labelElement: React.ReactNode;\n /** Property value as a React element */\n valueElement?: React.ReactNode;\n /** Render callback for property value. If specified, `valueElement` is ignored. */\n valueElementRenderer?: () => React.ReactNode;\n /** Multiplier of how much the property is indented to the right */\n indentation?: number;\n}\n\n/**\n * A React component that renders property as label/value pair\n * @public\n */\nexport const PropertyView = (props: PropertyViewProps) => {\n const context = React.useContext(GroupQueryBuilderContext);\n const [isCheckboxLoading, setIsCheckboxLoading] = React.useState(false);\n\n const _validatePropertySelection = () => {\n if (context.currentPropertyList.includes(props.propertyRecord)) {\n return true;\n }\n // Check if all subproperties are selected\n if (!_validateNestedPropertiesSelection(props.propertyRecord)) {\n return false;\n }\n return true;\n };\n\n const _validateNestedPropertiesSelection = (prop: PropertyRecord) => {\n switch (prop.value.valueFormat) {\n case PropertyValueFormat.Primitive:\n if (!context.currentPropertyList.includes(prop)) {\n return false;\n }\n break;\n case PropertyValueFormat.Array:\n if (prop.value.items.length === 0) {\n if (!context.currentPropertyList.includes(prop)) {\n return false;\n }\n }\n break;\n case PropertyValueFormat.Struct:\n for (const subPropName in prop.value.members) {\n if (\n Object.prototype.hasOwnProperty.call(\n prop.value.members,\n subPropName\n )\n ) {\n if (\n !_validateNestedPropertiesSelection(\n prop.value.members[subPropName]\n )\n ) {\n return false;\n }\n }\n }\n }\n return true;\n };\n\n const [isHovered, setIsHovered] = React.useState<boolean>(false);\n const [isPropertySelected, setIsPropertySelected] = React.useState<boolean>(\n _validatePropertySelection()\n );\n\n const _addSelectedProperty = useCallback(\n async (prop: PropertyRecord) => {\n // TODO: roof selected item/category value is an object but format is primitive(needs further exploration)\n if (\n !context.currentPropertyList.includes(prop) &&\n prop.value.valueFormat === PropertyValueFormat.Primitive\n ) {\n\n if (!(await context.queryBuilder.addProperty(prop))) {\n setIsCheckboxLoading(false);\n setIsPropertySelected(false);\n return;\n }\n context.setCurrentPropertyList(\n context.currentPropertyList.concat(prop)\n );\n context.setQuery(context.queryBuilder.buildQueryString());\n }\n },\n [context]\n );\n\n const _addNestedProperties = useCallback(\n (prop: PropertyRecord) => {\n switch (prop.value.valueFormat) {\n case PropertyValueFormat.Primitive:\n void _addSelectedProperty(prop);\n break;\n case PropertyValueFormat.Array:\n if (prop.value.items.length === 0) {\n void _addSelectedProperty(prop);\n }\n break;\n case PropertyValueFormat.Struct:\n for (const subPropName in prop.value.members) {\n if (\n Object.prototype.hasOwnProperty.call(\n prop.value.members,\n subPropName\n )\n ) {\n _addNestedProperties(prop.value.members[subPropName]);\n }\n }\n }\n },\n [_addSelectedProperty]\n );\n\n const _removeSelectedProperty = useCallback(\n async (prop: PropertyRecord): Promise<void> => {\n if (context.currentPropertyList.includes(prop)) {\n context.setCurrentPropertyList(\n context.currentPropertyList.filter((x: PropertyRecord) => x !== prop)\n );\n await context.queryBuilder.removeProperty(prop);\n context.setQuery(context.queryBuilder.buildQueryString());\n }\n },\n [context]\n );\n\n const _removeNestedProperties = useCallback(\n (prop: PropertyRecord) => {\n switch (prop.value.valueFormat) {\n case PropertyValueFormat.Primitive:\n void _removeSelectedProperty(prop);\n break;\n case PropertyValueFormat.Array:\n if (prop.value.items.length === 0) {\n void _removeSelectedProperty(prop);\n }\n break;\n case PropertyValueFormat.Struct:\n for (const subPropName in prop.value.members) {\n if (\n Object.prototype.hasOwnProperty.call(\n prop.value.members,\n subPropName\n )\n ) {\n _removeNestedProperties(prop.value.members[subPropName]);\n }\n }\n }\n },\n [_removeSelectedProperty]\n );\n\n React.useEffect(() => {\n if (props?.propertyRecord) {\n if (isPropertySelected) {\n if (context.isRendering) {\n setIsCheckboxLoading(true);\n }\n _addNestedProperties(props.propertyRecord);\n } else {\n _removeNestedProperties(props.propertyRecord);\n }\n }\n }, [\n _addNestedProperties,\n _removeNestedProperties,\n isPropertySelected,\n props.propertyRecord,\n context.isRendering,\n ]);\n\n React.useEffect(() => {\n if (!context.isRendering)\n setIsCheckboxLoading(false);\n }, [context.isRendering]);\n\n const _onPropertySelectionChanged = () => {\n setIsPropertySelected(!isPropertySelected);\n };\n\n const _onClick = () => {\n if (props.onClick) {\n props.onClick(props.propertyRecord, props.uniqueKey);\n }\n };\n\n const _onMouseEnter = () => {\n if (props.isHoverable) {\n setIsHovered(true);\n }\n };\n\n const _onMouseLeave = () => {\n if (props.isHoverable) {\n setIsHovered(false);\n }\n };\n\n const _onContextMenu = (e: React.MouseEvent) => {\n if (props.onContextMenu) {\n props.onContextMenu(props.propertyRecord, e);\n }\n if (props.onRightClick) {\n props.onRightClick(props.propertyRecord, props.uniqueKey);\n }\n e.preventDefault();\n return false;\n };\n\n const getClassName = (viewProps: PropertyViewProps) => {\n let propertyRecordClassName =\n viewProps.orientation === Orientation.Horizontal\n ? \"components-property-record--horizontal\"\n : \"components-property-record--vertical\";\n if (viewProps.isSelected) {\n propertyRecordClassName += \" components--selected\";\n }\n if (viewProps.onClick) {\n propertyRecordClassName += \" components--clickable\";\n }\n if (viewProps.isHoverable) {\n propertyRecordClassName += \" components--hoverable\";\n }\n return propertyRecordClassName;\n };\n\n const ratio = props.columnRatio ? props.columnRatio : 0.25;\n const needElementSeparator =\n props.orientation === Orientation.Horizontal &&\n !!props.onColumnRatioChanged;\n const needActionButtons = !!props.actionButtonRenderers;\n const columnsStyleProvider = new PropertyGridColumnStyleProvider(\n props.columnInfo\n );\n\n const offset = CommonPropertyRenderer.getLabelOffset(\n props.indentation,\n props.orientation,\n props.width,\n props.columnRatio,\n props.columnInfo?.minLabelWidth,\n );\n\n return (\n <div\n style={columnsStyleProvider.getStyle(\n props.orientation,\n needActionButtons,\n ratio,\n needElementSeparator\n )}\n className={getClassName(props)}\n onClick={_onClick}\n onContextMenu={_onContextMenu}\n onMouseEnter={_onMouseEnter}\n onMouseLeave={_onMouseLeave}\n role='presentation'\n >\n <div className='components-property-record-label'>\n {props.propertyRecord.value.valueFormat ===\n PropertyValueFormat.Primitive && (\n <Checkbox\n style={{ marginLeft: offset }}\n className='components-property-selection-checkbox'\n checked={isPropertySelected}\n onChange={_onPropertySelectionChanged}\n disabled={context.isLoading || context.isRendering || (props.propertyRecord.value.value === undefined)}\n isLoading={isCheckboxLoading}\n />\n )}\n {props.labelElement}\n </div>\n {needElementSeparator ? (\n <ElementSeparator\n movableArea={props.width}\n onRatioChanged={props.onColumnRatioChanged}\n ratio={ratio}\n orientation={props.orientation}\n isResizeHandleHovered={props.isResizeHandleHovered}\n onResizeHandleHoverChanged={props.onResizeHandleHoverChanged}\n isResizeHandleBeingDragged={props.isResizeHandleBeingDragged}\n onResizeHandleDragChanged={props.onResizeHandleDragChanged}\n />\n ) : undefined}\n {props.propertyRecord.value.valueFormat ===\n PropertyValueFormat.Primitive ? (\n <div className='components-property-record-value'>\n <span>\n {props.valueElementRenderer\n ? props.valueElementRenderer()\n : props.valueElement}\n </span>\n </div>\n ) : undefined}\n {props.actionButtonRenderers ? (\n <ActionButtonList\n orientation={props.orientation}\n property={props.propertyRecord}\n isPropertyHovered={isHovered}\n actionButtonRenderers={props.actionButtonRenderers}\n />\n ) : undefined}\n </div>\n );\n};\n"]}
@@ -1,7 +1,11 @@
1
1
  import type { AbstractWidgetProps, UiItemsProvider } from "@itwin/appui-abstract";
2
2
  import { AbstractZoneLocation, StagePanelLocation, StagePanelSection } from "@itwin/appui-abstract";
3
+ import type { AccessToken } from "@itwin/core-bentley";
3
4
  export declare class GroupingMappingProvider implements UiItemsProvider {
4
5
  readonly id = "GroupingMappingProvider";
6
+ private readonly _accessToken?;
7
+ private readonly _prefix?;
8
+ constructor(accessToken?: AccessToken, prefix?: "" | "dev" | "qa");
5
9
  provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, zonelocation?: AbstractZoneLocation): ReadonlyArray<AbstractWidgetProps>;
6
10
  }
7
11
  //# sourceMappingURL=GroupingMappingWidget.d.ts.map
@@ -1,9 +1,11 @@
1
1
  import { AbstractZoneLocation, StagePanelLocation, StagePanelSection, StageUsage, } from "@itwin/appui-abstract";
2
- import * as React from "react";
2
+ import React from "react";
3
3
  import GroupingMapping from "./components/GroupingMapping";
4
4
  export class GroupingMappingProvider {
5
- constructor() {
5
+ constructor(accessToken, prefix) {
6
6
  this.id = "GroupingMappingProvider";
7
+ this._accessToken = accessToken;
8
+ this._prefix = prefix;
7
9
  }
8
10
  provideWidgets(_stageId, stageUsage, location, section, zonelocation) {
9
11
  const widgets = [];
@@ -14,8 +16,8 @@ export class GroupingMappingProvider {
14
16
  const GroupingMappingWidget = {
15
17
  id: "GroupingMappingWidget",
16
18
  label: "Grouping & Mapping",
17
- getWidgetContent() {
18
- return React.createElement(GroupingMapping, null);
19
+ getWidgetContent: () => {
20
+ return React.createElement(GroupingMapping, { accessToken: this._accessToken, prefix: this._prefix });
19
21
  },
20
22
  };
21
23
  widgets.push(GroupingMappingWidget);
@@ -1 +1 @@
1
- {"version":3,"file":"GroupingMappingWidget.js","sourceRoot":"","sources":["../../../src/widget/GroupingMappingWidget.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAE3D,MAAM,OAAO,uBAAuB;IAApC;QACkB,OAAE,GAAG,yBAAyB,CAAC;IA6BjD,CAAC;IA3BQ,cAAc,CACnB,QAAgB,EAChB,UAAkB,EAClB,QAA4B,EAC5B,OAA2B,EAC3B,YAAmC;QAEnC,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,IACE,CAAC,QAAQ,KAAK,kBAAkB,CAAC,IAAI;YACrC,OAAO,KAAK,iBAAiB,CAAC,KAAK;YACnC,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC;YAClC,YAAY,KAAK,oBAAoB,CAAC,UAAU,EAChD;YACA,MAAM,qBAAqB,GAAwB;gBACjD,EAAE,EAAE,uBAAuB;gBAC3B,KAAK,EAAE,oBAAoB;gBAC3B,gBAAgB;oBACd,OAAO,oBAAC,eAAe,OAAG,CAAC;gBAC7B,CAAC;aACF,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACrC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","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 AbstractWidgetProps,\n UiItemsProvider} from \"@itwin/appui-abstract\";\nimport {\n AbstractZoneLocation,\n StagePanelLocation,\n StagePanelSection,\n StageUsage,\n} from \"@itwin/appui-abstract\";\n\nimport * as React from \"react\";\nimport GroupingMapping from \"./components/GroupingMapping\";\n\nexport class GroupingMappingProvider implements UiItemsProvider {\n public readonly id = \"GroupingMappingProvider\";\n\n public provideWidgets(\n _stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n section?: StagePanelSection,\n zonelocation?: AbstractZoneLocation\n ): ReadonlyArray<AbstractWidgetProps> {\n const widgets: AbstractWidgetProps[] = [];\n if (\n (location === StagePanelLocation.Left &&\n section === StagePanelSection.Start &&\n stageUsage === StageUsage.General) ||\n zonelocation === AbstractZoneLocation.CenterLeft\n ) {\n const GroupingMappingWidget: AbstractWidgetProps = {\n id: \"GroupingMappingWidget\",\n label: \"Grouping & Mapping\",\n getWidgetContent() {\n return <GroupingMapping />;\n },\n };\n\n widgets.push(GroupingMappingWidget);\n }\n\n return widgets;\n }\n}\n"]}
1
+ {"version":3,"file":"GroupingMappingWidget.js","sourceRoot":"","sources":["../../../src/widget/GroupingMappingWidget.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAE3D,MAAM,OAAO,uBAAuB;IAMlC,YAAY,WAAyB,EAAE,MAA0B;QALjD,OAAE,GAAG,yBAAyB,CAAC;QAM7C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEM,cAAc,CACnB,QAAgB,EAChB,UAAkB,EAClB,QAA4B,EAC5B,OAA2B,EAC3B,YAAmC;QAEnC,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,IACE,CAAC,QAAQ,KAAK,kBAAkB,CAAC,IAAI;YACnC,OAAO,KAAK,iBAAiB,CAAC,KAAK;YACnC,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC;YACpC,YAAY,KAAK,oBAAoB,CAAC,UAAU,EAChD;YACA,MAAM,qBAAqB,GAAwB;gBACjD,EAAE,EAAE,uBAAuB;gBAC3B,KAAK,EAAE,oBAAoB;gBAC3B,gBAAgB,EAAE,GAAG,EAAE;oBACrB,OAAO,oBAAC,eAAe,IAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,GAAI,CAAC;gBACnF,CAAC;aACF,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACrC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","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 AbstractWidgetProps,\n UiItemsProvider,\n} from \"@itwin/appui-abstract\";\nimport {\n AbstractZoneLocation,\n StagePanelLocation,\n StagePanelSection,\n StageUsage,\n} from \"@itwin/appui-abstract\";\nimport type { AccessToken } from \"@itwin/core-bentley\";\nimport React from \"react\";\nimport GroupingMapping from \"./components/GroupingMapping\";\n\nexport class GroupingMappingProvider implements UiItemsProvider {\n public readonly id = \"GroupingMappingProvider\";\n\n private readonly _accessToken?: AccessToken;\n private readonly _prefix?: \"\" | \"dev\" | \"qa\";\n\n constructor(accessToken?: AccessToken, prefix?: \"\" | \"dev\" | \"qa\") {\n this._accessToken = accessToken;\n this._prefix = prefix;\n }\n\n public provideWidgets(\n _stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n section?: StagePanelSection,\n zonelocation?: AbstractZoneLocation\n ): ReadonlyArray<AbstractWidgetProps> {\n const widgets: AbstractWidgetProps[] = [];\n if (\n (location === StagePanelLocation.Left &&\n section === StagePanelSection.Start &&\n stageUsage === StageUsage.General) ||\n zonelocation === AbstractZoneLocation.CenterLeft\n ) {\n const GroupingMappingWidget: AbstractWidgetProps = {\n id: \"GroupingMappingWidget\",\n label: \"Grouping & Mapping\",\n getWidgetContent: () => {\n return <GroupingMapping accessToken={this._accessToken} prefix={this._prefix} />;\n },\n };\n\n widgets.push(GroupingMappingWidget);\n }\n\n return widgets;\n }\n}\n"]}
@@ -3,9 +3,10 @@ import "./ActionPanel.scss";
3
3
  export interface ActionPanelProps {
4
4
  onSave: () => void;
5
5
  onCancel: () => void;
6
- disabled?: boolean;
6
+ isCancelDisabled?: boolean;
7
+ isSavingDisabled?: boolean;
7
8
  isLoading?: boolean;
8
9
  }
9
- declare const ActionPanel: ({ onSave, onCancel, disabled, isLoading, }: ActionPanelProps) => JSX.Element;
10
+ declare const ActionPanel: ({ onSave, onCancel, isCancelDisabled, isSavingDisabled, isLoading, }: ActionPanelProps) => JSX.Element;
10
11
  export default ActionPanel;
11
12
  //# sourceMappingURL=ActionPanel.d.ts.map
@@ -6,13 +6,13 @@ import { Button } from "@itwin/itwinui-react";
6
6
  import * as React from "react";
7
7
  import "./ActionPanel.scss";
8
8
  import { LoadingSpinner } from "./utils";
9
- const ActionPanel = ({ onSave, onCancel, disabled = false, isLoading = false, }) => {
9
+ const ActionPanel = ({ onSave, onCancel, isCancelDisabled = false, isSavingDisabled = false, isLoading = false, }) => {
10
10
  return (React.createElement("div", { id: 'action', className: 'action-panel-container' },
11
11
  React.createElement("div", { className: 'action-panel' },
12
12
  isLoading &&
13
13
  React.createElement(LoadingSpinner, null),
14
- React.createElement(Button, { disabled: disabled || isLoading, styleType: 'high-visibility', id: 'save-app', onClick: onSave }, "Save"),
15
- React.createElement(Button, { styleType: 'default', type: 'button', id: 'cancel', onClick: onCancel, disabled: disabled || isLoading }, "Cancel"))));
14
+ React.createElement(Button, { disabled: isSavingDisabled || isLoading, styleType: 'high-visibility', id: 'save-app', onClick: onSave }, "Save"),
15
+ React.createElement(Button, { styleType: 'default', type: 'button', id: 'cancel', onClick: onCancel, disabled: isCancelDisabled || isLoading }, "Cancel"))));
16
16
  };
17
17
  export default ActionPanel;
18
18
  //# sourceMappingURL=ActionPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../src/widget/components/ActionPanel.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AASzC,MAAM,WAAW,GAAG,CAAC,EACnB,MAAM,EACN,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,GACA,EAAe,EAAE;IAClC,OAAO,CACL,6BAAK,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAC,wBAAwB;QACjD,6BAAK,SAAS,EAAC,cAAc;YAC1B,SAAS;gBACR,oBAAC,cAAc,OAAG;YAEpB,oBAAC,MAAM,IACL,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,SAAS,EAAC,iBAAiB,EAC3B,EAAE,EAAC,UAAU,EACb,OAAO,EAAE,MAAM,WAGR;YACT,oBAAC,MAAM,IACL,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,QAAQ,EACX,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,QAAQ,IAAI,SAAS,aAGxB,CACL,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,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 { Button } from \"@itwin/itwinui-react\";\nimport * as React from \"react\";\nimport \"./ActionPanel.scss\";\nimport { LoadingSpinner } from \"./utils\";\n\nexport interface ActionPanelProps {\n onSave: () => void;\n onCancel: () => void;\n disabled?: boolean;\n isLoading?: boolean;\n}\n\nconst ActionPanel = ({\n onSave,\n onCancel,\n disabled = false,\n isLoading = false,\n}: ActionPanelProps): JSX.Element => {\n return (\n <div id='action' className='action-panel-container'>\n <div className='action-panel'>\n {isLoading &&\n <LoadingSpinner />\n }\n <Button\n disabled={disabled || isLoading}\n styleType='high-visibility'\n id='save-app'\n onClick={onSave}\n >\n Save\n </Button>\n <Button\n styleType='default'\n type='button'\n id='cancel'\n onClick={onCancel}\n disabled={disabled || isLoading}\n >\n Cancel\n </Button>\n </div>\n </div>\n );\n};\n\nexport default ActionPanel;\n"]}
1
+ {"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../src/widget/components/ActionPanel.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAUzC,MAAM,WAAW,GAAG,CAAC,EACnB,MAAM,EACN,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,KAAK,EACxB,SAAS,GAAG,KAAK,GACA,EAAe,EAAE;IAClC,OAAO,CACL,6BAAK,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAC,wBAAwB;QACjD,6BAAK,SAAS,EAAC,cAAc;YAC1B,SAAS;gBACR,oBAAC,cAAc,OAAG;YAEpB,oBAAC,MAAM,IACL,QAAQ,EAAE,gBAAgB,IAAI,SAAS,EACvC,SAAS,EAAC,iBAAiB,EAC3B,EAAE,EAAC,UAAU,EACb,OAAO,EAAE,MAAM,WAGR;YACT,oBAAC,MAAM,IACL,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,QAAQ,EACX,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,gBAAgB,IAAI,SAAS,aAGhC,CACL,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,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 { Button } from \"@itwin/itwinui-react\";\nimport * as React from \"react\";\nimport \"./ActionPanel.scss\";\nimport { LoadingSpinner } from \"./utils\";\n\nexport interface ActionPanelProps {\n onSave: () => void;\n onCancel: () => void;\n isCancelDisabled?: boolean;\n isSavingDisabled?: boolean;\n isLoading?: boolean;\n}\n\nconst ActionPanel = ({\n onSave,\n onCancel,\n isCancelDisabled = false,\n isSavingDisabled = false,\n isLoading = false,\n}: ActionPanelProps): JSX.Element => {\n return (\n <div id='action' className='action-panel-container'>\n <div className='action-panel'>\n {isLoading &&\n <LoadingSpinner />\n }\n <Button\n disabled={isSavingDisabled || isLoading}\n styleType='high-visibility'\n id='save-app'\n onClick={onSave}\n >\n Save\n </Button>\n <Button\n styleType='default'\n type='button'\n id='cancel'\n onClick={onCancel}\n disabled={isCancelDisabled || isLoading}\n >\n Cancel\n </Button>\n </div>\n </div>\n );\n};\n\nexport default ActionPanel;\n"]}
@@ -1,11 +1,11 @@
1
1
  /// <reference types="react" />
2
2
  import "./CalculatedPropertyAction.scss";
3
- import type { CalculatedProperty } from "./CalculatedPropertyTable";
3
+ import type { CalculatedPropertyType } from "./CalculatedPropertyTable";
4
4
  interface CalculatedPropertyActionProps {
5
5
  iModelId: string;
6
6
  mappingId: string;
7
7
  groupId: string;
8
- property?: CalculatedProperty;
8
+ property?: CalculatedPropertyType;
9
9
  ids: string[];
10
10
  returnFn: () => Promise<void>;
11
11
  }
@@ -4,16 +4,18 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { IModelApp } from "@itwin/core-frontend";
6
6
  import { Fieldset, LabeledInput, LabeledSelect, MenuItem, Small, } from "@itwin/itwinui-react";
7
- import React, { useEffect, useState } from "react";
8
- import { reportingClientApi } from "../../api/reportingClient";
7
+ import React, { useContext, useEffect, useState } from "react";
9
8
  import ActionPanel from "./ActionPanel";
10
9
  import { BboxDimension, BboxDimensionsDecorator, } from "../../decorators/BboxDimensionsDecorator";
11
10
  import useValidator, { NAME_REQUIREMENTS } from "../hooks/useValidator";
12
11
  import { handleError, WidgetHeader } from "./utils";
13
12
  import { visualizeElements, zoomToElements } from "./viewerUtils";
14
13
  import "./CalculatedPropertyAction.scss";
14
+ import { ReportingClient } from "@itwin/insights-client";
15
+ import { ApiContext } from "./GroupingMapping";
15
16
  const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids, returnFn, }) => {
16
17
  var _a, _b, _c;
18
+ const apiContext = useContext(ApiContext);
17
19
  const [propertyName, setPropertyName] = useState((_a = property === null || property === void 0 ? void 0 : property.propertyName) !== null && _a !== void 0 ? _a : "");
18
20
  const [type, setType] = useState((_b = property === null || property === void 0 ? void 0 : property.type) !== null && _b !== void 0 ? _b : "");
19
21
  const [bboxDecorator, setBboxDecorator] = useState();
@@ -62,13 +64,16 @@ const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids,
62
64
  }
63
65
  try {
64
66
  setIsLoading(true);
65
- const calculatedProperty = {
66
- propertyName,
67
- type,
68
- };
67
+ const reportingClientApi = new ReportingClient(apiContext.prefix);
69
68
  property
70
- ? await reportingClientApi.updateCalculatedProperty(iModelId, mappingId, groupId, (_a = property.id) !== null && _a !== void 0 ? _a : "", calculatedProperty)
71
- : await reportingClientApi.createCalculatedProperty(iModelId, mappingId, groupId, calculatedProperty);
69
+ ? await reportingClientApi.updateCalculatedProperty(apiContext.accessToken, iModelId, mappingId, groupId, (_a = property.id) !== null && _a !== void 0 ? _a : "", {
70
+ propertyName,
71
+ type,
72
+ })
73
+ : await reportingClientApi.createCalculatedProperty(apiContext.accessToken, iModelId, mappingId, groupId, {
74
+ propertyName,
75
+ type,
76
+ });
72
77
  await returnFn();
73
78
  }
74
79
  catch (error) {
@@ -131,12 +136,12 @@ const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids,
131
136
  label: "Shortest Face Diagonal Length",
132
137
  },
133
138
  ], value: type, onChange: setType, itemRenderer: (option) => (React.createElement(MenuItem, null,
134
- React.createElement("div", { className: 'menu-item' },
139
+ React.createElement("div", { className: 'gr-cp-menu-item' },
135
140
  React.createElement("div", null, option.label),
136
141
  getSpatialData(option.value)))), selectedItemRenderer: (option) => (React.createElement("div", { className: 'select-item' },
137
142
  React.createElement("div", null, option.label),
138
143
  getSpatialData(option.value))), onShow: () => { }, onHide: () => { } }))),
139
- React.createElement(ActionPanel, { onSave: onSave, onCancel: returnFn, disabled: !(type && propertyName), isLoading: isLoading })));
144
+ React.createElement(ActionPanel, { onSave: onSave, onCancel: returnFn, isSavingDisabled: !(type && propertyName), isLoading: isLoading })));
140
145
  };
141
146
  export default CalculatedPropertyAction;
142
147
  //# sourceMappingURL=CalculatedPropertyAction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalculatedPropertyAction.js","sourceRoot":"","sources":["../../../../src/widget/components/CalculatedPropertyAction.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 { IModelApp } from \"@itwin/core-frontend\";\nimport type {\n SelectOption,\n} from \"@itwin/itwinui-react\";\nimport {\n Fieldset,\n LabeledInput,\n LabeledSelect,\n MenuItem,\n Small,\n} from \"@itwin/itwinui-react\";\nimport React, { useEffect, useState } from \"react\";\nimport type { CalculatedPropertyCreateReportingAPI } from \"../../api/generated/api\";\nimport { reportingClientApi } from \"../../api/reportingClient\";\nimport ActionPanel from \"./ActionPanel\";\nimport {\n BboxDimension,\n BboxDimensionsDecorator,\n} from \"../../decorators/BboxDimensionsDecorator\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, WidgetHeader } from \"./utils\";\nimport { visualizeElements, zoomToElements } from \"./viewerUtils\";\nimport \"./CalculatedPropertyAction.scss\";\nimport type { CalculatedProperty } from \"./CalculatedPropertyTable\";\n\ninterface CalculatedPropertyActionProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n property?: CalculatedProperty;\n ids: string[];\n returnFn: () => Promise<void>;\n}\n\nconst CalculatedPropertyAction = ({\n iModelId,\n mappingId,\n groupId,\n property,\n ids,\n returnFn,\n}: CalculatedPropertyActionProps) => {\n const [propertyName, setPropertyName] = useState<string>(\n property?.propertyName ?? \"\",\n );\n const [type, setType] = useState<string>(property?.type ?? \"\");\n const [bboxDecorator, setBboxDecorator] = useState<\n BboxDimensionsDecorator | undefined\n >();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [inferredSpatialData, setInferredSpatialData] = useState<\n Map<BboxDimension, number> | undefined\n >();\n const [validator, showValidationMessage] = useValidator();\n\n useEffect(() => {\n const decorator = new BboxDimensionsDecorator();\n IModelApp.viewManager.addDecorator(decorator);\n setBboxDecorator(decorator);\n return () => {\n IModelApp.viewManager.dropDecorator(decorator);\n };\n }, []);\n\n useEffect(() => {\n if (ids.length === 0) {\n return;\n }\n visualizeElements([ids[0]], \"red\");\n void zoomToElements([ids[0]]);\n }, [ids]);\n\n useEffect(() => {\n if (ids.length === 0) {\n return;\n }\n const setContext = async () => {\n if (bboxDecorator) {\n await bboxDecorator.setContext(ids[0]);\n setInferredSpatialData(bboxDecorator.getInferredSpatialData());\n }\n };\n void setContext();\n }, [bboxDecorator, ids]);\n\n useEffect(() => {\n if (bboxDecorator && type && inferredSpatialData) {\n inferredSpatialData.has(BboxDimension[type as keyof typeof BboxDimension])\n ? bboxDecorator.drawContext(\n BboxDimension[type as keyof typeof BboxDimension],\n )\n : bboxDecorator.clearContext();\n }\n }, [bboxDecorator, inferredSpatialData, type]);\n\n const onSave = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n try {\n setIsLoading(true);\n\n const calculatedProperty: CalculatedPropertyCreateReportingAPI = {\n propertyName,\n type,\n };\n\n property\n ? await reportingClientApi.updateCalculatedProperty(\n iModelId,\n mappingId,\n groupId,\n property.id ?? \"\",\n calculatedProperty,\n )\n : await reportingClientApi.createCalculatedProperty(\n iModelId,\n mappingId,\n groupId,\n calculatedProperty,\n );\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n const getSpatialData = (value: string) =>\n inferredSpatialData?.has(\n BboxDimension[value as keyof typeof BboxDimension],\n ) && (\n <div>\n {`${inferredSpatialData\n ?.get(BboxDimension[value as keyof typeof BboxDimension])\n ?.toPrecision(4)}m`}\n </div>\n );\n\n return (\n <>\n <WidgetHeader\n title={\n property\n ? `${property?.propertyName ?? \"\"}`\n : \"Create Calculated Property\"\n }\n returnFn={returnFn}\n />\n <div className='calculated-properties-action-container'>\n <Fieldset legend='Calculated Property Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n value={propertyName}\n required\n name='name'\n label='Name'\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", propertyName, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", propertyName, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledSelect<string>\n label='Quantity Type'\n required\n options={[\n { value: \"Length\", label: \"Length\" },\n { value: \"Area\", label: \"Area\" },\n { value: \"Volume\", label: \"Volume\" },\n {\n value: \"BoundingBoxLongestEdgeLength\",\n label: \"Longest Edge Length\",\n },\n {\n value: \"BoundingBoxIntermediateEdgeLength\",\n label: \"Intermediate Edge Length\",\n },\n {\n value: \"BoundingBoxShortestEdgeLength\",\n label: \"Shortest Edge Length\",\n },\n {\n value: \"BoundingBoxDiagonalLength\",\n label: \"Diagonal Length\",\n },\n {\n value: \"BoundingBoxLongestFaceDiagonalLength\",\n label: \"Longest Face Diagonal Length\",\n },\n {\n value: \"BoundingBoxIntermediateFaceDiagonalLength\",\n label: \"Intermediate Face Diagonal Length\",\n },\n {\n value: \"BoundingBoxShortestFaceDiagonalLength\",\n label: \"Shortest Face Diagonal Length\",\n },\n ]}\n value={type}\n onChange={setType}\n itemRenderer={(option: SelectOption<string>) => (\n <MenuItem>\n <div className='menu-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n </MenuItem>\n )}\n selectedItemRenderer={(option: SelectOption<string>) => (\n <div className='select-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n )}\n onShow={() => { }}\n onHide={() => { }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n disabled={!(type && propertyName)}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default CalculatedPropertyAction;\n"]}
1
+ {"version":3,"file":"CalculatedPropertyAction.js","sourceRoot":"","sources":["../../../../src/widget/components/CalculatedPropertyAction.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 { IModelApp } from \"@itwin/core-frontend\";\nimport type {\n SelectOption,\n} from \"@itwin/itwinui-react\";\nimport {\n Fieldset,\n LabeledInput,\n LabeledSelect,\n MenuItem,\n Small,\n} from \"@itwin/itwinui-react\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport {\n BboxDimension,\n BboxDimensionsDecorator,\n} from \"../../decorators/BboxDimensionsDecorator\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, WidgetHeader } from \"./utils\";\nimport { visualizeElements, zoomToElements } from \"./viewerUtils\";\nimport \"./CalculatedPropertyAction.scss\";\nimport type { CalculatedPropertyType } from \"./CalculatedPropertyTable\";\nimport { ReportingClient } from \"@itwin/insights-client\";\nimport { ApiContext } from \"./GroupingMapping\";\n\ninterface CalculatedPropertyActionProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n property?: CalculatedPropertyType;\n ids: string[];\n returnFn: () => Promise<void>;\n}\n\nconst CalculatedPropertyAction = ({\n iModelId,\n mappingId,\n groupId,\n property,\n ids,\n returnFn,\n}: CalculatedPropertyActionProps) => {\n const apiContext = useContext(ApiContext);\n const [propertyName, setPropertyName] = useState<string>(\n property?.propertyName ?? \"\",\n );\n const [type, setType] = useState<string>(property?.type ?? \"\");\n const [bboxDecorator, setBboxDecorator] = useState<\n BboxDimensionsDecorator | undefined\n >();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [inferredSpatialData, setInferredSpatialData] = useState<\n Map<BboxDimension, number> | undefined\n >();\n const [validator, showValidationMessage] = useValidator();\n\n useEffect(() => {\n const decorator = new BboxDimensionsDecorator();\n IModelApp.viewManager.addDecorator(decorator);\n setBboxDecorator(decorator);\n return () => {\n IModelApp.viewManager.dropDecorator(decorator);\n };\n }, []);\n\n useEffect(() => {\n if (ids.length === 0) {\n return;\n }\n visualizeElements([ids[0]], \"red\");\n void zoomToElements([ids[0]]);\n }, [ids]);\n\n useEffect(() => {\n if (ids.length === 0) {\n return;\n }\n const setContext = async () => {\n if (bboxDecorator) {\n await bboxDecorator.setContext(ids[0]);\n setInferredSpatialData(bboxDecorator.getInferredSpatialData());\n }\n };\n void setContext();\n }, [bboxDecorator, ids]);\n\n useEffect(() => {\n if (bboxDecorator && type && inferredSpatialData) {\n inferredSpatialData.has(BboxDimension[type as keyof typeof BboxDimension])\n ? bboxDecorator.drawContext(\n BboxDimension[type as keyof typeof BboxDimension],\n )\n : bboxDecorator.clearContext();\n }\n }, [bboxDecorator, inferredSpatialData, type]);\n\n const onSave = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n try {\n setIsLoading(true);\n\n const reportingClientApi = new ReportingClient(apiContext.prefix);\n\n property\n ? await reportingClientApi.updateCalculatedProperty(\n apiContext.accessToken,\n iModelId,\n mappingId,\n groupId,\n property.id ?? \"\",\n {\n propertyName,\n type,\n },\n )\n : await reportingClientApi.createCalculatedProperty(\n apiContext.accessToken,\n iModelId,\n mappingId,\n groupId,\n {\n propertyName,\n type,\n },\n );\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n const getSpatialData = (value: string) =>\n inferredSpatialData?.has(\n BboxDimension[value as keyof typeof BboxDimension],\n ) && (\n <div>\n {`${inferredSpatialData\n ?.get(BboxDimension[value as keyof typeof BboxDimension])\n ?.toPrecision(4)}m`}\n </div>\n );\n\n return (\n <>\n <WidgetHeader\n title={\n property\n ? `${property?.propertyName ?? \"\"}`\n : \"Create Calculated Property\"\n }\n returnFn={returnFn}\n />\n <div className='calculated-properties-action-container'>\n <Fieldset legend='Calculated Property Details' className='details-form'>\n <Small className='field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n value={propertyName}\n required\n name='name'\n label='Name'\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", propertyName, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", propertyName, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledSelect<string>\n label='Quantity Type'\n required\n options={[\n { value: \"Length\", label: \"Length\" },\n { value: \"Area\", label: \"Area\" },\n { value: \"Volume\", label: \"Volume\" },\n {\n value: \"BoundingBoxLongestEdgeLength\",\n label: \"Longest Edge Length\",\n },\n {\n value: \"BoundingBoxIntermediateEdgeLength\",\n label: \"Intermediate Edge Length\",\n },\n {\n value: \"BoundingBoxShortestEdgeLength\",\n label: \"Shortest Edge Length\",\n },\n {\n value: \"BoundingBoxDiagonalLength\",\n label: \"Diagonal Length\",\n },\n {\n value: \"BoundingBoxLongestFaceDiagonalLength\",\n label: \"Longest Face Diagonal Length\",\n },\n {\n value: \"BoundingBoxIntermediateFaceDiagonalLength\",\n label: \"Intermediate Face Diagonal Length\",\n },\n {\n value: \"BoundingBoxShortestFaceDiagonalLength\",\n label: \"Shortest Face Diagonal Length\",\n },\n ]}\n value={type}\n onChange={setType}\n itemRenderer={(option: SelectOption<string>) => (\n <MenuItem>\n <div className='gr-cp-menu-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n </MenuItem>\n )}\n selectedItemRenderer={(option: SelectOption<string>) => (\n <div className='select-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n )}\n onShow={() => { }}\n onHide={() => { }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!(type && propertyName)}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default CalculatedPropertyAction;\n"]}
@@ -13,11 +13,6 @@
13
13
  flex-direction: column;
14
14
  gap: $iui-baseline;
15
15
 
16
- .menu-item {
17
- display: flex;
18
- justify-content: space-between;
19
- }
20
-
21
16
  .select-item {
22
17
  display: flex;
23
18
  justify-content: space-between;
@@ -25,3 +20,8 @@
25
20
  }
26
21
  }
27
22
  }
23
+
24
+ .gr-cp-menu-item {
25
+ display: flex;
26
+ justify-content: space-between;
27
+ }
@@ -1,17 +1,17 @@
1
1
  import React from "react";
2
- import type { CalculatedPropertyReportingAPI } from "../../api/generated/api";
3
2
  import type { CreateTypeFromInterface } from "../utils";
4
3
  import { PropertyMenuView } from "./PropertyMenu";
5
4
  import type { CellProps } from "react-table";
6
- export declare type CalculatedProperty = CreateTypeFromInterface<CalculatedPropertyReportingAPI>;
5
+ import type { CalculatedProperty } from "@itwin/insights-client";
6
+ export declare type CalculatedPropertyType = CreateTypeFromInterface<CalculatedProperty>;
7
7
  interface CalculatedPropertyTableProps {
8
8
  iModelId: string;
9
9
  mappingId: string;
10
10
  groupId: string;
11
- setSelectedCalculatedProperty: React.Dispatch<React.SetStateAction<CreateTypeFromInterface<CalculatedPropertyReportingAPI> | undefined>>;
11
+ setSelectedCalculatedProperty: React.Dispatch<React.SetStateAction<CreateTypeFromInterface<CalculatedProperty> | undefined>>;
12
12
  setGroupModifyView: React.Dispatch<React.SetStateAction<PropertyMenuView>>;
13
- onCalculatedPropertyModify: (value: CellProps<CalculatedProperty>) => void;
14
- selectedCalculatedProperty?: CalculatedProperty;
13
+ onCalculatedPropertyModify: (value: CellProps<CalculatedPropertyType>) => void;
14
+ selectedCalculatedProperty?: CalculatedPropertyType;
15
15
  }
16
16
  declare const CalculatedPropertyTable: ({ iModelId, mappingId, groupId, setSelectedCalculatedProperty, setGroupModifyView, onCalculatedPropertyModify, selectedCalculatedProperty, }: CalculatedPropertyTableProps) => JSX.Element;
17
17
  export default CalculatedPropertyTable;
@@ -4,17 +4,18 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { SvgAdd, SvgDelete, SvgEdit, SvgMore, } from "@itwin/itwinui-icons-react";
6
6
  import { Button, DropdownMenu, IconButton, MenuItem, Table, } from "@itwin/itwinui-react";
7
- import React, { useCallback, useEffect, useMemo, useState } from "react";
8
- import { reportingClientApi } from "../../api/reportingClient";
7
+ import React, { useCallback, useContext, useEffect, useMemo, useState } from "react";
9
8
  import { PropertyMenuView } from "./PropertyMenu";
10
9
  import DeleteModal from "./DeleteModal";
11
10
  import { handleError } from "./utils";
12
- const fetchCalculatedProperties = async (setCalculatedProperties, iModelId, mappingId, groupId, setIsLoading) => {
13
- var _a;
11
+ import { ReportingClient } from "@itwin/insights-client";
12
+ import { ApiContext } from "./GroupingMapping";
13
+ const fetchCalculatedProperties = async (setCalculatedProperties, iModelId, mappingId, groupId, setIsLoading, apiContext) => {
14
14
  try {
15
15
  setIsLoading(true);
16
- const calculatedProperties = await reportingClientApi.getCalculatedProperties(iModelId, mappingId, groupId);
17
- setCalculatedProperties((_a = calculatedProperties.properties) !== null && _a !== void 0 ? _a : []);
16
+ const reportingClientApi = new ReportingClient(apiContext.prefix);
17
+ const calculatedProperties = await reportingClientApi.getCalculatedProperties(apiContext.accessToken, iModelId, mappingId, groupId);
18
+ setCalculatedProperties(calculatedProperties);
18
19
  }
19
20
  catch (error) {
20
21
  handleError(error.status);
@@ -23,22 +24,19 @@ const fetchCalculatedProperties = async (setCalculatedProperties, iModelId, mapp
23
24
  setIsLoading(false);
24
25
  }
25
26
  };
26
- const useFetchCalculatedProperties = (iModelId, mappingId, groupId, setIsLoading) => {
27
- const [calculatedProperties, setCalculatedProperties] = useState([]);
28
- useEffect(() => {
29
- void fetchCalculatedProperties(setCalculatedProperties, iModelId, mappingId, groupId, setIsLoading);
30
- }, [groupId, iModelId, mappingId, setIsLoading]);
31
- return [calculatedProperties, setCalculatedProperties];
32
- };
33
27
  const CalculatedPropertyTable = ({ iModelId, mappingId, groupId, setSelectedCalculatedProperty, setGroupModifyView, onCalculatedPropertyModify, selectedCalculatedProperty, }) => {
34
28
  var _a;
29
+ const apiContext = useContext(ApiContext);
35
30
  const [isLoading, setIsLoading] = useState(true);
36
- const [calculatedProperties, setCalculatedProperties] = useFetchCalculatedProperties(iModelId, mappingId, groupId, setIsLoading);
37
31
  const [showCalculatedPropertyDeleteModal, setShowCalculatedPropertyDeleteModal,] = useState(false);
32
+ const [calculatedProperties, setCalculatedProperties] = useState([]);
33
+ useEffect(() => {
34
+ void fetchCalculatedProperties(setCalculatedProperties, iModelId, mappingId, groupId, setIsLoading, apiContext);
35
+ }, [apiContext, groupId, iModelId, mappingId, setIsLoading]);
38
36
  const refresh = useCallback(async () => {
39
37
  setCalculatedProperties([]);
40
- await fetchCalculatedProperties(setCalculatedProperties, iModelId, mappingId, groupId, setIsLoading);
41
- }, [groupId, iModelId, mappingId, setCalculatedProperties]);
38
+ await fetchCalculatedProperties(setCalculatedProperties, iModelId, mappingId, groupId, setIsLoading, apiContext);
39
+ }, [apiContext, groupId, iModelId, mappingId, setCalculatedProperties]);
42
40
  const calculatedPropertiesColumns = useMemo(() => [
43
41
  {
44
42
  Header: "Table",
@@ -79,7 +77,8 @@ const CalculatedPropertyTable = ({ iModelId, mappingId, groupId, setSelectedCalc
79
77
  React.createElement(Table, { data: calculatedProperties, density: 'extra-condensed', columns: calculatedPropertiesColumns, emptyTableContent: 'No Calculated Properties', isSortable: true, isLoading: isLoading }),
80
78
  React.createElement(DeleteModal, { entityName: (_a = selectedCalculatedProperty === null || selectedCalculatedProperty === void 0 ? void 0 : selectedCalculatedProperty.propertyName) !== null && _a !== void 0 ? _a : "", show: showCalculatedPropertyDeleteModal, setShow: setShowCalculatedPropertyDeleteModal, onDelete: async () => {
81
79
  var _a;
82
- await reportingClientApi.deleteCalculatedProperty(iModelId, mappingId, groupId, (_a = selectedCalculatedProperty === null || selectedCalculatedProperty === void 0 ? void 0 : selectedCalculatedProperty.id) !== null && _a !== void 0 ? _a : "");
80
+ const reportingClientApi = new ReportingClient(apiContext.prefix);
81
+ await reportingClientApi.deleteCalculatedProperty(apiContext.accessToken, iModelId, mappingId, groupId, (_a = selectedCalculatedProperty === null || selectedCalculatedProperty === void 0 ? void 0 : selectedCalculatedProperty.id) !== null && _a !== void 0 ? _a : "");
83
82
  }, refresh: refresh })));
84
83
  };
85
84
  export default CalculatedPropertyTable;