@itwin/grouping-mapping-widget 0.21.0 → 0.22.0

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 (107) hide show
  1. package/lib/cjs/common/hooks/useMemoizedCollectionPick.d.ts +2 -0
  2. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js +31 -0
  3. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js.map +1 -0
  4. package/lib/cjs/components/GroupingMappingContext.js +31 -13
  5. package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
  6. package/lib/cjs/components/Groups/hooks/useFetchGroups.d.ts +5 -0
  7. package/lib/cjs/components/Groups/hooks/useFetchGroups.js +18 -0
  8. package/lib/cjs/components/Groups/hooks/useFetchGroups.js.map +1 -0
  9. package/lib/cjs/components/Mappings/Editing/MappingAction.js +21 -30
  10. package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
  11. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.d.ts +6 -1
  12. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +42 -31
  13. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  14. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +7 -1
  15. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  16. package/lib/cjs/components/Mappings/{ConfirmMappingsImport.d.ts → Import/ConfirmMappingsImport.d.ts} +1 -1
  17. package/lib/cjs/components/Mappings/{ConfirmMappingsImport.js → Import/ConfirmMappingsImport.js} +27 -20
  18. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -0
  19. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +4 -7
  20. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  21. package/lib/cjs/components/Mappings/Import/SelectIModel.js +30 -49
  22. package/lib/cjs/components/Mappings/Import/SelectIModel.js.map +1 -1
  23. package/lib/cjs/components/Mappings/Import/SelectITwin.d.ts +6 -1
  24. package/lib/cjs/components/Mappings/Import/SelectITwin.js +39 -52
  25. package/lib/cjs/components/Mappings/Import/SelectITwin.js.map +1 -1
  26. package/lib/cjs/components/Mappings/Import/SelectMappings.js +13 -36
  27. package/lib/cjs/components/Mappings/Import/SelectMappings.js.map +1 -1
  28. package/lib/cjs/components/Mappings/Mappings.js +5 -27
  29. package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
  30. package/lib/cjs/components/Mappings/MappingsView.d.ts +5 -4
  31. package/lib/cjs/components/Mappings/MappingsView.js +29 -7
  32. package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
  33. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.d.ts +13 -0
  34. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js +50 -0
  35. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -0
  36. package/lib/cjs/components/Mappings/hooks/useFetchMappings.d.ts +4 -0
  37. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js +14 -0
  38. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js.map +1 -0
  39. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.d.ts +9 -10
  40. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +35 -108
  41. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  42. package/lib/cjs/components/Properties/PropertyTable.js +2 -1
  43. package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
  44. package/lib/cjs/components/SharedComponents/DeleteModal.d.ts +2 -2
  45. package/lib/cjs/components/SharedComponents/DeleteModal.js +15 -19
  46. package/lib/cjs/components/SharedComponents/DeleteModal.js.map +1 -1
  47. package/lib/cjs/formula/FormulaFunctionProvider.js +10 -1
  48. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  49. package/lib/esm/common/hooks/useMemoizedCollectionPick.d.ts +2 -0
  50. package/lib/esm/common/hooks/useMemoizedCollectionPick.js +27 -0
  51. package/lib/esm/common/hooks/useMemoizedCollectionPick.js.map +1 -0
  52. package/lib/esm/components/GroupingMappingContext.js +31 -13
  53. package/lib/esm/components/GroupingMappingContext.js.map +1 -1
  54. package/lib/esm/components/Groups/hooks/useFetchGroups.d.ts +5 -0
  55. package/lib/esm/components/Groups/hooks/useFetchGroups.js +13 -0
  56. package/lib/esm/components/Groups/hooks/useFetchGroups.js.map +1 -0
  57. package/lib/esm/components/Mappings/Editing/MappingAction.js +22 -31
  58. package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
  59. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.d.ts +6 -1
  60. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +42 -31
  61. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  62. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +7 -1
  63. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  64. package/lib/esm/components/Mappings/{ConfirmMappingsImport.d.ts → Import/ConfirmMappingsImport.d.ts} +1 -1
  65. package/lib/esm/components/Mappings/{ConfirmMappingsImport.js → Import/ConfirmMappingsImport.js} +27 -20
  66. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -0
  67. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +4 -7
  68. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  69. package/lib/esm/components/Mappings/Import/SelectIModel.js +31 -50
  70. package/lib/esm/components/Mappings/Import/SelectIModel.js.map +1 -1
  71. package/lib/esm/components/Mappings/Import/SelectITwin.d.ts +6 -1
  72. package/lib/esm/components/Mappings/Import/SelectITwin.js +39 -53
  73. package/lib/esm/components/Mappings/Import/SelectITwin.js.map +1 -1
  74. package/lib/esm/components/Mappings/Import/SelectMappings.js +14 -37
  75. package/lib/esm/components/Mappings/Import/SelectMappings.js.map +1 -1
  76. package/lib/esm/components/Mappings/Mappings.js +3 -9
  77. package/lib/esm/components/Mappings/Mappings.js.map +1 -1
  78. package/lib/esm/components/Mappings/MappingsView.d.ts +5 -4
  79. package/lib/esm/components/Mappings/MappingsView.js +10 -7
  80. package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
  81. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.d.ts +13 -0
  82. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js +46 -0
  83. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -0
  84. package/lib/esm/components/Mappings/hooks/useFetchMappings.d.ts +4 -0
  85. package/lib/esm/components/Mappings/hooks/useFetchMappings.js +10 -0
  86. package/lib/esm/components/Mappings/hooks/useFetchMappings.js.map +1 -0
  87. package/lib/esm/components/Mappings/hooks/useMappingsOperations.d.ts +9 -10
  88. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +36 -109
  89. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  90. package/lib/esm/components/Properties/PropertyTable.js +2 -1
  91. package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
  92. package/lib/esm/components/SharedComponents/DeleteModal.d.ts +2 -2
  93. package/lib/esm/components/SharedComponents/DeleteModal.js +16 -20
  94. package/lib/esm/components/SharedComponents/DeleteModal.js.map +1 -1
  95. package/lib/esm/formula/FormulaFunctionProvider.js +10 -1
  96. package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
  97. package/package.json +9 -4
  98. package/lib/cjs/components/Mappings/ConfirmMappingsImport.js.map +0 -1
  99. package/lib/cjs/components/context/ExtractionStatusDataContext.d.ts +0 -20
  100. package/lib/cjs/components/context/ExtractionStatusDataContext.js +0 -26
  101. package/lib/cjs/components/context/ExtractionStatusDataContext.js.map +0 -1
  102. package/lib/esm/components/Mappings/ConfirmMappingsImport.js.map +0 -1
  103. package/lib/esm/components/context/ExtractionStatusDataContext.d.ts +0 -20
  104. package/lib/esm/components/context/ExtractionStatusDataContext.js +0 -22
  105. package/lib/esm/components/context/ExtractionStatusDataContext.js.map +0 -1
  106. /package/lib/cjs/components/Mappings/{ConfirmMappingsImport.scss → Import/ConfirmMappingsImport.scss} +0 -0
  107. /package/lib/esm/components/Mappings/{ConfirmMappingsImport.scss → Import/ConfirmMappingsImport.scss} +0 -0
@@ -27,10 +27,10 @@ const itwinui_react_1 = require("@itwin/itwinui-react");
27
27
  const react_1 = __importStar(require("react"));
28
28
  require("./ConfirmMappingsImport.scss");
29
29
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
30
- const useValidator_1 = __importStar(require("../Properties/hooks/useValidator"));
31
- const utils_1 = require("../../common/utils");
32
- const MappingClientContext_1 = require("../context/MappingClientContext");
33
- const GroupingApiConfigContext_1 = require("../context/GroupingApiConfigContext");
30
+ const useValidator_1 = __importStar(require("../../Properties/hooks/useValidator"));
31
+ const MappingClientContext_1 = require("../../context/MappingClientContext");
32
+ const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
33
+ const react_query_1 = require("@tanstack/react-query");
34
34
  const defaultDisplayStrings = {
35
35
  mappings: "Mappings",
36
36
  };
@@ -56,26 +56,33 @@ const ConfirmMappingImport = ({ sourceiModelId, selectedMappings, importing, set
56
56
  };
57
57
  setSelectedMappings(newState);
58
58
  };
59
+ const importMutation = (0, react_query_1.useMutation)({
60
+ mutationFn: async (selectedMapping) => {
61
+ const accessToken = await getAccessToken();
62
+ await mappingClient.copyMapping(accessToken, sourceiModelId, selectedMapping.id, {
63
+ targetIModelId: iModelId,
64
+ mappingName: selectedMapping.mappingName,
65
+ });
66
+ },
67
+ onMutate: async (selectedMapping) => {
68
+ setCurrentlyImporting(selectedMapping.mappingName);
69
+ },
70
+ onSuccess: () => {
71
+ setImportCount((count) => count + 1);
72
+ },
73
+ onError: () => {
74
+ setErrored(true);
75
+ },
76
+ });
59
77
  const onImport = async () => {
60
78
  if (!validator.allValid()) {
61
79
  showValidationMessage(true);
62
80
  return;
63
81
  }
64
82
  setImporting(true);
65
- try {
66
- for (const selectedMapping of selectedMappings) {
67
- setCurrentlyImporting(selectedMapping.mappingName ?? "");
68
- const accessToken = await getAccessToken();
69
- await mappingClient.copyMapping(accessToken, sourceiModelId, selectedMapping.id ?? "", {
70
- targetIModelId: iModelId ?? "",
71
- mappingName: selectedMapping.mappingName ?? "",
72
- });
73
- setImportCount((importCount) => importCount + 1);
74
- }
75
- }
76
- catch (error) {
77
- (0, utils_1.handleError)(error);
78
- setErrored(true);
83
+ setImportCount(0);
84
+ for (const mapping of selectedMappings) {
85
+ await importMutation.mutateAsync(mapping);
79
86
  }
80
87
  };
81
88
  return (react_1.default.createElement(react_1.default.Fragment, null, importing ? (react_1.default.createElement("div", { className: 'gmw-import-progress-container' },
@@ -98,13 +105,13 @@ const ConfirmMappingImport = ({ sourceiModelId, selectedMappings, importing, set
98
105
  ], status: !errored ?
99
106
  importCount === selectedMappings.length ? "positive" : undefined : "negative" })),
100
107
  react_1.default.createElement("div", { className: 'gmw-import-action-panel' },
101
- react_1.default.createElement(itwinui_react_1.Button, { disabled: !errored && importCount !== selectedMappings.length, onClick: () => {
108
+ react_1.default.createElement(itwinui_react_1.Button, { disabled: !errored && importCount === selectedMappings.length, onClick: () => {
102
109
  setImporting(false);
103
110
  setImportCount(0);
104
111
  setCurrentlyImporting("");
105
112
  setErrored(false);
106
113
  } }, "Back"),
107
- react_1.default.createElement(itwinui_react_1.Button, { styleType: 'high-visibility', disabled: !errored && importCount !== selectedMappings.length, onClick: () => onFinish() }, "Close")))) : (react_1.default.createElement("div", { className: 'gmw-rename-confirm-container ' },
114
+ react_1.default.createElement(itwinui_react_1.Button, { styleType: 'high-visibility', disabled: !errored && importCount !== selectedMappings.length, onClick: onFinish }, "Close")))) : (react_1.default.createElement("div", { className: 'gmw-rename-confirm-container ' },
108
115
  react_1.default.createElement("div", { className: 'gmw-mapping-rename-container' },
109
116
  react_1.default.createElement("div", { className: 'gmw-mapping-row-header-container' },
110
117
  react_1.default.createElement("div", { className: 'gmw-mapping-row' },
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmMappingsImport.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/ConfirmMappingsImport.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 {\n Button,\n LabeledInput,\n MiddleTextTruncation,\n ProgressLinear,\n Text,\n} from \"@itwin/itwinui-react\";\nimport React, { useEffect, useState } from \"react\";\nimport type { IMappingTyped } from \"../Mappings\";\nimport \"./ConfirmMappingsImport.scss\";\nimport { SvgStatusSuccessHollow } from \"@itwin/itwinui-icons-react\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../../Properties/hooks/useValidator\";\nimport { useMappingClient } from \"../../context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n};\n\ninterface ConfirmMappingImportProps {\n sourceiModelId: string;\n selectedMappings: IMappingTyped[];\n importing: boolean;\n setImporting: React.Dispatch<React.SetStateAction<boolean>>;\n setSelectedMappings: React.Dispatch<React.SetStateAction<IMappingTyped[]>>;\n backFn: () => void;\n onCancel: () => void;\n onFinish: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nconst ConfirmMappingImport = ({\n sourceiModelId,\n selectedMappings,\n importing,\n setImporting,\n setSelectedMappings,\n backFn,\n onCancel,\n onFinish,\n displayStrings: userDisplayStrings,\n}: ConfirmMappingImportProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [importCount, setImportCount] = useState<number>(0);\n const [currentlyImporting, setCurrentlyImporting] = useState<string>(\"\");\n const [validator, showValidationMessage] = useValidator();\n const [errored, setErrored] = useState<boolean>(false);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n useEffect(() => {\n setSelectedMappings((selectedMappings) =>\n selectedMappings.map((mapping) => ({\n ...mapping,\n mappingName: `${mapping.mappingName}_Copy`,\n })),\n );\n }, [setSelectedMappings]);\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement>,\n index: number,\n ) => {\n const newState = [...selectedMappings];\n newState[index] = {\n ...newState[index],\n mappingName: e.target.value,\n };\n setSelectedMappings(newState);\n };\n\n const importMutation = useMutation({\n mutationFn: async (selectedMapping: IMappingTyped) => {\n const accessToken = await getAccessToken();\n await mappingClient.copyMapping(\n accessToken,\n sourceiModelId,\n selectedMapping.id,\n {\n targetIModelId: iModelId,\n mappingName: selectedMapping.mappingName,\n }\n );\n },\n onMutate: async (selectedMapping: IMappingTyped) => {\n setCurrentlyImporting(selectedMapping.mappingName);\n },\n onSuccess: () => {\n setImportCount((count) => count + 1);\n },\n onError: () => {\n setErrored(true);\n },\n });\n\n const onImport = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setImporting(true);\n setImportCount(0);\n for (const mapping of selectedMappings) {\n await importMutation.mutateAsync(mapping);\n }\n };\n\n return (\n <>\n {importing ? (\n <div className='gmw-import-progress-container'>\n <div className='gmw-import-progress-bar'>\n <div className='gmw-import-progress-bar-description'>\n {\n !errored ? importCount !== selectedMappings.length ? (\n <>\n <Text variant='title'>Importing</Text>\n <Text>{`We are currently importing the ${displayStrings.mappings.toLocaleLowerCase()}.`}</Text>\n </>\n ) : (\n <>\n <Text variant='title'>Done!</Text>\n <Text>{`Your imported ${displayStrings.mappings.toLocaleLowerCase()} are ready.`}</Text>\n </>\n ) :\n <>\n <Text variant='title'>Error!</Text>\n <Text>{`Sorry, there was an error importing some or all ${displayStrings.mappings}.`}</Text>\n </>}\n </div>\n <ProgressLinear\n value={(importCount / selectedMappings.length) * 100}\n labels={\n importCount === selectedMappings.length\n ? [\"Import done!\", <SvgStatusSuccessHollow key='0' />]\n : [\n <>\n <Text>Copying</Text>\n <MiddleTextTruncation text={currentlyImporting} />\n </>,\n `${importCount}/${selectedMappings.length}`,\n ]\n }\n status={\n !errored ?\n importCount === selectedMappings.length ? \"positive\" : undefined : \"negative\"\n }\n />\n </div>\n <div className='gmw-import-action-panel'>\n <Button\n disabled={!errored && importCount === selectedMappings.length}\n onClick={() => {\n setImporting(false);\n setImportCount(0);\n setCurrentlyImporting(\"\");\n setErrored(false);\n }}\n >\n Back\n </Button>\n <Button\n styleType='high-visibility'\n disabled={!errored && importCount !== selectedMappings.length}\n onClick={onFinish}\n >\n Close\n </Button>\n </div>\n </div>\n ) : (\n <div className='gmw-rename-confirm-container '>\n <div className='gmw-mapping-rename-container'>\n <div className='gmw-mapping-row-header-container'>\n <div className='gmw-mapping-row'>\n <Text variant='leading'>{displayStrings.mappings}</Text>\n <Text variant='leading'>Description</Text>\n </div>\n </div>\n <div className='gmw-mapping-row-body'>\n {selectedMappings.map((mapping, index) => (\n <div className='gmw-mapping-row-container' key={mapping.id}>\n <div className='gmw-mapping-row'>\n <LabeledInput\n value={mapping.mappingName}\n name={`mapping_${mapping.id}`}\n required\n onChange={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n message={validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )}\n status={\n validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n onBlurCapture={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n />\n <div>{mapping.description}</div>\n </div>\n <div className='gmw-border-div' />\n </div>\n ))}\n </div>\n </div>\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button styleType='high-visibility' onClick={async () => onImport()}>\n Import\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default ConfirmMappingImport;\n"]}
@@ -26,10 +26,10 @@ exports.MappingImportWizardModal = void 0;
26
26
  const itwinui_react_1 = require("@itwin/itwinui-react");
27
27
  const itwinui_react_2 = require("@itwin/itwinui-react");
28
28
  const react_1 = __importStar(require("react"));
29
- const ConfirmMappingsImport_1 = __importDefault(require("../ConfirmMappingsImport"));
29
+ const ConfirmMappingsImport_1 = __importDefault(require("./ConfirmMappingsImport"));
30
30
  require("./MappingImportWizardModal.scss");
31
31
  const SelectIModel_1 = __importDefault(require("./SelectIModel"));
32
- const SelectITwin_1 = __importDefault(require("./SelectITwin"));
32
+ const SelectITwin_1 = __importStar(require("./SelectITwin"));
33
33
  const SelectMappings_1 = __importDefault(require("./SelectMappings"));
34
34
  const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
35
35
  const IModelsClientContext_1 = require("../../context/IModelsClientContext");
@@ -47,7 +47,7 @@ const defaultDisplayStrings = {
47
47
  const MappingImportWizardModal = ({ show, setShow, onFinish, displayStrings: userDisplayStrings, }) => {
48
48
  const { prefix } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
49
49
  const [currentStep, setCurrentStep] = (0, react_1.useState)(0);
50
- const [iTwinType, setITwinType] = (0, react_1.useState)(0);
50
+ const [iTwinType, setITwinType] = (0, react_1.useState)(SelectITwin_1.ITwinType.Favorite);
51
51
  const [selectedITwinId, setSelectedITwinId] = (0, react_1.useState)("");
52
52
  const [selectedIModelId, setSelectedIModelId] = (0, react_1.useState)("");
53
53
  const [selectedMappings, setSelectedMappings] = (0, react_1.useState)([]);
@@ -112,10 +112,7 @@ const MappingImportWizardModal = ({ show, setShow, onFinish, displayStrings: use
112
112
  setSelectedMappings(selectedMappings);
113
113
  setCurrentStep(3);
114
114
  }, onCancel: onClose, backFn: () => setCurrentStep(currentStep - 1), displayStrings: displayStrings })),
115
- currentStep === 3 && (react_1.default.createElement(ConfirmMappingsImport_1.default, { sourceiModelId: selectedIModelId, selectedMappings: selectedMappings, importing: importing, setImporting: setImporting, setSelectedMappings: setSelectedMappings, backFn: () => setCurrentStep(currentStep - 1), onCancel: onClose, onFinish: async () => {
116
- await onClose();
117
- setImporting(false);
118
- }, displayStrings: displayStrings }))));
115
+ currentStep === 3 && (react_1.default.createElement(ConfirmMappingsImport_1.default, { sourceiModelId: selectedIModelId, selectedMappings: selectedMappings, importing: importing, setImporting: setImporting, setSelectedMappings: setSelectedMappings, backFn: () => setCurrentStep(currentStep - 1), onCancel: onClose, onFinish: onClose, displayStrings: displayStrings }))));
119
116
  default:
120
117
  return null;
121
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MappingImportWizardModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/MappingImportWizardModal.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 { IModelsClient } from \"@itwin/imodels-client-management\";\nimport type { ITwinsAccessClient } from \"@itwin/itwins-client\";\nimport type { StepProperties } from \"@itwin/itwinui-react\";\nimport { Stepper } from \"@itwin/itwinui-react\";\nimport { Modal } from \"@itwin/itwinui-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport ConfirmMappingImport from \"../ConfirmMappingsImport\";\nimport type { IMappingTyped } from \"../Mappings\";\nimport \"./MappingImportWizardModal.scss\";\nimport SelectIModel from \"./SelectIModel\";\nimport SelectITwin from \"./SelectITwin\";\nimport SelectMappings from \"./SelectMappings\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { createIModelsClient, IModelsClientContext } from \"../../context/IModelsClientContext\";\nimport { createITwinsClient, ITwinsClientContext } from \"../../context/ITwinsClientContext\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\ninterface MappingImportWizardModalProps {\n show: boolean;\n setShow: (show: boolean) => void;\n onFinish: () => Promise<void>;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nexport const MappingImportWizardModal = ({\n show,\n setShow,\n onFinish,\n displayStrings: userDisplayStrings,\n}: MappingImportWizardModalProps) => {\n const { prefix } = useGroupingMappingApiConfig();\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [iTwinType, setITwinType] = useState<number>(0);\n const [selectedITwinId, setSelectedITwinId] = useState<string>(\"\");\n const [selectedIModelId, setSelectedIModelId] = useState<string>(\"\");\n const [selectedMappings, setSelectedMappings] = useState<IMappingTyped[]>([]);\n const [importing, setImporting] = useState<boolean>(false);\n const [iTwinsClient, setITwinsClient] = useState<ITwinsAccessClient>(createITwinsClient(prefix));\n const [iModelsClient, setIModelsClient] = useState<IModelsClient>(createIModelsClient(prefix));\n\n useEffect(() => {\n setITwinsClient(createITwinsClient(prefix));\n setIModelsClient(createIModelsClient(prefix));\n }, [prefix]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const steps = useRef<StepProperties[]>([\n {\n name: \"Select iTwin\",\n description: `Select the source iTwin to bring your ${displayStrings.mappings} from.`,\n },\n {\n name: \"Select iModel\",\n description: \"Select an iModel within the iTwin you have selected.\",\n },\n {\n name: `Select ${displayStrings.mappings}`,\n description: `Select one or more ${displayStrings.mappings} to import.`,\n },\n {\n name: \"Rename & Confirm\",\n description:\n \"Rename and confirm your selections. Click import when finished.\",\n },\n ]);\n\n const onClose = async () => {\n setShow(false);\n setCurrentStep(0);\n await onFinish();\n };\n\n return (\n <Modal\n title={`Import ${displayStrings.mappings}`}\n modalRootId='grouping-mapping-widget'\n isOpen={show}\n closeOnEsc={false}\n closeOnExternalClick={false}\n isDismissible={!importing}\n styleType='fullPage'\n onClose={async () => {\n await onClose();\n }}\n >\n <div className='gmw-import-wizard-body-container'>\n <Stepper\n currentStep={currentStep}\n steps={steps.current}\n onStepClick={\n importing ? undefined : (index: number) => setCurrentStep(index)\n }\n />\n\n {(() => {\n switch (currentStep) {\n case 0:\n return (\n <ITwinsClientContext.Provider value={iTwinsClient}>\n <div className=\"gmw-table-container\">\n <SelectITwin\n onSelect={(iTwinId) => {\n setSelectedITwinId(iTwinId);\n setCurrentStep(1);\n }}\n onCancel={onClose}\n onChangeITwinType={setITwinType}\n displayStrings={displayStrings}\n defaultITwinType={iTwinType}\n />\n </div>\n </ITwinsClientContext.Provider>\n );\n case 1:\n return (\n <IModelsClientContext.Provider value={iModelsClient}>\n <div className=\"gmw-table-container\">\n <SelectIModel\n iTwinId={selectedITwinId}\n onSelect={(iModelId) => {\n setSelectedIModelId(iModelId);\n setCurrentStep(2);\n }}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n />\n </div>\n </IModelsClientContext.Provider>\n );\n case 2:\n case 3:\n // Preserve table state within Select Mappings\n return (\n <>\n <div\n style={{ display: currentStep === 2 ? \"flex\" : \"none\" }}\n className=\"gmw-mapping-container\"\n >\n <SelectMappings\n iModelId={selectedIModelId}\n onSelect={(selectedMappings) => {\n setSelectedMappings(selectedMappings);\n setCurrentStep(3);\n }}\n onCancel={onClose}\n backFn={() => setCurrentStep(currentStep - 1)}\n displayStrings={displayStrings}\n />\n </div>\n {currentStep === 3 && (\n <ConfirmMappingImport\n sourceiModelId={selectedIModelId}\n selectedMappings={selectedMappings}\n importing={importing}\n setImporting={setImporting}\n setSelectedMappings={setSelectedMappings}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n onFinish={async () => {\n await onClose();\n setImporting(false);\n }}\n displayStrings={displayStrings}\n />\n )}\n </>\n );\n default:\n return null;\n }\n })()}\n </div>\n </Modal>\n );\n};\n"]}
1
+ {"version":3,"file":"MappingImportWizardModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/MappingImportWizardModal.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 { IModelsClient } from \"@itwin/imodels-client-management\";\nimport type { ITwinsAccessClient } from \"@itwin/itwins-client\";\nimport type { StepProperties } from \"@itwin/itwinui-react\";\nimport { Stepper } from \"@itwin/itwinui-react\";\nimport { Modal } from \"@itwin/itwinui-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport ConfirmMappingImport from \"./ConfirmMappingsImport\";\nimport type { IMappingTyped } from \"../Mappings\";\nimport \"./MappingImportWizardModal.scss\";\nimport SelectIModel from \"./SelectIModel\";\nimport SelectITwin, { ITwinType } from \"./SelectITwin\";\nimport SelectMappings from \"./SelectMappings\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { createIModelsClient, IModelsClientContext } from \"../../context/IModelsClientContext\";\nimport { createITwinsClient, ITwinsClientContext } from \"../../context/ITwinsClientContext\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\ninterface MappingImportWizardModalProps {\n show: boolean;\n setShow: (show: boolean) => void;\n onFinish: () => Promise<void>;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nexport const MappingImportWizardModal = ({\n show,\n setShow,\n onFinish,\n displayStrings: userDisplayStrings,\n}: MappingImportWizardModalProps) => {\n const { prefix } = useGroupingMappingApiConfig();\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [iTwinType, setITwinType] = useState<ITwinType>(ITwinType.Favorite);\n const [selectedITwinId, setSelectedITwinId] = useState<string>(\"\");\n const [selectedIModelId, setSelectedIModelId] = useState<string>(\"\");\n const [selectedMappings, setSelectedMappings] = useState<IMappingTyped[]>([]);\n const [importing, setImporting] = useState<boolean>(false);\n const [iTwinsClient, setITwinsClient] = useState<ITwinsAccessClient>(createITwinsClient(prefix));\n const [iModelsClient, setIModelsClient] = useState<IModelsClient>(createIModelsClient(prefix));\n\n useEffect(() => {\n setITwinsClient(createITwinsClient(prefix));\n setIModelsClient(createIModelsClient(prefix));\n }, [prefix]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const steps = useRef<StepProperties[]>([\n {\n name: \"Select iTwin\",\n description: `Select the source iTwin to bring your ${displayStrings.mappings} from.`,\n },\n {\n name: \"Select iModel\",\n description: \"Select an iModel within the iTwin you have selected.\",\n },\n {\n name: `Select ${displayStrings.mappings}`,\n description: `Select one or more ${displayStrings.mappings} to import.`,\n },\n {\n name: \"Rename & Confirm\",\n description:\n \"Rename and confirm your selections. Click import when finished.\",\n },\n ]);\n\n const onClose = async () => {\n setShow(false);\n setCurrentStep(0);\n await onFinish();\n };\n\n return (\n <Modal\n title={`Import ${displayStrings.mappings}`}\n modalRootId='grouping-mapping-widget'\n isOpen={show}\n closeOnEsc={false}\n closeOnExternalClick={false}\n isDismissible={!importing}\n styleType='fullPage'\n onClose={async () => {\n await onClose();\n }}\n >\n <div className='gmw-import-wizard-body-container'>\n <Stepper\n currentStep={currentStep}\n steps={steps.current}\n onStepClick={\n importing ? undefined : (index: number) => setCurrentStep(index)\n }\n />\n\n {(() => {\n switch (currentStep) {\n case 0:\n return (\n <ITwinsClientContext.Provider value={iTwinsClient}>\n <div className=\"gmw-table-container\">\n <SelectITwin\n onSelect={(iTwinId) => {\n setSelectedITwinId(iTwinId);\n setCurrentStep(1);\n }}\n onCancel={onClose}\n onChangeITwinType={setITwinType}\n displayStrings={displayStrings}\n defaultITwinType={iTwinType}\n />\n </div>\n </ITwinsClientContext.Provider>\n );\n case 1:\n return (\n <IModelsClientContext.Provider value={iModelsClient}>\n <div className=\"gmw-table-container\">\n <SelectIModel\n iTwinId={selectedITwinId}\n onSelect={(iModelId) => {\n setSelectedIModelId(iModelId);\n setCurrentStep(2);\n }}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n />\n </div>\n </IModelsClientContext.Provider>\n );\n case 2:\n case 3:\n // Preserve table state within Select Mappings\n return (\n <>\n <div\n style={{ display: currentStep === 2 ? \"flex\" : \"none\" }}\n className=\"gmw-mapping-container\"\n >\n <SelectMappings\n iModelId={selectedIModelId}\n onSelect={(selectedMappings) => {\n setSelectedMappings(selectedMappings);\n setCurrentStep(3);\n }}\n onCancel={onClose}\n backFn={() => setCurrentStep(currentStep - 1)}\n displayStrings={displayStrings}\n />\n </div>\n {currentStep === 3 && (\n <ConfirmMappingImport\n sourceiModelId={selectedIModelId}\n selectedMappings={selectedMappings}\n importing={importing}\n setImporting={setImporting}\n setSelectedMappings={setSelectedMappings}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n onFinish={onClose}\n displayStrings={displayStrings}\n />\n )}\n </>\n );\n default:\n return null;\n }\n })()}\n </div>\n </Modal>\n );\n};\n"]}
@@ -24,68 +24,49 @@ const react_1 = __importStar(require("react"));
24
24
  require("./SelectIModel.scss");
25
25
  const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
26
26
  const IModelsClientContext_1 = require("../../context/IModelsClientContext");
27
- const utils_1 = require("../../../common/utils");
27
+ const react_query_1 = require("@tanstack/react-query");
28
+ const imodels_access_frontend_1 = require("@itwin/imodels-access-frontend");
28
29
  const defaultDisplayStrings = {
29
30
  iModels: "iModels",
30
31
  iModelName: "Name",
31
32
  iModelDescription: "Description",
32
33
  };
33
- const fetchIModels = async (setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient) => {
34
- try {
35
- setIModels([]);
36
- setIsLoading(true);
37
- const iModelIterator = iModelsClient.iModels.getRepresentationList({
38
- authorization: async () => {
39
- const token = await getAccessToken();
40
- const splitToken = token.split(" ");
41
- return {
42
- scheme: splitToken[0],
43
- token: splitToken[1],
44
- };
45
- },
46
- urlParams: {
47
- iTwinId,
48
- },
49
- });
50
- const iModels = [];
51
- for await (const iModel of iModelIterator) {
52
- iModels.push(iModel);
53
- }
54
- setIModels(iModels);
55
- }
56
- catch (error) {
57
- (0, utils_1.handleError)(error.status);
58
- }
59
- finally {
60
- setIsLoading(false);
34
+ const fetchIModels = async (getAccessToken, iTwinId, iModelsClient) => {
35
+ const accessToken = await getAccessToken();
36
+ const authorization = imodels_access_frontend_1.AccessTokenAdapter.toAuthorizationCallback(accessToken);
37
+ const iModelIterator = iModelsClient.iModels.getRepresentationList({
38
+ authorization,
39
+ urlParams: {
40
+ iTwinId,
41
+ },
42
+ });
43
+ const iModels = [];
44
+ for await (const iModel of iModelIterator) {
45
+ iModels.push(iModel);
61
46
  }
47
+ return iModels;
62
48
  };
63
49
  const SelectIModel = ({ iTwinId: iTwinId, onSelect, onCancel, backFn, displayStrings: userDisplayStrings, }) => {
64
50
  const { getAccessToken } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
65
51
  const iModelsClient = (0, IModelsClientContext_1.useIModelsClient)();
66
- const [isLoading, setIsLoading] = (0, react_1.useState)(true);
67
- const [iModels, setIModels] = (0, react_1.useState)([]);
68
- (0, react_1.useEffect)(() => {
69
- void fetchIModels(setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient);
70
- }, [getAccessToken, iModelsClient, setIsLoading, iTwinId]);
52
+ const { data: iModels, isFetching: isLoading } = (0, react_query_1.useQuery)({
53
+ queryKey: ["iModels", iTwinId],
54
+ queryFn: async () => fetchIModels(getAccessToken, iTwinId, iModelsClient),
55
+ initialData: [],
56
+ });
71
57
  const displayStrings = react_1.default.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
72
58
  const iModelsColumns = (0, react_1.useMemo)(() => [
73
59
  {
74
- Header: "Table",
75
- columns: [
76
- {
77
- id: "iModelName",
78
- Header: `${displayStrings.iModelName}`,
79
- accessor: "name",
80
- Filter: itwinui_react_1.tableFilters.TextFilter(),
81
- },
82
- {
83
- id: "iModelDescription",
84
- Header: `${displayStrings.iModelDescription}`,
85
- accessor: "description",
86
- Filter: itwinui_react_1.tableFilters.TextFilter(),
87
- },
88
- ],
60
+ id: "iModelName",
61
+ Header: `${displayStrings.iModelName}`,
62
+ accessor: "name",
63
+ Filter: itwinui_react_1.tableFilters.TextFilter(),
64
+ },
65
+ {
66
+ id: "iModelDescription",
67
+ Header: `${displayStrings.iModelDescription}`,
68
+ accessor: "description",
69
+ Filter: itwinui_react_1.tableFilters.TextFilter(),
89
70
  },
90
71
  ], [displayStrings.iModelName, displayStrings.iModelDescription]);
91
72
  const pageSizeList = (0, react_1.useMemo)(() => [10, 25, 50], []);
@@ -1 +1 @@
1
- {"version":3,"file":"SelectIModel.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/SelectIModel.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 { EntityListIterator, IModel, IModelsClient } from \"@itwin/imodels-client-management\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, Table, tableFilters, TablePaginator } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport \"./SelectIModel.scss\";\nimport type { GetAccessTokenFn } from \"../../context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useIModelsClient } from \"../../context/IModelsClientContext\";\nimport { handleError } from \"../../../common/utils\";\n\ntype IIModelTyped = CreateTypeFromInterface<IModel>;\n\nconst defaultDisplayStrings = {\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\n\nconst fetchIModels = async (\n setIModels: (iModels: IModel[]) => void,\n setIsLoading: (isLoading: boolean) => void,\n getAccessToken: GetAccessTokenFn,\n iTwinId: string,\n iModelsClient: IModelsClient,\n) => {\n try {\n setIModels([]);\n setIsLoading(true);\n const iModelIterator: EntityListIterator<IModel> = iModelsClient.iModels.getRepresentationList({\n authorization: async () => {\n const token = await getAccessToken();\n const splitToken = token.split(\" \");\n return {\n scheme: splitToken[0],\n token: splitToken[1],\n };\n },\n urlParams: {\n iTwinId,\n },\n });\n const iModels: IModel[] = [];\n for await (const iModel of iModelIterator) {\n iModels.push(iModel);\n }\n setIModels(iModels);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectIModelProps {\n iTwinId: string;\n onSelect: (iModelId: string) => void;\n onCancel: () => void;\n backFn: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\nconst SelectIModel = ({\n iTwinId: iTwinId,\n onSelect,\n onCancel,\n backFn,\n displayStrings: userDisplayStrings,\n}: SelectIModelProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iModelsClient = useIModelsClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [iModels, setIModels] = useState<IModel[]>([]);\n\n useEffect(() => {\n void fetchIModels(setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient);\n }, [getAccessToken, iModelsClient, setIsLoading, iTwinId]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iModelsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"iModelName\",\n Header: `${displayStrings.iModelName}`,\n accessor: \"name\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iModelDescription\",\n Header: `${displayStrings.iModelDescription}`,\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n [displayStrings.iModelName, displayStrings.iModelDescription]\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='gmw-select-imodel-table-container'>\n <Table<IIModelTyped>\n data={iModels}\n columns={iModelsColumns}\n className='gmw-select-imodel-table'\n emptyTableContent={`No ${displayStrings.iModels} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id);\n }}\n paginatorRenderer={paginator}\n />\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectIModel;\n"]}
1
+ {"version":3,"file":"SelectIModel.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/SelectIModel.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 { IModel, IModelsClient } from \"@itwin/imodels-client-management\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, Table, tableFilters, TablePaginator } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useMemo } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport \"./SelectIModel.scss\";\nimport type { GetAccessTokenFn } from \"../../context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useIModelsClient } from \"../../context/IModelsClientContext\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport type { Column } from \"react-table\";\nimport { AccessTokenAdapter } from \"@itwin/imodels-access-frontend\";\n\ntype IIModelTyped = CreateTypeFromInterface<IModel>;\n\nconst defaultDisplayStrings = {\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\n\nconst fetchIModels = async (\n getAccessToken: GetAccessTokenFn,\n iTwinId: string,\n iModelsClient: IModelsClient,\n) => {\n const accessToken = await getAccessToken();\n const authorization = AccessTokenAdapter.toAuthorizationCallback(accessToken);\n const iModelIterator = iModelsClient.iModels.getRepresentationList({\n authorization,\n urlParams: {\n iTwinId,\n },\n });\n\n const iModels = [];\n for await (const iModel of iModelIterator) {\n iModels.push(iModel);\n }\n return iModels;\n};\n\ninterface SelectIModelProps {\n iTwinId: string;\n onSelect: (iModelId: string) => void;\n onCancel: () => void;\n backFn: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\nconst SelectIModel = ({\n iTwinId: iTwinId,\n onSelect,\n onCancel,\n backFn,\n displayStrings: userDisplayStrings,\n}: SelectIModelProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iModelsClient = useIModelsClient();\n\n const { data: iModels, isFetching: isLoading } = useQuery({\n queryKey: [\"iModels\", iTwinId],\n queryFn: async () => fetchIModels(getAccessToken, iTwinId, iModelsClient),\n initialData: [],\n });\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iModelsColumns = useMemo<Column<IIModelTyped>[]>(\n () => [\n {\n id: \"iModelName\",\n Header: `${displayStrings.iModelName}`,\n accessor: \"name\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iModelDescription\",\n Header: `${displayStrings.iModelDescription}`,\n accessor: \"description\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n [displayStrings.iModelName, displayStrings.iModelDescription]\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='gmw-select-imodel-table-container'>\n <Table<IIModelTyped>\n data={iModels}\n columns={iModelsColumns}\n className='gmw-select-imodel-table'\n emptyTableContent={`No ${displayStrings.iModels} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id);\n }}\n paginatorRenderer={paginator}\n />\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectIModel;\n"]}
@@ -6,12 +6,17 @@ declare const defaultDisplayStrings: {
6
6
  iTwinName: string;
7
7
  iTwinStatus: string;
8
8
  };
9
+ export declare enum ITwinType {
10
+ Favorite = 0,
11
+ Recent = 1,
12
+ All = 2
13
+ }
9
14
  interface SelectITwinProps {
10
15
  onSelect: (iTwinId: string) => void;
11
16
  onCancel: () => void;
12
17
  onChangeITwinType: (iTwinType: number) => void;
13
18
  displayStrings?: Partial<typeof defaultDisplayStrings>;
14
- defaultITwinType?: number;
19
+ defaultITwinType?: ITwinType;
15
20
  }
16
21
  declare const SelectITwin: ({ onSelect, onCancel, onChangeITwinType, displayStrings: userDisplayStrings, defaultITwinType, }: SelectITwinProps) => JSX.Element;
17
22
  export default SelectITwin;
@@ -19,6 +19,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
19
  return result;
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ITwinType = void 0;
22
23
  const itwins_client_1 = require("@itwin/itwins-client");
23
24
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
24
25
  const itwinui_react_1 = require("@itwin/itwinui-react");
@@ -26,76 +27,62 @@ const react_1 = __importStar(require("react"));
26
27
  require("./SelectITwin.scss");
27
28
  const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
28
29
  const ITwinsClientContext_1 = require("../../context/ITwinsClientContext");
29
- const utils_1 = require("../../../common/utils");
30
+ const react_query_1 = require("@tanstack/react-query");
30
31
  const defaultDisplayStrings = {
31
32
  iTwins: "iTwins",
32
33
  iTwinNumber: "Number",
33
34
  iTwinName: "Name",
34
35
  iTwinStatus: "Status",
35
36
  };
37
+ var ITwinType;
38
+ (function (ITwinType) {
39
+ ITwinType[ITwinType["Favorite"] = 0] = "Favorite";
40
+ ITwinType[ITwinType["Recent"] = 1] = "Recent";
41
+ ITwinType[ITwinType["All"] = 2] = "All";
42
+ })(ITwinType = exports.ITwinType || (exports.ITwinType = {}));
36
43
  const tabsWithIcons = [
37
44
  react_1.default.createElement(itwinui_react_1.Tab, { key: "favorite", label: "Favorite iTwins", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgStarHollow, null) }),
38
45
  react_1.default.createElement(itwinui_react_1.Tab, { key: "recents", label: "Recent iTwins", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgCalendar, null) }),
39
46
  react_1.default.createElement(itwinui_react_1.Tab, { key: "all", label: "My iTwins", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgList, null) }),
40
47
  ];
41
- const fetchITwins = async (setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType) => {
42
- try {
43
- setITwins([]);
44
- setIsLoading(true);
45
- const accessToken = await getAccessToken();
46
- let iTwinsResponse;
47
- switch (iTwinType) {
48
- case 0:
49
- iTwinsResponse = await iTwinsClient.queryFavoritesAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
50
- break;
51
- case 1:
52
- iTwinsResponse = await iTwinsClient.queryRecentsAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
53
- break;
54
- default:
55
- iTwinsResponse = await iTwinsClient.queryAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
56
- }
57
- setITwins(iTwinsResponse.data);
58
- }
59
- catch (error) {
60
- (0, utils_1.handleError)(error.status);
61
- }
62
- finally {
63
- setIsLoading(false);
48
+ const fetchITwins = async (getAccessToken, iTwinsClient, iTwinType) => {
49
+ const accessToken = await getAccessToken();
50
+ switch (iTwinType) {
51
+ case ITwinType.Favorite:
52
+ return iTwinsClient.queryFavoritesAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
53
+ case ITwinType.Recent:
54
+ return iTwinsClient.queryRecentsAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
55
+ default:
56
+ return iTwinsClient.queryAsync(accessToken, itwins_client_1.ITwinSubClass.Project);
64
57
  }
65
58
  };
66
- const SelectITwin = ({ onSelect, onCancel, onChangeITwinType, displayStrings: userDisplayStrings, defaultITwinType = 0, }) => {
59
+ const SelectITwin = ({ onSelect, onCancel, onChangeITwinType, displayStrings: userDisplayStrings, defaultITwinType = ITwinType.Favorite, }) => {
67
60
  const { getAccessToken } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
68
61
  const iTwinsClient = (0, ITwinsClientContext_1.useITwinsClient)();
69
- const [isLoading, setIsLoading] = (0, react_1.useState)(true);
70
- const [iTwins, setITwins] = (0, react_1.useState)([]);
71
62
  const [iTwinType, setITwinType] = (0, react_1.useState)(defaultITwinType);
72
- (0, react_1.useEffect)(() => {
73
- void fetchITwins(setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType);
74
- }, [getAccessToken, iTwinsClient, setIsLoading, iTwinType]);
63
+ const { data: iTwins, isFetching: isLoading } = (0, react_query_1.useQuery)({
64
+ queryKey: ["iTwinsByType", iTwinType],
65
+ queryFn: async () => (await fetchITwins(getAccessToken, iTwinsClient, iTwinType)).data,
66
+ });
75
67
  const displayStrings = react_1.default.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
76
68
  const iTwinsColumns = (0, react_1.useMemo)(() => [
77
69
  {
78
- Header: "Table",
79
- columns: [
80
- {
81
- id: "iTwinNumber",
82
- Header: `${displayStrings.iTwinNumber}`,
83
- accessor: "number",
84
- Filter: itwinui_react_1.tableFilters.TextFilter(),
85
- },
86
- {
87
- id: "iTwinName",
88
- Header: `${displayStrings.iTwinName}`,
89
- accessor: "displayName",
90
- Filter: itwinui_react_1.tableFilters.TextFilter(),
91
- },
92
- {
93
- id: "iTwinStatus",
94
- Header: `${displayStrings.iTwinStatus}`,
95
- accessor: "status",
96
- Filter: itwinui_react_1.tableFilters.TextFilter(),
97
- },
98
- ],
70
+ id: "iTwinNumber",
71
+ Header: `${displayStrings.iTwinNumber}`,
72
+ accessor: "number",
73
+ Filter: itwinui_react_1.tableFilters.TextFilter(),
74
+ },
75
+ {
76
+ id: "iTwinName",
77
+ Header: `${displayStrings.iTwinName}`,
78
+ accessor: "displayName",
79
+ Filter: itwinui_react_1.tableFilters.TextFilter(),
80
+ },
81
+ {
82
+ id: "iTwinStatus",
83
+ Header: `${displayStrings.iTwinStatus}`,
84
+ accessor: "status",
85
+ Filter: itwinui_react_1.tableFilters.TextFilter(),
99
86
  },
100
87
  ], [displayStrings.iTwinNumber, displayStrings.iTwinName, displayStrings.iTwinStatus]);
101
88
  const pageSizeList = (0, react_1.useMemo)(() => [10, 25, 50], []);
@@ -105,7 +92,7 @@ const SelectITwin = ({ onSelect, onCancel, onChangeITwinType, displayStrings: us
105
92
  onChangeITwinType(type);
106
93
  setITwinType(type);
107
94
  }, activeIndex: iTwinType, type: "borderless", contentClassName: "gmw-table-holding-tab" }),
108
- react_1.default.createElement(itwinui_react_1.Table, { data: iTwins, columns: iTwinsColumns, className: 'gmw-select-itwin-table', emptyTableContent: `No ${displayStrings.iTwins} available.`, isSortable: true, isLoading: isLoading, onRowClick: (_, row) => {
95
+ react_1.default.createElement(itwinui_react_1.Table, { data: iTwins ?? [], columns: iTwinsColumns, className: 'gmw-select-itwin-table', emptyTableContent: `No ${displayStrings.iTwins} available.`, isSortable: true, isLoading: isLoading, onRowClick: (_, row) => {
109
96
  onSelect(row.original.id);
110
97
  }, paginatorRenderer: paginator }),
111
98
  react_1.default.createElement("div", { className: "gmw-import-action-panel" },
@@ -1 +1 @@
1
- {"version":3,"file":"SelectITwin.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/SelectITwin.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 { ITwin, ITwinsAccessClient, ITwinsAPIResponse } from \"@itwin/itwins-client\";\nimport { ITwinSubClass } from \"@itwin/itwins-client\";\nimport { SvgCalendar, SvgList, SvgStarHollow } from \"@itwin/itwinui-icons-react\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, Tab, Table, tableFilters, TablePaginator, Tabs } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport \"./SelectITwin.scss\";\nimport type { GetAccessTokenFn } from \"../../context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useITwinsClient } from \"../../context/ITwinsClientContext\";\nimport { handleError } from \"../../../common/utils\";\n\ntype IITwinTyped = CreateTypeFromInterface<ITwin>;\n\nconst defaultDisplayStrings = {\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n};\n\nconst tabsWithIcons = [\n <Tab key=\"favorite\" label=\"Favorite iTwins\" startIcon={<SvgStarHollow />} />,\n <Tab key=\"recents\" label=\"Recent iTwins\" startIcon={<SvgCalendar />} />,\n <Tab key=\"all\" label=\"My iTwins\" startIcon={<SvgList />} />,\n];\n\nconst fetchITwins = async (\n setITwins: (iTwins: ITwin[]) => void,\n setIsLoading: (isLoading: boolean) => void,\n getAccessToken: GetAccessTokenFn,\n iTwinsClient: ITwinsAccessClient,\n iTwinType: number,\n) => {\n try {\n setITwins([]);\n setIsLoading(true);\n const accessToken = await getAccessToken();\n let iTwinsResponse: ITwinsAPIResponse<ITwin[]>;\n switch (iTwinType) {\n case 0:\n iTwinsResponse = await iTwinsClient.queryFavoritesAsync(accessToken, ITwinSubClass.Project);\n break;\n case 1:\n iTwinsResponse = await iTwinsClient.queryRecentsAsync(accessToken, ITwinSubClass.Project);\n break;\n default:\n iTwinsResponse = await iTwinsClient.queryAsync(accessToken, ITwinSubClass.Project);\n }\n setITwins(iTwinsResponse.data!);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectITwinProps {\n onSelect: (iTwinId: string) => void;\n onCancel: () => void;\n onChangeITwinType: (iTwinType: number) => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n defaultITwinType?: number;\n}\nconst SelectITwin = ({\n onSelect,\n onCancel,\n onChangeITwinType,\n displayStrings: userDisplayStrings,\n defaultITwinType = 0,\n}: SelectITwinProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iTwinsClient = useITwinsClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [iTwins, setITwins] = useState<ITwin[]>([]);\n const [iTwinType, setITwinType] = useState<number>(defaultITwinType);\n\n useEffect(() => {\n void fetchITwins(setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType);\n }, [getAccessToken, iTwinsClient, setIsLoading, iTwinType]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iTwinsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"iTwinNumber\",\n Header: `${displayStrings.iTwinNumber}`,\n accessor: \"number\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinName\",\n Header: `${displayStrings.iTwinName}`,\n accessor: \"displayName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinStatus\",\n Header: `${displayStrings.iTwinStatus}`,\n accessor: \"status\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n [displayStrings.iTwinNumber, displayStrings.iTwinName, displayStrings.iTwinStatus]\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=\"gmw-select-itwin-table-container\">\n <Tabs\n orientation=\"horizontal\"\n labels={tabsWithIcons}\n onTabSelected={(type) => {\n onChangeITwinType(type);\n setITwinType(type);\n }}\n activeIndex={iTwinType}\n type={\"borderless\"}\n contentClassName=\"gmw-table-holding-tab\">\n </Tabs>\n <Table<IITwinTyped>\n data={iTwins}\n columns={iTwinsColumns}\n className='gmw-select-itwin-table'\n emptyTableContent={`No ${displayStrings.iTwins} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id!);\n }}\n paginatorRenderer={paginator}\n />\n <div className=\"gmw-import-action-panel\">\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectITwin;\n"]}
1
+ {"version":3,"file":"SelectITwin.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/SelectITwin.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAKA,wDAAqD;AACrD,oEAAiF;AAEjF,wDAA8F;AAC9F,+CAA8D;AAE9D,8BAA4B;AAE5B,qFAAqF;AACrF,2EAAoE;AACpE,uDAAiD;AAKjD,MAAM,qBAAqB,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,iDAAY,CAAA;IACZ,6CAAU,CAAA;IACV,uCAAO,CAAA;AACT,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB;AAED,MAAM,aAAa,GAAG;IACpB,8BAAC,mBAAG,IAAC,GAAG,EAAC,UAAU,EAAC,KAAK,EAAC,iBAAiB,EAAC,SAAS,EAAE,8BAAC,mCAAa,OAAG,GAAI;IAC5E,8BAAC,mBAAG,IAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,eAAe,EAAC,SAAS,EAAE,8BAAC,iCAAW,OAAG,GAAI;IACvE,8BAAC,mBAAG,IAAC,GAAG,EAAC,KAAK,EAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAE,8BAAC,6BAAO,OAAG,GAAI;CAC5D,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EACvB,cAAgC,EAChC,YAAgC,EAChC,SAAoB,EACpB,EAAE;IACF,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;IAC3C,QAAQ,SAAS,EAAE;QACjB,KAAK,SAAS,CAAC,QAAQ;YACrB,OAAO,YAAY,CAAC,mBAAmB,CAAC,WAAW,EAAE,6BAAa,CAAC,OAAO,CAAC,CAAC;QAC9E,KAAK,SAAS,CAAC,MAAM;YACnB,OAAO,YAAY,CAAC,iBAAiB,CAAC,WAAW,EAAE,6BAAa,CAAC,OAAO,CAAC,CAAC;QAC5E;YACE,OAAO,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,6BAAa,CAAC,OAAO,CAAC,CAAC;KACtE;AACH,CAAC,CAAC;AAUF,MAAM,WAAW,GAAG,CAAC,EACnB,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,cAAc,EAAE,kBAAkB,EAClC,gBAAgB,GAAG,SAAS,CAAC,QAAQ,GACpB,EAAE,EAAE;IACrB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAA,sDAA2B,GAAE,CAAC;IACzD,MAAM,YAAY,GAAG,IAAA,qCAAe,GAAE,CAAC;IACvC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAS,gBAAgB,CAAC,CAAC;IAErE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,sBAAQ,EAAC;QACvD,QAAQ,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC;QACrC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,WAAW,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,IAAK;KACxF,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,eAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,qBAAqB,EAAE,GAAG,kBAAkB,EAAE,CAAC,EAC3D,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,eAAO,EAC3B,GAAG,EAAE,CAAC;QACJ;YACE,EAAE,EAAE,aAAa;YACjB,MAAM,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE;YACvC,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,4BAAY,CAAC,UAAU,EAAE;SAClC;QACD;YACE,EAAE,EAAE,WAAW;YACf,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE;YACrC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,4BAAY,CAAC,UAAU,EAAE;SAClC;QACD;YACE,EAAE,EAAE,aAAa;YACjB,MAAM,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE;YACvC,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,4BAAY,CAAC,UAAU,EAAE;SAClC;KACF,EACD,CAAC,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CACnF,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,CAAC,KAAkC,EAAE,EAAE,CAAC,CACtC,8BAAC,8BAAc,OAAK,KAAK,EAAE,YAAY,EAAE,YAAY,GAAI,CAC1D,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,OAAO,CACL,uCAAK,SAAS,EAAC,kCAAkC;QAC/C,8BAAC,oBAAI,IACH,WAAW,EAAC,YAAY,EACxB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtB,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACxB,YAAY,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,EACD,WAAW,EAAE,SAAS,EACtB,IAAI,EAAE,YAAY,EAClB,gBAAgB,EAAC,uBAAuB,GACnC;QACP,8BAAC,qBAAK,IACJ,IAAI,EAAE,MAAM,IAAI,EAAE,EAClB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAC,wBAAwB,EAClC,iBAAiB,EAAE,MAAM,cAAc,CAAC,MAAM,aAAa,EAC3D,UAAU,QACV,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;gBACrB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,CAAC,CAAC;YAC7B,CAAC,EACD,iBAAiB,EAAE,SAAS,GAC5B;QACF,uCAAK,SAAS,EAAC,yBAAyB;YACtC,8BAAC,sBAAM,IAAC,OAAO,EAAE,QAAQ,aAAiB,CACtC,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,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 type { ITwin, ITwinsAccessClient } from \"@itwin/itwins-client\";\nimport { ITwinSubClass } from \"@itwin/itwins-client\";\nimport { SvgCalendar, SvgList, SvgStarHollow } from \"@itwin/itwinui-icons-react\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, Tab, Table, tableFilters, TablePaginator, Tabs } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport \"./SelectITwin.scss\";\nimport type { GetAccessTokenFn } from \"../../context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useITwinsClient } from \"../../context/ITwinsClientContext\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport type { Column } from \"react-table\";\n\ntype IITwinTyped = CreateTypeFromInterface<ITwin>;\n\nconst defaultDisplayStrings = {\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n};\n\nexport enum ITwinType {\n Favorite = 0,\n Recent = 1,\n All = 2,\n}\n\nconst tabsWithIcons = [\n <Tab key=\"favorite\" label=\"Favorite iTwins\" startIcon={<SvgStarHollow />} />,\n <Tab key=\"recents\" label=\"Recent iTwins\" startIcon={<SvgCalendar />} />,\n <Tab key=\"all\" label=\"My iTwins\" startIcon={<SvgList />} />,\n];\n\nconst fetchITwins = async (\n getAccessToken: GetAccessTokenFn,\n iTwinsClient: ITwinsAccessClient,\n iTwinType: ITwinType,\n) => {\n const accessToken = await getAccessToken();\n switch (iTwinType) {\n case ITwinType.Favorite:\n return iTwinsClient.queryFavoritesAsync(accessToken, ITwinSubClass.Project);\n case ITwinType.Recent:\n return iTwinsClient.queryRecentsAsync(accessToken, ITwinSubClass.Project);\n default:\n return iTwinsClient.queryAsync(accessToken, ITwinSubClass.Project);\n }\n};\n\ninterface SelectITwinProps {\n onSelect: (iTwinId: string) => void;\n onCancel: () => void;\n onChangeITwinType: (iTwinType: number) => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n defaultITwinType?: ITwinType;\n}\n\nconst SelectITwin = ({\n onSelect,\n onCancel,\n onChangeITwinType,\n displayStrings: userDisplayStrings,\n defaultITwinType = ITwinType.Favorite,\n}: SelectITwinProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iTwinsClient = useITwinsClient();\n const [iTwinType, setITwinType] = useState<number>(defaultITwinType);\n\n const { data: iTwins, isFetching: isLoading } = useQuery({\n queryKey: [\"iTwinsByType\", iTwinType],\n queryFn: async () => (await fetchITwins(getAccessToken, iTwinsClient, iTwinType)).data!,\n });\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iTwinsColumns = useMemo<Column<IITwinTyped>[]>(\n () => [\n {\n id: \"iTwinNumber\",\n Header: `${displayStrings.iTwinNumber}`,\n accessor: \"number\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinName\",\n Header: `${displayStrings.iTwinName}`,\n accessor: \"displayName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinStatus\",\n Header: `${displayStrings.iTwinStatus}`,\n accessor: \"status\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n [displayStrings.iTwinNumber, displayStrings.iTwinName, displayStrings.iTwinStatus]\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=\"gmw-select-itwin-table-container\">\n <Tabs\n orientation=\"horizontal\"\n labels={tabsWithIcons}\n onTabSelected={(type) => {\n onChangeITwinType(type);\n setITwinType(type);\n }}\n activeIndex={iTwinType}\n type={\"borderless\"}\n contentClassName=\"gmw-table-holding-tab\">\n </Tabs>\n <Table<IITwinTyped>\n data={iTwins ?? []}\n columns={iTwinsColumns}\n className='gmw-select-itwin-table'\n emptyTableContent={`No ${displayStrings.iTwins} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id!);\n }}\n paginatorRenderer={paginator}\n />\n <div className=\"gmw-import-action-panel\">\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectITwin;\n"]}