@solidxai/core-ui 0.1.5-beta.1 → 0.1.5-beta.10

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 (239) hide show
  1. package/dist/components/auth/AuthTabs.d.ts +14 -0
  2. package/dist/components/auth/AuthTabs.d.ts.map +1 -0
  3. package/dist/components/auth/AuthTabs.js +19 -0
  4. package/dist/components/auth/AuthTabs.js.map +1 -0
  5. package/dist/components/auth/AuthTabs.tsx +38 -0
  6. package/dist/components/common/AuthBanner.js.map +1 -1
  7. package/dist/components/common/SolidErrorStatePage.d.ts +12 -0
  8. package/dist/components/common/SolidErrorStatePage.d.ts.map +1 -0
  9. package/dist/components/common/SolidErrorStatePage.js +16 -0
  10. package/dist/components/common/SolidErrorStatePage.js.map +1 -0
  11. package/dist/components/common/SolidErrorStatePage.tsx +55 -0
  12. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  13. package/dist/components/core/chatter/SolidChatter.js +5 -2
  14. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  15. package/dist/components/core/chatter/SolidChatter.tsx +5 -2
  16. package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts +5 -2
  17. package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts.map +1 -1
  18. package/dist/components/core/chatter/SolidChatterAuditMessage.js +19 -1
  19. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  20. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +29 -5
  21. package/dist/components/core/chatter/SolidChatterDateDivider.d.ts.map +1 -1
  22. package/dist/components/core/chatter/SolidChatterDateDivider.js +4 -1
  23. package/dist/components/core/chatter/SolidChatterDateDivider.js.map +1 -1
  24. package/dist/components/core/chatter/SolidChatterDateDivider.tsx +5 -1
  25. package/dist/components/core/common/SolidCreateButton.js +3 -3
  26. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  27. package/dist/components/core/common/SolidCreateButton.tsx +3 -3
  28. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  29. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  30. package/dist/components/core/common/SolidGlobalSearchElement.tsx +1 -0
  31. package/dist/components/core/dashboard/DashboardFilter.d.ts +13 -0
  32. package/dist/components/core/dashboard/DashboardFilter.d.ts.map +1 -0
  33. package/dist/components/core/dashboard/DashboardFilter.js +305 -0
  34. package/dist/components/core/dashboard/DashboardFilter.js.map +1 -0
  35. package/dist/components/core/dashboard/DashboardFilter.tsx +356 -0
  36. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts +3 -0
  37. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts.map +1 -0
  38. package/dist/components/core/dashboard/PrimeDataTableWrapper.js +21 -0
  39. package/dist/components/core/dashboard/PrimeDataTableWrapper.js.map +1 -0
  40. package/dist/components/core/dashboard/PrimeDataTableWrapper.tsx +40 -0
  41. package/dist/components/core/dashboard/SolidDashboard.d.ts +0 -1
  42. package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -1
  43. package/dist/components/core/dashboard/SolidDashboard.js +51 -22
  44. package/dist/components/core/dashboard/SolidDashboard.js.map +1 -1
  45. package/dist/components/core/dashboard/SolidDashboard.module.css +6 -2
  46. package/dist/components/core/dashboard/SolidDashboard.tsx +133 -56
  47. package/dist/components/core/dashboard/SolidDashboardBody.d.ts +13 -1
  48. package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -1
  49. package/dist/components/core/dashboard/SolidDashboardBody.js +134 -48
  50. package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -1
  51. package/dist/components/core/dashboard/SolidDashboardBody.tsx +143 -91
  52. package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -1
  53. package/dist/components/core/dashboard/SolidQuestionRenderer.js +1 -1
  54. package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -1
  55. package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +12 -10
  56. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -1
  57. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +29 -2
  58. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -1
  59. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +33 -3
  60. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts +10 -0
  61. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts.map +1 -0
  62. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js +16 -0
  63. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js.map +1 -0
  64. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.ts +19 -0
  65. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts +8 -0
  66. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts.map +1 -0
  67. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js +64 -0
  68. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js.map +1 -0
  69. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.ts +30 -0
  70. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts +8 -0
  71. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts.map +1 -0
  72. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js +62 -0
  73. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js.map +1 -0
  74. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.ts +29 -0
  75. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +2 -2
  76. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  77. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +2 -2
  78. package/dist/components/core/form/SolidFormView.js +1 -1
  79. package/dist/components/core/form/SolidFormView.js.map +1 -1
  80. package/dist/components/core/form/SolidFormView.tsx +1 -1
  81. package/dist/components/core/kanban/SolidKanbanView.js +2 -2
  82. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  83. package/dist/components/core/kanban/SolidKanbanView.tsx +2 -2
  84. package/dist/components/core/list/PLAN.md +92 -0
  85. package/dist/components/core/list/SolidDataTable.d.ts +58 -0
  86. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -0
  87. package/dist/components/core/list/SolidDataTable.js +141 -0
  88. package/dist/components/core/list/SolidDataTable.js.map +1 -0
  89. package/dist/components/core/list/SolidDataTable.tsx +314 -0
  90. package/dist/components/core/list/SolidDataTablePagination.d.ts +15 -0
  91. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +1 -0
  92. package/dist/components/core/list/SolidDataTablePagination.js +22 -0
  93. package/dist/components/core/list/SolidDataTablePagination.js.map +1 -0
  94. package/dist/components/core/list/SolidDataTablePagination.tsx +71 -0
  95. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  96. package/dist/components/core/list/SolidListView.js +14 -11
  97. package/dist/components/core/list/SolidListView.js.map +1 -1
  98. package/dist/components/core/list/SolidListView.tsx +8 -7
  99. package/dist/components/core/list/columns/SolidDateColumn.d.ts +2 -0
  100. package/dist/components/core/list/columns/SolidDateColumn.d.ts.map +1 -1
  101. package/dist/components/core/list/columns/SolidDateColumn.js +9 -1
  102. package/dist/components/core/list/columns/SolidDateColumn.js.map +1 -1
  103. package/dist/components/core/list/columns/SolidDateColumn.tsx +13 -1
  104. package/dist/components/core/list/columns/SolidDatetimeColumn.js +1 -1
  105. package/dist/components/core/list/columns/SolidDatetimeColumn.js.map +1 -1
  106. package/dist/components/core/list/columns/SolidDatetimeColumn.tsx +1 -1
  107. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  108. package/dist/components/core/tree/SolidTreeView.js +277 -43
  109. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  110. package/dist/components/core/tree/SolidTreeView.tsx +436 -4
  111. package/dist/components/layout/AdminTopHeader.d.ts +2 -0
  112. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -0
  113. package/dist/components/layout/AdminTopHeader.js +68 -0
  114. package/dist/components/layout/AdminTopHeader.js.map +1 -0
  115. package/dist/components/layout/AdminTopHeader.tsx +135 -0
  116. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +24 -0
  117. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -0
  118. package/dist/components/shad-cn-ui/SolidAutocomplete.js +224 -0
  119. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -0
  120. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +339 -0
  121. package/dist/components/shad-cn-ui/SolidButton.d.ts +14 -0
  122. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -0
  123. package/dist/components/shad-cn-ui/SolidButton.js +36 -0
  124. package/dist/components/shad-cn-ui/SolidButton.js.map +1 -0
  125. package/dist/components/shad-cn-ui/SolidButton.tsx +54 -0
  126. package/dist/components/shad-cn-ui/SolidInput.d.ts +5 -0
  127. package/dist/components/shad-cn-ui/SolidInput.d.ts.map +1 -0
  128. package/dist/components/shad-cn-ui/SolidInput.js +35 -0
  129. package/dist/components/shad-cn-ui/SolidInput.js.map +1 -0
  130. package/dist/components/shad-cn-ui/SolidInput.tsx +12 -0
  131. package/dist/components/shad-cn-ui/SolidNumberInput.d.ts +10 -0
  132. package/dist/components/shad-cn-ui/SolidNumberInput.d.ts.map +1 -0
  133. package/dist/components/shad-cn-ui/SolidNumberInput.js +33 -0
  134. package/dist/components/shad-cn-ui/SolidNumberInput.js.map +1 -0
  135. package/dist/components/shad-cn-ui/SolidNumberInput.tsx +24 -0
  136. package/dist/components/shad-cn-ui/SolidSelect.d.ts +16 -0
  137. package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -0
  138. package/dist/components/shad-cn-ui/SolidSelect.js +26 -0
  139. package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -0
  140. package/dist/components/shad-cn-ui/SolidSelect.tsx +65 -0
  141. package/dist/components/shad-cn-ui/SolidTabs.d.ts +18 -0
  142. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -0
  143. package/dist/components/shad-cn-ui/SolidTabs.js +22 -0
  144. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -0
  145. package/dist/components/shad-cn-ui/SolidTabs.tsx +73 -0
  146. package/dist/components/shad-cn-ui/index.d.ts +7 -0
  147. package/dist/components/shad-cn-ui/index.d.ts.map +1 -0
  148. package/dist/components/shad-cn-ui/index.js +7 -0
  149. package/dist/components/shad-cn-ui/index.js.map +1 -0
  150. package/dist/components/shad-cn-ui/index.ts +6 -0
  151. package/dist/components/solid-ui/SolidButton.d.ts +14 -0
  152. package/dist/components/solid-ui/SolidButton.d.ts.map +1 -0
  153. package/dist/components/solid-ui/SolidButton.js +36 -0
  154. package/dist/components/solid-ui/SolidButton.js.map +1 -0
  155. package/dist/components/solid-ui/SolidButton.tsx +54 -0
  156. package/dist/components/solid-ui/SolidTabs.d.ts +18 -0
  157. package/dist/components/solid-ui/SolidTabs.d.ts.map +1 -0
  158. package/dist/components/solid-ui/SolidTabs.js +22 -0
  159. package/dist/components/solid-ui/SolidTabs.js.map +1 -0
  160. package/dist/components/solid-ui/SolidTabs.tsx +73 -0
  161. package/dist/components/solid-ui/index.d.ts +3 -0
  162. package/dist/components/solid-ui/index.d.ts.map +1 -0
  163. package/dist/components/solid-ui/index.js +3 -0
  164. package/dist/components/solid-ui/index.js.map +1 -0
  165. package/dist/components/solid-ui/index.ts +2 -0
  166. package/dist/constants/error-messages.d.ts +3 -0
  167. package/dist/constants/error-messages.d.ts.map +1 -1
  168. package/dist/constants/error-messages.js +3 -0
  169. package/dist/constants/error-messages.js.map +1 -1
  170. package/dist/constants/error-messages.ts +24 -20
  171. package/dist/helpers/registry.d.ts.map +1 -1
  172. package/dist/helpers/registry.js +10 -0
  173. package/dist/helpers/registry.js.map +1 -1
  174. package/dist/helpers/registry.ts +12 -0
  175. package/dist/helpers/routePaths.d.ts +1 -1
  176. package/dist/helpers/routePaths.d.ts.map +1 -1
  177. package/dist/helpers/routePaths.js +2 -2
  178. package/dist/helpers/routePaths.js.map +1 -1
  179. package/dist/helpers/routePaths.ts +2 -2
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +2 -0
  183. package/dist/index.js.map +1 -1
  184. package/dist/index.ts +8 -0
  185. package/dist/redux/api/dashboardLayoutApi.d.ts +24 -0
  186. package/dist/redux/api/dashboardLayoutApi.d.ts.map +1 -0
  187. package/dist/redux/api/dashboardLayoutApi.js +34 -0
  188. package/dist/redux/api/dashboardLayoutApi.js.map +1 -0
  189. package/dist/redux/api/dashboardLayoutApi.ts +55 -0
  190. package/dist/redux/store/defaultStoreConfig.d.ts +4 -0
  191. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  192. package/dist/redux/store/defaultStoreConfig.js +3 -2
  193. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  194. package/dist/redux/store/defaultStoreConfig.ts +4 -2
  195. package/dist/resources/globals.css +8 -0
  196. package/dist/resources/images/errors/error-astronaut-404.png +0 -0
  197. package/dist/resources/shadcn-base.css +3200 -0
  198. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  199. package/dist/routes/pages/admin/core/DashboardPage.js +3 -7
  200. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  201. package/dist/routes/pages/admin/core/DashboardPage.tsx +2 -5
  202. package/dist/routes/pages/admin/core/FormPage.d.ts.map +1 -1
  203. package/dist/routes/pages/admin/core/FormPage.js +6 -1
  204. package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
  205. package/dist/routes/pages/admin/core/FormPage.tsx +7 -1
  206. package/dist/routes/solidRoutes.js +1 -1
  207. package/dist/routes/solidRoutes.js.map +1 -1
  208. package/dist/routes/solidRoutes.tsx +1 -1
  209. package/package.json +13 -11
  210. package/dist/components/auth/SolidOTPVerify.d.ts +0 -3
  211. package/dist/components/auth/SolidOTPVerify.d.ts.map +0 -1
  212. package/dist/components/auth/SolidOTPVerify.js +0 -67
  213. package/dist/components/auth/SolidOTPVerify.js.map +0 -1
  214. package/dist/components/auth/SolidOTPVerify.tsx +0 -133
  215. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +0 -2
  216. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +0 -1
  217. package/dist/components/core/common/LoadDynamicJsxComponent.js +0 -50
  218. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +0 -1
  219. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +0 -70
  220. package/dist/nextAuth/authProviders.d.ts +0 -4
  221. package/dist/nextAuth/authProviders.d.ts.map +0 -1
  222. package/dist/nextAuth/authProviders.js +0 -198
  223. package/dist/nextAuth/authProviders.js.map +0 -1
  224. package/dist/nextAuth/authProviders.tsx +0 -232
  225. package/dist/nextAuth/handleLogout.d.ts +0 -2
  226. package/dist/nextAuth/handleLogout.d.ts.map +0 -1
  227. package/dist/nextAuth/handleLogout.js +0 -36
  228. package/dist/nextAuth/handleLogout.js.map +0 -1
  229. package/dist/nextAuth/handleLogout.tsx +0 -39
  230. package/dist/nextAuth/refreshAccessToken.d.ts +0 -2
  231. package/dist/nextAuth/refreshAccessToken.d.ts.map +0 -1
  232. package/dist/nextAuth/refreshAccessToken.js +0 -24
  233. package/dist/nextAuth/refreshAccessToken.js.map +0 -1
  234. package/dist/nextAuth/refreshAccessToken.tsx +0 -28
  235. package/dist/redux/features/settingsSlice.d.ts +0 -20
  236. package/dist/redux/features/settingsSlice.d.ts.map +0 -1
  237. package/dist/redux/features/settingsSlice.js +0 -39
  238. package/dist/redux/features/settingsSlice.js.map +0 -1
  239. package/dist/redux/features/settingsSlice.ts +0 -60
@@ -1 +1 @@
1
- {"version":3,"file":"SolidDashboard.js","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboard.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAqB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE1F,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAA4B,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,MAAM,MAAM,6BAA6B,CAAC;AACjD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAE1G,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,sCAAa,CAAA;IACb,6DAAoC,CAAA;IACpC,+DAAsC,CAAA;AACxC,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AAED,IAAK,WAGJ;AAHD,WAAK,WAAW;IACd,0BAAW,CAAA;IACX,oCAAqB,CAAA;AACvB,CAAC,EAHI,WAAW,KAAX,WAAW,QAGf;AAeD,SAAS,mBAAmB,CAC1B,IAAuB,EACvB,qBAA0E,EAC1E,YAA6C;IAErC,IAAA,OAAO,GAAW,IAAI,QAAf,EAAE,IAAI,GAAK,IAAI,KAAT,CAAU;IAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,gDAAgD;QAChD,IAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC;QAEzE,8BAA8B;QAC9B,qBAAqB,CAAC,aAAa,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAE9D,8BAA8B;QAC9B,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;KAEtC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB,EAAE,WAAoB,EAAE,aAAsB;IACtF,IAAM,OAAO,GAAQ;QACnB,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,GAAG,EAAE,UAAU;aAChB;SACF;KACF,CAAC;IAEF,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;KACnC;SAAM,IAAI,aAAa,KAAK,SAAS,EAAE;QACtC,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;KACvC;IAED,IAAM,KAAK,GAAG;QACZ,OAAO,SAAA;QACP,QAAQ,EAAE,CAAC,oBAAoB,EAAE,WAAW,CAAC;KAC9C,CAAC;IACF,IAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;QACnC,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,qCAAqC;AACrC,mCAAmC;AACnC,MAAM;AACN,IAAI;AACJ,8IAA8I;AAC9I,MAAM;AACN,sCAAsC;AACtC,IAAI;AACJ,GAAG;AACH,SAAS,qBAAqB,CAAC,SAAgB,EAAE,kBAA6C,EAAE,OAAwB;IACtH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IAED,sEAAsE;IACtE,IAAM,oBAAoB,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAA,QAAQ;QAC5D,OAAA,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAA7C,CAA6C,CAAC;IAArE,CAAqE,CACtE,CAAC;IAEF,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAQD,IAAM,cAAc,GAAG,UAAC,MAA+B;;IAC/C,IAAA,KAA6B,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,EAA5H,IAAI,UAAA,EAAE,SAAS,eAAA,EAAE,KAAK,WAAsG,CAAA,CAAC,iDAAiD;IACtL,4HAA4H;IAC5H,gJAAgJ;IAChJ,sKAAsK;IACtK,oCAAoC;IACpC,8EAA8E;IAC9E,iBAAiB;IACjB,mBAAmB;IACnB,MAAM;IAEN,6EAA6E;IAC7E,6HAA6H;IAC7H,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,aAAa,GAAG,WAAW,CAAC,UAAC,KAAU,YAAK,OAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,aAAa,CAAA,EAAA,CAAC,CAAC;IAC9E,IAAA,KAAwB,QAAQ,CAAkB,EAAE,CAAC,EAApD,OAAO,QAAA,EAAE,UAAU,QAAiC,CAAC;IACtD,IAAA,KAAgD,QAAQ,CAAC,KAAK,CAAC,EAA9D,mBAAmB,QAAA,EAAE,sBAAsB,QAAmB,CAAC;IAChE,IAAA,KAAkC,QAAQ,CAAC,GAAG,CAAC,EAA9C,YAAY,QAAA,EAAE,eAAe,QAAiB,CAAC;IAChD,IAAA,KAA8B,QAAQ,CAAC,KAAK,CAAC,EAA5C,UAAU,QAAA,EAAE,aAAa,QAAmB,CAAC;IAC9C,IAAA,KAA4B,QAAQ,CAAQ,EAAE,CAAC,EAA9C,SAAS,QAAA,EAAE,YAAY,QAAuB,CAAC;IAChD,IAAA,KAA8C,QAAQ,CAA4B,EAAE,CAAC,EAApF,kBAAkB,QAAA,EAAE,qBAAqB,QAA2C,CAAC;IAG5F,SAAS,CAAC;QACR,uDAAuD;QACvD,kEAAkE;QAClE,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YACtB,4CAA4C;YAC5C,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,CAAC,CAAC;SAChE;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAEtB,SAAS,CAAC;QACR,IAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAE7D,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,sBAAsB,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;SAC/C;QAED,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACjB,eAAe,CAAC,KAAK,CAAC,CAAC;aACxB;SACF;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAGP,SAAS,CAAC;QACR,IAAI,UAAU,EAAE;YACd,IAAM,iBAAe,GAAG,UAAC,CAAa;gBACpC,IAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBAC/C,IAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5D,eAAe,CAAC,YAAY,CAAC,CAAC;gBAC9B,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC;YAEF,IAAM,eAAa,GAAG;gBACpB,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC;YAEF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAe,CAAC,CAAC;YACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAa,CAAC,CAAC;YAElD,OAAO;gBACL,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,iBAAe,CAAC,CAAC;gBACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAa,CAAC,CAAC;YACvD,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAGjB,IAAM,UAAU,GAAG;QACjB,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG;QAClB,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9B,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG;QACzB,IAAI,aAAa,EAAE;YACjB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAG,aAAa;SAC1C;aAAM;YACL,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAK,YAAY;SACzC;IACH,CAAC,CAAC;IAII,IAAA,KAAsB,QAAQ,CAAgB,IAAI,CAAC,EAAlD,MAAM,QAAA,EAAE,SAAS,QAAiC,CAAC;IACnD,IAAA,SAAS,GAAI,qBAAqB,EAAE,GAA3B,CAA4B;IAEtC,IAAA,KAAyC,4BAA4B,EAAE,EAAtE,OAAO,QAAA,EAAU,iBAAiB,aAAoC,CAAC;IAC9E,SAAS,CAAC;QACR,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC,0BAA0B;IACxC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,CAAC;;QACR,IAAI,CAAA,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,0CAAE,UAAU,MAAI,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,0CAAE,YAAY,CAAA,EAAE;YAChF,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,IAAM,mBAAmB,GAAG;;;;;;;oBAElB,SAAS,GAAG;wBAChB,UAAU,EAAE,MAAM;wBAClB,UAAU,EAAE,MAAM;qBACnB,CAAC;oBACI,WAAW,GAAG,EAAE,CAAC,SAAS,cAAM,SAAS,GAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9D,qBAAM,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAAhD,QAAQ,GAAG,SAAqC;oBACtD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBAClC,IAAI,QAAQ,KAAI,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,MAAM,CAAA,EAAE;wBACtC,SAAS,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,MAAM,CAAC,CAAC;qBACnC;;;;;;;;SAIJ,CAAA;IAGD,OAAO,CACL,eAAK,SAAS,EAAE,yBAAyB,aACvC,eAAK,SAAS,EAAE,6BAAsB,MAAM,CAAC,gCAAgC,CAAE,aAC5E,SAAS,IAAI,KAAC,qBAAqB,KAAG,EACtC,KAAK,IAAI,KAAC,yBAAyB,KAAG,EACtC,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAC5D,KAAC,0BAA0B,KAAG,CAC/B,EACA,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1D,8BACE,eAAK,SAAS,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,sCAAsC,EAAE,aAC1F,eAAK,SAAS,EAAC,+BAA+B,aAC5C,cAAK,SAAS,EAAC,0CAA0C,EAAC,OAAO,EAAE,kBAAkB,YACnF,YAAG,SAAS,EAAC,gBAAgB,GAAK,GAC9B,EACN,aAAG,SAAS,EAAE,sEAA+D,MAAM,CAAC,mBAAmB,CAAE,aACtG,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAC,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW,CAAC,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,EACtF,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW;wDAC5B,8BACE,KAAC,OAAO,IAAC,SAAS,EAAC,qBAAqB,EAAC,MAAM,EAAC,2BAA2B,GAAG,EAC9E,YAAG,SAAS,EAAC,4CAA4C,qBACtC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW,sBAC5B,OAAO,GACzB,IACD,IAEH,IACA,EACL,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,sBAAsB,IAAC,kBAAkB,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAI,IAChK,EACL,CAAC,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,KAAC,4BAA4B,KAAG,EAClG,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,KAAC,kBAAkB,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,IAC/H,CACJ,IACG,EACL,MAAM,IAAI,CACT,eAAK,SAAS,EAAE,0BAAmB,mBAAmB,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,aACtH,mBAAmB,IAAI,CACtB,cACE,KAAK,EAAE;4BACL,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,YAAY;4BACpB,QAAQ,EAAE,UAAU;4BACpB,IAAI,EAAE,CAAC;4BACP,GAAG,EAAE,CAAC;4BACN,MAAM,EAAE,CAAC;4BACT,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,CAAC;yBACV,EACD,WAAW,EAAE,cAAM,OAAA,aAAa,CAAC,IAAI,CAAC,EAAnB,CAAmB,GACtC,CACH,EACA,mBAAmB;wBAClB,KAAC,MAAM,IACL,IAAI,EAAC,0BAA0B,EAC/B,IAAI,EAAC,OAAO,EACZ,IAAI,QACJ,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EACpD,OAAO,EAAE,WAAW,GACpB,EAGH,mBAAmB,KAAK,KAAK,CAAC,CAAC;wBAC9B,eAAK,SAAS,EAAC,mDAAmD,aAChE,cAAK,SAAS,EAAC,2BAA2B,EAAC,OAAO,EAAE,UAAU,YAC5D,eAAK,SAAS,EAAC,YAAY,kBAAE,KAAC,YAAY,KAAG,mBAAiB,GAC1D,EACN,KAAC,MAAM,IACL,IAAI,EAAC,oBAAoB,EACzB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EACpB,OAAO,EAAE,UAAU,GACnB,IACE;wBACN,CAAC;4BACD,KAAC,kBAAkB,IAAC,MAAM,EAAE,MAAM,GAAI,IAEpC,CACP,IAEG,CACP,CAAC;AACJ,CAAC,CAAA;AAED,eAAe,cAAc,CAAC","sourcesContent":["\nimport { DashboardResponse, useGetDashboardQuery } from '../../../redux/api/dashboardApi';\nimport { SqlExpression } from '../../../types/solid-core';\nimport { Button } from 'primereact/button';\nimport { Tooltip } from \"primereact/tooltip\";\nimport qs from 'qs';\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';\nimport styles from './SolidDashboard.module.css';\nimport SolidDashboardBody from './SolidDashboardBody';\nimport SolidDashboardVariable from './SolidDashboardVariable';\nimport { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper';\nimport { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';\nimport { SolidDashboardLoading } from './SolidDashboardLoading';\nimport { SolidDashboardRenderError } from './SolidDashboardRenderError';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport SolidDashboardNotAvailable from './SolidDashboardNotAvailable';\nimport { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';\n\nexport enum DashboardVariableType {\n DATE = 'date',\n SELECTION_STATIC = 'selectionStatic',\n SELECTION_DYNAMIC = 'selectionDynamic',\n}\n\nenum SOURCE_TYPE {\n SQL = 'sql',\n PROVIDER = 'provider',\n}\n\nexport interface DashboardVariableRecord {\n id: number;\n variableName: string;\n variableType: DashboardVariableType;\n selectionStaticValues?: string;\n selectionDynamicSourceType?: SOURCE_TYPE;\n selectionDynamicProviderName?: string;\n selectionDynamicSQL?: string;\n isMultiSelect?: boolean;\n defaultValue?: string;\n defaultOperator?: string;\n}\n\nfunction handleDashboardData(\n data: DashboardResponse,\n setDashboardVariables: Dispatch<SetStateAction<DashboardVariableRecord[]>>,\n setQuestions: Dispatch<SetStateAction<any[]>>,\n) {\n const { records, meta } = data;\n if (records && records.length > 0) {\n // Set the layout options for the dashboard body\n const dashboardData = records[0]; // Assuming we want the first dashboard\n\n // Set the dashboard variables\n setDashboardVariables(dashboardData.dashboardVariables || []);\n\n // Set the dashboard questions\n setQuestions(dashboardData.questions)\n\n }\n}\n\nfunction getQueryParams(moduleName: string, dashboardId?: number, dashboardName?: string) {\n const filters: any = {\n module: {\n name: {\n $eq: moduleName\n }\n }\n };\n\n if (dashboardId !== undefined) {\n filters.id = { $eq: dashboardId };\n } else if (dashboardName !== undefined) {\n filters.name = { $eq: dashboardName };\n }\n\n const query = {\n filters,\n populate: ['dashboardVariables', 'questions']\n };\n const urlQuery = qs.stringify(query, {\n encodeValuesOnly: true,\n });\n return urlQuery;\n}\n\n// Render the dashboard body only if:\n// 1. There are dashboard questions\n// AND\n// (\n// 1. There are dashboard variables and all dashboard variable filter rules have been applied i.e (all dashboard variables have been selected)\n//. OR\n// 2. There are no dashboard variables\n// )\n// \nfunction isRenderDashboardBody(questions: any[], dashboardVariables: DashboardVariableRecord[], filters: SqlExpression[]) {\n if (questions.length === 0) {\n return false;\n }\n\n if (dashboardVariables.length === 0) {\n return true;\n }\n\n // Check if all dashboard variables have corresponding filters applied\n const allVariablesFiltered = dashboardVariables.every(variable =>\n filters.some(filter => filter.variableName === variable.variableName)\n );\n\n return allVariablesFiltered;\n}\n\ntype SolidDashboardViewProps = {\n moduleName: string;\n dashboardId?: number;\n dashboardName?: string;\n};\n\nconst SolidDashboard = (params: SolidDashboardViewProps) => {\n const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardId, params.dashboardName)) // FIXME : error handling should be done properly\n // Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption\n // TODO [HP]: Shouldn't the type of this state variable be something different? Why are we muddling this with layout but calling it body props? \n // TODO [HP]: Body props should be clearly made up of Gridstack layout options, the questions that make up the body & the filter[] which is an array of SqlExpressions\n // TODO [HP]: This is fully CONFUSED\n // const [layoutOption, setLayoutOption] = useState<SolidDashboardBodyProps>({\n // filters: [],\n // questions: [],\n // });\n\n // TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...\n // const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);\n const dispatch = useDispatch();\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const [filters, setFilters] = useState<SqlExpression[]>([]);\n const [isOpenSolidXAiPanel, setIsOpenSolidXAiPanel] = useState(false);\n const [chatterWidth, setChatterWidth] = useState(380);\n const [isResizing, setIsResizing] = useState(false);\n const [questions, setQuestions] = useState<any[]>([]);\n const [dashboardVariables, setDashboardVariables] = useState<DashboardVariableRecord[]>([]);\n\n\n useEffect(() => {\n // Invoke the dashboard api to fetch the dashboard data\n // console.log('Dashboard Data testing:', isLoading, data, error);\n if (!isLoading && data) {\n // Assuming data contains the layout options\n handleDashboardData(data, setDashboardVariables, setQuestions);\n }\n }, [isLoading, data]);\n\n useEffect(() => {\n const storedOpen = localStorage.getItem('d_solidxai_open');\n const storedWidth = localStorage.getItem('d_solidxai_width');\n\n if (storedOpen !== null) {\n setIsOpenSolidXAiPanel(storedOpen === 'true');\n }\n\n if (storedWidth !== null) {\n const width = parseInt(storedWidth, 10);\n if (!isNaN(width)) {\n setChatterWidth(width);\n }\n }\n }, []);\n\n\n useEffect(() => {\n if (isResizing) {\n const handleMouseMove = (e: MouseEvent) => {\n const newWidth = window.innerWidth - e.clientX;\n const clampedWidth = Math.max(280, Math.min(newWidth, 700));\n setChatterWidth(clampedWidth);\n localStorage.setItem('d_solidxai_width', clampedWidth.toString());\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }\n }, [isResizing]);\n\n\n const handleOpen = () => {\n setIsOpenSolidXAiPanel(true);\n localStorage.setItem('d_solidxai_open', 'true');\n };\n\n const handleClose = () => {\n setIsOpenSolidXAiPanel(false);\n localStorage.setItem('d_solidxai_open', 'false');\n };\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n\n\n const [mcpUrl, setMcpUrl] = useState<string | null>(null);\n const [getMcpUrl] = useLazyGetMcpUrlQuery();\n\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [])\n\n useEffect(() => {\n if (solidSettingsData?.data?.mcpEnabled && solidSettingsData?.data?.mcpServerUrl) {\n enableSolidXAiPanel();\n }\n }, [solidSettingsData]);\n\n const enableSolidXAiPanel = async () => {\n try {\n const queryData = {\n showHeader: \"true\",\n inListView: \"true\"\n };\n const queryString = qs.stringify({ ...queryData }, { encodeValuesOnly: true });\n const response = await getMcpUrl(queryString).unwrap();\n console.log(\"response\", response);\n if (response && response?.data?.mcpUrl) {\n setMcpUrl(response?.data?.mcpUrl);\n }\n } catch (error) {\n\n }\n }\n\n\n return (\n <div className={`h-screen surface-0 flex`}>\n <div className={`h-full flex-grow-1 ${styles.SolidDashboardPageContentWrapper}`}>\n {isLoading && <SolidDashboardLoading />}\n {error && <SolidDashboardRenderError />}\n {!isLoading && !error && data && data.records.length === 0 && (\n <SolidDashboardNotAvailable />\n )}\n {!isLoading && !error && data && data.records.length > 0 && (\n <>\n <div className=\"page-header\" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>\n <div className='flex align-items-center gap-2'>\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <i className=\"pi pi-th-large\"></i>\n </div>\n <p className={`view-title solid-text-wrapper flex align-items-center gap-1 ${styles.SolidDashboardTitle}`}>\n {data?.records[0]?.displayName ? data?.records[0]?.displayName : data?.records[0]?.name}\n {data?.records[0]?.description &&\n <>\n <Tooltip className='solid-field-tooltip' target=\".solid-field-tooltip-icon\" />\n <i className=\"pi pi-info-circle solid-field-tooltip-icon\"\n data-pr-tooltip={data?.records[0]?.description}\n data-pr-position={'right'}\n />\n </>\n }\n </p>\n </div>\n {dashboardVariables && dashboardVariables.length > 0 && <SolidDashboardVariable dashboardVariables={dashboardVariables} filters={filters} setFilters={setFilters} />}\n </div>\n {!isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardFilterRequired />}\n {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody questions={questions} filters={filters} />}\n </>\n )}\n </div>\n {mcpUrl && (\n <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>\n {isOpenSolidXAiPanel && (\n <div\n style={{\n width: 5,\n cursor: 'col-resize',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n height: '100%',\n zIndex: 9,\n }}\n onMouseDown={() => setIsResizing(true)}\n />\n )}\n {isOpenSolidXAiPanel &&\n <Button\n icon=\"pi pi-angle-double-right\"\n size=\"small\"\n text\n className=\"chatter-collapse-btn\"\n style={{ width: 30, height: 30, aspectRatio: '1/1' }}\n onClick={handleClose}\n />\n }\n\n {isOpenSolidXAiPanel === false ?\n <div className=\"flex flex-column gap-2 justify-content-center p-2\">\n <div className=\"chatter-collapsed-content\" onClick={handleOpen}>\n <div className=\"flex gap-2\"> <SolidXAIIcon /> SolidX AI </div>\n </div>\n <Button\n icon=\"pi pi-chevron-left\"\n size=\"small\"\n className=\"px-0\"\n style={{ width: 30 }}\n onClick={handleOpen}\n />\n </div>\n :\n <SolidAiMainWrapper mcpUrl={mcpUrl} />\n }\n </div>\n )}\n\n </div>\n );\n}\n\nexport default SolidDashboard;\n"]}
1
+ {"version":3,"file":"SolidDashboard.js","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboard.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { DashboardResponse, useGetDashboardQuery } from '../../../redux/api/dashboardApi';\nimport { SqlExpression } from '../../../types/solid-core';\nimport { Button } from 'primereact/button';\nimport { Tooltip } from \"primereact/tooltip\";\nimport qs from 'qs';\nimport { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react';\nimport { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';\nimport styles from './SolidDashboard.module.css';\nimport SolidDashboardBody, { GridItem } from './SolidDashboardBody';\nimport { DashboardFilter } from './DashboardFilter';\nimport { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper';\nimport { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';\nimport { SolidDashboardLoading } from './SolidDashboardLoading';\nimport { SolidDashboardRenderError } from './SolidDashboardRenderError';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport SolidDashboardNotAvailable from './SolidDashboardNotAvailable';\nimport { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';\nimport showToast from '../../../helpers/showToast';\nimport { Toast } from \"primereact/toast\";\nimport { ERROR_MESSAGES } from '../../../constants/error-messages';\nimport { useUpsertUserDashboardLayoutMutation } from '../../../redux/api/dashboardLayoutApi';\n\nexport enum DashboardVariableType {\n DATE = 'date',\n SELECTION_STATIC = 'selectionStatic',\n SELECTION_DYNAMIC = 'selectionDynamic',\n}\n\nenum SOURCE_TYPE {\n SQL = 'sql',\n PROVIDER = 'provider',\n}\n\nexport interface DashboardVariableRecord {\n id: number;\n variableName: string;\n variableType: DashboardVariableType;\n selectionStaticValues?: string;\n selectionDynamicSourceType?: SOURCE_TYPE;\n selectionDynamicProviderName?: string;\n selectionDynamicSQL?: string;\n isMultiSelect?: boolean;\n defaultValue?: string;\n defaultOperator?: string;\n}\n\nfunction handleDashboardData(\n data: DashboardResponse,\n setDashboardVariables: Dispatch<SetStateAction<DashboardVariableRecord[]>>,\n setQuestions: Dispatch<SetStateAction<any[]>>,\n) {\n const { records, meta } = data;\n if (records && records.length > 0) {\n // Set the layout options for the dashboard body\n const dashboardData = records[0]; // Assuming we want the first dashboard\n\n // Set the dashboard variables\n setDashboardVariables(dashboardData.dashboardVariables || []);\n\n // Set the dashboard questions\n setQuestions(dashboardData.questions)\n\n }\n}\n\nfunction getQueryParams(moduleName: string, dashboardName?: string) {\n const filters: any = {\n module: {\n name: {\n $eq: moduleName\n }\n }\n };\n\n if (dashboardName !== undefined) {\n filters.name = { $eqi: dashboardName };\n }\n\n const query = {\n filters,\n populate: ['dashboardVariables', 'questions']\n };\n const urlQuery = qs.stringify(query, {\n encodeValuesOnly: true,\n });\n return urlQuery;\n}\n\n// Render the dashboard body only if:\n// 1. There are dashboard questions\n// AND\n// (\n// 1. There are dashboard variables and all dashboard variable filter rules have been applied i.e (all dashboard variables have been selected)\n//. OR\n// 2. There are no dashboard variables\n// )\n// \nfunction isRenderDashboardBody(questions: any[], dashboardVariables: DashboardVariableRecord[], filters: SqlExpression[]) {\n if (questions.length === 0) {\n return false;\n }\n\n if (dashboardVariables.length === 0) {\n return true;\n }\n\n // Check if all dashboard variables have corresponding filters applied\n const allVariablesFiltered = dashboardVariables.every(variable =>\n filters.some(filter => filter.variableName === variable.variableName)\n );\n\n return allVariablesFiltered;\n}\n\ntype SolidDashboardViewProps = {\n moduleName: string;\n dashboardName?: string;\n};\n\nconst SolidDashboard = (params: SolidDashboardViewProps) => {\n const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardName)) // FIXME : error handling should be done properly\n // Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption\n // TODO [HP]: Shouldn't the type of this state variable be something different? Why are we muddling this with layout but calling it body props? \n // TODO [HP]: Body props should be clearly made up of Gridstack layout options, the questions that make up the body & the filter[] which is an array of SqlExpressions\n // TODO [HP]: This is fully CONFUSED\n // const [layoutOption, setLayoutOption] = useState<SolidDashboardBodyProps>({\n // filters: [],\n // questions: [],\n // });\n\n // TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...\n // const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);\n const dispatch = useDispatch();\n const toast = useRef<Toast>(null);\n\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const [filters, setFilters] = useState<SqlExpression[]>([]);\n const [isOpenSolidXAiPanel, setIsOpenSolidXAiPanel] = useState(false);\n const [chatterWidth, setChatterWidth] = useState(380);\n const [isResizing, setIsResizing] = useState(false);\n const [questions, setQuestions] = useState<any[]>([]);\n const [dashboardVariables, setDashboardVariables] = useState<DashboardVariableRecord[]>([]);\n const [isDashboardFilterVisible, setIsDashboardFilterVisible] = useState(false);\n\n\n const [upsertDashboardLayout, { isLoading: isDashboardLayoutLoading, error: dashboardLayoutError, isSuccess: isDashboardLayoutSuccess, data: dashboardLayoutData }] = useUpsertUserDashboardLayoutMutation();\n\n const [dashboardLayout, setDashboardLayout] = useState<GridItem[]>([]);\n\n const updateUserDashboardLayout = async () => {\n try {\n const response = await upsertDashboardLayout({\n dashboardId: data?.records[0].id,\n layout: JSON.stringify(dashboardLayout),\n }).unwrap();\n if (response.statusCode === 200) {\n showToast(toast, \"success\", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_SUCCESSFULLY);\n }\n } catch (error) {\n showToast(toast, \"error\", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_FAILED);\n }\n }\n\n\n useEffect(() => {\n // Invoke the dashboard api to fetch the dashboard data\n // console.log('Dashboard Data testing:', isLoading, data, error);\n if (!isLoading && data) {\n // Assuming data contains the layout options\n handleDashboardData(data, setDashboardVariables, setQuestions);\n }\n }, [isLoading, data]);\n\n useEffect(() => {\n const storedOpen = localStorage.getItem('d_solidxai_open');\n const storedWidth = localStorage.getItem('d_solidxai_width');\n\n if (storedOpen !== null) {\n setIsOpenSolidXAiPanel(storedOpen === 'true');\n }\n\n if (storedWidth !== null) {\n const width = parseInt(storedWidth, 10);\n if (!isNaN(width)) {\n setChatterWidth(width);\n }\n }\n }, []);\n\n\n useEffect(() => {\n if (isResizing) {\n const handleMouseMove = (e: MouseEvent) => {\n const newWidth = window.innerWidth - e.clientX;\n const clampedWidth = Math.max(280, Math.min(newWidth, 700));\n setChatterWidth(clampedWidth);\n localStorage.setItem('d_solidxai_width', clampedWidth.toString());\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }\n }, [isResizing]);\n\n\n const handleOpen = () => {\n setIsOpenSolidXAiPanel(true);\n localStorage.setItem('d_solidxai_open', 'true');\n };\n\n const handleClose = () => {\n setIsOpenSolidXAiPanel(false);\n localStorage.setItem('d_solidxai_open', 'false');\n };\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n\n\n const [mcpUrl, setMcpUrl] = useState<string | null>(null);\n const [getMcpUrl] = useLazyGetMcpUrlQuery();\n\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [])\n\n useEffect(() => {\n if (solidSettingsData?.data?.mcpEnabled && solidSettingsData?.data?.mcpServerUrl) {\n enableSolidXAiPanel();\n }\n }, [solidSettingsData]);\n\n const enableSolidXAiPanel = async () => {\n try {\n const queryData = {\n showHeader: \"true\",\n inListView: \"true\"\n };\n const queryString = qs.stringify({ ...queryData }, { encodeValuesOnly: true });\n const response = await getMcpUrl(queryString).unwrap();\n console.log(\"response\", response);\n if (response && response?.data?.mcpUrl) {\n setMcpUrl(response?.data?.mcpUrl);\n }\n } catch (error) {\n\n }\n }\n\n\n return (\n <div className={`h-screen surface-0 flex`}>\n <Toast ref={toast} />\n\n <div className={`h-full flex-grow-1 ${styles.SolidDashboardPageContentWrapper}`}>\n {isLoading && <SolidDashboardLoading />}\n {error && <SolidDashboardRenderError />}\n {!isLoading && !error && data && data.records.length === 0 && (\n <SolidDashboardNotAvailable />\n )}\n {!isLoading && !error && data && data.records.length > 0 && (\n <>\n <div className=\"page-header\" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>\n <div className='flex align-items-center gap-2'>\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <i className=\"pi pi-th-large\"></i>\n </div>\n <p className={`view-title solid-text-wrapper flex align-items-center gap-1 ${styles.SolidDashboardTitle}`}>\n {data?.records[0]?.displayName ? data?.records[0]?.displayName : data?.records[0]?.name}\n {data?.records[0]?.description &&\n <>\n <Tooltip className='solid-field-tooltip' target=\".solid-field-tooltip-icon\" />\n <i className=\"pi pi-info-circle solid-field-tooltip-icon\"\n data-pr-tooltip={data?.records[0]?.description}\n data-pr-position={'right'}\n />\n </>\n }\n </p>\n </div>\n {dashboardVariables && dashboardVariables.length > 0 && (\n <>\n <div className='flex gap-2'>\n <a onClick={() => setIsDashboardFilterVisible(true)}>\n <>\n <Button\n type=\"button\"\n icon={filters.length > 0 ? \"pi pi-filter-fill\" : \"pi pi-filter\"}\n className={`p-button-sm lg:hidden solid-icon-button `}\n size='small'\n />\n\n <Button\n type=\"button\"\n icon={filters.length > 0 ? \"pi pi-filter-fill\" : \"pi pi-filter\"}\n label={\"Filter\"}\n className={`hidden lg:inline-flex`}\n size='small'\n\n />\n </>\n </a>\n {filters.length > 0 && (\n <Button\n type=\"button\"\n size=\"small\"\n icon=\"pi pi-filter-slash\"\n severity=\"secondary\"\n className=\"solid-icon-button \"\n outlined\n onClick={() => { setFilters([]); setIsDashboardFilterVisible(false); }}\n />\n )}\n <Button\n type=\"button\"\n size=\"small\"\n icon=\"pi pi-save\"\n severity=\"secondary\"\n className=\"solid-icon-button \"\n outlined\n onClick={() => updateUserDashboardLayout()} />\n </div>\n <DashboardFilter\n dashboardVariables={dashboardVariables}\n initialFilters={filters}\n onApply={setFilters}\n visible={isDashboardFilterVisible}\n onHide={() => setIsDashboardFilterVisible(false)}\n />\n </>\n )}\n </div>\n {!isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardFilterRequired />}\n {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody dashboardId={data?.records[0]?.id} questions={questions} filters={filters} dashboardLayout={dashboardLayout} setDashboardLayout={setDashboardLayout} />}\n </>\n )}\n </div>\n {\n mcpUrl && (\n <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>\n {isOpenSolidXAiPanel && (\n <div\n style={{\n width: 5,\n cursor: 'col-resize',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n height: '100%',\n zIndex: 9,\n }}\n onMouseDown={() => setIsResizing(true)}\n />\n )}\n {isOpenSolidXAiPanel &&\n <Button\n icon=\"pi pi-angle-double-right\"\n size=\"small\"\n text\n className=\"chatter-collapse-btn\"\n style={{ width: 30, height: 30, aspectRatio: '1/1' }}\n onClick={handleClose}\n />\n }\n\n {isOpenSolidXAiPanel === false ?\n <div className=\"flex flex-column gap-2 justify-content-center p-2\">\n <div className=\"chatter-collapsed-content\" onClick={handleOpen}>\n <div className=\"flex gap-2\"> <SolidXAIIcon /> SolidX AI </div>\n </div>\n <Button\n icon=\"pi pi-chevron-left\"\n size=\"small\"\n className=\"px-0\"\n style={{ width: 30 }}\n onClick={handleOpen}\n />\n </div>\n :\n <SolidAiMainWrapper mcpUrl={mcpUrl} />\n }\n </div>\n )\n }\n\n </div >\n );\n}\n\nexport default SolidDashboard;\n"]}
@@ -8,9 +8,13 @@
8
8
  }
9
9
 
10
10
  .SolidChartCardWrapper {
11
- box-shadow: 0px 6px 15px 1px rgba(0, 0, 0, 0.05);
12
- border-radius: 8px;
11
+ /* box-shadow: 0px 6px 15px 1px rgb(0 0 0 / 6%); */
12
+ border: 1px solid #e4e3e3;
13
+ border-radius: 12px;
13
14
  background-color: var(--surface-card);
15
+ height: 100%;
16
+ display: flex;
17
+ flex-direction: column;
14
18
  }
15
19
 
16
20
  .SolidChartTitle {
@@ -4,11 +4,11 @@ import { SqlExpression } from '../../../types/solid-core';
4
4
  import { Button } from 'primereact/button';
5
5
  import { Tooltip } from "primereact/tooltip";
6
6
  import qs from 'qs';
7
- import { Dispatch, SetStateAction, useEffect, useState } from 'react';
7
+ import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react';
8
8
  import { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';
9
9
  import styles from './SolidDashboard.module.css';
10
- import SolidDashboardBody from './SolidDashboardBody';
11
- import SolidDashboardVariable from './SolidDashboardVariable';
10
+ import SolidDashboardBody, { GridItem } from './SolidDashboardBody';
11
+ import { DashboardFilter } from './DashboardFilter';
12
12
  import { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper';
13
13
  import { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';
14
14
  import { SolidDashboardLoading } from './SolidDashboardLoading';
@@ -17,6 +17,10 @@ import { useDispatch, useSelector } from "react-redux";
17
17
  import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
18
18
  import SolidDashboardNotAvailable from './SolidDashboardNotAvailable';
19
19
  import { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';
20
+ import showToast from '../../../helpers/showToast';
21
+ import { Toast } from "primereact/toast";
22
+ import { ERROR_MESSAGES } from '../../../constants/error-messages';
23
+ import { useUpsertUserDashboardLayoutMutation } from '../../../redux/api/dashboardLayoutApi';
20
24
 
21
25
  export enum DashboardVariableType {
22
26
  DATE = 'date',
@@ -61,7 +65,7 @@ function handleDashboardData(
61
65
  }
62
66
  }
63
67
 
64
- function getQueryParams(moduleName: string, dashboardId?: number, dashboardName?: string) {
68
+ function getQueryParams(moduleName: string, dashboardName?: string) {
65
69
  const filters: any = {
66
70
  module: {
67
71
  name: {
@@ -70,10 +74,8 @@ function getQueryParams(moduleName: string, dashboardId?: number, dashboardName?
70
74
  }
71
75
  };
72
76
 
73
- if (dashboardId !== undefined) {
74
- filters.id = { $eq: dashboardId };
75
- } else if (dashboardName !== undefined) {
76
- filters.name = { $eq: dashboardName };
77
+ if (dashboardName !== undefined) {
78
+ filters.name = { $eqi: dashboardName };
77
79
  }
78
80
 
79
81
  const query = {
@@ -114,12 +116,11 @@ function isRenderDashboardBody(questions: any[], dashboardVariables: DashboardVa
114
116
 
115
117
  type SolidDashboardViewProps = {
116
118
  moduleName: string;
117
- dashboardId?: number;
118
119
  dashboardName?: string;
119
120
  };
120
121
 
121
122
  const SolidDashboard = (params: SolidDashboardViewProps) => {
122
- const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardId, params.dashboardName)) // FIXME : error handling should be done properly
123
+ const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardName)) // FIXME : error handling should be done properly
123
124
  // Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption
124
125
  // TODO [HP]: Shouldn't the type of this state variable be something different? Why are we muddling this with layout but calling it body props?
125
126
  // TODO [HP]: Body props should be clearly made up of Gridstack layout options, the questions that make up the body & the filter[] which is an array of SqlExpressions
@@ -132,6 +133,8 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
132
133
  // TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...
133
134
  // const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);
134
135
  const dispatch = useDispatch();
136
+ const toast = useRef<Toast>(null);
137
+
135
138
  const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);
136
139
  const [filters, setFilters] = useState<SqlExpression[]>([]);
137
140
  const [isOpenSolidXAiPanel, setIsOpenSolidXAiPanel] = useState(false);
@@ -139,6 +142,26 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
139
142
  const [isResizing, setIsResizing] = useState(false);
140
143
  const [questions, setQuestions] = useState<any[]>([]);
141
144
  const [dashboardVariables, setDashboardVariables] = useState<DashboardVariableRecord[]>([]);
145
+ const [isDashboardFilterVisible, setIsDashboardFilterVisible] = useState(false);
146
+
147
+
148
+ const [upsertDashboardLayout, { isLoading: isDashboardLayoutLoading, error: dashboardLayoutError, isSuccess: isDashboardLayoutSuccess, data: dashboardLayoutData }] = useUpsertUserDashboardLayoutMutation();
149
+
150
+ const [dashboardLayout, setDashboardLayout] = useState<GridItem[]>([]);
151
+
152
+ const updateUserDashboardLayout = async () => {
153
+ try {
154
+ const response = await upsertDashboardLayout({
155
+ dashboardId: data?.records[0].id,
156
+ layout: JSON.stringify(dashboardLayout),
157
+ }).unwrap();
158
+ if (response.statusCode === 200) {
159
+ showToast(toast, "success", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_SUCCESSFULLY);
160
+ }
161
+ } catch (error) {
162
+ showToast(toast, "error", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_FAILED);
163
+ }
164
+ }
142
165
 
143
166
 
144
167
  useEffect(() => {
@@ -245,6 +268,8 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
245
268
 
246
269
  return (
247
270
  <div className={`h-screen surface-0 flex`}>
271
+ <Toast ref={toast} />
272
+
248
273
  <div className={`h-full flex-grow-1 ${styles.SolidDashboardPageContentWrapper}`}>
249
274
  {isLoading && <SolidDashboardLoading />}
250
275
  {error && <SolidDashboardRenderError />}
@@ -271,61 +296,113 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
271
296
  }
272
297
  </p>
273
298
  </div>
274
- {dashboardVariables && dashboardVariables.length > 0 && <SolidDashboardVariable dashboardVariables={dashboardVariables} filters={filters} setFilters={setFilters} />}
299
+ {dashboardVariables && dashboardVariables.length > 0 && (
300
+ <>
301
+ <div className='flex gap-2'>
302
+ <a onClick={() => setIsDashboardFilterVisible(true)}>
303
+ <>
304
+ <Button
305
+ type="button"
306
+ icon={filters.length > 0 ? "pi pi-filter-fill" : "pi pi-filter"}
307
+ className={`p-button-sm lg:hidden solid-icon-button `}
308
+ size='small'
309
+ />
310
+
311
+ <Button
312
+ type="button"
313
+ icon={filters.length > 0 ? "pi pi-filter-fill" : "pi pi-filter"}
314
+ label={"Filter"}
315
+ className={`hidden lg:inline-flex`}
316
+ size='small'
317
+
318
+ />
319
+ </>
320
+ </a>
321
+ {filters.length > 0 && (
322
+ <Button
323
+ type="button"
324
+ size="small"
325
+ icon="pi pi-filter-slash"
326
+ severity="secondary"
327
+ className="solid-icon-button "
328
+ outlined
329
+ onClick={() => { setFilters([]); setIsDashboardFilterVisible(false); }}
330
+ />
331
+ )}
332
+ <Button
333
+ type="button"
334
+ size="small"
335
+ icon="pi pi-save"
336
+ severity="secondary"
337
+ className="solid-icon-button "
338
+ outlined
339
+ onClick={() => updateUserDashboardLayout()} />
340
+ </div>
341
+ <DashboardFilter
342
+ dashboardVariables={dashboardVariables}
343
+ initialFilters={filters}
344
+ onApply={setFilters}
345
+ visible={isDashboardFilterVisible}
346
+ onHide={() => setIsDashboardFilterVisible(false)}
347
+ />
348
+ </>
349
+ )}
275
350
  </div>
276
351
  {!isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardFilterRequired />}
277
- {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody questions={questions} filters={filters} />}
352
+ {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody dashboardId={data?.records[0]?.id} questions={questions} filters={filters} dashboardLayout={dashboardLayout} setDashboardLayout={setDashboardLayout} />}
278
353
  </>
279
354
  )}
280
355
  </div>
281
- {mcpUrl && (
282
- <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>
283
- {isOpenSolidXAiPanel && (
284
- <div
285
- style={{
286
- width: 5,
287
- cursor: 'col-resize',
288
- position: 'absolute',
289
- left: 0,
290
- top: 0,
291
- bottom: 0,
292
- height: '100%',
293
- zIndex: 9,
294
- }}
295
- onMouseDown={() => setIsResizing(true)}
296
- />
297
- )}
298
- {isOpenSolidXAiPanel &&
299
- <Button
300
- icon="pi pi-angle-double-right"
301
- size="small"
302
- text
303
- className="chatter-collapse-btn"
304
- style={{ width: 30, height: 30, aspectRatio: '1/1' }}
305
- onClick={handleClose}
306
- />
307
- }
308
-
309
- {isOpenSolidXAiPanel === false ?
310
- <div className="flex flex-column gap-2 justify-content-center p-2">
311
- <div className="chatter-collapsed-content" onClick={handleOpen}>
312
- <div className="flex gap-2"> <SolidXAIIcon /> SolidX AI </div>
313
- </div>
356
+ {
357
+ mcpUrl && (
358
+ <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>
359
+ {isOpenSolidXAiPanel && (
360
+ <div
361
+ style={{
362
+ width: 5,
363
+ cursor: 'col-resize',
364
+ position: 'absolute',
365
+ left: 0,
366
+ top: 0,
367
+ bottom: 0,
368
+ height: '100%',
369
+ zIndex: 9,
370
+ }}
371
+ onMouseDown={() => setIsResizing(true)}
372
+ />
373
+ )}
374
+ {isOpenSolidXAiPanel &&
314
375
  <Button
315
- icon="pi pi-chevron-left"
376
+ icon="pi pi-angle-double-right"
316
377
  size="small"
317
- className="px-0"
318
- style={{ width: 30 }}
319
- onClick={handleOpen}
378
+ text
379
+ className="chatter-collapse-btn"
380
+ style={{ width: 30, height: 30, aspectRatio: '1/1' }}
381
+ onClick={handleClose}
320
382
  />
321
- </div>
322
- :
323
- <SolidAiMainWrapper mcpUrl={mcpUrl} />
324
- }
325
- </div>
326
- )}
383
+ }
384
+
385
+ {isOpenSolidXAiPanel === false ?
386
+ <div className="flex flex-column gap-2 justify-content-center p-2">
387
+ <div className="chatter-collapsed-content" onClick={handleOpen}>
388
+ <div className="flex gap-2"> <SolidXAIIcon /> SolidX AI </div>
389
+ </div>
390
+ <Button
391
+ icon="pi pi-chevron-left"
392
+ size="small"
393
+ className="px-0"
394
+ style={{ width: 30 }}
395
+ onClick={handleOpen}
396
+ />
397
+ </div>
398
+ :
399
+ <SolidAiMainWrapper mcpUrl={mcpUrl} />
400
+ }
401
+ </div>
402
+ )
403
+ }
327
404
 
328
- </div>
405
+ </div >
329
406
  );
330
407
  }
331
408
 
@@ -1,12 +1,24 @@
1
1
  import 'gridstack/dist/gridstack.min.css';
2
2
  import { GridStackOptions, GridStackWidget } from 'gridstack';
3
3
  import { SqlExpression } from '../../../types/solid-core';
4
+ import 'react-grid-layout/css/styles.css';
5
+ import 'react-resizable/css/styles.css';
4
6
  export interface SolidDashboardBodyProps {
5
7
  dashboardOptions?: GridStackOptions;
6
8
  widgetOptions?: GridStackWidget[];
9
+ dashboardId: string;
7
10
  questions: any[];
8
11
  filters: SqlExpression[];
12
+ dashboardLayout: GridItem[];
13
+ setDashboardLayout: (dashboardLayout: GridItem[]) => void;
9
14
  }
10
- declare const SolidDashboardBody: ({ questions, filters }: SolidDashboardBodyProps) => import("react/jsx-runtime").JSX.Element;
15
+ export type GridItem = {
16
+ i: string;
17
+ x: number;
18
+ y: number;
19
+ w: number;
20
+ h: number;
21
+ };
22
+ declare const SolidDashboardBody: ({ dashboardId, questions, filters, dashboardLayout, setDashboardLayout }: SolidDashboardBodyProps) => import("react/jsx-runtime").JSX.Element;
11
23
  export default SolidDashboardBody;
12
24
  //# sourceMappingURL=SolidDashboardBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidDashboardBody.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboardBody.tsx"],"names":[],"mappings":"AACA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM1D,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAElC,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,QAAA,MAAM,kBAAkB,2BAAiC,uBAAuB,4CA+F/E,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"SolidDashboardBody.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboardBody.tsx"],"names":[],"mappings":"AACA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AAMxC,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,kBAAkB,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAqBF,QAAA,MAAM,kBAAkB,6EAAmF,uBAAuB,4CAgHjI,CAAC;AAEF,eAAe,kBAAkB,CAAC"}