@solidxai/core-ui 0.1.12-beta.5 → 0.1.12-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +5 -2
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +6 -2
- package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
- package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
- package/dist/components/auth/SolidOTPVerify.js +67 -0
- package/dist/components/auth/SolidOTPVerify.js.map +1 -0
- package/dist/components/auth/SolidOTPVerify.tsx +133 -0
- package/dist/components/common/AuthBanner.d.ts +3 -0
- package/dist/components/common/AuthBanner.d.ts.map +1 -0
- package/dist/components/common/AuthBanner.js +15 -0
- package/dist/components/common/AuthBanner.js.map +1 -0
- package/dist/components/common/AuthBanner.tsx +41 -0
- package/dist/components/common/SingleSelectAutoCompleteField.d.ts +2 -0
- package/dist/components/common/SingleSelectAutoCompleteField.d.ts.map +1 -0
- package/dist/components/common/SingleSelectAutoCompleteField.js +92 -0
- package/dist/components/common/SingleSelectAutoCompleteField.js.map +1 -0
- package/dist/components/common/SingleSelectAutoCompleteField.tsx +73 -0
- package/dist/components/common/SolidExportStepper.d.ts +12 -0
- package/dist/components/common/SolidExportStepper.d.ts.map +1 -0
- package/dist/components/common/SolidExportStepper.js +30 -0
- package/dist/components/common/SolidExportStepper.js.map +1 -0
- package/dist/components/common/SolidExportStepper.tsx +135 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts +2 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts.map +1 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js +16 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js.map +1 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +29 -0
- package/dist/components/core/dashboard/DashboardFilter.d.ts +13 -0
- package/dist/components/core/dashboard/DashboardFilter.d.ts.map +1 -0
- package/dist/components/core/dashboard/DashboardFilter.js +299 -0
- package/dist/components/core/dashboard/DashboardFilter.js.map +1 -0
- package/dist/components/core/dashboard/DashboardFilter.tsx +348 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts +3 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts.map +1 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.js +21 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.js.map +1 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.tsx +40 -0
- package/dist/components/core/dashboard/SolidDashboard.d.ts +28 -0
- package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboard.js +183 -0
- package/dist/components/core/dashboard/SolidDashboard.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboard.module.css +83 -0
- package/dist/components/core/dashboard/SolidDashboard.tsx +263 -0
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts +24 -0
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardBody.js +162 -0
- package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardBody.tsx +168 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js +11 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +28 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.d.ts +3 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.js +6 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.tsx +10 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.js +10 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.tsx +61 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts +3 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js +12 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +32 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.js +11 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.tsx +28 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.d.ts +19 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.js +171 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.tsx +259 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts +9 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.js +42 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +99 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts +9 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +35 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +48 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts +7 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js +22 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +51 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts +2 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.js +4 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.ts +25 -0
- package/dist/components/core/dashboard/dashboard-utils.d.ts +2 -0
- package/dist/components/core/dashboard/dashboard-utils.d.ts.map +1 -0
- package/dist/components/core/dashboard/dashboard-utils.js +38 -0
- package/dist/components/core/dashboard/dashboard-utils.js.map +1 -0
- package/dist/components/core/dashboard/dashboard-utils.ts +39 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts +10 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js +16 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.ts +19 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts +8 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js +64 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.ts +30 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts +8 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js +62 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.ts +29 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js +23 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +36 -0
- package/dist/components/core/form/SolidFormView.js +1 -1
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +11 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +26 -19
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +13 -5
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +16 -9
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js +92 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +68 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js +111 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.tsx +122 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts +12 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js +145 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js.map +1 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.tsx +164 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js +87 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +59 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js +73 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +50 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js +20 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.tsx +32 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts +12 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js +81 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.tsx +184 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +16 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js +21 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +23 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +12 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js +16 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +20 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +56 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +140 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +42 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +164 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js +11 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +37 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +121 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +12 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +16 -0
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +1 -1
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +1 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +2 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +39 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +40 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.d.ts +12 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.d.ts.map +1 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.js +81 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.js.map +1 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.tsx +184 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js +87 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +70 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js +33 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.tsx +50 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js +158 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.tsx +185 -0
- package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -1
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +119 -102
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +82 -39
- package/dist/components/core/model/FieldSelector.d.ts +5 -1
- package/dist/components/core/model/FieldSelector.d.ts.map +1 -1
- package/dist/components/core/model/FieldSelector.js +25 -6
- package/dist/components/core/model/FieldSelector.js.map +1 -1
- package/dist/components/core/model/FieldSelector.tsx +50 -5
- package/dist/components/layout/DashboardHeader.d.ts +3 -0
- package/dist/components/layout/DashboardHeader.d.ts.map +1 -0
- package/dist/components/layout/DashboardHeader.js +20 -0
- package/dist/components/layout/DashboardHeader.js.map +1 -0
- package/dist/components/layout/DashboardHeader.tsx +94 -0
- package/dist/components/shad-cn-ui/SolidSelect.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.js +12 -4
- package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.tsx +13 -1
- package/dist/helpers/# no such endpoints exist, need to calle +3 -0
- package/dist/helpers/ToastContainer.d.ts +4 -0
- package/dist/helpers/ToastContainer.d.ts.map +1 -0
- package/dist/helpers/ToastContainer.js +49 -0
- package/dist/helpers/ToastContainer.js.map +1 -0
- package/dist/helpers/ToastContainer.tsx +94 -0
- package/dist/helpers/showToast.d.ts +5 -0
- package/dist/helpers/showToast.d.ts.map +1 -0
- package/dist/helpers/showToast.js +17 -0
- package/dist/helpers/showToast.js.map +1 -0
- package/dist/helpers/showToast.ts +13 -0
- package/dist/helpers/studioSandbox.d.ts +31 -0
- package/dist/helpers/studioSandbox.d.ts.map +1 -0
- package/dist/helpers/studioSandbox.js +104 -0
- package/dist/helpers/studioSandbox.js.map +1 -0
- package/dist/helpers/studioSandbox.ts +117 -0
- package/dist/nextAuth/authProviders.d.ts +4 -0
- package/dist/nextAuth/authProviders.d.ts.map +1 -0
- package/dist/nextAuth/authProviders.js +198 -0
- package/dist/nextAuth/authProviders.js.map +1 -0
- package/dist/nextAuth/authProviders.tsx +232 -0
- package/dist/nextAuth/handleLogout.d.ts +2 -0
- package/dist/nextAuth/handleLogout.d.ts.map +1 -0
- package/dist/nextAuth/handleLogout.js +36 -0
- package/dist/nextAuth/handleLogout.js.map +1 -0
- package/dist/nextAuth/handleLogout.tsx +39 -0
- package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
- package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
- package/dist/nextAuth/refreshAccessToken.js +24 -0
- package/dist/nextAuth/refreshAccessToken.js.map +1 -0
- package/dist/nextAuth/refreshAccessToken.tsx +28 -0
- package/dist/redux/api/dashboardApi.d.ts +23 -0
- package/dist/redux/api/dashboardApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardApi.js +35 -0
- package/dist/redux/api/dashboardApi.js.map +1 -0
- package/dist/redux/api/dashboardApi.ts +56 -0
- package/dist/redux/api/dashboardLayoutApi.d.ts +24 -0
- package/dist/redux/api/dashboardLayoutApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardLayoutApi.js +34 -0
- package/dist/redux/api/dashboardLayoutApi.js.map +1 -0
- package/dist/redux/api/dashboardLayoutApi.ts +55 -0
- package/dist/redux/api/dashboardQuestionApi.d.ts +5 -0
- package/dist/redux/api/dashboardQuestionApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardQuestionApi.js +18 -0
- package/dist/redux/api/dashboardQuestionApi.js.map +1 -0
- package/dist/redux/api/dashboardQuestionApi.ts +17 -0
- package/dist/redux/api/datasourceIntrospectionApi.d.ts +1 -0
- package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.ts +1 -0
- package/dist/redux/features/settingsSlice.d.ts +20 -0
- package/dist/redux/features/settingsSlice.d.ts.map +1 -0
- package/dist/redux/features/settingsSlice.js +39 -0
- package/dist/redux/features/settingsSlice.js.map +1 -0
- package/dist/redux/features/settingsSlice.ts +60 -0
- package/dist/resources/images/Footerbg.png +0 -0
- package/dist/resources/images/LoginBanner.png +0 -0
- package/dist/resources/images/dashboard/Ellipse 1.svg +10 -0
- package/dist/resources/images/dashboard/Rectangle 17.svg +10 -0
- package/dist/resources/images/dashboard/Rectangle 25.svg +11 -0
- package/dist/resources/images/dashboard/image 5.svg +9 -0
- package/dist/resources/images/loginhero.png +0 -0
- package/dist/resources/images/logo.png +0 -0
- package/dist/resources/images/radix-logo-white.png +0 -0
- package/dist/resources/images/radix-logo.png +0 -0
- package/dist/resources/images/signupBanner.png +0 -0
- package/dist/resources/shadcn-base.css +16 -70
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +12 -0
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +160 -59
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +293 -41
- package/package.json +1 -1
- package/dist/helpers/modulePackageResumeState.d.ts +0 -6
- package/dist/helpers/modulePackageResumeState.d.ts.map +0 -1
- package/dist/helpers/modulePackageResumeState.js +0 -46
- package/dist/helpers/modulePackageResumeState.js.map +0 -1
- package/dist/helpers/modulePackageResumeState.ts +0 -57
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import React, { useState, useEffect } from "react";
|
|
2
|
+
import { SolidAutocomplete, SolidButton, SolidDatePicker, SolidDialog, SolidDivider, SolidSelect } from "../../shad-cn-ui";
|
|
3
|
+
import { SqlExpression } from "../../../types/solid-core";
|
|
4
|
+
import { DashboardVariableRecord } from "./SolidDashboard";
|
|
5
|
+
import { useLazyGetDashboardVariableSelectionDynamicValuesQuery } from "../../../redux/api/dashboardApi";
|
|
6
|
+
type AutoCompleteCompleteEvent = { query: string };
|
|
7
|
+
|
|
8
|
+
interface DashboardFilterProps {
|
|
9
|
+
dashboardVariables: DashboardVariableRecord[];
|
|
10
|
+
initialFilters: SqlExpression[];
|
|
11
|
+
onApply: (filters: SqlExpression[]) => void;
|
|
12
|
+
visible: boolean;
|
|
13
|
+
onHide: () => void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const getNumberOfInputs = (matchMode: any): number | null => {
|
|
17
|
+
switch (matchMode) {
|
|
18
|
+
case '$between': return 2;
|
|
19
|
+
case '$in': case '$notIn': return null;
|
|
20
|
+
case '$startsWith': case '$contains': case '$notContains': case '$endsWith': case '$equals': case '$notEquals': case '$lt': case '$lte': case '$gt': case '$gte': return 1;
|
|
21
|
+
case '$null': case '$notNull': return 0;
|
|
22
|
+
default: return 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const dateFilterMatchModeOptions = [
|
|
27
|
+
{ label: 'Equals', value: "$eq" },
|
|
28
|
+
{ label: 'Not Equals', value: "$nei" },
|
|
29
|
+
{ label: 'Less Than', value: "$lt" },
|
|
30
|
+
{ label: 'Less Than Or Equal', value: "$lte" },
|
|
31
|
+
{ label: 'Greater Than', value: "$gt" },
|
|
32
|
+
{ label: 'Greater Than Or Equal', value: "$gte" },
|
|
33
|
+
{ label: 'In', value: "$in" },
|
|
34
|
+
{ label: 'Not In', value: "$notIn" },
|
|
35
|
+
{ label: 'Between', value: "$between" }
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
const selectionFilterMatchModeOptions = [
|
|
39
|
+
{ label: 'In', value: "$in" },
|
|
40
|
+
{ label: 'Not In', value: "$notIn" }
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const FilterValueInput = ({ rule, onChange }: any) => {
|
|
44
|
+
const numberOfInputs = getNumberOfInputs(rule.matchMode);
|
|
45
|
+
|
|
46
|
+
// Ensure values is an array properly sized immediately on render
|
|
47
|
+
let values = Array.isArray(rule.value) ? [...rule.value] : (rule.value ? [rule.value] : []);
|
|
48
|
+
|
|
49
|
+
if (numberOfInputs !== null && numberOfInputs > 0 && values.length !== numberOfInputs) {
|
|
50
|
+
if (values.length < numberOfInputs) {
|
|
51
|
+
values = [...values, ...Array(numberOfInputs - values.length).fill('')];
|
|
52
|
+
} else {
|
|
53
|
+
values = values.slice(0, numberOfInputs);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (values.length === 0 && (numberOfInputs === null || numberOfInputs > 0)) {
|
|
57
|
+
values = [''];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const updateValue = (index: number, val: any) => {
|
|
61
|
+
const newValues = [...values];
|
|
62
|
+
newValues[index] = val;
|
|
63
|
+
onChange(rule.id, 'value', numberOfInputs === 1 ? newValues[0] : newValues);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const addInput = () => {
|
|
67
|
+
const newValues = [...values, ''];
|
|
68
|
+
onChange(rule.id, 'value', newValues);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const deleteInput = (index: number) => {
|
|
72
|
+
if (values.length > 1) {
|
|
73
|
+
const newValues = values.filter((_: any, i: number) => i !== index);
|
|
74
|
+
onChange(rule.id, 'value', newValues);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// Components for actual rendering
|
|
79
|
+
const renderDate = (val: any, index: number) => {
|
|
80
|
+
let dateVal = val ? new Date(val) : null;
|
|
81
|
+
if (isNaN(dateVal?.getTime() || 0)) dateVal = null;
|
|
82
|
+
return (
|
|
83
|
+
<SolidDatePicker
|
|
84
|
+
selected={dateVal || undefined}
|
|
85
|
+
onChange={(nextDate: Date | null) => {
|
|
86
|
+
const dateStr = nextDate ? nextDate.toISOString().split('T')[0] : '';
|
|
87
|
+
updateValue(index, dateStr);
|
|
88
|
+
}}
|
|
89
|
+
dateFormat="MM/dd/yyyy"
|
|
90
|
+
placeholderText="mm/dd/yyyy"
|
|
91
|
+
className="w-full"
|
|
92
|
+
inputClassName="w-full text-sm"
|
|
93
|
+
/>
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const SelectionStaticInput = ({ val, index, updateValue, dv }: any) => {
|
|
98
|
+
const [filteredItems, setFilteredItems] = useState<{ label: string, value: string }[]>([]);
|
|
99
|
+
const staticValues = JSON.parse(dv.selectionStaticValues || '[]') || [];
|
|
100
|
+
const staticValueItems = staticValues.map((v: any) => ({ value: v.split(':')[0], label: v.split(':')[1] }));
|
|
101
|
+
|
|
102
|
+
const search = (event: AutoCompleteCompleteEvent) => {
|
|
103
|
+
const query = event.query.toLowerCase();
|
|
104
|
+
const filtered = staticValueItems.filter((item: any) =>
|
|
105
|
+
item.label.toLowerCase().includes(query)
|
|
106
|
+
);
|
|
107
|
+
setFilteredItems(filtered);
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<SolidAutocomplete
|
|
112
|
+
value={val}
|
|
113
|
+
suggestions={filteredItems}
|
|
114
|
+
completeMethod={search}
|
|
115
|
+
onChange={(e) => updateValue(index, e.value)}
|
|
116
|
+
field="label"
|
|
117
|
+
dropdown
|
|
118
|
+
className="w-full"
|
|
119
|
+
inputClassName="w-full text-sm"
|
|
120
|
+
/>
|
|
121
|
+
);
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const SelectionDynamicInput = ({ val, index, updateValue, dv }: any) => {
|
|
125
|
+
const [filteredItems, setFilteredItems] = useState<{ label: string, value: string }[]>([]);
|
|
126
|
+
const [trigger] = useLazyGetDashboardVariableSelectionDynamicValuesQuery();
|
|
127
|
+
|
|
128
|
+
const search = async (event: AutoCompleteCompleteEvent) => {
|
|
129
|
+
const queryString = `variableId=${dv.id}&q=${event.query}`;
|
|
130
|
+
try {
|
|
131
|
+
const res = await trigger(queryString).unwrap();
|
|
132
|
+
const filtered = res.filter((item: any) =>
|
|
133
|
+
item.label.toLowerCase().includes(event.query.toLowerCase())
|
|
134
|
+
);
|
|
135
|
+
setFilteredItems(filtered);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
console.error(error);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
return (
|
|
142
|
+
<SolidAutocomplete
|
|
143
|
+
value={val}
|
|
144
|
+
suggestions={filteredItems}
|
|
145
|
+
completeMethod={search}
|
|
146
|
+
onChange={(e) => updateValue(index, e.value)}
|
|
147
|
+
field="label"
|
|
148
|
+
dropdown
|
|
149
|
+
className="w-full"
|
|
150
|
+
inputClassName="w-full text-sm"
|
|
151
|
+
/>
|
|
152
|
+
);
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
if (numberOfInputs === 0) return <></>;
|
|
156
|
+
|
|
157
|
+
return (
|
|
158
|
+
<div className="flex flex-column gap-2">
|
|
159
|
+
{values.map((val: any, index: number) => (
|
|
160
|
+
<div key={index} className="flex gap-2">
|
|
161
|
+
<div className="flex-grow-1">
|
|
162
|
+
{rule.variable.variableType === 'date' && renderDate(val, index)}
|
|
163
|
+
{rule.variable.variableType === 'selectionStatic' && <SelectionStaticInput val={val} index={index} updateValue={updateValue} dv={rule.variable} />}
|
|
164
|
+
{rule.variable.variableType === 'selectionDynamic' && <SelectionDynamicInput val={val} index={index} updateValue={updateValue} dv={rule.variable} />}
|
|
165
|
+
</div>
|
|
166
|
+
{numberOfInputs === null && (
|
|
167
|
+
<div className="flex align-items-center">
|
|
168
|
+
<SolidButton type="button" text severity='secondary' icon="si si-plus" size='sm' onClick={addInput} className='p-0 mr-2 target-btn' style={{ width: 30, minWidth: 30 }} />
|
|
169
|
+
<SolidButton type="button" text severity='secondary' icon="si si-trash" size='sm' onClick={() => deleteInput(index)} className='p-0 target-btn' style={{ width: 30, minWidth: 30 }} disabled={values.length <= 1} />
|
|
170
|
+
</div>
|
|
171
|
+
)}
|
|
172
|
+
</div>
|
|
173
|
+
))}
|
|
174
|
+
</div>
|
|
175
|
+
);
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
export const DashboardFilter: React.FC<DashboardFilterProps> = ({
|
|
179
|
+
dashboardVariables,
|
|
180
|
+
initialFilters,
|
|
181
|
+
onApply,
|
|
182
|
+
visible,
|
|
183
|
+
onHide,
|
|
184
|
+
}) => {
|
|
185
|
+
const [rules, setRules] = useState<any[]>([]);
|
|
186
|
+
|
|
187
|
+
useEffect(() => {
|
|
188
|
+
if (visible) {
|
|
189
|
+
// Initialize rules based on dashboardVariables
|
|
190
|
+
const newRules = dashboardVariables.map((dv, index) => {
|
|
191
|
+
const existingFilter = initialFilters.find((f: any) => f.variableName === dv.variableName);
|
|
192
|
+
|
|
193
|
+
const defaultOperator = dv.defaultOperator || (dv.variableType === 'date' ? '$between' : '$in');
|
|
194
|
+
|
|
195
|
+
let defaultValue = null;
|
|
196
|
+
if (existingFilter && existingFilter.value !== undefined) {
|
|
197
|
+
defaultValue = existingFilter.value;
|
|
198
|
+
} else if (dv.defaultValue) {
|
|
199
|
+
try {
|
|
200
|
+
defaultValue = JSON.parse(dv.defaultValue || '[]');
|
|
201
|
+
} catch (e) {
|
|
202
|
+
defaultValue = null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return {
|
|
207
|
+
id: index + 1,
|
|
208
|
+
fieldName: dv.variableName,
|
|
209
|
+
matchMode: existingFilter ? existingFilter.operator : defaultOperator,
|
|
210
|
+
value: defaultValue,
|
|
211
|
+
variable: dv
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
setRules(newRules);
|
|
215
|
+
}
|
|
216
|
+
}, [visible, dashboardVariables, initialFilters]);
|
|
217
|
+
|
|
218
|
+
const handleChange = (id: number, key: string, value: any) => {
|
|
219
|
+
setRules((prev) =>
|
|
220
|
+
prev.map((rule) => {
|
|
221
|
+
if (rule.id === id) {
|
|
222
|
+
let newVal = rule.value;
|
|
223
|
+
// Immediate sync of values count when operator matches
|
|
224
|
+
if (key === 'matchMode') {
|
|
225
|
+
const newNum = getNumberOfInputs(value);
|
|
226
|
+
let currentValues = Array.isArray(rule.value) ? [...rule.value] : (rule.value ? [rule.value] : []);
|
|
227
|
+
if (newNum !== null && newNum > 0) {
|
|
228
|
+
if (currentValues.length < newNum) {
|
|
229
|
+
currentValues = [...currentValues, ...Array(newNum - currentValues.length).fill('')];
|
|
230
|
+
} else if (currentValues.length > newNum) {
|
|
231
|
+
currentValues = currentValues.slice(0, newNum);
|
|
232
|
+
}
|
|
233
|
+
} else if (newNum === null && currentValues.length === 0) {
|
|
234
|
+
currentValues = [''];
|
|
235
|
+
}
|
|
236
|
+
newVal = newNum === 1 && currentValues.length === 1 ? currentValues[0] : currentValues;
|
|
237
|
+
return { ...rule, [key]: value, value: newVal };
|
|
238
|
+
}
|
|
239
|
+
return { ...rule, [key]: value };
|
|
240
|
+
}
|
|
241
|
+
return rule;
|
|
242
|
+
})
|
|
243
|
+
);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
const handleApply = () => {
|
|
247
|
+
const newFilters: SqlExpression[] = rules
|
|
248
|
+
.filter((rule) => {
|
|
249
|
+
if (['$null', '$notNull'].includes(rule.matchMode)) return true;
|
|
250
|
+
|
|
251
|
+
if (rule.value === null || rule.value === undefined) return false;
|
|
252
|
+
if (Array.isArray(rule.value)) {
|
|
253
|
+
const hasValidValue = rule.value.some((v: any) => v !== '' && v !== null);
|
|
254
|
+
if (!hasValidValue) return false;
|
|
255
|
+
} else {
|
|
256
|
+
if (rule.value === '') return false;
|
|
257
|
+
}
|
|
258
|
+
return true;
|
|
259
|
+
})
|
|
260
|
+
.map((rule) => {
|
|
261
|
+
let finalValue = rule.value;
|
|
262
|
+
const numberOfInputs = getNumberOfInputs(rule.matchMode);
|
|
263
|
+
// Clean array values or extract single values
|
|
264
|
+
if (Array.isArray(finalValue)) {
|
|
265
|
+
finalValue = finalValue.filter(v => v !== null && v !== '');
|
|
266
|
+
if (numberOfInputs === 1 && finalValue.length > 0) {
|
|
267
|
+
finalValue = finalValue[0];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// For selection static/dynamic, we might have selected an object {label, value} or string
|
|
272
|
+
// We need to extract the 'value' if it's an object from AutoComplete selection
|
|
273
|
+
if (Array.isArray(finalValue)) {
|
|
274
|
+
finalValue = finalValue.map(v => typeof v === 'object' && v !== null && 'value' in v ? v.value : v);
|
|
275
|
+
} else if (typeof finalValue === 'object' && finalValue !== null && 'value' in finalValue) {
|
|
276
|
+
finalValue = finalValue.value;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return {
|
|
280
|
+
variableName: rule.fieldName,
|
|
281
|
+
operator: rule.matchMode,
|
|
282
|
+
value: finalValue,
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
onApply(newFilters);
|
|
287
|
+
onHide();
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
const handleClear = () => {
|
|
291
|
+
onApply([]);
|
|
292
|
+
onHide();
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
return (
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
<SolidDialog showHeader={false} visible={visible} className="solid-global-search-filter solid-dialog-lg" onHide={onHide}>
|
|
299
|
+
<div className="flex align-items-center justify-content-between px-3">
|
|
300
|
+
<h5 className="solid-custom-title m-0">Add Dashboard Filter</h5>
|
|
301
|
+
<SolidButton icon="si si-times" rounded text aria-label="Cancel" type="reset" size="sm" onClick={onHide} />
|
|
302
|
+
</div>
|
|
303
|
+
<SolidDivider className="m-0" />
|
|
304
|
+
<div className="p-2 lg:p-2">
|
|
305
|
+
<div className='primary-filter-fieldset'>
|
|
306
|
+
<div className="flex flex-column gap-3 py-3">
|
|
307
|
+
|
|
308
|
+
{rules.map((rule) => (
|
|
309
|
+
<div key={rule.id} className="grid grid-nogutter align-items-start">
|
|
310
|
+
<div className="col-12 md:col-4 pr-2">
|
|
311
|
+
<div className="p-inputtext p-disabled w-full flex align-items-center mb-2 md:mb-0" style={{ minHeight: '38px' }}>
|
|
312
|
+
{rule.fieldName}
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
<div className="col-12 md:col-4 pr-2">
|
|
316
|
+
<SolidSelect
|
|
317
|
+
value={rule.matchMode}
|
|
318
|
+
onChange={(e: any) => handleChange(rule.id, 'matchMode', e.value)}
|
|
319
|
+
options={rule.variable.variableType === 'date' ? dateFilterMatchModeOptions : selectionFilterMatchModeOptions}
|
|
320
|
+
placeholder="Select Operator"
|
|
321
|
+
className="w-full"
|
|
322
|
+
/>
|
|
323
|
+
</div>
|
|
324
|
+
<div className="col-12 md:col-4">
|
|
325
|
+
<FilterValueInput rule={rule} onChange={handleChange} />
|
|
326
|
+
</div>
|
|
327
|
+
</div>
|
|
328
|
+
))}
|
|
329
|
+
{rules.length === 0 && (
|
|
330
|
+
<div className="text-color-secondary italic">No variables available for this dashboard.</div>
|
|
331
|
+
)}
|
|
332
|
+
</div>
|
|
333
|
+
</div>
|
|
334
|
+
{/* <div className="flex justify-content-between align-items-center mt-4">
|
|
335
|
+
<Button label="Clear Filters" icon="si si-filter-slash" severity="danger" text onClick={handleClear} />
|
|
336
|
+
<div className="flex gap-2">
|
|
337
|
+
</div>
|
|
338
|
+
</div> */}
|
|
339
|
+
<div className='flex gap-3 mt-3'>
|
|
340
|
+
<SolidButton label="Apply" size="sm" onClick={handleApply} autoFocus />
|
|
341
|
+
<SolidButton type='button' label='Cancel' outlined size='sm' onClick={onHide} />
|
|
342
|
+
</div>
|
|
343
|
+
|
|
344
|
+
</div>
|
|
345
|
+
</SolidDialog>
|
|
346
|
+
|
|
347
|
+
);
|
|
348
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrimeDataTableWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/PrimeDataTableWrapper.tsx"],"names":[],"mappings":"AAMA,QAAA,MAAM,qBAAqB,0BAA2B,GAAG,4CA+BxD,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useGetDashboardQuestionDataByIdQuery } from '../../../redux/api/dashboardQuestionApi';
|
|
3
|
+
import PrimeReactDatatableRenderer from "./chart-renderers/PrimeReactDatatableRenderer";
|
|
4
|
+
import { SolidSpinner } from "../../shad-cn-ui";
|
|
5
|
+
import styles from './SolidDashboard.module.css';
|
|
6
|
+
import qs from 'qs';
|
|
7
|
+
var PrimeDataTableWrapper = function (_a) {
|
|
8
|
+
var _b, _c, _d;
|
|
9
|
+
var question = _a.question, filters = _a.filters;
|
|
10
|
+
var queryParams = qs.stringify({ isPreview: false, filters: filters }, { arrayFormat: 'brackets' });
|
|
11
|
+
var _e = useGetDashboardQuestionDataByIdQuery({
|
|
12
|
+
id: question.id,
|
|
13
|
+
qs: queryParams,
|
|
14
|
+
}), data = _e.data, isLoading = _e.isLoading;
|
|
15
|
+
if (isLoading)
|
|
16
|
+
return _jsx(SolidSpinner, {});
|
|
17
|
+
var textAlign = (_b = question === null || question === void 0 ? void 0 : question.textAlign) !== null && _b !== void 0 ? _b : 'start';
|
|
18
|
+
return (_jsxs("div", { className: "".concat(styles.SolidChartCardWrapper, " p-4"), style: { maxHeight: '40vh', overflowY: 'auto' }, children: [_jsx("div", { className: "font-medium text-".concat(textAlign), children: question.name }), _jsx("div", { className: "mt-2 font-bold text-3xl text-".concat(textAlign), children: (_c = data === null || data === void 0 ? void 0 : data.data) === null || _c === void 0 ? void 0 : _c.kpi }), _jsx(PrimeReactDatatableRenderer, { options: JSON.parse(question === null || question === void 0 ? void 0 : question.chartOptions), visualizationData: (_d = data === null || data === void 0 ? void 0 : data.data) === null || _d === void 0 ? void 0 : _d.visualizationData })] }));
|
|
19
|
+
};
|
|
20
|
+
export default PrimeDataTableWrapper;
|
|
21
|
+
//# sourceMappingURL=PrimeDataTableWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrimeDataTableWrapper.js","sourceRoot":"","sources":["../../../../src/components/core/dashboard/PrimeDataTableWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,yCAAyC,CAAC;AAC/F,OAAO,2BAA2B,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,MAAM,MAAM,6BAA6B,CAAA;AAChD,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,IAAM,qBAAqB,GAAG,UAAC,EAA0B;;QAAxB,QAAQ,cAAA,EAAE,OAAO,aAAA;IAC9C,IAAM,WAAW,GAAG,EAAE,CAAC,SAAS,CAC5B,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,SAAA,EAAE,EAC7B,EAAE,WAAW,EAAE,UAAU,EAAE,CAC9B,CAAC;IAEI,IAAA,KAAsB,oCAAoC,CAAC;QAC7D,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,EAAE,EAAE,WAAW;KAClB,CAAC,EAHM,IAAI,UAAA,EAAE,SAAS,eAGrB,CAAC;IAEH,IAAI,SAAS;QAAE,OAAO,KAAC,YAAY,KAAG,CAAC;IAEvC,IAAM,SAAS,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,mCAAI,OAAO,CAAC;IAEjD,OAAO,CACH,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,qBAAqB,SAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAClG,cAAK,SAAS,EAAE,2BAAoB,SAAS,CAAE,YAC1C,QAAQ,CAAC,IAAI,GACZ,EAEN,cAAK,SAAS,EAAE,uCAAgC,SAAS,CAAE,YACtD,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,GAAG,GACd,EAEN,KAAC,2BAA2B,IACxB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,CAAC,EAC3C,iBAAiB,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,iBAAiB,GAClD,IACA,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC","sourcesContent":["import { useGetDashboardQuestionDataByIdQuery } from '../../../redux/api/dashboardQuestionApi';\nimport PrimeReactDatatableRenderer from \"./chart-renderers/PrimeReactDatatableRenderer\";\nimport { SolidSpinner } from \"../../shad-cn-ui\";\nimport styles from './SolidDashboard.module.css'\nimport qs from 'qs';\n\nconst PrimeDataTableWrapper = ({ question, filters }: any) => {\n const queryParams = qs.stringify(\n { isPreview: false, filters },\n { arrayFormat: 'brackets' }\n );\n\n const { data, isLoading } = useGetDashboardQuestionDataByIdQuery({\n id: question.id,\n qs: queryParams,\n });\n\n if (isLoading) return <SolidSpinner />;\n\n const textAlign = question?.textAlign ?? 'start';\n\n return (\n <div className={`${styles.SolidChartCardWrapper} p-4`} style={{ maxHeight: '40vh', overflowY: 'auto' }}>\n <div className={`font-medium text-${textAlign}`}>\n {question.name}\n </div>\n\n <div className={`mt-2 font-bold text-3xl text-${textAlign}`}>\n {data?.data?.kpi}\n </div>\n\n <PrimeReactDatatableRenderer\n options={JSON.parse(question?.chartOptions)}\n visualizationData={data?.data?.visualizationData}\n />\n </div>\n );\n};\n\nexport default PrimeDataTableWrapper;\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useGetDashboardQuestionDataByIdQuery } from '../../../redux/api/dashboardQuestionApi';
|
|
2
|
+
import PrimeReactDatatableRenderer from "./chart-renderers/PrimeReactDatatableRenderer";
|
|
3
|
+
import { SolidSpinner } from "../../shad-cn-ui";
|
|
4
|
+
import styles from './SolidDashboard.module.css'
|
|
5
|
+
import qs from 'qs';
|
|
6
|
+
|
|
7
|
+
const PrimeDataTableWrapper = ({ question, filters }: any) => {
|
|
8
|
+
const queryParams = qs.stringify(
|
|
9
|
+
{ isPreview: false, filters },
|
|
10
|
+
{ arrayFormat: 'brackets' }
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
const { data, isLoading } = useGetDashboardQuestionDataByIdQuery({
|
|
14
|
+
id: question.id,
|
|
15
|
+
qs: queryParams,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
if (isLoading) return <SolidSpinner />;
|
|
19
|
+
|
|
20
|
+
const textAlign = question?.textAlign ?? 'start';
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<div className={`${styles.SolidChartCardWrapper} p-4`} style={{ maxHeight: '40vh', overflowY: 'auto' }}>
|
|
24
|
+
<div className={`font-medium text-${textAlign}`}>
|
|
25
|
+
{question.name}
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div className={`mt-2 font-bold text-3xl text-${textAlign}`}>
|
|
29
|
+
{data?.data?.kpi}
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<PrimeReactDatatableRenderer
|
|
33
|
+
options={JSON.parse(question?.chartOptions)}
|
|
34
|
+
visualizationData={data?.data?.visualizationData}
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default PrimeDataTableWrapper;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare enum DashboardVariableType {
|
|
2
|
+
DATE = "date",
|
|
3
|
+
SELECTION_STATIC = "selectionStatic",
|
|
4
|
+
SELECTION_DYNAMIC = "selectionDynamic"
|
|
5
|
+
}
|
|
6
|
+
declare enum SOURCE_TYPE {
|
|
7
|
+
SQL = "sql",
|
|
8
|
+
PROVIDER = "provider"
|
|
9
|
+
}
|
|
10
|
+
export interface DashboardVariableRecord {
|
|
11
|
+
id: number;
|
|
12
|
+
variableName: string;
|
|
13
|
+
variableType: DashboardVariableType;
|
|
14
|
+
selectionStaticValues?: string;
|
|
15
|
+
selectionDynamicSourceType?: SOURCE_TYPE;
|
|
16
|
+
selectionDynamicProviderName?: string;
|
|
17
|
+
selectionDynamicSQL?: string;
|
|
18
|
+
isMultiSelect?: boolean;
|
|
19
|
+
defaultValue?: string;
|
|
20
|
+
defaultOperator?: string;
|
|
21
|
+
}
|
|
22
|
+
type SolidDashboardViewProps = {
|
|
23
|
+
moduleName: string;
|
|
24
|
+
dashboardName?: string;
|
|
25
|
+
};
|
|
26
|
+
declare const SolidDashboard: (params: SolidDashboardViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default SolidDashboard;
|
|
28
|
+
//# sourceMappingURL=SolidDashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidDashboard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboard.tsx"],"names":[],"mappings":"AAmBA,oBAAY,qBAAqB;IAC/B,IAAI,SAAS;IACb,gBAAgB,oBAAoB;IACpC,iBAAiB,qBAAqB;CACvC;AAED,aAAK,WAAW;IACd,GAAG,QAAQ;IACX,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,qBAAqB,CAAC;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0BAA0B,CAAC,EAAE,WAAW,CAAC;IACzC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAsED,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,cAAc,WAAY,uBAAuB,4CAgJtD,CAAA;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
38
|
+
import { useGetDashboardQuery } from '../../../redux/api/dashboardApi';
|
|
39
|
+
import { SolidButton, SolidIcon, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger } from '../../shad-cn-ui';
|
|
40
|
+
import qs from 'qs';
|
|
41
|
+
import { useEffect, useState } from 'react';
|
|
42
|
+
import styles from './SolidDashboard.module.css';
|
|
43
|
+
import SolidDashboardBody from './SolidDashboardBody';
|
|
44
|
+
import { DashboardFilter } from './DashboardFilter';
|
|
45
|
+
// import { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper'; // moved to SolidX Studio panel
|
|
46
|
+
import { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';
|
|
47
|
+
import { SolidDashboardLoading } from './SolidDashboardLoading';
|
|
48
|
+
import { SolidDashboardRenderError } from './SolidDashboardRenderError';
|
|
49
|
+
import { useDispatch, useSelector } from "react-redux";
|
|
50
|
+
import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
|
|
51
|
+
import SolidDashboardNotAvailable from './SolidDashboardNotAvailable';
|
|
52
|
+
import { showToast } from '../../../redux/features/toastSlice';
|
|
53
|
+
import { ERROR_MESSAGES } from '../../../constants/error-messages';
|
|
54
|
+
import { useUpsertUserDashboardLayoutMutation } from '../../../redux/api/dashboardLayoutApi';
|
|
55
|
+
export var DashboardVariableType;
|
|
56
|
+
(function (DashboardVariableType) {
|
|
57
|
+
DashboardVariableType["DATE"] = "date";
|
|
58
|
+
DashboardVariableType["SELECTION_STATIC"] = "selectionStatic";
|
|
59
|
+
DashboardVariableType["SELECTION_DYNAMIC"] = "selectionDynamic";
|
|
60
|
+
})(DashboardVariableType || (DashboardVariableType = {}));
|
|
61
|
+
var SOURCE_TYPE;
|
|
62
|
+
(function (SOURCE_TYPE) {
|
|
63
|
+
SOURCE_TYPE["SQL"] = "sql";
|
|
64
|
+
SOURCE_TYPE["PROVIDER"] = "provider";
|
|
65
|
+
})(SOURCE_TYPE || (SOURCE_TYPE = {}));
|
|
66
|
+
function handleDashboardData(data, setDashboardVariables, setQuestions) {
|
|
67
|
+
var records = data.records, meta = data.meta;
|
|
68
|
+
if (records && records.length > 0) {
|
|
69
|
+
// Set the layout options for the dashboard body
|
|
70
|
+
var dashboardData = records[0]; // Assuming we want the first dashboard
|
|
71
|
+
// Set the dashboard variables
|
|
72
|
+
setDashboardVariables(dashboardData.dashboardVariables || []);
|
|
73
|
+
// Set the dashboard questions
|
|
74
|
+
setQuestions(dashboardData.questions);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function getQueryParams(moduleName, dashboardName) {
|
|
78
|
+
var filters = {
|
|
79
|
+
module: {
|
|
80
|
+
name: {
|
|
81
|
+
$eq: moduleName
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
if (dashboardName !== undefined) {
|
|
86
|
+
filters.name = { $eqi: dashboardName };
|
|
87
|
+
}
|
|
88
|
+
var query = {
|
|
89
|
+
filters: filters,
|
|
90
|
+
populate: ['dashboardVariables', 'questions']
|
|
91
|
+
};
|
|
92
|
+
var urlQuery = qs.stringify(query, {
|
|
93
|
+
encodeValuesOnly: true,
|
|
94
|
+
});
|
|
95
|
+
return urlQuery;
|
|
96
|
+
}
|
|
97
|
+
// Render the dashboard body only if:
|
|
98
|
+
// 1. There are dashboard questions
|
|
99
|
+
// AND
|
|
100
|
+
// (
|
|
101
|
+
// 1. There are dashboard variables and all dashboard variable filter rules have been applied i.e (all dashboard variables have been selected)
|
|
102
|
+
//. OR
|
|
103
|
+
// 2. There are no dashboard variables
|
|
104
|
+
// )
|
|
105
|
+
//
|
|
106
|
+
function isRenderDashboardBody(questions, dashboardVariables, filters) {
|
|
107
|
+
if (questions.length === 0) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
if (dashboardVariables.length === 0) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
// Check if all dashboard variables have corresponding filters applied
|
|
114
|
+
var allVariablesFiltered = dashboardVariables.every(function (variable) {
|
|
115
|
+
return filters.some(function (filter) { return filter.variableName === variable.variableName; });
|
|
116
|
+
});
|
|
117
|
+
return allVariablesFiltered;
|
|
118
|
+
}
|
|
119
|
+
var SolidDashboard = function (params) {
|
|
120
|
+
var _a, _b, _c, _d, _e, _f;
|
|
121
|
+
var _g = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardName)), data = _g.data, isLoading = _g.isLoading, error = _g.error; // FIXME : error handling should be done properly
|
|
122
|
+
// Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption
|
|
123
|
+
// 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?
|
|
124
|
+
// 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
|
|
125
|
+
// TODO [HP]: This is fully CONFUSED
|
|
126
|
+
// const [layoutOption, setLayoutOption] = useState<SolidDashboardBodyProps>({
|
|
127
|
+
// filters: [],
|
|
128
|
+
// questions: [],
|
|
129
|
+
// });
|
|
130
|
+
// TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...
|
|
131
|
+
// const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);
|
|
132
|
+
var dispatch = useDispatch();
|
|
133
|
+
var visibleNavbar = useSelector(function (state) { var _a; return (_a = state.navbarState) === null || _a === void 0 ? void 0 : _a.visibleNavbar; });
|
|
134
|
+
var _h = useState([]), filters = _h[0], setFilters = _h[1];
|
|
135
|
+
var _j = useState([]), questions = _j[0], setQuestions = _j[1];
|
|
136
|
+
var _k = useState([]), dashboardVariables = _k[0], setDashboardVariables = _k[1];
|
|
137
|
+
var _l = useState(false), isDashboardFilterVisible = _l[0], setIsDashboardFilterVisible = _l[1];
|
|
138
|
+
var upsertDashboardLayout = useUpsertUserDashboardLayoutMutation()[0];
|
|
139
|
+
var _m = useState([]), dashboardLayout = _m[0], setDashboardLayout = _m[1];
|
|
140
|
+
var updateUserDashboardLayout = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
141
|
+
var response, error_1;
|
|
142
|
+
return __generator(this, function (_a) {
|
|
143
|
+
switch (_a.label) {
|
|
144
|
+
case 0:
|
|
145
|
+
_a.trys.push([0, 2, , 3]);
|
|
146
|
+
return [4 /*yield*/, upsertDashboardLayout({
|
|
147
|
+
dashboardId: data === null || data === void 0 ? void 0 : data.records[0].id,
|
|
148
|
+
layout: JSON.stringify(dashboardLayout),
|
|
149
|
+
}).unwrap()];
|
|
150
|
+
case 1:
|
|
151
|
+
response = _a.sent();
|
|
152
|
+
if (response.statusCode === 200) {
|
|
153
|
+
dispatch(showToast({ severity: "success", summary: ERROR_MESSAGES.LAYOUT, detail: ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_SUCCESSFULLY }));
|
|
154
|
+
}
|
|
155
|
+
return [3 /*break*/, 3];
|
|
156
|
+
case 2:
|
|
157
|
+
error_1 = _a.sent();
|
|
158
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.LAYOUT, detail: ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_FAILED }));
|
|
159
|
+
return [3 /*break*/, 3];
|
|
160
|
+
case 3: return [2 /*return*/];
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}); };
|
|
164
|
+
useEffect(function () {
|
|
165
|
+
// Invoke the dashboard api to fetch the dashboard data
|
|
166
|
+
// console.log('Dashboard Data testing:', isLoading, data, error);
|
|
167
|
+
if (!isLoading && data) {
|
|
168
|
+
// Assuming data contains the layout options
|
|
169
|
+
handleDashboardData(data, setDashboardVariables, setQuestions);
|
|
170
|
+
}
|
|
171
|
+
}, [isLoading, data]);
|
|
172
|
+
var toggleBothSidebars = function () {
|
|
173
|
+
if (visibleNavbar) {
|
|
174
|
+
dispatch(toggleNavbar()); // close both
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
dispatch(showNavbar()); // open both
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
return (_jsx("div", { className: "h-screen surface-0 flex", children: _jsxs("div", { className: "h-full flex-grow-1 ".concat(styles.SolidDashboardPageContentWrapper), children: [isLoading && _jsx(SolidDashboardLoading, {}), error && _jsx(SolidDashboardRenderError, {}), !isLoading && !error && data && data.records.length === 0 && (_jsx(SolidDashboardNotAvailable, {})), !isLoading && !error && data && data.records.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "page-header", style: { borderBottom: '1px solid var(--primary-light-color)' }, children: [_jsxs("div", { className: 'flex align-items-center gap-2', children: [_jsx("div", { className: "apps-icon block md:hidden cursor-pointer", onClick: toggleBothSidebars, children: _jsx(SolidIcon, { name: "si-th-large", "aria-hidden": true }) }), _jsxs("p", { className: "view-title solid-text-wrapper flex align-items-center gap-1 ".concat(styles.SolidDashboardTitle), children: [((_a = data === null || data === void 0 ? void 0 : data.records[0]) === null || _a === void 0 ? void 0 : _a.displayName) ? (_b = data === null || data === void 0 ? void 0 : data.records[0]) === null || _b === void 0 ? void 0 : _b.displayName : (_c = data === null || data === void 0 ? void 0 : data.records[0]) === null || _c === void 0 ? void 0 : _c.name, ((_d = data === null || data === void 0 ? void 0 : data.records[0]) === null || _d === void 0 ? void 0 : _d.description) && (_jsxs(SolidTooltip, { children: [_jsx(SolidTooltipTrigger, { asChild: true, children: _jsx(SolidIcon, { name: "si-info-circle", className: "solid-field-tooltip-icon", "aria-hidden": true }) }), _jsx(SolidTooltipContent, { side: "right", children: (_e = data === null || data === void 0 ? void 0 : data.records[0]) === null || _e === void 0 ? void 0 : _e.description })] }))] })] }), dashboardVariables && dashboardVariables.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("div", { className: 'flex gap-2', children: [_jsx(SolidButton, { type: "button", icon: filters.length > 0 ? "si si-filter-fill" : "si si-filter", className: "lg:hidden solid-icon-button", size: 'sm', variant: 'secondary', onClick: function () { return setIsDashboardFilterVisible(true); } }), _jsx(SolidButton, { type: "button", icon: filters.length > 0 ? "si si-filter-fill" : "si si-filter", label: "Filter", className: "hidden lg:inline-flex", size: 'sm', variant: 'secondary', onClick: function () { return setIsDashboardFilterVisible(true); } }), filters.length > 0 && (_jsx(SolidButton, { type: "button", size: "sm", icon: "si si-filter-slash", severity: "secondary", className: "solid-icon-button ", outlined: true, onClick: function () { setFilters([]); setIsDashboardFilterVisible(false); } })), _jsx(SolidButton, { type: "button", size: "sm", icon: "si si-save", severity: "secondary", className: "solid-icon-button ", outlined: true, onClick: function () { return updateUserDashboardLayout(); } })] }), _jsx(DashboardFilter, { dashboardVariables: dashboardVariables, initialFilters: filters, onApply: setFilters, visible: isDashboardFilterVisible, onHide: function () { return setIsDashboardFilterVisible(false); } })] }))] }), !isRenderDashboardBody(questions, dashboardVariables, filters) && _jsx(SolidDashboardFilterRequired, {}), isRenderDashboardBody(questions, dashboardVariables, filters) && _jsx(SolidDashboardBody, { dashboardId: (_f = data === null || data === void 0 ? void 0 : data.records[0]) === null || _f === void 0 ? void 0 : _f.id, questions: questions, filters: filters, dashboardLayout: dashboardLayout, setDashboardLayout: setDashboardLayout })] }))] }) }));
|
|
181
|
+
};
|
|
182
|
+
export default SolidDashboard;
|
|
183
|
+
//# sourceMappingURL=SolidDashboard.js.map
|