robobyte-front-builder 1.0.19 → 1.0.21
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/README.md +211 -0
- package/next.config.js +19 -48
- package/package.json +39 -85
- package/src/context/BuilderContext.jsx +134 -6
- package/src/context/SystemContext.js +2 -2
- package/src/hooks/useGlobalStore.js +36 -0
- package/src/hooks/useTimerEngine.js +54 -0
- package/src/lib/index.js +11 -3
- package/src/lib/layouts/BlankLayout.jsx +13 -0
- package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +61 -7
- package/src/lib/themes/builderTheme.js +41 -0
- package/src/pages/_app.js +32 -134
- package/src/pages/api/ai.js +87 -0
- package/src/pages/builders/report/index.js +1 -0
- package/src/pages/builders/report/list/index.js +1 -0
- package/src/pages/builders/report/viewer/index.js +1 -0
- package/src/pages/index.js +88 -37
- package/src/pages/printBuilder/index.jsx +263 -0
- package/src/pages/printBuilder/layouts/index.jsx +298 -0
- package/src/pages/reportModule/reportBuilder/index.js +8 -6
- package/src/pages/reportModule/reportBuilder/reportViewer/index.js +33 -22
- package/src/pages/reportModule/reportBuilder/reports/index.js +3 -5
- package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +2 -3
- package/src/pages/viewBuilder/index.jsx +117 -32
- package/src/pages/viewBuilder/views/index.js +3 -3
- package/src/pages/viewer/[id]/index.js +2 -1
- package/src/services/DeleteService.js +31 -60
- package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
- package/src/services/Endpoints.js +2 -0
- package/src/services/GetService.js +33 -54
- package/src/services/PatchService.js +38 -65
- package/src/services/PostService.js +37 -63
- package/src/services/UpdateService.js +39 -65
- package/src/services/builderHelper/actionExecutor.js +141 -25
- package/src/services/builderHelper/builderHelper.js +92 -0
- package/src/services/builderHelper/colorSchema.js +95 -0
- package/src/services/builderHelper/iconResolver.js +50 -0
- package/src/services/builderHelper/jsExecutor.js +212 -46
- package/src/services/builderHelper/nodeFactory.js +32 -15
- package/src/services/builderHelper/numberFormat.js +123 -0
- package/src/services/builderHelper/resolveProps.js +73 -4
- package/src/services/builderHelper/thresholdEngine.js +77 -0
- package/src/services/builderHelper/tree.js +31 -0
- package/src/services/components/agGridAutoComplete.js +5 -9
- package/src/services/config.js +9 -1
- package/src/services/globalStore.js +80 -0
- package/src/services/helper/multiSelectEditor.js +5 -9
- package/src/services/helper/multiSelectEditorByBuilder.js +5 -9
- package/src/services/reportData/fetchReportData.js +69 -28
- package/src/services/routerRef.js +35 -0
- package/src/views/ConfirmDialog.js +2 -2
- package/src/views/builder/JSEditor.js +105 -107
- package/src/views/builder/inspector/Inspector.jsx +6 -9
- package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
- package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
- package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
- package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
- package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
- package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
- package/src/views/builder/inspector/definitions/banner/main.js +22 -0
- package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
- package/src/views/builder/inspector/definitions/banner/style.js +1 -0
- package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
- package/src/views/builder/inspector/definitions/button/main.js +11 -12
- package/src/views/builder/inspector/definitions/button/style.js +18 -30
- package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
- package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
- package/src/views/builder/inspector/definitions/common/main.js +13 -2
- package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
- package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
- package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
- package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
- package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
- package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
- package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
- package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
- package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
- package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
- package/src/views/builder/inspector/definitions/header/main.js +10 -1
- package/src/views/builder/inspector/definitions/index.js +106 -19
- package/src/views/builder/inspector/definitions/input/actions.js +4 -1
- package/src/views/builder/inspector/definitions/input/main.js +20 -11
- package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
- package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
- package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
- package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
- package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
- package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
- package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
- package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
- package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
- package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
- package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
- package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
- package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
- package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
- package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
- package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
- package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
- package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
- package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
- package/src/views/builder/inspector/definitions/label/main.js +10 -1
- package/src/views/builder/inspector/definitions/layout/main.js +27 -3
- package/src/views/builder/inspector/definitions/number/main.js +6 -14
- package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
- package/src/views/builder/inspector/definitions/popover/main.js +71 -0
- package/src/views/builder/inspector/definitions/radio/main.js +5 -8
- package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
- package/src/views/builder/inspector/definitions/reportViewer/main.js +15 -1
- package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
- package/src/views/builder/inspector/definitions/signature/main.js +4 -1
- package/src/views/builder/inspector/definitions/tag/main.js +5 -8
- package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
- package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
- package/src/views/builder/inspector/definitions/time/main.js +5 -8
- package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
- package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
- package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
- package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
- package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
- package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
- package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
- package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
- package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
- package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
- package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
- package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
- package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
- package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
- package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
- package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
- package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
- package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
- package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
- package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
- package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
- package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
- package/src/views/builder/sidebar/Sidebar.jsx +4 -2
- package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
- package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
- package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
- package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +49 -0
- package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
- package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +102 -0
- package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
- package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
- package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
- package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
- package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
- package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
- package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
- package/src/views/builder/sidebar/tabs/ViewTab.jsx +1 -1
- package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
- package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
- package/src/views/builder/viewer/DialogsZone.jsx +259 -0
- package/src/views/builder/viewer/FieldLabel.jsx +106 -0
- package/src/views/builder/viewer/PrintDialog.jsx +481 -0
- package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
- package/src/views/builder/viewer/Viewer.jsx +106 -8
- package/src/views/builder/viewer/ViewerComponentWrapper.jsx +61 -4
- package/src/views/builder/viewer/ViewerToolbar.jsx +273 -59
- package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
- package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
- package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
- package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
- package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
- package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
- package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
- package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
- package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
- package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
- package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
- package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
- package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
- package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
- package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
- package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
- package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
- package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
- package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
- package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
- package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
- package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
- package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
- package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
- package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
- package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
- package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
- package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
- package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
- package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
- package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
- package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
- package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
- package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
- package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
- package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
- package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
- package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
- package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +219 -5
- package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
- package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
- package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
- package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
- package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
- package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
- package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
- package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
- package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
- package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
- package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
- package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
- package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
- package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
- package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
- package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
- package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
- package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
- package/src/views/customFilter/CustomFilterDialog.js +1023 -660
- package/src/views/customFilter/FixedFilterDialog.js +649 -0
- package/src/views/customFilter/SearchFilterDialog.js +248 -0
- package/src/views/genericTable/BuilderExpressionParams.js +3 -3
- package/src/views/genericTable/ColumnConfiguratorDialog.js +33 -24
- package/src/views/genericTable/FixedFilterDialog.js +3 -2
- package/src/views/genericTable/FormattingSettingsDialog.js +8 -3
- package/src/views/genericTable/SGrid.js +198 -97
- package/src/views/genericTable/SearchFilterDialog.js +3 -2
- package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
- package/src/views/genericTable/convertStringFunctions.js +274 -138
- package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
- package/src/views/genericTable/updateRefHelpers.js +9 -6
- package/src/views/printBuilder/PrintBuilderViewer.jsx +607 -0
- package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
- package/src/views/rolePermissions/UpdateReportPermissionDialog.js +3 -2
- package/src/@core/components/auth/AclGuard.js +0 -55
- package/src/@core/components/auth/AuthGuard.js +0 -40
- package/src/@core/components/auth/GuestGuard.js +0 -30
- package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
- package/src/@core/components/custom-inputs/Image.jsx +0 -78
- package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
- package/src/@core/components/customizer/index.jsx +0 -470
- package/src/@core/components/customizer/styles.module.css +0 -169
- package/src/@core/components/mui/Avatar.jsx +0 -41
- package/src/@core/components/mui/Badge.jsx +0 -20
- package/src/@core/components/mui/IconButton.jsx +0 -74
- package/src/@core/components/mui/TabList.jsx +0 -60
- package/src/@core/components/option-menu/index.jsx +0 -137
- package/src/@core/components/scroll-to-top/index.jsx +0 -43
- package/src/@core/components/spinner/index.js +0 -26
- package/src/@core/components/window-wrapper/index.js +0 -27
- package/src/@core/contexts/settingsContext.jsx +0 -98
- package/src/@core/hooks/useBgColor.js +0 -63
- package/src/@core/hooks/useImageVariant.js +0 -27
- package/src/@core/hooks/useLayoutInit.js +0 -37
- package/src/@core/hooks/useObjectCookie.js +0 -18
- package/src/@core/hooks/useSettings.jsx +0 -15
- package/src/@core/layouts/BlankLayout.js +0 -37
- package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
- package/src/@core/layouts/HorizontalLayout.jsx +0 -151
- package/src/@core/layouts/Layout.js +0 -39
- package/src/@core/layouts/VerticalLayout.jsx +0 -124
- package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
- package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
- package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
- package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
- package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
- package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
- package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
- package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
- package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
- package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
- package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
- package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
- package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
- package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
- package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
- package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
- package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
- package/src/@core/layouts/utils.js +0 -69
- package/src/@core/styles/Table.module.css +0 -93
- package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
- package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
- package/src/@core/styles/libs/fullcalendar/index.js +0 -461
- package/src/@core/styles/libs/keen-slider/index.js +0 -111
- package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
- package/src/@core/styles/libs/react-cleave/index.js +0 -33
- package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
- package/src/@core/styles/libs/react-datepicker/index.js +0 -388
- package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
- package/src/@core/styles/libs/react-dropzone/index.js +0 -76
- package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
- package/src/@core/styles/libs/recharts/index.js +0 -47
- package/src/@core/styles/stepper.js +0 -103
- package/src/@core/styles/vertical/menuItemStyles.js +0 -138
- package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
- package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
- package/src/@core/svg/ContentCompact.jsx +0 -17
- package/src/@core/svg/ContentWide.jsx +0 -17
- package/src/@core/svg/DirectionLtr.jsx +0 -93
- package/src/@core/svg/DirectionRtl.jsx +0 -93
- package/src/@core/svg/LayoutCollapsed.jsx +0 -59
- package/src/@core/svg/LayoutHorizontal.jsx +0 -42
- package/src/@core/svg/LayoutVertical.jsx +0 -59
- package/src/@core/svg/Logo.jsx +0 -76
- package/src/@core/svg/SkinBordered.jsx +0 -54
- package/src/@core/svg/SkinDefault.jsx +0 -59
- package/src/@core/tailwind/plugin.js +0 -78
- package/src/@core/theme/ThemeComponent.js +0 -63
- package/src/@core/theme/ThemeOptions.js +0 -71
- package/src/@core/theme/breakpoints/index.js +0 -11
- package/src/@core/theme/colorSchemes.js +0 -326
- package/src/@core/theme/customShadows.js +0 -11
- package/src/@core/theme/globalStyles.js +0 -81
- package/src/@core/theme/index.js +0 -42
- package/src/@core/theme/overrides/accordion.js +0 -51
- package/src/@core/theme/overrides/accordion.jsx +0 -85
- package/src/@core/theme/overrides/alerts.js +0 -110
- package/src/@core/theme/overrides/alerts.jsx +0 -180
- package/src/@core/theme/overrides/autocomplete.js +0 -14
- package/src/@core/theme/overrides/autocomplete.jsx +0 -68
- package/src/@core/theme/overrides/avatar.js +0 -38
- package/src/@core/theme/overrides/avatars.js +0 -27
- package/src/@core/theme/overrides/backdrop.js +0 -22
- package/src/@core/theme/overrides/badges.js +0 -16
- package/src/@core/theme/overrides/breadcrumbs.js +0 -11
- package/src/@core/theme/overrides/button-group.js +0 -84
- package/src/@core/theme/overrides/button.js +0 -93
- package/src/@core/theme/overrides/buttonGroup.js +0 -9
- package/src/@core/theme/overrides/card.js +0 -83
- package/src/@core/theme/overrides/checkbox.jsx +0 -95
- package/src/@core/theme/overrides/chip.js +0 -72
- package/src/@core/theme/overrides/dataGrid.js +0 -114
- package/src/@core/theme/overrides/dateTimePicker.js +0 -65
- package/src/@core/theme/overrides/dialog.js +0 -120
- package/src/@core/theme/overrides/divider.js +0 -13
- package/src/@core/theme/overrides/drawer.js +0 -20
- package/src/@core/theme/overrides/fab.js +0 -13
- package/src/@core/theme/overrides/form-control-label.js +0 -19
- package/src/@core/theme/overrides/icon-button.js +0 -145
- package/src/@core/theme/overrides/index.js +0 -103
- package/src/@core/theme/overrides/input.js +0 -72
- package/src/@core/theme/overrides/link.js +0 -9
- package/src/@core/theme/overrides/list.js +0 -44
- package/src/@core/theme/overrides/menu.js +0 -25
- package/src/@core/theme/overrides/pagination.js +0 -41
- package/src/@core/theme/overrides/paper.js +0 -9
- package/src/@core/theme/overrides/popover.js +0 -16
- package/src/@core/theme/overrides/progress.js +0 -38
- package/src/@core/theme/overrides/radio.jsx +0 -80
- package/src/@core/theme/overrides/rating.js +0 -16
- package/src/@core/theme/overrides/rating.jsx +0 -32
- package/src/@core/theme/overrides/select.js +0 -19
- package/src/@core/theme/overrides/select.jsx +0 -52
- package/src/@core/theme/overrides/slider.js +0 -97
- package/src/@core/theme/overrides/snackbar.js +0 -19
- package/src/@core/theme/overrides/switch.js +0 -73
- package/src/@core/theme/overrides/switches.js +0 -25
- package/src/@core/theme/overrides/table-pagination.js +0 -39
- package/src/@core/theme/overrides/table.js +0 -81
- package/src/@core/theme/overrides/tabs.js +0 -30
- package/src/@core/theme/overrides/timeline.js +0 -80
- package/src/@core/theme/overrides/toggle-button.js +0 -33
- package/src/@core/theme/overrides/toggleButton.js +0 -16
- package/src/@core/theme/overrides/tooltip.js +0 -21
- package/src/@core/theme/overrides/typography.js +0 -13
- package/src/@core/theme/palette/index.js +0 -107
- package/src/@core/theme/shadows/index.js +0 -61
- package/src/@core/theme/shadows.js +0 -12
- package/src/@core/theme/spacing/index.js +0 -3
- package/src/@core/theme/spacing.js +0 -5
- package/src/@core/theme/typography/index.js +0 -65
- package/src/@core/theme/typography.js +0 -84
- package/src/@core/utils/create-emotion-cache.js +0 -5
- package/src/@core/utils/hex-to-rgba.js +0 -11
- package/src/@core/utils/serverHelpers.js +0 -45
- package/src/@menu/components/RouterLink.jsx +0 -18
- package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
- package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
- package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
- package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
- package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
- package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
- package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
- package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
- package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
- package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
- package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
- package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
- package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
- package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
- package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
- package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
- package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
- package/src/@menu/contexts/verticalNavContext.jsx +0 -65
- package/src/@menu/defaultConfigs.js +0 -12
- package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
- package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
- package/src/@menu/hooks/useMediaQuery.jsx +0 -29
- package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
- package/src/@menu/hooks/useVerticalNav.jsx +0 -19
- package/src/@menu/horizontal-menu/index.jsx +0 -8
- package/src/@menu/styles/StyledBackdrop.jsx +0 -15
- package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
- package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
- package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
- package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
- package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
- package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
- package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
- package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
- package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
- package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
- package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
- package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
- package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
- package/src/@menu/styles/styles.module.css +0 -5
- package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
- package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
- package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
- package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
- package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
- package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
- package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
- package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
- package/src/@menu/svg/ChevronRight.jsx +0 -9
- package/src/@menu/svg/Close.jsx +0 -12
- package/src/@menu/svg/RadioCircle.jsx +0 -12
- package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
- package/src/@menu/utils/menuClasses.js +0 -44
- package/src/@menu/utils/menuUtils.jsx +0 -145
- package/src/@menu/vertical-menu/index.jsx +0 -11
- package/src/configs/acl.js +0 -115
- package/src/configs/auth.js +0 -5
- package/src/configs/aws-exports.js +0 -30
- package/src/configs/firebase.js +0 -25
- package/src/configs/i18n.js +0 -34
- package/src/configs/primaryColorConfig.js +0 -35
- package/src/configs/themeConfig.js +0 -44
- package/src/layouts/UserLayout.js +0 -94
- package/src/layouts/UserThemeOptions.js +0 -191
- package/src/layouts/components/Direction.js +0 -30
- package/src/layouts/components/HtmlTooltip.js +0 -15
- package/src/layouts/components/Translations.js +0 -11
- package/src/layouts/components/UserDropdown.js +0 -217
- package/src/layouts/components/UserIcon.js +0 -40
- package/src/layouts/components/acl/Can.js +0 -6
- package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
- package/src/layouts/components/acl/CanViewNavLink.js +0 -17
- package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
- package/src/layouts/components/horizontal/AppBarContent.js +0 -39
- package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
- package/src/layouts/components/mui/StepperComps.js +0 -55
- package/src/layouts/components/vertical/AppBarContent.js +0 -35
- package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
- package/src/libs/ApexCharts.jsx +0 -5
- package/src/libs/ReactPlayer.jsx +0 -5
- package/src/libs/Recharts.jsx +0 -4
- package/src/libs/auth.js +0 -124
- package/src/libs/styles/AppFullCalendar.js +0 -505
- package/src/libs/styles/AppKeenSlider.js +0 -116
- package/src/libs/styles/AppReactApexCharts.jsx +0 -110
- package/src/libs/styles/AppReactDatepicker.jsx +0 -470
- package/src/libs/styles/AppReactDropzone.js +0 -76
- package/src/libs/styles/AppReactToastify.jsx +0 -108
- package/src/libs/styles/AppRecharts.js +0 -55
- package/src/libs/styles/inputOtp.module.css +0 -39
- package/src/libs/styles/tiptapEditor.css +0 -72
- package/src/navigation/horizontal/index.js +0 -246
- package/src/navigation/vertical/index.js +0 -253
- package/src/pages/401.js +0 -70
- package/src/pages/404.js +0 -67
- package/src/pages/500.js +0 -68
- package/src/pages/[slug].js +0 -115
- package/src/pages/_document.js +0 -72
- package/src/pages/api/navigation/regenerate-registry.js +0 -116
- package/src/pages/api/navigation/save.js +0 -218
- package/src/pages/authModule/acl/index.js +0 -48
- package/src/pages/authModule/forgot-password/index.js +0 -228
- package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
- package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
- package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
- package/src/pages/authModule/privacy/index.js +0 -721
- package/src/pages/authModule/users/index.js +0 -210
- package/src/pages/login/index.js +0 -328
- package/src/pages/mainHome/index.js +0 -181
- package/src/views/builder/inspector/definitions/cell/main.js +0 -4
- package/src/views/builder/inspector/definitions/column/main.js +0 -9
- package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
- package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
- package/src/views/builder/inspector/definitions/table/main.js +0 -9
- package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
- package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
- package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
- package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
- package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
- package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
- package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
- package/src/views/pages/misc/FooterIllustrations.js +0 -47
- package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
- package/src/views/pages/users/UserManageDialog.js +0 -283
- package/src/views/pages/users/UserViewPage.js +0 -199
- package/src/views/users/AddUserNameDialog.js +0 -162
- package/src/views/users/ContactManage.js +0 -449
- package/src/views/users/ResetPasswordDialog.js +0 -242
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared threshold evaluation engine.
|
|
3
|
+
*
|
|
4
|
+
* A threshold rule:
|
|
5
|
+
* { operator: '<' | '<=' | '>' | '>=' | '==' | '!=' | 'between',
|
|
6
|
+
* value: number,
|
|
7
|
+
* value2: number, // only used for 'between'
|
|
8
|
+
* color: string, // MUI palette key or CSS color
|
|
9
|
+
* label: string, // optional override label
|
|
10
|
+
* bg: string, // optional background override
|
|
11
|
+
* }
|
|
12
|
+
*
|
|
13
|
+
* evaluateThreshold returns the first matching rule (or null).
|
|
14
|
+
* resolveColor maps a MUI palette key to a CSS color.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const MUI_COLOR_MAP = {
|
|
18
|
+
// semantic
|
|
19
|
+
error: { color: '#d32f2f', bg: '#ffebee' },
|
|
20
|
+
warning: { color: '#e65100', bg: '#fff3e0' },
|
|
21
|
+
success: { color: '#2e7d32', bg: '#e8f5e9' },
|
|
22
|
+
info: { color: '#0277bd', bg: '#e1f5fe' },
|
|
23
|
+
primary: { color: '#1565c0', bg: '#e3f2fd' },
|
|
24
|
+
secondary:{ color: '#6a1b9a', bg: '#f3e5f5' },
|
|
25
|
+
// extras
|
|
26
|
+
purple: { color: '#7b1fa2', bg: '#f3e5f5' },
|
|
27
|
+
pink: { color: '#c2185b', bg: '#fce4ec' },
|
|
28
|
+
teal: { color: '#00695c', bg: '#e0f2f1' },
|
|
29
|
+
cyan: { color: '#00838f', bg: '#e0f7fa' },
|
|
30
|
+
orange: { color: '#e64a19', bg: '#fbe9e7' },
|
|
31
|
+
indigo: { color: '#283593', bg: '#e8eaf6' },
|
|
32
|
+
default: { color: 'inherit', bg: 'transparent' },
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Resolve a color string: MUI key → { color, bg } or pass-through. */
|
|
36
|
+
export function resolveMuiColor(key) {
|
|
37
|
+
return MUI_COLOR_MAP[key] ?? { color: key ?? 'inherit', bg: 'transparent' }
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Evaluate a value against a threshold list. Returns the first matching rule or null. */
|
|
41
|
+
export function evaluateThreshold(value, thresholds) {
|
|
42
|
+
if (!Array.isArray(thresholds) || !thresholds.length) return null
|
|
43
|
+
const v = Number(value)
|
|
44
|
+
for (const rule of thresholds) {
|
|
45
|
+
if (matches(v, rule)) return rule
|
|
46
|
+
}
|
|
47
|
+
return null
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function matches(v, rule) {
|
|
51
|
+
const a = Number(rule.value)
|
|
52
|
+
const b = Number(rule.value2)
|
|
53
|
+
switch (rule.operator) {
|
|
54
|
+
case '<': return v < a
|
|
55
|
+
case '<=': return v <= a
|
|
56
|
+
case '>': return v > a
|
|
57
|
+
case '>=': return v >= a
|
|
58
|
+
case '==': return v === a
|
|
59
|
+
case '!=': return v !== a
|
|
60
|
+
case 'between': return v >= a && v <= b
|
|
61
|
+
default: return false
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Convenience: returns { color, bg } for a value+thresholds pair.
|
|
67
|
+
* Falls back to { color: 'inherit', bg: 'transparent' }.
|
|
68
|
+
*/
|
|
69
|
+
export function thresholdColors(value, thresholds) {
|
|
70
|
+
const rule = evaluateThreshold(value, thresholds)
|
|
71
|
+
if (!rule) return { color: 'inherit', bg: 'transparent' }
|
|
72
|
+
const base = resolveMuiColor(rule.color)
|
|
73
|
+
return {
|
|
74
|
+
color: rule.colorOverride ?? base.color,
|
|
75
|
+
bg: rule.bg ?? base.bg,
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -10,6 +10,37 @@ export function findNode(node, targetId) {
|
|
|
10
10
|
return null
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Find a node anywhere in the schema — searches both root tree and dialogs array.
|
|
15
|
+
* Returns { node, location: 'root' | 'dialog', dialogId? }
|
|
16
|
+
*/
|
|
17
|
+
export function findNodeAnywhere(schema, targetId) {
|
|
18
|
+
const inRoot = findNode(schema.root, targetId)
|
|
19
|
+
if (inRoot) return { node: inRoot, location: 'root' }
|
|
20
|
+
|
|
21
|
+
for (const dialog of schema.dialogs ?? []) {
|
|
22
|
+
const inDialog = findNode(dialog, targetId)
|
|
23
|
+
if (inDialog) return { node: inDialog, location: 'dialog', dialogId: dialog.id }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return { node: null, location: null }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Update a node anywhere in the schema — patches root tree or the matching dialog.
|
|
31
|
+
*/
|
|
32
|
+
export function updateNodeAnywhere(schema, nodeId, patch, location, dialogId) {
|
|
33
|
+
if (location === 'dialog') {
|
|
34
|
+
return {
|
|
35
|
+
...schema,
|
|
36
|
+
dialogs: (schema.dialogs ?? []).map(d =>
|
|
37
|
+
d.id === dialogId ? updateNodeInTree(d, nodeId, patch) : d
|
|
38
|
+
),
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return { ...schema, root: updateNodeInTree(schema.root, nodeId, patch) }
|
|
42
|
+
}
|
|
43
|
+
|
|
13
44
|
export function removeFromTree(node, targetId) {
|
|
14
45
|
if (!node.children) return node
|
|
15
46
|
|
|
@@ -9,10 +9,10 @@ import React, {
|
|
|
9
9
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
10
10
|
import TextField from '@mui/material/TextField';
|
|
11
11
|
import Chip from '@mui/material/Chip';
|
|
12
|
-
import {
|
|
13
|
-
import ThemeComponent from 'src/@core/theme/ThemeComponent';
|
|
12
|
+
import { ThemeProvider, createTheme, lighten, styled } from '@mui/material/styles';
|
|
14
13
|
import moment from 'moment';
|
|
15
|
-
|
|
14
|
+
|
|
15
|
+
const defaultTheme = createTheme();
|
|
16
16
|
import izColors from 'src/configs/izColors.json';
|
|
17
17
|
|
|
18
18
|
// Utility for nested value access
|
|
@@ -112,9 +112,7 @@ const AutocompleteEditor = (props, ref) => {
|
|
|
112
112
|
};
|
|
113
113
|
|
|
114
114
|
return (
|
|
115
|
-
<
|
|
116
|
-
{({settings}) => (
|
|
117
|
-
<ThemeComponent settings={settings}>
|
|
115
|
+
<ThemeProvider theme={defaultTheme}>
|
|
118
116
|
<Autocomplete
|
|
119
117
|
multiple={!isSingle}
|
|
120
118
|
size="small"
|
|
@@ -163,9 +161,7 @@ const AutocompleteEditor = (props, ref) => {
|
|
|
163
161
|
))
|
|
164
162
|
}
|
|
165
163
|
/>
|
|
166
|
-
|
|
167
|
-
)}
|
|
168
|
-
</SettingsConsumer>
|
|
164
|
+
</ThemeProvider>
|
|
169
165
|
);
|
|
170
166
|
};
|
|
171
167
|
|
package/src/services/config.js
CHANGED
|
@@ -39,9 +39,17 @@ const _config = {
|
|
|
39
39
|
|
|
40
40
|
// Default token reader — reads the key Mazajk (and most host apps) use.
|
|
41
41
|
// Override via configureRoboByte({ getAccessToken }) or via the provider prop.
|
|
42
|
+
//
|
|
43
|
+
// Resolution order:
|
|
44
|
+
// 1. localStorage 'accessToken' (normal auth flow — takes priority)
|
|
45
|
+
// 2. NEXT_PUBLIC_DEV_ACCESS_TOKEN env var (dev convenience, .env.local only)
|
|
42
46
|
getAccessToken: () => {
|
|
43
47
|
if (typeof window === 'undefined') return null
|
|
44
|
-
return
|
|
48
|
+
return (
|
|
49
|
+
localStorage.getItem('accessToken') ??
|
|
50
|
+
(process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_DEV_ACCESS_TOKEN : null) ??
|
|
51
|
+
null
|
|
52
|
+
)
|
|
45
53
|
},
|
|
46
54
|
|
|
47
55
|
// Default user reader — parses the JSON object Mazajk stores in localStorage.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* globalStore — cross-route reactive data store.
|
|
3
|
+
*
|
|
4
|
+
* Lives at module scope so it survives Next.js client-side navigations.
|
|
5
|
+
* Any page, dialog, renderer, or Calculation function can read and write it.
|
|
6
|
+
*
|
|
7
|
+
* ── In action code (Calculation functions) ───────────────────────────────────
|
|
8
|
+
*
|
|
9
|
+
* // Read current global state
|
|
10
|
+
* console.log(globalData.selectedUser)
|
|
11
|
+
*
|
|
12
|
+
* // Write (like setData but global — persists across route changes)
|
|
13
|
+
* setGlobalData(prev => ({ ...prev, selectedUser: clickedItem }))
|
|
14
|
+
* setGlobalData({ theme: 'dark', locale: 'en' }) // full replace also works
|
|
15
|
+
*
|
|
16
|
+
* // Then navigate — globalData.selectedUser is still there on the next page
|
|
17
|
+
* router.push('/user-detail')
|
|
18
|
+
*
|
|
19
|
+
* ── In React components ───────────────────────────────────────────────────────
|
|
20
|
+
*
|
|
21
|
+
* import { useGlobalStore } from 'src/hooks/useGlobalStore'
|
|
22
|
+
*
|
|
23
|
+
* function MyRenderer() {
|
|
24
|
+
* const { globalData, setGlobalData } = useGlobalStore()
|
|
25
|
+
* return <div>{globalData.selectedUser?.name}</div>
|
|
26
|
+
* }
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// ── Internal state ────────────────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
let _state = {}
|
|
32
|
+
const _listeners = new Set()
|
|
33
|
+
|
|
34
|
+
// ── Public API ────────────────────────────────────────────────────────────────
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns a snapshot of the current global state.
|
|
38
|
+
* This is synchronous and safe to call from anywhere, including jsExecutor.
|
|
39
|
+
* @returns {object}
|
|
40
|
+
*/
|
|
41
|
+
export function getGlobalData() {
|
|
42
|
+
return _state
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Updates the global state.
|
|
47
|
+
* Accepts either a plain object (shallow-merged) or an updater function
|
|
48
|
+
* that receives the previous state and returns the next state.
|
|
49
|
+
*
|
|
50
|
+
* All subscribed React components are notified synchronously so they
|
|
51
|
+
* re-render with the new values.
|
|
52
|
+
*
|
|
53
|
+
* @param {object | ((prev: object) => object)} updater
|
|
54
|
+
*/
|
|
55
|
+
export function setGlobalData(updater) {
|
|
56
|
+
const next = typeof updater === 'function' ? updater(_state) : updater
|
|
57
|
+
_state = next && typeof next === 'object' ? { ..._state, ...next } : _state
|
|
58
|
+
_listeners.forEach(fn => fn(_state))
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Subscribe to global state changes.
|
|
63
|
+
* Returns an unsubscribe function — call it in useEffect cleanup.
|
|
64
|
+
*
|
|
65
|
+
* @param {(state: object) => void} listener
|
|
66
|
+
* @returns {() => void} unsubscribe
|
|
67
|
+
*/
|
|
68
|
+
export function subscribeGlobal(listener) {
|
|
69
|
+
_listeners.add(listener)
|
|
70
|
+
return () => _listeners.delete(listener)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resets the global store to an empty object.
|
|
75
|
+
* Useful for logout / session reset.
|
|
76
|
+
*/
|
|
77
|
+
export function resetGlobalData() {
|
|
78
|
+
_state = {}
|
|
79
|
+
_listeners.forEach(fn => fn(_state))
|
|
80
|
+
}
|
|
@@ -3,12 +3,12 @@ import Autocomplete from '@mui/material/Autocomplete';
|
|
|
3
3
|
import TextField from '@mui/material/TextField';
|
|
4
4
|
import Chip from '@mui/material/Chip';
|
|
5
5
|
import { createRoot } from 'react-dom/client';
|
|
6
|
-
import
|
|
6
|
+
import { ThemeProvider, createTheme, darken, lighten, styled } from "@mui/material/styles";
|
|
7
7
|
import moment from 'moment';
|
|
8
8
|
import Typography from "@mui/material/Typography";
|
|
9
|
-
import { darken, lighten, styled } from "@mui/material/styles";
|
|
10
9
|
import izColors from "src/configs/izColors.json"
|
|
11
|
-
|
|
10
|
+
|
|
11
|
+
const defaultTheme = createTheme();
|
|
12
12
|
const AutocompleteEditor = React.memo(
|
|
13
13
|
forwardRef((props, ref) => {
|
|
14
14
|
// Initialize as an array for multi-selection.
|
|
@@ -122,9 +122,7 @@ const AutocompleteEditor = React.memo(
|
|
|
122
122
|
});
|
|
123
123
|
|
|
124
124
|
return (
|
|
125
|
-
<
|
|
126
|
-
{({ settings }) => (
|
|
127
|
-
<ThemeComponent settings={settings}>
|
|
125
|
+
<ThemeProvider theme={defaultTheme}>
|
|
128
126
|
<Autocomplete
|
|
129
127
|
multiple={!props.isSingle === true}
|
|
130
128
|
size="small"
|
|
@@ -179,9 +177,7 @@ const AutocompleteEditor = React.memo(
|
|
|
179
177
|
))
|
|
180
178
|
}
|
|
181
179
|
/>
|
|
182
|
-
|
|
183
|
-
)}
|
|
184
|
-
</SettingsConsumer>
|
|
180
|
+
</ThemeProvider>
|
|
185
181
|
);
|
|
186
182
|
})
|
|
187
183
|
);
|
|
@@ -3,13 +3,13 @@ import Autocomplete from '@mui/material/Autocomplete';
|
|
|
3
3
|
import TextField from '@mui/material/TextField';
|
|
4
4
|
import Chip from '@mui/material/Chip';
|
|
5
5
|
import {createRoot} from 'react-dom/client';
|
|
6
|
-
import {
|
|
7
|
-
import ThemeComponent from 'src/@core/theme/ThemeComponent';
|
|
6
|
+
import { ThemeProvider, createTheme, darken, lighten, styled } from "@mui/material/styles";
|
|
8
7
|
import moment from 'moment';
|
|
9
8
|
import Typography from "@mui/material/Typography";
|
|
10
|
-
import {darken, lighten, styled} from "@mui/material/styles";
|
|
11
9
|
import izColors from "src/configs/izColors.json"
|
|
12
10
|
|
|
11
|
+
const defaultTheme = createTheme();
|
|
12
|
+
|
|
13
13
|
const AutocompleteEditor = React.memo(
|
|
14
14
|
forwardRef((props, ref) => {
|
|
15
15
|
// Initialize as an array for multi-selection.
|
|
@@ -128,9 +128,7 @@ const AutocompleteEditor = React.memo(
|
|
|
128
128
|
});
|
|
129
129
|
|
|
130
130
|
return (
|
|
131
|
-
<
|
|
132
|
-
{({settings}) => (
|
|
133
|
-
<ThemeComponent settings={settings}>
|
|
131
|
+
<ThemeProvider theme={defaultTheme}>
|
|
134
132
|
<Autocomplete
|
|
135
133
|
multiple={!props.isSingle === true}
|
|
136
134
|
size="small"
|
|
@@ -198,9 +196,7 @@ const AutocompleteEditor = React.memo(
|
|
|
198
196
|
))
|
|
199
197
|
}
|
|
200
198
|
/>
|
|
201
|
-
|
|
202
|
-
)}
|
|
203
|
-
</SettingsConsumer>
|
|
199
|
+
</ThemeProvider>
|
|
204
200
|
);
|
|
205
201
|
})
|
|
206
202
|
);
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
// - isSingle (bool)
|
|
9
9
|
// Optional extras: page (default 1), pageSize (default 50)
|
|
10
10
|
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
11
|
+
import {Services} from 'src/services/Endpoints'
|
|
12
|
+
import {Endpoints} from 'src/services/Endpoints'
|
|
13
|
+
import {ReportBuilderEndpoints} from 'services/Endpoints/ReportBuilderEndpoints'
|
|
14
|
+
import {FilterFormat} from 'services/helper/FilterFormat'
|
|
15
|
+
import {Helper} from 'services/helper/helper'
|
|
16
16
|
|
|
17
17
|
// In-memory cache for builder models by pageId (resets on refresh/new tab)
|
|
18
18
|
const builderModelCache = new Map()
|
|
@@ -48,7 +48,7 @@ function toNestedByUnderscore(input) {
|
|
|
48
48
|
typeof value === 'object' &&
|
|
49
49
|
!Array.isArray(value)
|
|
50
50
|
) {
|
|
51
|
-
ref[last] = {
|
|
51
|
+
ref[last] = {...existing, ...value}
|
|
52
52
|
} else {
|
|
53
53
|
ref[last] = value
|
|
54
54
|
}
|
|
@@ -63,7 +63,7 @@ function toNestedByUnderscore(input) {
|
|
|
63
63
|
const k = Helper.toCamelCaseDotNet(parts[0])
|
|
64
64
|
const existing = result[k]
|
|
65
65
|
if (existing && typeof existing === 'object' && nestedVal && typeof nestedVal === 'object') {
|
|
66
|
-
result[k] = {
|
|
66
|
+
result[k] = {...existing, ...nestedVal}
|
|
67
67
|
} else {
|
|
68
68
|
result[k] = nestedVal
|
|
69
69
|
}
|
|
@@ -96,16 +96,18 @@ function convertToNestedObject(flatObject, builderData) {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
export async function fetchReportDataByPageId({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
99
|
+
pageId,
|
|
100
|
+
filter = {},
|
|
101
|
+
isDataOnly = false,
|
|
102
|
+
dataAsObject = false,
|
|
103
|
+
isPagination = true,
|
|
104
|
+
isSingle = false,
|
|
105
|
+
globalParams = null,
|
|
106
|
+
page = 1,
|
|
107
|
+
pageSize = 50,
|
|
108
|
+
authContext = null,
|
|
109
|
+
context = null
|
|
110
|
+
}) {
|
|
109
111
|
try {
|
|
110
112
|
const asObject = dataAsObject
|
|
111
113
|
|
|
@@ -117,45 +119,82 @@ export async function fetchReportDataByPageId({
|
|
|
117
119
|
Endpoints.ReportBuilder.Post.GetReportDetails,
|
|
118
120
|
false,
|
|
119
121
|
{},
|
|
120
|
-
{
|
|
122
|
+
{id: null, pageId}
|
|
121
123
|
)
|
|
122
124
|
|
|
123
125
|
const detailsData = detailsResp?.data
|
|
124
126
|
if (!detailsData || !detailsData.value) {
|
|
125
|
-
return {
|
|
127
|
+
return {success: false, error: 'Report detailsOld not found'}
|
|
126
128
|
}
|
|
127
129
|
|
|
128
|
-
builderModel = {
|
|
130
|
+
builderModel = {...JSON.parse(detailsData.value), id: detailsData.id}
|
|
129
131
|
builderModelCache.set(cacheKey, builderModel)
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
if (globalParams != null && builderModel?.selectionParams != null) {
|
|
133
135
|
builderModel.selectionParams = builderModel.selectionParams.map((param, idx) => {
|
|
134
136
|
if (globalParams.hasOwnProperty(idx)) {
|
|
135
|
-
return {
|
|
137
|
+
return {...param, value: globalParams[idx]}
|
|
136
138
|
}
|
|
137
139
|
return param
|
|
138
140
|
})
|
|
139
141
|
}
|
|
140
142
|
|
|
141
143
|
// 2) Prepare filters (no AG Grid specifics)
|
|
142
|
-
let localFilter = filter ? {
|
|
144
|
+
let localFilter = filter ? {...filter} : {}
|
|
143
145
|
let localTFilter = localFilter?.Tfilter ? [...localFilter.Tfilter] : []
|
|
144
146
|
localTFilter = localFilter?.TFilter ? [...localTFilter, ...localFilter.TFilter] : [...localTFilter]
|
|
145
147
|
const builderFilter = builderModel?.filter?.Tfilter ?? []
|
|
146
148
|
localTFilter = (localTFilter || []).filter(x => x?.value !== null && x?.value !== undefined && x?.value !== '')
|
|
147
149
|
localTFilter = [...localTFilter, ...builderFilter]
|
|
150
|
+
|
|
151
|
+
// Extract customFilterCode from filter or builderModel
|
|
152
|
+
const customFilterCode = filter?.customFilterCode || builderModel?.filter?.customFilterCode || ''
|
|
153
|
+
|
|
148
154
|
delete localFilter.Tfilter
|
|
149
155
|
delete localFilter.TFilter
|
|
150
156
|
delete localFilter.LocalTfilter
|
|
151
157
|
delete localFilter.localTfilter
|
|
152
158
|
delete localFilter.fixedTFilter
|
|
153
159
|
delete localFilter.fixedTfilter
|
|
160
|
+
delete localFilter.customFilterCode
|
|
154
161
|
|
|
155
162
|
const formattedT = FilterFormat(localTFilter)
|
|
163
|
+
|
|
164
|
+
// Execute custom filter code if present
|
|
165
|
+
let customFilterResult = []
|
|
166
|
+
if (customFilterCode && customFilterCode.trim()) {
|
|
167
|
+
try {
|
|
168
|
+
const executeCode = new Function('authContext', 'context', 'filters', `
|
|
169
|
+
let customFilter = [];
|
|
170
|
+
try {
|
|
171
|
+
${customFilterCode}
|
|
172
|
+
} catch (e) {
|
|
173
|
+
console.error('Inner error in customFilterCode:', e);
|
|
174
|
+
}
|
|
175
|
+
return customFilter;
|
|
176
|
+
`)
|
|
177
|
+
const result = executeCode(authContext, context, localTFilter)
|
|
178
|
+
|
|
179
|
+
if (result && Array.isArray(result)) {
|
|
180
|
+
customFilterResult = result
|
|
181
|
+
} else if (result && !Array.isArray(result)) {
|
|
182
|
+
console.error('Error: Custom filter must return an array')
|
|
183
|
+
}
|
|
184
|
+
} catch (error) {
|
|
185
|
+
console.error('Error executing custom filter code:', error)
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Merge custom filter results with formatted filters
|
|
190
|
+
const finalTFilter = [
|
|
191
|
+
...(Array.isArray(formattedT) ? formattedT.filter(f => (f == null ? false : f.value !== null)) : []),
|
|
192
|
+
...customFilterResult
|
|
193
|
+
]
|
|
194
|
+
|
|
156
195
|
let data = {
|
|
157
196
|
...localFilter,
|
|
158
|
-
tFilter:
|
|
197
|
+
tFilter: finalTFilter,
|
|
159
198
|
selectFields: builderModel?.selectedFields || [],
|
|
160
199
|
selectParams: builderModel?.selectionParams || [],
|
|
161
200
|
rawSql: builderModel?.rawSql
|
|
@@ -167,8 +206,8 @@ export async function fetchReportDataByPageId({
|
|
|
167
206
|
? 'SqlPagination'
|
|
168
207
|
: 'Pagination'
|
|
169
208
|
: builderModel?.isRaw
|
|
170
|
-
|
|
171
|
-
|
|
209
|
+
? 'SqlNoPagination'
|
|
210
|
+
: 'NoPagination'
|
|
172
211
|
|
|
173
212
|
const response = await Services.PostService(ReportBuilderEndpoints.Post.GenericGet, false, data, {
|
|
174
213
|
page: isSingle ? 1 : page,
|
|
@@ -183,7 +222,9 @@ export async function fetchReportDataByPageId({
|
|
|
183
222
|
if (asObject) {
|
|
184
223
|
rows = rows.map(r => toNestedByUnderscore(r))
|
|
185
224
|
}
|
|
186
|
-
if (isSingle)
|
|
225
|
+
if (isSingle)
|
|
226
|
+
rows = rows[0]
|
|
227
|
+
|
|
187
228
|
|
|
188
229
|
if (isDataOnly) {
|
|
189
230
|
return rows
|
|
@@ -198,12 +239,12 @@ export async function fetchReportDataByPageId({
|
|
|
198
239
|
getType,
|
|
199
240
|
filter: data,
|
|
200
241
|
sourceModel: builderModel?.reportSource?.fullName,
|
|
201
|
-
params: {
|
|
242
|
+
params: {page: isSingle ? 1 : page, pageSize: isSingle ? 1 : pageSize}
|
|
202
243
|
}
|
|
203
244
|
}
|
|
204
245
|
} catch (error) {
|
|
205
246
|
console.error('fetchReportDataByPageId error', error)
|
|
206
|
-
return {
|
|
247
|
+
return {success: false, error}
|
|
207
248
|
}
|
|
208
249
|
}
|
|
209
250
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* routerRef — module-level Next.js router singleton.
|
|
3
|
+
*
|
|
4
|
+
* Why a singleton instead of a hook?
|
|
5
|
+
* jsExecutor.js runs user Calculation code outside of React's render cycle.
|
|
6
|
+
* It cannot call useRouter() directly. Instead, RouterSync (mounted inside
|
|
7
|
+
* RoboByteFrontBuilderProvider) keeps this reference in sync on every
|
|
8
|
+
* navigation, and jsExecutor imports getRouter() to inject it into every
|
|
9
|
+
* Calculation as the `router` bare-name variable.
|
|
10
|
+
*
|
|
11
|
+
* Usage in action code:
|
|
12
|
+
* router.push('/dashboard')
|
|
13
|
+
* router.replace({ pathname: '/report/[id]', query: { id: 42 } })
|
|
14
|
+
* router.back()
|
|
15
|
+
* console.log(router.pathname, router.query)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
let _router = null
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Called by RouterSync on every render so the ref is always current.
|
|
22
|
+
* @param {import('next/router').NextRouter} router
|
|
23
|
+
*/
|
|
24
|
+
export function setRouter(router) {
|
|
25
|
+
_router = router
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Returns the current Next.js router instance, or null if RouterSync has
|
|
30
|
+
* not mounted yet (e.g. SSR or very early render).
|
|
31
|
+
* @returns {import('next/router').NextRouter | null}
|
|
32
|
+
*/
|
|
33
|
+
export function getRouter() {
|
|
34
|
+
return _router
|
|
35
|
+
}
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from '@mui/material'
|
|
19
19
|
import Box from '@mui/material/Box'
|
|
20
20
|
import { Close } from 'mdi-material-ui'
|
|
21
|
-
import { Warning,
|
|
21
|
+
import { Warning, DeleteOutlined } from '@mui/icons-material'
|
|
22
22
|
import { useState } from 'react'
|
|
23
23
|
|
|
24
24
|
const ConfirmDelete = props => {
|
|
@@ -111,7 +111,7 @@ const ConfirmDelete = props => {
|
|
|
111
111
|
mt: 2,
|
|
112
112
|
mb: 3
|
|
113
113
|
}}>
|
|
114
|
-
<
|
|
114
|
+
<DeleteOutlined
|
|
115
115
|
sx={{
|
|
116
116
|
fontSize: 40,
|
|
117
117
|
color: '#d32f2f',
|