udp-react-enterprise-component-library 25.18.1-beta.10 → 25.18.1-beta.12
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.
- package/dist/{ActionProvider-CTn1qVWd.js → ActionProvider-MFZvkh4u.js} +6 -6
- package/dist/{ActionProvider-CTn1qVWd.js.map → ActionProvider-MFZvkh4u.js.map} +1 -1
- package/dist/{ActionSplitScreen-KVa5olgd.js → ActionSplitScreen-SncJFJJQ.js} +7 -7
- package/dist/{ActionSplitScreen-KVa5olgd.js.map → ActionSplitScreen-SncJFJJQ.js.map} +1 -1
- package/dist/{ActionWrapper-47uvDDnB.js → ActionWrapper-Dq45yDqo.js} +11 -11
- package/dist/{ActionWrapper-47uvDDnB.js.map → ActionWrapper-Dq45yDqo.js.map} +1 -1
- package/dist/{ActionsRenderer-BVfaUEx2.js → ActionsRenderer-B1ImXko3.js} +2 -2
- package/dist/{ActionsRenderer-BVfaUEx2.js.map → ActionsRenderer-B1ImXko3.js.map} +1 -1
- package/dist/{AggregateChip-BF6RL_4_.js → AggregateChip-BDugg_kG.js} +3 -3
- package/dist/{AggregateChip-BF6RL_4_.js.map → AggregateChip-BDugg_kG.js.map} +1 -1
- package/dist/{AmbientGridTemplate-CDj051YK.js → AmbientGridTemplate-BecuOnHe.js} +5 -5
- package/dist/{AmbientGridTemplate-CDj051YK.js.map → AmbientGridTemplate-BecuOnHe.js.map} +1 -1
- package/dist/{AppMenu-l9dxXKrP.js → AppMenu-B9CCWiY8.js} +3 -3
- package/dist/{AppMenu-l9dxXKrP.js.map → AppMenu-B9CCWiY8.js.map} +1 -1
- package/dist/{BaseTreeMenu-Bk4XZUCL.js → BaseTreeMenu-DitVfbeZ.js} +2 -2
- package/dist/{BaseTreeMenu-Bk4XZUCL.js.map → BaseTreeMenu-DitVfbeZ.js.map} +1 -1
- package/dist/{BioCardWrapper-DmS18Z9H.js → BioCardWrapper-CI0ZngTU.js} +3 -3
- package/dist/{BioCardWrapper-DmS18Z9H.js.map → BioCardWrapper-CI0ZngTU.js.map} +1 -1
- package/dist/{BulkActionsGridButton-C2Nwb7c6.js → BulkActionsGridButton-CSzHiVvH.js} +3 -3
- package/dist/{BulkActionsGridButton-C2Nwb7c6.js.map → BulkActionsGridButton-CSzHiVvH.js.map} +1 -1
- package/dist/{ChatContainer-BpN6e_Of.js → ChatContainer-CW2u13tF.js} +2 -2
- package/dist/{ChatContainer-BpN6e_Of.js.map → ChatContainer-CW2u13tF.js.map} +1 -1
- package/dist/{ChatUDP-DglX5k_O.js → ChatUDP-B7dgnKO0.js} +2 -2
- package/dist/{ChatUDP-DglX5k_O.js.map → ChatUDP-B7dgnKO0.js.map} +1 -1
- package/dist/{CoreLayoutFloorplan-C-4DdwJz.js → CoreLayoutFloorplan-xIdceY2Q.js} +2 -2
- package/dist/{CoreLayoutFloorplan-C-4DdwJz.js.map → CoreLayoutFloorplan-xIdceY2Q.js.map} +1 -1
- package/dist/{CrudForm-mWpBEuUw.js → CrudForm-DzmNPfVa.js} +6 -6
- package/dist/{CrudForm-mWpBEuUw.js.map → CrudForm-DzmNPfVa.js.map} +1 -1
- package/dist/{CrudTableSidePanel-CepOcRgl.js → CrudTableSidePanel-CXOSojmw.js} +4 -4
- package/dist/{CrudTableSidePanel-CepOcRgl.js.map → CrudTableSidePanel-CXOSojmw.js.map} +1 -1
- package/dist/{DataBrowserContainer-hkDvrMzs.js → DataBrowserContainer-DHE9PS3L.js} +7 -7
- package/dist/{DataBrowserContainer-hkDvrMzs.js.map → DataBrowserContainer-DHE9PS3L.js.map} +1 -1
- package/dist/{EntityHeader-Ddk4syVV.js → EntityHeader-y6CNHP0L.js} +3 -3
- package/dist/{EntityHeader-Ddk4syVV.js.map → EntityHeader-y6CNHP0L.js.map} +1 -1
- package/dist/{EntitySideBarContent-CBckqx1w.js → EntitySideBarContent-Bp0saKq_.js} +2 -2
- package/dist/{EntitySideBarContent-CBckqx1w.js.map → EntitySideBarContent-Bp0saKq_.js.map} +1 -1
- package/dist/{ExportSidesheet-DA6NzDsz.js → ExportSidesheet-DBww0zIt.js} +3 -3
- package/dist/{ExportSidesheet-DA6NzDsz.js.map → ExportSidesheet-DBww0zIt.js.map} +1 -1
- package/dist/{FieldArrayCard-tENUf1YA.js → FieldArrayCard-56TLTaZc.js} +3 -3
- package/dist/{FieldArrayCard-tENUf1YA.js.map → FieldArrayCard-56TLTaZc.js.map} +1 -1
- package/dist/{FluentProfileMenuCard-CMRsJxqq.js → FluentProfileMenuCard-CnUOy-ne.js} +8 -8
- package/dist/{FluentProfileMenuCard-CMRsJxqq.js.map → FluentProfileMenuCard-CnUOy-ne.js.map} +1 -1
- package/dist/{FluentSimpleSelect-kMQgny9h.js → FluentSimpleSelect-sDwSJFGU.js} +2 -2
- package/dist/{FluentSimpleSelect-kMQgny9h.js.map → FluentSimpleSelect-sDwSJFGU.js.map} +1 -1
- package/dist/{ImportDataFromFileMapping-kkCJEGIS.js → ImportDataFromFileMapping-CBKGm2pM.js} +6 -6
- package/dist/{ImportDataFromFileMapping-kkCJEGIS.js.map → ImportDataFromFileMapping-CBKGm2pM.js.map} +1 -1
- package/dist/{InputsExample-2z_6lbK2.js → InputsExample-ClC-vFVK.js} +1 -1
- package/dist/{InputsExample-2z_6lbK2.js.map → InputsExample-ClC-vFVK.js.map} +1 -1
- package/dist/{InsightRenderer-DU65aYRt.js → InsightRenderer-UkS3B5zg.js} +2 -2
- package/dist/{InsightRenderer-DU65aYRt.js.map → InsightRenderer-UkS3B5zg.js.map} +1 -1
- package/dist/{MapLayout-D_OmMd5_.js → MapLayout-D6hNVarS.js} +2 -2
- package/dist/{MapLayout-D_OmMd5_.js.map → MapLayout-D6hNVarS.js.map} +1 -1
- package/dist/{MenuPage-CM3gZWnB.js → MenuPage-B4ZN_tQt.js} +4 -4
- package/dist/{MenuPage-CM3gZWnB.js.map → MenuPage-B4ZN_tQt.js.map} +1 -1
- package/dist/{MenuPage-C8256rDe.js → MenuPage-HFTfG0b-.js} +10 -10
- package/dist/{MttMainTimeline-CO2XiVps.js → MttMainTimeline-CwttwjLy.js} +2 -2
- package/dist/{MttMainTimeline-CO2XiVps.js.map → MttMainTimeline-CwttwjLy.js.map} +1 -1
- package/dist/{MttSummary-DDb0TusU.js → MttSummary-Br4SrY1Q.js} +2 -2
- package/dist/{MttSummary-DDb0TusU.js.map → MttSummary-Br4SrY1Q.js.map} +1 -1
- package/dist/{MyExportsPage-tRTJ5QKs.js → MyExportsPage-Bw0ueYE_.js} +14 -14
- package/dist/{MyExportsPage-BAtFVaZg.js → MyExportsPage-lqTyApig.js} +7 -7
- package/dist/{MyExportsPage-BAtFVaZg.js.map → MyExportsPage-lqTyApig.js.map} +1 -1
- package/dist/{NotesScreen-DeWD6LVV.js → NotesScreen-COYYhVJJ.js} +5 -5
- package/dist/{NotesScreen-DeWD6LVV.js.map → NotesScreen-COYYhVJJ.js.map} +1 -1
- package/dist/{OutlookCallback-BETH8x2Z.js → OutlookCallback-BJmI0px0.js} +2 -2
- package/dist/{OutlookCallback-BETH8x2Z.js.map → OutlookCallback-BJmI0px0.js.map} +1 -1
- package/dist/{PageActionWrapper-BCK4anE9.js → PageActionWrapper-DuvcqQCs.js} +4 -4
- package/dist/{PageActionWrapper-BCK4anE9.js.map → PageActionWrapper-DuvcqQCs.js.map} +1 -1
- package/dist/{PageContainer-BgNeJt3S.js → PageContainer-N4d5KO-T.js} +2 -2
- package/dist/{PageContainer-BgNeJt3S.js.map → PageContainer-N4d5KO-T.js.map} +1 -1
- package/dist/{PageRenderer-DDEem1OJ.js → PageRenderer-ToHJXkJq.js} +2 -2
- package/dist/{PageRenderer-DDEem1OJ.js.map → PageRenderer-ToHJXkJq.js.map} +1 -1
- package/dist/{PaymentForm-C0Hvky2o.js → PaymentForm-D09B2VrH.js} +3 -3
- package/dist/{PaymentForm-C0Hvky2o.js.map → PaymentForm-D09B2VrH.js.map} +1 -1
- package/dist/{PaymentReversalForm-CYoR6QL5.js → PaymentReversalForm-BCACJcnX.js} +2 -2
- package/dist/{PaymentReversalForm-CYoR6QL5.js.map → PaymentReversalForm-BCACJcnX.js.map} +1 -1
- package/dist/{PowerBIReport-BQP0l17v.js → PowerBIReport-DzVNLdH0.js} +2 -2
- package/dist/{PowerBIReport-BQP0l17v.js.map → PowerBIReport-DzVNLdH0.js.map} +1 -1
- package/dist/{RejectIcon-yEBYxlIm.js → RejectIcon-9a6AQhFS.js} +1 -1
- package/dist/{RejectIcon-yEBYxlIm.js.map → RejectIcon-9a6AQhFS.js.map} +1 -1
- package/dist/{RemindersCard-BJvpNrnD.js → RemindersCard-EbJUUB54.js} +2 -2
- package/dist/{RemindersCard-BJvpNrnD.js.map → RemindersCard-EbJUUB54.js.map} +1 -1
- package/dist/{RemindersScreen--hs-M0hg.js → RemindersScreen-bwvsZOGc.js} +5 -5
- package/dist/{RemindersScreen--hs-M0hg.js.map → RemindersScreen-bwvsZOGc.js.map} +1 -1
- package/dist/{RemindersWidget-BcypyEI4.js → RemindersWidget-Uk_ZyAW-.js} +5 -5
- package/dist/{RemindersWidget-BcypyEI4.js.map → RemindersWidget-Uk_ZyAW-.js.map} +1 -1
- package/dist/{RequiredFieldsMappingForm-BTnefL8X.js → RequiredFieldsMappingForm-KwEaUAJ-.js} +2 -2
- package/dist/{RequiredFieldsMappingForm-BTnefL8X.js.map → RequiredFieldsMappingForm-KwEaUAJ-.js.map} +1 -1
- package/dist/{Shell-DxRVAjoc.js → Shell-BnKSMfKq.js} +6 -6
- package/dist/{Shell-DxRVAjoc.js.map → Shell-BnKSMfKq.js.map} +1 -1
- package/dist/{ShortcutContentFinder-DV4VXUyJ.js → ShortcutContentFinder-MyXbDeFJ.js} +3 -3
- package/dist/{ShortcutContentFinder-DV4VXUyJ.js.map → ShortcutContentFinder-MyXbDeFJ.js.map} +1 -1
- package/dist/{SimpleTable-qZ0yJQ7F.js → SimpleTable-BMjywRbx.js} +1 -1
- package/dist/{SimpleTable-qZ0yJQ7F.js.map → SimpleTable-BMjywRbx.js.map} +1 -1
- package/dist/{StatusCellRenderer-DK3MexwY.js → StatusCellRenderer-DOYDkiZu.js} +1 -1
- package/dist/{StatusCellRenderer-DK3MexwY.js.map → StatusCellRenderer-DOYDkiZu.js.map} +1 -1
- package/dist/{SupportCaseSideSheet-_IBBlr08.js → SupportCaseSideSheet-D5VyeXgu.js} +5 -5
- package/dist/{SupportCaseSideSheet-DNXocqwx.js → SupportCaseSideSheet-DPfapAFC.js} +2 -2
- package/dist/{SupportCaseSideSheet-DNXocqwx.js.map → SupportCaseSideSheet-DPfapAFC.js.map} +1 -1
- package/dist/{TableContainer-CNI8NNy2.js → TableContainer-B4aFO7ly.js} +4 -4
- package/dist/{TableContainer-CNI8NNy2.js.map → TableContainer-B4aFO7ly.js.map} +1 -1
- package/dist/{TenantProvider-DLI5riri.js → TenantProvider-rYWrO7y7.js} +2 -2
- package/dist/{TenantProvider-DLI5riri.js.map → TenantProvider-rYWrO7y7.js.map} +1 -1
- package/dist/UI/accordion/index.js +1 -1
- package/dist/UI/advancedSearchBuilder/index.js +1 -1
- package/dist/UI/charts/index.js +6 -6
- package/dist/UI/components/dataDisplay/index.js +1 -1
- package/dist/UI/components/feedback/index.js +1 -1
- package/dist/UI/components/index.js +3 -3
- package/dist/UI/containers/index.js +1 -1
- package/dist/UI/dataDisplay/FluentActivity/index.js +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/index.js +1 -1
- package/dist/UI/dataDisplay/entityHeader/index.js +11 -11
- package/dist/UI/dataDisplay/index.js +3 -3
- package/dist/UI/demos/index.js +2 -2
- package/dist/UI/feedback/index.js +1 -1
- package/dist/UI/fileViewer/index.js +1 -1
- package/dist/UI/floorplans/index.js +11 -11
- package/dist/UI/forms/index.js +12 -12
- package/dist/UI/iframe/index.js +1 -1
- package/dist/UI/index.js +64 -64
- package/dist/UI/inputs/fieldArrayCard/index.js +10 -10
- package/dist/UI/inputs/menus/index.js +5 -5
- package/dist/UI/loading/index.js +1 -1
- package/dist/UI/mapLayout/index.js +11 -11
- package/dist/UI/maps/index.js +2 -2
- package/dist/UI/navigation/index.js +11 -11
- package/dist/UI/navigation/menus/index.js +8 -8
- package/dist/UI/navigation/tabs/defaultTabs/index.js +1 -1
- package/dist/UI/navigation/tabs/index.js +2 -2
- package/dist/UI/property/index.js +1 -1
- package/dist/UI/stepper/index.js +1 -1
- package/dist/UI/support/index.js +6 -6
- package/dist/UI/surfaces/NestedGrid/index.js +2 -2
- package/dist/UI/surfaces/NestedGrid/ui/index.js +1 -1
- package/dist/UI/surfaces/cards/index.js +1 -1
- package/dist/UI/surfaces/index.js +4 -4
- package/dist/UI/templates/deprecated/AmbientGridTemplate/index.js +9 -9
- package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +9 -9
- package/dist/UI/templates/index.js +1 -1
- package/dist/UI/templates/newGrid/index.js +9 -9
- package/dist/UI/templates/ui/renderers/index.js +3 -3
- package/dist/UI/timeline/fluentTimeline/index.js +1 -1
- package/dist/UI/timeline/index.js +2 -2
- package/dist/UI/utilityDisplay/alerts/index.js +11 -11
- package/dist/UI/utilityDisplay/index.js +17 -17
- package/dist/UI/utilityDisplay/ui/index.js +1 -1
- package/dist/UI/utilityDisplay/utilities/index.js +1 -1
- package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
- package/dist/UI/widgets/FluentComponents/index.js +1 -1
- package/dist/UI/widgets/index.js +1 -1
- package/dist/UI/widgets/library/RemindersWidget/index.js +9 -9
- package/dist/UI/widgets/library/TableWidget/index.js +1 -1
- package/dist/{UdpAlertsContainer-DexXCrFZ.js → UdpAlertsContainer-DehnlBcE.js} +4 -4
- package/dist/{UdpAlertsContainer-DexXCrFZ.js.map → UdpAlertsContainer-DehnlBcE.js.map} +1 -1
- package/dist/{UdpAuditEvents-BOsP49Fy.js → UdpAuditEvents-Dsvqz2Ad.js} +2 -2
- package/dist/{UdpAuditEvents-BOsP49Fy.js.map → UdpAuditEvents-Dsvqz2Ad.js.map} +1 -1
- package/dist/{UdpAuditEventsPage-mfZsK6Up.js → UdpAuditEventsPage-BF-AXqwI.js} +18 -18
- package/dist/{UdpAuditEventsPage-DoA7iu8S.js → UdpAuditEventsPage-CUXXlLY1.js} +3 -3
- package/dist/{UdpAuditEventsPage-DoA7iu8S.js.map → UdpAuditEventsPage-CUXXlLY1.js.map} +1 -1
- package/dist/{UdpDataBrowserPage-cKFWzGRk.js → UdpDataBrowserPage-DIq--ak3.js} +10 -10
- package/dist/{UdpDataBrowserPage-cKFWzGRk.js.map → UdpDataBrowserPage-DIq--ak3.js.map} +1 -1
- package/dist/{UdpFormsBuilderPage-_oo5DGDq.js → UdpFormsBuilderPage-C1_7kI_t.js} +7 -5
- package/dist/{UdpFormsBuilderPage-_oo5DGDq.js.map → UdpFormsBuilderPage-C1_7kI_t.js.map} +1 -1
- package/dist/UdpFormsSubmissionGrid-Bzo5wcCS.js +295 -0
- package/dist/UdpFormsSubmissionGrid-Bzo5wcCS.js.map +1 -0
- package/dist/{UdpGridPanelManagementPage-BcGNXKD4.js → UdpGridPanelManagementPage-Dk0miZ38.js} +5 -5
- package/dist/{UdpGridPanelManagementPage-BcGNXKD4.js.map → UdpGridPanelManagementPage-Dk0miZ38.js.map} +1 -1
- package/dist/{UdpGridTemplate-jILzGANi.js → UdpGridTemplate-CodLjVVL.js} +2 -2
- package/dist/{UdpGridTemplate-jILzGANi.js.map → UdpGridTemplate-CodLjVVL.js.map} +1 -1
- package/dist/{UdpImportFromFileMappingPage-CC3YinwA.js → UdpImportFromFileMappingPage-BWaYkxhW.js} +2 -2
- package/dist/{UdpImportFromFileMappingPage-CC3YinwA.js.map → UdpImportFromFileMappingPage-BWaYkxhW.js.map} +1 -1
- package/dist/{UdpInquiryMaintenanceEnginePage-BU49LRTZ.js → UdpInquiryMaintenanceEnginePage-DTanTz7X.js} +3 -3
- package/dist/{UdpInquiryMaintenanceEnginePage-BU49LRTZ.js.map → UdpInquiryMaintenanceEnginePage-DTanTz7X.js.map} +1 -1
- package/dist/{UdpMaintenanceEnginePage-Dhf985zH.js → UdpMaintenanceEnginePage-DIyBfIMk.js} +8 -8
- package/dist/{UdpMaintenanceEnginePage-Dhf985zH.js.map → UdpMaintenanceEnginePage-DIyBfIMk.js.map} +1 -1
- package/dist/{UdpMap-Bu59mmYa.js → UdpMap-DB0qsBfI.js} +1 -1
- package/dist/{UdpMap-Bu59mmYa.js.map → UdpMap-DB0qsBfI.js.map} +1 -1
- package/dist/{UdpNotesPage-CXu_ydp4.js → UdpNotesPage-B3cesDaw.js} +7 -7
- package/dist/{UdpNotesPage-CXu_ydp4.js.map → UdpNotesPage-B3cesDaw.js.map} +1 -1
- package/dist/{UdpPages-DVPJl-XO.js → UdpPages-Duf7s2Bf.js} +16 -16
- package/dist/{UdpPages-DVPJl-XO.js.map → UdpPages-Duf7s2Bf.js.map} +1 -1
- package/dist/{UdpPrivateForm-BJdYZzlO.js → UdpPrivateForm-Cju6dVDc.js} +9 -6
- package/dist/UdpPrivateForm-Cju6dVDc.js.map +1 -0
- package/dist/{UdpPublicForm-aCs42nKH.js → UdpPublicForm-D3D8GPrh.js} +2 -2
- package/dist/{UdpPublicForm-aCs42nKH.js.map → UdpPublicForm-D3D8GPrh.js.map} +1 -1
- package/dist/{UdpRemindersPage-5EYNlPs6.js → UdpRemindersPage-DBQ0SQO4.js} +7 -7
- package/dist/{UdpRemindersPage-5EYNlPs6.js.map → UdpRemindersPage-DBQ0SQO4.js.map} +1 -1
- package/dist/{UdpReportsPage-CKxd-e9T.js → UdpReportsPage-DMA-kvyF.js} +2 -2
- package/dist/{UdpReportsPage-CKxd-e9T.js.map → UdpReportsPage-DMA-kvyF.js.map} +1 -1
- package/dist/{UdpRoutes-BRQDUS6-.js → UdpRoutes-MhKxW3An.js} +6 -6
- package/dist/{UdpRoutes-BRQDUS6-.js.map → UdpRoutes-MhKxW3An.js.map} +1 -1
- package/dist/{UdpVerticalManagementPage-8VmP_fHh.js → UdpVerticalManagementPage-SWVycbx7.js} +6 -6
- package/dist/{UdpVerticalManagementPage-8VmP_fHh.js.map → UdpVerticalManagementPage-SWVycbx7.js.map} +1 -1
- package/dist/{UdpVerticalManagementSidesheet-DUahRHZG.js → UdpVerticalManagementSidesheet-aIPwJWAM.js} +6 -6
- package/dist/{UdpVerticalManagementSidesheet-DUahRHZG.js.map → UdpVerticalManagementSidesheet-aIPwJWAM.js.map} +1 -1
- package/dist/{UserForm-BvhytSr8.js → UserForm-Crii1kld.js} +2 -2
- package/dist/{UserForm-BvhytSr8.js.map → UserForm-Crii1kld.js.map} +1 -1
- package/dist/{UserFormSideSheet-hCzYWgFm.js → UserFormSideSheet-2QRJUUnm.js} +4 -4
- package/dist/{UserFormSideSheet-hCzYWgFm.js.map → UserFormSideSheet-2QRJUUnm.js.map} +1 -1
- package/dist/{UserFormSideSheet-7MuWUCQQ.js → UserFormSideSheet-DGU02bqo.js} +7 -7
- package/dist/{UtilityBar-DRKn9kf4.js → UtilityBar-CdvZ37Da.js} +2 -2
- package/dist/{UtilityBar-DRKn9kf4.js.map → UtilityBar-CdvZ37Da.js.map} +1 -1
- package/dist/{VirtualBrowser-BQ_Zpdh0.js → VirtualBrowser-CKvzgu8L.js} +9 -9
- package/dist/{VirtualBrowser-BQ_Zpdh0.js.map → VirtualBrowser-CKvzgu8L.js.map} +1 -1
- package/dist/{VirtualBrowser-CaeWWI1I.js → VirtualBrowser-CxAjZWKa.js} +14 -14
- package/dist/{VirtualForm-B3d7su-F.js → VirtualForm-Dj5FMp9u.js} +1 -1
- package/dist/{VirtualForm-B3d7su-F.js.map → VirtualForm-Dj5FMp9u.js.map} +1 -1
- package/dist/{WorkflowContainer-sEYHBwJR.js → WorkflowContainer-CBoWiJQY.js} +4 -4
- package/dist/{WorkflowContainer-sEYHBwJR.js.map → WorkflowContainer-CBoWiJQY.js.map} +1 -1
- package/dist/{WorkflowContainer-2ubt2MCe.js → WorkflowContainer-CW9NJXbF.js} +11 -11
- package/dist/{WorkflowContent-CaMS5xmR.js → WorkflowContent-B4W3IhqH.js} +4 -4
- package/dist/{WorkflowContent-CaMS5xmR.js.map → WorkflowContent-B4W3IhqH.js.map} +1 -1
- package/dist/{WorkflowTreeMenu-DC4CuF88.js → WorkflowTreeMenu-DKGbOQSH.js} +2 -2
- package/dist/{WorkflowTreeMenu-DC4CuF88.js.map → WorkflowTreeMenu-DKGbOQSH.js.map} +1 -1
- package/dist/{actionSummary-BOSgduAE.js → actionSummary-Ciu0y-s0.js} +2 -2
- package/dist/{actionSummary-BOSgduAE.js.map → actionSummary-Ciu0y-s0.js.map} +1 -1
- package/dist/{actionUtils-99XIoiDI.js → actionUtils-cC_2y5Xi.js} +2 -2
- package/dist/{actionUtils-99XIoiDI.js.map → actionUtils-cC_2y5Xi.js.map} +1 -1
- package/dist/actions/actionSummary/index.js +7 -7
- package/dist/actions/index.js +21 -21
- package/dist/actions/sidebar/index.js +6 -6
- package/dist/actions/utils/index.js +6 -6
- package/dist/{apiHelpers-BpZTkMX8.js → apiHelpers-B_cn3sZo.js} +2 -2
- package/dist/{apiHelpers-BpZTkMX8.js.map → apiHelpers-B_cn3sZo.js.map} +1 -1
- package/dist/{auth-EOQASxKM.js → auth-BEf5rt4s.js} +4 -4
- package/dist/{auth-EOQASxKM.js.map → auth-BEf5rt4s.js.map} +1 -1
- package/dist/{axiosInterceptors-6Czv1PA5.js → axiosInterceptors-FQ3b5kjr.js} +2 -2
- package/dist/{axiosInterceptors-6Czv1PA5.js.map → axiosInterceptors-FQ3b5kjr.js.map} +1 -1
- package/dist/{cards-CqNi83lO.js → cards-Bpy1zoxV.js} +1 -1
- package/dist/{cards-CqNi83lO.js.map → cards-Bpy1zoxV.js.map} +1 -1
- package/dist/chatBot/index.js +5 -5
- package/dist/componentSystems/multiThreadTimeline/functions/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/index.js +11 -11
- package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +6 -6
- package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +6 -6
- package/dist/componentSystems/multiThreadTimeline/ui/index.js +2 -2
- package/dist/componentSystems/multiThreadTimeline/ui/modified/index.js +1 -1
- package/dist/componentSystems/pageRenderer/hocs/index.js +13 -13
- package/dist/componentSystems/pageRenderer/hooks/index.js +1 -1
- package/dist/componentSystems/pageRenderer/index.js +17 -17
- package/dist/componentSystems/pageRenderer/utils/index.js +1 -1
- package/dist/componentSystems/pageRenderer/wrappers/index.js +12 -12
- package/dist/{crudActions-Bl1NmJtO.js → crudActions-DXyHKaN8.js} +2 -2
- package/dist/{crudActions-Bl1NmJtO.js.map → crudActions-DXyHKaN8.js.map} +1 -1
- package/dist/dataBrowser/forms/index.js +6 -6
- package/dist/dataBrowser/index.js +20 -20
- package/dist/{dataDisplay-nJIK_NjC.js → dataDisplay-CBFgak2F.js} +1 -1
- package/dist/{dataDisplay-nJIK_NjC.js.map → dataDisplay-CBFgak2F.js.map} +1 -1
- package/dist/{defaultTabs-BzZY0_Jb.js → defaultTabs-CVeUq9lw.js} +1 -1
- package/dist/{defaultTabs-BzZY0_Jb.js.map → defaultTabs-CVeUq9lw.js.map} +1 -1
- package/dist/enums/index.js +2 -1
- package/dist/hooks/index.js +14 -14
- package/dist/{hooks-C2Rr_sq1.js → hooks-CxLP2j70.js} +3 -3
- package/dist/{hooks-C2Rr_sq1.js.map → hooks-CxLP2j70.js.map} +1 -1
- package/dist/index.js +99 -97
- package/dist/inquiry/index.js +20 -20
- package/dist/{inquiry-5fUj13A8.js → inquiry-J7m3wdvC.js} +10 -10
- package/dist/{inquiry-5fUj13A8.js.map → inquiry-J7m3wdvC.js.map} +1 -1
- package/dist/maintenanceEngine/crudBrowser/index.js +12 -12
- package/dist/maintenanceEngine/index.js +22 -22
- package/dist/maintenanceEngine/tableBrowser/index.js +13 -13
- package/dist/maintenanceEngine/virtualBrowser/index.js +15 -15
- package/dist/menuPage/index.js +11 -11
- package/dist/{CustomMenuPage-PSOKksBZ.js → menuPage-Df5ucoQW.js} +2 -2
- package/dist/menuPage-Df5ucoQW.js.map +1 -0
- package/dist/{menuUtilities-fX5ECi0i.js → menuUtilities-58E3hJ9u.js} +2 -2
- package/dist/{menuUtilities-fX5ECi0i.js.map → menuUtilities-58E3hJ9u.js.map} +1 -1
- package/dist/{methodUtils-DEk9B4A8.js → methodUtils-Cwo_kmVX.js} +2 -2
- package/dist/{methodUtils-DEk9B4A8.js.map → methodUtils-Cwo_kmVX.js.map} +1 -1
- package/dist/{newGrid-DPiAB3cO.js → newGrid-nbEL11Vp.js} +2 -2
- package/dist/{newGrid-DPiAB3cO.js.map → newGrid-nbEL11Vp.js.map} +1 -1
- package/dist/notes/index.js +9 -9
- package/dist/page/PageContainer/index.js +5 -5
- package/dist/{pageEnums-CA-HlW3W.js → pageEnums-DHCYa0ey.js} +2 -1
- package/dist/{pageEnums-CA-HlW3W.js.map → pageEnums-DHCYa0ey.js.map} +1 -1
- package/dist/reminders/index.js +10 -10
- package/dist/reports/index.js +5 -5
- package/dist/routes/index.js +2 -2
- package/dist/shell/index.js +32 -32
- package/dist/shell/ui/addUser/index.js +8 -8
- package/dist/shell/ui/appSwitcher/index.js +1 -1
- package/dist/shell/ui/index.js +14 -14
- package/dist/treeMenu/index.js +8 -8
- package/dist/types/src/enums/pageEnums.d.ts +2 -1
- package/dist/types/src/enums/pageEnums.d.ts.map +1 -1
- package/dist/types/src/hooks/usePromotedLookupMethods.d.ts +1 -1
- package/dist/types/src/hooks/usePromotedMethodEntity.d.ts +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpFormsBuilderPage/UdpFormsBuilderPage.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts +5 -0
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/index.d.ts +3 -0
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/index.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpPrivateForm/UdpPrivateForm.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/ShortcutContent/index.js +8 -8
- package/dist/udp/export/index.js +16 -16
- package/dist/udp/fileImportMapping/index.js +14 -14
- package/dist/udp/pages/ChatUDP/index.js +6 -6
- package/dist/udp/pages/UdpAuditEvents/index.js +19 -19
- package/dist/udp/pages/UdpDataBrowserPage/index.js +20 -20
- package/dist/udp/pages/UdpFormsBuilderPage/index.js +1 -1
- package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +94 -0
- package/dist/udp/pages/UdpGridPanelManagementPage/index.js +12 -12
- package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +9 -9
- package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +26 -26
- package/dist/udp/pages/UdpMaintenanceConfigPage/index.js +5 -5
- package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +25 -25
- package/dist/udp/pages/UdpNotesPage/index.js +14 -14
- package/dist/udp/pages/UdpPages/index.js +57 -57
- package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
- package/dist/udp/pages/UdpPrivateForm/index.js +11 -10
- package/dist/udp/pages/UdpPublicForm/index.js +3 -3
- package/dist/udp/pages/UdpRemindersPage/index.js +14 -14
- package/dist/udp/pages/UdpReportsPage/index.js +6 -6
- package/dist/udp/pages/UdpVerticalManagementPage/index.js +12 -12
- package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +11 -11
- package/dist/udp/pages/index.js +57 -57
- package/dist/udp/utilities/index.js +5 -5
- package/dist/{ui-CsyeuYr4.js → ui-gRqaK08H.js} +1 -1
- package/dist/{ui-CsyeuYr4.js.map → ui-gRqaK08H.js.map} +1 -1
- package/dist/{useActions-CBGNxEKr.js → useActions-BbqecXkd.js} +3 -3
- package/dist/{useActions-CBGNxEKr.js.map → useActions-BbqecXkd.js.map} +1 -1
- package/dist/{useApiCatalog-sZ6uMfzd.js → useApiCatalog-Yi_KDPot.js} +2 -2
- package/dist/{useApiCatalog-sZ6uMfzd.js.map → useApiCatalog-Yi_KDPot.js.map} +1 -1
- package/dist/{useAxiosGet-BMoXHfLN.js → useAxiosGet-vvPjwB4W.js} +3 -3
- package/dist/{useAxiosGet-BMoXHfLN.js.map → useAxiosGet-vvPjwB4W.js.map} +1 -1
- package/dist/{useAxiosMutate-q_ZpG98Z.js → useAxiosMutate-DcLxzykX.js} +3 -3
- package/dist/{useAxiosMutate-q_ZpG98Z.js.map → useAxiosMutate-DcLxzykX.js.map} +1 -1
- package/dist/{usePromotedMethodEntities-DGb2hZSz.js → usePromotedMethodEntities-bv9ewSry.js} +2 -2
- package/dist/{usePromotedMethodEntities-DGb2hZSz.js.map → usePromotedMethodEntities-bv9ewSry.js.map} +1 -1
- package/dist/{usePromotedMethodEntity-wRBkHT3x.js → usePromotedMethodEntity-Bi2neP26.js} +2 -2
- package/dist/{usePromotedMethodEntity-wRBkHT3x.js.map → usePromotedMethodEntity-Bi2neP26.js.map} +1 -1
- package/dist/{useQueryExecutors-CuXmVvXX.js → useQueryExecutors-UWa24-Mf.js} +3 -3
- package/dist/{useQueryExecutors-CuXmVvXX.js.map → useQueryExecutors-UWa24-Mf.js.map} +1 -1
- package/dist/utilities/auth/index.js +6 -6
- package/dist/utilities/customIcons/index.js +1 -1
- package/dist/utilities/form/paymentForm/index.js +6 -6
- package/dist/utilities/index.js +6 -6
- package/dist/utilities/menus/index.js +2 -2
- package/dist/utilities/provider/index.js +21 -21
- package/dist/utilities/redirect/pages/index.js +5 -5
- package/dist/utilities/tenant/index.js +5 -5
- package/dist/{theme-DLA8cxjc.js → utilities-BLu3F9sJ.js} +1 -1
- package/dist/utilities-BLu3F9sJ.js.map +1 -0
- package/dist/{withEngineComponent-Bya6z6jQ.js → withEngineComponent-CUQbIi-0.js} +2 -2
- package/dist/{withEngineComponent-Bya6z6jQ.js.map → withEngineComponent-CUQbIi-0.js.map} +1 -1
- package/dist/workflow/components/index.js +1 -1
- package/dist/workflow/index.js +13 -13
- package/dist/workflow/menus/index.js +9 -9
- package/dist/wrappers-CGE2HK5z.js +1 -0
- package/export-map.json +3 -2
- package/package.json +2 -2
- package/dist/CustomMenuPage-PSOKksBZ.js.map +0 -1
- package/dist/UdpPrivateForm-BJdYZzlO.js.map +0 -1
- package/dist/theme-DLA8cxjc.js.map +0 -1
- /package/dist/{FluentActivity-CSTNwtbg.js → FluentActivity-DNv5ppko.js} +0 -0
- /package/dist/{FluentDataTable-DaeSnPVT.js → FluentDataTable-BXPIqR8m.js} +0 -0
- /package/dist/{NestedGrid-DnwDKGuS.js → NestedGrid-CQ_tEe-B.js} +0 -0
- /package/dist/{accordion-b0s-0-RI.js → accordion-BLXGkcTH.js} +0 -0
- /package/dist/{addUser-B0865wVm.js → addUser-D2pqu0AW.js} +0 -0
- /package/dist/{advancedSearchBuilder-3XkAGMdW.js → advancedSearchBuilder-DAGBcP1-.js} +0 -0
- /package/dist/{alerts-OCaGbJa8.js → alerts-Gbvcpl4E.js} +0 -0
- /package/dist/{appSwitcher-CgqKfl97.js → appSwitcher-Cj_OxE8O.js} +0 -0
- /package/dist/{charts-Dqnchxlj.js → charts-R51kXdbo.js} +0 -0
- /package/dist/{components-DS49lfXu.js → components-BbPynQ4E.js} +0 -0
- /package/dist/{components-RSFyyue7.js → components-HFPHj0Z0.js} +0 -0
- /package/dist/{containers-CbiOWu6t.js → containers-Do3V9CjC.js} +0 -0
- /package/dist/{crudBrowser-B3M_qFXM.js → crudBrowser-CNJMNMPk.js} +0 -0
- /package/dist/{dataDisplay-C4xsjRpN.js → dataDisplay-CHdSKRO0.js} +0 -0
- /package/dist/{demos-CHF7C73o.js → demos-D1hYYoOq.js} +0 -0
- /package/dist/{feedback-8c0PUyzJ.js → enums-Edm9Kwqq.js} +0 -0
- /package/dist/{feedback-D7AaTszW.js → feedback-DL6EKTOa.js} +0 -0
- /package/dist/{fileViewer-N90YmIyL.js → feedback-Dw-Qh7A6.js} +0 -0
- /package/dist/{floorplans-rm7R2YbY.js → fileViewer-CMBhBXGp.js} +0 -0
- /package/dist/{fluentTimeline-De-79li3.js → floorplans-CtbDAfnq.js} +0 -0
- /package/dist/{forms-DUpzjbB8.js → fluentTimeline-BbvrZFSz.js} +0 -0
- /package/dist/{forms-DoLgP7J3.js → forms-Bqbd2PSS.js} +0 -0
- /package/dist/{functions-DjPVehfJ.js → forms-uSV7-14b.js} +0 -0
- /package/dist/{hocs-BuWIHy7I.js → functions-BKH-pLPX.js} +0 -0
- /package/dist/{hooks-Bgdv7Rjl.js → hocs-DwAy8u5A.js} +0 -0
- /package/dist/{iframe-AW8kvPvm.js → hooks-B7ab4j1m.js} +0 -0
- /package/dist/{loading-6mD-gixw.js → iframe-CM2OOxOu.js} +0 -0
- /package/dist/{mapLayout-CDZKQDHU.js → loading-BwkuGJoi.js} +0 -0
- /package/dist/{maps-Ce7LPzeA.js → mapLayout-Cg6spO9k.js} +0 -0
- /package/dist/{menus-BOCTn6h6.js → maps-D2whP8Zh.js} +0 -0
- /package/dist/{menus-pzqEb4ZE.js → menus-DugtDOhA.js} +0 -0
- /package/dist/{modified-CeJaPfN-.js → menus-VWidUTp_.js} +0 -0
- /package/dist/{mttMainTimeline-Bhn6Bx8O.js → modified--RrdyRlS.js} +0 -0
- /package/dist/{mttSummary-Bx5hrrL_.js → mttMainTimeline-DFHSLEBw.js} +0 -0
- /package/dist/{navigation-n9BzYj_m.js → mttSummary-BrQ0Tb62.js} +0 -0
- /package/dist/{property-BZsCMXJZ.js → navigation-2kyWDJg1.js} +0 -0
- /package/dist/{sidebar-BV9-4hst.js → property-CB8U10nw.js} +0 -0
- /package/dist/{stepper-CE7rAMMG.js → sidebar-C8yBp4eL.js} +0 -0
- /package/dist/{support-DeorQvzN.js → stepper-sZXSP0dk.js} +0 -0
- /package/dist/{surfaces-BjGAutOC.js → support-BhMVhBcD.js} +0 -0
- /package/dist/{tableBrowser-THunl5ws.js → surfaces-B445R0FQ.js} +0 -0
- /package/dist/{tabs-DcAL3Jpp.js → tableBrowser-BRVY65f3.js} +0 -0
- /package/dist/{templates-B2aOg0L7.js → tabs-BMrd1KM-.js} +0 -0
- /package/dist/{timeline-D0LJGudk.js → templates-Cz1v1M4q.js} +0 -0
- /package/dist/{ui-BCGHP5Tg.js → timeline-x3kpYbLD.js} +0 -0
- /package/dist/{ui-CWkntoL5.js → ui-BjpkPJO5.js} +0 -0
- /package/dist/{ui-P3i_0RoE.js → ui-Bqag992Z.js} +0 -0
- /package/dist/{utilities-tnyNft1v.js → ui-DBhxlgrk.js} +0 -0
- /package/dist/{utilityDisplay-9oT_42C1.js → utilities-CMoiGbGt.js} +0 -0
- /package/dist/{utilityHeader-CluhKbl1.js → utilityDisplay-BHYWs3gf.js} +0 -0
- /package/dist/{utils-B90bZC89.js → utilityHeader-BsUlwtE7.js} +0 -0
- /package/dist/{utils-ISMJodw8.js → utils-CRdMZZPC.js} +0 -0
- /package/dist/{virtualBrowser-CjWRkC7M.js → utils-Cpcp_Rx8.js} +0 -0
- /package/dist/{widgets-BbScraXi.js → virtualBrowser-pfw07Czd.js} +0 -0
- /package/dist/{wrappers-DT4B7IyD.js → widgets-BcHFxfRK.js} +0 -0
package/dist/{ImportDataFromFileMapping-kkCJEGIS.js.map → ImportDataFromFileMapping-CBKGm2pM.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportDataFromFileMapping-kkCJEGIS.js","names":["Divider","FileImportMappingWizard"],"sources":["../src/udp/fileImportMapping/fileUtils.js","../src/udp/fileImportMapping/FileImportConfigCard.jsx","../src/udp/fileImportMapping/FileImportMappingWizard.jsx","../src/udp/fileImportMapping/ImportDataFromFileMapping.jsx"],"sourcesContent":["import * as XLSX from 'xlsx';\n\nexport const handleExcelFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: 'array' });\n\n const sheetName = workbook.SheetNames[fileProperties?.worksheetNumber?.value - 1];\n const worksheet = workbook.Sheets[sheetName];\n\n // Get the headers (first row) and first data line\n const json = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n });\n if (json.length > 1) {\n const headers = json[0]; // First row as headers\n const firstDataLine = json[1]; // Second row as the first data line\n resolve({ headers: headers, sampleData: firstDataLine });\n }\n else{\n reject(\"Could not get file headers\")\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsArrayBuffer(fileObject); // Read the file as an ArrayBuffer\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleTextFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const chunkSize = 1024; // Read 1024 bytes at a time\n let offset = 0; // Start reading at the beginning of the file\n let accumulatedData = '';\n\n const reader = new FileReader();\n\n reader.onload = function (e) {\n accumulatedData += e.target.result;\n\n const lines = accumulatedData.split('\\n');\n if (lines.length > 2) {\n const headers = lines[0].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n const firstDataLine = lines[1].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n resolve({ headers: headers, sampleData: firstDataLine });\n } else {\n // If the header is not found and there's more data to read\n if (offset < fileObject.size) {\n readNextChunk();\n }\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n function readNextChunk() {\n // Read the next 1024 bytes\n const blob = fileObject.slice(offset, offset + chunkSize);\n reader.readAsText(blob);\n offset += chunkSize;\n }\n readNextChunk();\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleJsonFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n try {\n const jsonData = JSON.parse(e.target.result);\n const dataAtPath = fileProperties?.jsonPath ? getValueByPath(jsonData, fileProperties?.jsonPath) : jsonData;\n\n if (Array.isArray(dataAtPath) && dataAtPath.length > 0) {\n const keys = Object.keys(dataAtPath[0]);\n resolve({ headers: keys, sampleData: dataAtPath[0] });\n } else {\n reject('The JSON file does not contain an array or is empty.');\n }\n } catch (err) {\n reject('Error parsing JSON file:', err);\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsText(fileObject);\n } else {\n reject('No file provided');\n }\n });\n};\n\nconst getValueByPath = (obj, path) => {\n return path.split('.').reduce((acc, key) => acc && acc[key], obj);\n }\n","import React, { useState, useMemo } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { CompactDataListItem } from '../../UI/dataDisplay/CompactDataListItem';\nimport { Typography, Divider } from '@material-ui/core';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\n\nexport const FileImportConfigCard = (props) => {\n const { fileMappingRecord, domain } = props;\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n\n const parsedProperties = useMemo(() => {\n if (fileMappingRecord) {\n let parsedObject = fileMappingRecord?.properties;\n if (typeof fileMappingRecord?.properties === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.properties);\n }\n if (\n 'includesHeader' in parsedObject &&\n parsedObject?.includesHeader === false\n ) {\n setShowIndexNumbers(true);\n } else {\n setShowIndexNumbers(false);\n }\n return Object.entries(parsedObject).map(([key, value]) => ({\n key,\n value\n }));\n }\n }, [fileMappingRecord]);\n\n const parsedFieldMappings = useMemo(() => {\n let parsedObject = fileMappingRecord?.mapping;\n if (typeof fileMappingRecord?.mapping === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.mapping);\n }\n if (fileMappingRecord) {\n return Object.entries(parsedObject);\n }\n }, [fileMappingRecord]);\n\n return (\n parsedFieldMappings && (\n <AmbientCard fullWidth title='Mapping Configuration' subtitle={domain}>\n {parsedProperties?.map((property) => (\n <CompactDataListItem\n label={property?.key\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/^./, function (char) {\n return char.toUpperCase();\n })}\n value={\n property?.value === false\n ? 'False'\n : property?.value === true\n ? 'True'\n : property?.value\n }\n />\n ))}\n\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>Fields</Typography>\n </div>\n <Divider style={{ marginTop: 5, marginBottom: -14 }} />\n {parsedFieldMappings?.map((field) => (\n <div style={{ height: 42 }}>\n <div style={{ display: 'flex', flexDirection: 'row', gap: 10 }}>\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers\n ? 'index ' + field[1]?.headerIndex\n : field[1]?.importFileField}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Typography\n style={{ marginTop: 25, width: '50%', textAlign: 'right' }}\n >\n {field[1]?.udpField.replace(/([A-Z])/g, ' $1').trim()}\n </Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n </>\n </AmbientCard>\n )\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { Form } from '../../utilities/form';\nimport { Field } from '../../utilities/form';\nimport { FormButtons } from '../../utilities/form';\nimport { SubmitButton } from '../../utilities/form';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { AmbientStepper } from '../../UI/inputs/menus/AmbientStepper/AmbientStepper';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport { Typography } from '@material-ui/core';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { AmbientTextField } from '../../UI/inputs/textField/AmbientTextField';\nimport { Divider } from '../../UI/utilityDisplay/Divider';\nimport {\n handleExcelFileUpload,\n handleJsonFileUpload,\n handleTextFileUpload\n} from './fileUtils';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { ConfigService } from '../../configService';\n\nconst FileImportMappingWizard = (props) => {\n const { refetchMappings, setNewFileMappingSidesheetOpen, verifyRequiredFields } = props;\n const user = useUser();\n const [importHeaderData, setImportHeaderData] = useState();\n const [udpObjectList, setUdpObjectList] = useState();\n const [selectedDomain, setSelectedDomain] = useState();\n const [selectedFileType, setSelectedFileType] = useState();\n const [fileObject, setFileObject] = useState();\n const [fileImportMappingObject, setFileImportMappingObject] = useState({});\n const [activeStep, setActiveStep] = useState(0);\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n const [errorText, setErrorText] = useState('');\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const executeCreateFileMapping = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n []\n );\n const { data: udpObjectEntity } = usePromotedMethodEntity(\n 'UdpObjectInfo',\n true\n );\n\n const [{ data: allowedFileTypesData }, refetchAllowedFileTypes] = useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpFileImportType`,\n {},\n false\n );\n\n const searchUdpObjectData = useCallback(async () => {\n if (udpObjectEntity?.unityBaseSearchMethod?.apiMethodId && user?.id) {\n const sapUserRes = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpObjectEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (sapUserRes?.data?.pageList.length > 0) {\n setUdpObjectList(sapUserRes?.data?.pageList);\n }\n }\n }, [udpObjectEntity, user]);\n\n const filterCatalogObjectList = useMemo(() => {\n return udpObjectList;\n }, [udpObjectList]);\n\n const getNameFormattedOptionLabel = (option) => {\n return option?.name.replace(/([A-Z])/g, ' $1').trim();\n };\n\n const getNameOptionLabel = (option) => {\n return option?.name;\n };\n\n const handleFileUpload = async (properties) => {\n let result;\n if (\n selectedFileType.extension === '.csv' ||\n selectedFileType.extension === '.txt'\n ) {\n result = await handleTextFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.xlsx') {\n result = await handleExcelFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.json') {\n result = await handleJsonFileUpload(fileObject, properties);\n }\n setImportHeaderData(result?.headers);\n };\n\n useEffect(() => {\n searchUdpObjectData();\n }, [searchUdpObjectData]);\n\n const handleCreateNewFieldMapping = useCallback(\n async (values) => {\n const response = await executeCreateFileMapping({\n name: values.name,\n objectInfoSanitizedName: getSanitizedName(selectedDomain.name),\n fileImportType: selectedFileType.id,\n mapping: JSON.stringify(fileImportMappingObject?.mapping),\n properties: JSON.stringify(fileImportMappingObject?.properties)\n }).catch((res) => {\n handleErrorSnackbar(res);\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Created Mapping');\n refetchMappings();\n setNewFileMappingSidesheetOpen(false);\n }\n },\n [\n executeCreateFileMapping,\n selectedDomain?.name,\n selectedFileType?.id,\n fileImportMappingObject?.mapping,\n fileImportMappingObject?.properties,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n refetchMappings,\n setNewFileMappingSidesheetOpen\n ]\n );\n\n const handleUpdateFieldMapping = (values) => {\n let valid = true;\n selectedDomain?.objectFieldInfo?.forEach((option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n if (\n !Object.entries(values).some(\n (obj) => obj[1].businessObjectKey === option.businessObjectKey\n )\n ) {\n if(verifyRequiredFields){\n valid = false;\n }\n }\n }\n });\n if (!valid) {\n setErrorText('All required Udp fields must have a mapping');\n return;\n }\n const filteredMappings = Object.entries(values)\n .filter(([key, value]) => value !== null)\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n const mappedFieldIndexes = Object.keys(filteredMappings).map((key) =>\n parseInt(key.split('udpFieldMapping')[1], 10)\n );\n const fieldMappings = Object.values(filteredMappings).map(\n (selectedUdpField, index) => {\n return {\n udpField: selectedUdpField.name,\n importFileField: !showIndexNumbers\n ? importHeaderData[mappedFieldIndexes[index]]\n : null,\n headerIndex: !showIndexNumbers ? -1 : mappedFieldIndexes[index]\n };\n }\n );\n setFileImportMappingObject((prev) => {\n return { ...prev, mapping: fieldMappings };\n });\n setActiveStep((prev) => prev + 1);\n };\n\n const handleUpdateFileProperties = (values) => {\n setFileImportMappingObject((prev) => {\n let properties = {};\n Object.keys(values).forEach(\n (propKey) =>\n (properties[propKey] =\n 'value' in values[propKey]\n ? values[propKey]?.value\n : values[propKey])\n );\n return { ...prev, properties: properties };\n });\n if ('includesHeader' in values && values?.includesHeader.value === false) {\n setShowIndexNumbers(true);\n }\n handleFileUpload(values);\n setActiveStep((prev) => prev + 1);\n };\n\n const getUdpFieldOptionLabel = (option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n return `${option.name.replace(/([A-Z])/g, ' $1').trim()}*`; //required field\n }\n return `${option.name} - ${option.dataType}`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n const formattedFileTypeProperties = useMemo(() => {\n if (selectedFileType) {\n return JSON.parse(selectedFileType?.properties);\n }\n }, [selectedFileType]);\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ marginBottom: 20 }}>\n <AmbientStepper\n activeStep={activeStep}\n steps={['File', 'Domain', 'Field Mappings', 'Review']}\n orientation='vertical'\n />\n </div>\n {activeStep === 0 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileImportType'}\n name={'fileImportType'}\n label='File Type'\n onChange={(val) => setSelectedFileType(val)}\n options={allowedFileTypesData}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n value={selectedFileType}\n required\n />\n {selectedFileType && (\n <div style={{ marginTop: 5 }}>\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n </div>\n )}\n <Form onSubmit={handleUpdateFileProperties}>\n {formattedFileTypeProperties?.map((property) =>\n property?.options ? (\n <Field\n component={AmbientAutoComplete}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n options={property.options}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n ) : (\n <Field\n component={AmbientTextField}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n )\n )}\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n disabled={!fileObject}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 1 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'domain'}\n name={'domain'}\n label='Domain'\n onChange={(val) => setSelectedDomain(val)}\n options={filterCatalogObjectList}\n size='small'\n getOptionLabelFunction={getNameFormattedOptionLabel}\n value={selectedDomain}\n required\n />\n <div\n style={{ float: 'right', display: 'flex', gap: 8, marginTop: 8 }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev + 1)}\n color='secondary'\n disabled={!selectedDomain}\n >\n Next\n </FluentButton>\n </div>\n </>\n )}\n {activeStep === 2 && (\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>UDP Fields</Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n <Form\n onSubmit={handleUpdateFieldMapping}\n style={{ marginTop: -20 }}\n >\n {importHeaderData?.map((field, index) => (\n <div style={{ height: 42 }}>\n <div\n style={{ display: 'flex', flexDirection: 'row', gap: 10 }}\n >\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers ? 'index ' + index : field}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Field\n style={{ height: 30 }}\n component={AmbientAutoComplete}\n isMultiple={false}\n id={`udpFieldMapping${index}`}\n name={`udpFieldMapping${index}`}\n options={selectedDomain?.objectFieldInfo}\n size='small'\n getOptionLabelFunction={getUdpFieldOptionLabel}\n />\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n <div style={{ paddingTop: 20, textAlign: 'right', color: 'red' }}>\n {errorText}\n </div>\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n paddingTop: 16,\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 3 && (\n <Form onSubmit={handleCreateNewFieldMapping}>\n <Field\n component={AmbientTextField}\n id={`name`}\n name={`name`}\n label='Mapping Name'\n size='small'\n />\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n {'Create Mapping'}\n </SubmitButton>\n </FormButtons>\n </Form>\n )}\n </AmbientCard>\n {fileImportMappingObject?.mapping &&<div style={{ marginTop: 10 }}>\n <FileImportConfigCard\n fileMappingRecord={{\n mapping: fileImportMappingObject?.mapping,\n properties: fileImportMappingObject?.properties\n }}\n domain={selectedDomain?.name.replace(/([A-Z])/g, ' $1').trim()}\n />\n </div>}\n </>\n );\n};\n\nexport default FileImportMappingWizard;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport FileImportMappingWizard from './FileImportMappingWizard';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { ConfigService } from '../../configService';\n\nexport const ImportDataFromFileMapping = (props) => {\n const {onImportSuccess, onImportFail, verifyRequiredFields = true} = props\n const user = useUser();\n const [selectedFileMapping, setSelectedFileMapping] = useState();\n const [udpImportMappingData, setUdpImportMappingData] = useState();\n const [newFileMappingSidesheetOpen, setNewFileMappingSidesheetOpen] =\n useState(false);\n const [fileObject, setFileObject] = useState();\n const [isLoading, setIsLoading] = useState(false)\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const { data: udpFileImportMappingEntity } = usePromotedMethodEntity(\n 'UdpFileImportMapping',\n true\n );\n\n const executeImportDataFromFile = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `${selectedFileMapping?.objectInfoSanitizedName}/fileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n [selectedFileMapping]\n );\n\n const searchFileImportMappingData = useCallback(async () => {\n if (udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId) {\n const res = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (res?.data?.pageList.length > 0) {\n setUdpImportMappingData(res?.data?.pageList);\n }\n }\n }, [udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId]);\n\n useEffect(() => {\n searchFileImportMappingData();\n }, [searchFileImportMappingData]);\n\n const handleImportDataFromFile = useCallback(async () => {\n setIsLoading(true)\n const file = fileObject;\n const blob = new Blob([file], { type: file.type });\n const formData = new FormData();\n formData.append('file', blob, file.name);\n formData.append('tenantId', user?.currentTenantId);\n formData.append('name', selectedFileMapping.name);\n formData.append('objectInfoSanitizedName', selectedFileMapping.objectInfoSanitizedName);\n formData.append('fileImportType', selectedFileMapping.fileImportType);\n formData.append('mapping', selectedFileMapping.mapping);\n formData.append('properties', selectedFileMapping.properties);\n formData.append('id', selectedFileMapping.id);\n const response = await executeImportDataFromFile(formData).catch((res) => {\n setIsLoading(false)\n handleErrorSnackbar(res);\n onImportFail()\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Imported Data');\n setIsLoading(false)\n onImportSuccess && onImportSuccess()\n }\n\n }, [\n fileObject,\n selectedFileMapping,\n executeImportDataFromFile,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n onImportSuccess,\n onImportFail\n ]);\n\n const getFileMappingOptionlabel = (option) => {\n return `${option.name} (${option?.udpFileImportMappingUdpFileImportType?.extension})`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ display: 'flex' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileMapping'}\n name={'fileMapping'}\n label='File Mapping'\n onChange={(val) => setSelectedFileMapping(val)}\n options={udpImportMappingData}\n size='small'\n getOptionLabelFunction={getFileMappingOptionlabel}\n value={selectedFileMapping}\n required\n groupBy={(option) =>\n option?.udpFileImportMappingUdpObjectInfo?.sanitizedName\n }\n />\n </div>\n {selectedFileMapping && (\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n )}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: 5,\n float: 'right',\n marginTop: 10\n }}\n >\n <FluentButton\n onClick={() => setNewFileMappingSidesheetOpen(true)}\n variant='outlined'\n >\n Create New Mapping\n </FluentButton>\n <FluentButton\n variant='contained'\n color='secondary'\n onClick={handleImportDataFromFile}\n progress={isLoading}\n disabled={!fileObject}\n >\n Import Data\n </FluentButton>\n </div>\n <SideSheet\n title='Create New File Mapping'\n open={newFileMappingSidesheetOpen}\n onClose={() => setNewFileMappingSidesheetOpen(false)}\n width={'60%'}\n >\n <FileImportMappingWizard\n refetchMappings={searchFileImportMappingData}\n setNewFileMappingSidesheetOpen={setNewFileMappingSidesheetOpen}\n verifyRequiredFields={verifyRequiredFields}\n />\n </SideSheet>\n </AmbientCard>\n <div style={{ marginTop: 10 }}>\n <FileImportConfigCard fileMappingRecord={selectedFileMapping} domain={selectedFileMapping?.udpFileImportMappingUdpObjectInfo?.sanitizedName.replace(/([A-Z])/g, ' $1').trim()}/>\n </div>\n </>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImportDataFromFileMapping-CBKGm2pM.js","names":["Divider","FileImportMappingWizard"],"sources":["../src/udp/fileImportMapping/fileUtils.js","../src/udp/fileImportMapping/FileImportConfigCard.jsx","../src/udp/fileImportMapping/FileImportMappingWizard.jsx","../src/udp/fileImportMapping/ImportDataFromFileMapping.jsx"],"sourcesContent":["import * as XLSX from 'xlsx';\n\nexport const handleExcelFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: 'array' });\n\n const sheetName = workbook.SheetNames[fileProperties?.worksheetNumber?.value - 1];\n const worksheet = workbook.Sheets[sheetName];\n\n // Get the headers (first row) and first data line\n const json = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n });\n if (json.length > 1) {\n const headers = json[0]; // First row as headers\n const firstDataLine = json[1]; // Second row as the first data line\n resolve({ headers: headers, sampleData: firstDataLine });\n }\n else{\n reject(\"Could not get file headers\")\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsArrayBuffer(fileObject); // Read the file as an ArrayBuffer\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleTextFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const chunkSize = 1024; // Read 1024 bytes at a time\n let offset = 0; // Start reading at the beginning of the file\n let accumulatedData = '';\n\n const reader = new FileReader();\n\n reader.onload = function (e) {\n accumulatedData += e.target.result;\n\n const lines = accumulatedData.split('\\n');\n if (lines.length > 2) {\n const headers = lines[0].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n const firstDataLine = lines[1].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n resolve({ headers: headers, sampleData: firstDataLine });\n } else {\n // If the header is not found and there's more data to read\n if (offset < fileObject.size) {\n readNextChunk();\n }\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n function readNextChunk() {\n // Read the next 1024 bytes\n const blob = fileObject.slice(offset, offset + chunkSize);\n reader.readAsText(blob);\n offset += chunkSize;\n }\n readNextChunk();\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleJsonFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n try {\n const jsonData = JSON.parse(e.target.result);\n const dataAtPath = fileProperties?.jsonPath ? getValueByPath(jsonData, fileProperties?.jsonPath) : jsonData;\n\n if (Array.isArray(dataAtPath) && dataAtPath.length > 0) {\n const keys = Object.keys(dataAtPath[0]);\n resolve({ headers: keys, sampleData: dataAtPath[0] });\n } else {\n reject('The JSON file does not contain an array or is empty.');\n }\n } catch (err) {\n reject('Error parsing JSON file:', err);\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsText(fileObject);\n } else {\n reject('No file provided');\n }\n });\n};\n\nconst getValueByPath = (obj, path) => {\n return path.split('.').reduce((acc, key) => acc && acc[key], obj);\n }\n","import React, { useState, useMemo } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { CompactDataListItem } from '../../UI/dataDisplay/CompactDataListItem';\nimport { Typography, Divider } from '@material-ui/core';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\n\nexport const FileImportConfigCard = (props) => {\n const { fileMappingRecord, domain } = props;\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n\n const parsedProperties = useMemo(() => {\n if (fileMappingRecord) {\n let parsedObject = fileMappingRecord?.properties;\n if (typeof fileMappingRecord?.properties === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.properties);\n }\n if (\n 'includesHeader' in parsedObject &&\n parsedObject?.includesHeader === false\n ) {\n setShowIndexNumbers(true);\n } else {\n setShowIndexNumbers(false);\n }\n return Object.entries(parsedObject).map(([key, value]) => ({\n key,\n value\n }));\n }\n }, [fileMappingRecord]);\n\n const parsedFieldMappings = useMemo(() => {\n let parsedObject = fileMappingRecord?.mapping;\n if (typeof fileMappingRecord?.mapping === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.mapping);\n }\n if (fileMappingRecord) {\n return Object.entries(parsedObject);\n }\n }, [fileMappingRecord]);\n\n return (\n parsedFieldMappings && (\n <AmbientCard fullWidth title='Mapping Configuration' subtitle={domain}>\n {parsedProperties?.map((property) => (\n <CompactDataListItem\n label={property?.key\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/^./, function (char) {\n return char.toUpperCase();\n })}\n value={\n property?.value === false\n ? 'False'\n : property?.value === true\n ? 'True'\n : property?.value\n }\n />\n ))}\n\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>Fields</Typography>\n </div>\n <Divider style={{ marginTop: 5, marginBottom: -14 }} />\n {parsedFieldMappings?.map((field) => (\n <div style={{ height: 42 }}>\n <div style={{ display: 'flex', flexDirection: 'row', gap: 10 }}>\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers\n ? 'index ' + field[1]?.headerIndex\n : field[1]?.importFileField}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Typography\n style={{ marginTop: 25, width: '50%', textAlign: 'right' }}\n >\n {field[1]?.udpField.replace(/([A-Z])/g, ' $1').trim()}\n </Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n </>\n </AmbientCard>\n )\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { Form } from '../../utilities/form';\nimport { Field } from '../../utilities/form';\nimport { FormButtons } from '../../utilities/form';\nimport { SubmitButton } from '../../utilities/form';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { AmbientStepper } from '../../UI/inputs/menus/AmbientStepper/AmbientStepper';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport { Typography } from '@material-ui/core';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { AmbientTextField } from '../../UI/inputs/textField/AmbientTextField';\nimport { Divider } from '../../UI/utilityDisplay/Divider';\nimport {\n handleExcelFileUpload,\n handleJsonFileUpload,\n handleTextFileUpload\n} from './fileUtils';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { ConfigService } from '../../configService';\n\nconst FileImportMappingWizard = (props) => {\n const { refetchMappings, setNewFileMappingSidesheetOpen, verifyRequiredFields } = props;\n const user = useUser();\n const [importHeaderData, setImportHeaderData] = useState();\n const [udpObjectList, setUdpObjectList] = useState();\n const [selectedDomain, setSelectedDomain] = useState();\n const [selectedFileType, setSelectedFileType] = useState();\n const [fileObject, setFileObject] = useState();\n const [fileImportMappingObject, setFileImportMappingObject] = useState({});\n const [activeStep, setActiveStep] = useState(0);\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n const [errorText, setErrorText] = useState('');\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const executeCreateFileMapping = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n []\n );\n const { data: udpObjectEntity } = usePromotedMethodEntity(\n 'UdpObjectInfo',\n true\n );\n\n const [{ data: allowedFileTypesData }, refetchAllowedFileTypes] = useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpFileImportType`,\n {},\n false\n );\n\n const searchUdpObjectData = useCallback(async () => {\n if (udpObjectEntity?.unityBaseSearchMethod?.apiMethodId && user?.id) {\n const sapUserRes = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpObjectEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (sapUserRes?.data?.pageList.length > 0) {\n setUdpObjectList(sapUserRes?.data?.pageList);\n }\n }\n }, [udpObjectEntity, user]);\n\n const filterCatalogObjectList = useMemo(() => {\n return udpObjectList;\n }, [udpObjectList]);\n\n const getNameFormattedOptionLabel = (option) => {\n return option?.name.replace(/([A-Z])/g, ' $1').trim();\n };\n\n const getNameOptionLabel = (option) => {\n return option?.name;\n };\n\n const handleFileUpload = async (properties) => {\n let result;\n if (\n selectedFileType.extension === '.csv' ||\n selectedFileType.extension === '.txt'\n ) {\n result = await handleTextFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.xlsx') {\n result = await handleExcelFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.json') {\n result = await handleJsonFileUpload(fileObject, properties);\n }\n setImportHeaderData(result?.headers);\n };\n\n useEffect(() => {\n searchUdpObjectData();\n }, [searchUdpObjectData]);\n\n const handleCreateNewFieldMapping = useCallback(\n async (values) => {\n const response = await executeCreateFileMapping({\n name: values.name,\n objectInfoSanitizedName: getSanitizedName(selectedDomain.name),\n fileImportType: selectedFileType.id,\n mapping: JSON.stringify(fileImportMappingObject?.mapping),\n properties: JSON.stringify(fileImportMappingObject?.properties)\n }).catch((res) => {\n handleErrorSnackbar(res);\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Created Mapping');\n refetchMappings();\n setNewFileMappingSidesheetOpen(false);\n }\n },\n [\n executeCreateFileMapping,\n selectedDomain?.name,\n selectedFileType?.id,\n fileImportMappingObject?.mapping,\n fileImportMappingObject?.properties,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n refetchMappings,\n setNewFileMappingSidesheetOpen\n ]\n );\n\n const handleUpdateFieldMapping = (values) => {\n let valid = true;\n selectedDomain?.objectFieldInfo?.forEach((option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n if (\n !Object.entries(values).some(\n (obj) => obj[1].businessObjectKey === option.businessObjectKey\n )\n ) {\n if(verifyRequiredFields){\n valid = false;\n }\n }\n }\n });\n if (!valid) {\n setErrorText('All required Udp fields must have a mapping');\n return;\n }\n const filteredMappings = Object.entries(values)\n .filter(([key, value]) => value !== null)\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n const mappedFieldIndexes = Object.keys(filteredMappings).map((key) =>\n parseInt(key.split('udpFieldMapping')[1], 10)\n );\n const fieldMappings = Object.values(filteredMappings).map(\n (selectedUdpField, index) => {\n return {\n udpField: selectedUdpField.name,\n importFileField: !showIndexNumbers\n ? importHeaderData[mappedFieldIndexes[index]]\n : null,\n headerIndex: !showIndexNumbers ? -1 : mappedFieldIndexes[index]\n };\n }\n );\n setFileImportMappingObject((prev) => {\n return { ...prev, mapping: fieldMappings };\n });\n setActiveStep((prev) => prev + 1);\n };\n\n const handleUpdateFileProperties = (values) => {\n setFileImportMappingObject((prev) => {\n let properties = {};\n Object.keys(values).forEach(\n (propKey) =>\n (properties[propKey] =\n 'value' in values[propKey]\n ? values[propKey]?.value\n : values[propKey])\n );\n return { ...prev, properties: properties };\n });\n if ('includesHeader' in values && values?.includesHeader.value === false) {\n setShowIndexNumbers(true);\n }\n handleFileUpload(values);\n setActiveStep((prev) => prev + 1);\n };\n\n const getUdpFieldOptionLabel = (option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n return `${option.name.replace(/([A-Z])/g, ' $1').trim()}*`; //required field\n }\n return `${option.name} - ${option.dataType}`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n const formattedFileTypeProperties = useMemo(() => {\n if (selectedFileType) {\n return JSON.parse(selectedFileType?.properties);\n }\n }, [selectedFileType]);\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ marginBottom: 20 }}>\n <AmbientStepper\n activeStep={activeStep}\n steps={['File', 'Domain', 'Field Mappings', 'Review']}\n orientation='vertical'\n />\n </div>\n {activeStep === 0 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileImportType'}\n name={'fileImportType'}\n label='File Type'\n onChange={(val) => setSelectedFileType(val)}\n options={allowedFileTypesData}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n value={selectedFileType}\n required\n />\n {selectedFileType && (\n <div style={{ marginTop: 5 }}>\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n </div>\n )}\n <Form onSubmit={handleUpdateFileProperties}>\n {formattedFileTypeProperties?.map((property) =>\n property?.options ? (\n <Field\n component={AmbientAutoComplete}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n options={property.options}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n ) : (\n <Field\n component={AmbientTextField}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n )\n )}\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n disabled={!fileObject}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 1 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'domain'}\n name={'domain'}\n label='Domain'\n onChange={(val) => setSelectedDomain(val)}\n options={filterCatalogObjectList}\n size='small'\n getOptionLabelFunction={getNameFormattedOptionLabel}\n value={selectedDomain}\n required\n />\n <div\n style={{ float: 'right', display: 'flex', gap: 8, marginTop: 8 }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev + 1)}\n color='secondary'\n disabled={!selectedDomain}\n >\n Next\n </FluentButton>\n </div>\n </>\n )}\n {activeStep === 2 && (\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>UDP Fields</Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n <Form\n onSubmit={handleUpdateFieldMapping}\n style={{ marginTop: -20 }}\n >\n {importHeaderData?.map((field, index) => (\n <div style={{ height: 42 }}>\n <div\n style={{ display: 'flex', flexDirection: 'row', gap: 10 }}\n >\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers ? 'index ' + index : field}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Field\n style={{ height: 30 }}\n component={AmbientAutoComplete}\n isMultiple={false}\n id={`udpFieldMapping${index}`}\n name={`udpFieldMapping${index}`}\n options={selectedDomain?.objectFieldInfo}\n size='small'\n getOptionLabelFunction={getUdpFieldOptionLabel}\n />\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n <div style={{ paddingTop: 20, textAlign: 'right', color: 'red' }}>\n {errorText}\n </div>\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n paddingTop: 16,\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 3 && (\n <Form onSubmit={handleCreateNewFieldMapping}>\n <Field\n component={AmbientTextField}\n id={`name`}\n name={`name`}\n label='Mapping Name'\n size='small'\n />\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n {'Create Mapping'}\n </SubmitButton>\n </FormButtons>\n </Form>\n )}\n </AmbientCard>\n {fileImportMappingObject?.mapping &&<div style={{ marginTop: 10 }}>\n <FileImportConfigCard\n fileMappingRecord={{\n mapping: fileImportMappingObject?.mapping,\n properties: fileImportMappingObject?.properties\n }}\n domain={selectedDomain?.name.replace(/([A-Z])/g, ' $1').trim()}\n />\n </div>}\n </>\n );\n};\n\nexport default FileImportMappingWizard;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport FileImportMappingWizard from './FileImportMappingWizard';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { ConfigService } from '../../configService';\n\nexport const ImportDataFromFileMapping = (props) => {\n const {onImportSuccess, onImportFail, verifyRequiredFields = true} = props\n const user = useUser();\n const [selectedFileMapping, setSelectedFileMapping] = useState();\n const [udpImportMappingData, setUdpImportMappingData] = useState();\n const [newFileMappingSidesheetOpen, setNewFileMappingSidesheetOpen] =\n useState(false);\n const [fileObject, setFileObject] = useState();\n const [isLoading, setIsLoading] = useState(false)\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const { data: udpFileImportMappingEntity } = usePromotedMethodEntity(\n 'UdpFileImportMapping',\n true\n );\n\n const executeImportDataFromFile = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `${selectedFileMapping?.objectInfoSanitizedName}/fileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n [selectedFileMapping]\n );\n\n const searchFileImportMappingData = useCallback(async () => {\n if (udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId) {\n const res = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (res?.data?.pageList.length > 0) {\n setUdpImportMappingData(res?.data?.pageList);\n }\n }\n }, [udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId]);\n\n useEffect(() => {\n searchFileImportMappingData();\n }, [searchFileImportMappingData]);\n\n const handleImportDataFromFile = useCallback(async () => {\n setIsLoading(true)\n const file = fileObject;\n const blob = new Blob([file], { type: file.type });\n const formData = new FormData();\n formData.append('file', blob, file.name);\n formData.append('tenantId', user?.currentTenantId);\n formData.append('name', selectedFileMapping.name);\n formData.append('objectInfoSanitizedName', selectedFileMapping.objectInfoSanitizedName);\n formData.append('fileImportType', selectedFileMapping.fileImportType);\n formData.append('mapping', selectedFileMapping.mapping);\n formData.append('properties', selectedFileMapping.properties);\n formData.append('id', selectedFileMapping.id);\n const response = await executeImportDataFromFile(formData).catch((res) => {\n setIsLoading(false)\n handleErrorSnackbar(res);\n onImportFail()\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Imported Data');\n setIsLoading(false)\n onImportSuccess && onImportSuccess()\n }\n\n }, [\n fileObject,\n selectedFileMapping,\n executeImportDataFromFile,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n onImportSuccess,\n onImportFail\n ]);\n\n const getFileMappingOptionlabel = (option) => {\n return `${option.name} (${option?.udpFileImportMappingUdpFileImportType?.extension})`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ display: 'flex' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileMapping'}\n name={'fileMapping'}\n label='File Mapping'\n onChange={(val) => setSelectedFileMapping(val)}\n options={udpImportMappingData}\n size='small'\n getOptionLabelFunction={getFileMappingOptionlabel}\n value={selectedFileMapping}\n required\n groupBy={(option) =>\n option?.udpFileImportMappingUdpObjectInfo?.sanitizedName\n }\n />\n </div>\n {selectedFileMapping && (\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n )}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: 5,\n float: 'right',\n marginTop: 10\n }}\n >\n <FluentButton\n onClick={() => setNewFileMappingSidesheetOpen(true)}\n variant='outlined'\n >\n Create New Mapping\n </FluentButton>\n <FluentButton\n variant='contained'\n color='secondary'\n onClick={handleImportDataFromFile}\n progress={isLoading}\n disabled={!fileObject}\n >\n Import Data\n </FluentButton>\n </div>\n <SideSheet\n title='Create New File Mapping'\n open={newFileMappingSidesheetOpen}\n onClose={() => setNewFileMappingSidesheetOpen(false)}\n width={'60%'}\n >\n <FileImportMappingWizard\n refetchMappings={searchFileImportMappingData}\n setNewFileMappingSidesheetOpen={setNewFileMappingSidesheetOpen}\n verifyRequiredFields={verifyRequiredFields}\n />\n </SideSheet>\n </AmbientCard>\n <div style={{ marginTop: 10 }}>\n <FileImportConfigCard fileMappingRecord={selectedFileMapping} domain={selectedFileMapping?.udpFileImportMappingUdpObjectInfo?.sanitizedName.replace(/([A-Z])/g, ' $1').trim()}/>\n </div>\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputsExample-
|
|
1
|
+
{"version":3,"file":"InputsExample-ClC-vFVK.js","names":["InputsExample","StencilInputsExample"],"sources":["../src/UI/demos/InputsExample.jsx"],"sourcesContent":["import React from 'react';\nimport { InputsExample as StencilInputsExample } from 'udp-react-stencil-component-library';\n// Extend JSX types for Stencil components\n\n\n\nexport const InputsExample = () => {\n\n\n\n\n return (\n\n <StencilInputsExample/>\n\n\n );\n};\n\nexport default InputsExample;\n"],"mappings":";;;;AAMA,MAAaA,wBAAsB;AAKjC,QAEI,oCAACC,oBAAsB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as ConfigService } from "./configService-C4uoG3wj.js";
|
|
2
2
|
import { t as useUser } from "./useUser-wpHGo6jU.js";
|
|
3
|
-
import { t as useAxiosGet } from "./useAxiosGet-
|
|
3
|
+
import { t as useAxiosGet } from "./useAxiosGet-vvPjwB4W.js";
|
|
4
4
|
import { t as amcharts_exports } from "./amcharts-ptK5Ggb0.js";
|
|
5
5
|
import React, { useMemo } from "react";
|
|
6
6
|
|
|
@@ -80,4 +80,4 @@ const InsightRenderer = (props) => {
|
|
|
80
80
|
|
|
81
81
|
//#endregion
|
|
82
82
|
export { InsightRenderer as t };
|
|
83
|
-
//# sourceMappingURL=InsightRenderer-
|
|
83
|
+
//# sourceMappingURL=InsightRenderer-UkS3B5zg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsightRenderer-
|
|
1
|
+
{"version":3,"file":"InsightRenderer-UkS3B5zg.js","names":["InsightRenderer: React.FC<InsightRendererProps>","properties: InsightTypeProperties","UdpCharts","kpis:\n | { value?: string; label?: string; active?: boolean }[]\n | undefined","kpiField: { operation?: string; property?: string }","dataConfig: { [key: string]: any } | null","dataMapping: {\n name: string;\n value: { name: string; operation: string | undefined };\n alias?: string;\n }[]"],"sources":["../src/UI/charts/InsightRenderer.tsx"],"sourcesContent":["import React, { useMemo, useState, useEffect } from 'react';\nimport * as UdpCharts from './amcharts';\nimport { Insight, InsightTypeField, InsightTypeProperties } from './types';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport QueryResult from '../../models/QueryResult';\nimport { ConfigService } from '../../configService';\nexport type UdpChart =\n | 'UdpBarChart'\n | 'UdpDonutChart'\n | 'UdpLineChart'\n | 'UdpDistributionChart';\nexport interface InsightRendererProps {\n insight: Insight | undefined;\n data: QueryResult | undefined;\n insightId: string | undefined;\n}\n\nconst capitilizeFirstLetter = (s: string): string =>\n s?.charAt?.(0)?.toUpperCase?.() + s?.slice?.(1);\nconst decapitilizeFirstLetter = (s: string): string =>\n s?.charAt?.(0)?.toLowerCase?.() + s?.slice?.(1);\n\nfunction getAggregateValue<T>(data: QueryResult | undefined, key: string): T {\n return data?.aggregateResults?.[0]?.[key] as T;\n}\n/**\n * InsightRenderer component\n *\n * This component is responsible for rendering insights based on the provided props.\n *\n * @prop {Insight} `insight` - The insight metadata\n * @prop {any} `data` - Search results associated with the insight\n * @prop {string} `insightId` - InsightId, if included the component will get the data from server\n * @returns {JSX.Element} - The rendered insight component.\n */\nexport const InsightRenderer: React.FC<InsightRendererProps> = (props: InsightRendererProps) => {\n const { insight: insightProp, data, insightId } = props;\n const user = useUser();\n const [{ data: loadedInsight }] = useAxiosGet(\n ConfigService.integrationV2ApiUrl,\n `Insight/${insightId}/Full`,\n {},\n !insightId || !user\n ) as unknown as [{ data: Insight }];\n\n // Use the insight passed in or the insightId\n const insight = useMemo(() => {\n if (!!insightId) return loadedInsight;\n else return insightProp;\n }, [loadedInsight, insightId, insightProp]);\n\n // determine chart component\n const Chart = useMemo(() => {\n if (!insight?.insightInsightType?.properties) return null;\n let properties: InsightTypeProperties;\n if (typeof insight?.insightInsightType?.properties === 'string') {\n properties = JSON.parse(\n insight?.insightInsightType?.properties as unknown as string\n ) as InsightTypeProperties;\n } else {\n properties = insight?.insightInsightType?.properties;\n }\n // @ts-ignore\n return UdpCharts?.[properties?.component];\n }, [insight?.insightInsightType]);\n\n const kpis:\n | { value?: string; label?: string; active?: boolean }[]\n | undefined = useMemo(() => {\n if (insight == null) return undefined;\n return insight?.insightInsightKpi?.map?.((kpi) => {\n const kpiField: { operation?: string; property?: string } =\n typeof kpi.field === 'object' ? kpi.field : JSON.parse(kpi.field);\n console.log(kpiField);\n return {\n label: kpi.label,\n active: kpi.active,\n value: getAggregateValue<string>(\n data,\n `${\n decapitilizeFirstLetter(kpiField.property ?? '') ?? ''\n }${capitilizeFirstLetter(kpiField.operation?.toLowerCase() ?? '')}`\n )\n };\n });\n }, [data, insight?.insightInsightKpi]);\n\n const dataConfig: { [key: string]: any } | null = useMemo(() => {\n if (insight == null) return null;\n const dataMapping: {\n name: string;\n value: { name: string; operation: string | undefined };\n alias?: string;\n }[] =\n typeof insight.dataMapping === 'object'\n ? insight.dataMapping\n : JSON.parse(insight.dataMapping ?? '{}');\n const dataFields: InsightTypeField[] =\n typeof insight.insightInsightType?.dataFields === 'object'\n ? insight.insightInsightType?.dataFields\n : JSON.parse(insight.insightInsightType?.dataFields ?? '{}');\n\n return dataFields?.reduce?.((value: { [key: string]: any }, field) => {\n const fieldValue = dataMapping?.find?.(\n (dm) => dm.name === field.name\n )?.value;\n if (fieldValue?.operation != undefined) {\n value[field.name] =\n decapitilizeFirstLetter(fieldValue?.name) + fieldValue.operation;\n } else {\n // @ts-ignore\n value[field.name] = fieldValue?.alias ?? fieldValue?.name ?? fieldValue;\n }\n\n return value;\n }, {});\n }, [insight?.dataMapping, insight?.insightInsightType]);\n const combinedData = useMemo(() => {\n if (data?.aggregateResults == null || data?.aggregateResults?.length === 0)\n return data?.pageList;\n return data?.pageList.map((page, i) => ({\n ...page,\n ...data?.aggregateResults?.[i]\n }));\n }, [data]);\n if (Chart == null) return null;\n return (\n <Chart\n data={combinedData}\n title={insight?.title}\n subheader={insight?.subheader}\n {...dataConfig}\n kpis={kpis?.filter((kpi) => kpi.active)}\n />\n );\n};\n"],"mappings":";;;;;;;AAkBA,MAAM,yBAAyB,MAC7B,GAAG,SAAS,EAAE,EAAE,eAAe,GAAG,GAAG,QAAQ,EAAE;AACjD,MAAM,2BAA2B,MAC/B,GAAG,SAAS,EAAE,EAAE,eAAe,GAAG,GAAG,QAAQ,EAAE;AAEjD,SAAS,kBAAqB,MAA+B,KAAgB;AAC3E,QAAO,MAAM,mBAAmB,KAAK;;;;;;;;;;;;AAYvC,MAAaA,mBAAmD,UAAgC;CAC9F,MAAM,EAAE,SAAS,aAAa,MAAM,cAAc;CAClD,MAAM,OAAO,SAAS;CACtB,MAAM,CAAC,EAAE,MAAM,mBAAmB,YAChC,cAAc,qBACd,WAAW,UAAU,QACrB,EAAE,EACF,CAAC,aAAa,CAAC,KAChB;CAGD,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,CAAC,UAAW,QAAO;MACnB,QAAO;IACX;EAAC;EAAe;EAAW;EAAY,CAAC;CAG3C,MAAM,QAAQ,cAAc;AAC1B,MAAI,CAAC,SAAS,oBAAoB,WAAY,QAAO;EACrD,IAAIC;AACJ,MAAI,OAAO,SAAS,oBAAoB,eAAe,SACrD,cAAa,KAAK,MAChB,SAAS,oBAAoB,WAC9B;MAED,cAAa,SAAS,oBAAoB;AAG5C,SAAOC,mBAAY,YAAY;IAC9B,CAAC,SAAS,mBAAmB,CAAC;CAEjC,MAAMC,OAEU,cAAc;AAC5B,MAAI,WAAW,KAAM,QAAO;AAC5B,SAAO,SAAS,mBAAmB,OAAO,QAAQ;GAChD,MAAMC,WACJ,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ,KAAK,MAAM,IAAI,MAAM;AACnE,WAAQ,IAAI,SAAS;AACrB,UAAO;IACL,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,OAAO,kBACL,MACA,GACE,wBAAwB,SAAS,YAAY,GAAG,IAAI,KACnD,sBAAsB,SAAS,WAAW,aAAa,IAAI,GAAG,GAClE;IACF;IACD;IACD,CAAC,MAAM,SAAS,kBAAkB,CAAC;CAEtC,MAAMC,aAA4C,cAAc;AAC9D,MAAI,WAAW,KAAM,QAAO;EAC5B,MAAMC,cAKJ,OAAO,QAAQ,gBAAgB,WAC3B,QAAQ,cACR,KAAK,MAAM,QAAQ,eAAe,KAAK;AAM7C,UAJE,OAAO,QAAQ,oBAAoB,eAAe,WAC9C,QAAQ,oBAAoB,aAC5B,KAAK,MAAM,QAAQ,oBAAoB,cAAc,KAAK,GAE7C,UAAU,OAA+B,UAAU;GACpE,MAAM,aAAa,aAAa,QAC7B,OAAO,GAAG,SAAS,MAAM,KAC3B,EAAE;AACH,OAAI,YAAY,aAAa,OAC3B,OAAM,MAAM,QACV,wBAAwB,YAAY,KAAK,GAAG,WAAW;OAGzD,OAAM,MAAM,QAAQ,YAAY,SAAS,YAAY,QAAQ;AAG/D,UAAO;KACN,EAAE,CAAC;IACL,CAAC,SAAS,aAAa,SAAS,mBAAmB,CAAC;CACvD,MAAM,eAAe,cAAc;AACjC,MAAI,MAAM,oBAAoB,QAAQ,MAAM,kBAAkB,WAAW,EACvE,QAAO,MAAM;AACf,SAAO,MAAM,SAAS,KAAK,MAAM,OAAO;GACtC,GAAG;GACH,GAAG,MAAM,mBAAmB;GAC7B,EAAE;IACF,CAAC,KAAK,CAAC;AACV,KAAI,SAAS,KAAM,QAAO;AAC1B,QACE,oCAAC;EACC,MAAM;EACN,OAAO,SAAS;EAChB,WAAW,SAAS;EACpB,GAAI;EACJ,MAAM,MAAM,QAAQ,QAAQ,IAAI,OAAO;GACvC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as FluentIconButton } from "./FluentIconButton-Dc95mE3v.js";
|
|
2
2
|
import { t as StandardTitle } from "./StandardTitle-DJ9zcNBA.js";
|
|
3
3
|
import { t as AmbientCard } from "./AmbientCard-DK9abODq.js";
|
|
4
|
-
import { t as AmbientGridTemplate } from "./AmbientGridTemplate-
|
|
4
|
+
import { t as AmbientGridTemplate } from "./AmbientGridTemplate-BecuOnHe.js";
|
|
5
5
|
import { t as FluentTextField } from "./FluentTextField-CXvZawOG.js";
|
|
6
6
|
import { t as useAuthedUser } from "./useAuthedUser-CN4neRNZ.js";
|
|
7
7
|
import { n as ListView_default, t as ActionsRenderer_default } from "./ActionsRenderer-B7z5hXrD.js";
|
|
@@ -510,4 +510,4 @@ const MapLayout = (props) => {
|
|
|
510
510
|
|
|
511
511
|
//#endregion
|
|
512
512
|
export { MapLayout as t };
|
|
513
|
-
//# sourceMappingURL=MapLayout-
|
|
513
|
+
//# sourceMappingURL=MapLayout-D6hNVarS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapLayout-D_OmMd5_.js","names":["data","ListView","ActionsRenderer"],"sources":["../src/UI/mapLayout/MapLayout.jsx"],"sourcesContent":["import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport { Fill, Style, Stroke, Icon, Circle } from 'ol/style';\nimport { transform } from 'ol/proj';\nimport { makeStyles, Grid, lighten } from '@material-ui/core';\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport proj4 from 'proj4';\nimport { register } from 'ol/proj/proj4';\nimport { isArray, isObject, startCase } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport TruckIcon from '../../assets/unityIcons/TruckIcon.svg';\nimport ListView from './ui/ListView';\nimport ActionsRenderer from './ui/ActionsRenderer';\nimport { FluentTextField } from '../inputs/textField/FluentTextField';\nimport { AmbientGridTemplate } from '../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { useAuthedUser } from '../../utilities/auth/useAuthedUser';\nimport { FluentIconButton } from '../inputs/buttons/FluentIconButton';\nimport { StandardTitle } from '../dataDisplay/typography/StandardTitle';\nimport { AmbientCard } from '../surfaces/cards/AmbientCard';\nimport { getLayer, generateGeoJsonList } from './utilities/MapUtilities';\nimport { UdpMapComponent } from '../maps/UdpMapComponent';\nimport { UdpMapToolbar } from '../maps/UdpMapToolbar';\n\nconst useStyles = makeStyles((theme) => ({\n fullHeight: {\n height: '73vh',\n backgroundColor: lighten(theme.palette.primary.light, 0.7),\n overflow: 'auto'\n },\n contentWrapper: {\n display: 'flex'\n },\n detailSheetHeader: {\n display: 'flex',\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(1),\n alignItems: 'center',\n gap: theme.spacing(1.5)\n },\n detailSheetBody: {\n padding: theme.spacing(2)\n },\n detailTitle: {\n marginTop: 0\n },\n leftColumn: {\n overflow: 'auto',\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n },\n listViewWrapper: {\n position: 'relative'\n },\n zoomControl: {\n left: 'auto',\n right: theme.spacing(0.8),\n top: theme.spacing(5)\n }\n}));\n\nconst styles = {\n Point: [\n new Style({\n image: new Icon({\n anchor: [0.17, 48],\n anchorXUnits: 'fraction',\n anchorYUnits: 'pixels',\n src: TruckIcon,\n scale: 0.3\n }),\n zIndex: 1\n }),\n new Style({\n image: new Circle({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 1\n }),\n fill: new Fill({\n color: '#FFFFFF'\n }),\n radius: 20,\n scale: 1.1\n }),\n zIndex: 0\n })\n ],\n LineString: new Style({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 4\n }),\n zIndex: 0\n })\n};\n\nexport const MapLayout = (props) => {\n const {\n data,\n initialSelectedLayers,\n shellContext,\n sideSheetTitle,\n cardConfig,\n noRightPanelPadding = false,\n isGeoJsonFormat = true,\n geoJsonMappingConfig,\n position = 'default',\n showMap = true,\n showList,\n showGrid = true,\n //inject data\n getSelectedFeatures,\n getSelectedLayers,\n getSelectedViewItemData,\n rightSectionPanel,\n rightSectionPanelTitle,\n rightSectionPanelState,\n setRightSectionPanelState,\n overrideDetailRightSection = false,\n //toolbar\n layerOptions,\n layerKeySeparator = '',\n statisticsList,\n hideZeroValueStats,\n defaultTileOptionName,\n hideTileSelection,\n filterPanel,\n filterCallback,\n selectedFeaturesActionPanel,\n refreshEvent,\n refreshButtonTooltip,\n readOnlyMap,\n addFeaturePanelConfig,\n //list view props\n noWrapPrimaryText,\n hideListView = false,\n listFilter,\n listViewCardConfig,\n listViewDetailsEvent,\n listViewChipConfig,\n //popover card props\n popoverDetailsEvent,\n popoverPrimaryActions,\n popoverMoreIconButtonActions,\n getMessagePopover,\n getMessageIconPopover,\n hideMessageIconPopover,\n popoverWidth,\n enableViewFeature = true,\n enableDeleteFeature,\n handleDeleteFeature,\n enableEditFeature,\n handleEditFeature,\n //map props\n mapTitle = '',\n getMapFeatureStyles,\n getSelectedFeatureStyles,\n tileLayersOptions,\n imageLayersOptions,\n mapZoom,\n mapCenter,\n mapProjection,\n addInteractions,\n selectedPin,\n mapHeight = '45vh',\n addressBar,\n mapDataProjection,\n crs,\n layerKeys,\n mapFilter,\n showZoomControl,\n readOnlyLayers,\n layerRoles,\n getVectorLayerSources,\n enableAddNewFeature,\n addMultipleFeatures = false,\n enableSplitFeature,\n handleAddNewFeatures,\n handleSplitFeature,\n handleGetZoomExtent,\n minZoom,\n maxZoom,\n //grid props\n gridTitle,\n columnDefs,\n groupingData,\n frameworkComponents,\n primaryActionButton,\n loading,\n rowNodeIdName,\n gridHeight = '50vh',\n paginationPageSize,\n onSearch,\n onRowSelected,\n rowModelType,\n api,\n columnApi,\n gridReady,\n onCellClicked,\n gridFilter,\n ...otherGridProps\n } = props;\n const [selectedFeatureProperties, setSelectedFeatureProperties] = useState();\n const [showDetails, setShowDetails] = useState(false);\n const [selectedItemData, setSelectedItemData] = useState();\n const [definedProj, setDefinedProj] = useState(false);\n const [enableDragBox, setEnableDragBox] = useState(false);\n const [dataUpdateCount, setDataUpdateCount] = useState(0);\n const [map, setMap] = useState(null);\n const [filteredLayerOptions, setFilterLayerOptions] = useState();\n const [bulkSelectionActive, setBulkSelectionActive] = useState(false);\n const [splitActive, setSplitActive] = useState(false);\n const [selectedFeatureCoordinates, setSelectedFeatureCoordinates] =\n useState();\n const [addActive, setAddActive] = useState(false);\n const [selectedFeatureIdExternal, setSelectedFeatureIdExternal] = useState();\n const [currentCenter, setCurrentCenter] = useState(mapCenter ?? [0, 0]);\n const [selectedLayers, setSelectedLayers] = useState([]);\n\n const classes = useStyles();\n const user = useAuthedUser();\n const { t } = useTranslation();\n\n useEffect(() => {\n if (crs?.length > 0) {\n proj4.defs(crs);\n register(proj4);\n setDefinedProj(true);\n }\n }, [crs]);\n\n useEffect(() => {\n if (getSelectedLayers) {\n getSelectedLayers(selectedLayers);\n }\n }, [getSelectedLayers, selectedLayers]);\n\n useEffect(() => {\n if (getSelectedViewItemData) {\n getSelectedViewItemData(selectedItemData);\n }\n }, [getSelectedViewItemData, selectedItemData]);\n\n //solve refreshing map data outside map layout\n useEffect(() => {\n if (!data) return;\n\n if (dataUpdateCount === 0) {\n setDataUpdateCount(dataUpdateCount + 1);\n }\n //if the data is updated, force the popover to close\n if (dataUpdateCount === 1) {\n setSelectedFeatureProperties(null);\n }\n }, [data, dataUpdateCount]);\n\n //data\n const filteredData = useMemo(() => {\n if (!data) return [];\n\n const formattedData = isGeoJsonFormat\n ? data\n : generateGeoJsonList(data, geoJsonMappingConfig);\n\n //this will return an array of features in geojson format\n if (filterPanel && filterCallback) {\n return filterCallback(formattedData);\n }\n\n return formattedData;\n }, [\n data,\n filterCallback,\n filterPanel,\n geoJsonMappingConfig,\n isGeoJsonFormat\n ]);\n\n const gridData = useMemo(() => {\n return filteredData\n ?.filter((obj) => {\n const layerKey = getLayer(layerKeys, layerKeySeparator, obj);\n\n if (layerRoles?.[layerKey]) {\n return layerRoles[layerKey]?.some((roleId) =>\n user.roleIds?.includes(roleId)\n );\n }\n return true;\n })\n .map((obj) => ({\n id: obj.id,\n ...obj.properties\n }));\n }, [filteredData, layerKeySeparator, layerKeys, layerRoles, user.roleIds]);\n\n const filteredGridData = useMemo(() => {\n if (gridFilter) {\n return gridFilter(gridData);\n }\n\n return gridData;\n }, [gridData, gridFilter]);\n\n const filteredListData = useMemo(() => {\n if (listFilter) {\n return listFilter(gridData);\n }\n\n return gridData;\n }, [gridData, listFilter]);\n\n useEffect(() => {\n //If there are projections need to be defined, but it isn't defined yet. Then, return to prevent errors in transform().\n if (crs?.length > 0 && !definedProj) return;\n\n if (\n filteredData?.[0]?.geometry?.coordinates &&\n mapProjection &&\n mapDataProjection\n ) {\n const coordinates = isArray(filteredData?.[0]?.geometry?.coordinates[0])\n ? filteredData?.[0]?.geometry?.coordinates[0]\n : filteredData?.[0]?.geometry?.coordinates;\n const newCenter = transform(\n coordinates,\n mapDataProjection,\n mapProjection\n );\n setCurrentCenter(newCenter);\n }\n }, [filteredData, mapDataProjection, mapProjection, definedProj, crs]);\n\n //Default getStyles for map features\n const getStyles = useCallback((feature) => {\n const geometryType = feature.getGeometry().getType();\n return styles[geometryType] ?? new Style();\n }, []);\n\n const handleViewDetailsFromPopover = useCallback(\n (data) => {\n const featureProperties = data?.selectedFeature?.getProperties();\n\n if (popoverDetailsEvent) {\n popoverDetailsEvent(featureProperties);\n return;\n }\n\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n\n setShowDetails(true);\n\n setSelectedItemData(featureProperties);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [popoverDetailsEvent, setRightSectionPanelState, shellContext]\n );\n\n const handleCloseDetailSheet = useCallback(() => {\n setShowDetails(false);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(null);\n }, [setRightSectionPanelState]);\n\n const handleViewDetailsFromList = useCallback(\n (data) => {\n setShowDetails(true);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(data);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [setRightSectionPanelState, shellContext]\n );\n\n const itemDetails = useMemo(() => {\n if (\n selectedItemData &&\n !overrideDetailRightSection &&\n !rightSectionPanelState\n ) {\n return Object.entries(selectedItemData)\n .filter(\n ([key, value]) =>\n 'geometry' !== key && !isObject(value) && !isArray(value)\n )\n .map(([key, value]) => {\n return (\n <FluentTextField\n label={startCase(key)}\n value={value}\n InputProps={{\n readOnly: true\n }}\n />\n );\n });\n }\n\n return;\n }, [overrideDetailRightSection, rightSectionPanelState, selectedItemData]);\n\n const gridColumnDefinition = useMemo(() => {\n if (!columnDefs) return;\n\n //check if there's actions renderer to use. Otherwise, using the default actions renderer\n if (frameworkComponents?.actionsRenderer) {\n return columnDefs;\n } else {\n return [\n ...columnDefs,\n {\n headerName: t('Actions'),\n field: 'actions',\n suppressSizeToFit: true,\n minWidth: 100,\n maxWidth: 125,\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n openView: (data) => handleViewDetailsFromList(data)\n },\n sortable: false\n }\n ];\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnDefs, frameworkComponents]);\n\n const detailSheetHeight = useMemo(() => {\n if (!showGrid) {\n return '73vh';\n } else if (showGrid && !showMap) {\n return `calc(67vh + 6vh)`;\n } else {\n return `calc(${mapHeight} + ${gridHeight} + 6vh)`;\n }\n }, [gridHeight, mapHeight, showGrid, showMap]);\n\n const handleSelectLayers = (e) => {\n setSelectedLayers(e);\n };\n\n const handleSelectMarker = useCallback((data) => {\n setSelectedFeatureIdExternal(data?.id);\n }, []);\n\n const handleOnCellClicked = useCallback(\n (params) => {\n if (onCellClicked) {\n onCellClicked(params);\n }\n\n if (!params?.node?.group && params?.colDef?.field !== 'actions') {\n handleSelectMarker(params?.data);\n }\n },\n [handleSelectMarker, onCellClicked]\n );\n\n const listView = useMemo(() => {\n if (hideListView) return;\n\n return (\n <ListView\n data={filteredListData ?? []}\n listViewConfig={listViewCardConfig ?? cardConfig}\n noWrapPrimaryText={noWrapPrimaryText}\n viewEvent={listViewDetailsEvent ?? handleViewDetailsFromList}\n showMarkerEvent={handleSelectMarker}\n chipConfig={listViewChipConfig}\n />\n );\n }, [\n cardConfig,\n filteredListData,\n handleSelectMarker,\n handleViewDetailsFromList,\n hideListView,\n listViewCardConfig,\n listViewChipConfig,\n listViewDetailsEvent,\n noWrapPrimaryText\n ]);\n\n const handleSetSelectedFeatureProperties = useCallback((currentFeature) => {\n if (currentFeature) {\n let featureProperties = currentFeature?.getProperties();\n\n setSelectedFeatureCoordinates(\n currentFeature.getGeometry().getCoordinates()\n );\n\n setSelectedFeatureProperties(featureProperties);\n }\n }, []);\n\n const handleCloseFeaturePopover = useCallback(() => {\n setSelectedFeatureIdExternal(null);\n }, []);\n\n const handleSetMapComponent = useCallback((value) => {\n setMap(value);\n }, []);\n\n const mapComponent = useMemo(() => {\n return (\n <div>\n <Grid container>\n <Grid\n item\n xs={3}\n style={{\n display: !hideListView && showList ? 'block' : 'none'\n }}\n >\n <div className={clsx(classes.fullHeight, classes.listViewWrapper)}>\n {listView}\n </div>\n </Grid>\n <Grid item xs={showList ? 9 : 12}>\n <UdpMapComponent\n map={map}\n handleSetMapComponent={handleSetMapComponent}\n data={data}\n isGeoJsonFormat={isGeoJsonFormat}\n geoJsonMappingConfig={geoJsonMappingConfig}\n enableZoom={showZoomControl}\n mapZoom={mapZoom}\n mapCenter={currentCenter}\n mapHeight={mapHeight}\n crs={crs}\n mapProjection={mapProjection}\n mapDataProjection={mapDataProjection}\n getFilteredMapData={mapFilter}\n getVectorLayerSources={getVectorLayerSources}\n getFeatureStyles={getMapFeatureStyles ?? getStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n filterLayersByRole={layerRoles?.length > 0}\n layerKeys={layerKeys}\n layerKeySeparator={layerKeySeparator}\n user={user}\n layerRoles={layerRoles}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetFilteredLayerOptionsByRole={setFilterLayerOptions}\n enableViewFeature={enableViewFeature}\n handleViewFeature={handleViewDetailsFromPopover}\n bulkSelectionActive={bulkSelectionActive}\n splitActive={splitActive}\n enableDragBox={enableDragBox}\n selectedFeatureCoordinates={selectedFeatureCoordinates}\n selectedFeatureProperties={selectedFeatureProperties}\n handleSetSelectedFeatureProperties={\n handleSetSelectedFeatureProperties\n }\n enableAddNewFeature={addActive}\n readOnlyLayers={readOnlyLayers}\n selectedFeatureIdExternal={selectedFeatureIdExternal}\n additionalOnclosePopover={handleCloseFeaturePopover}\n popoverPrimaryActions={popoverPrimaryActions}\n popoverMoreIconButtonActions={popoverMoreIconButtonActions}\n getMessagePopover={getMessagePopover}\n getMessageIconPopover={getMessageIconPopover}\n hideMessageIconPopover={hideMessageIconPopover}\n popoverCardConfig={cardConfig}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n handleGetZoomExtent={handleGetZoomExtent}\n minZoom={minZoom}\n maxZoom={maxZoom}\n />\n </Grid>\n </Grid>\n </div>\n );\n }, [\n addActive,\n bulkSelectionActive,\n cardConfig,\n classes.fullHeight,\n classes.listViewWrapper,\n crs,\n currentCenter,\n data,\n defaultTileOptionName,\n enableDragBox,\n enableViewFeature,\n filterCallback,\n filterPanel,\n filteredLayerOptions,\n geoJsonMappingConfig,\n getMapFeatureStyles,\n getMessageIconPopover,\n getMessagePopover,\n getSelectedFeatureStyles,\n getSelectedFeatures,\n getStyles,\n getVectorLayerSources,\n handleCloseFeaturePopover,\n handleGetZoomExtent,\n handleSetMapComponent,\n handleSetSelectedFeatureProperties,\n handleViewDetailsFromPopover,\n hideListView,\n hideMessageIconPopover,\n hideTileSelection,\n initialSelectedLayers,\n isGeoJsonFormat,\n layerKeySeparator,\n layerKeys,\n layerOptions,\n layerRoles,\n listView,\n map,\n mapDataProjection,\n mapFilter,\n mapHeight,\n mapProjection,\n mapZoom,\n maxZoom,\n minZoom,\n popoverMoreIconButtonActions,\n popoverPrimaryActions,\n readOnlyLayers,\n selectedFeatureCoordinates,\n selectedFeatureIdExternal,\n selectedFeatureProperties,\n selectedFeaturesActionPanel,\n selectedLayers,\n showList,\n showZoomControl,\n splitActive,\n tileLayersOptions,\n user\n ]);\n\n const gridComponent = useMemo(() => {\n return (\n <div>\n <AmbientGridTemplate\n title={gridTitle}\n data={filteredGridData}\n columnDefs={gridColumnDefinition}\n groupingData={groupingData}\n frameworkComponents={{\n actionsRenderer: ActionsRenderer,\n ...frameworkComponents\n }}\n primaryActionButton={primaryActionButton}\n loading={loading}\n rowNodeIdName={rowNodeIdName}\n height={showGrid && !showMap ? '67vh' : gridHeight}\n paginationPageSize={paginationPageSize}\n onSearch={onSearch}\n onRowSelected={onRowSelected}\n rowModelType={rowModelType}\n api={api}\n columnApi={columnApi}\n gridReady={gridReady}\n dynamicSizing\n onCellClicked={handleOnCellClicked}\n {...otherGridProps}\n />\n </div>\n );\n }, [\n api,\n columnApi,\n filteredGridData,\n frameworkComponents,\n gridColumnDefinition,\n gridHeight,\n gridReady,\n gridTitle,\n groupingData,\n handleOnCellClicked,\n loading,\n onRowSelected,\n onSearch,\n otherGridProps,\n paginationPageSize,\n primaryActionButton,\n rowModelType,\n rowNodeIdName,\n showGrid,\n showMap\n ]);\n\n const mapGrid = useMemo(() => {\n if (position === 'gridOnTop') {\n return (\n <div>\n {showGrid && gridComponent}\n {showMap && mapComponent}\n </div>\n );\n }\n return (\n <div>\n {showMap && mapComponent}\n {showGrid && gridComponent}\n </div>\n );\n }, [gridComponent, mapComponent, position, showGrid, showMap]);\n\n return (\n <div>\n <UdpMapToolbar\n map={map}\n mapTitle={mapTitle}\n mapProjection={mapProjection}\n getFeatureStyles={getMapFeatureStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n handleSetSelectedFeatureOnSelect={getSelectedViewItemData}\n handleRefresh={refreshEvent}\n refreshButtonTooltip={refreshButtonTooltip}\n readOnlyMap={readOnlyMap}\n enableAdd={enableAddNewFeature}\n handleAddNewFeatures={handleAddNewFeatures}\n addMultipleFeatures={addMultipleFeatures}\n enableSplitFeature={enableSplitFeature}\n handleSplitFeature={handleSplitFeature}\n handleSetSelectedFeatureProperties={handleSetSelectedFeatureProperties}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetBulkSelectionActive={setBulkSelectionActive}\n enableDragBox={enableDragBox}\n handleSetEnableDragBox={setEnableDragBox}\n splitActive={splitActive}\n handleSetSplitActive={setSplitActive}\n enableAddNewFeature={addActive}\n handleEnableAddNewFeature={setAddActive}\n readOnlyLayers={readOnlyLayers}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n addFeaturePanelConfig={addFeaturePanelConfig}\n />\n <Grid container>\n <Grid\n item\n {...(showDetails || rightSectionPanelState\n ? { xs: 7, sm: 9 }\n : { xs: 12 })}\n >\n {mapGrid}\n </Grid>\n {(showDetails || rightSectionPanelState) && (\n <Grid\n item\n xs={5}\n sm={3}\n className={classes.leftColumn}\n style={{ maxHeight: detailSheetHeight }}\n >\n <div className={classes.detailSheetHeader}>\n <FluentIconButton\n onClick={handleCloseDetailSheet}\n icon={ChromeCloseIcon}\n />\n <StandardTitle className={classes.detailTitle}>\n {rightSectionPanelTitle ?? t('Details')}\n </StandardTitle>\n </div>\n <div\n className={noRightPanelPadding ? null : classes.detailSheetBody}\n >\n {rightSectionPanel &&\n (rightSectionPanelState ||\n (showDetails && overrideDetailRightSection)) &&\n rightSectionPanel}\n {showDetails && itemDetails && (\n <AmbientCard fullWidth>{itemDetails}</AmbientCard>\n )}\n </div>\n </Grid>\n )}\n </Grid>\n </div>\n );\n};\n"],"mappings":"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ACvB,iCAAiC;GACjC,uCAAuC;GACvC,oBAAoB,YAAY,SAAS;GAC9B;GACQ;GACb;GACM;GACZ,4BAA4B;GAC5B,qCAAqC;GAClB;GACnB,mBAAmB;GACE;GACR;GACE;GACa;GACD;GAEzB;GAEF,qBAAqB;GACL;GACW;GAC3B,0BAA0B;GACH;GACO;GACX;GACI;GACC;GACxB,mBAAmB;GACH;GAChB,yBAAyB;GACJ;GACZ;GACA;IACT,CACG,CACF,CACH;IAEP;EACD;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,gBAAgB,cAAc;AAClC,SACE,oCAAC,aACC,oCAAC;GACC,OAAO;GACP,MAAM;GACN,YAAY;GACE;GACd,qBAAqB;IACnB,iBAAiBC;IACjB,GAAG;IACJ;GACoB;GACZ;GACM;GACf,QAAQ,YAAY,CAAC,UAAU,SAAS;GACpB;GACV;GACK;GACD;GACT;GACM;GACA;GACX;GACA,eAAe;GACf,GAAI;IACJ,CACE;IAEP;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,UAAU,cAAc;AAC5B,MAAI,aAAa,YACf,QACE,oCAAC,aACE,YAAY,eACZ,WAAW,aACR;AAGV,SACE,oCAAC,aACE,WAAW,cACX,YAAY,cACT;IAEP;EAAC;EAAe;EAAc;EAAU;EAAU;EAAQ,CAAC;AAE9D,QACE,oCAAC,aACC,oCAAC;EACM;EACK;EACK;EACf,kBAAkB;EACQ;EACb;EACb,qBAAqB;EACrB,qBAAqB,CAAC;EACH;EACI;EACT;EACS;EACvB,iCAAiC;EACjC,uCAAuC;EACvC,kCAAkC;EAClC,eAAe;EACO;EACT;EACb,WAAW;EACW;EACD;EACD;EACA;EACgB;EACpC,4BAA4B;EAC5B,8BAA8B;EACf;EACf,wBAAwB;EACX;EACb,sBAAsB;EACtB,qBAAqB;EACrB,2BAA2B;EACX;EACA;EAChB,yBAAyB;EACF;GACvB,EACF,oCAAC,QAAK,mBACJ,oCAAC;EACC;EACA,GAAK,eAAe,yBAChB;GAAE,IAAI;GAAG,IAAI;GAAG,GAChB,EAAE,IAAI,IAAI;IAEb,QACI,GACL,eAAe,2BACf,oCAAC;EACC;EACA,IAAI;EACJ,IAAI;EACJ,WAAW,QAAQ;EACnB,OAAO,EAAE,WAAW,mBAAmB;IAEvC,oCAAC,SAAI,WAAW,QAAQ,qBACtB,oCAAC;EACC,SAAS;EACT,MAAM;GACN,EACF,oCAAC,iBAAc,WAAW,QAAQ,eAC/B,0BAA0B,EAAE,UAAU,CACzB,CACZ,EACN,oCAAC,SACC,WAAW,sBAAsB,OAAO,QAAQ,mBAE/C,sBACE,0BACE,eAAe,+BAClB,mBACD,eAAe,eACd,oCAAC,eAAY,mBAAW,YAA0B,CAEhD,CACD,CAEJ,CACH"}
|
|
1
|
+
{"version":3,"file":"MapLayout-D6hNVarS.js","names":["data","ListView","ActionsRenderer"],"sources":["../src/UI/mapLayout/MapLayout.jsx"],"sourcesContent":["import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport { Fill, Style, Stroke, Icon, Circle } from 'ol/style';\nimport { transform } from 'ol/proj';\nimport { makeStyles, Grid, lighten } from '@material-ui/core';\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport proj4 from 'proj4';\nimport { register } from 'ol/proj/proj4';\nimport { isArray, isObject, startCase } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport TruckIcon from '../../assets/unityIcons/TruckIcon.svg';\nimport ListView from './ui/ListView';\nimport ActionsRenderer from './ui/ActionsRenderer';\nimport { FluentTextField } from '../inputs/textField/FluentTextField';\nimport { AmbientGridTemplate } from '../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { useAuthedUser } from '../../utilities/auth/useAuthedUser';\nimport { FluentIconButton } from '../inputs/buttons/FluentIconButton';\nimport { StandardTitle } from '../dataDisplay/typography/StandardTitle';\nimport { AmbientCard } from '../surfaces/cards/AmbientCard';\nimport { getLayer, generateGeoJsonList } from './utilities/MapUtilities';\nimport { UdpMapComponent } from '../maps/UdpMapComponent';\nimport { UdpMapToolbar } from '../maps/UdpMapToolbar';\n\nconst useStyles = makeStyles((theme) => ({\n fullHeight: {\n height: '73vh',\n backgroundColor: lighten(theme.palette.primary.light, 0.7),\n overflow: 'auto'\n },\n contentWrapper: {\n display: 'flex'\n },\n detailSheetHeader: {\n display: 'flex',\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(1),\n alignItems: 'center',\n gap: theme.spacing(1.5)\n },\n detailSheetBody: {\n padding: theme.spacing(2)\n },\n detailTitle: {\n marginTop: 0\n },\n leftColumn: {\n overflow: 'auto',\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n },\n listViewWrapper: {\n position: 'relative'\n },\n zoomControl: {\n left: 'auto',\n right: theme.spacing(0.8),\n top: theme.spacing(5)\n }\n}));\n\nconst styles = {\n Point: [\n new Style({\n image: new Icon({\n anchor: [0.17, 48],\n anchorXUnits: 'fraction',\n anchorYUnits: 'pixels',\n src: TruckIcon,\n scale: 0.3\n }),\n zIndex: 1\n }),\n new Style({\n image: new Circle({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 1\n }),\n fill: new Fill({\n color: '#FFFFFF'\n }),\n radius: 20,\n scale: 1.1\n }),\n zIndex: 0\n })\n ],\n LineString: new Style({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 4\n }),\n zIndex: 0\n })\n};\n\nexport const MapLayout = (props) => {\n const {\n data,\n initialSelectedLayers,\n shellContext,\n sideSheetTitle,\n cardConfig,\n noRightPanelPadding = false,\n isGeoJsonFormat = true,\n geoJsonMappingConfig,\n position = 'default',\n showMap = true,\n showList,\n showGrid = true,\n //inject data\n getSelectedFeatures,\n getSelectedLayers,\n getSelectedViewItemData,\n rightSectionPanel,\n rightSectionPanelTitle,\n rightSectionPanelState,\n setRightSectionPanelState,\n overrideDetailRightSection = false,\n //toolbar\n layerOptions,\n layerKeySeparator = '',\n statisticsList,\n hideZeroValueStats,\n defaultTileOptionName,\n hideTileSelection,\n filterPanel,\n filterCallback,\n selectedFeaturesActionPanel,\n refreshEvent,\n refreshButtonTooltip,\n readOnlyMap,\n addFeaturePanelConfig,\n //list view props\n noWrapPrimaryText,\n hideListView = false,\n listFilter,\n listViewCardConfig,\n listViewDetailsEvent,\n listViewChipConfig,\n //popover card props\n popoverDetailsEvent,\n popoverPrimaryActions,\n popoverMoreIconButtonActions,\n getMessagePopover,\n getMessageIconPopover,\n hideMessageIconPopover,\n popoverWidth,\n enableViewFeature = true,\n enableDeleteFeature,\n handleDeleteFeature,\n enableEditFeature,\n handleEditFeature,\n //map props\n mapTitle = '',\n getMapFeatureStyles,\n getSelectedFeatureStyles,\n tileLayersOptions,\n imageLayersOptions,\n mapZoom,\n mapCenter,\n mapProjection,\n addInteractions,\n selectedPin,\n mapHeight = '45vh',\n addressBar,\n mapDataProjection,\n crs,\n layerKeys,\n mapFilter,\n showZoomControl,\n readOnlyLayers,\n layerRoles,\n getVectorLayerSources,\n enableAddNewFeature,\n addMultipleFeatures = false,\n enableSplitFeature,\n handleAddNewFeatures,\n handleSplitFeature,\n handleGetZoomExtent,\n minZoom,\n maxZoom,\n //grid props\n gridTitle,\n columnDefs,\n groupingData,\n frameworkComponents,\n primaryActionButton,\n loading,\n rowNodeIdName,\n gridHeight = '50vh',\n paginationPageSize,\n onSearch,\n onRowSelected,\n rowModelType,\n api,\n columnApi,\n gridReady,\n onCellClicked,\n gridFilter,\n ...otherGridProps\n } = props;\n const [selectedFeatureProperties, setSelectedFeatureProperties] = useState();\n const [showDetails, setShowDetails] = useState(false);\n const [selectedItemData, setSelectedItemData] = useState();\n const [definedProj, setDefinedProj] = useState(false);\n const [enableDragBox, setEnableDragBox] = useState(false);\n const [dataUpdateCount, setDataUpdateCount] = useState(0);\n const [map, setMap] = useState(null);\n const [filteredLayerOptions, setFilterLayerOptions] = useState();\n const [bulkSelectionActive, setBulkSelectionActive] = useState(false);\n const [splitActive, setSplitActive] = useState(false);\n const [selectedFeatureCoordinates, setSelectedFeatureCoordinates] =\n useState();\n const [addActive, setAddActive] = useState(false);\n const [selectedFeatureIdExternal, setSelectedFeatureIdExternal] = useState();\n const [currentCenter, setCurrentCenter] = useState(mapCenter ?? [0, 0]);\n const [selectedLayers, setSelectedLayers] = useState([]);\n\n const classes = useStyles();\n const user = useAuthedUser();\n const { t } = useTranslation();\n\n useEffect(() => {\n if (crs?.length > 0) {\n proj4.defs(crs);\n register(proj4);\n setDefinedProj(true);\n }\n }, [crs]);\n\n useEffect(() => {\n if (getSelectedLayers) {\n getSelectedLayers(selectedLayers);\n }\n }, [getSelectedLayers, selectedLayers]);\n\n useEffect(() => {\n if (getSelectedViewItemData) {\n getSelectedViewItemData(selectedItemData);\n }\n }, [getSelectedViewItemData, selectedItemData]);\n\n //solve refreshing map data outside map layout\n useEffect(() => {\n if (!data) return;\n\n if (dataUpdateCount === 0) {\n setDataUpdateCount(dataUpdateCount + 1);\n }\n //if the data is updated, force the popover to close\n if (dataUpdateCount === 1) {\n setSelectedFeatureProperties(null);\n }\n }, [data, dataUpdateCount]);\n\n //data\n const filteredData = useMemo(() => {\n if (!data) return [];\n\n const formattedData = isGeoJsonFormat\n ? data\n : generateGeoJsonList(data, geoJsonMappingConfig);\n\n //this will return an array of features in geojson format\n if (filterPanel && filterCallback) {\n return filterCallback(formattedData);\n }\n\n return formattedData;\n }, [\n data,\n filterCallback,\n filterPanel,\n geoJsonMappingConfig,\n isGeoJsonFormat\n ]);\n\n const gridData = useMemo(() => {\n return filteredData\n ?.filter((obj) => {\n const layerKey = getLayer(layerKeys, layerKeySeparator, obj);\n\n if (layerRoles?.[layerKey]) {\n return layerRoles[layerKey]?.some((roleId) =>\n user.roleIds?.includes(roleId)\n );\n }\n return true;\n })\n .map((obj) => ({\n id: obj.id,\n ...obj.properties\n }));\n }, [filteredData, layerKeySeparator, layerKeys, layerRoles, user.roleIds]);\n\n const filteredGridData = useMemo(() => {\n if (gridFilter) {\n return gridFilter(gridData);\n }\n\n return gridData;\n }, [gridData, gridFilter]);\n\n const filteredListData = useMemo(() => {\n if (listFilter) {\n return listFilter(gridData);\n }\n\n return gridData;\n }, [gridData, listFilter]);\n\n useEffect(() => {\n //If there are projections need to be defined, but it isn't defined yet. Then, return to prevent errors in transform().\n if (crs?.length > 0 && !definedProj) return;\n\n if (\n filteredData?.[0]?.geometry?.coordinates &&\n mapProjection &&\n mapDataProjection\n ) {\n const coordinates = isArray(filteredData?.[0]?.geometry?.coordinates[0])\n ? filteredData?.[0]?.geometry?.coordinates[0]\n : filteredData?.[0]?.geometry?.coordinates;\n const newCenter = transform(\n coordinates,\n mapDataProjection,\n mapProjection\n );\n setCurrentCenter(newCenter);\n }\n }, [filteredData, mapDataProjection, mapProjection, definedProj, crs]);\n\n //Default getStyles for map features\n const getStyles = useCallback((feature) => {\n const geometryType = feature.getGeometry().getType();\n return styles[geometryType] ?? new Style();\n }, []);\n\n const handleViewDetailsFromPopover = useCallback(\n (data) => {\n const featureProperties = data?.selectedFeature?.getProperties();\n\n if (popoverDetailsEvent) {\n popoverDetailsEvent(featureProperties);\n return;\n }\n\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n\n setShowDetails(true);\n\n setSelectedItemData(featureProperties);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [popoverDetailsEvent, setRightSectionPanelState, shellContext]\n );\n\n const handleCloseDetailSheet = useCallback(() => {\n setShowDetails(false);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(null);\n }, [setRightSectionPanelState]);\n\n const handleViewDetailsFromList = useCallback(\n (data) => {\n setShowDetails(true);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(data);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [setRightSectionPanelState, shellContext]\n );\n\n const itemDetails = useMemo(() => {\n if (\n selectedItemData &&\n !overrideDetailRightSection &&\n !rightSectionPanelState\n ) {\n return Object.entries(selectedItemData)\n .filter(\n ([key, value]) =>\n 'geometry' !== key && !isObject(value) && !isArray(value)\n )\n .map(([key, value]) => {\n return (\n <FluentTextField\n label={startCase(key)}\n value={value}\n InputProps={{\n readOnly: true\n }}\n />\n );\n });\n }\n\n return;\n }, [overrideDetailRightSection, rightSectionPanelState, selectedItemData]);\n\n const gridColumnDefinition = useMemo(() => {\n if (!columnDefs) return;\n\n //check if there's actions renderer to use. Otherwise, using the default actions renderer\n if (frameworkComponents?.actionsRenderer) {\n return columnDefs;\n } else {\n return [\n ...columnDefs,\n {\n headerName: t('Actions'),\n field: 'actions',\n suppressSizeToFit: true,\n minWidth: 100,\n maxWidth: 125,\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n openView: (data) => handleViewDetailsFromList(data)\n },\n sortable: false\n }\n ];\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnDefs, frameworkComponents]);\n\n const detailSheetHeight = useMemo(() => {\n if (!showGrid) {\n return '73vh';\n } else if (showGrid && !showMap) {\n return `calc(67vh + 6vh)`;\n } else {\n return `calc(${mapHeight} + ${gridHeight} + 6vh)`;\n }\n }, [gridHeight, mapHeight, showGrid, showMap]);\n\n const handleSelectLayers = (e) => {\n setSelectedLayers(e);\n };\n\n const handleSelectMarker = useCallback((data) => {\n setSelectedFeatureIdExternal(data?.id);\n }, []);\n\n const handleOnCellClicked = useCallback(\n (params) => {\n if (onCellClicked) {\n onCellClicked(params);\n }\n\n if (!params?.node?.group && params?.colDef?.field !== 'actions') {\n handleSelectMarker(params?.data);\n }\n },\n [handleSelectMarker, onCellClicked]\n );\n\n const listView = useMemo(() => {\n if (hideListView) return;\n\n return (\n <ListView\n data={filteredListData ?? []}\n listViewConfig={listViewCardConfig ?? cardConfig}\n noWrapPrimaryText={noWrapPrimaryText}\n viewEvent={listViewDetailsEvent ?? handleViewDetailsFromList}\n showMarkerEvent={handleSelectMarker}\n chipConfig={listViewChipConfig}\n />\n );\n }, [\n cardConfig,\n filteredListData,\n handleSelectMarker,\n handleViewDetailsFromList,\n hideListView,\n listViewCardConfig,\n listViewChipConfig,\n listViewDetailsEvent,\n noWrapPrimaryText\n ]);\n\n const handleSetSelectedFeatureProperties = useCallback((currentFeature) => {\n if (currentFeature) {\n let featureProperties = currentFeature?.getProperties();\n\n setSelectedFeatureCoordinates(\n currentFeature.getGeometry().getCoordinates()\n );\n\n setSelectedFeatureProperties(featureProperties);\n }\n }, []);\n\n const handleCloseFeaturePopover = useCallback(() => {\n setSelectedFeatureIdExternal(null);\n }, []);\n\n const handleSetMapComponent = useCallback((value) => {\n setMap(value);\n }, []);\n\n const mapComponent = useMemo(() => {\n return (\n <div>\n <Grid container>\n <Grid\n item\n xs={3}\n style={{\n display: !hideListView && showList ? 'block' : 'none'\n }}\n >\n <div className={clsx(classes.fullHeight, classes.listViewWrapper)}>\n {listView}\n </div>\n </Grid>\n <Grid item xs={showList ? 9 : 12}>\n <UdpMapComponent\n map={map}\n handleSetMapComponent={handleSetMapComponent}\n data={data}\n isGeoJsonFormat={isGeoJsonFormat}\n geoJsonMappingConfig={geoJsonMappingConfig}\n enableZoom={showZoomControl}\n mapZoom={mapZoom}\n mapCenter={currentCenter}\n mapHeight={mapHeight}\n crs={crs}\n mapProjection={mapProjection}\n mapDataProjection={mapDataProjection}\n getFilteredMapData={mapFilter}\n getVectorLayerSources={getVectorLayerSources}\n getFeatureStyles={getMapFeatureStyles ?? getStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n filterLayersByRole={layerRoles?.length > 0}\n layerKeys={layerKeys}\n layerKeySeparator={layerKeySeparator}\n user={user}\n layerRoles={layerRoles}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetFilteredLayerOptionsByRole={setFilterLayerOptions}\n enableViewFeature={enableViewFeature}\n handleViewFeature={handleViewDetailsFromPopover}\n bulkSelectionActive={bulkSelectionActive}\n splitActive={splitActive}\n enableDragBox={enableDragBox}\n selectedFeatureCoordinates={selectedFeatureCoordinates}\n selectedFeatureProperties={selectedFeatureProperties}\n handleSetSelectedFeatureProperties={\n handleSetSelectedFeatureProperties\n }\n enableAddNewFeature={addActive}\n readOnlyLayers={readOnlyLayers}\n selectedFeatureIdExternal={selectedFeatureIdExternal}\n additionalOnclosePopover={handleCloseFeaturePopover}\n popoverPrimaryActions={popoverPrimaryActions}\n popoverMoreIconButtonActions={popoverMoreIconButtonActions}\n getMessagePopover={getMessagePopover}\n getMessageIconPopover={getMessageIconPopover}\n hideMessageIconPopover={hideMessageIconPopover}\n popoverCardConfig={cardConfig}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n handleGetZoomExtent={handleGetZoomExtent}\n minZoom={minZoom}\n maxZoom={maxZoom}\n />\n </Grid>\n </Grid>\n </div>\n );\n }, [\n addActive,\n bulkSelectionActive,\n cardConfig,\n classes.fullHeight,\n classes.listViewWrapper,\n crs,\n currentCenter,\n data,\n defaultTileOptionName,\n enableDragBox,\n enableViewFeature,\n filterCallback,\n filterPanel,\n filteredLayerOptions,\n geoJsonMappingConfig,\n getMapFeatureStyles,\n getMessageIconPopover,\n getMessagePopover,\n getSelectedFeatureStyles,\n getSelectedFeatures,\n getStyles,\n getVectorLayerSources,\n handleCloseFeaturePopover,\n handleGetZoomExtent,\n handleSetMapComponent,\n handleSetSelectedFeatureProperties,\n handleViewDetailsFromPopover,\n hideListView,\n hideMessageIconPopover,\n hideTileSelection,\n initialSelectedLayers,\n isGeoJsonFormat,\n layerKeySeparator,\n layerKeys,\n layerOptions,\n layerRoles,\n listView,\n map,\n mapDataProjection,\n mapFilter,\n mapHeight,\n mapProjection,\n mapZoom,\n maxZoom,\n minZoom,\n popoverMoreIconButtonActions,\n popoverPrimaryActions,\n readOnlyLayers,\n selectedFeatureCoordinates,\n selectedFeatureIdExternal,\n selectedFeatureProperties,\n selectedFeaturesActionPanel,\n selectedLayers,\n showList,\n showZoomControl,\n splitActive,\n tileLayersOptions,\n user\n ]);\n\n const gridComponent = useMemo(() => {\n return (\n <div>\n <AmbientGridTemplate\n title={gridTitle}\n data={filteredGridData}\n columnDefs={gridColumnDefinition}\n groupingData={groupingData}\n frameworkComponents={{\n actionsRenderer: ActionsRenderer,\n ...frameworkComponents\n }}\n primaryActionButton={primaryActionButton}\n loading={loading}\n rowNodeIdName={rowNodeIdName}\n height={showGrid && !showMap ? '67vh' : gridHeight}\n paginationPageSize={paginationPageSize}\n onSearch={onSearch}\n onRowSelected={onRowSelected}\n rowModelType={rowModelType}\n api={api}\n columnApi={columnApi}\n gridReady={gridReady}\n dynamicSizing\n onCellClicked={handleOnCellClicked}\n {...otherGridProps}\n />\n </div>\n );\n }, [\n api,\n columnApi,\n filteredGridData,\n frameworkComponents,\n gridColumnDefinition,\n gridHeight,\n gridReady,\n gridTitle,\n groupingData,\n handleOnCellClicked,\n loading,\n onRowSelected,\n onSearch,\n otherGridProps,\n paginationPageSize,\n primaryActionButton,\n rowModelType,\n rowNodeIdName,\n showGrid,\n showMap\n ]);\n\n const mapGrid = useMemo(() => {\n if (position === 'gridOnTop') {\n return (\n <div>\n {showGrid && gridComponent}\n {showMap && mapComponent}\n </div>\n );\n }\n return (\n <div>\n {showMap && mapComponent}\n {showGrid && gridComponent}\n </div>\n );\n }, [gridComponent, mapComponent, position, showGrid, showMap]);\n\n return (\n <div>\n <UdpMapToolbar\n map={map}\n mapTitle={mapTitle}\n mapProjection={mapProjection}\n getFeatureStyles={getMapFeatureStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n handleSetSelectedFeatureOnSelect={getSelectedViewItemData}\n handleRefresh={refreshEvent}\n refreshButtonTooltip={refreshButtonTooltip}\n readOnlyMap={readOnlyMap}\n enableAdd={enableAddNewFeature}\n handleAddNewFeatures={handleAddNewFeatures}\n addMultipleFeatures={addMultipleFeatures}\n enableSplitFeature={enableSplitFeature}\n handleSplitFeature={handleSplitFeature}\n handleSetSelectedFeatureProperties={handleSetSelectedFeatureProperties}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetBulkSelectionActive={setBulkSelectionActive}\n enableDragBox={enableDragBox}\n handleSetEnableDragBox={setEnableDragBox}\n splitActive={splitActive}\n handleSetSplitActive={setSplitActive}\n enableAddNewFeature={addActive}\n handleEnableAddNewFeature={setAddActive}\n readOnlyLayers={readOnlyLayers}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n addFeaturePanelConfig={addFeaturePanelConfig}\n />\n <Grid container>\n <Grid\n item\n {...(showDetails || rightSectionPanelState\n ? { xs: 7, sm: 9 }\n : { xs: 12 })}\n >\n {mapGrid}\n </Grid>\n {(showDetails || rightSectionPanelState) && (\n <Grid\n item\n xs={5}\n sm={3}\n className={classes.leftColumn}\n style={{ maxHeight: detailSheetHeight }}\n >\n <div className={classes.detailSheetHeader}>\n <FluentIconButton\n onClick={handleCloseDetailSheet}\n icon={ChromeCloseIcon}\n />\n <StandardTitle className={classes.detailTitle}>\n {rightSectionPanelTitle ?? t('Details')}\n </StandardTitle>\n </div>\n <div\n className={noRightPanelPadding ? null : classes.detailSheetBody}\n >\n {rightSectionPanel &&\n (rightSectionPanelState ||\n (showDetails && overrideDetailRightSection)) &&\n rightSectionPanel}\n {showDetails && itemDetails && (\n <AmbientCard fullWidth>{itemDetails}</AmbientCard>\n )}\n </div>\n </Grid>\n )}\n </Grid>\n </div>\n );\n};\n"],"mappings":"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ACvB,iCAAiC;GACjC,uCAAuC;GACvC,oBAAoB,YAAY,SAAS;GAC9B;GACQ;GACb;GACM;GACZ,4BAA4B;GAC5B,qCAAqC;GAClB;GACnB,mBAAmB;GACE;GACR;GACE;GACa;GACD;GAEzB;GAEF,qBAAqB;GACL;GACW;GAC3B,0BAA0B;GACH;GACO;GACX;GACI;GACC;GACxB,mBAAmB;GACH;GAChB,yBAAyB;GACJ;GACZ;GACA;IACT,CACG,CACF,CACH;IAEP;EACD;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,gBAAgB,cAAc;AAClC,SACE,oCAAC,aACC,oCAAC;GACC,OAAO;GACP,MAAM;GACN,YAAY;GACE;GACd,qBAAqB;IACnB,iBAAiBC;IACjB,GAAG;IACJ;GACoB;GACZ;GACM;GACf,QAAQ,YAAY,CAAC,UAAU,SAAS;GACpB;GACV;GACK;GACD;GACT;GACM;GACA;GACX;GACA,eAAe;GACf,GAAI;IACJ,CACE;IAEP;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,UAAU,cAAc;AAC5B,MAAI,aAAa,YACf,QACE,oCAAC,aACE,YAAY,eACZ,WAAW,aACR;AAGV,SACE,oCAAC,aACE,WAAW,cACX,YAAY,cACT;IAEP;EAAC;EAAe;EAAc;EAAU;EAAU;EAAQ,CAAC;AAE9D,QACE,oCAAC,aACC,oCAAC;EACM;EACK;EACK;EACf,kBAAkB;EACQ;EACb;EACb,qBAAqB;EACrB,qBAAqB,CAAC;EACH;EACI;EACT;EACS;EACvB,iCAAiC;EACjC,uCAAuC;EACvC,kCAAkC;EAClC,eAAe;EACO;EACT;EACb,WAAW;EACW;EACD;EACD;EACA;EACgB;EACpC,4BAA4B;EAC5B,8BAA8B;EACf;EACf,wBAAwB;EACX;EACb,sBAAsB;EACtB,qBAAqB;EACrB,2BAA2B;EACX;EACA;EAChB,yBAAyB;EACF;GACvB,EACF,oCAAC,QAAK,mBACJ,oCAAC;EACC;EACA,GAAK,eAAe,yBAChB;GAAE,IAAI;GAAG,IAAI;GAAG,GAChB,EAAE,IAAI,IAAI;IAEb,QACI,GACL,eAAe,2BACf,oCAAC;EACC;EACA,IAAI;EACJ,IAAI;EACJ,WAAW,QAAQ;EACnB,OAAO,EAAE,WAAW,mBAAmB;IAEvC,oCAAC,SAAI,WAAW,QAAQ,qBACtB,oCAAC;EACC,SAAS;EACT,MAAM;GACN,EACF,oCAAC,iBAAc,WAAW,QAAQ,eAC/B,0BAA0B,EAAE,UAAU,CACzB,CACZ,EACN,oCAAC,SACC,WAAW,sBAAsB,OAAO,QAAQ,mBAE/C,sBACE,0BACE,eAAe,+BAClB,mBACD,eAAe,eACd,oCAAC,eAAY,mBAAW,YAA0B,CAEhD,CACD,CAEJ,CACH"}
|
|
@@ -3,13 +3,13 @@ import { t as useUser } from "./useUser-wpHGo6jU.js";
|
|
|
3
3
|
import { M as TreeViewModeEnums } from "./unitySystemEnums-DQSkCr3D.js";
|
|
4
4
|
import { n as useShellStore } from "./shellStore-C8zfPsZ-.js";
|
|
5
5
|
import { H as transformMenuPageTree } from "./TreeUtilities-C6e2dd4g.js";
|
|
6
|
-
import { t as useAxiosGet } from "./useAxiosGet-
|
|
6
|
+
import { t as useAxiosGet } from "./useAxiosGet-vvPjwB4W.js";
|
|
7
7
|
import { t as useSetLocationState } from "./useSetLocationState-Kvcc9BTb.js";
|
|
8
|
-
import { t as PageContainer } from "./PageContainer-
|
|
8
|
+
import { t as PageContainer } from "./PageContainer-N4d5KO-T.js";
|
|
9
9
|
import { n as useBuildEnvironment, t as APP_RIBBON_SPACE } from "./useBuildEnvironment-2gdqpmBX.js";
|
|
10
10
|
import { t as NodeLoader } from "./NodeLoader-BtOQQiwA.js";
|
|
11
11
|
import { t as UtilitySideBar } from "./UtilitySideBar-CkymNmr-.js";
|
|
12
|
-
import { t as BaseTreeMenu } from "./BaseTreeMenu-
|
|
12
|
+
import { t as BaseTreeMenu } from "./BaseTreeMenu-DitVfbeZ.js";
|
|
13
13
|
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
14
14
|
import { makeStyles } from "@material-ui/core";
|
|
15
15
|
import { Prompt, useHistory, useLocation } from "react-router-dom";
|
|
@@ -248,4 +248,4 @@ var MenuPage_default = MenuPage;
|
|
|
248
248
|
|
|
249
249
|
//#endregion
|
|
250
250
|
export { MenuPage_default as t };
|
|
251
|
-
//# sourceMappingURL=MenuPage-
|
|
251
|
+
//# sourceMappingURL=MenuPage-B4ZN_tQt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPage-CM3gZWnB.js","names":[],"sources":["../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useHistory, useLocation, Prompt } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { transformMenuPageTree } from '../utilities/tree/TreeUtilities';\nimport { BaseTreeMenu } from '../treeMenu/BaseTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n APP_RIBBON_SPACE,\n useBuildEnvironment\n} from '../shell/ui/useBuildEnvironment';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n minHeight: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n display: 'grid',\n gridTemplateAreas: ['sidebar content'].map((line) => `\"${line}\"`).join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n sidebar: {\n gridArea: 'sidebar',\n marginRight: theme.spacing(1)\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n overflowY: 'auto'\n },\n menuContent: {\n marginTop: theme.spacing(1),\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 116}px)`,\n overflowX: 'hidden'\n },\n loader: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n }\n}));\n\nconst MenuPage = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const history = useHistory();\n const location = useLocation();\n const user = useUser();\n const { t } = useTranslation();\n const setLocationState = useSetLocationState();\n // Allow callers to provide an innerMenu directly (CustomMenuPage wrapper)\n const {\n innerMenuOverride,\n mainContent,\n menuTitle,\n allowMissingPageParam = false\n } = props;\n\n const [menuItemsList, setMenuItemsList] = useState([]); // holds a list of trees\n const [selectedNode, setSelectedNode] = useState(null);\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n // Just the menuInstanceId for an inner menu\n const innerMenuId = location.pathname.replace('/menupage/', '');\n\n const prevInnerMenuId = useRef(innerMenuId);\n\n const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n {},\n !innerMenuId,\n false\n );\n\n const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n const { setSubHeaderActionHasChildren, setNavigationExpanded } =\n useShellStore();\n\n const [{ data: pageData, loading: pageLoading, error: pageError }] =\n useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${selectedNode?.properties?.page?.id}`,\n {},\n !selectedNode?.properties?.page?.id,\n false\n );\n\n const handleSelectedNode = useCallback(\n (node, menuIndex) => {\n if (allowMissingPageParam) {\n const firstNode = menuItemsList?.[0];\n if (firstNode && String(node?.id) === String(firstNode.id)) {\n // If there is an existing query string, normalize back to the base path\n if (location.search) {\n history.replace({\n pathname: location.pathname,\n search: ''\n });\n }\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n return;\n }\n }\n\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', node.id);\n\n history.push({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n },\n [history, location, allowMissingPageParam, menuItemsList]\n );\n\n const handleDropNode = useCallback(\n (sourceNode, targetNode, sourceNodeMenuIndex, targetNodeMenuIndex) => {\n // TODO: Implement if we need to for next Phase\n },\n []\n );\n\n const handleSidebarExpandClick = useCallback(() => {\n setSidebarExpanded((expanded) => !expanded);\n }, []);\n\n const findNodeById = useCallback((node, id) => {\n if (!node) return null;\n if (node.id.toString() === id) return node;\n if (node.children) {\n for (const child of node.children) {\n const found = findNodeById(child, id);\n if (found) return found;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n if (pageId && menuItemsList.length > 0) {\n // Search all root menu trees for the node\n let node = null;\n for (const tree of menuItemsList) {\n node = findNodeById(tree, pageId);\n if (node) break;\n }\n if (node && node.id !== selectedNode?.id) {\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n }\n }\n }, [location.search, menuItemsList, findNodeById, selectedNode]);\n\n useEffect(() => {\n const mainPageIdChanged = prevInnerMenuId.current !== innerMenuId;\n\n if (innerMenu) {\n const list = [];\n innerMenu.menuItemInstanceStructureViews.forEach((menuInstance) => {\n const updatedMenu = transformMenuPageTree(menuInstance);\n if (updatedMenu) {\n list.push(updatedMenu);\n }\n });\n setMenuItemsList(list);\n\n // Find the node matching the current page param\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n let nodeToSelect = null;\n\n if (pageId && list.length > 0) {\n // Try to find the node with this id\n for (const tree of list) {\n nodeToSelect = findNodeById(tree, pageId);\n if (nodeToSelect) break;\n }\n }\n\n // If we found a node, select it. If not, select the first node.\n if (nodeToSelect) {\n setSelectedNode(nodeToSelect);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n } else if (list.length > 0) {\n const firstNode = list[0];\n if (allowMissingPageParam) {\n // Do not modify URL when missing page param; select first node only.\n setSelectedNode(firstNode);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n } else {\n // No valid page param, select first node and update URL\n searchParams.set('page', firstNode.id);\n history.replace({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(firstNode);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n }\n }\n }\n prevInnerMenuId.current = innerMenuId;\n }, [\n innerMenu,\n setNavigationExpanded,\n history,\n location,\n innerMenuId,\n findNodeById,\n allowMissingPageParam\n ]);\n\n useEffect(() => {\n setSubHeaderActionHasChildren(false);\n }, [setSubHeaderActionHasChildren]);\n\n // Setting location state label so that if this page was saved to favorites\n // we can determine the bread crumb\n useEffect(() => {\n if (innerMenu) {\n setLocationState({ label: t(innerMenu?.name) });\n }\n }, [setLocationState, t, innerMenu]);\n\n return (\n <DndProvider backend={HTML5Backend}>\n <Prompt\n when={hasUnsavedChanges}\n message='You have unsaved changes. Are you sure you want to leave this page?'\n />\n <div className={classes.root}>\n <div className={classes.sidebar}>\n <UtilitySideBar\n title={innerMenu?.name || menuTitle}\n isUsingChildren={true}\n resizable={true}\n removePadding={true}\n removeTopLayoutUnit={true}\n onUtilitySidebarToggleExpandClick={handleSidebarExpandClick}\n collapsedWidth={64}\n >\n <div className={classes.menuContent} key={innerMenuId}>\n {menuItemsList?.length > 0 &&\n !menuLoading &&\n menuItemsList.map((menuItems, index) => (\n <div key={menuItems.id} className={classes.nodeContainer}>\n <BaseTreeMenu\n menuItems={menuItems}\n onSelectNode={handleSelectedNode}\n onDropNode={handleDropNode}\n menuIndex={index}\n selectedNodeId={selectedNode?.id}\n selectedNodeParentId={selectedNode?.parentId}\n sidebarExpanded={sidebarExpanded}\n treeViewMode={TreeViewModeEnums.Classic}\n />\n </div>\n ))}\n {menuLoading && (\n <div className={classes.loader}>\n <NodeLoader loading={menuLoading} />\n </div>\n )}\n </div>\n </UtilitySideBar>\n </div>\n <div className={classes.content}>\n {mainContent ? (\n typeof mainContent === 'function'\n ? mainContent({ selectedNode, menuItemsList })\n : mainContent\n ) : (\n selectedNode?.properties?.page?.id && (\n <PageContainer\n user={user}\n key={selectedNode?.id}\n pageData={pageData}\n pageLoading={pageLoading}\n widgetParams={{\n pageId: pageData?.pageId,\n entityName: selectedNode?.properties?.page?.entity?.entityName,\n pbiReportCode: selectedNode?.properties?.page?.pbiReportCode,\n requiredFieldsMap:\n selectedNode?.properties?.page?.requiredFieldMapping,\n udpTagId: selectedNode?.properties?.page?.udpTagId,\n queryId: selectedNode?.properties?.page?.queryId,\n inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId,\n setHasUnsavedChanges: setHasUnsavedChanges\n }}\n disableMargins={true}\n fromMenu={true}\n />\n )\n )}\n </div>\n </div>\n </DndProvider>\n );\n};\n\nexport default MenuPage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MenuPage-B4ZN_tQt.js","names":[],"sources":["../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useHistory, useLocation, Prompt } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { transformMenuPageTree } from '../utilities/tree/TreeUtilities';\nimport { BaseTreeMenu } from '../treeMenu/BaseTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n APP_RIBBON_SPACE,\n useBuildEnvironment\n} from '../shell/ui/useBuildEnvironment';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n minHeight: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n display: 'grid',\n gridTemplateAreas: ['sidebar content'].map((line) => `\"${line}\"`).join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n sidebar: {\n gridArea: 'sidebar',\n marginRight: theme.spacing(1)\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n overflowY: 'auto'\n },\n menuContent: {\n marginTop: theme.spacing(1),\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 116}px)`,\n overflowX: 'hidden'\n },\n loader: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n }\n}));\n\nconst MenuPage = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const history = useHistory();\n const location = useLocation();\n const user = useUser();\n const { t } = useTranslation();\n const setLocationState = useSetLocationState();\n // Allow callers to provide an innerMenu directly (CustomMenuPage wrapper)\n const {\n innerMenuOverride,\n mainContent,\n menuTitle,\n allowMissingPageParam = false\n } = props;\n\n const [menuItemsList, setMenuItemsList] = useState([]); // holds a list of trees\n const [selectedNode, setSelectedNode] = useState(null);\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n // Just the menuInstanceId for an inner menu\n const innerMenuId = location.pathname.replace('/menupage/', '');\n\n const prevInnerMenuId = useRef(innerMenuId);\n\n const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n {},\n !innerMenuId,\n false\n );\n\n const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n const { setSubHeaderActionHasChildren, setNavigationExpanded } =\n useShellStore();\n\n const [{ data: pageData, loading: pageLoading, error: pageError }] =\n useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${selectedNode?.properties?.page?.id}`,\n {},\n !selectedNode?.properties?.page?.id,\n false\n );\n\n const handleSelectedNode = useCallback(\n (node, menuIndex) => {\n if (allowMissingPageParam) {\n const firstNode = menuItemsList?.[0];\n if (firstNode && String(node?.id) === String(firstNode.id)) {\n // If there is an existing query string, normalize back to the base path\n if (location.search) {\n history.replace({\n pathname: location.pathname,\n search: ''\n });\n }\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n return;\n }\n }\n\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', node.id);\n\n history.push({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n },\n [history, location, allowMissingPageParam, menuItemsList]\n );\n\n const handleDropNode = useCallback(\n (sourceNode, targetNode, sourceNodeMenuIndex, targetNodeMenuIndex) => {\n // TODO: Implement if we need to for next Phase\n },\n []\n );\n\n const handleSidebarExpandClick = useCallback(() => {\n setSidebarExpanded((expanded) => !expanded);\n }, []);\n\n const findNodeById = useCallback((node, id) => {\n if (!node) return null;\n if (node.id.toString() === id) return node;\n if (node.children) {\n for (const child of node.children) {\n const found = findNodeById(child, id);\n if (found) return found;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n if (pageId && menuItemsList.length > 0) {\n // Search all root menu trees for the node\n let node = null;\n for (const tree of menuItemsList) {\n node = findNodeById(tree, pageId);\n if (node) break;\n }\n if (node && node.id !== selectedNode?.id) {\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n }\n }\n }, [location.search, menuItemsList, findNodeById, selectedNode]);\n\n useEffect(() => {\n const mainPageIdChanged = prevInnerMenuId.current !== innerMenuId;\n\n if (innerMenu) {\n const list = [];\n innerMenu.menuItemInstanceStructureViews.forEach((menuInstance) => {\n const updatedMenu = transformMenuPageTree(menuInstance);\n if (updatedMenu) {\n list.push(updatedMenu);\n }\n });\n setMenuItemsList(list);\n\n // Find the node matching the current page param\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n let nodeToSelect = null;\n\n if (pageId && list.length > 0) {\n // Try to find the node with this id\n for (const tree of list) {\n nodeToSelect = findNodeById(tree, pageId);\n if (nodeToSelect) break;\n }\n }\n\n // If we found a node, select it. If not, select the first node.\n if (nodeToSelect) {\n setSelectedNode(nodeToSelect);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n } else if (list.length > 0) {\n const firstNode = list[0];\n if (allowMissingPageParam) {\n // Do not modify URL when missing page param; select first node only.\n setSelectedNode(firstNode);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n } else {\n // No valid page param, select first node and update URL\n searchParams.set('page', firstNode.id);\n history.replace({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(firstNode);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n }\n }\n }\n prevInnerMenuId.current = innerMenuId;\n }, [\n innerMenu,\n setNavigationExpanded,\n history,\n location,\n innerMenuId,\n findNodeById,\n allowMissingPageParam\n ]);\n\n useEffect(() => {\n setSubHeaderActionHasChildren(false);\n }, [setSubHeaderActionHasChildren]);\n\n // Setting location state label so that if this page was saved to favorites\n // we can determine the bread crumb\n useEffect(() => {\n if (innerMenu) {\n setLocationState({ label: t(innerMenu?.name) });\n }\n }, [setLocationState, t, innerMenu]);\n\n return (\n <DndProvider backend={HTML5Backend}>\n <Prompt\n when={hasUnsavedChanges}\n message='You have unsaved changes. Are you sure you want to leave this page?'\n />\n <div className={classes.root}>\n <div className={classes.sidebar}>\n <UtilitySideBar\n title={innerMenu?.name || menuTitle}\n isUsingChildren={true}\n resizable={true}\n removePadding={true}\n removeTopLayoutUnit={true}\n onUtilitySidebarToggleExpandClick={handleSidebarExpandClick}\n collapsedWidth={64}\n >\n <div className={classes.menuContent} key={innerMenuId}>\n {menuItemsList?.length > 0 &&\n !menuLoading &&\n menuItemsList.map((menuItems, index) => (\n <div key={menuItems.id} className={classes.nodeContainer}>\n <BaseTreeMenu\n menuItems={menuItems}\n onSelectNode={handleSelectedNode}\n onDropNode={handleDropNode}\n menuIndex={index}\n selectedNodeId={selectedNode?.id}\n selectedNodeParentId={selectedNode?.parentId}\n sidebarExpanded={sidebarExpanded}\n treeViewMode={TreeViewModeEnums.Classic}\n />\n </div>\n ))}\n {menuLoading && (\n <div className={classes.loader}>\n <NodeLoader loading={menuLoading} />\n </div>\n )}\n </div>\n </UtilitySideBar>\n </div>\n <div className={classes.content}>\n {mainContent ? (\n typeof mainContent === 'function'\n ? mainContent({ selectedNode, menuItemsList })\n : mainContent\n ) : (\n selectedNode?.properties?.page?.id && (\n <PageContainer\n user={user}\n key={selectedNode?.id}\n pageData={pageData}\n pageLoading={pageLoading}\n widgetParams={{\n pageId: pageData?.pageId,\n entityName: selectedNode?.properties?.page?.entity?.entityName,\n pbiReportCode: selectedNode?.properties?.page?.pbiReportCode,\n requiredFieldsMap:\n selectedNode?.properties?.page?.requiredFieldMapping,\n udpTagId: selectedNode?.properties?.page?.udpTagId,\n queryId: selectedNode?.properties?.page?.queryId,\n inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId,\n setHasUnsavedChanges: setHasUnsavedChanges\n }}\n disableMargins={true}\n fromMenu={true}\n />\n )\n )}\n </div>\n </div>\n </DndProvider>\n );\n};\n\nexport default MenuPage;\n"],"mappings":"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"}
|