robobyte-front-builder 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (614) hide show
  1. package/jsconfig.json +28 -0
  2. package/next.config.js +75 -0
  3. package/package.json +163 -0
  4. package/public/fonts/NotoSansArabic-VariableFont_wdth,wght.ttf +0 -0
  5. package/public/fonts/font.js +2 -0
  6. package/public/fonts/logo.js +2 -0
  7. package/public/images/appicon.png +0 -0
  8. package/public/images/appicon1.png +0 -0
  9. package/public/images/asiacell.png +0 -0
  10. package/public/images/avatars/1.png +0 -0
  11. package/public/images/avatars/3.png +0 -0
  12. package/public/images/avatars/4.png +0 -0
  13. package/public/images/avatars/5.png +0 -0
  14. package/public/images/cards/trophy.png +0 -0
  15. package/public/images/favicon.png +0 -0
  16. package/public/images/favicon1.png +0 -0
  17. package/public/images/icons/bag.png +0 -0
  18. package/public/images/icons/briefcase.png +0 -0
  19. package/public/images/icons/calendar.png +0 -0
  20. package/public/images/icons/dashboard.png +0 -0
  21. package/public/images/icons/dollar.png +0 -0
  22. package/public/images/icons/person.png +0 -0
  23. package/public/images/icons/profit.png +0 -0
  24. package/public/images/icons/setting.png +0 -0
  25. package/public/images/misc/chart.png +0 -0
  26. package/public/images/misc/paypal.png +0 -0
  27. package/public/images/pages/401.png +0 -0
  28. package/public/images/pages/404.png +0 -0
  29. package/public/images/pages/500.png +0 -0
  30. package/public/images/pages/auth-v2-forgot-password-illustration-bordered-dark.png +0 -0
  31. package/public/images/pages/auth-v2-forgot-password-illustration-bordered-light.png +0 -0
  32. package/public/images/pages/auth-v2-forgot-password-illustration-dark.png +0 -0
  33. package/public/images/pages/auth-v2-forgot-password-illustration-light.png +0 -0
  34. package/public/images/pages/auth-v2-forgot-password-mask-dark.png +0 -0
  35. package/public/images/pages/auth-v2-forgot-password-mask-light.png +0 -0
  36. package/public/images/pages/auth-v2-login-illustration-bordered-dark.png +0 -0
  37. package/public/images/pages/auth-v2-login-illustration-bordered-light.png +0 -0
  38. package/public/images/pages/auth-v2-login-illustration-dark.png +0 -0
  39. package/public/images/pages/auth-v2-login-illustration-light.png +0 -0
  40. package/public/images/pages/auth-v2-login-mask-dark.png +0 -0
  41. package/public/images/pages/auth-v2-login-mask-light.png +0 -0
  42. package/public/images/pages/auth-v2-register-illustration-bordered-dark.png +0 -0
  43. package/public/images/pages/auth-v2-register-illustration-bordered-light.png +0 -0
  44. package/public/images/pages/auth-v2-register-illustration-dark.png +0 -0
  45. package/public/images/pages/auth-v2-register-illustration-light.png +0 -0
  46. package/public/images/pages/auth-v2-register-mask-dark.png +0 -0
  47. package/public/images/pages/auth-v2-register-mask-light.png +0 -0
  48. package/public/images/pages/misc-401-object.png +0 -0
  49. package/public/images/pages/misc-404-object.png +0 -0
  50. package/public/images/pages/misc-500-object.png +0 -0
  51. package/public/images/pages/misc-coming-soon-object.png +0 -0
  52. package/public/images/pages/misc-mask-dark.png +0 -0
  53. package/public/images/pages/misc-mask-light.png +0 -0
  54. package/public/images/white.jpg +0 -0
  55. package/public/images/zain.png +0 -0
  56. package/public/locales/ar.json +35 -0
  57. package/public/navigationTest/Navigation.json +13 -0
  58. package/public/vercel.svg +4 -0
  59. package/src/@core/components/auth/AclGuard.js +55 -0
  60. package/src/@core/components/auth/AuthGuard.js +40 -0
  61. package/src/@core/components/auth/GuestGuard.js +30 -0
  62. package/src/@core/components/custom-inputs/Horizontal.jsx +143 -0
  63. package/src/@core/components/custom-inputs/Image.jsx +78 -0
  64. package/src/@core/components/custom-inputs/Vertical.jsx +113 -0
  65. package/src/@core/components/customizer/index.jsx +470 -0
  66. package/src/@core/components/customizer/styles.module.css +169 -0
  67. package/src/@core/components/mui/Avatar.jsx +41 -0
  68. package/src/@core/components/mui/Badge.jsx +20 -0
  69. package/src/@core/components/mui/IconButton.jsx +74 -0
  70. package/src/@core/components/mui/TabList.jsx +60 -0
  71. package/src/@core/components/option-menu/index.jsx +137 -0
  72. package/src/@core/components/scroll-to-top/index.jsx +43 -0
  73. package/src/@core/components/spinner/index.js +26 -0
  74. package/src/@core/components/window-wrapper/index.js +27 -0
  75. package/src/@core/contexts/settingsContext.jsx +98 -0
  76. package/src/@core/hooks/useBgColor.js +63 -0
  77. package/src/@core/hooks/useImageVariant.js +27 -0
  78. package/src/@core/hooks/useLayoutInit.js +37 -0
  79. package/src/@core/hooks/useObjectCookie.js +18 -0
  80. package/src/@core/hooks/useSettings.jsx +15 -0
  81. package/src/@core/layouts/BlankLayout.js +37 -0
  82. package/src/@core/layouts/BlankLayoutWithAppBar.js +51 -0
  83. package/src/@core/layouts/HorizontalLayout.jsx +151 -0
  84. package/src/@core/layouts/Layout.js +39 -0
  85. package/src/@core/layouts/VerticalLayout.jsx +124 -0
  86. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +115 -0
  87. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +67 -0
  88. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +352 -0
  89. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +21 -0
  90. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +195 -0
  91. package/src/@core/layouts/components/horizontal/navigation/index.js +31 -0
  92. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +96 -0
  93. package/src/@core/layouts/components/shared-components/ModeToggler.js +32 -0
  94. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +226 -0
  95. package/src/@core/layouts/components/shared-components/UserDropdown.js +177 -0
  96. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +46 -0
  97. package/src/@core/layouts/components/shared-components/footer/index.js +61 -0
  98. package/src/@core/layouts/components/vertical/appBar/index.js +74 -0
  99. package/src/@core/layouts/components/vertical/navigation/Drawer.js +122 -0
  100. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +435 -0
  101. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +180 -0
  102. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +26 -0
  103. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +258 -0
  104. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +102 -0
  105. package/src/@core/layouts/components/vertical/navigation/index.js +169 -0
  106. package/src/@core/layouts/utils.js +69 -0
  107. package/src/@core/styles/Table.module.css +93 -0
  108. package/src/@core/styles/horizontal/menuItemStyles.js +100 -0
  109. package/src/@core/styles/horizontal/menuRootStyles.js +19 -0
  110. package/src/@core/styles/libs/fullcalendar/index.js +461 -0
  111. package/src/@core/styles/libs/keen-slider/index.js +111 -0
  112. package/src/@core/styles/libs/react-apexcharts/index.js +107 -0
  113. package/src/@core/styles/libs/react-cleave/index.js +33 -0
  114. package/src/@core/styles/libs/react-credit-cards/index.js +11 -0
  115. package/src/@core/styles/libs/react-datepicker/index.js +388 -0
  116. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +144 -0
  117. package/src/@core/styles/libs/react-dropzone/index.js +76 -0
  118. package/src/@core/styles/libs/react-hot-toast/index.js +37 -0
  119. package/src/@core/styles/libs/recharts/index.js +47 -0
  120. package/src/@core/styles/stepper.js +103 -0
  121. package/src/@core/styles/vertical/menuItemStyles.js +138 -0
  122. package/src/@core/styles/vertical/menuSectionStyles.js +54 -0
  123. package/src/@core/styles/vertical/navigationCustomStyles.js +62 -0
  124. package/src/@core/svg/ContentCompact.jsx +17 -0
  125. package/src/@core/svg/ContentWide.jsx +17 -0
  126. package/src/@core/svg/DirectionLtr.jsx +93 -0
  127. package/src/@core/svg/DirectionRtl.jsx +93 -0
  128. package/src/@core/svg/LayoutCollapsed.jsx +59 -0
  129. package/src/@core/svg/LayoutHorizontal.jsx +42 -0
  130. package/src/@core/svg/LayoutVertical.jsx +59 -0
  131. package/src/@core/svg/Logo.jsx +76 -0
  132. package/src/@core/svg/SkinBordered.jsx +54 -0
  133. package/src/@core/svg/SkinDefault.jsx +59 -0
  134. package/src/@core/tailwind/plugin.js +78 -0
  135. package/src/@core/theme/ThemeComponent.js +63 -0
  136. package/src/@core/theme/ThemeOptions.js +71 -0
  137. package/src/@core/theme/breakpoints/index.js +11 -0
  138. package/src/@core/theme/colorSchemes.js +326 -0
  139. package/src/@core/theme/customShadows.js +11 -0
  140. package/src/@core/theme/globalStyles.js +81 -0
  141. package/src/@core/theme/index.js +42 -0
  142. package/src/@core/theme/overrides/accordion.js +51 -0
  143. package/src/@core/theme/overrides/accordion.jsx +85 -0
  144. package/src/@core/theme/overrides/alerts.js +110 -0
  145. package/src/@core/theme/overrides/alerts.jsx +180 -0
  146. package/src/@core/theme/overrides/autocomplete.js +14 -0
  147. package/src/@core/theme/overrides/autocomplete.jsx +68 -0
  148. package/src/@core/theme/overrides/avatar.js +38 -0
  149. package/src/@core/theme/overrides/avatars.js +27 -0
  150. package/src/@core/theme/overrides/backdrop.js +22 -0
  151. package/src/@core/theme/overrides/badges.js +16 -0
  152. package/src/@core/theme/overrides/breadcrumbs.js +11 -0
  153. package/src/@core/theme/overrides/button-group.js +84 -0
  154. package/src/@core/theme/overrides/button.js +93 -0
  155. package/src/@core/theme/overrides/buttonGroup.js +9 -0
  156. package/src/@core/theme/overrides/card.js +83 -0
  157. package/src/@core/theme/overrides/checkbox.jsx +95 -0
  158. package/src/@core/theme/overrides/chip.js +72 -0
  159. package/src/@core/theme/overrides/dataGrid.js +114 -0
  160. package/src/@core/theme/overrides/dateTimePicker.js +65 -0
  161. package/src/@core/theme/overrides/dialog.js +120 -0
  162. package/src/@core/theme/overrides/divider.js +13 -0
  163. package/src/@core/theme/overrides/drawer.js +20 -0
  164. package/src/@core/theme/overrides/fab.js +13 -0
  165. package/src/@core/theme/overrides/form-control-label.js +19 -0
  166. package/src/@core/theme/overrides/icon-button.js +145 -0
  167. package/src/@core/theme/overrides/index.js +103 -0
  168. package/src/@core/theme/overrides/input.js +72 -0
  169. package/src/@core/theme/overrides/link.js +9 -0
  170. package/src/@core/theme/overrides/list.js +44 -0
  171. package/src/@core/theme/overrides/menu.js +25 -0
  172. package/src/@core/theme/overrides/pagination.js +41 -0
  173. package/src/@core/theme/overrides/paper.js +9 -0
  174. package/src/@core/theme/overrides/popover.js +16 -0
  175. package/src/@core/theme/overrides/progress.js +38 -0
  176. package/src/@core/theme/overrides/radio.jsx +80 -0
  177. package/src/@core/theme/overrides/rating.js +16 -0
  178. package/src/@core/theme/overrides/rating.jsx +32 -0
  179. package/src/@core/theme/overrides/select.js +19 -0
  180. package/src/@core/theme/overrides/select.jsx +52 -0
  181. package/src/@core/theme/overrides/slider.js +97 -0
  182. package/src/@core/theme/overrides/snackbar.js +19 -0
  183. package/src/@core/theme/overrides/switch.js +73 -0
  184. package/src/@core/theme/overrides/switches.js +25 -0
  185. package/src/@core/theme/overrides/table-pagination.js +39 -0
  186. package/src/@core/theme/overrides/table.js +81 -0
  187. package/src/@core/theme/overrides/tabs.js +30 -0
  188. package/src/@core/theme/overrides/timeline.js +80 -0
  189. package/src/@core/theme/overrides/toggle-button.js +33 -0
  190. package/src/@core/theme/overrides/toggleButton.js +16 -0
  191. package/src/@core/theme/overrides/tooltip.js +21 -0
  192. package/src/@core/theme/overrides/typography.js +13 -0
  193. package/src/@core/theme/palette/index.js +107 -0
  194. package/src/@core/theme/shadows/index.js +61 -0
  195. package/src/@core/theme/shadows.js +12 -0
  196. package/src/@core/theme/spacing/index.js +3 -0
  197. package/src/@core/theme/spacing.js +5 -0
  198. package/src/@core/theme/typography/index.js +65 -0
  199. package/src/@core/theme/typography.js +84 -0
  200. package/src/@core/utils/create-emotion-cache.js +5 -0
  201. package/src/@core/utils/hex-to-rgba.js +11 -0
  202. package/src/@core/utils/serverHelpers.js +45 -0
  203. package/src/@menu/components/RouterLink.jsx +18 -0
  204. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +88 -0
  205. package/src/@menu/components/horizontal-menu/Menu.jsx +83 -0
  206. package/src/@menu/components/horizontal-menu/MenuButton.jsx +100 -0
  207. package/src/@menu/components/horizontal-menu/MenuItem.jsx +183 -0
  208. package/src/@menu/components/horizontal-menu/SubMenu.jsx +418 -0
  209. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +41 -0
  210. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +20 -0
  211. package/src/@menu/components/vertical-menu/Menu.jsx +161 -0
  212. package/src/@menu/components/vertical-menu/MenuButton.jsx +95 -0
  213. package/src/@menu/components/vertical-menu/MenuItem.jsx +180 -0
  214. package/src/@menu/components/vertical-menu/MenuSection.jsx +124 -0
  215. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +70 -0
  216. package/src/@menu/components/vertical-menu/NavHeader.jsx +39 -0
  217. package/src/@menu/components/vertical-menu/SubMenu.jsx +420 -0
  218. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +101 -0
  219. package/src/@menu/components/vertical-menu/VerticalNav.jsx +216 -0
  220. package/src/@menu/contexts/horizontalNavContext.jsx +29 -0
  221. package/src/@menu/contexts/verticalNavContext.jsx +65 -0
  222. package/src/@menu/defaultConfigs.js +12 -0
  223. package/src/@menu/hooks/useHorizontalMenu.jsx +19 -0
  224. package/src/@menu/hooks/useHorizontalNav.jsx +19 -0
  225. package/src/@menu/hooks/useMediaQuery.jsx +29 -0
  226. package/src/@menu/hooks/useVerticalMenu.jsx +19 -0
  227. package/src/@menu/hooks/useVerticalNav.jsx +19 -0
  228. package/src/@menu/horizontal-menu/index.jsx +8 -0
  229. package/src/@menu/styles/StyledBackdrop.jsx +15 -0
  230. package/src/@menu/styles/StyledMenuIcon.jsx +12 -0
  231. package/src/@menu/styles/StyledMenuLabel.jsx +16 -0
  232. package/src/@menu/styles/StyledMenuPrefix.jsx +10 -0
  233. package/src/@menu/styles/StyledMenuSectionLabel.jsx +21 -0
  234. package/src/@menu/styles/StyledMenuSuffix.jsx +10 -0
  235. package/src/@menu/styles/StyledSubMenuContent.jsx +43 -0
  236. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +13 -0
  237. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +26 -0
  238. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +11 -0
  239. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +33 -0
  240. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +18 -0
  241. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +10 -0
  242. package/src/@menu/styles/horizontal/horizontalUl.module.css +15 -0
  243. package/src/@menu/styles/styles.module.css +5 -0
  244. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +16 -0
  245. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +28 -0
  246. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +23 -0
  247. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +67 -0
  248. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +15 -0
  249. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +23 -0
  250. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +25 -0
  251. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +10 -0
  252. package/src/@menu/svg/ChevronRight.jsx +9 -0
  253. package/src/@menu/svg/Close.jsx +12 -0
  254. package/src/@menu/svg/RadioCircle.jsx +12 -0
  255. package/src/@menu/svg/RadioCircleMarked.jsx +13 -0
  256. package/src/@menu/utils/menuClasses.js +44 -0
  257. package/src/@menu/utils/menuUtils.jsx +145 -0
  258. package/src/@menu/vertical-menu/index.jsx +11 -0
  259. package/src/configs/Permissions/PermissionsActions.json +6 -0
  260. package/src/configs/Permissions/PermissionsSubjects.json +107 -0
  261. package/src/configs/acl.js +115 -0
  262. package/src/configs/auth.js +5 -0
  263. package/src/configs/aws-exports.js +30 -0
  264. package/src/configs/firebase.js +25 -0
  265. package/src/configs/i18n.js +34 -0
  266. package/src/configs/izColors.json +11 -0
  267. package/src/configs/primaryColorConfig.js +35 -0
  268. package/src/configs/themeConfig.js +44 -0
  269. package/src/context/AuthContext.js +179 -0
  270. package/src/context/BuilderContext.jsx +209 -0
  271. package/src/context/SystemContext.js +99 -0
  272. package/src/hooks/useAuth.js +4 -0
  273. package/src/layouts/UserLayout.js +94 -0
  274. package/src/layouts/UserThemeOptions.js +191 -0
  275. package/src/layouts/components/Direction.js +30 -0
  276. package/src/layouts/components/HtmlTooltip.js +15 -0
  277. package/src/layouts/components/Translations.js +11 -0
  278. package/src/layouts/components/UserDropdown.js +217 -0
  279. package/src/layouts/components/UserIcon.js +40 -0
  280. package/src/layouts/components/acl/Can.js +6 -0
  281. package/src/layouts/components/acl/CanViewNavGroup.js +36 -0
  282. package/src/layouts/components/acl/CanViewNavLink.js +17 -0
  283. package/src/layouts/components/acl/CanViewNavSectionTitle.js +17 -0
  284. package/src/layouts/components/horizontal/AppBarContent.js +39 -0
  285. package/src/layouts/components/horizontal/ServerSideNavItems.js +44 -0
  286. package/src/layouts/components/mui/StepperComps.js +55 -0
  287. package/src/layouts/components/vertical/AppBarContent.js +35 -0
  288. package/src/layouts/components/vertical/ServerSideNavItems.js +44 -0
  289. package/src/lib/index.js +75 -0
  290. package/src/lib/navigation/NavigationExtensionContext.jsx +81 -0
  291. package/src/lib/navigation/mergeNavExtensions.js +66 -0
  292. package/src/lib/navigation/useNavExtension.js +54 -0
  293. package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +57 -0
  294. package/src/libs/ApexCharts.jsx +5 -0
  295. package/src/libs/ReactPlayer.jsx +5 -0
  296. package/src/libs/Recharts.jsx +4 -0
  297. package/src/libs/auth.js +124 -0
  298. package/src/libs/styles/AppFullCalendar.js +505 -0
  299. package/src/libs/styles/AppKeenSlider.js +116 -0
  300. package/src/libs/styles/AppReactApexCharts.jsx +110 -0
  301. package/src/libs/styles/AppReactDatepicker.jsx +470 -0
  302. package/src/libs/styles/AppReactDropzone.js +76 -0
  303. package/src/libs/styles/AppReactToastify.jsx +108 -0
  304. package/src/libs/styles/AppRecharts.js +55 -0
  305. package/src/libs/styles/inputOtp.module.css +39 -0
  306. package/src/libs/styles/tiptapEditor.css +72 -0
  307. package/src/navigation/horizontal/index.js +246 -0
  308. package/src/navigation/vertical/index.js +253 -0
  309. package/src/pages/401.js +70 -0
  310. package/src/pages/404.js +67 -0
  311. package/src/pages/500.js +68 -0
  312. package/src/pages/[slug].js +115 -0
  313. package/src/pages/_app.js +148 -0
  314. package/src/pages/_document.js +72 -0
  315. package/src/pages/api/navigation/regenerate-registry.js +116 -0
  316. package/src/pages/api/navigation/save.js +218 -0
  317. package/src/pages/authModule/acl/index.js +48 -0
  318. package/src/pages/authModule/forgot-password/index.js +228 -0
  319. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +392 -0
  320. package/src/pages/authModule/permissions/rolePermissions/index.js +343 -0
  321. package/src/pages/authModule/permissions/systemPermissions/index.js +354 -0
  322. package/src/pages/authModule/privacy/index.js +721 -0
  323. package/src/pages/authModule/users/index.js +210 -0
  324. package/src/pages/index.js +44 -0
  325. package/src/pages/login/index.js +328 -0
  326. package/src/pages/mainHome/index.js +181 -0
  327. package/src/pages/navigatorBuilder/index.jsx +2070 -0
  328. package/src/pages/reportModule/reportBuilder/index.js +1361 -0
  329. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +187 -0
  330. package/src/pages/reportModule/reportBuilder/reports/index.js +198 -0
  331. package/src/pages/viewBuilder/index.jsx +94 -0
  332. package/src/pages/viewBuilder/viewPage/index.jsx +46 -0
  333. package/src/pages/viewBuilder/views/index.js +146 -0
  334. package/src/pages/viewer/[id]/index.js +88 -0
  335. package/src/services/ContentTypes.js +10 -0
  336. package/src/services/DeleteService.js +77 -0
  337. package/src/services/Endpoints/BunnyEndpoints.js +26 -0
  338. package/src/services/Endpoints/CaseEndpoints.js +29 -0
  339. package/src/services/Endpoints/CaseTypeEndpoints.js +29 -0
  340. package/src/services/Endpoints/ContactsEndpoints.js +81 -0
  341. package/src/services/Endpoints/CourtEndpoints.js +29 -0
  342. package/src/services/Endpoints/FilterEndpoints.js +31 -0
  343. package/src/services/Endpoints/NavigatorEndpoints.js +21 -0
  344. package/src/services/Endpoints/ReportBuilderEndpoints.js +45 -0
  345. package/src/services/Endpoints/UiBuilderEndpoints.js +37 -0
  346. package/src/services/Endpoints/UserTableTemplateEndpoints.js +26 -0
  347. package/src/services/Endpoints/UsersEndpoints.js +142 -0
  348. package/src/services/Endpoints/ViewEndpoints.js +28 -0
  349. package/src/services/Endpoints/ViewPermissionEndpoints.js +37 -0
  350. package/src/services/Endpoints/ViewPermissionRoleEndpoints.js +39 -0
  351. package/src/services/Endpoints/ViewPermissionRoleItemsEndpoints.js +32 -0
  352. package/src/services/Endpoints/ViewPermissionRoleUsersEndpoints.js +28 -0
  353. package/src/services/Endpoints/WidgetEndpoints.js +28 -0
  354. package/src/services/Endpoints.js +49 -0
  355. package/src/services/External/BunnyCdn/BunnyUploadFile.js +168 -0
  356. package/src/services/GetService.js +67 -0
  357. package/src/services/MetaDataTemplate/index.js +5 -0
  358. package/src/services/PatchService.js +83 -0
  359. package/src/services/PostService.js +81 -0
  360. package/src/services/StreamService.js +82 -0
  361. package/src/services/UpdateService.js +82 -0
  362. package/src/services/auth/AuthService.js +47 -0
  363. package/src/services/auth/GetUsersService.js +38 -0
  364. package/src/services/auth/PostRegisterUser.js +29 -0
  365. package/src/services/auth/PostResetPasswordService.js +28 -0
  366. package/src/services/auth/PutAccountService.js +29 -0
  367. package/src/services/auth/PutRefreshToken.js +69 -0
  368. package/src/services/auth/RefreshToken.js +0 -0
  369. package/src/services/builderHelper/actionExecutor.js +73 -0
  370. package/src/services/builderHelper/builderHelper.js +99 -0
  371. package/src/services/builderHelper/index.js +2 -0
  372. package/src/services/builderHelper/jsExecutor.js +115 -0
  373. package/src/services/builderHelper/layoutHelpers.js +231 -0
  374. package/src/services/builderHelper/nodeFactory.js +44 -0
  375. package/src/services/builderHelper/resolveProps.js +34 -0
  376. package/src/services/builderHelper/tree.js +131 -0
  377. package/src/services/components/UniversalNestedAutocomplete.js +331 -0
  378. package/src/services/components/agGridAutoComplete.js +172 -0
  379. package/src/services/components/universalAutoComplete.js +207 -0
  380. package/src/services/enums/ReportBuilderTypeEnum.js +18 -0
  381. package/src/services/helper/FilterFormat.js +70 -0
  382. package/src/services/helper/FormatCurrencyIQD.js +11 -0
  383. package/src/services/helper/datagridEditComponents.js +38 -0
  384. package/src/services/helper/dateFormat.js +30 -0
  385. package/src/services/helper/formData.js +21 -0
  386. package/src/services/helper/getFieldByType.js +0 -0
  387. package/src/services/helper/getPropByString.js +18 -0
  388. package/src/services/helper/handleChange.js +26 -0
  389. package/src/services/helper/helper.js +105 -0
  390. package/src/services/helper/multiSelectEditor.js +226 -0
  391. package/src/services/helper/translateOrderReturnStatus.js +12 -0
  392. package/src/services/helper/translateRole.js +24 -0
  393. package/src/services/helper/translateStatus.js +12 -0
  394. package/src/services/helper/translateTransferReceiptType.js +67 -0
  395. package/src/services/helper/translsateStoreProductTransfer.js +40 -0
  396. package/src/services/helper/translsateStoreType.js +25 -0
  397. package/src/services/helper/useInterval.js +21 -0
  398. package/src/services/helper/yupCutomization.js +15 -0
  399. package/src/services/reportData/fetchReportData.js +210 -0
  400. package/src/views/ConfirmDialog.js +178 -0
  401. package/src/views/builder/JSEditor.js +226 -0
  402. package/src/views/builder/inspector/Inspector.jsx +63 -0
  403. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +117 -0
  404. package/src/views/builder/inspector/Tabs/MainTab.jsx +95 -0
  405. package/src/views/builder/inspector/Tabs/RulesTab.jsx +79 -0
  406. package/src/views/builder/inspector/Tabs/StyleTab.jsx +79 -0
  407. package/src/views/builder/inspector/definitions/autocomplete/main.js +25 -0
  408. package/src/views/builder/inspector/definitions/breadcrumb/main.js +9 -0
  409. package/src/views/builder/inspector/definitions/button/actions.js +12 -0
  410. package/src/views/builder/inspector/definitions/button/main.js +14 -0
  411. package/src/views/builder/inspector/definitions/button/rules.js +5 -0
  412. package/src/views/builder/inspector/definitions/button/style.js +32 -0
  413. package/src/views/builder/inspector/definitions/button.actions.js +12 -0
  414. package/src/views/builder/inspector/definitions/card/main.js +11 -0
  415. package/src/views/builder/inspector/definitions/cell/main.js +4 -0
  416. package/src/views/builder/inspector/definitions/checkbox/actions.js +1 -0
  417. package/src/views/builder/inspector/definitions/checkbox/main.js +13 -0
  418. package/src/views/builder/inspector/definitions/checkbox/rules.js +8 -0
  419. package/src/views/builder/inspector/definitions/checkbox/style.js +38 -0
  420. package/src/views/builder/inspector/definitions/checkboxFields.js +0 -0
  421. package/src/views/builder/inspector/definitions/column/main.js +9 -0
  422. package/src/views/builder/inspector/definitions/column-group/main.js +18 -0
  423. package/src/views/builder/inspector/definitions/common/actions.js +1 -0
  424. package/src/views/builder/inspector/definitions/common/main.js +14 -0
  425. package/src/views/builder/inspector/definitions/common/rules.js +8 -0
  426. package/src/views/builder/inspector/definitions/common/style.js +39 -0
  427. package/src/views/builder/inspector/definitions/common.advanced.js +8 -0
  428. package/src/views/builder/inspector/definitions/common.main.js +14 -0
  429. package/src/views/builder/inspector/definitions/common.style.js +33 -0
  430. package/src/views/builder/inspector/definitions/commonMainFields.js +18 -0
  431. package/src/views/builder/inspector/definitions/container/actions.js +1 -0
  432. package/src/views/builder/inspector/definitions/container/main.js +4 -0
  433. package/src/views/builder/inspector/definitions/container/rules.js +4 -0
  434. package/src/views/builder/inspector/definitions/container/style.js +32 -0
  435. package/src/views/builder/inspector/definitions/datepicker/actions.js +1 -0
  436. package/src/views/builder/inspector/definitions/datepicker/main.js +28 -0
  437. package/src/views/builder/inspector/definitions/datepicker/rules.js +8 -0
  438. package/src/views/builder/inspector/definitions/datepicker/style.js +38 -0
  439. package/src/views/builder/inspector/definitions/datepicker.main.js +28 -0
  440. package/src/views/builder/inspector/definitions/divider/actions.js +1 -0
  441. package/src/views/builder/inspector/definitions/divider/main.js +23 -0
  442. package/src/views/builder/inspector/definitions/divider/rules.js +4 -0
  443. package/src/views/builder/inspector/definitions/divider/style.js +9 -0
  444. package/src/views/builder/inspector/definitions/dropdown/actions.js +10 -0
  445. package/src/views/builder/inspector/definitions/dropdown/main.js +19 -0
  446. package/src/views/builder/inspector/definitions/dropdown/rules.js +8 -0
  447. package/src/views/builder/inspector/definitions/dropdown/style.js +38 -0
  448. package/src/views/builder/inspector/definitions/header/actions.js +1 -0
  449. package/src/views/builder/inspector/definitions/header/main.js +29 -0
  450. package/src/views/builder/inspector/definitions/header/rules.js +4 -0
  451. package/src/views/builder/inspector/definitions/header/style.js +12 -0
  452. package/src/views/builder/inspector/definitions/header-cell/main.js +5 -0
  453. package/src/views/builder/inspector/definitions/image/actions.js +1 -0
  454. package/src/views/builder/inspector/definitions/image/main.js +13 -0
  455. package/src/views/builder/inspector/definitions/image/rules.js +4 -0
  456. package/src/views/builder/inspector/definitions/image/style.js +12 -0
  457. package/src/views/builder/inspector/definitions/index.js +407 -0
  458. package/src/views/builder/inspector/definitions/input/actions.js +1 -0
  459. package/src/views/builder/inspector/definitions/input/main.js +14 -0
  460. package/src/views/builder/inspector/definitions/input/rules.js +8 -0
  461. package/src/views/builder/inspector/definitions/input/style.js +32 -0
  462. package/src/views/builder/inspector/definitions/label/actions.js +1 -0
  463. package/src/views/builder/inspector/definitions/label/main.js +24 -0
  464. package/src/views/builder/inspector/definitions/label/rules.js +4 -0
  465. package/src/views/builder/inspector/definitions/label/style.js +12 -0
  466. package/src/views/builder/inspector/definitions/layout/actions.js +1 -0
  467. package/src/views/builder/inspector/definitions/layout/main.js +6 -0
  468. package/src/views/builder/inspector/definitions/layout/rules.js +3 -0
  469. package/src/views/builder/inspector/definitions/layout/style.js +7 -0
  470. package/src/views/builder/inspector/definitions/layout-cell/actions.js +1 -0
  471. package/src/views/builder/inspector/definitions/layout-cell/main.js +7 -0
  472. package/src/views/builder/inspector/definitions/layout-cell/rules.js +3 -0
  473. package/src/views/builder/inspector/definitions/layout-cell/style.js +44 -0
  474. package/src/views/builder/inspector/definitions/link/actions.js +1 -0
  475. package/src/views/builder/inspector/definitions/link/main.js +29 -0
  476. package/src/views/builder/inspector/definitions/link/rules.js +4 -0
  477. package/src/views/builder/inspector/definitions/link/style.js +11 -0
  478. package/src/views/builder/inspector/definitions/menu/actions.js +3 -0
  479. package/src/views/builder/inspector/definitions/menu/main.js +16 -0
  480. package/src/views/builder/inspector/definitions/menu/rules.js +4 -0
  481. package/src/views/builder/inspector/definitions/menu/style.js +33 -0
  482. package/src/views/builder/inspector/definitions/number/actions.js +10 -0
  483. package/src/views/builder/inspector/definitions/number/main.js +29 -0
  484. package/src/views/builder/inspector/definitions/number/rules.js +8 -0
  485. package/src/views/builder/inspector/definitions/number/style.js +32 -0
  486. package/src/views/builder/inspector/definitions/progress-circle/actions.js +1 -0
  487. package/src/views/builder/inspector/definitions/progress-circle/main.js +18 -0
  488. package/src/views/builder/inspector/definitions/progress-circle/rules.js +4 -0
  489. package/src/views/builder/inspector/definitions/progress-circle/style.js +5 -0
  490. package/src/views/builder/inspector/definitions/progress-line/actions.js +1 -0
  491. package/src/views/builder/inspector/definitions/progress-line/main.js +16 -0
  492. package/src/views/builder/inspector/definitions/progress-line/rules.js +4 -0
  493. package/src/views/builder/inspector/definitions/progress-line/style.js +6 -0
  494. package/src/views/builder/inspector/definitions/radio/actions.js +10 -0
  495. package/src/views/builder/inspector/definitions/radio/main.js +16 -0
  496. package/src/views/builder/inspector/definitions/radio/rules.js +8 -0
  497. package/src/views/builder/inspector/definitions/radio/style.js +32 -0
  498. package/src/views/builder/inspector/definitions/reportViewer/main.js +12 -0
  499. package/src/views/builder/inspector/definitions/richtext/actions.js +10 -0
  500. package/src/views/builder/inspector/definitions/richtext/main.js +21 -0
  501. package/src/views/builder/inspector/definitions/richtext/rules.js +8 -0
  502. package/src/views/builder/inspector/definitions/richtext/style.js +32 -0
  503. package/src/views/builder/inspector/definitions/signature/actions.js +1 -0
  504. package/src/views/builder/inspector/definitions/signature/main.js +13 -0
  505. package/src/views/builder/inspector/definitions/signature/rules.js +8 -0
  506. package/src/views/builder/inspector/definitions/signature/style.js +26 -0
  507. package/src/views/builder/inspector/definitions/table/main.js +9 -0
  508. package/src/views/builder/inspector/definitions/tag/actions.js +10 -0
  509. package/src/views/builder/inspector/definitions/tag/main.js +17 -0
  510. package/src/views/builder/inspector/definitions/tag/rules.js +8 -0
  511. package/src/views/builder/inspector/definitions/tag/style.js +32 -0
  512. package/src/views/builder/inspector/definitions/textarea/actions.js +1 -0
  513. package/src/views/builder/inspector/definitions/textarea/main.js +16 -0
  514. package/src/views/builder/inspector/definitions/textarea/rules.js +8 -0
  515. package/src/views/builder/inspector/definitions/textarea/style.js +32 -0
  516. package/src/views/builder/inspector/definitions/time/actions.js +10 -0
  517. package/src/views/builder/inspector/definitions/time/main.js +18 -0
  518. package/src/views/builder/inspector/definitions/time/rules.js +8 -0
  519. package/src/views/builder/inspector/definitions/time/style.js +32 -0
  520. package/src/views/builder/inspector/definitions/toggle/actions.js +10 -0
  521. package/src/views/builder/inspector/definitions/toggle/main.js +26 -0
  522. package/src/views/builder/inspector/definitions/toggle/rules.js +8 -0
  523. package/src/views/builder/inspector/definitions/toggle/style.js +32 -0
  524. package/src/views/builder/inspector/fields/BooleanEditor.jsx +30 -0
  525. package/src/views/builder/inspector/fields/ExpressionEditor.jsx +35 -0
  526. package/src/views/builder/inspector/fields/FieldWrapper.jsx +15 -0
  527. package/src/views/builder/inspector/fields/ItemsEditor.jsx +118 -0
  528. package/src/views/builder/inspector/fields/OptionsEditor.jsx +118 -0
  529. package/src/views/builder/inspector/fields/SelectEditor.jsx +32 -0
  530. package/src/views/builder/inspector/fields/TabsEditor.jsx +128 -0
  531. package/src/views/builder/inspector/fields/TextEditor.jsx +28 -0
  532. package/src/views/builder/inspector/fields/TextFieldEditor.jsx +0 -0
  533. package/src/views/builder/sidebar/Sidebar.jsx +20 -0
  534. package/src/views/builder/sidebar/SidebarTabs.jsx +50 -0
  535. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +94 -0
  536. package/src/views/builder/sidebar/tabs/Components/ComponentItem.jsx +69 -0
  537. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +89 -0
  538. package/src/views/builder/sidebar/tabs/Components/GroupLevelAutocomplete.jsx +269 -0
  539. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +69 -0
  540. package/src/views/builder/sidebar/tabs/TreeTab.jsx +205 -0
  541. package/src/views/builder/sidebar/tabs/ViewTab.jsx +121 -0
  542. package/src/views/builder/viewer/Canvas.jsx +7 -0
  543. package/src/views/builder/viewer/ComponentRenderer.jsx +166 -0
  544. package/src/views/builder/viewer/DropZone.jsx +60 -0
  545. package/src/views/builder/viewer/ProductionViewer.jsx +155 -0
  546. package/src/views/builder/viewer/SaveViewDialog.jsx +60 -0
  547. package/src/views/builder/viewer/SaveWidgetDialog.jsx +142 -0
  548. package/src/views/builder/viewer/Viewer.jsx +83 -0
  549. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +238 -0
  550. package/src/views/builder/viewer/ViewerToolbar.jsx +89 -0
  551. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +57 -0
  552. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +32 -0
  553. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +55 -0
  554. package/src/views/builder/viewer/renderers/CardRenderer.jsx +76 -0
  555. package/src/views/builder/viewer/renderers/CellRenderer.jsx +71 -0
  556. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +27 -0
  557. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +96 -0
  558. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +71 -0
  559. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +111 -0
  560. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +49 -0
  561. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +22 -0
  562. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +63 -0
  563. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +78 -0
  564. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +23 -0
  565. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +26 -0
  566. package/src/views/builder/viewer/renderers/InputRenderer.jsx +34 -0
  567. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +23 -0
  568. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +162 -0
  569. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +173 -0
  570. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +51 -0
  571. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +24 -0
  572. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +291 -0
  573. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +80 -0
  574. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +47 -0
  575. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +36 -0
  576. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +57 -0
  577. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +94 -0
  578. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +15 -0
  579. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +76 -0
  580. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +89 -0
  581. package/src/views/builder/viewer/renderers/TabRenderer.jsx +82 -0
  582. package/src/views/builder/viewer/renderers/TableRenderer.jsx +92 -0
  583. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +67 -0
  584. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +37 -0
  585. package/src/views/builder/viewer/renderers/TextRenderer.jsx +9 -0
  586. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +49 -0
  587. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +46 -0
  588. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +88 -0
  589. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +72 -0
  590. package/src/views/customFilter/CustomFilterDialog.js +1142 -0
  591. package/src/views/genericTable/BuilderExpressionParams.js +193 -0
  592. package/src/views/genericTable/FixedFilterDialog.js +447 -0
  593. package/src/views/genericTable/GenericForm.js +301 -0
  594. package/src/views/genericTable/QueryEditor.js +99 -0
  595. package/src/views/genericTable/RegexTextEditor.js +182 -0
  596. package/src/views/genericTable/ReportBuilderSaveDialog.js +153 -0
  597. package/src/views/genericTable/RoutingSettingDialog.js +189 -0
  598. package/src/views/genericTable/SGrid.js +2168 -0
  599. package/src/views/genericTable/SearchFilterDialog.js +247 -0
  600. package/src/views/genericTable/TAGGrid.js +1046 -0
  601. package/src/views/genericTable/cellEditors/autocompleteEditor.js +229 -0
  602. package/src/views/genericTable/cellRenderers/imageRenderer.js +14 -0
  603. package/src/views/genericTable/statusBar/rowCountStatusBar.js +37 -0
  604. package/src/views/genericTable/template/addTemplate.js +187 -0
  605. package/src/views/genericTable/toolPanels/CustomColumnsToolPanel.js +43 -0
  606. package/src/views/pages/auth/FooterIllustrationsV2.js +40 -0
  607. package/src/views/pages/misc/FooterIllustrations.js +47 -0
  608. package/src/views/pages/misc/muiTable/CustomPagination.js +34 -0
  609. package/src/views/pages/users/UserManageDialog.js +283 -0
  610. package/src/views/pages/users/UserViewPage.js +199 -0
  611. package/src/views/users/AddUserNameDialog.js +162 -0
  612. package/src/views/users/ContactManage.js +449 -0
  613. package/src/views/users/ResetPasswordDialog.js +242 -0
  614. package/styles/globals.css +71 -0
@@ -0,0 +1,1046 @@
1
+ // ** React Imports
2
+ // ** Next Import
3
+
4
+ // ** MUI Imports
5
+ import Box from '@mui/material/Box'
6
+ import Grid from '@mui/material/Grid'
7
+
8
+ // ** Icons Imports
9
+ // ** Store Imports
10
+ // ** Custom Components Imports
11
+ import { useCallback, useContext, useEffect, useMemo, useState } from 'react'
12
+ import { Endpoints, Services } from 'src/services/Endpoints'
13
+ import {
14
+ Autocomplete,
15
+ CircularProgress,
16
+ Dialog,
17
+ FormControl,
18
+ IconButton,
19
+ MenuItem,
20
+ Select,
21
+ TextField,
22
+ Tooltip
23
+ } from '@mui/material'
24
+ import { AgGridReact } from "ag-grid-react";
25
+ import { Edit, FilterAlt, RefreshOutlined, Save, SaveAs } from "@mui/icons-material";
26
+ import { getRandomInt, Helper } from "services/helper/helper";
27
+ import PostService from 'services/PostService'
28
+ import handleChange from 'services/helper/handleChange'
29
+ import { DotsVerticalCircleOutline, FileExcelOutline } from 'mdi-material-ui'
30
+ import AddTemplateDialog from './template/addTemplate'
31
+ import UpdateService from 'services/UpdateService'
32
+ import { useRouter } from 'next/router'
33
+ import { SystemContext } from 'context/SystemContext'
34
+ import { AuthContext } from 'context/AuthContext'
35
+ import moment from "moment-timezone"
36
+ import numeral from 'numeral'
37
+ import CustomFilterDialog from "views/customFilter/CustomFilterDialog";
38
+ import CustomStatusBar from "views/genericTable/statusBar/rowCountStatusBar";
39
+ import StreamService from "services/StreamService";
40
+ import { themeQuartz } from 'ag-grid-community';
41
+
42
+ // ** Utils Import
43
+
44
+ // ** Actions Imports
45
+
46
+ // ** Custom Components Imports
47
+ const defaultFinalRequest = {
48
+ groupBy: null,
49
+ endpoint: null,
50
+ filter: {},
51
+ params: {}
52
+ }
53
+ const TAGGrid = props => {
54
+ // ** State
55
+ const agTheme = themeQuartz
56
+ .withParams({
57
+ accentColor: "#00989f"
58
+ });
59
+ const {
60
+ groupEndPoint,
61
+ streamEndPoint,
62
+ expireReport,
63
+ pagedEndPoint,
64
+ filter: externalFilter,
65
+ actions,
66
+ refresh,
67
+ setClassName,
68
+ level,
69
+ height,
70
+ extraCols,
71
+ levelArray,
72
+ accessor,
73
+ setOutGridApi,
74
+ setEventRowSelected,
75
+ pageName,
76
+ paramsPage,
77
+ fixedTIncludes,
78
+ groupBy,
79
+ noPurge,
80
+ uniqueIdPath
81
+ } = props
82
+ const [responseType, setResponseType] = useState()
83
+ const [pagedAgg, setPagedAgg] = useState()
84
+ const [colDefs, setColDefs] = useState([])
85
+ const [gridApi, setGridApi] = useState(null)
86
+ const [includes, setIncludes] = useState([])
87
+ const [flatCols, setFlatCols] = useState([])
88
+ const [templates, setTemplates] = useState([])
89
+ const [timerValue, setTimerValue] = useState(0)
90
+ const [localRefresh, setLocalRefresh] = useState(false)
91
+ const [selectedTemplate, setSelectedTemplate] = useState(null)
92
+ const [localClasName, setLocalClasName] = useState(null)
93
+ const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
94
+ const router = useRouter()
95
+ const authValues = useContext(AuthContext)
96
+ const [isTemplateEditing, setIsTemplateEditing] = useState(false)
97
+ const [isDownloading, setIsDownloading] = useState(false)
98
+ const [finalRequestObject, setFinalRequestObject] = useState(defaultFinalRequest)
99
+ const [Filter, setFilter] = useState({
100
+ Tfilter: [],
101
+ LocalTfilter: [],
102
+ })
103
+ const [openDialogs, setOpenDialogs] = useState({
104
+ addTemplate: false,
105
+ CustomFilter: false,
106
+ })
107
+ const getDefaultColDefs = () => {
108
+ return [
109
+ {
110
+ field: 'Actions',
111
+ sortable: false,
112
+ width: 60,
113
+ pinned: 'left',
114
+ enableRowGroup: false,
115
+ cellRenderer: (params) => {
116
+ if (params.node.group) {
117
+ return <Box sx={{ display: 'flex', alignItems: 'center' }}>
118
+ <IconButton
119
+ sx={{ color: 'primary.light' }}
120
+ onClick={() => {
121
+ const groupKeys = getParentKeys(params.node.parent)
122
+ groupKeys.push(params.node.key)
123
+ params.api.refreshServerSide({ purge: !noPurge, route: groupKeys });
124
+ }}
125
+ >
126
+ <RefreshOutlined />
127
+ </IconButton>
128
+ </Box>
129
+ }
130
+ if (actions != null) return actions(params)
131
+ }
132
+ },
133
+ ]
134
+ }
135
+ const autoGroupColumnDef = {
136
+ headerName: 'My Group',
137
+ sortable: false,
138
+ minWidth: 220,
139
+ }
140
+
141
+ const applyValueFormatter = (formatterString) => {
142
+ return function (params) {
143
+ return new Function("params", "moment", "userTimeZone", "enumTrans", "numeral", formatterString)(
144
+ params,
145
+ moment,
146
+ userTimeZone,
147
+ Helper.enumTrans,
148
+ numeral,
149
+ );
150
+ };
151
+ };
152
+
153
+ const processColumns = (columns) => {
154
+ return columns.map((col) => {
155
+ let processedColumn = {
156
+ ...col,
157
+ valueFormatter: col.valueFormatter
158
+ ? applyValueFormatter(col.valueFormatter)
159
+ : undefined,
160
+ };
161
+
162
+ // If the column has children, process them recursively
163
+ if (col.children && Array.isArray(col.children)) {
164
+ processedColumn.children = processColumns(col.children);
165
+ }
166
+
167
+ return processedColumn;
168
+ });
169
+ };
170
+
171
+ async function handleGetFilterObject(dtoType) {
172
+ try {
173
+ let response = null
174
+ response = await Services.PostService(Endpoints.FilterEndpoints.Post.GetFilterObject, false, {
175
+ type: dtoType,
176
+ filterLevel: level ?? 1,
177
+ levelArray: levelArray,
178
+ }, {})
179
+
180
+ if (response) {
181
+ let defaultCols = getDefaultColDefs()
182
+ let tableCols = [...response.table]
183
+ tableCols = processColumns(tableCols)
184
+ let localColDefs = [...tableCols, ...defaultCols]
185
+ if (extraCols != null) {
186
+ localColDefs = [...extraCols, ...localColDefs]
187
+ }
188
+ let localFlatCols = flattenArray(localColDefs)
189
+ setFlatCols(localFlatCols)
190
+ setColDefs([{
191
+ field: 'IZ_groupCount',
192
+ headerName: 'Group Count',
193
+ sortable: true,
194
+ hide: true,
195
+ valueGetter: (params) => params.data?.groupCount
196
+ }, ...localColDefs])
197
+ const localIncludes = getMostNestedFieldsWithChildren(response.table)
198
+ setIncludes(localIncludes)
199
+ } else {
200
+ setColDefs([])
201
+ }
202
+ } catch (error) {
203
+
204
+ } finally {
205
+ }
206
+ }
207
+
208
+ function getParentKeys(parentNode) {
209
+ const keys = [];
210
+ let currentNode = parentNode;
211
+ while (currentNode?.data) {
212
+ keys.unshift(currentNode.key); // Prepend to keep the order of ancestors
213
+ currentNode = currentNode.parent;
214
+ }
215
+ return keys;
216
+ }
217
+
218
+ // function getValueAtPath(obj, path) {
219
+ // // Split the path into parts based on the dot notation
220
+ // const parts = path.split('.');
221
+ // // Traverse the object according to the path
222
+ // let current = obj;
223
+ //
224
+ // for (let part of parts) {
225
+ // if (current === null || current === undefined) {
226
+ // return 'null'; // If any part is null/undefined, return 'null'
227
+ // }
228
+ // current = current[part];
229
+ // }
230
+ //
231
+ // // If the final value is null, return 'null', otherwise return the value
232
+ // return current === null ? 'null' : current;
233
+ // }
234
+
235
+ const getRowId = (params) => {
236
+ try {
237
+ let itemRowId = getValueByPath(params.data, uniqueIdPath);
238
+ let rowId = itemRowId + getRandomInt(1, 999999999999).toString()
239
+ return noPurge ? itemRowId : rowId
240
+ } catch (error) {
241
+ console.error(error)
242
+ }
243
+
244
+ };
245
+ const handleGetSortObject = (colId, sort, isGrouping, isPivot) => {
246
+ if (colId == "IZ_groupCount") {
247
+ return {
248
+ columnName: 'groupCount',
249
+ sortDirection: sort === 'asc' ? 'Ascending' : 'Descending',
250
+ afterSelect: true
251
+ }
252
+ }
253
+ if (isPivot || colId.endsWith("groupCount")) {
254
+ return {
255
+ columnName: colId,
256
+ sortDirection: sort === 'asc' ? 'Ascending' : 'Descending',
257
+ afterSelect: true
258
+ }
259
+ }
260
+ const field = isGrouping ? { path: colId, afterSelect: true } : flatCols.find(f => f.field === colId);
261
+ return {
262
+ columnName: isGrouping ? field.path.replace(".", "_") : field.path,
263
+ sortDirection: sort === 'asc' ? 'Ascending' : 'Descending',
264
+ afterSelect: field.afterSelect
265
+ }
266
+ }
267
+
268
+ const sideBarConfig = useMemo(() => ({
269
+ toolPanels: [
270
+ {
271
+ id: 'columns',
272
+ labelDefault: 'Columns',
273
+ labelKey: 'columns',
274
+ iconKey: 'columns',
275
+ toolPanel: 'agColumnsToolPanel',
276
+ toolPanelParams: {
277
+ suppressRowGroups: groupBy != null,
278
+ suppressValues: groupBy != null,
279
+ },
280
+ minWidth: 225,
281
+ },
282
+
283
+ ],
284
+ position: 'left',
285
+ // ← optionally open this panel by default on init
286
+ defaultToolPanel: 'columns',
287
+ }), [groupBy]); // only re-create if groupBy changes
288
+ const handleGetAggregationObject = (agg) => {
289
+ const field = flatCols.find(f => f.field === agg.field);
290
+ // let method = 'Sum'
291
+ // switch (agg.aggFunc) {
292
+ // case 'sum':method = 'Sum'; break;
293
+ // case 'avg':method = 'Sum'; break;
294
+ // case 'min':method = 'Sum'; break;
295
+ // case 'max':method = 'Sum'; break;
296
+ // }
297
+ return {
298
+ path: field?.path,
299
+ method: agg.aggFunc,
300
+ // afterSelect: field.afterSelect//request.rowGroupCols.find(x => x.id === sort.colId) != null
301
+ }
302
+
303
+
304
+ }
305
+ const handleGetPath = (colId) => {
306
+ const field = flatCols.find(f => f.field === colId);
307
+ return field.path
308
+ }
309
+
310
+ function convertToNestedObject(flatObject, pivotCols) {
311
+ const resultObject = {};
312
+
313
+ Object.keys(flatObject).forEach(path => {
314
+ const value = flatObject[path];
315
+
316
+ // Check if the path starts with "pivot_" and remove it if it does
317
+ if (path.startsWith("pivot_")) {
318
+ const cleanedPath = path.substring(6); // Remove "pivot_"
319
+ resultObject[cleanedPath] = value;
320
+ } else {
321
+ // Otherwise, split the path and nest it
322
+ const keys = path.split('_');
323
+ let current = resultObject;
324
+
325
+ keys.forEach((key, index) => {
326
+ if (index === keys.length - 1) {
327
+ current[key] = value; // Assign the value to the final key
328
+ } else {
329
+ if (!current[key]) {
330
+ current[key] = {}; // Create an empty object if it doesn't exist
331
+ }
332
+ current = current[key]; // Move deeper into the object
333
+ }
334
+ });
335
+ }
336
+ });
337
+
338
+ return resultObject;
339
+ }
340
+
341
+ const createServerSideDatasource = (getRowsFromApi) => {
342
+ return {
343
+ getRows: (params) => {
344
+ const isPivotMode = params.api.isPivotMode()
345
+ // Fetch data from API based on request
346
+ getRowsFromApi(params)
347
+ .then((response) => {
348
+ if (response.success) {
349
+ // Supply rows for requested block to grid
350
+ params.success({
351
+ rowData: response.rows,
352
+ rowCount: response.total,
353
+ pivotResultFields: isPivotMode ? response.pivotColResult : null
354
+ });
355
+ } else {
356
+ params.fail();
357
+ }
358
+ })
359
+ .catch((e) => {
360
+ console.log(e)
361
+ params.fail()
362
+ });
363
+ },
364
+ };
365
+ }
366
+
367
+ const getRowsFromApi = useCallback(
368
+ async params => {
369
+ setFinalRequestObject(defaultFinalRequest)
370
+ const fixedTFilter = externalFilter?.fixedTFilter ?? externalFilter?.fixedTfilter ?? []
371
+ let localFilter = externalFilter ? { ...externalFilter } : {}
372
+ localFilter = { ...localFilter, ...Filter }
373
+ console.log(localFilter)
374
+ let localTFilter = localFilter?.Tfilter ? [...localFilter?.Tfilter] : []
375
+ localTFilter = localFilter?.TFilter ? [...localTFilter, ...localFilter?.TFilter] : [...localTFilter]
376
+ localTFilter = [...localTFilter, ...fixedTFilter]
377
+ console.log(localTFilter)
378
+ delete localFilter.Tfilter
379
+ delete localFilter.fixedTfilter
380
+ delete localFilter.fixedTFilter
381
+ delete localFilter.LocalTfilter
382
+ delete localFilter.localTfilter
383
+ localFilter = localFilter ?? {}
384
+ const request = params.request
385
+ const pageNumber = request.endRow / (request.endRow - request.startRow) // Calculate the page number
386
+ const pageSize = request.endRow - request.startRow // Calculate the page size
387
+ let aggregators = request.valueCols.filter(x => x.id != 'groupCount').map(agg => handleGetAggregationObject(agg))
388
+ let updateAggregation = true
389
+ if (colDefs && gridApi) {
390
+ let resultColDef = [...colDefs]
391
+ if (request.rowGroupCols.length > 0) {
392
+ }
393
+ // gridApi.setGridOption('columnDefs', resultColDef)
394
+ // gridApi.applyColumnState({state: colState});
395
+ }
396
+ let data = {
397
+ ...localFilter,
398
+ tFilter: [...localTFilter],
399
+ aggregators: aggregators,
400
+ pivotCols: request.pivotCols.map(x => handleGetPath(x.field))
401
+ }
402
+ try {
403
+ if (request.rowGroupCols.length !== request.groupKeys.length) {
404
+ if (request.rowGroupCols.length > 1 && request.groupKeys.length > 0) {
405
+ updateAggregation = false
406
+ }
407
+ let tFilters = request.groupKeys.map((x, index) => ({
408
+ path: request.rowGroupCols[index].id,
409
+ value: request.groupKeys[index] === 'null' ? null : request.groupKeys[index],
410
+ method: 'Equals',
411
+ dtoClassName: '',
412
+ modelClassName: ''
413
+ }))
414
+ const groupByColId = handleGetPath(params.request.rowGroupCols[params.parentNode.level + 1]?.id)
415
+ const rowGroupColsIds = request.rowGroupCols.map(value => value.id)
416
+ const valueColsIds = request.valueCols.map(value => value.id)
417
+ const groupOrderCols = [...rowGroupColsIds, ...valueColsIds]
418
+ let isGroupCountOrder = true;
419
+ // if (rowGroupColsIds.length > 1 && params.request.sortModel.length > 1) {
420
+ // isGroupCountOrder = false;
421
+ // }
422
+ console.log(request.sortModel)
423
+ request.sortModel = (request.sortModel ?? []).map(x => ({
424
+ ...x,
425
+ colId: x?.colId?.endsWith("_groupCount")
426
+ ? x.colId.replace("_groupCount", "_groupCount")
427
+ : x.colId
428
+ }));
429
+ console.log(request)
430
+ console.log(request.sortModel)
431
+ const aggIds = request.valueCols.map(vc => vc.id);
432
+
433
+ const groupOrderColdIds = request.sortModel.filter(x => groupOrderCols.includes(x.colId) || ((x.colId == "IZ_groupCount" || x.colId.endsWith("groupCount") || aggIds.some(id => x.colId.endsWith(id))) && isGroupCountOrder))
434
+ let orderBy = groupOrderColdIds.map(sort => handleGetSortObject(sort.colId, sort.sort, true, aggIds.some(id => sort.colId.endsWith(id))))
435
+ console.log(groupOrderColdIds)
436
+ console.log(orderBy)
437
+ data = {
438
+ ...data,
439
+ tFilter: [...tFilters, ...data.tFilter],
440
+ orderBy: orderBy
441
+ }
442
+
443
+ // if (updateAggregation !== true) {
444
+ // data.aggregators = []
445
+ // }
446
+ const response = await Services.PostService(groupEndPoint, false, data, {
447
+ groupBy: groupByColId,
448
+ page: pageNumber,
449
+ pageSize: pageSize,
450
+ getType: 'GroupingPagination',
451
+ })
452
+ setFinalRequestObject({
453
+ groupBy: groupByColId,
454
+ endpoint: groupEndPoint,
455
+ filter: data,
456
+ params: {}
457
+ })
458
+ const pivotColResult = []
459
+ if (request.pivotCols.length > 0) {
460
+ if (response?.pivotCols.length > 0) {
461
+ pivotColResult.push('groupCount')
462
+ const responsePivotCol = response.pivotCols.map(x => x.field) ?? []
463
+ pivotColResult.push(...responsePivotCol)
464
+ }
465
+ }
466
+ // groupKeys.push(request.rowGroupCols[request.groupKeys.length].id)
467
+ // const path = request.rowGroupCols[request.groupKeys.length].id
468
+ response.data = response.data.map(r => {
469
+ // return r
470
+ // const valueAtPath = getValueAtPath(r.key, path);
471
+ return convertToNestedObject(r, pivotColResult)
472
+ })
473
+ if (response.aggregation != null && updateAggregation === true) {
474
+ setPagedAgg([response.aggregation])
475
+ }
476
+
477
+ return {
478
+ success: true,
479
+ rows: colDefs && response.data, // Adjust based on your API's response structure
480
+ total: response.totalCount, // Total number of rows available from the server
481
+ pivotColResult: pivotColResult.length > 0 ? pivotColResult : null
482
+ }
483
+ } else {
484
+ if (request.groupKeys.length > 0) {
485
+ let tFilters = request.groupKeys.map((x, index) => ({
486
+ path: handleGetPath(request.rowGroupCols[index].id),
487
+ value: request.groupKeys[index] === 'null' ? null : request.groupKeys[index],
488
+ method: 'Equals',
489
+ dtoClassName: '',
490
+ modelClassName: ''
491
+ }))
492
+ updateAggregation = false
493
+
494
+ data = {
495
+ ...data,
496
+ tFilter: [...tFilters, ...data.tFilter]
497
+ }
498
+ }
499
+ let orderBy = request.sortModel.filter(x => !x.colId.endsWith("IZ_groupCount")).map(sort => handleGetSortObject(sort.colId, sort.sort, false))
500
+
501
+ if (data.tIncludes != null)
502
+ data = {
503
+ ...data,
504
+ tIncludes: [...data.tIncludes, ...includes],
505
+ orderBy: orderBy
506
+ }
507
+ else {
508
+ data = {
509
+ ...data,
510
+ tIncludes: [...includes],
511
+ orderBy: orderBy
512
+ }
513
+ if (fixedTIncludes != null) {
514
+ data.tIncludes = [...data.tIncludes, ...fixedTIncludes]
515
+ }
516
+ }
517
+ if (updateAggregation !== true) {
518
+ data.aggregators = []
519
+ }
520
+ const response = await Services.PostService(pagedEndPoint, false, data, {
521
+ ...paramsPage,
522
+ page: pageNumber,
523
+ pageSize: pageSize,
524
+ getType: 'Pagination'
525
+ })
526
+ setFinalRequestObject({
527
+ groupBy: null,
528
+ endpoint: pagedEndPoint,
529
+ filter: data,
530
+ params: paramsPage ?? {}
531
+ })
532
+ if (responseType == null) setResponseType(response.className)
533
+ if (responseType == null) setLocalClasName(response.className)
534
+ if (response.aggregation != null && updateAggregation === true) {
535
+ setPagedAgg([response.aggregation])
536
+ }
537
+
538
+ return {
539
+ success: true,
540
+ rows: colDefs && response.data, // Adjust based on your API's response structure
541
+ total: response.totalCount,
542
+ rowCount: response.totalCount,
543
+ }
544
+ }
545
+ } catch (error) {
546
+ console.log(error)
547
+ return { success: false }
548
+ }
549
+ },
550
+ [externalFilter, includes, paramsPage, Filter]
551
+ )
552
+ const datasource = useMemo(() => createServerSideDatasource(getRowsFromApi), [getRowsFromApi]);
553
+
554
+
555
+ const onGridReady = useCallback((params) => {
556
+ setGridApi(params.api)
557
+ if (setOutGridApi != null)
558
+ setOutGridApi(params.api)
559
+ // Create datasource with a reference to the API function
560
+ // const datasource = createServerSideDatasource(getRowsFromApi);
561
+
562
+ // // Register the datasource with the grid
563
+ // params.api.setGridOption("serverSideDatasource", datasource);
564
+ }, []);
565
+
566
+ const onRowSelected = (event) => {
567
+ if (setEventRowSelected != null) {
568
+ setEventRowSelected(event)
569
+ }
570
+ };
571
+
572
+ const getChildCount = data => {
573
+ return data.groupCount;
574
+ };
575
+
576
+ function flattenArray(arr) {
577
+ let result = [];
578
+
579
+ function traverse(item) {
580
+ if (!item.children) {
581
+ // If the item does not have children or the children array is empty, add it to the result
582
+ result.push(item);
583
+ } else {
584
+ // If the item has children, recursively traverse each child
585
+ item.children.forEach(child => traverse(child));
586
+ }
587
+ }
588
+
589
+ arr.forEach(item => traverse(item));
590
+ return result;
591
+ }
592
+
593
+ function getValueByPath(object, path) {
594
+ try {
595
+ if (path == undefined)
596
+ return getRandomInt(1, 999999999999).toString()
597
+ let id = path.split('.').reduce((acc, key) => acc && acc[key], object);
598
+ if (id === undefined)
599
+ return getRandomInt(1, 999999999999).toString()
600
+ else
601
+ return id
602
+
603
+ } catch (error) {
604
+
605
+ }
606
+ }
607
+
608
+ function getMostNestedFieldsWithChildren(columns) {
609
+ let mostNestedFields = [];
610
+
611
+ function traverse(column) {
612
+ if (column.children && column.children.length > 0) {
613
+ let allChildrenHaveNoChildren = column.children.every(
614
+ (child) => !child.children || child.children.length === 0
615
+ );
616
+ if (allChildrenHaveNoChildren) {
617
+ let columnField = column.field;
618
+ //
619
+ // Check if columnField starts with the accessor
620
+ if (accessor != null && columnField.toLowerCase().startsWith(accessor.toLowerCase())) {
621
+ // Remove the accessor part from columnField
622
+ columnField = columnField.slice(accessor.length);
623
+ if (columnField.startsWith(".")) {
624
+ columnField = columnField.slice(1);
625
+ }
626
+ }
627
+ if (columnField != null && columnField.length > 0) {
628
+ mostNestedFields.push(columnField);
629
+ }
630
+ } else {
631
+ column.children.forEach((child) => traverse(child));
632
+ }
633
+ }
634
+ }
635
+
636
+ columns.forEach((column) => traverse(column));
637
+ return mostNestedFields;
638
+ }
639
+
640
+ function handleFilterChange(field, value) {
641
+ handleChange(setFilter, field, value)
642
+ }
643
+
644
+ async function handleGetTemplates() {
645
+ try {
646
+ let response = null
647
+ let data = {
648
+ tFilter: [
649
+ {
650
+ method: 'Equals',
651
+ path: 'pageName',
652
+ value: router.pathname
653
+ },
654
+ {
655
+ method: 'Equals',
656
+ path: 'UserId',
657
+ value: authValues?.user?.id,
658
+ },
659
+ ]
660
+ }
661
+ response = await PostService(Endpoints.UserTableTemplates.Post.GetAllPagedByFilter, false, data)
662
+
663
+ if (response) {
664
+ setTemplates(response.data)
665
+
666
+ } else {
667
+ setTemplates([])
668
+ }
669
+ } catch (error) {
670
+
671
+ }
672
+ }
673
+
674
+ const handleToggleDialogs = dialog => {
675
+ handleChange(setOpenDialogs, dialog, !openDialogs[dialog])
676
+ }
677
+
678
+
679
+ async function handleSaveTemplate() {
680
+ try {
681
+ let response = null;
682
+ {
683
+ let data = {
684
+ ...selectedTemplate,
685
+ value: gridApi.getColumnState(),
686
+ userId: authValues?.user?.id,
687
+ filterValue: Filter
688
+ }
689
+ response = await UpdateService(Endpoints.UserTableTemplates.Put.UpdateTemplate, true, data, {
690
+ id: selectedTemplate?.id
691
+ })
692
+
693
+ if (response)
694
+ handleGetTemplates();
695
+ }
696
+ } catch (error) {
697
+
698
+ }
699
+ }
700
+
701
+ async function handleCSVExport() {
702
+ try {
703
+ let response = null;
704
+ {
705
+ setIsDownloading(true)
706
+ const cols = gridApi
707
+ .getColumnDefs()
708
+ const flatCols = flattenArray(cols)
709
+ console.log(flatCols)
710
+ const visibleCols = flatCols // all column definitions
711
+ .filter(colDef =>
712
+ gridApi.getColumnState().some(
713
+ col => col.colId === colDef.field && col.hide !== true
714
+ )
715
+ )
716
+ const visibleFields = visibleCols
717
+ .filter(x => x?.path)
718
+ .map(x => x.path);
719
+
720
+ let data = {
721
+ ...finalRequestObject.filter,
722
+ isExcelExport: true,
723
+ visibleFields: visibleFields,
724
+ }
725
+ const isPivotOff = !gridApi.isPivotMode()
726
+ if (isPivotOff) {
727
+ data.pivotCols = []
728
+ }
729
+ response = await StreamService(streamEndPoint, true, data, {
730
+ ...finalRequestObject.params,
731
+ groupBy: finalRequestObject.groupBy,
732
+ getType: 'Stream'
733
+ }, null,
734
+ progress => {
735
+ console.log(`Downloaded: ${progress}%`)
736
+ })
737
+
738
+ }
739
+ } catch (error) {
740
+ console.log(error)
741
+ } finally {
742
+ setIsDownloading(false)
743
+ }
744
+ }
745
+
746
+ const restoreState = () => {
747
+ if (gridApi !== null && colDefs !== null && selectedTemplate != null) {
748
+ gridApi.applyColumnState({
749
+ state: selectedTemplate.value,
750
+ applyOrder: true,
751
+ });
752
+ }
753
+ if (selectedTemplate.filterValue != null && (Filter.Tfilter == null || Filter.Tfilter.length == 0)) {
754
+ setFilter(selectedTemplate.filterValue);
755
+ }
756
+ };
757
+
758
+ useEffect(() => {
759
+ if (responseType != null) {
760
+ setClassName(responseType)
761
+ handleGetFilterObject(responseType)
762
+ }
763
+ }, [responseType]);
764
+
765
+ useEffect(() => {
766
+
767
+ if (gridApi !== null) {
768
+ gridApi.refreshServerSide({ purge: !noPurge })
769
+ }
770
+ }, [refresh, externalFilter, localRefresh, Filter]);
771
+
772
+ useEffect(() => {
773
+ if (gridApi != null && colDefs != null)
774
+ handleGetTemplates()
775
+ }, [gridApi, colDefs])
776
+
777
+ useEffect(() => {
778
+ if (colDefs.length > 0 && selectedTemplate != null) {
779
+ restoreState()
780
+ }
781
+ }, [selectedTemplate])
782
+ useEffect(() => {
783
+ if (selectedTemplate == null && templates.length > 0 && colDefs.length > 0) {
784
+ const userDefined = templates.find(x => x.isDefault === true)
785
+ if (userDefined != null)
786
+ setSelectedTemplate(userDefined)
787
+ else {
788
+ const systemDefined = templates.find(x => x.type === "UserPredefined")
789
+ if (systemDefined != null)
790
+ setSelectedTemplate(systemDefined)
791
+ else {
792
+ const anyTemplate = templates[0]
793
+ setSelectedTemplate(anyTemplate)
794
+ }
795
+ }
796
+ }
797
+ }, [templates, colDefs])
798
+
799
+ useEffect(() => {
800
+ if (!timerValue || isNaN(timerValue) || timerValue == 0) {
801
+
802
+ return;
803
+ }
804
+ // Convert minutes to milliseconds
805
+ const interval = timerValue * 60 * 1000;
806
+
807
+ const timeout = setTimeout(() => {
808
+ setLocalRefresh(prev => !prev); // Toggle value
809
+ }, interval);
810
+
811
+ return () => clearTimeout(timeout); // Cleanup
812
+ }, [timerValue]); // re-run after each refresh or change in value
813
+
814
+ return (
815
+ <Grid item container size={12}>
816
+ <Grid container item
817
+ sx={{ borderTop: '1px solid #ccc', backgroundColor: '#fafafb', justifyContent: 'space-between' }} padding={2}
818
+ size={12}>
819
+ <Box sx={{ display: 'flex', minWidth: '250px' }}>
820
+ <Box sx={{ minWidth: '250px' }}>
821
+
822
+ <FormControl fullWidth>
823
+ <Autocomplete
824
+ size={'small'}
825
+ value={selectedTemplate}
826
+ fullWidth
827
+ disableClearable
828
+ options={templates}
829
+ onChange={(e, value) => {
830
+ setSelectedTemplate(value)
831
+
832
+ }
833
+ }
834
+ getOptionLabel={option => option.name}
835
+ renderInput={params => (
836
+ <TextField
837
+ label='شكل النموذج'
838
+ {...params}
839
+ onMouseDown={() => {
840
+ handleGetTemplates()
841
+ }}
842
+ />
843
+ )}
844
+ />
845
+
846
+ </FormControl>
847
+
848
+ </Box>
849
+ <Box sx={{ ml: '5px' }}>
850
+ <Tooltip title='مؤقت' placement={'top'}>
851
+ <Select variant={'outlined'} value={timerValue} onChange={(e) => setTimerValue(e.target.value)}
852
+ defaultValue={0} size={'small'}
853
+ color='primary' sx={{ width: '60px' }}>
854
+ <MenuItem key={1} value={0}>0</MenuItem>
855
+ <MenuItem key={2} value={5}>5</MenuItem>
856
+ <MenuItem key={3} value={15}>15</MenuItem>
857
+ <MenuItem key={4} value={30}>30</MenuItem>
858
+ </Select>
859
+ </Tooltip>
860
+ </Box>
861
+ </Box>
862
+ <Box sx={{ display: 'flex', justifyContent: 'center' }}>
863
+ {streamEndPoint &&
864
+ <Box>
865
+ <Tooltip title='تصدير'>
866
+ <IconButton
867
+ disabled={isDownloading}
868
+ onClick={handleCSVExport}
869
+ color='primary'
870
+ >
871
+ {isDownloading ? <CircularProgress size={24} /> : <FileExcelOutline />}
872
+ </IconButton>
873
+ </Tooltip>
874
+ </Box>
875
+ }
876
+ <Box>
877
+ <Tooltip title='حفظ النموذج'>
878
+ <IconButton disabled={selectedTemplate == null} onClick={() => {
879
+ handleSaveTemplate()
880
+ }} color='primary'>
881
+ <Save />
882
+ </IconButton>
883
+ </Tooltip>
884
+ </Box>
885
+ <Box>
886
+ <Tooltip title='حفظ بأسم'>
887
+ <IconButton onClick={() => {
888
+ setIsTemplateEditing(false)
889
+ handleToggleDialogs('addTemplate')
890
+ }} color='primary'>
891
+ <SaveAs />
892
+ </IconButton>
893
+ </Tooltip>
894
+ </Box>
895
+
896
+ <Box>
897
+ <Tooltip title='تعديل'>
898
+ <IconButton disabled={selectedTemplate == null}
899
+ onClick={() => {
900
+ setIsTemplateEditing(true)
901
+ handleToggleDialogs('addTemplate')
902
+ }}
903
+ color='primary'
904
+ >
905
+ <Edit />
906
+ </IconButton>
907
+ </Tooltip>
908
+ </Box>
909
+ <Box>
910
+ <IconButton color={'primary'} onClick={() => handleToggleDialogs('CustomFilter')}>
911
+ <FilterAlt />
912
+ </IconButton>
913
+ </Box>
914
+ <Box>
915
+ <Tooltip title='اعادة تحميل'>
916
+ <IconButton onClick={() => setLocalRefresh(!localRefresh)}>
917
+ <RefreshOutlined />
918
+ </IconButton>
919
+ </Tooltip>
920
+ </Box>
921
+
922
+ </Box>
923
+ </Grid>
924
+ <div style={{ width: "100%", height: height ?? "70vh", direction: 'ltr' }}>
925
+ <AgGridReact
926
+ debug={false}
927
+ columnHoverHighlight={true}
928
+ theme={agTheme}
929
+ enableRtl={true}
930
+ columnDefs={colDefs}
931
+ stopEditingWhenCellsLoseFocus={true}
932
+ rowModelType={"serverSide"}
933
+ onGridReady={onGridReady}
934
+ // defaultColDef={{
935
+ // enableCellChangeFlash:true
936
+ // }}
937
+ cacheBlockSize={20}
938
+ // // rowBuffer={0}
939
+ onRowSelected={onRowSelected}
940
+ // getChildCount={getChildCount}
941
+ sideBar={sideBarConfig}
942
+ gridOptions={{
943
+ enableRangeSelection: true,
944
+ enableCharts: true,
945
+ }}
946
+ rowSelection="multiple"
947
+ statusBar={{
948
+ statusPanels: [
949
+ // { statusPanel: 'agTotalRowCountComponent' },
950
+ {
951
+ statusPanel: CustomStatusBar,
952
+ align: 'left',
953
+ },
954
+
955
+ // { statusPanel: 'agFilteredRowCountComponent' },
956
+ // { statusPanel: 'agSelectedRowCountComponent' },
957
+ ],
958
+ }}
959
+ groupHeaderHeight={25}
960
+ onChartCreated={x => console.log(x)}
961
+ headerHeight={25}
962
+ autoGroupColumnDef={autoGroupColumnDef}
963
+ getRowId={getRowId}
964
+ serverSideDatasource={datasource}
965
+ blockLoadDebounceMillis={500}
966
+ pinnedBottomRowData={pagedAgg}
967
+ suppressRowClickSelection={true}
968
+ serverSidePivotResultFieldSeparator={"_"}
969
+ pivotKeySeparator={"_"}
970
+ getRowStyle={(row) => {
971
+ if (row.node.group) {
972
+ return { fontWeight: 'bold' };
973
+ }
974
+ if (expireReport) {
975
+ if (row.node?.data?.expireDate && new Date(row.node.data.expireDate) <= new Date()) {
976
+ return { background: '#FF625F' };
977
+ }
978
+ if (row.node?.data?.expireDate) {
979
+ const expireDate = new Date(row.node.data.expireDate);
980
+ const currentDate = new Date();
981
+ const diffInDays = (expireDate - currentDate) / (1000 * 60 * 60 * 24); // Convert milliseconds to days
982
+
983
+ if (diffInDays > 10) {
984
+ return { background: '#8AFF8A' };
985
+ } else if (diffInDays > 0) {
986
+ return { background: '#fcfd74' };
987
+ }
988
+ }
989
+ }
990
+ }}
991
+
992
+ components={{
993
+ customStatusBar: CustomStatusBar,
994
+ // agColumnsToolPanel: CustomColumnsToolPanel
995
+
996
+ }}
997
+
998
+
999
+ onSortChanged={params => {
1000
+ const sm = params.columns;
1001
+ if (sm.length == 1 && sm.some(s => s.colId === 'IZ_groupCount')) {
1002
+ params.api.refreshServerSide({ purge: true })
1003
+ }
1004
+ }}
1005
+ />
1006
+ </div>
1007
+ <Dialog
1008
+ fullWidth
1009
+ open={openDialogs?.addTemplate}
1010
+ maxWidth='md'
1011
+ scroll='body'
1012
+ onClose={() => {
1013
+ handleToggleDialogs('addTemplate')
1014
+ }}
1015
+ >
1016
+ <AddTemplateDialog
1017
+ filterValue={Filter}
1018
+ handleToggleDialogs={handleToggleDialogs}
1019
+ pageName={router.pathname}
1020
+ item={isTemplateEditing === true ? selectedTemplate : null}
1021
+ template={gridApi?.getColumnState()}
1022
+ userId={authValues?.user?.id} />
1023
+ </Dialog>
1024
+
1025
+ <Dialog
1026
+ fullWidth
1027
+ open={openDialogs.CustomFilter && localClasName}
1028
+ maxWidth='xl'
1029
+ scroll='body'
1030
+ // onClose={() => handleToggleDialogs('CustomFilter')}
1031
+ >
1032
+ <CustomFilterDialog
1033
+ handleToggleDialogs={handleToggleDialogs}
1034
+ Filter={Filter.LocalTfilter}
1035
+ handleFilterChange={handleFilterChange}
1036
+ className={localClasName}
1037
+ LocalFilter={false}
1038
+ />
1039
+ </Dialog>
1040
+ </Grid>
1041
+
1042
+ )
1043
+ }
1044
+
1045
+
1046
+ export default TAGGrid