udp-react-enterprise-component-library 25.14.1-beta.6 → 25.14.1-beta.8

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 (366) hide show
  1. package/dist/{Accordion-Cd6gzd60.js → Accordion-DL61AM6M.js} +2 -2
  2. package/dist/{Accordion-Cd6gzd60.js.map → Accordion-DL61AM6M.js.map} +1 -1
  3. package/dist/{ActionProvider-BPuiwxd4.js → ActionProvider-DL5qMp-u.js} +2 -2
  4. package/dist/{ActionProvider-BPuiwxd4.js.map → ActionProvider-DL5qMp-u.js.map} +1 -1
  5. package/dist/{ActionSplitScreen-Cym0gCOb.js → ActionSplitScreen-x0Bh5GEF.js} +3 -3
  6. package/dist/{ActionSplitScreen-Cym0gCOb.js.map → ActionSplitScreen-x0Bh5GEF.js.map} +1 -1
  7. package/dist/{ActionWrapper-CoP91vel.js → ActionWrapper-BRzh3vn0.js} +3 -3
  8. package/dist/{ActionWrapper-CoP91vel.js.map → ActionWrapper-BRzh3vn0.js.map} +1 -1
  9. package/dist/{BaseTreeMenu-DxXnVd_v.js → BaseTreeMenu-DHEMztjA.js} +7 -3
  10. package/dist/BaseTreeMenu-DHEMztjA.js.map +1 -0
  11. package/dist/{CatalogUtilities-j8ACiDe3.js → CatalogUtilities-BvkdL-P6.js} +1 -1
  12. package/dist/{CatalogUtilities-j8ACiDe3.js.map → CatalogUtilities-BvkdL-P6.js.map} +1 -1
  13. package/dist/{CircleButton-BFASpo5t.js → CircleButton-DBPFjNl1.js} +2 -2
  14. package/dist/{CircleButton-BFASpo5t.js.map → CircleButton-DBPFjNl1.js.map} +1 -1
  15. package/dist/{CrudBrowserContainer-Dpgwjt7c.js → CrudBrowserContainer-B8AKH7kQ.js} +9 -4
  16. package/dist/CrudBrowserContainer-B8AKH7kQ.js.map +1 -0
  17. package/dist/{EntityHeader-Buq_r4IE.js → EntityHeader-DOoeCEj3.js} +2 -2
  18. package/dist/{EntityHeader-Buq_r4IE.js.map → EntityHeader-DOoeCEj3.js.map} +1 -1
  19. package/dist/{FieldArrayCard-D5AzG_US.js → FieldArrayCard-ColjIX9t.js} +1 -1
  20. package/dist/{FieldArrayCard-D5AzG_US.js.map → FieldArrayCard-ColjIX9t.js.map} +1 -1
  21. package/dist/{FileViewer-Cp8UpoMF.js → FileViewer-Bhubf4Uv.js} +2 -2
  22. package/dist/{FileViewer-Cp8UpoMF.js.map → FileViewer-Bhubf4Uv.js.map} +1 -1
  23. package/dist/FluentBody-PdsySA1c.js +16 -0
  24. package/dist/FluentBody-PdsySA1c.js.map +1 -0
  25. package/dist/{FluentDataTable-BhA49RJS.js → FluentCell-C7lb2y4Z.js} +7 -67
  26. package/dist/FluentCell-C7lb2y4Z.js.map +1 -0
  27. package/dist/FluentDataTable-C3A36z2b.js +30 -0
  28. package/dist/FluentDataTable-C3A36z2b.js.map +1 -0
  29. package/dist/FluentHead-BTV-o45z.js +20 -0
  30. package/dist/FluentHead-BTV-o45z.js.map +1 -0
  31. package/dist/FluentRow-CVqnk9pB.js +18 -0
  32. package/dist/FluentRow-CVqnk9pB.js.map +1 -0
  33. package/dist/{FluentTimeline-ChthjfxZ.js → FluentTimeline-B0VjMqsq.js} +2 -2
  34. package/dist/{FluentTimeline-ChthjfxZ.js.map → FluentTimeline-B0VjMqsq.js.map} +1 -1
  35. package/dist/{GeoMap-jDYoW-Jl.js → GeoMap-CVGJXRRA.js} +2 -2
  36. package/dist/{GeoMap-jDYoW-Jl.js.map → GeoMap-CVGJXRRA.js.map} +1 -1
  37. package/dist/{IconRenderer-8w6JVRET.js → IconRenderer-DiwGfDul.js} +2 -2
  38. package/dist/{IconRenderer-8w6JVRET.js.map → IconRenderer-DiwGfDul.js.map} +1 -1
  39. package/dist/{InputsExample-C11hu5Fw.js → InputsExample-BPDEWFXK.js} +1 -1
  40. package/dist/{InputsExample-C11hu5Fw.js.map → InputsExample-BPDEWFXK.js.map} +1 -1
  41. package/dist/{Inquiry-Bi4iSUSQ.js → Inquiry-3kldgl4S.js} +6 -6
  42. package/dist/{Inquiry-Bi4iSUSQ.js.map → Inquiry-3kldgl4S.js.map} +1 -1
  43. package/dist/{MenuPage-CuB7g460.js → MenuPage-CJ1JVrk8.js} +10 -5
  44. package/dist/MenuPage-CJ1JVrk8.js.map +1 -0
  45. package/dist/{MenuPage-B4gixMrI.js → MenuPage-kn130DcT.js} +3 -3
  46. package/dist/{MttMainTimeline-au5xi1SZ.js → MttMainTimeline-Bme6LQZO.js} +2 -2
  47. package/dist/{MttMainTimeline-au5xi1SZ.js.map → MttMainTimeline-Bme6LQZO.js.map} +1 -1
  48. package/dist/{MttSummary-DHB1AW_0.js → MttSummary-CTETqPbU.js} +3 -3
  49. package/dist/{MttSummary-DHB1AW_0.js.map → MttSummary-CTETqPbU.js.map} +1 -1
  50. package/dist/{MyExportsPage-CBqIhu4I.js → MyExportsPage-Cq2MRoRf.js} +3 -2
  51. package/dist/{MyExportsPage-CBqIhu4I.js.map → MyExportsPage-Cq2MRoRf.js.map} +1 -1
  52. package/dist/{MyExportsPage-BE8qvq_F.js → MyExportsPage-ZP2V0i5h.js} +2 -2
  53. package/dist/{NotesScreen-moR3WUoq.js → NotesScreen-CmMz3GTR.js} +2 -2
  54. package/dist/{NotesScreen-moR3WUoq.js.map → NotesScreen-CmMz3GTR.js.map} +1 -1
  55. package/dist/{PageActionWrapper-KtNGraWi.js → PageActionWrapper-HgV0I8Km.js} +2 -2
  56. package/dist/{PageActionWrapper-KtNGraWi.js.map → PageActionWrapper-HgV0I8Km.js.map} +1 -1
  57. package/dist/{PageNotFoundRoute-BSlmqegI.js → PageNotFoundRoute-BGj6tqmn.js} +3 -2
  58. package/dist/{PageNotFoundRoute-BSlmqegI.js.map → PageNotFoundRoute-BGj6tqmn.js.map} +1 -1
  59. package/dist/PageNotFoundRoute-CTaRcNjL.js +4 -0
  60. package/dist/PasswordResetRedirect-BMDMHdhE.js +4 -0
  61. package/dist/{PasswordResetRedirect-BvC0vH06.js → PasswordResetRedirect-avgVRKhM.js} +3 -2
  62. package/dist/{PasswordResetRedirect-BvC0vH06.js.map → PasswordResetRedirect-avgVRKhM.js.map} +1 -1
  63. package/dist/{RecentlyLoadedNodesTable-B5KlS1HR.js → RecentlyLoadedNodesTable-BRxssq07.js} +2 -2
  64. package/dist/{RecentlyLoadedNodesTable-B5KlS1HR.js.map → RecentlyLoadedNodesTable-BRxssq07.js.map} +1 -1
  65. package/dist/{RejectIcon-BoBX4G_D.js → RejectIcon-D8AWbOZq.js} +1 -1
  66. package/dist/{RejectIcon-BoBX4G_D.js.map → RejectIcon-D8AWbOZq.js.map} +1 -1
  67. package/dist/{RemindersCard-CRstZlRF.js → RemindersCard-BrjYmZVz.js} +2 -2
  68. package/dist/{RemindersCard-CRstZlRF.js.map → RemindersCard-BrjYmZVz.js.map} +1 -1
  69. package/dist/{RemindersScreen-C2hcBWnk.js → RemindersScreen-CVTHY97W.js} +2 -2
  70. package/dist/{RemindersScreen-C2hcBWnk.js.map → RemindersScreen-CVTHY97W.js.map} +1 -1
  71. package/dist/{Shell-CuYfQQKW.js → Shell-DM4ZssU1.js} +3 -3
  72. package/dist/{Shell-CuYfQQKW.js.map → Shell-DM4ZssU1.js.map} +1 -1
  73. package/dist/TileLayer-Bk6rITEu.js +31 -0
  74. package/dist/TileLayer-Bk6rITEu.js.map +1 -0
  75. package/dist/{TreeUtilities-DVY-2md6.js → TreeUtilities-XLrXtUeL.js} +9 -8
  76. package/dist/{TreeUtilities-DVY-2md6.js.map → TreeUtilities-XLrXtUeL.js.map} +1 -1
  77. package/dist/UI/accordion/index.js +3 -3
  78. package/dist/UI/advancedSearchBuilder/index.js +1 -1
  79. package/dist/UI/charts/index.js +1 -1
  80. package/dist/UI/components/dataDisplay/index.js +1 -1
  81. package/dist/UI/components/feedback/index.js +1 -1
  82. package/dist/UI/components/index.js +3 -3
  83. package/dist/UI/containers/index.js +1 -1
  84. package/dist/UI/dataDisplay/FluentActivity/index.js +1 -1
  85. package/dist/UI/dataDisplay/FluentDataTable/FluentBody/index.js +3 -0
  86. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +13 -0
  87. package/dist/UI/dataDisplay/FluentDataTable/FluentHead/index.js +3 -0
  88. package/dist/UI/dataDisplay/FluentDataTable/FluentRow/index.js +3 -0
  89. package/dist/UI/dataDisplay/FluentDataTable/index.js +7 -3
  90. package/dist/UI/dataDisplay/address/index.js +1 -1
  91. package/dist/UI/dataDisplay/cardList/index.js +1 -1
  92. package/dist/UI/dataDisplay/directory/index.js +1 -1
  93. package/dist/UI/dataDisplay/entityHeader/index.js +4 -4
  94. package/dist/UI/dataDisplay/index.js +20 -16
  95. package/dist/UI/dataDisplay/map/index.js +1 -1
  96. package/dist/UI/dataDisplay/notes/index.js +1 -1
  97. package/dist/UI/dataDisplay/ticketCard/index.js +1 -1
  98. package/dist/UI/dataDisplay/typography/index.js +1 -1
  99. package/dist/UI/dataDisplay/visualization/index.js +1 -1
  100. package/dist/UI/demos/index.js +2 -2
  101. package/dist/UI/feedback/index.js +1 -1
  102. package/dist/UI/fileViewer/index.js +3 -3
  103. package/dist/UI/floorplans/index.js +1 -1
  104. package/dist/UI/forms/index.js +3 -3
  105. package/dist/UI/iframe/index.js +1 -1
  106. package/dist/UI/index.js +67 -63
  107. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  108. package/dist/UI/loading/index.js +1 -1
  109. package/dist/UI/mapLayout/index.js +1 -1
  110. package/dist/UI/maps/index.js +2 -2
  111. package/dist/UI/navigation/index.js +4 -4
  112. package/dist/UI/navigation/menus/index.js +1 -1
  113. package/dist/UI/navigation/tabs/defaultTabs/index.js +1 -1
  114. package/dist/UI/navigation/tabs/index.js +2 -2
  115. package/dist/UI/property/index.js +1 -1
  116. package/dist/UI/stepper/index.js +1 -1
  117. package/dist/UI/support/index.js +1 -1
  118. package/dist/UI/surfaces/NestedGrid/index.js +2 -2
  119. package/dist/UI/surfaces/NestedGrid/ui/index.js +1 -1
  120. package/dist/UI/surfaces/cards/index.js +3 -3
  121. package/dist/UI/surfaces/cards/newsCard/index.js +1 -1
  122. package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
  123. package/dist/UI/surfaces/index.js +6 -6
  124. package/dist/UI/templates/index.js +3 -3
  125. package/dist/UI/templates/newGrid/index.js +1 -1
  126. package/dist/UI/templates/ui/index.js +1 -1
  127. package/dist/UI/timeline/fluentTimeline/index.js +3 -3
  128. package/dist/UI/timeline/index.js +4 -4
  129. package/dist/UI/utilityDisplay/alerts/index.js +1 -1
  130. package/dist/UI/utilityDisplay/index.js +5 -5
  131. package/dist/UI/utilityDisplay/ui/index.js +1 -1
  132. package/dist/UI/utilityDisplay/utilities/index.js +1 -1
  133. package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
  134. package/dist/UI/widgets/index.js +1 -1
  135. package/dist/{UdpMaintenanceConfigPage-DdZJT9rB.js → UdpMaintenanceConfigPage-DfKk0PmB.js} +1 -1
  136. package/dist/{UdpMaintenanceConfigPage-CnvPi5Gq.js → UdpMaintenanceConfigPage-mJ4AkDYp.js} +3 -2
  137. package/dist/UdpMaintenanceConfigPage-mJ4AkDYp.js.map +1 -0
  138. package/dist/{UdpMaintenanceEnginePage-o40sezly.js → UdpMaintenanceEnginePage-DAioIeSf.js} +8 -3
  139. package/dist/UdpMaintenanceEnginePage-DAioIeSf.js.map +1 -0
  140. package/dist/{UdpMaintenanceEnginePage-b5cm6uW2.js → UdpMaintenanceEnginePage-M0RbzSTX.js} +2 -2
  141. package/dist/{UdpMap-lSMNXUoe.js → UdpMap-5NE3rUIS.js} +1 -1
  142. package/dist/{UdpMap-lSMNXUoe.js.map → UdpMap-5NE3rUIS.js.map} +1 -1
  143. package/dist/{UdpRoutes-iU7qvtVt.js → UdpRoutes-Bmn455yo.js} +9 -9
  144. package/dist/{UdpRoutes-iU7qvtVt.js.map → UdpRoutes-Bmn455yo.js.map} +1 -1
  145. package/dist/{VirtualBrowser-Dg52rd5g.js → VirtualBrowser-B66Iyn4h.js} +4 -4
  146. package/dist/{VirtualBrowser-BNjKPaXR.js → VirtualBrowser-BansR6-F.js} +4 -3
  147. package/dist/{VirtualBrowser-BNjKPaXR.js.map → VirtualBrowser-BansR6-F.js.map} +1 -1
  148. package/dist/{VirtualForm-Da9cgNqE.js → VirtualForm-DlTtINdK.js} +2 -2
  149. package/dist/{VirtualForm-Da9cgNqE.js.map → VirtualForm-DlTtINdK.js.map} +1 -1
  150. package/dist/{WorkflowContainer-Bf7oW53_.js → WorkflowContainer-BTwu3z4L.js} +5 -5
  151. package/dist/{WorkflowContainer-Dmp3rpCg.js → WorkflowContainer-Cq23yESD.js} +5 -4
  152. package/dist/{WorkflowContainer-Dmp3rpCg.js.map → WorkflowContainer-Cq23yESD.js.map} +1 -1
  153. package/dist/{WorkflowTreeMenu-Dc9l7jEY.js → WorkflowTreeMenu-BtolZKVF.js} +2 -2
  154. package/dist/{WorkflowTreeMenu-Dc9l7jEY.js.map → WorkflowTreeMenu-BtolZKVF.js.map} +1 -1
  155. package/dist/actions/index.js +8 -8
  156. package/dist/actions/sidebar/index.js +1 -1
  157. package/dist/actions/utils/index.js +1 -1
  158. package/dist/{cards-CpCLKLuT.js → cards-CD1BE7Mh.js} +1 -1
  159. package/dist/{cards-CpCLKLuT.js.map → cards-CD1BE7Mh.js.map} +1 -1
  160. package/dist/{charts-Dm_iW2_N.js → charts-PdiOkLDF.js} +1 -1
  161. package/dist/{charts-Dm_iW2_N.js.map → charts-PdiOkLDF.js.map} +1 -1
  162. package/dist/componentSystems/multiThreadTimeline/functions/index.js +1 -1
  163. package/dist/componentSystems/multiThreadTimeline/index.js +10 -10
  164. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +4 -4
  165. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +5 -5
  166. package/dist/componentSystems/multiThreadTimeline/ui/index.js +5 -5
  167. package/dist/componentSystems/multiThreadTimeline/ui/modified/index.js +1 -1
  168. package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
  169. package/dist/componentSystems/pageRenderer/hooks/index.js +1 -1
  170. package/dist/componentSystems/pageRenderer/index.js +4 -4
  171. package/dist/componentSystems/pageRenderer/utils/index.js +1 -1
  172. package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
  173. package/dist/dataBrowser/forms/index.js +1 -1
  174. package/dist/dataBrowser/index.js +1 -1
  175. package/dist/{defaultTabs-Bmq_wtOy.js → defaultTabs-C07t9FPZ.js} +1 -1
  176. package/dist/{defaultTabs-Bmq_wtOy.js.map → defaultTabs-C07t9FPZ.js.map} +1 -1
  177. package/dist/hooks/index.js +2 -2
  178. package/dist/index.js +161 -73
  179. package/dist/index.js.map +1 -1
  180. package/dist/inquiry/dashboard/index.js +4 -4
  181. package/dist/inquiry/index.js +13 -13
  182. package/dist/inquiry/inquiryBar/index.js +1 -1
  183. package/dist/inquiry/search/index.js +1 -1
  184. package/dist/maintenanceEngine/crudBrowser/index.js +2 -2
  185. package/dist/maintenanceEngine/index.js +7 -7
  186. package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
  187. package/dist/maintenanceEngine/virtualBrowser/index.js +4 -4
  188. package/dist/map-library/Source/index.js +34 -1
  189. package/dist/map-library/Source/index.js.map +1 -0
  190. package/dist/maps/index.js +4 -4
  191. package/dist/maps/leafletMaps/index.js +2 -2
  192. package/dist/maps/leafletMaps/ui/index.js +1 -1
  193. package/dist/maps/openLayerMaps/Layers/index.js +45 -3
  194. package/dist/maps/openLayerMaps/Layers/index.js.map +1 -0
  195. package/dist/menuPage/index.js +3 -3
  196. package/dist/notes/index.js +2 -2
  197. package/dist/reminders/index.js +3 -3
  198. package/dist/routes/index.js +1 -1
  199. package/dist/shell/index.js +11 -11
  200. package/dist/shell/ui/addUser/index.js +1 -1
  201. package/dist/shell/ui/appSwitcher/index.js +1 -1
  202. package/dist/shell/ui/index.js +3 -3
  203. package/dist/{theme-HNYKI2UT.js → theme-DtUeftmy.js} +3 -2
  204. package/dist/theme-DtUeftmy.js.map +1 -0
  205. package/dist/treeMenu/index.js +2 -2
  206. package/dist/types/index.d.ts +1 -0
  207. package/dist/types/maintenanceEngine/virtualBrowser/VirtualBrowser.d.ts +1 -0
  208. package/dist/types/menuPage/CustomMenuPage.d.ts +22 -0
  209. package/dist/types/routes/components/PageNotFoundRoute.d.ts +1 -0
  210. package/dist/types/routes/components/PasswordResetRedirect.d.ts +1 -0
  211. package/dist/types/tsconfig.tsbuildinfo +1 -1
  212. package/dist/types/udp/export/MyExportsPage.d.ts +1 -0
  213. package/dist/types/utilities/tree/TreeUtilities.d.ts +2 -0
  214. package/dist/types/workflow/WorkflowContainer.d.ts +1 -0
  215. package/dist/udp/export/index.js +1 -1
  216. package/dist/udp/pages/index.js +10 -10
  217. package/dist/{udpPages-WbvmyuOa.js → udpPages-D6t7REhp.js} +7 -7
  218. package/dist/{udpPages-WbvmyuOa.js.map → udpPages-D6t7REhp.js.map} +1 -1
  219. package/dist/{ui-DEnf6-9j.js → ui-z-P1tNCJ.js} +1 -1
  220. package/dist/{ui-DEnf6-9j.js.map → ui-z-P1tNCJ.js.map} +1 -1
  221. package/dist/{useSingleLogout-DRSY_UK_.js → useSingleLogout-DeHKk6v6.js} +2 -2
  222. package/dist/{useSingleLogout-DRSY_UK_.js.map → useSingleLogout-DeHKk6v6.js.map} +1 -1
  223. package/dist/{useUpdateSearchParams-fEinMP0r.js → useUpdateSearchParams-CKTTs6Zx.js} +1 -1
  224. package/dist/{useUpdateSearchParams-fEinMP0r.js.map → useUpdateSearchParams-CKTTs6Zx.js.map} +1 -1
  225. package/dist/utilities/DemoJuly/index.js +1 -1
  226. package/dist/utilities/aggrid/index.js +1 -1
  227. package/dist/utilities/auth/index.js +3 -3
  228. package/dist/utilities/catalog/index.js +2 -2
  229. package/dist/utilities/chatBot/index.js +1 -1
  230. package/dist/utilities/crud/index.js +1 -1
  231. package/dist/utilities/customIcons/index.js +2 -2
  232. package/dist/utilities/entities/index.js +1 -1
  233. package/dist/utilities/floorplanFunctions/index.js +1 -1
  234. package/dist/utilities/iconLibrary/index.js +1 -1
  235. package/dist/utilities/index.js +36 -36
  236. package/dist/utilities/input/index.js +1 -1
  237. package/dist/utilities/maintenanceEngine/index.js +1 -1
  238. package/dist/utilities/menus/index.js +1 -1
  239. package/dist/utilities/page/index.js +1 -1
  240. package/dist/utilities/provider/index.js +7 -7
  241. package/dist/utilities/redirect/index.js +1 -1
  242. package/dist/utilities/rules/index.js +1 -1
  243. package/dist/utilities/search/index.js +1 -1
  244. package/dist/utilities/storage/index.js +1 -1
  245. package/dist/utilities/style/index.js +1 -1
  246. package/dist/utilities/tenant/index.js +1 -1
  247. package/dist/utilities/tree/index.js +2 -2
  248. package/dist/utilities/uploader/index.js +1 -1
  249. package/dist/utilities/utilityBar/index.js +1 -1
  250. package/dist/utilities/workflow/index.js +1 -1
  251. package/dist/{virtualActions-DlqSD5s0.js → virtualActions-B-cs7Mxr.js} +1 -1
  252. package/dist/{virtualActions-DlqSD5s0.js.map → virtualActions-B-cs7Mxr.js.map} +1 -1
  253. package/dist/workflow/components/index.js +1 -1
  254. package/dist/workflow/index.js +6 -6
  255. package/dist/workflow/menus/index.js +3 -3
  256. package/export-map.json +4 -3
  257. package/package.json +3 -2
  258. package/dist/BaseTreeMenu-DxXnVd_v.js.map +0 -1
  259. package/dist/CrudBrowserContainer-Dpgwjt7c.js.map +0 -1
  260. package/dist/FluentDataTable-BhA49RJS.js.map +0 -1
  261. package/dist/Layers-CQUYxZqM.js +0 -71
  262. package/dist/Layers-CQUYxZqM.js.map +0 -1
  263. package/dist/MenuPage-CuB7g460.js.map +0 -1
  264. package/dist/PageNotFoundRoute-Dw80_viU.js +0 -4
  265. package/dist/PasswordResetRedirect-P7XBzXp-.js +0 -4
  266. package/dist/UdpMaintenanceConfigPage-CnvPi5Gq.js.map +0 -1
  267. package/dist/UdpMaintenanceEnginePage-o40sezly.js.map +0 -1
  268. package/dist/theme-HNYKI2UT.js.map +0 -1
  269. /package/dist/{DemoJuly-mBlFDlXO.js → DemoJuly-D7RhIRiO.js} +0 -0
  270. /package/dist/{FluentActivity-BrIQN8GI.js → FluentActivity-Btq_69F-.js} +0 -0
  271. /package/dist/{FluentDataTable-qrNqXPRF.js → FluentDataTable-BwVi4r3o.js} +0 -0
  272. /package/dist/{NestedGrid-CHqHYRS8.js → NestedGrid-fseCejIz.js} +0 -0
  273. /package/dist/{accordion-BHm_jIsS.js → accordion-ChuOXM_i.js} +0 -0
  274. /package/dist/{addUser-CyMrC1rE.js → addUser-CS0LS9_W.js} +0 -0
  275. /package/dist/{address-DlScXNBU.js → address-D8Cf2B--.js} +0 -0
  276. /package/dist/{advancedSearchBuilder-JWTOT_dc.js → advancedSearchBuilder-BNE1r194.js} +0 -0
  277. /package/dist/{aggrid-DuGBxiR8.js → aggrid-C3KMLJBL.js} +0 -0
  278. /package/dist/{alerts-fNWU3EXg.js → alerts-B--Jzz0v.js} +0 -0
  279. /package/dist/{appSwitcher-dCBbv3It.js → appSwitcher-DqliMkfh.js} +0 -0
  280. /package/dist/{auth-CwXOQn2B.js → auth-DLdDsXt6.js} +0 -0
  281. /package/dist/{cardList-gSDuPOQB.js → cardList-B0bYLPWj.js} +0 -0
  282. /package/dist/{catalog-p3yrFQgg.js → catalog-DLo7sqLU.js} +0 -0
  283. /package/dist/{chatBot-_aXO7sdm.js → chatBot-dEV9kiqk.js} +0 -0
  284. /package/dist/{components-BX70C7Xh.js → components-BpG8EmUu.js} +0 -0
  285. /package/dist/{components-DV8tbAMk.js → components-CnnFIob2.js} +0 -0
  286. /package/dist/{containers-CXy3OKvD.js → containers-Cl2DkUJz.js} +0 -0
  287. /package/dist/{crud-By2po3xT.js → crud-C_ERd-Ed.js} +0 -0
  288. /package/dist/{crudBrowser-3U59T0v9.js → crudBrowser-BoZrPfr-.js} +0 -0
  289. /package/dist/{customIcons-DdZ5YpJU.js → customIcons-BzKpDhOz.js} +0 -0
  290. /package/dist/{dashboard-iA68nouc.js → dashboard-B3PkRVxB.js} +0 -0
  291. /package/dist/{dataDisplay-D-k_23Y1.js → dataDisplay-BivdlLmj.js} +0 -0
  292. /package/dist/{dataDisplay-DwmhNGSc.js → dataDisplay-BkAq_6Ba.js} +0 -0
  293. /package/dist/{demos-Be_LEs0N.js → demos-L9SUck5b.js} +0 -0
  294. /package/dist/{directory-QndEV4Ip.js → directory-BmBd7DNf.js} +0 -0
  295. /package/dist/{entities-okCA6j-F.js → entities-Z3wHDYPc.js} +0 -0
  296. /package/dist/{entityHeader-BJdZfqWn.js → entityHeader-uoWltVXF.js} +0 -0
  297. /package/dist/{feedback-BFVY3F4O.js → feedback-CT_YIVkQ.js} +0 -0
  298. /package/dist/{feedback-DxBgLa50.js → feedback-Cq3y6mnG.js} +0 -0
  299. /package/dist/{fileViewer-IW404ILx.js → fileViewer-DNmXMgEv.js} +0 -0
  300. /package/dist/{floorplanFunctions-C3h7qiy7.js → floorplanFunctions-CyG-A6Ho.js} +0 -0
  301. /package/dist/{floorplans-CAy6OBti.js → floorplans-DCsLstCq.js} +0 -0
  302. /package/dist/{fluentTimeline-VY1uVRIt.js → fluentTimeline-Bw3MB61J.js} +0 -0
  303. /package/dist/{forms-3Zdzp4gn.js → forms-CTGzji9-.js} +0 -0
  304. /package/dist/{forms-BbMWRT_y.js → forms-DBN5u9vQ.js} +0 -0
  305. /package/dist/{functions-DxOG2OTQ.js → functions-B886DHHN.js} +0 -0
  306. /package/dist/{hocs-DBWxBvoU.js → hocs-CLAAIJfF.js} +0 -0
  307. /package/dist/{hooks-CwtIArSw.js → hooks-d0fHOxwg.js} +0 -0
  308. /package/dist/{iconLibrary-Ckm-SSry.js → iconLibrary-DkiwUTn0.js} +0 -0
  309. /package/dist/{iframe-0yE4pScI.js → iframe-qtuPeiq4.js} +0 -0
  310. /package/dist/{input-JbgQSbft.js → input-Bd3pOKUF.js} +0 -0
  311. /package/dist/{inquiryBar-Dxy8ppZB.js → inquiryBar-cjTVuVy_.js} +0 -0
  312. /package/dist/{leafletMaps-s9gEVu5W.js → leafletMaps-BjTYRV2R.js} +0 -0
  313. /package/dist/{loading-xxfy2ZlM.js → loading-BwYpS7fe.js} +0 -0
  314. /package/dist/{maintenanceEngine-BafuhHra.js → maintenanceEngine-BiIXrgHI.js} +0 -0
  315. /package/dist/{map-DV91zIAC.js → map-BWuSYF6e.js} +0 -0
  316. /package/dist/{mapLayout-DtENn_sr.js → mapLayout-D7YBYQ7P.js} +0 -0
  317. /package/dist/{maps-D5joGxHk.js → maps-CevY6l2a.js} +0 -0
  318. /package/dist/{menus-B32cxSun.js → menus-CreZRf8_.js} +0 -0
  319. /package/dist/{menus-C0jFXQQc.js → menus-CwNO89uQ.js} +0 -0
  320. /package/dist/{menus-Nbum4678.js → menus-lneAs-ot.js} +0 -0
  321. /package/dist/{modified-DKPoXWSV.js → modified-Cf42z6i8.js} +0 -0
  322. /package/dist/{mttMainTimeline-DmKTPyfl.js → mttMainTimeline-D7IXpP1x.js} +0 -0
  323. /package/dist/{mttSummary-DbADB7pv.js → mttSummary-BMkmdNju.js} +0 -0
  324. /package/dist/{navigation-C_xITs8t.js → navigation-B6o0jZNc.js} +0 -0
  325. /package/dist/{newGrid-DtnaU91a.js → newGrid-DMD24lFv.js} +0 -0
  326. /package/dist/{newsCard-C7LwX_z1.js → newsCard-BEEsHzuT.js} +0 -0
  327. /package/dist/{notes-BzUsl5ox.js → notes-DXPGMU6E.js} +0 -0
  328. /package/dist/{page-XSjNp2Nd.js → page-DF9Cce_a.js} +0 -0
  329. /package/dist/{property-D-lRqI5q.js → property-BxFkD-ST.js} +0 -0
  330. /package/dist/{provider-276_eTQP.js → provider-CDMCgVZv.js} +0 -0
  331. /package/dist/{redirect-Cb0zPMUp.js → redirect-DXdJsOUE.js} +0 -0
  332. /package/dist/{rules-C4NrJLax.js → rules-vy1m9JZd.js} +0 -0
  333. /package/dist/{search-D77NrIpT.js → search-By3X_wDu.js} +0 -0
  334. /package/dist/{search-w-OrIt_P.js → search-CxezFXdW.js} +0 -0
  335. /package/dist/{sidebar-CqBPneDb.js → sidebar-CGs1WNkU.js} +0 -0
  336. /package/dist/{stepper-BImbyzRm.js → stepper-DSXFT-Iq.js} +0 -0
  337. /package/dist/{storage-BL60r231.js → storage-Dzx9lS99.js} +0 -0
  338. /package/dist/{style-BiG-DeqE.js → style-DCetPHEb.js} +0 -0
  339. /package/dist/{support-BMrRk2nr.js → support-1Hknr9H-.js} +0 -0
  340. /package/dist/{surfaces-D7Gv5-jf.js → surfaces-SrimKL5h.js} +0 -0
  341. /package/dist/{tableBrowser-BMPoXYzI.js → tableBrowser-BgKcSdyL.js} +0 -0
  342. /package/dist/{tabs-LSMdumcR.js → tabs-HRFDrAzD.js} +0 -0
  343. /package/dist/{templates-DxIYQEwm.js → templates-XRou7iKM.js} +0 -0
  344. /package/dist/{tenant-Ba0QsFun.js → tenant-9yY-GOUj.js} +0 -0
  345. /package/dist/{ticketCard-vpgwV6yo.js → ticketCard-B1ueM7V9.js} +0 -0
  346. /package/dist/{timeline-B7z-jUTx.js → timeline-CvlnNFik.js} +0 -0
  347. /package/dist/{tree-Bdu7gGxB.js → tree-n0-Yv6Oq.js} +0 -0
  348. /package/dist/{typography-cWXaOaj-.js → typography-BUD73n7-.js} +0 -0
  349. /package/dist/{ui-B7XVO_hX.js → ui-5ngIc6S4.js} +0 -0
  350. /package/dist/{ui-Cje9T4Uy.js → ui-C4SYLrHn.js} +0 -0
  351. /package/dist/{ui-RoqPR_sc.js → ui-CMEdOOxm.js} +0 -0
  352. /package/dist/{ui-b3YPtlpb.js → ui-GKTg3I2L.js} +0 -0
  353. /package/dist/{ui-en5KNlmI.js → ui-Qt0TiwMS.js} +0 -0
  354. /package/dist/{uploader-6C3jSbvh.js → uploader-DSBUHOEF.js} +0 -0
  355. /package/dist/{utilities-DI2DK3EE.js → utilities-C8yTJ1rO.js} +0 -0
  356. /package/dist/{utilityBar-BnpknzCg.js → utilityBar-BgOu4S_x.js} +0 -0
  357. /package/dist/{utilityDisplay-BtOjD5dW.js → utilityDisplay-B2kppcKk.js} +0 -0
  358. /package/dist/{utilityHeader-BcADv4L8.js → utilityHeader-B9G8SBPx.js} +0 -0
  359. /package/dist/{utils-CxjlnL_a.js → utils-BWi9Cg7u.js} +0 -0
  360. /package/dist/{utils-Dp2c8faV.js → utils-BaVKyFU8.js} +0 -0
  361. /package/dist/{virtualBrowser-CYUz09Zq.js → virtualBrowser-DjU3bOv0.js} +0 -0
  362. /package/dist/{visualization-Nic9OP-u.js → visualization-C71zC7Zo.js} +0 -0
  363. /package/dist/{widgets-_PSKWMOa.js → widgets-BOvBco5h.js} +0 -0
  364. /package/dist/{workOrderCard-D95cXcFu.js → workOrderCard-Cq8NIxl6.js} +0 -0
  365. /package/dist/{workflow-OW7yAb2X.js → workflow-Cy4leS9X.js} +0 -0
  366. /package/dist/{wrappers-YZRMr_jq.js → wrappers-Bvf3DVNC.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"udpPages-WbvmyuOa.js","names":["t","params","apiMutate","products","IconLibrary","apiMutate","UdpVerticalManagementSidesheet","apiMutate","grid","panel","UdpGridPanelManagementSidesheet","useStyles","useStyles","FluentTrendArrow","value","layout","FluentStatsSnippet","WidgetCard","ChartSummaryToggle","layout","useStyles","WidgetCard","FluentStatsSnippet","useStyles","FluentDisplayNumber","useStyles","FluentStatNumbers","useStyles","FluentStatNumber","useStyles","WidgetCard","FluentPrimaryStatNumber","FluentSecondaryStatNumber","WidgetCard","apiMutate","entityName","uuid","params","t","uuid","reminders","WidgetCard"],"sources":["../src/udp/pages/UdpNotesPage.jsx","../src/udp/pages/UdpVerticalManagementSidesheet.jsx","../src/udp/pages/UdpVerticalManagementPage.jsx","../src/udp/pages/UdpGridPanelManagementSidesheet.jsx","../src/udp/pages/UdpGridPanelManagementPage.jsx","../src/udp/pages/UdpInquiryMaintenanceEnginePage.jsx","../src/udp/pages/UdpReportsPage.jsx","../src/UI/widgets/FluentComponents/atoms/FluentTrendArrow.jsx","../src/UI/widgets/FluentComponents/atoms/FluentStatsSnippet.jsx","../src/UI/widgets/FluentComponents/ChartSummaryToggle.jsx","../src/UI/widgets/utils/ConvertISODate.js","../src/UI/widgets/library/DonutChartWidget.jsx","../src/UI/widgets/library/SparklineWidget.jsx","../src/UI/widgets/FluentComponents/molecules/FluentStatNumber.jsx","../src/UI/widgets/FluentComponents/molecules/FluentPrimaryStatNumber.jsx","../src/UI/widgets/FluentComponents/molecules/FluentSecondaryStatNumber.jsx","../src/UI/widgets/library/ProgressBarWidget.jsx","../src/UI/widgets/library/RecentlyLoadedNodesWidget.jsx","../src/udp/pages/ChatUDP.jsx","../src/udp/pages/UdpDataBrowserPage.jsx","../src/udp/pages/UdpRemindersPage.jsx","../src/UI/widgets/library/RemindersWidget.jsx","../src/udp/pages/UdpPrivateForm.jsx","../src/udp/pages/UdpFormsListPage.jsx","../src/udp/pages/UdpFormsBuilderPage.jsx","../src/udp/pages/UdpImportFromFileMappingPage.jsx","../src/udp/pages/udpPages.js"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { UdpEnums } from '../../enums/unitySystemEnums';\nimport { useActionState } from '../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\nimport { EditIcon, ViewIcon } from '@fluentui/react-icons';\nimport { NotesScreen } from '../../notes/NotesScreen';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useActions } from '../../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../../enums/unitySystemEnums';\nimport { useUser } from '../../utilities/auth/useUser';\n\nconst UdpNotesPage = (props) => {\n const { params } = props;\n const { nodeObj, manytoManyNodeObjKey } = params;\n const [notes, setNotes] = useState([]);\n const [typeOptions, setTypeOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [noteId, setNoteId] = useState('');\n const { openSplitScreen } = useActions();\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const formRef = useRef(null);\n const user = useUser();\n\n const noteFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTypeGetAllApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Type,\n 'unityBaseGetAllMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const getNotes = useCallback(async () => {\n if (!nodeObj) {\n return [];\n }\n let notesList = [];\n setLoading(true);\n const filterElements = [\n {\n searchField: 'entityBusinessKey',\n searchValue: manytoManyNodeObjKey\n ? nodeObj[manytoManyNodeObjKey]?.businessObjectKey\n : nodeObj?.businessObjectKey,\n searchOperator: '='\n }\n ];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n\n if (noteFiledForSearchApiMethod) {\n const response = await executeQueryAdHoc(\n data,\n noteFiledForSearchApiMethod.apiMethodId\n );\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n notesList = pageList.map((item) => item.note);\n }\n } else {\n handleErrorSnackbar(null, t('Could not retrieve notes'));\n }\n } else {\n handleErrorSnackbar(null, t('Search NoteFiledFor Method Not Promoted'));\n }\n setLoading(false);\n setNotes(notesList);\n }, [\n noteFiledForSearchApiMethod,\n handleErrorSnackbar,\n nodeObj,\n manytoManyNodeObjKey,\n t,\n user\n ]);\n\n const openSheet = useCallback((value) => {\n setNoteId(value?.id || '');\n setSheetOpen(true);\n }, []);\n\n const closeSheet = useCallback(() => {\n setNoteId('');\n setSheetOpen(false);\n }, []);\n\n const handleEditPage = useCallback(\n (value) => {\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Notes,\n params: { id: value?.id || '', reloadNotes: getNotes }\n });\n },\n [openSplitScreen, getNotes]\n );\n\n const getType = useCallback(\n (params) => {\n const type = typeOptions.find((t) => t.code === params.data.typeCode);\n return type?.name || '';\n },\n [typeOptions]\n );\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Note'),\n icon: ViewIcon,\n onClick: openSheet,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEditPage,\n disabled: false\n }\n ],\n [t, openSheet, handleEditPage]\n );\n\n const columnDefs = [\n {\n headerName: 'Date',\n field: 'createdOn',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Subject',\n field: 'subject',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Note',\n field: 'content',\n resizable: true,\n sortable: true,\n valueGetter: (params) => params.data.content.replace(/(<([^>]+)>)/gi, '')\n },\n {\n headerName: 'Type',\n field: 'typeCode',\n resizable: true,\n sortable: true,\n valueGetter: getType\n },\n {\n headerName: 'Created By',\n field: 'userDisplayName',\n resizable: true,\n sortable: true\n },\n {\n headerName: '',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ];\n\n // no dependencies in the array because we only want getNotes to run once\n useEffect(() => {\n getNotes();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const getTypeOptions = async () => {\n let options = [];\n if (noteTypeGetAllApiMethod) {\n const typesResponse = await executeQueryAdHoc(\n { data: {} },\n noteTypeGetAllApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [noteTypeGetAllApiMethod]);\n\n return (\n <>\n <SideSheet\n open={sheetOpen}\n onClose={closeSheet}\n title={t('Note')}\n width={600}\n >\n <NotesScreen\n viewOnly={true}\n id={noteId}\n shortcutContentFinderEnabled={false}\n formRef={formRef}\n />\n </SideSheet>\n <AmbientGridTemplate\n title={'Notes'}\n data={notes}\n columnDefs={columnDefs}\n loading={loading}\n frameworkComponents={{ actionsRenderer: ActionsRenderer }}\n groupingData={[]}\n />\n </>\n );\n};\n\nexport default UdpNotesPage;\n","import React, {\n useCallback,\n useState,\n useMemo,\n useRef,\n useEffect,\n useLayoutEffect\n} from 'react';\nimport {\n TextField,\n Button,\n LinearProgress,\n IconButton\n} from '@material-ui/core';\nimport { Form } from '../../utilities/form/Form';\nimport { Field } from '../../utilities/form/Field';\nimport { SubmitButton } from '../../utilities/form/SubmitButton';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { useActionState } from '../../hooks/useActions';\nimport { useTranslation } from 'react-i18next';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { FluentCheckbox } from '../../UI/inputs/checkbox/FluentCheckbox';\nimport { UnityFluentIcon } from '../../utilities/iconLibrary/UnityFluentIcon';\nimport {\n findAllParentIds,\n getIconFromName\n} from '../../utilities/tree/TreeUtilities';\nimport { getUnityIconFromName } from '../../utilities/iconLibrary/UnityIconLibrary';\nimport IconLibrary from '../../utilities/iconLibrary/IconLibrary';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { FormButtons } from '../../utilities/form';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpVerticalManagementSidesheet = (props) => {\n const {\n selectedVertical,\n environment,\n associatedProducts,\n isEdit,\n deleteVertical,\n open,\n selectedCatalog,\n closeSidesheet,\n onSubmit,\n ...sheetProps\n } = props;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n const actionState = useActionState();\n const [displayedIcon, setDisplayedIcon] = useState({\n name: 'StatusCircleQuestionMarkIcon',\n color: '',\n type: ''\n });\n const [products, setProducts] = useState([]);\n const [openIconLibrary, setOpenIconLibrary] = useState(false);\n\n const [selectedProductIds, setSelectedProductIds] = useState([]);\n const [checkboxValues, setCheckboxValues] = useState([]);\n const [submitButtonDisabled, setSubmitButtonDisabled] = useState(true);\n const selectedProductIdsRef = useRef();\n selectedProductIdsRef.current = selectedProductIds;\n const displayedIconRef = useRef();\n displayedIconRef.current = displayedIcon;\n const selectedVerticalRef = useRef();\n selectedVerticalRef.current = selectedVertical;\n const formRef = useRef();\n const nameRef = useRef();\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const CheckBoxRenderer = ({ onChange, value, id, defaultChecked }) => {\n const isAssociatedToVertical = useCallback(\n (productId) => {\n if (!isEdit) return false;\n for (let product of associatedProducts) {\n if (\n product.productId === productId &&\n product.verticalId === selectedVerticalRef.current.verticalId\n ) {\n return true;\n }\n }\n // console.log(selectedVerticalRef.current.icon)\n const icon = getIconFromName(selectedVerticalRef.current.icon);\n // console.log(\"🚀 ~ file: UdpVerticalManagementSidesheet.jsx:81 ~ isAssociatedToVertical ~ icon:\", icon)\n\n return false;\n },\n [associatedProducts, selectedVerticalRef]\n );\n\n const handleCheckboxChange = (e) => {\n if (e.target.checked) {\n setSelectedProductIds((prevState) => [...prevState, id]);\n } else {\n setSelectedProductIds((prevState) =>\n prevState.filter((item) => item !== id)\n );\n }\n };\n\n return (\n <FluentCheckbox\n // checked={value}\n defaultChecked={isAssociatedToVertical(id)}\n onChange={handleCheckboxChange}\n aria='column-active'\n />\n );\n };\n\n // const actionList = useMemo(\n // () => [\n // {\n // id: 1, // Must be unique\n // title: t('Edit'),\n // icon: EditIcon,\n // onClick: handleEditPage,\n // disabled: false\n // },\n // {\n // id: 2, // Must be unique\n // title: t('Delete'),\n // icon: DeleteIcon,\n // onClick: handleDelete,\n // disabled: false\n // }\n // ],\n // [t, handleEditPage, handleDelete]\n // );\n\n const gridOptions = useMemo(\n () => ({\n frameworkComponents: {\n actionsRenderer: ActionsRenderer,\n checkboxRenderer: CheckBoxRenderer\n },\n columnDefs: [\n {\n headerName: '',\n field: 'select',\n cellRenderer: 'checkboxRenderer',\n cellRendererParams: (params) => ({\n // onChange: onChange,\n // value: checked[params.data.productId] || false,\n id: params.data.productId\n })\n },\n {\n headerName: t('Product Name'),\n field: 'name',\n minWidth: 200\n }\n ]\n }),\n [isEdit, selectedVertical, associatedProducts]\n );\n\n const executeMutation = useCallback(\n async (endpoint, method, data) =>\n apiMutate(\n ConfigService.uemV1ApiUrl,\n endpoint,\n {\n method: method || 'post'\n },\n data\n ),\n []\n );\n\n const getProducts = useCallback(\n async (data) => {\n setLoading(true);\n\n const response = await executeMutation('uem', 'post', data);\n if (response?.status === 200) {\n setProducts(response?.data);\n }\n setLoading(false);\n },\n [executeMutation, setProducts]\n );\n\n const createVertical = useCallback(\n async (data) => {\n setLoading(true);\n\n const response = await executeMutation(\n 'vertical/uemCreate',\n 'post',\n data\n );\n if (response?.status === 201) {\n closeSidesheet();\n handleSuccessSnackbar('Vertical Created Successfully');\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n },\n [executeMutation]\n );\n\n const updateVertical = useCallback(\n async (data) => {\n setLoading(true);\n\n const response = await executeMutation(\n `vertical/${selectedVertical.verticalId}/uemUpdate`,\n 'put',\n data\n );\n if (response?.status === 204) {\n closeSidesheet();\n handleSuccessSnackbar('Vertical Updated Successfully');\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n },\n [selectedVertical, executeMutation]\n );\n\n const handleSubmit = useCallback(\n (values) => {\n setLoading(true);\n const products = selectedProductIdsRef.current.map((productId) => ({\n productId\n }));\n\n !isEdit\n ? createVertical({\n data: {\n name: values.name,\n products: products,\n icon: displayedIconRef?.current.name,\n EnvironmentId: environment.environmentId,\n apiPath: 'api/v1/vertical/uemCreate'\n }\n })\n : updateVertical({\n data: {\n name: values.name,\n products: products,\n icon: displayedIconRef?.current.name,\n EnvironmentId: environment.environmentId,\n apiPath: `api/v1/vertical/${selectedVertical.verticalId}/uemUpdate`\n }\n });\n },\n [\n isEdit,\n createVertical,\n environment,\n updateVertical,\n selectedVertical,\n selectedProductIdsRef\n ]\n );\n\n useEffect(() => {\n if (environment && getProducts) {\n if (environment.environmentId) {\n const data = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `tenantService/api/v2/product`\n }\n };\n getProducts(data);\n }\n }\n }, [environment, getProducts]);\n\n useEffect(() => {\n if (selectedVertical) {\n const associatedProductIds = selectedVertical.verticalProductVertical.map(\n (product) => product.productId\n );\n setSelectedProductIds((prevState) => [\n ...prevState,\n ...associatedProductIds\n ]);\n }\n }, [selectedVertical, setSelectedProductIds]);\n\n const setDisplayedIconCallback = useCallback(() => {\n setDisplayedIcon({\n name:\n isEdit && selectedVertical?.icon\n ? selectedVertical?.icon\n : 'StatusCircleQuestionMarkIcon'\n });\n }, [selectedVertical, isEdit]);\n\n useEffect(() => {\n setDisplayedIconCallback();\n }, [open]);\n\n const closeIconLibrary = () => {\n setOpenIconLibrary(false);\n };\n\n const onOpenLibrary = () => {\n setOpenIconLibrary(true);\n };\n\n const handleIconSelect = (icon) => {\n const updateddisplayedIcon = { ...props.displayedIcon };\n updateddisplayedIcon.name = icon.id;\n updateddisplayedIcon.type = icon.type || null;\n setDisplayedIcon(updateddisplayedIcon);\n closeIconLibrary();\n };\n\n const initialValues = useMemo(() => {\n return {\n name: isEdit ? selectedVertical?.name : ''\n };\n }, [associatedProducts, selectedVertical, isEdit]);\n\n return (\n <>\n <SideSheet\n open={open}\n onClose={() => closeSidesheet()}\n width={400}\n title={props.title}\n // buttonLabel={\"Create\"}\n // onSubmit={handleSubmit}\n >\n <Form\n ref={formRef}\n onSubmit={handleSubmit}\n initialValues={initialValues}\n >\n <div style={{ display: 'flex' }}>\n <Field\n ref={nameRef}\n component={TextField}\n label={t('Name')}\n id='name'\n name='name'\n variant='outlined'\n size='small'\n required={true}\n style={{ marginTop: 8 }}\n />\n\n <IconButton onClick={onOpenLibrary}>\n {displayedIcon && (\n <UnityFluentIcon\n type={displayedIcon?.type}\n icon={\n displayedIcon?.type === 'unity'\n ? getUnityIconFromName(displayedIcon?.name)\n : getIconFromName(displayedIcon?.name)\n }\n />\n )}\n </IconButton>\n </div>\n <AmbientGridTemplate\n data={products}\n title={t('Products')}\n loading={loading}\n height={'calc(100vh - 300px)'}\n hideGroupTab\n hideColumnTab\n disablePagination\n hideFitGrid\n hideExpandGrid\n hideExportGrid\n hideRemoveFilters\n hideFilterTab\n {...gridOptions}\n />\n <FormButtons>\n <SubmitButton\n variant='contained'\n color='secondary'\n marginTop={'50px'}\n disabled={false}\n disablePristine={false}\n >\n {t(isEdit ? 'Update' : 'Create')}\n </SubmitButton>\n </FormButtons>\n {loading && <LinearProgress />}\n </Form>\n </SideSheet>\n <SideSheet\n open={openIconLibrary}\n onClose={closeIconLibrary}\n title={t('Icon Library')}\n width={'100%'}\n anchor='bottom'\n >\n <IconLibrary\n addItem={handleIconSelect}\n selectedIconName={displayedIcon?.name}\n title={t('Select Icon')}\n />\n </SideSheet>\n </>\n );\n};\n\nexport default UdpVerticalManagementSidesheet;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\n// import { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { AddIcon, DeleteIcon, EditIcon } from '@fluentui/react-icons';\nimport { Typography } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { PrimaryActionButton } from '../../UI/inputs/buttons/PrimaryActionButton';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport UdpVerticalManagementSidesheet from './UdpVerticalManagementSidesheet';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpVerticalManagementPage = (props) => {\n const { params } = props;\n const { nodeObj: environment, inquiryNodeProperties } = params;\n const { t } = useTranslation();\n\n const [sideSheetOpen, setSideSheetOpen] = useState(false);\n const [sideSheetEdit, setSideSheetEdit] = useState(false);\n const [loading, setLoading] = useState(false);\n const [selectedVertical, setSelectedVertical] = useState(null);\n const [verticals, setVerticals] = useState([]);\n const [productVertical, setProductVertical] = useState([]);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const selectedVerticalRef = useRef();\n selectedVerticalRef.current = selectedVertical ? selectedVertical : null;\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const openSheetAsEdit = useCallback((isEdit) => {\n setSideSheetOpen(true);\n setSideSheetEdit(isEdit);\n }, []);\n\n const closeDeleteDialog = useCallback(() => {\n setDeleteDialogOpen(false);\n }, [setDeleteDialogOpen]);\n\n const executeMutation = useCallback(\n async (endpoint, method, data) =>\n apiMutate(\n ConfigService.uemV1ApiUrl,\n endpoint,\n {\n method: method || 'post'\n },\n data\n ),\n []\n );\n\n const getVerticals = useCallback(\n async (data, isFirstLoad = false) => {\n if (isFirstLoad) {\n setLoading(true);\n }\n\n const response = await executeMutation('uem', 'post', data);\n if (response?.status === 200) {\n setVerticals(response?.data);\n }\n if (isFirstLoad) {\n setLoading(false);\n }\n },\n [executeMutation]\n );\n\n const deleteVertical = useCallback(async () => {\n const data = {\n data: {\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical/${selectedVerticalRef.current.verticalId}/uemDelete`\n }\n };\n const response = await executeMutation(\n `vertical/${selectedVerticalRef.current.verticalId}/uemDelete`,\n 'delete',\n data\n );\n if (response?.status === 204) {\n console.log('success');\n handleSuccessSnackbar('Vertical Deleted Successfully');\n }\n const getVerticalsData = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical`\n }\n };\n getVerticals(getVerticalsData, true);\n closeDeleteDialog();\n }, [executeMutation, selectedVertical, closeDeleteDialog]);\n\n const getProductVerticals = useCallback(\n async (data) => {\n const response = await executeMutation('productVertical', 'get', data);\n if (response?.status === 200) {\n setProductVertical(response?.data);\n }\n },\n [executeMutation]\n );\n\n useEffect(() => {\n if (environment && getVerticals) {\n if (environment.environmentId) {\n const productVerticalData = {\n data: {\n apiPath: `api/v2/ProductVertical`\n }\n };\n getProductVerticals(productVerticalData);\n const data = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical`\n }\n };\n getVerticals(data, true);\n }\n }\n }, [environment, getVerticals, getProductVerticals, deleteVertical]);\n\n const closeSheet = useCallback(() => {\n setSideSheetOpen(false);\n const data = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical`\n }\n };\n\n getVerticals(data);\n }, [getVerticals, environment]);\n\n const handleEditPage = useCallback(\n (value) => {\n setSelectedVertical(value);\n console.log('Edit page, value: ', value);\n openSheetAsEdit(true);\n },\n [t]\n );\n\n const handleCreateVertical = useCallback(\n (value) => {\n openSheetAsEdit(false);\n },\n [t]\n );\n\n const handleDelete = useCallback(\n (value) => {\n setSelectedVertical(value);\n console.log('Delete page, value: ', value);\n setDeleteDialogOpen(true);\n },\n [t]\n );\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEditPage,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Delete'),\n icon: DeleteIcon,\n onClick: handleDelete,\n disabled: false\n }\n ],\n [t, handleEditPage, handleDelete]\n );\n\n const gridOptions = useMemo(\n () => ({\n frameworkComponents: {\n actionsRenderer: ActionsRenderer\n },\n columnDefs: [\n {\n headerName: t('Name'),\n field: 'name',\n minWidth: 300\n },\n {\n headerName: t('Icon'),\n field: 'icon'\n },\n {\n headerName: t('Actions'),\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ]\n }),\n [t, actionList, productVertical]\n );\n\n const pab = (\n <PrimaryActionButton onClick={handleCreateVertical}>\n <Typography style={{ marginRight: 5 }}>Add</Typography>\n <AddIcon />\n </PrimaryActionButton>\n );\n\n return (\n <>\n <UdpVerticalManagementSidesheet\n open={sideSheetOpen}\n closeSidesheet={closeSheet}\n selectedVertical={selectedVertical}\n environment={environment}\n title={t(sideSheetEdit ? 'Edit Vertical' : 'Create Vertical')}\n associatedProducts={productVertical}\n isEdit={sideSheetEdit}\n />\n <AmbientGridTemplate\n title={t('Vertical Manager')}\n primaryActionButton={pab}\n data={verticals}\n // hideGroupTab\n // hideColumnTab\n loading={loading}\n gridOptions={gridOptions}\n groupingData={[]}\n />\n <FluentDialog\n open={deleteDialogOpen}\n handleClose={closeDeleteDialog}\n title={t('Delete Vertical')}\n message={\n t('Are you sure you want to Delete') + ` \"${selectedVertical?.name}\"?`\n }\n actionOne={deleteVertical}\n labelOne={t('Delete')}\n actionTwo={closeDeleteDialog}\n labelTwo={t('Cancel')}\n />\n </>\n );\n};\n\nexport default UdpVerticalManagementPage;\n","import React from \"react\";\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\n\n/**\n * @param {object} props\n * @param {object} props.selectedGridPanel\n * @param {string} props.environment\n * @param {boolean} props.open\n * @param {Function} props.onClose\n * @param {Function} props.onSubmit\n * @param {string} props.title\n * @param {any[]} props.grids\n * @param {any[]} props.panels\n * @param {any} props.grid\n * @param {Function} props.setGrid\n * @param {any} props.panel\n * @param {Function} props.setPanel\n * @returns {JSX.Element}\n */\nconst UdpGridPanelManagementSidesheet = (props) => {\n const {\n selectedGridPanel,\n environment,\n open,\n onClose,\n onSubmit,\n title,\n grids,\n panels,\n grid,\n setGrid,\n panel,\n setPanel,\n ...sheetProps\n } = props;\n\n return (\n <SideSheet \n open={open}\n onClose={() => onClose()}\n width={400}\n title={title}\n buttonLabel={'Save'}\n onSubmit={onSubmit}\n {...sheetProps}\n >\n <FluentTextFieldAutoComplete\n id={'grid'}\n label={\"Grid\"}\n options={grids}\n optionKey=\"name\"\n onChange={setGrid}\n value={grid}\n />\n <FluentTextFieldAutoComplete\n id={'panel'}\n label={\"Panel\"}\n options={panels}\n optionKey=\"name\"\n onChange={setPanel}\n value={panel}\n />\n </SideSheet>\n );\n};\n\nexport default UdpGridPanelManagementSidesheet;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\n// import { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { AddIcon, DeleteIcon, EditIcon } from '@fluentui/react-icons';\nimport { Typography } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { PrimaryActionButton } from '../../UI/inputs/buttons/PrimaryActionButton';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport UdpVerticalManagementSidesheet from './UdpVerticalManagementSidesheet';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport UdpGridPanelManagementSidesheet from './UdpGridPanelManagementSidesheet';\nimport { useAgGridApi } from '../../utilities/aggrid/AgTable';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpGridPanelManagementPage = (props) => {\n const { params } = props;\n const { nodeObj: environment } = params;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n const [gridPanels, setGridPanels] = useState([]);\n const [grids, setGrids] = useState([]);\n const [panels, setPanels] = useState([]);\n const [addSidesheetOpen, setAddSidesheetOpen] = useState(false);\n const [selectedRow, setSelectedRow] = useState();\n const [deleteDialogOpen, setDeleteDialogOpen] = useState();\n const [dataToDelete, setDataToDelete] = useState();\n\n const [grid, setGrid] = useState(null);\n const [panel, setPanel] = useState(null);\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const executeMutation = useCallback(\n async (endpoint, method, data) =>\n apiMutate(\n ConfigService.uemV1ApiUrl,\n endpoint,\n {\n method: method || 'post'\n },\n data\n ),\n []\n );\n\n const getGridPanels = useCallback(async () => {\n setLoading(true);\n const requestPayload = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/gridPanel`\n }\n };\n\n const response = await executeMutation('uem', 'post', requestPayload);\n if (response?.status === 200) {\n setGridPanels(response?.data);\n }\n setLoading(false);\n }, [environment?.environmentId, executeMutation]);\n\n const getGrids = useCallback(async () => {\n const requestPayload = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/grid`\n }\n };\n\n const response = await executeMutation('uem', 'post', requestPayload);\n if (response?.status === 200) {\n setGrids(response?.data);\n }\n }, [environment?.environmentId, executeMutation]);\n\n const getPanels = useCallback(async () => {\n const requestPayload = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `IntegrationService/api/v2/panel`\n }\n };\n\n const response = await executeMutation('uem', 'post', requestPayload);\n if (response?.status === 200) {\n setPanels(response?.data);\n }\n }, [environment?.environmentId, executeMutation]);\n\n const createGridPanel = useCallback(async () => {\n setLoading(true);\n\n const requestPayload = {\n data: {\n customerId: null,\n gridId: grid.gridId,\n panelId: panel.panelId,\n environmentId: environment.environmentId,\n apiPath: `api/v1/gridPanel/uemCreate`\n }\n };\n\n const response = await executeMutation(\n 'gridPanel/uemCreate',\n 'post',\n requestPayload\n );\n if (response?.status === 201) {\n handleSuccessSnackbar('GridPanel Created Successfully');\n getGridPanels();\n setAddSidesheetOpen(false);\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n }, [\n environment,\n executeMutation,\n getGridPanels,\n grid,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n panel\n ]);\n\n const updateGridPanel = useCallback(async () => {\n setLoading(true);\n\n const requestPayload = {\n data: {\n gridPanelId: selectedRow.gridPanelId,\n customerId: null,\n gridId: grid.gridId,\n panelId: panel.panelId,\n environmentId: environment.environmentId\n }\n };\n\n const response = await executeMutation(\n 'gridPanel/uemUpdate',\n 'put',\n requestPayload\n );\n if (response?.status === 204) {\n handleSuccessSnackbar('GridPanel Updated Successfully');\n getGridPanels();\n setAddSidesheetOpen(false);\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n }, [\n environment,\n executeMutation,\n getGridPanels,\n grid,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n panel,\n selectedRow\n ]);\n\n const deleteGridPanel = useCallback(async () => {\n setLoading(true);\n\n const requestPayload = {\n data: {\n gridPanelId: dataToDelete.gridPanelId,\n customerId: null,\n gridId: dataToDelete.gridId,\n panelId: dataToDelete.panelId,\n environmentId: environment.environmentId\n }\n };\n\n const response = await executeMutation(\n 'gridPanel/uemDelete',\n 'delete',\n requestPayload\n );\n if (response?.status === 204) {\n handleSuccessSnackbar('GridPanel Deleted Successfully');\n getGridPanels();\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setDataToDelete();\n setLoading(false);\n }, [\n environment,\n executeMutation,\n getGridPanels,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n dataToDelete\n ]);\n\n const openDeleteDialog = (data) => {\n setDeleteDialogOpen(true);\n setDataToDelete(data);\n console.log(data);\n };\n\n useEffect(() => {\n getGridPanels();\n getGrids();\n getPanels();\n }, [getGridPanels, getGrids, getPanels]);\n\n const handleEdit = useCallback((row) => {\n setSelectedRow(row);\n }, []);\n\n useEffect(() => {\n if (selectedRow) {\n const selectedGrid = grids.find(\n (grid) => grid.gridId === selectedRow.gridId\n );\n const selectedPanel = panels.find(\n (panel) => panel.panelId === selectedRow.panelId\n );\n setGrid(selectedGrid);\n setPanel(selectedPanel);\n setAddSidesheetOpen(true);\n }\n }, [grids, panels, selectedRow]);\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEdit,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Delete'),\n icon: DeleteIcon,\n onClick: openDeleteDialog,\n disabled: false\n }\n ],\n [t, handleEdit]\n );\n\n const gridOptions = useMemo(\n () => ({\n frameworkComponents: {\n actionsRenderer: ActionsRenderer\n },\n columnDefs: [\n {\n headerName: t('gridPanelId'),\n field: 'gridPanelId'\n },\n {\n headerName: t('gridId'),\n field: 'gridId'\n },\n {\n headerName: t('panelId'),\n field: 'panelId'\n },\n {\n headerName: t('Actions'),\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ]\n }),\n [actionList, t]\n );\n\n const handleClose = useCallback(() => {\n setGrid();\n setPanel();\n setSelectedRow();\n setAddSidesheetOpen(false);\n }, []);\n\n return (\n <>\n <UdpGridPanelManagementSidesheet\n title={selectedRow ? 'Update GridPanel' : 'Create GridPanel'}\n open={addSidesheetOpen}\n onClose={handleClose}\n environment={environment}\n grids={grids}\n panels={panels}\n grid={grid}\n setGrid={setGrid}\n panel={panel}\n setPanel={setPanel}\n onSubmit={selectedRow ? updateGridPanel : createGridPanel}\n />\n <FluentDialog\n open={deleteDialogOpen}\n handleClose={() => setDeleteDialogOpen(false)}\n title={t('Delete GridPanel')}\n message={t('Are you sure?')}\n actionOne={deleteGridPanel}\n labelOne={t('Delete')}\n actionTwo={() => setDeleteDialogOpen(false)}\n labelTwo={t('Cancel')}\n />\n <AmbientGridTemplate\n title={t('Grid Panel Manager')}\n useNewHeader\n data={gridPanels}\n gridOptions={gridOptions}\n onPrimaryActionClick={() => setAddSidesheetOpen(true)}\n primaryActionLabel='Add'\n loading={loading}\n />\n </>\n );\n};\n\nexport default UdpGridPanelManagementPage;\n","import React, {\n useState,\n useEffect\n} from 'react';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { UdpMaintenanceEnginePage } from './UdpMaintenanceEnginePage';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpInquiryMaintenanceEnginePage = (props) => {\n const { params } = props;\n const { nodeObj } = params;\n const [loading, setLoading] = useState(false);\n\n const [{ data: catalogKey, loading: catalogKeyLoading }] = useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpObjectInfo/getCatalogId/${nodeObj.businessObjectKey}?fromUdpObjectInfo=true`,\n {},\n !!!nodeObj,\n false\n );\n\n /*\n returns {\n entityName: Tenant,\n productId: 1,\n unityBaseGetAllMethod: {apiMethodId: 'f06f7853-5816-4950-a275-5085c3387d57', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseGetMethod: {apiMethodId: '06f49cfd-0f1e-475a-812b-73cd3efd9f0d', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseCreateMethod: {apiMethodId: '33310aad-8998-4661-800b-00649d280d31', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseUpdateMethod: {apiMethodId: 'fe611db9-47ec-4a27-8840-871fe1323812', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseDeleteMethod: {apiMethodId: 'dafb84b6-e424-43ff-9ef0-774a5795e420', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n }\n */\n\n // Set loading flag based on the API loading flags\n useEffect(() => {\n setLoading(catalogKeyLoading);\n }, [catalogKeyLoading])\n\n return (\n\n <UdpMaintenanceEnginePage\n catalogKey={catalogKey || ''}\n />\n );\n};\n\nexport default UdpInquiryMaintenanceEnginePage;\n","import React from 'react';\nimport { PowerBIReport } from '../../reports/PowerBIReport';\n\nconst UdpReportsPage = (props) => {\n const { params } = props;\n\n return <PowerBIReport id={params?.pbiReportCode || null} />;\n};\n\nexport default UdpReportsPage;\n","import React from 'react';\nimport { makeStyles, colors } from '@material-ui/core';\nimport DownArrow from '@material-ui/icons/esm/ArrowDownward';\nimport UpArrow from '@material-ui/icons/esm/ArrowUpward';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n DownArrow: {\n color: colors.red[500],\n fontSize: 16,\n },\n UpArrow: {\n color: colors.green[500],\n fontSize: 16,\n },\n}));\n\nconst FluentTrendArrow = props => {\n const { type } = props;\n const classes = useStyles();\n\n let trend = '';\n\n switch (type) {\n case 'up':\n trend = <UpArrow className={classes.UpArrow} />;\n break;\n case 'down':\n trend = <DownArrow className={classes.DownArrow} />;\n break;\n default:\n }\n\n return trend;\n};\nexport default FluentTrendArrow;\n","import React from 'react';\nimport { Typography, makeStyles } from '@material-ui/core';\nimport round from '@extra-number/round';\nimport FluentTrendArrow from './FluentTrendArrow';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n percent: {\n display: 'flex',\n flexDirection: 'row',\n marginTop: theme.spacing(-0.5),\n },\n arrow: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n percentAmount: {},\n}));\n\nconst FluentStatsSnippet = props => {\n const classes = useStyles(props);\n const {\n label,\n amount: rawAmount,\n prevAmount,\n percent: percentProp,\n trend: trendProp,\n } = props;\n\n // @todo Use an Intl formatter\n let amount = rawAmount;\n // TODO: Revisit below after Tampa Demo\n if (Math.abs(rawAmount) > 1_000_000) {\n //amount = Math.floor(rawAmount / 1_000_000) + 'M';\n let newNumber = rawAmount / 1_000_000;\n amount = [Math.round(newNumber * 10) / 10, 'M'];\n } else if (Math.abs(rawAmount) > 1_000) {\n //amount = Math.floor(rawAmount / 1_000) + 'K';\n let newNumber = rawAmount / 1_000;\n amount = [Math.round(newNumber * 10) / 10, 'K'];\n }\n\n let percent = percentProp;\n let trend = trendProp;\n if (typeof prevAmount === 'number') {\n const ratio = (rawAmount - prevAmount) / prevAmount;\n\n percent =\n Math.abs(round(ratio * 100, Math.abs(ratio) < 0.01 ? 0.01 : 1)) + '%';\n trend = ratio < 0 ? 'down' : 'up';\n }\n\n return (\n <div className={classes.root}>\n <Typography variant=\"overline\" component=\"div\">\n {label}\n </Typography>\n <Typography className={classes.stat} variant=\"h5\" component=\"div\">\n {amount}\n </Typography>\n <div className={classes.percent}>\n <div className={classes.arrow}>\n <FluentTrendArrow type={trend} />\n </div>\n <div className={classes.percentAmount}>\n <Typography variant=\"caption\">{percent}</Typography>\n </div>\n </div>\n </div>\n );\n};\nexport default FluentStatsSnippet;\n","import React, { useCallback } from 'react'\nimport ToggleButton from '@material-ui/lab/ToggleButton'\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup'\nimport { ChartIcon, NumberedListIcon } from '@fluentui/react-icons'\nimport { FluentIcon } from '../../../utilities/iconLibrary/FluentIcon'\n\nconst ChartSummaryToggle = (props) => {\n const { value, onChange } = props\n\n const change = useCallback((e, value) => onChange && onChange(value), [\n onChange\n ])\n\n return (\n <ToggleButtonGroup\n value={value}\n exclusive\n onChange={change}\n aria-label='chart summary mode toggle'\n >\n <ToggleButton\n name='chart-summary-mode'\n value='summary'\n aria-label='summary'\n >\n <FluentIcon component={NumberedListIcon} />\n </ToggleButton>\n <ToggleButton name='chart-summary-mode' value='chart' aria-label='chart'>\n <FluentIcon component={ChartIcon} />\n </ToggleButton>\n </ToggleButtonGroup>\n )\n}\n\nexport default ChartSummaryToggle\n","export const convertISODate = isoDate => {\n const date = new Date(isoDate);\n return date.toLocaleDateString('en-US');\n};\n","import React, { forwardRef, Fragment } from 'react'\nimport { Grid, Box, Typography } from '@material-ui/core'\nimport { MuiVegaLite } from '@material-vega/material-ui'\nimport WidgetCard from '../WidgetCard'\nimport FluentStatsSnippet from '../FluentComponents/atoms/FluentStatsSnippet'\nimport ChartSummaryToggle from '../FluentComponents/ChartSummaryToggle'\nimport { convertISODate } from '../utils/ConvertISODate'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nconst DonutChartWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme, dateRange } = params\n\n let body = (\n <Fragment>\n {dateRange && (\n <Typography gutterBottom variant='caption' component='h3'>\n From: {convertISODate(dateRange.from)} to:{' '}\n {convertISODate(dateRange.to)}\n </Typography>\n )}\n <Grid container>\n {mockData?.stats?.map((stat) => (\n <Grid item xs={3} key={stat.label}>\n <FluentStatsSnippet\n label={stat.label}\n amount={stat.currentValue}\n prevAmount={stat.previousValue}\n />\n </Grid>\n ))}\n </Grid>\n <Box clone flex={1} mt={1} overflow='hidden'>\n <MuiVegaLite\n variant='donutChart'\n style={{\n overflow: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0\n }}\n spec={{\n $schema: 'https://vega.github.io/schema/vega/v5.json',\n width: 200,\n height: 200,\n data: [\n {\n name: 'table',\n values: mockData?.data,\n transform: [\n {\n type: 'pie',\n field: 'value'\n }\n ]\n },\n {\n name: 'used',\n source: 'table',\n transform: [\n {\n type: 'formula',\n expr: \"datum.id === 'Other' ? 'Other' : 'Main'\",\n as: 'id'\n },\n {\n type: 'aggregate',\n fields: ['field'],\n groupby: ['id'],\n ops: ['sum'],\n as: ['sum']\n },\n {\n type: 'pivot',\n field: 'label',\n value: 'sum'\n }\n ]\n }\n ],\n scales: [\n {\n name: 'color',\n type: 'ordinal',\n domain: { data: 'table', field: 'label' },\n range: { scheme: 'greys' }\n }\n ],\n marks: [\n {\n type: 'arc',\n from: { data: 'table' },\n encode: {\n enter: {\n fill: { scale: 'color', field: 'label' },\n x: { signal: 'width / 2' },\n y: { signal: 'height / 2' },\n padAngle: { value: 0.01 }\n },\n update: {\n startAngle: { field: 'startAngle' },\n endAngle: { field: 'endAngle' },\n innerRadius: { signal: 'width / 2 - 10' },\n outerRadius: { signal: 'width / 2' }\n }\n }\n },\n {\n type: 'text',\n from: { data: 'used' },\n style: ['percent'],\n encode: {\n enter: {\n x: { signal: 'width / 2' },\n y: { signal: 'height / 2' },\n align: { value: 'center' },\n baseline: { value: 'middle' },\n fontSize: { value: 24 }\n }\n }\n }\n ],\n legends: [\n {\n fill: 'color',\n direction: 'vertical',\n encode: {\n labels: {\n name: 'legendLabel',\n enter: { text: { field: 'label' } }\n }\n },\n orient: 'right',\n labelColor: theme === 'dark' ? 'white' : 'rgba(0, 0, 0, 0.87)'\n }\n ]\n }}\n />\n </Box>\n {children}\n </Fragment>\n )\n\n return (\n <WidgetCard\n theme={theme}\n ref={ref}\n headerActions={\n <ChartSummaryToggle\n value={params.mode}\n onChange={(value) => setParam('mode', value)}\n />\n }\n {...other}\n title={mockData?.title}\n >\n {mockData ? (\n body\n ) : (\n <Typography variant='subtitle2'>\n Could not retrieve widget data. Please contact support.\n </Typography>\n )}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(DonutChartWidget)\n","import React, { forwardRef, Fragment } from 'react'\nimport { Grid, Typography, makeStyles } from '@material-ui/core'\nimport WidgetCard from '../WidgetCard'\nimport { Sparklines, SparklinesLine } from 'react-sparklines'\nimport FluentStatsSnippet from '../FluentComponents/atoms/FluentStatsSnippet'\nimport { convertISODate } from '../utils/ConvertISODate'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nconst useStyles = makeStyles((theme) => ({\n statList: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between'\n }\n}))\n\nconst SparklineWidget = (props, ref) => {\n const classes = useStyles()\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme, dateRange } = params\n\n return (\n <WidgetCard\n className={classes.root}\n theme={theme}\n ref={ref}\n {...other}\n title={mockData?.title}\n >\n {mockData ? (\n <Fragment>\n {dateRange && (\n <Typography gutterBottom variant='caption' component='h3'>\n From: {convertISODate(dateRange.from)} to:{' '}\n {convertISODate(dateRange.to)}\n </Typography>\n )}\n <div className={classes.statList}>\n {mockData?.stats?.map((stat) => (\n <Grid item key={stat.label}>\n <FluentStatsSnippet\n label={stat.label}\n amount={stat.amount}\n percent={stat.percent && stat.percent}\n trend={stat.trend}\n />\n </Grid>\n ))}\n </div>\n\n <Sparklines data={mockData?.data} strokeWidth={0.5}>\n <SparklinesLine color='#067e7e' />\n </Sparklines>\n {children}\n </Fragment>\n ) : (\n <Typography variant='subtitle2'>\n Could not retrieve widget data. Please contact support.\n </Typography>\n )}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(SparklineWidget)\n","import React from 'react'\nimport { Avatar, makeStyles, Typography } from '@material-ui/core'\nimport FluentDisplayNumber from '../atoms/FluentDisplayNumbers'\nimport { MarketIcon, MarketDownIcon } from '@fluentui/react-icons'\nimport { FluentIcon } from '../../../../utilities/iconLibrary/FluentIcon'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'row'\n },\n caption: {\n textAlign: 'left'\n },\n captionSmall: {\n textAlign: 'center'\n },\n trend: {\n marginTop: theme.spacing(2),\n marginLeft: theme.spacing(1)\n },\n upIcon: {\n color: 'green'\n },\n downIcon: {\n color: '#D50000'\n },\n avatar: {\n backgroundColor: 'white'\n }\n }),\n { next: 'FluentStatNumber' }\n)\n\nconst FluentStatNumber = (props) => {\n const classes = useStyles()\n const { small, trend, label, number } = props\n return (\n <div className={classes.root}>\n <div>\n <div>\n <FluentDisplayNumber small={small} number={Math.abs(number)} />\n </div>\n <div className={!small ? classes.caption : classes.captionSmall}>\n <Typography variant='overline'>{label}</Typography>\n </div>\n </div>\n\n <div className={classes.trend}>\n {small && (\n <Avatar className={classes.avatar}>\n {trend === 'down' ? (\n <FluentIcon\n component={MarketDownIcon}\n className={classes.downIcon}\n />\n ) : (\n <FluentIcon component={MarketIcon} className={classes.upIcon} />\n )}\n </Avatar>\n )}\n </div>\n </div>\n )\n}\nexport default FluentStatNumber\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport FluentStatNumbers from './FluentStatNumber';\n\nconst useStyles = makeStyles(\n theme => ({\n displayRow: {\n display: 'flex',\n flexDirection: 'row',\n },\n smallDisplay: {\n marginTop: theme.spacing(6),\n marginLeft: theme.spacing(3),\n },\n divider: {\n height: theme.spacing(6),\n marginTop: theme.spacing(6.5),\n marginLeft: theme.spacing(2),\n },\n }),\n { next: 'FluentPrimaryStatNumber' }\n);\n\nconst FluentPrimaryStatNumber = props => {\n const classes = useStyles();\n\n const { mainStat, mainLabel } = props;\n\n return (\n <div className={classes.displayRow}>\n <FluentStatNumbers label={mainLabel} number={mainStat} />\n </div>\n );\n};\n\nexport default FluentPrimaryStatNumber;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport FluentStatNumber from './FluentStatNumber';\n\nconst useStyles = makeStyles(theme => ({\n displayRow: {\n display: 'flex',\n flexDirection: 'row',\n },\n // smallDisplay: {\n // marginTop: theme.spacing(6),\n // },\n divider: {\n height: theme.spacing(6),\n marginTop: theme.spacing(6.5),\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst FluentSecondaryStatNumber = props => {\n const classes = useStyles();\n\n const { secondaryStat, secondaryLabel, trend } = props;\n\n return (\n <div className={classes.displayRow}>\n <div className={classes.smallDisplay}>\n <FluentStatNumber\n small\n trend={trend}\n label={secondaryLabel}\n number={secondaryStat}\n />\n </div>\n </div>\n );\n};\n\nexport default FluentSecondaryStatNumber;\n","import React, { forwardRef, Fragment } from 'react'\nimport FluentPrimaryStatNumber from '../FluentComponents/molecules/FluentPrimaryStatNumber'\nimport WidgetCard from '../WidgetCard'\nimport {\n LinearProgress,\n Typography,\n Divider,\n makeStyles\n} from '@material-ui/core'\nimport FluentSecondaryStatNumber from '../FluentComponents/molecules/FluentSecondaryStatNumber'\nimport { convertISODate } from '../utils/ConvertISODate'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n displayItems: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-around',\n color: 'white'\n },\n divider: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2)\n }\n}))\n\nconst ProgressBarWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme, dateRange } = params\n const classes = useStyles()\n\n return (\n <WidgetCard\n theme={theme}\n ref={ref}\n {...other}\n title={mockData?.title}\n widgetType='ProgressBarWidget'\n >\n {mockData ? (\n <Fragment>\n {dateRange && (\n <Typography gutterBottom variant='caption' component='h3'>\n Starting: {convertISODate(dateRange.from)}\n </Typography>\n )}\n\n <FluentPrimaryStatNumber\n mainStat={mockData?.value}\n mainLabel={mockData?.label}\n />\n <div>\n <LinearProgress\n variant='determinate'\n color='secondary'\n value={mockData?.progress}\n />\n {mockData?.progress}%\n </div>\n {mockData?.data && (\n <Fragment>\n <div className={classes.divider}>\n <Divider style={{ background: 'white', opacity: 0.5 }} />\n </div>\n <div className={classes.displayItems}>\n {mockData?.data.map((item, index) => {\n return (\n <FluentSecondaryStatNumber\n secondaryStat={item.value}\n secondaryLabel={item.label}\n trend={item.trend}\n />\n )\n })}\n </div>\n </Fragment>\n )}\n {children}\n </Fragment>\n ) : (\n <Typography variant='subtitle2'>\n Could not retrieve widget data. Please contact support.\n </Typography>\n )}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(ProgressBarWidget)\n","import React, { forwardRef } from 'react';\nimport WidgetCard from '../WidgetCard';\nimport { RecentlyLoadedNodesTable } from '../../../inquiry/dashboard/RecentlyLoadedNodesTable';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nexport const RecentlyLoadedNodesWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tree,\n hideWidgetName\n } = params;\n\n return (\n <WidgetCard\n ref={ref}\n title={'Recently Loaded'}\n hideWidgetName={hideWidgetName}\n {...other}\n >\n <RecentlyLoadedNodesTable\n recentlyLoadedNodes={recentlyLoadedNodes}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n tree={tree}\n hideTitle={true}\n />\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RecentlyLoadedNodesWidget);\n","import React from 'react';\nimport { ChatContainer } from '../../chatBot/ChatContainer';\n\nconst ChatUDP = () => {\n return (\n <ChatContainer />\n );\n};\n\nexport default ChatUDP;\n","import React, { useEffect, useState, useMemo, useCallback, memo } from 'react';\nimport { EditIcon, DeleteIcon, UploadIcon } from '@fluentui/react-icons';\nimport { useTranslation } from 'react-i18next';\nimport { DataBrowserContainer } from '../../dataBrowser/DataBrowserContainer';\nimport { CrudTableSidePanel } from '../../maintenanceEngine/crudBrowser/CrudTableSidePanel';\nimport {\n getPrimaryKeyValues,\n getPathObject\n} from '../../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { useAuthedUser } from '../../utilities/auth/useAuthedUser';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport {\n toLowerFirstChar,\n toUpperFirstChar\n} from '../../utilities/input/StringUtilities';\nimport { getEntityAttributes } from '../../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { CardinalityTypeEnums } from '../../enums/unitySystemEnums';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { useApiCatalog } from '../../hooks/useApiCatalog';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { useSearchFilterParamsMap } from '../../hooks/useSearchFilterParamsMap';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\nimport { useLocation } from 'react-router-dom';\nimport { useQueryExecutors } from '../../hooks/useQueryExecutors';\nimport { mapNodeObjValuesToSearchParameters } from '../../utilities/tree/TreeUtilities';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\n// const FILTER_PARAMS = [\n// {\n// name: 'tenantName',\n// value: 'ABC Company',\n// type: 'string'\n// },\n// {\n// name: 'productId',\n// value: 'UDP_PRODUCT_ID',\n// type: 'keyword'\n// },\n// {\n// name: 'productId',\n// value: 0,\n// type: 'function'\n// }\n// ];\n\n// const FUNCTION_LIST = [() => 1, () => 2];\n\nexport const UdpDataBrowserPage = (props) => {\n const { queryId, params } = props;\n const user = useAuthedUser();\n const { t } = useTranslation();\n const [entityData, setEntityData] = useState([]);\n const [gridApi, setGridApi] = useState(null);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const location = useLocation();\n const state = location.state;\n let searchParamStr = location.search;\n let searchParams = new URLSearchParams(searchParamStr);\n const searchParamsQueryId = state?.queryId\n ? state.queryId\n : searchParams.has('queryId') === true\n ? toUpperFirstChar(searchParams.get('queryId'))\n : '';\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const { getCleanData } = useQueryExecutors();\n\n const udpQueryId = useMemo(\n () => params?.queryId || queryId || searchParamsQueryId || '',\n [params, queryId, searchParamsQueryId]\n );\n\n const udpTagId = params?.udpTagId || '';\n\n const [selectedEntity, setSelectedEntity] = useState(null);\n const [foreignKeyData, setForeignKeyData] = useState(null);\n const [udpFieldSearchApiId, setUdpFieldSearchApiId] = useState(null);\n\n const [loading, setLoading] = useState(false);\n const [apiCatalogId, setApiCatalogId] = useState(null);\n const [entityName, setEntityName] = useState(null);\n const [enteredFromConfig, setEnteredFromConfig] = useState(false);\n\n const { data: catalog } = useApiCatalog(apiCatalogId);\n\n const { data: udpOjectFieldInfo } = usePromotedMethodEntity(\n 'UdpObjectFieldInfo',\n true\n );\n\n // TODO: Params will be either passed in or hard coded for now until we have a way of configuring/storing them.\n const { getQueryFilterElements } = useSearchFilterParamsMap();\n\n const [{ data: tpacb, loading: tpacbLoading, error: tpacbError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {},\n !!!user,\n false\n );\n\n const [\n {\n data: apiMethodInstance,\n loading: apiMethodInstancebLoading,\n error: apiMethodInstanceError\n }\n ] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apiMethodInstance/${udpQueryId}`,\n {},\n !!!udpQueryId,\n false\n );\n\n const [\n { data: apiMethod, loading: apiMethodLoading, error: apiMethodError }\n ] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apiMethod/${apiMethodInstance?.apiMethodId}`,\n {},\n !!!apiMethodInstance?.apiMethodId,\n false\n );\n\n const udpCatalogKey = useMemo(() => apiMethod?.entityName || '', [apiMethod]);\n\n /*\n returns {\n entityName: Tenant,\n productId: 1,\n unityBaseGetAllMethod: {apiMethodId: 'f06f7853-5816-4950-a275-5085c3387d57', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseGetMethod: {apiMethodId: '06f49cfd-0f1e-475a-812b-73cd3efd9f0d', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseCreateMethod: {apiMethodId: '33310aad-8998-4661-800b-00649d280d31', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseUpdateMethod: {apiMethodId: 'fe611db9-47ec-4a27-8840-871fe1323812', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseDeleteMethod: {apiMethodId: 'dafb84b6-e424-43ff-9ef0-774a5795e420', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n }\n */\n const { data: promotedMethodEntities, loading: promotedMethodsLoading } =\n usePromotedMethodEntity(entityName);\n\n const executeCreate = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseCreateMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n data\n ),\n [selectedEntity]\n );\n\n const executeUpdate = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseUpdateMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n data\n ),\n [selectedEntity]\n );\n\n const executeDelete = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseDeleteMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n data\n ),\n [selectedEntity]\n );\n\n const onCreate = useCallback(\n async (data) => {\n return await executeCreate(data);\n },\n [executeCreate]\n );\n\n const onUpdate = useCallback(\n async (data) => {\n return await executeUpdate(data);\n },\n [executeUpdate]\n );\n\n const onDelete = useCallback(\n async (data) => {\n return await executeDelete(data);\n },\n [executeDelete]\n );\n\n // Configured columns data from data builder\n const queryColumnsData = useMemo(() => {\n if (!apiMethodInstance) return [];\n let catalogMods = [];\n try {\n const catalogModificationStr = apiMethodInstance.catalogModification;\n const catalogModification = JSON.parse(catalogModificationStr);\n catalogMods = catalogModification;\n } catch {\n console.warn('Error parsing apiMethodInstance catalogModification');\n }\n return catalogMods;\n }, [apiMethodInstance]);\n\n // Lookups map used for to map lookups to column entries\n const lookupsMap = useMemo(() => {\n // need to return null for Datasource to not render twice\n if (!queryColumnsData.length) return null;\n const map = {};\n const lookupColumns = queryColumnsData.filter(\n (column) => !!column.extendedProperties?.lookup\n );\n lookupColumns.forEach((lc) => {\n map[lc.name] = {\n lookupKeyName: lc.extendedProperties?.lookupKeyName || '',\n lookupValueName: lc.extendedProperties?.lookupKeyName || '',\n value: lc.extendedProperties?.lookup || '',\n filterOn: !!lc.filterOn || false\n };\n });\n\n return map;\n }, [queryColumnsData]);\n\n const nodeFilterParams = useMemo(() => {\n let filterParams = [];\n if (params?.nodeObj && params?.queryParamMapping) {\n const mappedParameters = mapNodeObjValuesToSearchParameters(\n params.nodeObj,\n params.queryParamMapping\n );\n if (Object.keys(mappedParameters).length) {\n Object.keys(mappedParameters).forEach((key) => {\n filterParams.push({\n name: key,\n value: mappedParameters[key],\n type: 'string'\n });\n });\n }\n }\n return filterParams;\n }, [params]);\n\n // Additional filter elements\n const searchFilterElements = useMemo(() => {\n const filterElements = [];\n if (!enteredFromConfig && udpTagId) {\n filterElements.push({\n searchField: 'UdpTags.UdpTagAssociationUdpTag.Id',\n searchOperator: '=',\n searchValue: udpTagId\n });\n }\n\n const queryFilterElements = getQueryFilterElements(\n apiMethodInstance,\n nodeFilterParams\n );\n return filterElements.concat(queryFilterElements);\n }, [\n udpTagId,\n enteredFromConfig,\n getQueryFilterElements,\n apiMethodInstance,\n nodeFilterParams\n ]);\n\n const entityAttributes = useMemo(() => {\n return getEntityAttributes(catalog, entityName);\n }, [catalog, entityName]);\n\n const getMetaDataForUdpField = useCallback(\n async (entityName) => {\n let fieldInfos = [];\n if (udpFieldSearchApiId) {\n const filterElements = [\n {\n searchField: 'ObjectInfo.SanitizedName',\n searchOperator: '=',\n searchValue: entityName\n }\n ];\n const requestObj = getSearchObject(filterElements, 1, 50, true);\n\n executeQueryAdHoc({ data: requestObj }, udpFieldSearchApiId).then(\n (resp) => {\n fieldInfos = resp.data?.pageList;\n }\n );\n }\n return fieldInfos;\n },\n [udpFieldSearchApiId]\n );\n\n const getFKMethodEntities = useCallback(\n async (attributes) => {\n if (!attributes) {\n return [];\n }\n let fkMethods = [];\n\n for (const attr of attributes) {\n // check if there is a property with this childEntity\n if (attr?.extendedProperties?.childEntity) {\n // get the list of child entity field names from the Keys array\n const ceFieldsArr = [];\n Object.keys(attr.extendedProperties.childEntityAssoc || {}).length &&\n (attr.extendedProperties.childEntityAssoc.Cardinality ===\n CardinalityTypeEnums.Many_To_Many ||\n attr.extendedProperties.childEntityAssoc.Cardinality ===\n CardinalityTypeEnums.One_To_Many) &&\n !attr.extendedProperties.childEntityAssoc.UdpType &&\n attr.extendedProperties.childEntityAssoc.Keys.forEach(\n (value, i) => {\n const name = value.split(',')[0];\n if (name) {\n // check name string: if 1 word, lowercase. if 2 words, lower first char\n ceFieldsArr.push({\n idx: i,\n name: /^[A-Z]*$/.test(name)\n ? name.toLowerCase()\n : toLowerFirstChar(name)\n });\n }\n }\n );\n\n // find the child entity attribute\n const ceAttr = attributes.find((p) =>\n ceFieldsArr.find((cef) => cef.name === p.name)\n );\n\n if (ceAttr) {\n // get list of entity if ceProp exists\n await apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalogId}/promotedMethodEntities/${attr.reference}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {\n method: 'get'\n },\n {}\n ).then((resp) => {\n if (resp && resp.data) {\n fkMethods.push({\n entityAttribute: ceAttr,\n entity: resp.data\n });\n }\n });\n }\n }\n }\n return fkMethods;\n },\n [apiCatalogId]\n );\n\n const getFKAssociationLabel = useCallback(\n async (entityName) => {\n let fieldsInfo = [];\n fieldsInfo = await getMetaDataForUdpField(entityName);\n if (fieldsInfo?.length <= 0) {\n return '';\n }\n const associationLabelInfo = fieldsInfo?.find(\n (fi) => fi.properties?.maintainenceConfig?.associationLabel === 'true'\n );\n return associationLabelInfo?.name;\n },\n [getMetaDataForUdpField]\n );\n\n const getDataByKey = (obj, k) => {\n if (!obj) return null;\n let val = obj[k] ?? null;\n if (!val) {\n const key = Object.keys(obj).find((objKey) =>\n objKey.toLowerCase().includes(k)\n );\n if (key) {\n val = obj[key];\n }\n }\n return val;\n };\n\n const getFKData = useCallback(async () => {\n if (!entityAttributes?.length) {\n return null;\n }\n const fkMethods = await getFKMethodEntities(entityAttributes);\n if (!fkMethods?.length) {\n setForeignKeyData([]);\n return [];\n }\n let fkData = [];\n let promises = [];\n let promiseDetails = [];\n const warnings = [];\n for (const method of fkMethods) {\n if (method && method?.entity?.unityBaseGetAllMethod) {\n const associationLabel = await getFKAssociationLabel(\n method.entity.entityName\n );\n promiseDetails.push({\n url:\n ConfigService.integrationV1ApiUrl +\n `/apimethod/executeQueryWithParameters/${method?.entity?.unityBaseGetAllMethod?.apiMethodId}`,\n fieldName: method.entityAttribute.name,\n name: method.entity.entityName,\n associationLabel: associationLabel\n });\n\n promises.push(\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${method?.entity?.unityBaseGetAllMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n { data: {} }\n )\n );\n } else {\n warnings.push({\n id: uuid(),\n message: `${method.entity.entityName}'s Get-All method needs to be promoted`\n });\n }\n }\n\n setAlertWarnings(warnings);\n\n Promise.all(promises).then((resp) => {\n resp.forEach((response, index) => {\n if (response.status === 200) {\n if (response?.data) {\n let respData = [];\n const promiseDetail = promiseDetails.find(\n (p) =>\n p.url === response?.config?.url &&\n !fkData.find(\n (fd) =>\n fd.entityName === p.Name && fd.fieldName === p.fieldName\n )\n );\n response.data.forEach((d) => {\n const idName =\n promiseDetail?.fieldName && d[promiseDetail.fieldName]\n ? promiseDetail.fieldName\n : 'id';\n const id = getDataByKey(d, idName);\n const name = getDataByKey(\n d,\n toLowerFirstChar(promiseDetail.associationLabel) || 'name'\n );\n\n respData.push({ id: id, name: name ?? id });\n });\n\n fkData.push({\n fieldName: promiseDetail.fieldName,\n entityName: promiseDetail.name,\n name: promiseDetail.fieldName,\n data: respData\n });\n }\n }\n });\n setForeignKeyData(fkData);\n });\n }, [entityAttributes, getFKMethodEntities, getFKAssociationLabel]);\n\n const handleOnCreate = useCallback(\n async (values) => {\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n if (selectedEntity?.unityBaseCreateMethod) {\n const data = { requestBody: values };\n const response = await onCreate({ data }).catch((res) => {\n handleErrorSnackbar(res);\n });\n\n if (response?.status === 200) {\n handleSuccessSnackbar(\n entityName\n ? t(`${entityName} has been created`)\n : t(`Entity has been created`)\n );\n gridApi?.refreshServerSideStore();\n return response;\n }\n }\n }\n },\n [\n selectedEntity,\n onCreate,\n t,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n gridApi\n ]\n );\n\n const handleOnUpdate = useCallback(\n async (values, primaryKeyValues) => {\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n\n if (selectedEntity?.unityBaseUpdateMethod) {\n // Get primary key value object using path parameters and merge with data\n const pathObject = getPathObject(\n selectedEntity.unityBaseUpdateMethod.pathParameters,\n primaryKeyValues\n );\n let data = { requestBody: values };\n if (Array.isArray(pathObject)) {\n pathObject.forEach((po) => {\n data[Object.keys(po)[0]] = po[Object.keys(po)[0]];\n });\n } else {\n data = { ...pathObject, requestBody: values };\n }\n\n const response = await onUpdate({ data }).catch((res) => {\n handleErrorSnackbar(res);\n });\n\n if (response?.status === 200) {\n handleSuccessSnackbar(\n entityName\n ? t(`${entityName} has been updated`)\n : t(`Entity has been updated`)\n );\n\n gridApi?.refreshServerSideStore();\n }\n }\n }\n },\n [\n selectedEntity,\n onUpdate,\n t,\n gridApi,\n handleErrorSnackbar,\n handleSuccessSnackbar\n ]\n );\n\n const handleOnDelete = useCallback(\n async (value) => {\n value = getCleanData(value, lookupsMap);\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n\n if (selectedEntity?.unityBaseDeleteMethod) {\n // Get primary key value object using path parameters and merge with data\n const primaryKeyValues = getPrimaryKeyValues(entityAttributes, value);\n const pathObject = getPathObject(\n selectedEntity?.unityBaseDeleteMethod.pathParameters,\n primaryKeyValues\n );\n let data = {};\n if (Array.isArray(pathObject)) {\n pathObject.forEach((po) => {\n data[Object.keys(po)[0]] = po[Object.keys(po)[0]];\n });\n } else {\n data = { ...pathObject };\n }\n\n const response = await onDelete({ data }).catch((res) => {\n handleErrorSnackbar(res);\n });\n\n if (response?.status === 200) {\n handleSuccessSnackbar(\n entityName\n ? t(`${entityName} has been deleted`)\n : t(`Entity has been deleted`)\n );\n\n gridApi?.refreshServerSideStore();\n }\n }\n }\n },\n [\n selectedEntity,\n entityAttributes,\n onDelete,\n t,\n gridApi,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n getCleanData,\n lookupsMap\n ]\n );\n\n const handleEntitySelect = useCallback((entityName) => {\n setAlertWarnings([]);\n setEntityName(entityName);\n setEnteredFromConfig(true);\n }, []);\n\n const removeWarning = useCallback(\n (id) => {\n const updatedWarnings = alertWarnings.filter(\n (warning) => warning.id !== id\n );\n setAlertWarnings(updatedWarnings);\n },\n [alertWarnings]\n );\n\n const actionList = useMemo(() => {\n if (!selectedEntity) {\n return;\n }\n\n const data = getCleanData(entityData, lookupsMap);\n\n const actions = [\n {\n id: 1, // Must be unique\n title: selectedEntity?.unityBaseUpdateMethod\n ? t('Edit')\n : t('Edit Method Not Accessible'),\n icon: EditIcon,\n onClick: null,\n opens: 'sideSheet',\n loading: !!!foreignKeyData,\n view: {\n component: CrudTableSidePanel,\n properties: {\n entityAttributes,\n foreignKeyData: foreignKeyData,\n crudTableEditionData: null,\n onUpdate: handleOnUpdate,\n valuePropName: 'crudTableEditionData',\n closeSideSheet: null,\n closeSideSheetPropName: 'closeSideSheet',\n pageId: selectedEntity?.unityBaseUpdateMethod?.pageId,\n isNewEntry: false,\n entityName,\n entityData: data\n }\n },\n disabled: !!!selectedEntity?.unityBaseUpdateMethod\n },\n {\n id: 2, // Must be unique\n title: selectedEntity?.unityBaseDeleteMethod\n ? t('Delete')\n : t('Delete Method Not Accessible'),\n icon: DeleteIcon,\n onClick: null,\n opens: 'dialog',\n loading: !!!foreignKeyData,\n view: {\n component: null,\n properties: {\n title: t('Delete'),\n message: t('Are you sure you want to delete this row?'),\n labelOne: t('Cancel'),\n actionTwo: handleOnDelete,\n labelTwo: t('Confirm')\n }\n },\n disabled: !!!selectedEntity?.unityBaseDeleteMethod\n }\n ];\n\n if (params?.loadInquiryNode && params?.displayLoadNodeButton) {\n actions.push({\n id: 5, // Must be unique\n title: t('Load to Tree'),\n icon: UploadIcon,\n onClick: (value) => {\n const obj = getCleanData(value, lookupsMap);\n params.loadInquiryNode(obj);\n },\n loading: !!!foreignKeyData,\n view: {}\n });\n }\n return actions;\n }, [\n selectedEntity,\n t,\n entityAttributes,\n foreignKeyData,\n handleOnUpdate,\n handleOnDelete,\n entityName,\n entityData,\n getCleanData,\n lookupsMap,\n params\n ]);\n\n useEffect(() => {\n const setFrKeyData = async () => {\n await getFKData();\n };\n if (entityAttributes && udpFieldSearchApiId !== null) {\n setFrKeyData();\n }\n }, [entityAttributes, getFKData, udpFieldSearchApiId]);\n\n useEffect(() => {\n if (promotedMethodEntities) {\n setSelectedEntity(promotedMethodEntities);\n }\n }, [promotedMethodEntities]);\n\n useEffect(() => {\n if (udpOjectFieldInfo) {\n setUdpFieldSearchApiId(\n udpOjectFieldInfo?.unityBaseSearchMethod?.apiMethodId || '' // If falsy lets set to empty string\n );\n }\n }, [udpOjectFieldInfo]);\n\n useEffect(() => {\n setAlertWarnings([]);\n if (udpCatalogKey) {\n setEntityName(udpCatalogKey);\n }\n }, [udpCatalogKey]);\n\n useEffect(() => {\n if (tpacb) {\n setApiCatalogId(tpacb.apiCatalogId);\n }\n }, [tpacb]);\n\n // Set loading flag based on the API loading flags\n useEffect(() => {\n setLoading(tpacbLoading || promotedMethodsLoading);\n }, [tpacbLoading, promotedMethodsLoading]);\n\n if (tpacbError) {\n return (\n <Alert severity='error'>\n {t('There is no Api Catalog associated with your tenant and product')}\n </Alert>\n );\n }\n\n return (\n <>\n {alertWarnings.map((warning) => (\n <Alert onClose={() => removeWarning(warning.id)} severity='warning'>\n {warning.message || ''}\n </Alert>\n ))}\n <DataBrowserContainer\n entityData={entityData}\n actionList={actionList}\n onCreate={handleOnCreate}\n entityAttributes={entityAttributes}\n foreignKeyData={foreignKeyData}\n isLoading={loading}\n promotedEntity={selectedEntity}\n setEntityData={setEntityData}\n isServerSide={true}\n apiMethod={{ apiCatalogId, entityName }}\n setGridApi={setGridApi}\n filterElements={searchFilterElements}\n backToConfigPage={\n enteredFromConfig ? () => handleEntitySelect(null) : null\n }\n queryColumnsData={queryColumnsData}\n lookupsMap={lookupsMap}\n disableRowSelction={!params?.loadInquiryNode}\n />\n </>\n );\n};\n\nexport default memo(UdpDataBrowserPage);\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { UdpEnums } from '../../enums/unitySystemEnums';\nimport { useActionState } from '../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\nimport { EditIcon, ViewIcon } from '@fluentui/react-icons';\nimport { RemindersScreen } from '../../reminders/RemindersScreen';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useActions } from '../../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../../enums/unitySystemEnums';\nimport { FILE_TO_TYPES } from '../../constants/reminderConstants';\nimport { useUser } from '../../utilities/auth/useUser';\n\nconst UdpRemindersPage = (props) => {\n const { params } = props;\n const { nodeObj, manytoManyNodeObjKey } = params;\n const [reminders, setReminders] = useState([]);\n const [typeOptions, setTypeOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [reminderId, setReminderId] = useState('');\n const { openSplitScreen } = useActions();\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const formRef = useRef(null);\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTypeGetAllApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Type,\n 'unityBaseGetAllMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const getReminders = useCallback(async () => {\n if (!nodeObj) {\n return [];\n }\n let remindersList = [];\n setLoading(true);\n const filterElements = [\n {\n searchField: 'entityBusinessKey',\n searchValue: manytoManyNodeObjKey\n ? nodeObj[manytoManyNodeObjKey]?.businessObjectKey\n : nodeObj?.businessObjectKey,\n searchOperator: '='\n },\n {\n searchField: 'Reminder.TenantID',\n searchValue: user.currentTenantId,\n searchOperator: '='\n }\n ];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n\n if (reminderFiledForSearchApiMethod) {\n const response = await executeQueryAdHoc(\n data,\n reminderFiledForSearchApiMethod.apiMethodId\n );\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n filedToType: item.type\n }));\n }\n } else {\n handleErrorSnackbar(null, t('Could not retrieve reminders'));\n }\n } else {\n handleErrorSnackbar(\n null,\n t('Search ReminderFiledFor Method Not Promoted')\n );\n }\n setLoading(false);\n setReminders(remindersList);\n }, [\n reminderFiledForSearchApiMethod,\n handleErrorSnackbar,\n nodeObj,\n manytoManyNodeObjKey,\n t,\n user\n ]);\n\n const openSheet = useCallback((value) => {\n setReminderId(value?.id || '');\n setSheetOpen(true);\n }, []);\n\n const closeSheet = useCallback(() => {\n setReminderId('');\n setSheetOpen(false);\n }, []);\n\n const handleEditPage = useCallback(\n (value) => {\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Reminders,\n params: { id: value?.id || '', reloadReminders: getReminders }\n });\n },\n [openSplitScreen, getReminders]\n );\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Reminder'),\n icon: ViewIcon,\n onClick: openSheet,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEditPage,\n disabled: false\n }\n ],\n [t, openSheet, handleEditPage]\n );\n\n const getFiledToType = (params) => {\n const filedToType = FILE_TO_TYPES.find(\n (type) => type.value === params.data.filedToType\n );\n return filedToType?.label || '';\n };\n\n const getType = useCallback(\n (params) => {\n const type = typeOptions.find((t) => t.code === params.data.typeCode);\n return type?.name || '';\n },\n [typeOptions]\n );\n\n const columnDefs = [\n {\n headerName: 'Date',\n field: 'createdOn',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Subject',\n field: 'subject',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Reminder',\n field: 'content',\n resizable: true,\n sortable: true,\n valueGetter: (params) => params.data.content.replace(/(<([^>]+)>)/gi, '')\n },\n {\n headerName: 'Reminder Date',\n field: 'reminderDate',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Type',\n field: 'typeCode',\n resizable: true,\n sortable: true,\n valueGetter: getType\n },\n {\n headerName: 'Filed To Type',\n field: 'filedToType',\n resizable: true,\n sortable: true,\n valueGetter: getFiledToType\n },\n {\n headerName: 'Created By',\n field: 'userDisplayName',\n resizable: true,\n sortable: true\n },\n {\n headerName: '',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ];\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n getReminders();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const getTypeOptions = async () => {\n let options = [];\n if (reminderTypeGetAllApiMethod) {\n const typesResponse = await executeQueryAdHoc(\n { data: {} },\n reminderTypeGetAllApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [reminderTypeGetAllApiMethod]);\n\n return (\n <>\n <SideSheet\n open={sheetOpen}\n onClose={closeSheet}\n title={t('Reminder')}\n width={600}\n >\n <RemindersScreen\n viewOnly={true}\n id={reminderId}\n shortcutContentFinderEnabled={false}\n formRef={formRef}\n />\n </SideSheet>\n <AmbientGridTemplate\n title={'Reminders'}\n data={reminders}\n columnDefs={columnDefs}\n loading={loading}\n frameworkComponents={{ actionsRenderer: ActionsRenderer }}\n groupingData={[]}\n />\n </>\n );\n};\n\nexport default UdpRemindersPage;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport WidgetCard from '../WidgetCard';\nimport { RemindersCard } from '../../../reminders/RemindersCard';\nimport { FluentButton } from '../../inputs/buttons/FluentButton';\nimport {\n CircularProgress,\n makeStyles,\n FormControlLabel,\n Switch\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport {\n getSearchIdentifiers,\n getSearchObject\n} from '../../../utilities/search/SearchUtilities';\nimport {\n executeQueryAdHoc,\n executeQueryWithParameters,\n getBaseMethod\n} from '../../../udp/utilities/methodUtils';\nimport {\n LogicalSearchOperatorEnums,\n UdpEnums,\n UdpReminderFiledForType\n} from '../../../enums/unitySystemEnums';\nimport { useActionState } from '../../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../../utilities/apiHelpers';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { SortIcon } from '@fluentui/react-icons';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actions: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'flex-end'\n },\n actionButton: {\n marginRight: theme.spacing(0.25),\n position: 'relative'\n },\n fabProgress: {\n position: 'absolute',\n top: 4,\n left: '35%',\n zIndex: 1\n }\n}));\n\nexport const RemindersWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const { onLoadedNodeClick, hideWidgetName, tree, catalogObjects } = params;\n\n const [sortDirection, setSortDirection] = useState(null);\n const [reminders, setReminders] = useState(null);\n const [loading, setLoading] = useState(false);\n const [allRemindersRequested, setAllRemindersRequested] = useState(false);\n const [buttonProgress, setButtonProgress] = useState(false);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const classes = useStyles(props);\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const currentSortDirection = useMemo(() => {\n if (sortDirection === 'asc') {\n return 'desc';\n } else if (sortDirection === 'desc') {\n return 'asc';\n } else {\n return null;\n }\n }, [sortDirection]);\n\n const getNodeToLoad = useCallback(\n (reminder) => {\n const nodeToLoad = {};\n const domainObject = reminder?.domainObject;\n const entityBusinessKey = reminder?.entityBusinessKey || '';\n let treeStructureId = '';\n let apiMethodId = '';\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n\n if (matchingNode) {\n treeStructureId = matchingNode.id;\n if (!matchingNode.parentId) {\n apiMethodId = tree.apiMethodInstance.apiMethodId;\n } else {\n const associatedInquiryTree =\n matchingNode.properties?.associatedInquiryTree;\n if (associatedInquiryTree) {\n apiMethodId =\n associatedInquiryTree.apiMethodInstance?.apiMethodId || '';\n }\n }\n }\n nodeToLoad.apiMethodId = apiMethodId;\n\n const searchIdentifiers = getSearchIdentifiers(\n catalogObjects,\n domainObject\n );\n const filterElements = [];\n const searchValue = entityBusinessKey.split('|')?.[1];\n const values = searchValue.split(',');\n\n searchIdentifiers.forEach((searchIdentifier, index) => {\n const searchField = searchIdentifier\n ? searchIdentifier.charAt(0).toUpperCase() + searchIdentifier.slice(1)\n : '';\n filterElements.push({\n searchField: searchField,\n searchOperator: '=',\n searchValue: values[index]\n });\n });\n\n nodeToLoad.queryPayload = getSearchObject(\n filterElements,\n 1,\n 50,\n true,\n LogicalSearchOperatorEnums.And\n );\n\n nodeToLoad.nodeDetails = {\n catalogReturnObject: domainObject,\n treeStructureId: treeStructureId\n };\n\n return nodeToLoad;\n },\n [tree, catalogObjects]\n );\n\n const getIcon = useCallback(\n (reminder) => {\n const domainObject = reminder?.domainObject;\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n return matchingNode?.properties?.defaultIcon || {};\n },\n [tree]\n );\n\n const sortByDate = useCallback((reminderList, direction) => {\n const sortedReminders = [...reminderList];\n if (direction === 'asc') {\n sortedReminders.sort(\n (a, b) => new Date(b.reminderDate) - new Date(a.reminderDate)\n );\n } else if (direction === 'desc') {\n sortedReminders.sort(\n (a, b) => new Date(a.reminderDate) - new Date(b.reminderDate)\n );\n }\n setReminders(sortedReminders);\n }, []);\n\n const sort = useCallback(() => {\n sortByDate(reminders, sortDirection || 'desc');\n if (sortDirection === 'desc' || !sortDirection) {\n setSortDirection('asc');\n } else if (sortDirection === 'asc') {\n setSortDirection('desc');\n }\n }, [reminders, sortByDate, sortDirection]);\n\n const getReminders = useCallback(\n async (allRequested = false, rffSearchApiMethod) => {\n let remindersList = [];\n const warnings = [];\n\n if (!reminders) {\n setLoading(true);\n }\n\n let filterElements = [\n {\n searchField: 'Reminder.Acknowledged',\n searchValue: false,\n searchOperator: '=',\n groupId: 1\n },\n {\n searchField: 'Reminder.ReminderDate',\n searchValue: new Date(),\n searchOperator: '<=',\n groupId: 1\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n let filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: null\n },\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n\n if (allRequested) {\n filterElements = [\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n filterGroups = [\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n }\n\n const searchObject = getSearchObject(\n filterElements,\n 1,\n 200,\n true,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n const data = { data: searchObject };\n\n if (rffSearchApiMethod) {\n if (!rffSearchApiMethod.apiMethodId) {\n warnings.push({\n id: uuid(),\n severity: 'warning',\n message: t('Search ReminderFiledFor Method Not Promoted')\n });\n } else {\n const response = await executeQueryAdHoc(\n data,\n rffSearchApiMethod.apiMethodId\n ).catch((e) => {\n setLoading(false);\n });\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n domainObject: item.domainObject,\n filedToType: item.type,\n entityBusinessKey: item.entityBusinessKey\n }));\n }\n } else {\n warnings.push({\n id: uuid(),\n severity: 'error',\n message: t('Could not retrieve reminders')\n });\n }\n }\n }\n // Filter for reminders that belong to any of the domains within the tree\n const treeDomains = tree?.treeStructure.map(\n (node) => node.properties?.catalogReturnObject\n );\n if (treeDomains.length) {\n remindersList = remindersList.filter((reminder) =>\n treeDomains.includes(reminder.domainObject)\n );\n } else {\n remindersList = [];\n }\n setAlertWarnings(warnings);\n setLoading(false);\n sortByDate(remindersList, currentSortDirection);\n },\n [t, user, reminders, sortByDate, currentSortDirection, tree]\n );\n\n const updateRemindersAcknowledgement = useCallback(\n async (reminders) => {\n if (updateReminderApiMethod) {\n const updatedPromises = [];\n reminders.forEach((reminder) => {\n reminder.acknowledged = reminder.checked;\n const data = {\n requestBody: {\n ...reminder\n }\n };\n data['{iD}'] = reminder.id;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminder = reminders?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminder) {\n console.warn(`Reminder not updated for all file to entities`);\n }\n }\n });\n }\n );\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n },\n [updateReminderApiMethod, handleErrorSnackbar]\n );\n\n const handleAcknowledgeClick = useCallback(async () => {\n const acknowledgedReminders = reminders?.filter((r) => r.checked);\n if (acknowledgedReminders.length) {\n setButtonProgress(true);\n await updateRemindersAcknowledgement(acknowledgedReminders);\n setButtonProgress(false);\n getReminders(allRemindersRequested, reminderFiledForSearchApiMethod);\n }\n }, [\n reminders,\n getReminders,\n updateRemindersAcknowledgement,\n allRemindersRequested,\n reminderFiledForSearchApiMethod\n ]);\n\n const handleSwitchChange = useCallback(\n async (event) => {\n setLoading(true);\n if (event.target.checked) {\n setAllRemindersRequested(event.target.checked);\n await getReminders(true, reminderFiledForSearchApiMethod);\n } else {\n setAllRemindersRequested(false);\n await getReminders(false, reminderFiledForSearchApiMethod);\n }\n setLoading(false);\n },\n [getReminders, reminderFiledForSearchApiMethod]\n );\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n if (reminderFiledForSearchApiMethod) {\n getReminders(false, reminderFiledForSearchApiMethod);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reminderFiledForSearchApiMethod]);\n\n return (\n <WidgetCard\n ref={ref}\n // title={'Reminders'}\n hideWidgetName={hideWidgetName}\n headerActions={\n <div className={classes.actions}>\n <FormControlLabel\n control={\n <Switch\n id='udpRecord-RemindersWidget-Switch'\n udprecordid='udpRecord-RemindersWidget-Switch'\n size='small'\n onChange={handleSwitchChange}\n />\n }\n label='All'\n style={{ marginRight: 8 }}\n />\n <FluentIconButton\n id='udpRecord-RemindersWidget-Sort'\n udprecordid='udpRecord-RemindersWidget-Sort'\n icon={SortIcon}\n onClick={sort}\n style={{ marginRight: 4 }}\n />\n <div className={classes.actionButton}>\n <FluentButton\n id='udpRecord-RemindersWidget-Complete'\n udprecordid='udpRecord-RemindersWidget-Complete'\n variant='contained'\n color='secondary'\n onClick={handleAcknowledgeClick}\n >\n {buttonProgress && (\n <CircularProgress\n size={24}\n color='primary'\n className={classes.fabProgress}\n />\n )}\n {t('Complete')}\n </FluentButton>\n </div>\n </div>\n }\n {...other}\n >\n {alertWarnings.length ? (\n alertWarnings.map((warning) => (\n <Alert severity={warning.severity || 'warning'}>\n {warning.message || ''}\n </Alert>\n ))\n ) : (\n <RemindersCard\n reminders={reminders}\n setReminders={setReminders}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n getNodeToLoad={getNodeToLoad}\n getIcon={getIcon}\n updateRemindersAcknowledgement={updateRemindersAcknowledgement}\n />\n )}\n\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RemindersWidget);\n","import React, { useMemo } from 'react';\nimport { UdpFormsRenderer } from 'udp-react-stencil-component-library';\nimport { useLocation } from 'react-router-dom';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { ConfigService } from 'udp-react-stencil-component-library';\nimport { useActions } from '../../hooks/useActions';\nimport { acquireAccessToken } from '../../utilities/auth/authActions';\nimport { useSnackbar } from 'notistack';\n\n\nconst useSearchParams = () => {\n const search = useLocation().search;\n\n // when params are populated with an internal redirect, like on a Page menu, the useLocation hook does not get the query params\n // so it will fallback with window.location.search in that case\n return new URLSearchParams(search || window.location.search);\n}\nconst UdpPrivateForm = (props) => {\n const user = useUser();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { triggerAction } = useActions();\n const queryParams = useSearchParams();\n const formId = useMemo(() => {\n return queryParams.get('udpf_formId')\n }, [queryParams])\nconst versionId = useMemo(() => {\n return queryParams.get('udpf_version')\n }, [queryParams])\n\n \n\n if (formId) {\n return (\n <UdpFormsRenderer\n formId={formId}\n triggerAction={triggerAction}\n version={versionId}\n getUserCallback={() => user}\n enqueueSnackbar={enqueueSnackbar}\n closeSnackbar={closeSnackbar}\n />\n );\n } else {\n return null;\n }\n};\nexport default UdpPrivateForm;\n","import React, { useMemo, useState } from 'react';\nimport { UdpFormsList } from 'udp-react-stencil-component-library';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { useHistory } from 'react-router-dom';\n\nconst UdpFormsListPage = (props) => {\n const user = useUser();\n const tenant = useTenant();\n const history = useHistory();\n\n const tenantId = tenant?.activeTenant?.tenantId;\n\n return (\n <div>\n <UdpFormsList\n history={history}\n />\n </div>\n );\n};\nexport default UdpFormsListPage;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { UdpFormsBuilder } from 'udp-react-stencil-component-library';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { useSnackbar } from 'notistack';\n\nconst UdpFormsBuilderPage = () => {\n const user = useUser();\n const tenant = useTenant();\n const location = useLocation(); // detects changes in the URL\n const history = useHistory();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n // Store search params in state so re-render happens when they change\n const [searchParams, setSearchParams] = useState(() => new URLSearchParams(location.search));\n\n // Recompute search params on location change\n useEffect(() => {\n setSearchParams(new URLSearchParams(location.search));\n }, [location.search]);\n\n // Extract values from searchParams\n const formId = searchParams.get('udpf_formId');\n const version = searchParams.get('udpf_version');\n const callbackUrl = searchParams.get('udpf_callback_url');\n\n return (\n <div>\n <UdpFormsBuilder\n formId={formId}\n version={version}\n enqueueSnackbar={enqueueSnackbar}\n closeSnackbar={closeSnackbar}\n history={history}\n />\n </div>\n );\n};\n\nexport default UdpFormsBuilderPage;\n","import React from 'react';\nimport { ImportDataFromFileMapping } from '../fileImportMapping/ImportDataFromFileMapping';\n\nconst UdpImportFromFileMappingPage = props => {\n return <ImportDataFromFileMapping/>\n};\n\nexport default UdpImportFromFileMappingPage;\n","import * as UdpNotesPage from './UdpNotesPage';\nimport * as UdpVerticalManagementPage from './UdpVerticalManagementPage';\nimport * as UdpGridPanelManagementPage from './UdpGridPanelManagementPage';\nimport * as UdpMaintenanceEnginePage from './UdpMaintenanceEnginePage';\nimport * as UdpInquiryMaintenanceEnginePage from './UdpInquiryMaintenanceEnginePage';\nimport * as UdpReportsPage from './UdpReportsPage';\nimport * as DonutChartWidget from '../../UI/widgets/library/DonutChartWidget';\nimport * as SparklineWidget from '../../UI/widgets/library/SparklineWidget';\nimport * as ProgressBarWidget from '../../UI/widgets/library/ProgressBarWidget';\nimport * as RecentlyLoadedNodesWidget from '../../UI/widgets/library/RecentlyLoadedNodesWidget';\nimport * as ChatUDP from './ChatUDP';\nimport * as UdpDataBrowserPage from './UdpDataBrowserPage';\nimport * as UdpRemindersPage from './UdpRemindersPage';\nimport * as RemindersWidget from '../../UI/widgets/library/RemindersWidget';\nimport * as UdpPublicForm from './UdpPublicForm'\nimport * as UdpPrivateForm from './UdpPrivateForm'\nimport * as UdpFormsListPage from './UdpFormsListPage';\nimport * as UdpFormsBuilderPage from './UdpFormsBuilderPage';\nimport * as UdpImportFromFileMappingPage from './UdpImportFromFileMappingPage'\n\nexport const UdpPages = {\n UdpNotesPage,\n UdpVerticalManagementPage,\n UdpGridPanelManagementPage,\n UdpMaintenanceEnginePage,\n UdpInquiryMaintenanceEnginePage,\n UdpReportsPage,\n DonutChartWidget,\n SparklineWidget,\n ProgressBarWidget,\n RecentlyLoadedNodesWidget,\n ChatUDP,\n UdpDataBrowserPage,\n UdpRemindersPage,\n RemindersWidget,\n UdpPublicForm,\n UdpPrivateForm,\n UdpFormsBuilderPage,\n UdpFormsListPage,\n UdpImportFromFileMappingPage\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"udpPages-D6t7REhp.js","names":["t","params","apiMutate","products","IconLibrary","apiMutate","UdpVerticalManagementSidesheet","apiMutate","grid","panel","UdpGridPanelManagementSidesheet","useStyles","useStyles","FluentTrendArrow","value","layout","FluentStatsSnippet","WidgetCard","ChartSummaryToggle","layout","useStyles","WidgetCard","FluentStatsSnippet","useStyles","FluentDisplayNumber","useStyles","FluentStatNumbers","useStyles","FluentStatNumber","useStyles","WidgetCard","FluentPrimaryStatNumber","FluentSecondaryStatNumber","WidgetCard","apiMutate","entityName","uuid","params","t","uuid","reminders","WidgetCard"],"sources":["../src/udp/pages/UdpNotesPage.jsx","../src/udp/pages/UdpVerticalManagementSidesheet.jsx","../src/udp/pages/UdpVerticalManagementPage.jsx","../src/udp/pages/UdpGridPanelManagementSidesheet.jsx","../src/udp/pages/UdpGridPanelManagementPage.jsx","../src/udp/pages/UdpInquiryMaintenanceEnginePage.jsx","../src/udp/pages/UdpReportsPage.jsx","../src/UI/widgets/FluentComponents/atoms/FluentTrendArrow.jsx","../src/UI/widgets/FluentComponents/atoms/FluentStatsSnippet.jsx","../src/UI/widgets/FluentComponents/ChartSummaryToggle.jsx","../src/UI/widgets/utils/ConvertISODate.js","../src/UI/widgets/library/DonutChartWidget.jsx","../src/UI/widgets/library/SparklineWidget.jsx","../src/UI/widgets/FluentComponents/molecules/FluentStatNumber.jsx","../src/UI/widgets/FluentComponents/molecules/FluentPrimaryStatNumber.jsx","../src/UI/widgets/FluentComponents/molecules/FluentSecondaryStatNumber.jsx","../src/UI/widgets/library/ProgressBarWidget.jsx","../src/UI/widgets/library/RecentlyLoadedNodesWidget.jsx","../src/udp/pages/ChatUDP.jsx","../src/udp/pages/UdpDataBrowserPage.jsx","../src/udp/pages/UdpRemindersPage.jsx","../src/UI/widgets/library/RemindersWidget.jsx","../src/udp/pages/UdpPrivateForm.jsx","../src/udp/pages/UdpFormsListPage.jsx","../src/udp/pages/UdpFormsBuilderPage.jsx","../src/udp/pages/UdpImportFromFileMappingPage.jsx","../src/udp/pages/udpPages.js"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { UdpEnums } from '../../enums/unitySystemEnums';\nimport { useActionState } from '../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\nimport { EditIcon, ViewIcon } from '@fluentui/react-icons';\nimport { NotesScreen } from '../../notes/NotesScreen';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useActions } from '../../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../../enums/unitySystemEnums';\nimport { useUser } from '../../utilities/auth/useUser';\n\nconst UdpNotesPage = (props) => {\n const { params } = props;\n const { nodeObj, manytoManyNodeObjKey } = params;\n const [notes, setNotes] = useState([]);\n const [typeOptions, setTypeOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [noteId, setNoteId] = useState('');\n const { openSplitScreen } = useActions();\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const formRef = useRef(null);\n const user = useUser();\n\n const noteFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTypeGetAllApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Type,\n 'unityBaseGetAllMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const getNotes = useCallback(async () => {\n if (!nodeObj) {\n return [];\n }\n let notesList = [];\n setLoading(true);\n const filterElements = [\n {\n searchField: 'entityBusinessKey',\n searchValue: manytoManyNodeObjKey\n ? nodeObj[manytoManyNodeObjKey]?.businessObjectKey\n : nodeObj?.businessObjectKey,\n searchOperator: '='\n }\n ];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n\n if (noteFiledForSearchApiMethod) {\n const response = await executeQueryAdHoc(\n data,\n noteFiledForSearchApiMethod.apiMethodId\n );\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n notesList = pageList.map((item) => item.note);\n }\n } else {\n handleErrorSnackbar(null, t('Could not retrieve notes'));\n }\n } else {\n handleErrorSnackbar(null, t('Search NoteFiledFor Method Not Promoted'));\n }\n setLoading(false);\n setNotes(notesList);\n }, [\n noteFiledForSearchApiMethod,\n handleErrorSnackbar,\n nodeObj,\n manytoManyNodeObjKey,\n t,\n user\n ]);\n\n const openSheet = useCallback((value) => {\n setNoteId(value?.id || '');\n setSheetOpen(true);\n }, []);\n\n const closeSheet = useCallback(() => {\n setNoteId('');\n setSheetOpen(false);\n }, []);\n\n const handleEditPage = useCallback(\n (value) => {\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Notes,\n params: { id: value?.id || '', reloadNotes: getNotes }\n });\n },\n [openSplitScreen, getNotes]\n );\n\n const getType = useCallback(\n (params) => {\n const type = typeOptions.find((t) => t.code === params.data.typeCode);\n return type?.name || '';\n },\n [typeOptions]\n );\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Note'),\n icon: ViewIcon,\n onClick: openSheet,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEditPage,\n disabled: false\n }\n ],\n [t, openSheet, handleEditPage]\n );\n\n const columnDefs = [\n {\n headerName: 'Date',\n field: 'createdOn',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Subject',\n field: 'subject',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Note',\n field: 'content',\n resizable: true,\n sortable: true,\n valueGetter: (params) => params.data.content.replace(/(<([^>]+)>)/gi, '')\n },\n {\n headerName: 'Type',\n field: 'typeCode',\n resizable: true,\n sortable: true,\n valueGetter: getType\n },\n {\n headerName: 'Created By',\n field: 'userDisplayName',\n resizable: true,\n sortable: true\n },\n {\n headerName: '',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ];\n\n // no dependencies in the array because we only want getNotes to run once\n useEffect(() => {\n getNotes();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const getTypeOptions = async () => {\n let options = [];\n if (noteTypeGetAllApiMethod) {\n const typesResponse = await executeQueryAdHoc(\n { data: {} },\n noteTypeGetAllApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [noteTypeGetAllApiMethod]);\n\n return (\n <>\n <SideSheet\n open={sheetOpen}\n onClose={closeSheet}\n title={t('Note')}\n width={600}\n >\n <NotesScreen\n viewOnly={true}\n id={noteId}\n shortcutContentFinderEnabled={false}\n formRef={formRef}\n />\n </SideSheet>\n <AmbientGridTemplate\n title={'Notes'}\n data={notes}\n columnDefs={columnDefs}\n loading={loading}\n frameworkComponents={{ actionsRenderer: ActionsRenderer }}\n groupingData={[]}\n />\n </>\n );\n};\n\nexport default UdpNotesPage;\n","import React, {\n useCallback,\n useState,\n useMemo,\n useRef,\n useEffect,\n useLayoutEffect\n} from 'react';\nimport {\n TextField,\n Button,\n LinearProgress,\n IconButton\n} from '@material-ui/core';\nimport { Form } from '../../utilities/form/Form';\nimport { Field } from '../../utilities/form/Field';\nimport { SubmitButton } from '../../utilities/form/SubmitButton';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { useActionState } from '../../hooks/useActions';\nimport { useTranslation } from 'react-i18next';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { FluentCheckbox } from '../../UI/inputs/checkbox/FluentCheckbox';\nimport { UnityFluentIcon } from '../../utilities/iconLibrary/UnityFluentIcon';\nimport {\n findAllParentIds,\n getIconFromName\n} from '../../utilities/tree/TreeUtilities';\nimport { getUnityIconFromName } from '../../utilities/iconLibrary/UnityIconLibrary';\nimport IconLibrary from '../../utilities/iconLibrary/IconLibrary';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { FormButtons } from '../../utilities/form';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpVerticalManagementSidesheet = (props) => {\n const {\n selectedVertical,\n environment,\n associatedProducts,\n isEdit,\n deleteVertical,\n open,\n selectedCatalog,\n closeSidesheet,\n onSubmit,\n ...sheetProps\n } = props;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n const actionState = useActionState();\n const [displayedIcon, setDisplayedIcon] = useState({\n name: 'StatusCircleQuestionMarkIcon',\n color: '',\n type: ''\n });\n const [products, setProducts] = useState([]);\n const [openIconLibrary, setOpenIconLibrary] = useState(false);\n\n const [selectedProductIds, setSelectedProductIds] = useState([]);\n const [checkboxValues, setCheckboxValues] = useState([]);\n const [submitButtonDisabled, setSubmitButtonDisabled] = useState(true);\n const selectedProductIdsRef = useRef();\n selectedProductIdsRef.current = selectedProductIds;\n const displayedIconRef = useRef();\n displayedIconRef.current = displayedIcon;\n const selectedVerticalRef = useRef();\n selectedVerticalRef.current = selectedVertical;\n const formRef = useRef();\n const nameRef = useRef();\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const CheckBoxRenderer = ({ onChange, value, id, defaultChecked }) => {\n const isAssociatedToVertical = useCallback(\n (productId) => {\n if (!isEdit) return false;\n for (let product of associatedProducts) {\n if (\n product.productId === productId &&\n product.verticalId === selectedVerticalRef.current.verticalId\n ) {\n return true;\n }\n }\n // console.log(selectedVerticalRef.current.icon)\n const icon = getIconFromName(selectedVerticalRef.current.icon);\n // console.log(\"🚀 ~ file: UdpVerticalManagementSidesheet.jsx:81 ~ isAssociatedToVertical ~ icon:\", icon)\n\n return false;\n },\n [associatedProducts, selectedVerticalRef]\n );\n\n const handleCheckboxChange = (e) => {\n if (e.target.checked) {\n setSelectedProductIds((prevState) => [...prevState, id]);\n } else {\n setSelectedProductIds((prevState) =>\n prevState.filter((item) => item !== id)\n );\n }\n };\n\n return (\n <FluentCheckbox\n // checked={value}\n defaultChecked={isAssociatedToVertical(id)}\n onChange={handleCheckboxChange}\n aria='column-active'\n />\n );\n };\n\n // const actionList = useMemo(\n // () => [\n // {\n // id: 1, // Must be unique\n // title: t('Edit'),\n // icon: EditIcon,\n // onClick: handleEditPage,\n // disabled: false\n // },\n // {\n // id: 2, // Must be unique\n // title: t('Delete'),\n // icon: DeleteIcon,\n // onClick: handleDelete,\n // disabled: false\n // }\n // ],\n // [t, handleEditPage, handleDelete]\n // );\n\n const gridOptions = useMemo(\n () => ({\n frameworkComponents: {\n actionsRenderer: ActionsRenderer,\n checkboxRenderer: CheckBoxRenderer\n },\n columnDefs: [\n {\n headerName: '',\n field: 'select',\n cellRenderer: 'checkboxRenderer',\n cellRendererParams: (params) => ({\n // onChange: onChange,\n // value: checked[params.data.productId] || false,\n id: params.data.productId\n })\n },\n {\n headerName: t('Product Name'),\n field: 'name',\n minWidth: 200\n }\n ]\n }),\n [isEdit, selectedVertical, associatedProducts]\n );\n\n const executeMutation = useCallback(\n async (endpoint, method, data) =>\n apiMutate(\n ConfigService.uemV1ApiUrl,\n endpoint,\n {\n method: method || 'post'\n },\n data\n ),\n []\n );\n\n const getProducts = useCallback(\n async (data) => {\n setLoading(true);\n\n const response = await executeMutation('uem', 'post', data);\n if (response?.status === 200) {\n setProducts(response?.data);\n }\n setLoading(false);\n },\n [executeMutation, setProducts]\n );\n\n const createVertical = useCallback(\n async (data) => {\n setLoading(true);\n\n const response = await executeMutation(\n 'vertical/uemCreate',\n 'post',\n data\n );\n if (response?.status === 201) {\n closeSidesheet();\n handleSuccessSnackbar('Vertical Created Successfully');\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n },\n [executeMutation]\n );\n\n const updateVertical = useCallback(\n async (data) => {\n setLoading(true);\n\n const response = await executeMutation(\n `vertical/${selectedVertical.verticalId}/uemUpdate`,\n 'put',\n data\n );\n if (response?.status === 204) {\n closeSidesheet();\n handleSuccessSnackbar('Vertical Updated Successfully');\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n },\n [selectedVertical, executeMutation]\n );\n\n const handleSubmit = useCallback(\n (values) => {\n setLoading(true);\n const products = selectedProductIdsRef.current.map((productId) => ({\n productId\n }));\n\n !isEdit\n ? createVertical({\n data: {\n name: values.name,\n products: products,\n icon: displayedIconRef?.current.name,\n EnvironmentId: environment.environmentId,\n apiPath: 'api/v1/vertical/uemCreate'\n }\n })\n : updateVertical({\n data: {\n name: values.name,\n products: products,\n icon: displayedIconRef?.current.name,\n EnvironmentId: environment.environmentId,\n apiPath: `api/v1/vertical/${selectedVertical.verticalId}/uemUpdate`\n }\n });\n },\n [\n isEdit,\n createVertical,\n environment,\n updateVertical,\n selectedVertical,\n selectedProductIdsRef\n ]\n );\n\n useEffect(() => {\n if (environment && getProducts) {\n if (environment.environmentId) {\n const data = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `tenantService/api/v2/product`\n }\n };\n getProducts(data);\n }\n }\n }, [environment, getProducts]);\n\n useEffect(() => {\n if (selectedVertical) {\n const associatedProductIds = selectedVertical.verticalProductVertical.map(\n (product) => product.productId\n );\n setSelectedProductIds((prevState) => [\n ...prevState,\n ...associatedProductIds\n ]);\n }\n }, [selectedVertical, setSelectedProductIds]);\n\n const setDisplayedIconCallback = useCallback(() => {\n setDisplayedIcon({\n name:\n isEdit && selectedVertical?.icon\n ? selectedVertical?.icon\n : 'StatusCircleQuestionMarkIcon'\n });\n }, [selectedVertical, isEdit]);\n\n useEffect(() => {\n setDisplayedIconCallback();\n }, [open]);\n\n const closeIconLibrary = () => {\n setOpenIconLibrary(false);\n };\n\n const onOpenLibrary = () => {\n setOpenIconLibrary(true);\n };\n\n const handleIconSelect = (icon) => {\n const updateddisplayedIcon = { ...props.displayedIcon };\n updateddisplayedIcon.name = icon.id;\n updateddisplayedIcon.type = icon.type || null;\n setDisplayedIcon(updateddisplayedIcon);\n closeIconLibrary();\n };\n\n const initialValues = useMemo(() => {\n return {\n name: isEdit ? selectedVertical?.name : ''\n };\n }, [associatedProducts, selectedVertical, isEdit]);\n\n return (\n <>\n <SideSheet\n open={open}\n onClose={() => closeSidesheet()}\n width={400}\n title={props.title}\n // buttonLabel={\"Create\"}\n // onSubmit={handleSubmit}\n >\n <Form\n ref={formRef}\n onSubmit={handleSubmit}\n initialValues={initialValues}\n >\n <div style={{ display: 'flex' }}>\n <Field\n ref={nameRef}\n component={TextField}\n label={t('Name')}\n id='name'\n name='name'\n variant='outlined'\n size='small'\n required={true}\n style={{ marginTop: 8 }}\n />\n\n <IconButton onClick={onOpenLibrary}>\n {displayedIcon && (\n <UnityFluentIcon\n type={displayedIcon?.type}\n icon={\n displayedIcon?.type === 'unity'\n ? getUnityIconFromName(displayedIcon?.name)\n : getIconFromName(displayedIcon?.name)\n }\n />\n )}\n </IconButton>\n </div>\n <AmbientGridTemplate\n data={products}\n title={t('Products')}\n loading={loading}\n height={'calc(100vh - 300px)'}\n hideGroupTab\n hideColumnTab\n disablePagination\n hideFitGrid\n hideExpandGrid\n hideExportGrid\n hideRemoveFilters\n hideFilterTab\n {...gridOptions}\n />\n <FormButtons>\n <SubmitButton\n variant='contained'\n color='secondary'\n marginTop={'50px'}\n disabled={false}\n disablePristine={false}\n >\n {t(isEdit ? 'Update' : 'Create')}\n </SubmitButton>\n </FormButtons>\n {loading && <LinearProgress />}\n </Form>\n </SideSheet>\n <SideSheet\n open={openIconLibrary}\n onClose={closeIconLibrary}\n title={t('Icon Library')}\n width={'100%'}\n anchor='bottom'\n >\n <IconLibrary\n addItem={handleIconSelect}\n selectedIconName={displayedIcon?.name}\n title={t('Select Icon')}\n />\n </SideSheet>\n </>\n );\n};\n\nexport default UdpVerticalManagementSidesheet;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\n// import { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { AddIcon, DeleteIcon, EditIcon } from '@fluentui/react-icons';\nimport { Typography } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { PrimaryActionButton } from '../../UI/inputs/buttons/PrimaryActionButton';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport UdpVerticalManagementSidesheet from './UdpVerticalManagementSidesheet';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpVerticalManagementPage = (props) => {\n const { params } = props;\n const { nodeObj: environment, inquiryNodeProperties } = params;\n const { t } = useTranslation();\n\n const [sideSheetOpen, setSideSheetOpen] = useState(false);\n const [sideSheetEdit, setSideSheetEdit] = useState(false);\n const [loading, setLoading] = useState(false);\n const [selectedVertical, setSelectedVertical] = useState(null);\n const [verticals, setVerticals] = useState([]);\n const [productVertical, setProductVertical] = useState([]);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const selectedVerticalRef = useRef();\n selectedVerticalRef.current = selectedVertical ? selectedVertical : null;\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const openSheetAsEdit = useCallback((isEdit) => {\n setSideSheetOpen(true);\n setSideSheetEdit(isEdit);\n }, []);\n\n const closeDeleteDialog = useCallback(() => {\n setDeleteDialogOpen(false);\n }, [setDeleteDialogOpen]);\n\n const executeMutation = useCallback(\n async (endpoint, method, data) =>\n apiMutate(\n ConfigService.uemV1ApiUrl,\n endpoint,\n {\n method: method || 'post'\n },\n data\n ),\n []\n );\n\n const getVerticals = useCallback(\n async (data, isFirstLoad = false) => {\n if (isFirstLoad) {\n setLoading(true);\n }\n\n const response = await executeMutation('uem', 'post', data);\n if (response?.status === 200) {\n setVerticals(response?.data);\n }\n if (isFirstLoad) {\n setLoading(false);\n }\n },\n [executeMutation]\n );\n\n const deleteVertical = useCallback(async () => {\n const data = {\n data: {\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical/${selectedVerticalRef.current.verticalId}/uemDelete`\n }\n };\n const response = await executeMutation(\n `vertical/${selectedVerticalRef.current.verticalId}/uemDelete`,\n 'delete',\n data\n );\n if (response?.status === 204) {\n console.log('success');\n handleSuccessSnackbar('Vertical Deleted Successfully');\n }\n const getVerticalsData = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical`\n }\n };\n getVerticals(getVerticalsData, true);\n closeDeleteDialog();\n }, [executeMutation, selectedVertical, closeDeleteDialog]);\n\n const getProductVerticals = useCallback(\n async (data) => {\n const response = await executeMutation('productVertical', 'get', data);\n if (response?.status === 200) {\n setProductVertical(response?.data);\n }\n },\n [executeMutation]\n );\n\n useEffect(() => {\n if (environment && getVerticals) {\n if (environment.environmentId) {\n const productVerticalData = {\n data: {\n apiPath: `api/v2/ProductVertical`\n }\n };\n getProductVerticals(productVerticalData);\n const data = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical`\n }\n };\n getVerticals(data, true);\n }\n }\n }, [environment, getVerticals, getProductVerticals, deleteVertical]);\n\n const closeSheet = useCallback(() => {\n setSideSheetOpen(false);\n const data = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/Vertical`\n }\n };\n\n getVerticals(data);\n }, [getVerticals, environment]);\n\n const handleEditPage = useCallback(\n (value) => {\n setSelectedVertical(value);\n console.log('Edit page, value: ', value);\n openSheetAsEdit(true);\n },\n [t]\n );\n\n const handleCreateVertical = useCallback(\n (value) => {\n openSheetAsEdit(false);\n },\n [t]\n );\n\n const handleDelete = useCallback(\n (value) => {\n setSelectedVertical(value);\n console.log('Delete page, value: ', value);\n setDeleteDialogOpen(true);\n },\n [t]\n );\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEditPage,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Delete'),\n icon: DeleteIcon,\n onClick: handleDelete,\n disabled: false\n }\n ],\n [t, handleEditPage, handleDelete]\n );\n\n const gridOptions = useMemo(\n () => ({\n frameworkComponents: {\n actionsRenderer: ActionsRenderer\n },\n columnDefs: [\n {\n headerName: t('Name'),\n field: 'name',\n minWidth: 300\n },\n {\n headerName: t('Icon'),\n field: 'icon'\n },\n {\n headerName: t('Actions'),\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ]\n }),\n [t, actionList, productVertical]\n );\n\n const pab = (\n <PrimaryActionButton onClick={handleCreateVertical}>\n <Typography style={{ marginRight: 5 }}>Add</Typography>\n <AddIcon />\n </PrimaryActionButton>\n );\n\n return (\n <>\n <UdpVerticalManagementSidesheet\n open={sideSheetOpen}\n closeSidesheet={closeSheet}\n selectedVertical={selectedVertical}\n environment={environment}\n title={t(sideSheetEdit ? 'Edit Vertical' : 'Create Vertical')}\n associatedProducts={productVertical}\n isEdit={sideSheetEdit}\n />\n <AmbientGridTemplate\n title={t('Vertical Manager')}\n primaryActionButton={pab}\n data={verticals}\n // hideGroupTab\n // hideColumnTab\n loading={loading}\n gridOptions={gridOptions}\n groupingData={[]}\n />\n <FluentDialog\n open={deleteDialogOpen}\n handleClose={closeDeleteDialog}\n title={t('Delete Vertical')}\n message={\n t('Are you sure you want to Delete') + ` \"${selectedVertical?.name}\"?`\n }\n actionOne={deleteVertical}\n labelOne={t('Delete')}\n actionTwo={closeDeleteDialog}\n labelTwo={t('Cancel')}\n />\n </>\n );\n};\n\nexport default UdpVerticalManagementPage;\n","import React from \"react\";\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\n\n/**\n * @param {object} props\n * @param {object} props.selectedGridPanel\n * @param {string} props.environment\n * @param {boolean} props.open\n * @param {Function} props.onClose\n * @param {Function} props.onSubmit\n * @param {string} props.title\n * @param {any[]} props.grids\n * @param {any[]} props.panels\n * @param {any} props.grid\n * @param {Function} props.setGrid\n * @param {any} props.panel\n * @param {Function} props.setPanel\n * @returns {JSX.Element}\n */\nconst UdpGridPanelManagementSidesheet = (props) => {\n const {\n selectedGridPanel,\n environment,\n open,\n onClose,\n onSubmit,\n title,\n grids,\n panels,\n grid,\n setGrid,\n panel,\n setPanel,\n ...sheetProps\n } = props;\n\n return (\n <SideSheet \n open={open}\n onClose={() => onClose()}\n width={400}\n title={title}\n buttonLabel={'Save'}\n onSubmit={onSubmit}\n {...sheetProps}\n >\n <FluentTextFieldAutoComplete\n id={'grid'}\n label={\"Grid\"}\n options={grids}\n optionKey=\"name\"\n onChange={setGrid}\n value={grid}\n />\n <FluentTextFieldAutoComplete\n id={'panel'}\n label={\"Panel\"}\n options={panels}\n optionKey=\"name\"\n onChange={setPanel}\n value={panel}\n />\n </SideSheet>\n );\n};\n\nexport default UdpGridPanelManagementSidesheet;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\n// import { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { AddIcon, DeleteIcon, EditIcon } from '@fluentui/react-icons';\nimport { Typography } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { PrimaryActionButton } from '../../UI/inputs/buttons/PrimaryActionButton';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport UdpVerticalManagementSidesheet from './UdpVerticalManagementSidesheet';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport UdpGridPanelManagementSidesheet from './UdpGridPanelManagementSidesheet';\nimport { useAgGridApi } from '../../utilities/aggrid/AgTable';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpGridPanelManagementPage = (props) => {\n const { params } = props;\n const { nodeObj: environment } = params;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n const [gridPanels, setGridPanels] = useState([]);\n const [grids, setGrids] = useState([]);\n const [panels, setPanels] = useState([]);\n const [addSidesheetOpen, setAddSidesheetOpen] = useState(false);\n const [selectedRow, setSelectedRow] = useState();\n const [deleteDialogOpen, setDeleteDialogOpen] = useState();\n const [dataToDelete, setDataToDelete] = useState();\n\n const [grid, setGrid] = useState(null);\n const [panel, setPanel] = useState(null);\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const executeMutation = useCallback(\n async (endpoint, method, data) =>\n apiMutate(\n ConfigService.uemV1ApiUrl,\n endpoint,\n {\n method: method || 'post'\n },\n data\n ),\n []\n );\n\n const getGridPanels = useCallback(async () => {\n setLoading(true);\n const requestPayload = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/gridPanel`\n }\n };\n\n const response = await executeMutation('uem', 'post', requestPayload);\n if (response?.status === 200) {\n setGridPanels(response?.data);\n }\n setLoading(false);\n }, [environment?.environmentId, executeMutation]);\n\n const getGrids = useCallback(async () => {\n const requestPayload = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `TenantService/api/v2/grid`\n }\n };\n\n const response = await executeMutation('uem', 'post', requestPayload);\n if (response?.status === 200) {\n setGrids(response?.data);\n }\n }, [environment?.environmentId, executeMutation]);\n\n const getPanels = useCallback(async () => {\n const requestPayload = {\n data: {\n customerId: null,\n environmentId: environment.environmentId,\n apiPath: `IntegrationService/api/v2/panel`\n }\n };\n\n const response = await executeMutation('uem', 'post', requestPayload);\n if (response?.status === 200) {\n setPanels(response?.data);\n }\n }, [environment?.environmentId, executeMutation]);\n\n const createGridPanel = useCallback(async () => {\n setLoading(true);\n\n const requestPayload = {\n data: {\n customerId: null,\n gridId: grid.gridId,\n panelId: panel.panelId,\n environmentId: environment.environmentId,\n apiPath: `api/v1/gridPanel/uemCreate`\n }\n };\n\n const response = await executeMutation(\n 'gridPanel/uemCreate',\n 'post',\n requestPayload\n );\n if (response?.status === 201) {\n handleSuccessSnackbar('GridPanel Created Successfully');\n getGridPanels();\n setAddSidesheetOpen(false);\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n }, [\n environment,\n executeMutation,\n getGridPanels,\n grid,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n panel\n ]);\n\n const updateGridPanel = useCallback(async () => {\n setLoading(true);\n\n const requestPayload = {\n data: {\n gridPanelId: selectedRow.gridPanelId,\n customerId: null,\n gridId: grid.gridId,\n panelId: panel.panelId,\n environmentId: environment.environmentId\n }\n };\n\n const response = await executeMutation(\n 'gridPanel/uemUpdate',\n 'put',\n requestPayload\n );\n if (response?.status === 204) {\n handleSuccessSnackbar('GridPanel Updated Successfully');\n getGridPanels();\n setAddSidesheetOpen(false);\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setLoading(false);\n }, [\n environment,\n executeMutation,\n getGridPanels,\n grid,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n panel,\n selectedRow\n ]);\n\n const deleteGridPanel = useCallback(async () => {\n setLoading(true);\n\n const requestPayload = {\n data: {\n gridPanelId: dataToDelete.gridPanelId,\n customerId: null,\n gridId: dataToDelete.gridId,\n panelId: dataToDelete.panelId,\n environmentId: environment.environmentId\n }\n };\n\n const response = await executeMutation(\n 'gridPanel/uemDelete',\n 'delete',\n requestPayload\n );\n if (response?.status === 204) {\n handleSuccessSnackbar('GridPanel Deleted Successfully');\n getGridPanels();\n } else {\n handleErrorSnackbar('Something went wrong');\n }\n setDataToDelete();\n setLoading(false);\n }, [\n environment,\n executeMutation,\n getGridPanels,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n dataToDelete\n ]);\n\n const openDeleteDialog = (data) => {\n setDeleteDialogOpen(true);\n setDataToDelete(data);\n console.log(data);\n };\n\n useEffect(() => {\n getGridPanels();\n getGrids();\n getPanels();\n }, [getGridPanels, getGrids, getPanels]);\n\n const handleEdit = useCallback((row) => {\n setSelectedRow(row);\n }, []);\n\n useEffect(() => {\n if (selectedRow) {\n const selectedGrid = grids.find(\n (grid) => grid.gridId === selectedRow.gridId\n );\n const selectedPanel = panels.find(\n (panel) => panel.panelId === selectedRow.panelId\n );\n setGrid(selectedGrid);\n setPanel(selectedPanel);\n setAddSidesheetOpen(true);\n }\n }, [grids, panels, selectedRow]);\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEdit,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Delete'),\n icon: DeleteIcon,\n onClick: openDeleteDialog,\n disabled: false\n }\n ],\n [t, handleEdit]\n );\n\n const gridOptions = useMemo(\n () => ({\n frameworkComponents: {\n actionsRenderer: ActionsRenderer\n },\n columnDefs: [\n {\n headerName: t('gridPanelId'),\n field: 'gridPanelId'\n },\n {\n headerName: t('gridId'),\n field: 'gridId'\n },\n {\n headerName: t('panelId'),\n field: 'panelId'\n },\n {\n headerName: t('Actions'),\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ]\n }),\n [actionList, t]\n );\n\n const handleClose = useCallback(() => {\n setGrid();\n setPanel();\n setSelectedRow();\n setAddSidesheetOpen(false);\n }, []);\n\n return (\n <>\n <UdpGridPanelManagementSidesheet\n title={selectedRow ? 'Update GridPanel' : 'Create GridPanel'}\n open={addSidesheetOpen}\n onClose={handleClose}\n environment={environment}\n grids={grids}\n panels={panels}\n grid={grid}\n setGrid={setGrid}\n panel={panel}\n setPanel={setPanel}\n onSubmit={selectedRow ? updateGridPanel : createGridPanel}\n />\n <FluentDialog\n open={deleteDialogOpen}\n handleClose={() => setDeleteDialogOpen(false)}\n title={t('Delete GridPanel')}\n message={t('Are you sure?')}\n actionOne={deleteGridPanel}\n labelOne={t('Delete')}\n actionTwo={() => setDeleteDialogOpen(false)}\n labelTwo={t('Cancel')}\n />\n <AmbientGridTemplate\n title={t('Grid Panel Manager')}\n useNewHeader\n data={gridPanels}\n gridOptions={gridOptions}\n onPrimaryActionClick={() => setAddSidesheetOpen(true)}\n primaryActionLabel='Add'\n loading={loading}\n />\n </>\n );\n};\n\nexport default UdpGridPanelManagementPage;\n","import React, {\n useState,\n useEffect\n} from 'react';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { UdpMaintenanceEnginePage } from './UdpMaintenanceEnginePage';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst UdpInquiryMaintenanceEnginePage = (props) => {\n const { params } = props;\n const { nodeObj } = params;\n const [loading, setLoading] = useState(false);\n\n const [{ data: catalogKey, loading: catalogKeyLoading }] = useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpObjectInfo/getCatalogId/${nodeObj.businessObjectKey}?fromUdpObjectInfo=true`,\n {},\n !!!nodeObj,\n false\n );\n\n /*\n returns {\n entityName: Tenant,\n productId: 1,\n unityBaseGetAllMethod: {apiMethodId: 'f06f7853-5816-4950-a275-5085c3387d57', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseGetMethod: {apiMethodId: '06f49cfd-0f1e-475a-812b-73cd3efd9f0d', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseCreateMethod: {apiMethodId: '33310aad-8998-4661-800b-00649d280d31', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseUpdateMethod: {apiMethodId: 'fe611db9-47ec-4a27-8840-871fe1323812', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseDeleteMethod: {apiMethodId: 'dafb84b6-e424-43ff-9ef0-774a5795e420', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n }\n */\n\n // Set loading flag based on the API loading flags\n useEffect(() => {\n setLoading(catalogKeyLoading);\n }, [catalogKeyLoading])\n\n return (\n\n <UdpMaintenanceEnginePage\n catalogKey={catalogKey || ''}\n />\n );\n};\n\nexport default UdpInquiryMaintenanceEnginePage;\n","import React from 'react';\nimport { PowerBIReport } from '../../reports/PowerBIReport';\n\nconst UdpReportsPage = (props) => {\n const { params } = props;\n\n return <PowerBIReport id={params?.pbiReportCode || null} />;\n};\n\nexport default UdpReportsPage;\n","import React from 'react';\nimport { makeStyles, colors } from '@material-ui/core';\nimport DownArrow from '@material-ui/icons/esm/ArrowDownward';\nimport UpArrow from '@material-ui/icons/esm/ArrowUpward';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n DownArrow: {\n color: colors.red[500],\n fontSize: 16,\n },\n UpArrow: {\n color: colors.green[500],\n fontSize: 16,\n },\n}));\n\nconst FluentTrendArrow = props => {\n const { type } = props;\n const classes = useStyles();\n\n let trend = '';\n\n switch (type) {\n case 'up':\n trend = <UpArrow className={classes.UpArrow} />;\n break;\n case 'down':\n trend = <DownArrow className={classes.DownArrow} />;\n break;\n default:\n }\n\n return trend;\n};\nexport default FluentTrendArrow;\n","import React from 'react';\nimport { Typography, makeStyles } from '@material-ui/core';\nimport round from '@extra-number/round';\nimport FluentTrendArrow from './FluentTrendArrow';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n percent: {\n display: 'flex',\n flexDirection: 'row',\n marginTop: theme.spacing(-0.5),\n },\n arrow: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n percentAmount: {},\n}));\n\nconst FluentStatsSnippet = props => {\n const classes = useStyles(props);\n const {\n label,\n amount: rawAmount,\n prevAmount,\n percent: percentProp,\n trend: trendProp,\n } = props;\n\n // @todo Use an Intl formatter\n let amount = rawAmount;\n // TODO: Revisit below after Tampa Demo\n if (Math.abs(rawAmount) > 1_000_000) {\n //amount = Math.floor(rawAmount / 1_000_000) + 'M';\n let newNumber = rawAmount / 1_000_000;\n amount = [Math.round(newNumber * 10) / 10, 'M'];\n } else if (Math.abs(rawAmount) > 1_000) {\n //amount = Math.floor(rawAmount / 1_000) + 'K';\n let newNumber = rawAmount / 1_000;\n amount = [Math.round(newNumber * 10) / 10, 'K'];\n }\n\n let percent = percentProp;\n let trend = trendProp;\n if (typeof prevAmount === 'number') {\n const ratio = (rawAmount - prevAmount) / prevAmount;\n\n percent =\n Math.abs(round(ratio * 100, Math.abs(ratio) < 0.01 ? 0.01 : 1)) + '%';\n trend = ratio < 0 ? 'down' : 'up';\n }\n\n return (\n <div className={classes.root}>\n <Typography variant=\"overline\" component=\"div\">\n {label}\n </Typography>\n <Typography className={classes.stat} variant=\"h5\" component=\"div\">\n {amount}\n </Typography>\n <div className={classes.percent}>\n <div className={classes.arrow}>\n <FluentTrendArrow type={trend} />\n </div>\n <div className={classes.percentAmount}>\n <Typography variant=\"caption\">{percent}</Typography>\n </div>\n </div>\n </div>\n );\n};\nexport default FluentStatsSnippet;\n","import React, { useCallback } from 'react'\nimport ToggleButton from '@material-ui/lab/ToggleButton'\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup'\nimport { ChartIcon, NumberedListIcon } from '@fluentui/react-icons'\nimport { FluentIcon } from '../../../utilities/iconLibrary/FluentIcon'\n\nconst ChartSummaryToggle = (props) => {\n const { value, onChange } = props\n\n const change = useCallback((e, value) => onChange && onChange(value), [\n onChange\n ])\n\n return (\n <ToggleButtonGroup\n value={value}\n exclusive\n onChange={change}\n aria-label='chart summary mode toggle'\n >\n <ToggleButton\n name='chart-summary-mode'\n value='summary'\n aria-label='summary'\n >\n <FluentIcon component={NumberedListIcon} />\n </ToggleButton>\n <ToggleButton name='chart-summary-mode' value='chart' aria-label='chart'>\n <FluentIcon component={ChartIcon} />\n </ToggleButton>\n </ToggleButtonGroup>\n )\n}\n\nexport default ChartSummaryToggle\n","export const convertISODate = isoDate => {\n const date = new Date(isoDate);\n return date.toLocaleDateString('en-US');\n};\n","import React, { forwardRef, Fragment } from 'react'\nimport { Grid, Box, Typography } from '@material-ui/core'\nimport { MuiVegaLite } from '@material-vega/material-ui'\nimport WidgetCard from '../WidgetCard'\nimport FluentStatsSnippet from '../FluentComponents/atoms/FluentStatsSnippet'\nimport ChartSummaryToggle from '../FluentComponents/ChartSummaryToggle'\nimport { convertISODate } from '../utils/ConvertISODate'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nconst DonutChartWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme, dateRange } = params\n\n let body = (\n <Fragment>\n {dateRange && (\n <Typography gutterBottom variant='caption' component='h3'>\n From: {convertISODate(dateRange.from)} to:{' '}\n {convertISODate(dateRange.to)}\n </Typography>\n )}\n <Grid container>\n {mockData?.stats?.map((stat) => (\n <Grid item xs={3} key={stat.label}>\n <FluentStatsSnippet\n label={stat.label}\n amount={stat.currentValue}\n prevAmount={stat.previousValue}\n />\n </Grid>\n ))}\n </Grid>\n <Box clone flex={1} mt={1} overflow='hidden'>\n <MuiVegaLite\n variant='donutChart'\n style={{\n overflow: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0\n }}\n spec={{\n $schema: 'https://vega.github.io/schema/vega/v5.json',\n width: 200,\n height: 200,\n data: [\n {\n name: 'table',\n values: mockData?.data,\n transform: [\n {\n type: 'pie',\n field: 'value'\n }\n ]\n },\n {\n name: 'used',\n source: 'table',\n transform: [\n {\n type: 'formula',\n expr: \"datum.id === 'Other' ? 'Other' : 'Main'\",\n as: 'id'\n },\n {\n type: 'aggregate',\n fields: ['field'],\n groupby: ['id'],\n ops: ['sum'],\n as: ['sum']\n },\n {\n type: 'pivot',\n field: 'label',\n value: 'sum'\n }\n ]\n }\n ],\n scales: [\n {\n name: 'color',\n type: 'ordinal',\n domain: { data: 'table', field: 'label' },\n range: { scheme: 'greys' }\n }\n ],\n marks: [\n {\n type: 'arc',\n from: { data: 'table' },\n encode: {\n enter: {\n fill: { scale: 'color', field: 'label' },\n x: { signal: 'width / 2' },\n y: { signal: 'height / 2' },\n padAngle: { value: 0.01 }\n },\n update: {\n startAngle: { field: 'startAngle' },\n endAngle: { field: 'endAngle' },\n innerRadius: { signal: 'width / 2 - 10' },\n outerRadius: { signal: 'width / 2' }\n }\n }\n },\n {\n type: 'text',\n from: { data: 'used' },\n style: ['percent'],\n encode: {\n enter: {\n x: { signal: 'width / 2' },\n y: { signal: 'height / 2' },\n align: { value: 'center' },\n baseline: { value: 'middle' },\n fontSize: { value: 24 }\n }\n }\n }\n ],\n legends: [\n {\n fill: 'color',\n direction: 'vertical',\n encode: {\n labels: {\n name: 'legendLabel',\n enter: { text: { field: 'label' } }\n }\n },\n orient: 'right',\n labelColor: theme === 'dark' ? 'white' : 'rgba(0, 0, 0, 0.87)'\n }\n ]\n }}\n />\n </Box>\n {children}\n </Fragment>\n )\n\n return (\n <WidgetCard\n theme={theme}\n ref={ref}\n headerActions={\n <ChartSummaryToggle\n value={params.mode}\n onChange={(value) => setParam('mode', value)}\n />\n }\n {...other}\n title={mockData?.title}\n >\n {mockData ? (\n body\n ) : (\n <Typography variant='subtitle2'>\n Could not retrieve widget data. Please contact support.\n </Typography>\n )}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(DonutChartWidget)\n","import React, { forwardRef, Fragment } from 'react'\nimport { Grid, Typography, makeStyles } from '@material-ui/core'\nimport WidgetCard from '../WidgetCard'\nimport { Sparklines, SparklinesLine } from 'react-sparklines'\nimport FluentStatsSnippet from '../FluentComponents/atoms/FluentStatsSnippet'\nimport { convertISODate } from '../utils/ConvertISODate'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nconst useStyles = makeStyles((theme) => ({\n statList: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between'\n }\n}))\n\nconst SparklineWidget = (props, ref) => {\n const classes = useStyles()\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme, dateRange } = params\n\n return (\n <WidgetCard\n className={classes.root}\n theme={theme}\n ref={ref}\n {...other}\n title={mockData?.title}\n >\n {mockData ? (\n <Fragment>\n {dateRange && (\n <Typography gutterBottom variant='caption' component='h3'>\n From: {convertISODate(dateRange.from)} to:{' '}\n {convertISODate(dateRange.to)}\n </Typography>\n )}\n <div className={classes.statList}>\n {mockData?.stats?.map((stat) => (\n <Grid item key={stat.label}>\n <FluentStatsSnippet\n label={stat.label}\n amount={stat.amount}\n percent={stat.percent && stat.percent}\n trend={stat.trend}\n />\n </Grid>\n ))}\n </div>\n\n <Sparklines data={mockData?.data} strokeWidth={0.5}>\n <SparklinesLine color='#067e7e' />\n </Sparklines>\n {children}\n </Fragment>\n ) : (\n <Typography variant='subtitle2'>\n Could not retrieve widget data. Please contact support.\n </Typography>\n )}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(SparklineWidget)\n","import React from 'react'\nimport { Avatar, makeStyles, Typography } from '@material-ui/core'\nimport FluentDisplayNumber from '../atoms/FluentDisplayNumbers'\nimport { MarketIcon, MarketDownIcon } from '@fluentui/react-icons'\nimport { FluentIcon } from '../../../../utilities/iconLibrary/FluentIcon'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'row'\n },\n caption: {\n textAlign: 'left'\n },\n captionSmall: {\n textAlign: 'center'\n },\n trend: {\n marginTop: theme.spacing(2),\n marginLeft: theme.spacing(1)\n },\n upIcon: {\n color: 'green'\n },\n downIcon: {\n color: '#D50000'\n },\n avatar: {\n backgroundColor: 'white'\n }\n }),\n { next: 'FluentStatNumber' }\n)\n\nconst FluentStatNumber = (props) => {\n const classes = useStyles()\n const { small, trend, label, number } = props\n return (\n <div className={classes.root}>\n <div>\n <div>\n <FluentDisplayNumber small={small} number={Math.abs(number)} />\n </div>\n <div className={!small ? classes.caption : classes.captionSmall}>\n <Typography variant='overline'>{label}</Typography>\n </div>\n </div>\n\n <div className={classes.trend}>\n {small && (\n <Avatar className={classes.avatar}>\n {trend === 'down' ? (\n <FluentIcon\n component={MarketDownIcon}\n className={classes.downIcon}\n />\n ) : (\n <FluentIcon component={MarketIcon} className={classes.upIcon} />\n )}\n </Avatar>\n )}\n </div>\n </div>\n )\n}\nexport default FluentStatNumber\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport FluentStatNumbers from './FluentStatNumber';\n\nconst useStyles = makeStyles(\n theme => ({\n displayRow: {\n display: 'flex',\n flexDirection: 'row',\n },\n smallDisplay: {\n marginTop: theme.spacing(6),\n marginLeft: theme.spacing(3),\n },\n divider: {\n height: theme.spacing(6),\n marginTop: theme.spacing(6.5),\n marginLeft: theme.spacing(2),\n },\n }),\n { next: 'FluentPrimaryStatNumber' }\n);\n\nconst FluentPrimaryStatNumber = props => {\n const classes = useStyles();\n\n const { mainStat, mainLabel } = props;\n\n return (\n <div className={classes.displayRow}>\n <FluentStatNumbers label={mainLabel} number={mainStat} />\n </div>\n );\n};\n\nexport default FluentPrimaryStatNumber;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport FluentStatNumber from './FluentStatNumber';\n\nconst useStyles = makeStyles(theme => ({\n displayRow: {\n display: 'flex',\n flexDirection: 'row',\n },\n // smallDisplay: {\n // marginTop: theme.spacing(6),\n // },\n divider: {\n height: theme.spacing(6),\n marginTop: theme.spacing(6.5),\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst FluentSecondaryStatNumber = props => {\n const classes = useStyles();\n\n const { secondaryStat, secondaryLabel, trend } = props;\n\n return (\n <div className={classes.displayRow}>\n <div className={classes.smallDisplay}>\n <FluentStatNumber\n small\n trend={trend}\n label={secondaryLabel}\n number={secondaryStat}\n />\n </div>\n </div>\n );\n};\n\nexport default FluentSecondaryStatNumber;\n","import React, { forwardRef, Fragment } from 'react'\nimport FluentPrimaryStatNumber from '../FluentComponents/molecules/FluentPrimaryStatNumber'\nimport WidgetCard from '../WidgetCard'\nimport {\n LinearProgress,\n Typography,\n Divider,\n makeStyles\n} from '@material-ui/core'\nimport FluentSecondaryStatNumber from '../FluentComponents/molecules/FluentSecondaryStatNumber'\nimport { convertISODate } from '../utils/ConvertISODate'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n displayItems: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-around',\n color: 'white'\n },\n divider: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2)\n }\n}))\n\nconst ProgressBarWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme, dateRange } = params\n const classes = useStyles()\n\n return (\n <WidgetCard\n theme={theme}\n ref={ref}\n {...other}\n title={mockData?.title}\n widgetType='ProgressBarWidget'\n >\n {mockData ? (\n <Fragment>\n {dateRange && (\n <Typography gutterBottom variant='caption' component='h3'>\n Starting: {convertISODate(dateRange.from)}\n </Typography>\n )}\n\n <FluentPrimaryStatNumber\n mainStat={mockData?.value}\n mainLabel={mockData?.label}\n />\n <div>\n <LinearProgress\n variant='determinate'\n color='secondary'\n value={mockData?.progress}\n />\n {mockData?.progress}%\n </div>\n {mockData?.data && (\n <Fragment>\n <div className={classes.divider}>\n <Divider style={{ background: 'white', opacity: 0.5 }} />\n </div>\n <div className={classes.displayItems}>\n {mockData?.data.map((item, index) => {\n return (\n <FluentSecondaryStatNumber\n secondaryStat={item.value}\n secondaryLabel={item.label}\n trend={item.trend}\n />\n )\n })}\n </div>\n </Fragment>\n )}\n {children}\n </Fragment>\n ) : (\n <Typography variant='subtitle2'>\n Could not retrieve widget data. Please contact support.\n </Typography>\n )}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(ProgressBarWidget)\n","import React, { forwardRef } from 'react';\nimport WidgetCard from '../WidgetCard';\nimport { RecentlyLoadedNodesTable } from '../../../inquiry/dashboard/RecentlyLoadedNodesTable';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nexport const RecentlyLoadedNodesWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tree,\n hideWidgetName\n } = params;\n\n return (\n <WidgetCard\n ref={ref}\n title={'Recently Loaded'}\n hideWidgetName={hideWidgetName}\n {...other}\n >\n <RecentlyLoadedNodesTable\n recentlyLoadedNodes={recentlyLoadedNodes}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n tree={tree}\n hideTitle={true}\n />\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RecentlyLoadedNodesWidget);\n","import React from 'react';\nimport { ChatContainer } from '../../chatBot/ChatContainer';\n\nconst ChatUDP = () => {\n return (\n <ChatContainer />\n );\n};\n\nexport default ChatUDP;\n","import React, { useEffect, useState, useMemo, useCallback, memo } from 'react';\nimport { EditIcon, DeleteIcon, UploadIcon } from '@fluentui/react-icons';\nimport { useTranslation } from 'react-i18next';\nimport { DataBrowserContainer } from '../../dataBrowser/DataBrowserContainer';\nimport { CrudTableSidePanel } from '../../maintenanceEngine/crudBrowser/CrudTableSidePanel';\nimport {\n getPrimaryKeyValues,\n getPathObject\n} from '../../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { useAuthedUser } from '../../utilities/auth/useAuthedUser';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport {\n toLowerFirstChar,\n toUpperFirstChar\n} from '../../utilities/input/StringUtilities';\nimport { getEntityAttributes } from '../../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { CardinalityTypeEnums } from '../../enums/unitySystemEnums';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { useApiCatalog } from '../../hooks/useApiCatalog';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { useSearchFilterParamsMap } from '../../hooks/useSearchFilterParamsMap';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\nimport { useLocation } from 'react-router-dom';\nimport { useQueryExecutors } from '../../hooks/useQueryExecutors';\nimport { mapNodeObjValuesToSearchParameters } from '../../utilities/tree/TreeUtilities';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\n// const FILTER_PARAMS = [\n// {\n// name: 'tenantName',\n// value: 'ABC Company',\n// type: 'string'\n// },\n// {\n// name: 'productId',\n// value: 'UDP_PRODUCT_ID',\n// type: 'keyword'\n// },\n// {\n// name: 'productId',\n// value: 0,\n// type: 'function'\n// }\n// ];\n\n// const FUNCTION_LIST = [() => 1, () => 2];\n\nexport const UdpDataBrowserPage = (props) => {\n const { queryId, params } = props;\n const user = useAuthedUser();\n const { t } = useTranslation();\n const [entityData, setEntityData] = useState([]);\n const [gridApi, setGridApi] = useState(null);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const location = useLocation();\n const state = location.state;\n let searchParamStr = location.search;\n let searchParams = new URLSearchParams(searchParamStr);\n const searchParamsQueryId = state?.queryId\n ? state.queryId\n : searchParams.has('queryId') === true\n ? toUpperFirstChar(searchParams.get('queryId'))\n : '';\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const { getCleanData } = useQueryExecutors();\n\n const udpQueryId = useMemo(\n () => params?.queryId || queryId || searchParamsQueryId || '',\n [params, queryId, searchParamsQueryId]\n );\n\n const udpTagId = params?.udpTagId || '';\n\n const [selectedEntity, setSelectedEntity] = useState(null);\n const [foreignKeyData, setForeignKeyData] = useState(null);\n const [udpFieldSearchApiId, setUdpFieldSearchApiId] = useState(null);\n\n const [loading, setLoading] = useState(false);\n const [apiCatalogId, setApiCatalogId] = useState(null);\n const [entityName, setEntityName] = useState(null);\n const [enteredFromConfig, setEnteredFromConfig] = useState(false);\n\n const { data: catalog } = useApiCatalog(apiCatalogId);\n\n const { data: udpOjectFieldInfo } = usePromotedMethodEntity(\n 'UdpObjectFieldInfo',\n true\n );\n\n // TODO: Params will be either passed in or hard coded for now until we have a way of configuring/storing them.\n const { getQueryFilterElements } = useSearchFilterParamsMap();\n\n const [{ data: tpacb, loading: tpacbLoading, error: tpacbError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {},\n !!!user,\n false\n );\n\n const [\n {\n data: apiMethodInstance,\n loading: apiMethodInstancebLoading,\n error: apiMethodInstanceError\n }\n ] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apiMethodInstance/${udpQueryId}`,\n {},\n !!!udpQueryId,\n false\n );\n\n const [\n { data: apiMethod, loading: apiMethodLoading, error: apiMethodError }\n ] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apiMethod/${apiMethodInstance?.apiMethodId}`,\n {},\n !!!apiMethodInstance?.apiMethodId,\n false\n );\n\n const udpCatalogKey = useMemo(() => apiMethod?.entityName || '', [apiMethod]);\n\n /*\n returns {\n entityName: Tenant,\n productId: 1,\n unityBaseGetAllMethod: {apiMethodId: 'f06f7853-5816-4950-a275-5085c3387d57', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseGetMethod: {apiMethodId: '06f49cfd-0f1e-475a-812b-73cd3efd9f0d', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseCreateMethod: {apiMethodId: '33310aad-8998-4661-800b-00649d280d31', pathParameters: [{name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseUpdateMethod: {apiMethodId: 'fe611db9-47ec-4a27-8840-871fe1323812', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n unityBaseDeleteMethod: {apiMethodId: 'dafb84b6-e424-43ff-9ef0-774a5795e420', pathParameters: [{name: \"id\", in: \"path\", parameterType: \"string\", fullReference: \"\"}, {name: \"version\", in: \"path\", parameterType: \"string\", fullReference: \"\"}]},\n }\n */\n const { data: promotedMethodEntities, loading: promotedMethodsLoading } =\n usePromotedMethodEntity(entityName);\n\n const executeCreate = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseCreateMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n data\n ),\n [selectedEntity]\n );\n\n const executeUpdate = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseUpdateMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n data\n ),\n [selectedEntity]\n );\n\n const executeDelete = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseDeleteMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n data\n ),\n [selectedEntity]\n );\n\n const onCreate = useCallback(\n async (data) => {\n return await executeCreate(data);\n },\n [executeCreate]\n );\n\n const onUpdate = useCallback(\n async (data) => {\n return await executeUpdate(data);\n },\n [executeUpdate]\n );\n\n const onDelete = useCallback(\n async (data) => {\n return await executeDelete(data);\n },\n [executeDelete]\n );\n\n // Configured columns data from data builder\n const queryColumnsData = useMemo(() => {\n if (!apiMethodInstance) return [];\n let catalogMods = [];\n try {\n const catalogModificationStr = apiMethodInstance.catalogModification;\n const catalogModification = JSON.parse(catalogModificationStr);\n catalogMods = catalogModification;\n } catch {\n console.warn('Error parsing apiMethodInstance catalogModification');\n }\n return catalogMods;\n }, [apiMethodInstance]);\n\n // Lookups map used for to map lookups to column entries\n const lookupsMap = useMemo(() => {\n // need to return null for Datasource to not render twice\n if (!queryColumnsData.length) return null;\n const map = {};\n const lookupColumns = queryColumnsData.filter(\n (column) => !!column.extendedProperties?.lookup\n );\n lookupColumns.forEach((lc) => {\n map[lc.name] = {\n lookupKeyName: lc.extendedProperties?.lookupKeyName || '',\n lookupValueName: lc.extendedProperties?.lookupKeyName || '',\n value: lc.extendedProperties?.lookup || '',\n filterOn: !!lc.filterOn || false\n };\n });\n\n return map;\n }, [queryColumnsData]);\n\n const nodeFilterParams = useMemo(() => {\n let filterParams = [];\n if (params?.nodeObj && params?.queryParamMapping) {\n const mappedParameters = mapNodeObjValuesToSearchParameters(\n params.nodeObj,\n params.queryParamMapping\n );\n if (Object.keys(mappedParameters).length) {\n Object.keys(mappedParameters).forEach((key) => {\n filterParams.push({\n name: key,\n value: mappedParameters[key],\n type: 'string'\n });\n });\n }\n }\n return filterParams;\n }, [params]);\n\n // Additional filter elements\n const searchFilterElements = useMemo(() => {\n const filterElements = [];\n if (!enteredFromConfig && udpTagId) {\n filterElements.push({\n searchField: 'UdpTags.UdpTagAssociationUdpTag.Id',\n searchOperator: '=',\n searchValue: udpTagId\n });\n }\n\n const queryFilterElements = getQueryFilterElements(\n apiMethodInstance,\n nodeFilterParams\n );\n return filterElements.concat(queryFilterElements);\n }, [\n udpTagId,\n enteredFromConfig,\n getQueryFilterElements,\n apiMethodInstance,\n nodeFilterParams\n ]);\n\n const entityAttributes = useMemo(() => {\n return getEntityAttributes(catalog, entityName);\n }, [catalog, entityName]);\n\n const getMetaDataForUdpField = useCallback(\n async (entityName) => {\n let fieldInfos = [];\n if (udpFieldSearchApiId) {\n const filterElements = [\n {\n searchField: 'ObjectInfo.SanitizedName',\n searchOperator: '=',\n searchValue: entityName\n }\n ];\n const requestObj = getSearchObject(filterElements, 1, 50, true);\n\n executeQueryAdHoc({ data: requestObj }, udpFieldSearchApiId).then(\n (resp) => {\n fieldInfos = resp.data?.pageList;\n }\n );\n }\n return fieldInfos;\n },\n [udpFieldSearchApiId]\n );\n\n const getFKMethodEntities = useCallback(\n async (attributes) => {\n if (!attributes) {\n return [];\n }\n let fkMethods = [];\n\n for (const attr of attributes) {\n // check if there is a property with this childEntity\n if (attr?.extendedProperties?.childEntity) {\n // get the list of child entity field names from the Keys array\n const ceFieldsArr = [];\n Object.keys(attr.extendedProperties.childEntityAssoc || {}).length &&\n (attr.extendedProperties.childEntityAssoc.Cardinality ===\n CardinalityTypeEnums.Many_To_Many ||\n attr.extendedProperties.childEntityAssoc.Cardinality ===\n CardinalityTypeEnums.One_To_Many) &&\n !attr.extendedProperties.childEntityAssoc.UdpType &&\n attr.extendedProperties.childEntityAssoc.Keys.forEach(\n (value, i) => {\n const name = value.split(',')[0];\n if (name) {\n // check name string: if 1 word, lowercase. if 2 words, lower first char\n ceFieldsArr.push({\n idx: i,\n name: /^[A-Z]*$/.test(name)\n ? name.toLowerCase()\n : toLowerFirstChar(name)\n });\n }\n }\n );\n\n // find the child entity attribute\n const ceAttr = attributes.find((p) =>\n ceFieldsArr.find((cef) => cef.name === p.name)\n );\n\n if (ceAttr) {\n // get list of entity if ceProp exists\n await apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalogId}/promotedMethodEntities/${attr.reference}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n {\n method: 'get'\n },\n {}\n ).then((resp) => {\n if (resp && resp.data) {\n fkMethods.push({\n entityAttribute: ceAttr,\n entity: resp.data\n });\n }\n });\n }\n }\n }\n return fkMethods;\n },\n [apiCatalogId]\n );\n\n const getFKAssociationLabel = useCallback(\n async (entityName) => {\n let fieldsInfo = [];\n fieldsInfo = await getMetaDataForUdpField(entityName);\n if (fieldsInfo?.length <= 0) {\n return '';\n }\n const associationLabelInfo = fieldsInfo?.find(\n (fi) => fi.properties?.maintainenceConfig?.associationLabel === 'true'\n );\n return associationLabelInfo?.name;\n },\n [getMetaDataForUdpField]\n );\n\n const getDataByKey = (obj, k) => {\n if (!obj) return null;\n let val = obj[k] ?? null;\n if (!val) {\n const key = Object.keys(obj).find((objKey) =>\n objKey.toLowerCase().includes(k)\n );\n if (key) {\n val = obj[key];\n }\n }\n return val;\n };\n\n const getFKData = useCallback(async () => {\n if (!entityAttributes?.length) {\n return null;\n }\n const fkMethods = await getFKMethodEntities(entityAttributes);\n if (!fkMethods?.length) {\n setForeignKeyData([]);\n return [];\n }\n let fkData = [];\n let promises = [];\n let promiseDetails = [];\n const warnings = [];\n for (const method of fkMethods) {\n if (method && method?.entity?.unityBaseGetAllMethod) {\n const associationLabel = await getFKAssociationLabel(\n method.entity.entityName\n );\n promiseDetails.push({\n url:\n ConfigService.integrationV1ApiUrl +\n `/apimethod/executeQueryWithParameters/${method?.entity?.unityBaseGetAllMethod?.apiMethodId}`,\n fieldName: method.entityAttribute.name,\n name: method.entity.entityName,\n associationLabel: associationLabel\n });\n\n promises.push(\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${method?.entity?.unityBaseGetAllMethod?.apiMethodId}`,\n {\n method: 'post'\n },\n { data: {} }\n )\n );\n } else {\n warnings.push({\n id: uuid(),\n message: `${method.entity.entityName}'s Get-All method needs to be promoted`\n });\n }\n }\n\n setAlertWarnings(warnings);\n\n Promise.all(promises).then((resp) => {\n resp.forEach((response, index) => {\n if (response.status === 200) {\n if (response?.data) {\n let respData = [];\n const promiseDetail = promiseDetails.find(\n (p) =>\n p.url === response?.config?.url &&\n !fkData.find(\n (fd) =>\n fd.entityName === p.Name && fd.fieldName === p.fieldName\n )\n );\n response.data.forEach((d) => {\n const idName =\n promiseDetail?.fieldName && d[promiseDetail.fieldName]\n ? promiseDetail.fieldName\n : 'id';\n const id = getDataByKey(d, idName);\n const name = getDataByKey(\n d,\n toLowerFirstChar(promiseDetail.associationLabel) || 'name'\n );\n\n respData.push({ id: id, name: name ?? id });\n });\n\n fkData.push({\n fieldName: promiseDetail.fieldName,\n entityName: promiseDetail.name,\n name: promiseDetail.fieldName,\n data: respData\n });\n }\n }\n });\n setForeignKeyData(fkData);\n });\n }, [entityAttributes, getFKMethodEntities, getFKAssociationLabel]);\n\n const handleOnCreate = useCallback(\n async (values) => {\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n if (selectedEntity?.unityBaseCreateMethod) {\n const data = { requestBody: values };\n const response = await onCreate({ data }).catch((res) => {\n handleErrorSnackbar(res);\n });\n\n if (response?.status === 200) {\n handleSuccessSnackbar(\n entityName\n ? t(`${entityName} has been created`)\n : t(`Entity has been created`)\n );\n gridApi?.refreshServerSideStore();\n return response;\n }\n }\n }\n },\n [\n selectedEntity,\n onCreate,\n t,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n gridApi\n ]\n );\n\n const handleOnUpdate = useCallback(\n async (values, primaryKeyValues) => {\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n\n if (selectedEntity?.unityBaseUpdateMethod) {\n // Get primary key value object using path parameters and merge with data\n const pathObject = getPathObject(\n selectedEntity.unityBaseUpdateMethod.pathParameters,\n primaryKeyValues\n );\n let data = { requestBody: values };\n if (Array.isArray(pathObject)) {\n pathObject.forEach((po) => {\n data[Object.keys(po)[0]] = po[Object.keys(po)[0]];\n });\n } else {\n data = { ...pathObject, requestBody: values };\n }\n\n const response = await onUpdate({ data }).catch((res) => {\n handleErrorSnackbar(res);\n });\n\n if (response?.status === 200) {\n handleSuccessSnackbar(\n entityName\n ? t(`${entityName} has been updated`)\n : t(`Entity has been updated`)\n );\n\n gridApi?.refreshServerSideStore();\n }\n }\n }\n },\n [\n selectedEntity,\n onUpdate,\n t,\n gridApi,\n handleErrorSnackbar,\n handleSuccessSnackbar\n ]\n );\n\n const handleOnDelete = useCallback(\n async (value) => {\n value = getCleanData(value, lookupsMap);\n if (selectedEntity) {\n const entityName = selectedEntity?.entityName;\n\n if (selectedEntity?.unityBaseDeleteMethod) {\n // Get primary key value object using path parameters and merge with data\n const primaryKeyValues = getPrimaryKeyValues(entityAttributes, value);\n const pathObject = getPathObject(\n selectedEntity?.unityBaseDeleteMethod.pathParameters,\n primaryKeyValues\n );\n let data = {};\n if (Array.isArray(pathObject)) {\n pathObject.forEach((po) => {\n data[Object.keys(po)[0]] = po[Object.keys(po)[0]];\n });\n } else {\n data = { ...pathObject };\n }\n\n const response = await onDelete({ data }).catch((res) => {\n handleErrorSnackbar(res);\n });\n\n if (response?.status === 200) {\n handleSuccessSnackbar(\n entityName\n ? t(`${entityName} has been deleted`)\n : t(`Entity has been deleted`)\n );\n\n gridApi?.refreshServerSideStore();\n }\n }\n }\n },\n [\n selectedEntity,\n entityAttributes,\n onDelete,\n t,\n gridApi,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n getCleanData,\n lookupsMap\n ]\n );\n\n const handleEntitySelect = useCallback((entityName) => {\n setAlertWarnings([]);\n setEntityName(entityName);\n setEnteredFromConfig(true);\n }, []);\n\n const removeWarning = useCallback(\n (id) => {\n const updatedWarnings = alertWarnings.filter(\n (warning) => warning.id !== id\n );\n setAlertWarnings(updatedWarnings);\n },\n [alertWarnings]\n );\n\n const actionList = useMemo(() => {\n if (!selectedEntity) {\n return;\n }\n\n const data = getCleanData(entityData, lookupsMap);\n\n const actions = [\n {\n id: 1, // Must be unique\n title: selectedEntity?.unityBaseUpdateMethod\n ? t('Edit')\n : t('Edit Method Not Accessible'),\n icon: EditIcon,\n onClick: null,\n opens: 'sideSheet',\n loading: !!!foreignKeyData,\n view: {\n component: CrudTableSidePanel,\n properties: {\n entityAttributes,\n foreignKeyData: foreignKeyData,\n crudTableEditionData: null,\n onUpdate: handleOnUpdate,\n valuePropName: 'crudTableEditionData',\n closeSideSheet: null,\n closeSideSheetPropName: 'closeSideSheet',\n pageId: selectedEntity?.unityBaseUpdateMethod?.pageId,\n isNewEntry: false,\n entityName,\n entityData: data\n }\n },\n disabled: !!!selectedEntity?.unityBaseUpdateMethod\n },\n {\n id: 2, // Must be unique\n title: selectedEntity?.unityBaseDeleteMethod\n ? t('Delete')\n : t('Delete Method Not Accessible'),\n icon: DeleteIcon,\n onClick: null,\n opens: 'dialog',\n loading: !!!foreignKeyData,\n view: {\n component: null,\n properties: {\n title: t('Delete'),\n message: t('Are you sure you want to delete this row?'),\n labelOne: t('Cancel'),\n actionTwo: handleOnDelete,\n labelTwo: t('Confirm')\n }\n },\n disabled: !!!selectedEntity?.unityBaseDeleteMethod\n }\n ];\n\n if (params?.loadInquiryNode && params?.displayLoadNodeButton) {\n actions.push({\n id: 5, // Must be unique\n title: t('Load to Tree'),\n icon: UploadIcon,\n onClick: (value) => {\n const obj = getCleanData(value, lookupsMap);\n params.loadInquiryNode(obj);\n },\n loading: !!!foreignKeyData,\n view: {}\n });\n }\n return actions;\n }, [\n selectedEntity,\n t,\n entityAttributes,\n foreignKeyData,\n handleOnUpdate,\n handleOnDelete,\n entityName,\n entityData,\n getCleanData,\n lookupsMap,\n params\n ]);\n\n useEffect(() => {\n const setFrKeyData = async () => {\n await getFKData();\n };\n if (entityAttributes && udpFieldSearchApiId !== null) {\n setFrKeyData();\n }\n }, [entityAttributes, getFKData, udpFieldSearchApiId]);\n\n useEffect(() => {\n if (promotedMethodEntities) {\n setSelectedEntity(promotedMethodEntities);\n }\n }, [promotedMethodEntities]);\n\n useEffect(() => {\n if (udpOjectFieldInfo) {\n setUdpFieldSearchApiId(\n udpOjectFieldInfo?.unityBaseSearchMethod?.apiMethodId || '' // If falsy lets set to empty string\n );\n }\n }, [udpOjectFieldInfo]);\n\n useEffect(() => {\n setAlertWarnings([]);\n if (udpCatalogKey) {\n setEntityName(udpCatalogKey);\n }\n }, [udpCatalogKey]);\n\n useEffect(() => {\n if (tpacb) {\n setApiCatalogId(tpacb.apiCatalogId);\n }\n }, [tpacb]);\n\n // Set loading flag based on the API loading flags\n useEffect(() => {\n setLoading(tpacbLoading || promotedMethodsLoading);\n }, [tpacbLoading, promotedMethodsLoading]);\n\n if (tpacbError) {\n return (\n <Alert severity='error'>\n {t('There is no Api Catalog associated with your tenant and product')}\n </Alert>\n );\n }\n\n return (\n <>\n {alertWarnings.map((warning) => (\n <Alert onClose={() => removeWarning(warning.id)} severity='warning'>\n {warning.message || ''}\n </Alert>\n ))}\n <DataBrowserContainer\n entityData={entityData}\n actionList={actionList}\n onCreate={handleOnCreate}\n entityAttributes={entityAttributes}\n foreignKeyData={foreignKeyData}\n isLoading={loading}\n promotedEntity={selectedEntity}\n setEntityData={setEntityData}\n isServerSide={true}\n apiMethod={{ apiCatalogId, entityName }}\n setGridApi={setGridApi}\n filterElements={searchFilterElements}\n backToConfigPage={\n enteredFromConfig ? () => handleEntitySelect(null) : null\n }\n queryColumnsData={queryColumnsData}\n lookupsMap={lookupsMap}\n disableRowSelction={!params?.loadInquiryNode}\n />\n </>\n );\n};\n\nexport default memo(UdpDataBrowserPage);\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { executeQueryAdHoc, getBaseMethod } from '../utilities/methodUtils';\nimport { UdpEnums } from '../../enums/unitySystemEnums';\nimport { useActionState } from '../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\nimport { EditIcon, ViewIcon } from '@fluentui/react-icons';\nimport { RemindersScreen } from '../../reminders/RemindersScreen';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useActions } from '../../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../../enums/unitySystemEnums';\nimport { FILE_TO_TYPES } from '../../constants/reminderConstants';\nimport { useUser } from '../../utilities/auth/useUser';\n\nconst UdpRemindersPage = (props) => {\n const { params } = props;\n const { nodeObj, manytoManyNodeObjKey } = params;\n const [reminders, setReminders] = useState([]);\n const [typeOptions, setTypeOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [reminderId, setReminderId] = useState('');\n const { openSplitScreen } = useActions();\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const formRef = useRef(null);\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTypeGetAllApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Type,\n 'unityBaseGetAllMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const getReminders = useCallback(async () => {\n if (!nodeObj) {\n return [];\n }\n let remindersList = [];\n setLoading(true);\n const filterElements = [\n {\n searchField: 'entityBusinessKey',\n searchValue: manytoManyNodeObjKey\n ? nodeObj[manytoManyNodeObjKey]?.businessObjectKey\n : nodeObj?.businessObjectKey,\n searchOperator: '='\n },\n {\n searchField: 'Reminder.TenantID',\n searchValue: user.currentTenantId,\n searchOperator: '='\n }\n ];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n\n if (reminderFiledForSearchApiMethod) {\n const response = await executeQueryAdHoc(\n data,\n reminderFiledForSearchApiMethod.apiMethodId\n );\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n filedToType: item.type\n }));\n }\n } else {\n handleErrorSnackbar(null, t('Could not retrieve reminders'));\n }\n } else {\n handleErrorSnackbar(\n null,\n t('Search ReminderFiledFor Method Not Promoted')\n );\n }\n setLoading(false);\n setReminders(remindersList);\n }, [\n reminderFiledForSearchApiMethod,\n handleErrorSnackbar,\n nodeObj,\n manytoManyNodeObjKey,\n t,\n user\n ]);\n\n const openSheet = useCallback((value) => {\n setReminderId(value?.id || '');\n setSheetOpen(true);\n }, []);\n\n const closeSheet = useCallback(() => {\n setReminderId('');\n setSheetOpen(false);\n }, []);\n\n const handleEditPage = useCallback(\n (value) => {\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Reminders,\n params: { id: value?.id || '', reloadReminders: getReminders }\n });\n },\n [openSplitScreen, getReminders]\n );\n\n const actionList = useMemo(\n () => [\n {\n id: 1, // Must be unique\n title: t('Reminder'),\n icon: ViewIcon,\n onClick: openSheet,\n disabled: false\n },\n {\n id: 2, // Must be unique\n title: t('Edit'),\n icon: EditIcon,\n onClick: handleEditPage,\n disabled: false\n }\n ],\n [t, openSheet, handleEditPage]\n );\n\n const getFiledToType = (params) => {\n const filedToType = FILE_TO_TYPES.find(\n (type) => type.value === params.data.filedToType\n );\n return filedToType?.label || '';\n };\n\n const getType = useCallback(\n (params) => {\n const type = typeOptions.find((t) => t.code === params.data.typeCode);\n return type?.name || '';\n },\n [typeOptions]\n );\n\n const columnDefs = [\n {\n headerName: 'Date',\n field: 'createdOn',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Subject',\n field: 'subject',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Reminder',\n field: 'content',\n resizable: true,\n sortable: true,\n valueGetter: (params) => params.data.content.replace(/(<([^>]+)>)/gi, '')\n },\n {\n headerName: 'Reminder Date',\n field: 'reminderDate',\n resizable: true,\n sortable: true\n },\n {\n headerName: 'Type',\n field: 'typeCode',\n resizable: true,\n sortable: true,\n valueGetter: getType\n },\n {\n headerName: 'Filed To Type',\n field: 'filedToType',\n resizable: true,\n sortable: true,\n valueGetter: getFiledToType\n },\n {\n headerName: 'Created By',\n field: 'userDisplayName',\n resizable: true,\n sortable: true\n },\n {\n headerName: '',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList\n },\n pinned: 'right',\n suppressMenu: true,\n sortable: false\n }\n ];\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n getReminders();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const getTypeOptions = async () => {\n let options = [];\n if (reminderTypeGetAllApiMethod) {\n const typesResponse = await executeQueryAdHoc(\n { data: {} },\n reminderTypeGetAllApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [reminderTypeGetAllApiMethod]);\n\n return (\n <>\n <SideSheet\n open={sheetOpen}\n onClose={closeSheet}\n title={t('Reminder')}\n width={600}\n >\n <RemindersScreen\n viewOnly={true}\n id={reminderId}\n shortcutContentFinderEnabled={false}\n formRef={formRef}\n />\n </SideSheet>\n <AmbientGridTemplate\n title={'Reminders'}\n data={reminders}\n columnDefs={columnDefs}\n loading={loading}\n frameworkComponents={{ actionsRenderer: ActionsRenderer }}\n groupingData={[]}\n />\n </>\n );\n};\n\nexport default UdpRemindersPage;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport WidgetCard from '../WidgetCard';\nimport { RemindersCard } from '../../../reminders/RemindersCard';\nimport { FluentButton } from '../../inputs/buttons/FluentButton';\nimport {\n CircularProgress,\n makeStyles,\n FormControlLabel,\n Switch\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport {\n getSearchIdentifiers,\n getSearchObject\n} from '../../../utilities/search/SearchUtilities';\nimport {\n executeQueryAdHoc,\n executeQueryWithParameters,\n getBaseMethod\n} from '../../../udp/utilities/methodUtils';\nimport {\n LogicalSearchOperatorEnums,\n UdpEnums,\n UdpReminderFiledForType\n} from '../../../enums/unitySystemEnums';\nimport { useActionState } from '../../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../../utilities/apiHelpers';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { SortIcon } from '@fluentui/react-icons';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actions: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'flex-end'\n },\n actionButton: {\n marginRight: theme.spacing(0.25),\n position: 'relative'\n },\n fabProgress: {\n position: 'absolute',\n top: 4,\n left: '35%',\n zIndex: 1\n }\n}));\n\nexport const RemindersWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const { onLoadedNodeClick, hideWidgetName, tree, catalogObjects } = params;\n\n const [sortDirection, setSortDirection] = useState(null);\n const [reminders, setReminders] = useState(null);\n const [loading, setLoading] = useState(false);\n const [allRemindersRequested, setAllRemindersRequested] = useState(false);\n const [buttonProgress, setButtonProgress] = useState(false);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const classes = useStyles(props);\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const currentSortDirection = useMemo(() => {\n if (sortDirection === 'asc') {\n return 'desc';\n } else if (sortDirection === 'desc') {\n return 'asc';\n } else {\n return null;\n }\n }, [sortDirection]);\n\n const getNodeToLoad = useCallback(\n (reminder) => {\n const nodeToLoad = {};\n const domainObject = reminder?.domainObject;\n const entityBusinessKey = reminder?.entityBusinessKey || '';\n let treeStructureId = '';\n let apiMethodId = '';\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n\n if (matchingNode) {\n treeStructureId = matchingNode.id;\n if (!matchingNode.parentId) {\n apiMethodId = tree.apiMethodInstance.apiMethodId;\n } else {\n const associatedInquiryTree =\n matchingNode.properties?.associatedInquiryTree;\n if (associatedInquiryTree) {\n apiMethodId =\n associatedInquiryTree.apiMethodInstance?.apiMethodId || '';\n }\n }\n }\n nodeToLoad.apiMethodId = apiMethodId;\n\n const searchIdentifiers = getSearchIdentifiers(\n catalogObjects,\n domainObject\n );\n const filterElements = [];\n const searchValue = entityBusinessKey.split('|')?.[1];\n const values = searchValue.split(',');\n\n searchIdentifiers.forEach((searchIdentifier, index) => {\n const searchField = searchIdentifier\n ? searchIdentifier.charAt(0).toUpperCase() + searchIdentifier.slice(1)\n : '';\n filterElements.push({\n searchField: searchField,\n searchOperator: '=',\n searchValue: values[index]\n });\n });\n\n nodeToLoad.queryPayload = getSearchObject(\n filterElements,\n 1,\n 50,\n true,\n LogicalSearchOperatorEnums.And\n );\n\n nodeToLoad.nodeDetails = {\n catalogReturnObject: domainObject,\n treeStructureId: treeStructureId\n };\n\n return nodeToLoad;\n },\n [tree, catalogObjects]\n );\n\n const getIcon = useCallback(\n (reminder) => {\n const domainObject = reminder?.domainObject;\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n return matchingNode?.properties?.defaultIcon || {};\n },\n [tree]\n );\n\n const sortByDate = useCallback((reminderList, direction) => {\n const sortedReminders = [...reminderList];\n if (direction === 'asc') {\n sortedReminders.sort(\n (a, b) => new Date(b.reminderDate) - new Date(a.reminderDate)\n );\n } else if (direction === 'desc') {\n sortedReminders.sort(\n (a, b) => new Date(a.reminderDate) - new Date(b.reminderDate)\n );\n }\n setReminders(sortedReminders);\n }, []);\n\n const sort = useCallback(() => {\n sortByDate(reminders, sortDirection || 'desc');\n if (sortDirection === 'desc' || !sortDirection) {\n setSortDirection('asc');\n } else if (sortDirection === 'asc') {\n setSortDirection('desc');\n }\n }, [reminders, sortByDate, sortDirection]);\n\n const getReminders = useCallback(\n async (allRequested = false, rffSearchApiMethod) => {\n let remindersList = [];\n const warnings = [];\n\n if (!reminders) {\n setLoading(true);\n }\n\n let filterElements = [\n {\n searchField: 'Reminder.Acknowledged',\n searchValue: false,\n searchOperator: '=',\n groupId: 1\n },\n {\n searchField: 'Reminder.ReminderDate',\n searchValue: new Date(),\n searchOperator: '<=',\n groupId: 1\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n let filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: null\n },\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n\n if (allRequested) {\n filterElements = [\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n filterGroups = [\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n }\n\n const searchObject = getSearchObject(\n filterElements,\n 1,\n 200,\n true,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n const data = { data: searchObject };\n\n if (rffSearchApiMethod) {\n if (!rffSearchApiMethod.apiMethodId) {\n warnings.push({\n id: uuid(),\n severity: 'warning',\n message: t('Search ReminderFiledFor Method Not Promoted')\n });\n } else {\n const response = await executeQueryAdHoc(\n data,\n rffSearchApiMethod.apiMethodId\n ).catch((e) => {\n setLoading(false);\n });\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n domainObject: item.domainObject,\n filedToType: item.type,\n entityBusinessKey: item.entityBusinessKey\n }));\n }\n } else {\n warnings.push({\n id: uuid(),\n severity: 'error',\n message: t('Could not retrieve reminders')\n });\n }\n }\n }\n // Filter for reminders that belong to any of the domains within the tree\n const treeDomains = tree?.treeStructure.map(\n (node) => node.properties?.catalogReturnObject\n );\n if (treeDomains.length) {\n remindersList = remindersList.filter((reminder) =>\n treeDomains.includes(reminder.domainObject)\n );\n } else {\n remindersList = [];\n }\n setAlertWarnings(warnings);\n setLoading(false);\n sortByDate(remindersList, currentSortDirection);\n },\n [t, user, reminders, sortByDate, currentSortDirection, tree]\n );\n\n const updateRemindersAcknowledgement = useCallback(\n async (reminders) => {\n if (updateReminderApiMethod) {\n const updatedPromises = [];\n reminders.forEach((reminder) => {\n reminder.acknowledged = reminder.checked;\n const data = {\n requestBody: {\n ...reminder\n }\n };\n data['{iD}'] = reminder.id;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminder = reminders?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminder) {\n console.warn(`Reminder not updated for all file to entities`);\n }\n }\n });\n }\n );\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n },\n [updateReminderApiMethod, handleErrorSnackbar]\n );\n\n const handleAcknowledgeClick = useCallback(async () => {\n const acknowledgedReminders = reminders?.filter((r) => r.checked);\n if (acknowledgedReminders.length) {\n setButtonProgress(true);\n await updateRemindersAcknowledgement(acknowledgedReminders);\n setButtonProgress(false);\n getReminders(allRemindersRequested, reminderFiledForSearchApiMethod);\n }\n }, [\n reminders,\n getReminders,\n updateRemindersAcknowledgement,\n allRemindersRequested,\n reminderFiledForSearchApiMethod\n ]);\n\n const handleSwitchChange = useCallback(\n async (event) => {\n setLoading(true);\n if (event.target.checked) {\n setAllRemindersRequested(event.target.checked);\n await getReminders(true, reminderFiledForSearchApiMethod);\n } else {\n setAllRemindersRequested(false);\n await getReminders(false, reminderFiledForSearchApiMethod);\n }\n setLoading(false);\n },\n [getReminders, reminderFiledForSearchApiMethod]\n );\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n if (reminderFiledForSearchApiMethod) {\n getReminders(false, reminderFiledForSearchApiMethod);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reminderFiledForSearchApiMethod]);\n\n return (\n <WidgetCard\n ref={ref}\n // title={'Reminders'}\n hideWidgetName={hideWidgetName}\n headerActions={\n <div className={classes.actions}>\n <FormControlLabel\n control={\n <Switch\n id='udpRecord-RemindersWidget-Switch'\n udprecordid='udpRecord-RemindersWidget-Switch'\n size='small'\n onChange={handleSwitchChange}\n />\n }\n label='All'\n style={{ marginRight: 8 }}\n />\n <FluentIconButton\n id='udpRecord-RemindersWidget-Sort'\n udprecordid='udpRecord-RemindersWidget-Sort'\n icon={SortIcon}\n onClick={sort}\n style={{ marginRight: 4 }}\n />\n <div className={classes.actionButton}>\n <FluentButton\n id='udpRecord-RemindersWidget-Complete'\n udprecordid='udpRecord-RemindersWidget-Complete'\n variant='contained'\n color='secondary'\n onClick={handleAcknowledgeClick}\n >\n {buttonProgress && (\n <CircularProgress\n size={24}\n color='primary'\n className={classes.fabProgress}\n />\n )}\n {t('Complete')}\n </FluentButton>\n </div>\n </div>\n }\n {...other}\n >\n {alertWarnings.length ? (\n alertWarnings.map((warning) => (\n <Alert severity={warning.severity || 'warning'}>\n {warning.message || ''}\n </Alert>\n ))\n ) : (\n <RemindersCard\n reminders={reminders}\n setReminders={setReminders}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n getNodeToLoad={getNodeToLoad}\n getIcon={getIcon}\n updateRemindersAcknowledgement={updateRemindersAcknowledgement}\n />\n )}\n\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RemindersWidget);\n","import React, { useMemo } from 'react';\nimport { UdpFormsRenderer } from 'udp-react-stencil-component-library';\nimport { useLocation } from 'react-router-dom';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { ConfigService } from 'udp-react-stencil-component-library';\nimport { useActions } from '../../hooks/useActions';\nimport { acquireAccessToken } from '../../utilities/auth/authActions';\nimport { useSnackbar } from 'notistack';\n\n\nconst useSearchParams = () => {\n const search = useLocation().search;\n\n // when params are populated with an internal redirect, like on a Page menu, the useLocation hook does not get the query params\n // so it will fallback with window.location.search in that case\n return new URLSearchParams(search || window.location.search);\n}\nconst UdpPrivateForm = (props) => {\n const user = useUser();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { triggerAction } = useActions();\n const queryParams = useSearchParams();\n const formId = useMemo(() => {\n return queryParams.get('udpf_formId')\n }, [queryParams])\nconst versionId = useMemo(() => {\n return queryParams.get('udpf_version')\n }, [queryParams])\n\n \n\n if (formId) {\n return (\n <UdpFormsRenderer\n formId={formId}\n triggerAction={triggerAction}\n version={versionId}\n getUserCallback={() => user}\n enqueueSnackbar={enqueueSnackbar}\n closeSnackbar={closeSnackbar}\n />\n );\n } else {\n return null;\n }\n};\nexport default UdpPrivateForm;\n","import React, { useMemo, useState } from 'react';\nimport { UdpFormsList } from 'udp-react-stencil-component-library';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { useHistory } from 'react-router-dom';\n\nconst UdpFormsListPage = (props) => {\n const user = useUser();\n const tenant = useTenant();\n const history = useHistory();\n\n const tenantId = tenant?.activeTenant?.tenantId;\n\n return (\n <div>\n <UdpFormsList\n history={history}\n />\n </div>\n );\n};\nexport default UdpFormsListPage;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { UdpFormsBuilder } from 'udp-react-stencil-component-library';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { useSnackbar } from 'notistack';\n\nconst UdpFormsBuilderPage = () => {\n const user = useUser();\n const tenant = useTenant();\n const location = useLocation(); // detects changes in the URL\n const history = useHistory();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n // Store search params in state so re-render happens when they change\n const [searchParams, setSearchParams] = useState(() => new URLSearchParams(location.search));\n\n // Recompute search params on location change\n useEffect(() => {\n setSearchParams(new URLSearchParams(location.search));\n }, [location.search]);\n\n // Extract values from searchParams\n const formId = searchParams.get('udpf_formId');\n const version = searchParams.get('udpf_version');\n const callbackUrl = searchParams.get('udpf_callback_url');\n\n return (\n <div>\n <UdpFormsBuilder\n formId={formId}\n version={version}\n enqueueSnackbar={enqueueSnackbar}\n closeSnackbar={closeSnackbar}\n history={history}\n />\n </div>\n );\n};\n\nexport default UdpFormsBuilderPage;\n","import React from 'react';\nimport { ImportDataFromFileMapping } from '../fileImportMapping/ImportDataFromFileMapping';\n\nconst UdpImportFromFileMappingPage = props => {\n return <ImportDataFromFileMapping/>\n};\n\nexport default UdpImportFromFileMappingPage;\n","import * as UdpNotesPage from './UdpNotesPage';\nimport * as UdpVerticalManagementPage from './UdpVerticalManagementPage';\nimport * as UdpGridPanelManagementPage from './UdpGridPanelManagementPage';\nimport * as UdpMaintenanceEnginePage from './UdpMaintenanceEnginePage';\nimport * as UdpInquiryMaintenanceEnginePage from './UdpInquiryMaintenanceEnginePage';\nimport * as UdpReportsPage from './UdpReportsPage';\nimport * as DonutChartWidget from '../../UI/widgets/library/DonutChartWidget';\nimport * as SparklineWidget from '../../UI/widgets/library/SparklineWidget';\nimport * as ProgressBarWidget from '../../UI/widgets/library/ProgressBarWidget';\nimport * as RecentlyLoadedNodesWidget from '../../UI/widgets/library/RecentlyLoadedNodesWidget';\nimport * as ChatUDP from './ChatUDP';\nimport * as UdpDataBrowserPage from './UdpDataBrowserPage';\nimport * as UdpRemindersPage from './UdpRemindersPage';\nimport * as RemindersWidget from '../../UI/widgets/library/RemindersWidget';\nimport * as UdpPublicForm from './UdpPublicForm'\nimport * as UdpPrivateForm from './UdpPrivateForm'\nimport * as UdpFormsListPage from './UdpFormsListPage';\nimport * as UdpFormsBuilderPage from './UdpFormsBuilderPage';\nimport * as UdpImportFromFileMappingPage from './UdpImportFromFileMappingPage'\n\nexport const UdpPages = {\n UdpNotesPage,\n UdpVerticalManagementPage,\n UdpGridPanelManagementPage,\n UdpMaintenanceEnginePage,\n UdpInquiryMaintenanceEnginePage,\n UdpReportsPage,\n DonutChartWidget,\n SparklineWidget,\n ProgressBarWidget,\n RecentlyLoadedNodesWidget,\n ChatUDP,\n UdpDataBrowserPage,\n UdpRemindersPage,\n RemindersWidget,\n UdpPublicForm,\n UdpPrivateForm,\n UdpFormsBuilderPage,\n UdpFormsListPage,\n UdpImportFromFileMappingPage\n};\n"],"mappings":"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"}