@solidxai/core-ui 0.1.5-beta.5 → 0.1.5-beta.8
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/core/chatter/SolidChatterDateDivider.js +1 -1
- package/dist/components/core/chatter/SolidChatterDateDivider.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterDateDivider.tsx +1 -1
- package/dist/components/core/dashboard/DashboardFilter.js +1 -1
- package/dist/components/core/dashboard/DashboardFilter.js.map +1 -1
- package/dist/components/core/dashboard/DashboardFilter.tsx +5 -5
- 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 +0 -1
- package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -1
- package/dist/components/core/dashboard/SolidDashboard.js +50 -26
- package/dist/components/core/dashboard/SolidDashboard.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboard.module.css +6 -2
- package/dist/components/core/dashboard/SolidDashboard.tsx +112 -65
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts +13 -1
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -1
- package/dist/components/core/dashboard/SolidDashboardBody.js +134 -48
- package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboardBody.tsx +143 -91
- package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -1
- package/dist/components/core/dashboard/SolidQuestionRenderer.js +1 -1
- package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -1
- package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +12 -10
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -1
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +29 -2
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -1
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +33 -3
- 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/modelMetadata/list/DeleteModelRowAction.js +2 -2
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +2 -2
- 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/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +7 -4
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +4 -2
- package/dist/constants/error-messages.d.ts +3 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +3 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/constants/error-messages.ts +24 -20
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +7 -0
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +8 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +8 -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/store/defaultStoreConfig.d.ts +4 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/defaultStoreConfig.js +3 -2
- package/dist/redux/store/defaultStoreConfig.js.map +1 -1
- package/dist/redux/store/defaultStoreConfig.ts +4 -2
- package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.js +3 -7
- package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.tsx +2 -5
- package/dist/routes/solidRoutes.js +1 -1
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +1 -1
- package/package.json +13 -11
|
@@ -2,6 +2,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import styles from './chatter.module.css';
|
|
3
3
|
export var SolidChatterDateDivider = function (_a) {
|
|
4
4
|
var date = _a.date;
|
|
5
|
-
return (_jsx("div", { className: styles.chatterDatetimeDivider, children: _jsx("div", { className: "".concat(styles.chatterDividerContent, " absolute"), children: date }) }));
|
|
5
|
+
return (_jsx("div", { className: styles.chatterDatetimeDivider, children: _jsx("div", { className: "".concat(styles.chatterDividerContent, " absolute"), children: new Date(date).toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }) }) }));
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=SolidChatterDateDivider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidChatterDateDivider.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterDateDivider.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAM1C,MAAM,CAAC,IAAM,uBAAuB,GAAG,UAAC,EAAe;QAAb,IAAI,UAAA;IAC1C,OAAO,CACH,cAAK,SAAS,EAAE,MAAM,CAAC,sBAAsB,YACzC,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,qBAAqB,cAAW,YACrD,IAAI,
|
|
1
|
+
{"version":3,"file":"SolidChatterDateDivider.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterDateDivider.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAM1C,MAAM,CAAC,IAAM,uBAAuB,GAAG,UAAC,EAAe;QAAb,IAAI,UAAA;IAC1C,OAAO,CACH,cAAK,SAAS,EAAE,MAAM,CAAC,sBAAsB,YACzC,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,qBAAqB,cAAW,YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAC/F,GACJ,CACT,CAAA;AACL,CAAC,CAAA","sourcesContent":["\nimport styles from './chatter.module.css';\n\ninterface Props {\n date: string;\n}\n\nexport const SolidChatterDateDivider = ({ date }: Props) => {\n return (\n <div className={styles.chatterDatetimeDivider}>\n <div className={`${styles.chatterDividerContent} absolute`}>\n {new Date(date).toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' })}\n </div>\n </div>\n )\n}"]}
|
|
@@ -9,7 +9,7 @@ export const SolidChatterDateDivider = ({ date }: Props) => {
|
|
|
9
9
|
return (
|
|
10
10
|
<div className={styles.chatterDatetimeDivider}>
|
|
11
11
|
<div className={`${styles.chatterDividerContent} absolute`}>
|
|
12
|
-
{date}
|
|
12
|
+
{new Date(date).toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' })}
|
|
13
13
|
</div>
|
|
14
14
|
</div>
|
|
15
15
|
)
|
|
@@ -300,6 +300,6 @@ export var DashboardFilter = function (_a) {
|
|
|
300
300
|
onApply([]);
|
|
301
301
|
onHide();
|
|
302
302
|
};
|
|
303
|
-
return (_jsxs(Dialog, { header: false, className: "solid-global-search-filter", showHeader: false, visible: visible, style: { width: '50vw' }, breakpoints: { '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }, onHide: onHide, children: [_jsxs("div", { className: "flex align-items-center justify-content-between px-3", children: [_jsx("h5", { className: "solid-custom-title m-0", children: "Add
|
|
303
|
+
return (_jsxs(Dialog, { header: false, className: "solid-global-search-filter", showHeader: false, visible: visible, style: { width: '50vw' }, breakpoints: { '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }, onHide: onHide, children: [_jsxs("div", { className: "flex align-items-center justify-content-between px-3", children: [_jsx("h5", { className: "solid-custom-title m-0", children: "Add Dashboard Filter" }), _jsx(Button, { icon: "pi pi-times", rounded: true, text: true, "aria-label": "Cancel", type: "reset", size: "small", onClick: onHide })] }), _jsx(Divider, { className: "m-0" }), _jsxs("div", { className: "p-2 lg:p-2", children: [_jsx(Fieldset, { className: 'primary-filter-fieldset', children: _jsxs("div", { className: "flex flex-column gap-3 py-3", children: [rules.map(function (rule) { return (_jsxs("div", { className: "grid grid-nogutter align-items-start", children: [_jsx("div", { className: "col-12 md:col-4 pr-2", children: _jsx("div", { className: "p-inputtext p-disabled w-full flex align-items-center mb-2 md:mb-0", style: { minHeight: '38px' }, children: rule.fieldName }) }), _jsx("div", { className: "col-12 md:col-4 pr-2", children: _jsx(Dropdown, { value: rule.matchMode, onChange: function (e) { return handleChange(rule.id, 'matchMode', e.value); }, options: rule.variable.variableType === 'date' ? dateFilterMatchModeOptions : selectionFilterMatchModeOptions, optionLabel: 'label', optionValue: 'value', placeholder: "Select Operator", className: "p-inputtext-sm w-full" }) }), _jsx("div", { className: "col-12 md:col-4", children: _jsx(FilterValueInput, { rule: rule, onChange: handleChange }) })] }, rule.id)); }), rules.length === 0 && (_jsx("div", { className: "text-color-secondary italic", children: "No variables available for this dashboard." }))] }) }), _jsxs("div", { className: 'flex gap-3 mt-3', children: [_jsx(Button, { label: "Apply", size: "small", onClick: handleApply, autoFocus: true }), _jsx(Button, { type: 'button', label: 'Cancel', outlined: true, size: 'small', onClick: onHide })] })] })] }));
|
|
304
304
|
};
|
|
305
305
|
//# sourceMappingURL=DashboardFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardFilter.js","sourceRoot":"","sources":["../../../../src/components/core/dashboard/DashboardFilter.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Button } from \"primereact/button\";\nimport { Dialog } from \"primereact/dialog\";\nimport { Dropdown } from \"primereact/dropdown\";\nimport { Calendar } from \"primereact/calendar\";\nimport { AutoComplete, AutoCompleteCompleteEvent } from \"primereact/autocomplete\";\nimport { SqlExpression } from \"../../../types/solid-core\";\nimport { DashboardVariableRecord } from \"./SolidDashboard\";\nimport { useLazyGetDashboardVariableSelectionDynamicValuesQuery } from \"../../../redux/api/dashboardApi\";\nimport { Divider } from \"primereact/divider\";\nimport { Fieldset } from \"primereact/fieldset\";\n\ninterface DashboardFilterProps {\n dashboardVariables: DashboardVariableRecord[];\n initialFilters: SqlExpression[];\n onApply: (filters: SqlExpression[]) => void;\n visible: boolean;\n onHide: () => void;\n}\n\nconst getNumberOfInputs = (matchMode: any): number | null => {\n switch (matchMode) {\n case '$between': return 2;\n case '$in': case '$notIn': return null;\n case '$startsWith': case '$contains': case '$notContains': case '$endsWith': case '$equals': case '$notEquals': case '$lt': case '$lte': case '$gt': case '$gte': return 1;\n case '$null': case '$notNull': return 0;\n default: return 1;\n }\n}\n\nconst dateFilterMatchModeOptions = [\n { label: 'Equals', value: \"$eq\" },\n { label: 'Not Equals', value: \"$nei\" },\n { label: 'Less Than', value: \"$lt\" },\n { label: 'Less Than Or Equal', value: \"$lte\" },\n { label: 'Greater Than', value: \"$gt\" },\n { label: 'Greater Than Or Equal', value: \"$gte\" },\n { label: 'In', value: \"$in\" },\n { label: 'Not In', value: \"$notIn\" },\n { label: 'Between', value: \"$between\" }\n];\n\nconst selectionFilterMatchModeOptions = [\n { label: 'In', value: \"$in\" },\n { label: 'Not In', value: \"$notIn\" }\n];\n\nconst FilterValueInput = ({ rule, onChange }: any) => {\n const numberOfInputs = getNumberOfInputs(rule.matchMode);\n\n // Ensure values is an array properly sized immediately on render\n let values = Array.isArray(rule.value) ? [...rule.value] : (rule.value ? [rule.value] : []);\n\n if (numberOfInputs !== null && numberOfInputs > 0 && values.length !== numberOfInputs) {\n if (values.length < numberOfInputs) {\n values = [...values, ...Array(numberOfInputs - values.length).fill('')];\n } else {\n values = values.slice(0, numberOfInputs);\n }\n }\n if (values.length === 0 && (numberOfInputs === null || numberOfInputs > 0)) {\n values = [''];\n }\n\n const updateValue = (index: number, val: any) => {\n const newValues = [...values];\n newValues[index] = val;\n onChange(rule.id, 'value', numberOfInputs === 1 ? newValues[0] : newValues);\n };\n\n const addInput = () => {\n const newValues = [...values, ''];\n onChange(rule.id, 'value', newValues);\n };\n\n const deleteInput = (index: number) => {\n if (values.length > 1) {\n const newValues = values.filter((_: any, i: number) => i !== index);\n onChange(rule.id, 'value', newValues);\n }\n };\n\n // Components for actual rendering\n const renderDate = (val: any, index: number) => {\n let dateVal = val ? new Date(val) : null;\n if (isNaN(dateVal?.getTime() || 0)) dateVal = null;\n return (\n <Calendar\n value={dateVal}\n onChange={(e) => {\n const dateStr = e.value ? (e.value as Date).toISOString().split('T')[0] : '';\n updateValue(index, dateStr);\n }}\n dateFormat=\"mm/dd/yy\"\n placeholder=\"mm/dd/yyyy\"\n mask=\"99/99/9999\"\n className=\"w-full\"\n inputClassName=\"w-full p-inputtext-sm\"\n />\n );\n };\n\n const SelectionStaticInput = ({ val, index, updateValue, dv }: any) => {\n const [filteredItems, setFilteredItems] = useState<{ label: string, value: string }[]>([]);\n const staticValues = JSON.parse(dv.selectionStaticValues || '[]') || [];\n const staticValueItems = staticValues.map((v: any) => ({ value: v.split(':')[0], label: v.split(':')[1] }));\n\n const search = (event: AutoCompleteCompleteEvent) => {\n const query = event.query.toLowerCase();\n const filtered = staticValueItems.filter((item: any) =>\n item.label.toLowerCase().includes(query)\n );\n setFilteredItems(filtered);\n };\n\n return (\n <AutoComplete\n value={val}\n suggestions={filteredItems}\n completeMethod={search}\n onChange={(e) => updateValue(index, e.value)}\n field=\"label\"\n dropdown\n className=\"w-full\"\n inputClassName=\"w-full p-inputtext-sm\"\n />\n );\n };\n\n const SelectionDynamicInput = ({ val, index, updateValue, dv }: any) => {\n const [filteredItems, setFilteredItems] = useState<{ label: string, value: string }[]>([]);\n const [trigger] = useLazyGetDashboardVariableSelectionDynamicValuesQuery();\n\n const search = async (event: AutoCompleteCompleteEvent) => {\n const queryString = `variableId=${dv.id}&q=${event.query}`;\n try {\n const res = await trigger(queryString).unwrap();\n const filtered = res.filter((item: any) =>\n item.label.toLowerCase().includes(event.query.toLowerCase())\n );\n setFilteredItems(filtered);\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n <AutoComplete\n value={val}\n suggestions={filteredItems}\n completeMethod={search}\n onChange={(e) => updateValue(index, e.value)}\n field=\"label\"\n dropdown\n className=\"w-full\"\n inputClassName=\"w-full p-inputtext-sm\"\n />\n );\n };\n\n if (numberOfInputs === 0) return <></>;\n\n return (\n <div className=\"flex flex-column gap-2\">\n {values.map((val: any, index: number) => (\n <div key={index} className=\"flex gap-2\">\n <div className=\"flex-grow-1\">\n {rule.variable.variableType === 'date' && renderDate(val, index)}\n {rule.variable.variableType === 'selectionStatic' && <SelectionStaticInput val={val} index={index} updateValue={updateValue} dv={rule.variable} />}\n {rule.variable.variableType === 'selectionDynamic' && <SelectionDynamicInput val={val} index={index} updateValue={updateValue} dv={rule.variable} />}\n </div>\n {numberOfInputs === null && (\n <div className=\"flex align-items-center\">\n <Button type=\"button\" text severity='secondary' icon=\"pi pi-plus\" size='small' onClick={addInput} className='p-0 mr-2 target-btn' style={{ width: 30, minWidth: 30 }} />\n <Button type=\"button\" text severity='secondary' icon=\"pi pi-trash\" size='small' onClick={() => deleteInput(index)} className='p-0 target-btn' style={{ width: 30, minWidth: 30 }} disabled={values.length <= 1} />\n </div>\n )}\n </div>\n ))}\n </div>\n );\n};\n\nexport const DashboardFilter: React.FC<DashboardFilterProps> = ({\n dashboardVariables,\n initialFilters,\n onApply,\n visible,\n onHide,\n}) => {\n const [rules, setRules] = useState<any[]>([]);\n\n useEffect(() => {\n if (visible) {\n // Initialize rules based on dashboardVariables\n const newRules = dashboardVariables.map((dv, index) => {\n const existingFilter = initialFilters.find((f: any) => f.variableName === dv.variableName);\n\n const defaultOperator = dv.defaultOperator || (dv.variableType === 'date' ? '$between' : '$in');\n\n let defaultValue = null;\n if (existingFilter && existingFilter.value !== undefined) {\n defaultValue = existingFilter.value;\n } else if (dv.defaultValue) {\n try {\n defaultValue = JSON.parse(dv.defaultValue || '[]');\n } catch (e) {\n defaultValue = null;\n }\n }\n\n return {\n id: index + 1,\n fieldName: dv.variableName,\n matchMode: existingFilter ? existingFilter.operator : defaultOperator,\n value: defaultValue,\n variable: dv\n };\n });\n setRules(newRules);\n }\n }, [visible, dashboardVariables, initialFilters]);\n\n const handleChange = (id: number, key: string, value: any) => {\n setRules((prev) =>\n prev.map((rule) => {\n if (rule.id === id) {\n let newVal = rule.value;\n // Immediate sync of values count when operator matches\n if (key === 'matchMode') {\n const newNum = getNumberOfInputs(value);\n let currentValues = Array.isArray(rule.value) ? [...rule.value] : (rule.value ? [rule.value] : []);\n if (newNum !== null && newNum > 0) {\n if (currentValues.length < newNum) {\n currentValues = [...currentValues, ...Array(newNum - currentValues.length).fill('')];\n } else if (currentValues.length > newNum) {\n currentValues = currentValues.slice(0, newNum);\n }\n } else if (newNum === null && currentValues.length === 0) {\n currentValues = [''];\n }\n newVal = newNum === 1 && currentValues.length === 1 ? currentValues[0] : currentValues;\n return { ...rule, [key]: value, value: newVal };\n }\n return { ...rule, [key]: value };\n }\n return rule;\n })\n );\n };\n\n const handleApply = () => {\n const newFilters: SqlExpression[] = rules\n .filter((rule) => {\n if (['$null', '$notNull'].includes(rule.matchMode)) return true;\n\n if (rule.value === null || rule.value === undefined) return false;\n if (Array.isArray(rule.value)) {\n const hasValidValue = rule.value.some((v: any) => v !== '' && v !== null);\n if (!hasValidValue) return false;\n } else {\n if (rule.value === '') return false;\n }\n return true;\n })\n .map((rule) => {\n let finalValue = rule.value;\n const numberOfInputs = getNumberOfInputs(rule.matchMode);\n // Clean array values or extract single values\n if (Array.isArray(finalValue)) {\n finalValue = finalValue.filter(v => v !== null && v !== '');\n if (numberOfInputs === 1 && finalValue.length > 0) {\n finalValue = finalValue[0];\n }\n }\n\n // For selection static/dynamic, we might have selected an object {label, value} or string\n // We need to extract the 'value' if it's an object from AutoComplete selection\n if (Array.isArray(finalValue)) {\n finalValue = finalValue.map(v => typeof v === 'object' && v !== null && 'value' in v ? v.value : v);\n } else if (typeof finalValue === 'object' && finalValue !== null && 'value' in finalValue) {\n finalValue = finalValue.value;\n }\n\n return {\n variableName: rule.fieldName,\n operator: rule.matchMode,\n value: finalValue,\n }\n });\n\n onApply(newFilters);\n onHide();\n };\n\n const handleClear = () => {\n onApply([]);\n onHide();\n };\n\n return (\n\n\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={visible} style={{ width: '50vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={onHide}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\">Add Custom Filter</h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={onHide} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n <Fieldset className='primary-filter-fieldset'>\n <div className=\"flex flex-column gap-3 py-3\">\n\n {rules.map((rule) => (\n <div key={rule.id} className=\"grid grid-nogutter align-items-start\">\n <div className=\"col-12 md:col-3 pr-2\">\n <div className=\"p-inputtext p-disabled w-full flex align-items-center mb-2 md:mb-0\" style={{ minHeight: '38px' }}>\n {rule.fieldName}\n </div>\n </div>\n <div className=\"col-12 md:col-3 pr-2\">\n <Dropdown\n value={rule.matchMode}\n onChange={(e: any) => handleChange(rule.id, 'matchMode', e.value)}\n options={rule.variable.variableType === 'date' ? dateFilterMatchModeOptions : selectionFilterMatchModeOptions}\n optionLabel='label'\n optionValue='value'\n placeholder=\"Select Operator\"\n className=\"p-inputtext-sm w-full\"\n />\n </div>\n <div className=\"col-12 md:col-6\">\n <FilterValueInput rule={rule} onChange={handleChange} />\n </div>\n </div>\n ))}\n {rules.length === 0 && (\n <div className=\"text-color-secondary italic\">No variables available for this dashboard.</div>\n )}\n </div>\n </Fieldset>\n {/* <div className=\"flex justify-content-between align-items-center mt-4\">\n <Button label=\"Clear Filters\" icon=\"pi pi-filter-slash\" severity=\"danger\" text onClick={handleClear} />\n <div className=\"flex gap-2\">\n </div>\n </div> */}\n <div className='flex gap-3 mt-3'>\n <Button label=\"Apply\" icon=\"pi pi-check\" onClick={handleApply} autoFocus />\n <Button type='button' label='Cancel' outlined size='small' onClick={onHide} />\n </div>\n\n </div>\n </Dialog>\n\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"DashboardFilter.js","sourceRoot":"","sources":["../../../../src/components/core/dashboard/DashboardFilter.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Button } from \"primereact/button\";\nimport { Dialog } from \"primereact/dialog\";\nimport { Dropdown } from \"primereact/dropdown\";\nimport { Calendar } from \"primereact/calendar\";\nimport { AutoComplete, AutoCompleteCompleteEvent } from \"primereact/autocomplete\";\nimport { SqlExpression } from \"../../../types/solid-core\";\nimport { DashboardVariableRecord } from \"./SolidDashboard\";\nimport { useLazyGetDashboardVariableSelectionDynamicValuesQuery } from \"../../../redux/api/dashboardApi\";\nimport { Divider } from \"primereact/divider\";\nimport { Fieldset } from \"primereact/fieldset\";\n\ninterface DashboardFilterProps {\n dashboardVariables: DashboardVariableRecord[];\n initialFilters: SqlExpression[];\n onApply: (filters: SqlExpression[]) => void;\n visible: boolean;\n onHide: () => void;\n}\n\nconst getNumberOfInputs = (matchMode: any): number | null => {\n switch (matchMode) {\n case '$between': return 2;\n case '$in': case '$notIn': return null;\n case '$startsWith': case '$contains': case '$notContains': case '$endsWith': case '$equals': case '$notEquals': case '$lt': case '$lte': case '$gt': case '$gte': return 1;\n case '$null': case '$notNull': return 0;\n default: return 1;\n }\n}\n\nconst dateFilterMatchModeOptions = [\n { label: 'Equals', value: \"$eq\" },\n { label: 'Not Equals', value: \"$nei\" },\n { label: 'Less Than', value: \"$lt\" },\n { label: 'Less Than Or Equal', value: \"$lte\" },\n { label: 'Greater Than', value: \"$gt\" },\n { label: 'Greater Than Or Equal', value: \"$gte\" },\n { label: 'In', value: \"$in\" },\n { label: 'Not In', value: \"$notIn\" },\n { label: 'Between', value: \"$between\" }\n];\n\nconst selectionFilterMatchModeOptions = [\n { label: 'In', value: \"$in\" },\n { label: 'Not In', value: \"$notIn\" }\n];\n\nconst FilterValueInput = ({ rule, onChange }: any) => {\n const numberOfInputs = getNumberOfInputs(rule.matchMode);\n\n // Ensure values is an array properly sized immediately on render\n let values = Array.isArray(rule.value) ? [...rule.value] : (rule.value ? [rule.value] : []);\n\n if (numberOfInputs !== null && numberOfInputs > 0 && values.length !== numberOfInputs) {\n if (values.length < numberOfInputs) {\n values = [...values, ...Array(numberOfInputs - values.length).fill('')];\n } else {\n values = values.slice(0, numberOfInputs);\n }\n }\n if (values.length === 0 && (numberOfInputs === null || numberOfInputs > 0)) {\n values = [''];\n }\n\n const updateValue = (index: number, val: any) => {\n const newValues = [...values];\n newValues[index] = val;\n onChange(rule.id, 'value', numberOfInputs === 1 ? newValues[0] : newValues);\n };\n\n const addInput = () => {\n const newValues = [...values, ''];\n onChange(rule.id, 'value', newValues);\n };\n\n const deleteInput = (index: number) => {\n if (values.length > 1) {\n const newValues = values.filter((_: any, i: number) => i !== index);\n onChange(rule.id, 'value', newValues);\n }\n };\n\n // Components for actual rendering\n const renderDate = (val: any, index: number) => {\n let dateVal = val ? new Date(val) : null;\n if (isNaN(dateVal?.getTime() || 0)) dateVal = null;\n return (\n <Calendar\n value={dateVal}\n onChange={(e) => {\n const dateStr = e.value ? (e.value as Date).toISOString().split('T')[0] : '';\n updateValue(index, dateStr);\n }}\n dateFormat=\"mm/dd/yy\"\n placeholder=\"mm/dd/yyyy\"\n mask=\"99/99/9999\"\n className=\"w-full\"\n inputClassName=\"w-full p-inputtext-sm\"\n />\n );\n };\n\n const SelectionStaticInput = ({ val, index, updateValue, dv }: any) => {\n const [filteredItems, setFilteredItems] = useState<{ label: string, value: string }[]>([]);\n const staticValues = JSON.parse(dv.selectionStaticValues || '[]') || [];\n const staticValueItems = staticValues.map((v: any) => ({ value: v.split(':')[0], label: v.split(':')[1] }));\n\n const search = (event: AutoCompleteCompleteEvent) => {\n const query = event.query.toLowerCase();\n const filtered = staticValueItems.filter((item: any) =>\n item.label.toLowerCase().includes(query)\n );\n setFilteredItems(filtered);\n };\n\n return (\n <AutoComplete\n value={val}\n suggestions={filteredItems}\n completeMethod={search}\n onChange={(e) => updateValue(index, e.value)}\n field=\"label\"\n dropdown\n className=\"w-full\"\n inputClassName=\"w-full p-inputtext-sm\"\n />\n );\n };\n\n const SelectionDynamicInput = ({ val, index, updateValue, dv }: any) => {\n const [filteredItems, setFilteredItems] = useState<{ label: string, value: string }[]>([]);\n const [trigger] = useLazyGetDashboardVariableSelectionDynamicValuesQuery();\n\n const search = async (event: AutoCompleteCompleteEvent) => {\n const queryString = `variableId=${dv.id}&q=${event.query}`;\n try {\n const res = await trigger(queryString).unwrap();\n const filtered = res.filter((item: any) =>\n item.label.toLowerCase().includes(event.query.toLowerCase())\n );\n setFilteredItems(filtered);\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n <AutoComplete\n value={val}\n suggestions={filteredItems}\n completeMethod={search}\n onChange={(e) => updateValue(index, e.value)}\n field=\"label\"\n dropdown\n className=\"w-full\"\n inputClassName=\"w-full p-inputtext-sm\"\n />\n );\n };\n\n if (numberOfInputs === 0) return <></>;\n\n return (\n <div className=\"flex flex-column gap-2\">\n {values.map((val: any, index: number) => (\n <div key={index} className=\"flex gap-2\">\n <div className=\"flex-grow-1\">\n {rule.variable.variableType === 'date' && renderDate(val, index)}\n {rule.variable.variableType === 'selectionStatic' && <SelectionStaticInput val={val} index={index} updateValue={updateValue} dv={rule.variable} />}\n {rule.variable.variableType === 'selectionDynamic' && <SelectionDynamicInput val={val} index={index} updateValue={updateValue} dv={rule.variable} />}\n </div>\n {numberOfInputs === null && (\n <div className=\"flex align-items-center\">\n <Button type=\"button\" text severity='secondary' icon=\"pi pi-plus\" size='small' onClick={addInput} className='p-0 mr-2 target-btn' style={{ width: 30, minWidth: 30 }} />\n <Button type=\"button\" text severity='secondary' icon=\"pi pi-trash\" size='small' onClick={() => deleteInput(index)} className='p-0 target-btn' style={{ width: 30, minWidth: 30 }} disabled={values.length <= 1} />\n </div>\n )}\n </div>\n ))}\n </div>\n );\n};\n\nexport const DashboardFilter: React.FC<DashboardFilterProps> = ({\n dashboardVariables,\n initialFilters,\n onApply,\n visible,\n onHide,\n}) => {\n const [rules, setRules] = useState<any[]>([]);\n\n useEffect(() => {\n if (visible) {\n // Initialize rules based on dashboardVariables\n const newRules = dashboardVariables.map((dv, index) => {\n const existingFilter = initialFilters.find((f: any) => f.variableName === dv.variableName);\n\n const defaultOperator = dv.defaultOperator || (dv.variableType === 'date' ? '$between' : '$in');\n\n let defaultValue = null;\n if (existingFilter && existingFilter.value !== undefined) {\n defaultValue = existingFilter.value;\n } else if (dv.defaultValue) {\n try {\n defaultValue = JSON.parse(dv.defaultValue || '[]');\n } catch (e) {\n defaultValue = null;\n }\n }\n\n return {\n id: index + 1,\n fieldName: dv.variableName,\n matchMode: existingFilter ? existingFilter.operator : defaultOperator,\n value: defaultValue,\n variable: dv\n };\n });\n setRules(newRules);\n }\n }, [visible, dashboardVariables, initialFilters]);\n\n const handleChange = (id: number, key: string, value: any) => {\n setRules((prev) =>\n prev.map((rule) => {\n if (rule.id === id) {\n let newVal = rule.value;\n // Immediate sync of values count when operator matches\n if (key === 'matchMode') {\n const newNum = getNumberOfInputs(value);\n let currentValues = Array.isArray(rule.value) ? [...rule.value] : (rule.value ? [rule.value] : []);\n if (newNum !== null && newNum > 0) {\n if (currentValues.length < newNum) {\n currentValues = [...currentValues, ...Array(newNum - currentValues.length).fill('')];\n } else if (currentValues.length > newNum) {\n currentValues = currentValues.slice(0, newNum);\n }\n } else if (newNum === null && currentValues.length === 0) {\n currentValues = [''];\n }\n newVal = newNum === 1 && currentValues.length === 1 ? currentValues[0] : currentValues;\n return { ...rule, [key]: value, value: newVal };\n }\n return { ...rule, [key]: value };\n }\n return rule;\n })\n );\n };\n\n const handleApply = () => {\n const newFilters: SqlExpression[] = rules\n .filter((rule) => {\n if (['$null', '$notNull'].includes(rule.matchMode)) return true;\n\n if (rule.value === null || rule.value === undefined) return false;\n if (Array.isArray(rule.value)) {\n const hasValidValue = rule.value.some((v: any) => v !== '' && v !== null);\n if (!hasValidValue) return false;\n } else {\n if (rule.value === '') return false;\n }\n return true;\n })\n .map((rule) => {\n let finalValue = rule.value;\n const numberOfInputs = getNumberOfInputs(rule.matchMode);\n // Clean array values or extract single values\n if (Array.isArray(finalValue)) {\n finalValue = finalValue.filter(v => v !== null && v !== '');\n if (numberOfInputs === 1 && finalValue.length > 0) {\n finalValue = finalValue[0];\n }\n }\n\n // For selection static/dynamic, we might have selected an object {label, value} or string\n // We need to extract the 'value' if it's an object from AutoComplete selection\n if (Array.isArray(finalValue)) {\n finalValue = finalValue.map(v => typeof v === 'object' && v !== null && 'value' in v ? v.value : v);\n } else if (typeof finalValue === 'object' && finalValue !== null && 'value' in finalValue) {\n finalValue = finalValue.value;\n }\n\n return {\n variableName: rule.fieldName,\n operator: rule.matchMode,\n value: finalValue,\n }\n });\n\n onApply(newFilters);\n onHide();\n };\n\n const handleClear = () => {\n onApply([]);\n onHide();\n };\n\n return (\n\n\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={visible} style={{ width: '50vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={onHide}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\">Add Dashboard Filter</h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={onHide} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n <Fieldset className='primary-filter-fieldset'>\n <div className=\"flex flex-column gap-3 py-3\">\n\n {rules.map((rule) => (\n <div key={rule.id} className=\"grid grid-nogutter align-items-start\">\n <div className=\"col-12 md:col-4 pr-2\">\n <div className=\"p-inputtext p-disabled w-full flex align-items-center mb-2 md:mb-0\" style={{ minHeight: '38px' }}>\n {rule.fieldName}\n </div>\n </div>\n <div className=\"col-12 md:col-4 pr-2\">\n <Dropdown\n value={rule.matchMode}\n onChange={(e: any) => handleChange(rule.id, 'matchMode', e.value)}\n options={rule.variable.variableType === 'date' ? dateFilterMatchModeOptions : selectionFilterMatchModeOptions}\n optionLabel='label'\n optionValue='value'\n placeholder=\"Select Operator\"\n className=\"p-inputtext-sm w-full\"\n />\n </div>\n <div className=\"col-12 md:col-4\">\n <FilterValueInput rule={rule} onChange={handleChange} />\n </div>\n </div>\n ))}\n {rules.length === 0 && (\n <div className=\"text-color-secondary italic\">No variables available for this dashboard.</div>\n )}\n </div>\n </Fieldset>\n {/* <div className=\"flex justify-content-between align-items-center mt-4\">\n <Button label=\"Clear Filters\" icon=\"pi pi-filter-slash\" severity=\"danger\" text onClick={handleClear} />\n <div className=\"flex gap-2\">\n </div>\n </div> */}\n <div className='flex gap-3 mt-3'>\n <Button label=\"Apply\" size=\"small\" onClick={handleApply} autoFocus />\n <Button type='button' label='Cancel' outlined size='small' onClick={onHide} />\n </div>\n\n </div>\n </Dialog>\n\n );\n};\n"]}
|
|
@@ -303,7 +303,7 @@ export const DashboardFilter: React.FC<DashboardFilterProps> = ({
|
|
|
303
303
|
|
|
304
304
|
<Dialog header={false} className="solid-global-search-filter" showHeader={false} visible={visible} style={{ width: '50vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={onHide}>
|
|
305
305
|
<div className="flex align-items-center justify-content-between px-3">
|
|
306
|
-
<h5 className="solid-custom-title m-0">Add
|
|
306
|
+
<h5 className="solid-custom-title m-0">Add Dashboard Filter</h5>
|
|
307
307
|
<Button icon="pi pi-times" rounded text aria-label="Cancel" type="reset" size="small" onClick={onHide} />
|
|
308
308
|
</div>
|
|
309
309
|
<Divider className="m-0" />
|
|
@@ -313,12 +313,12 @@ export const DashboardFilter: React.FC<DashboardFilterProps> = ({
|
|
|
313
313
|
|
|
314
314
|
{rules.map((rule) => (
|
|
315
315
|
<div key={rule.id} className="grid grid-nogutter align-items-start">
|
|
316
|
-
<div className="col-12 md:col-
|
|
316
|
+
<div className="col-12 md:col-4 pr-2">
|
|
317
317
|
<div className="p-inputtext p-disabled w-full flex align-items-center mb-2 md:mb-0" style={{ minHeight: '38px' }}>
|
|
318
318
|
{rule.fieldName}
|
|
319
319
|
</div>
|
|
320
320
|
</div>
|
|
321
|
-
<div className="col-12 md:col-
|
|
321
|
+
<div className="col-12 md:col-4 pr-2">
|
|
322
322
|
<Dropdown
|
|
323
323
|
value={rule.matchMode}
|
|
324
324
|
onChange={(e: any) => handleChange(rule.id, 'matchMode', e.value)}
|
|
@@ -329,7 +329,7 @@ export const DashboardFilter: React.FC<DashboardFilterProps> = ({
|
|
|
329
329
|
className="p-inputtext-sm w-full"
|
|
330
330
|
/>
|
|
331
331
|
</div>
|
|
332
|
-
<div className="col-12 md:col-
|
|
332
|
+
<div className="col-12 md:col-4">
|
|
333
333
|
<FilterValueInput rule={rule} onChange={handleChange} />
|
|
334
334
|
</div>
|
|
335
335
|
</div>
|
|
@@ -345,7 +345,7 @@ export const DashboardFilter: React.FC<DashboardFilterProps> = ({
|
|
|
345
345
|
</div>
|
|
346
346
|
</div> */}
|
|
347
347
|
<div className='flex gap-3 mt-3'>
|
|
348
|
-
<Button label="Apply"
|
|
348
|
+
<Button label="Apply" size="small" onClick={handleApply} autoFocus />
|
|
349
349
|
<Button type='button' label='Cancel' outlined size='small' onClick={onHide} />
|
|
350
350
|
</div>
|
|
351
351
|
|
|
@@ -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 { ProgressSpinner } from "primereact/progressspinner";
|
|
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(ProgressSpinner, {});
|
|
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,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,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,eAAe,KAAG,CAAC;IAE1C,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 { ProgressSpinner } from \"primereact/progressspinner\";\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 <ProgressSpinner />;\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;"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useGetDashboardQuestionDataByIdQuery } from '../../../redux/api/dashboardQuestionApi';
|
|
2
|
+
import PrimeReactDatatableRenderer from "./chart-renderers/PrimeReactDatatableRenderer";
|
|
3
|
+
import { ProgressSpinner } from "primereact/progressspinner";
|
|
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 <ProgressSpinner />;
|
|
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;
|
|
@@ -21,7 +21,6 @@ export interface DashboardVariableRecord {
|
|
|
21
21
|
}
|
|
22
22
|
type SolidDashboardViewProps = {
|
|
23
23
|
moduleName: string;
|
|
24
|
-
dashboardId?: number;
|
|
25
24
|
dashboardName?: string;
|
|
26
25
|
};
|
|
27
26
|
declare const SolidDashboard: (params: SolidDashboardViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidDashboard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidDashboard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboard.tsx"],"names":[],"mappings":"AAwBA,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,4CA6RtD,CAAA;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -50,7 +50,7 @@ import { useGetDashboardQuery } from '../../../redux/api/dashboardApi';
|
|
|
50
50
|
import { Button } from 'primereact/button';
|
|
51
51
|
import { Tooltip } from "primereact/tooltip";
|
|
52
52
|
import qs from 'qs';
|
|
53
|
-
import { useEffect, useState } from 'react';
|
|
53
|
+
import { useEffect, useRef, useState } from 'react';
|
|
54
54
|
import { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';
|
|
55
55
|
import styles from './SolidDashboard.module.css';
|
|
56
56
|
import SolidDashboardBody from './SolidDashboardBody';
|
|
@@ -63,6 +63,10 @@ import { useDispatch, useSelector } from "react-redux";
|
|
|
63
63
|
import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
|
|
64
64
|
import SolidDashboardNotAvailable from './SolidDashboardNotAvailable';
|
|
65
65
|
import { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';
|
|
66
|
+
import showToast from '../../../helpers/showToast';
|
|
67
|
+
import { Toast } from "primereact/toast";
|
|
68
|
+
import { ERROR_MESSAGES } from '../../../constants/error-messages';
|
|
69
|
+
import { useUpsertUserDashboardLayoutMutation } from '../../../redux/api/dashboardLayoutApi';
|
|
66
70
|
export var DashboardVariableType;
|
|
67
71
|
(function (DashboardVariableType) {
|
|
68
72
|
DashboardVariableType["DATE"] = "date";
|
|
@@ -85,7 +89,7 @@ function handleDashboardData(data, setDashboardVariables, setQuestions) {
|
|
|
85
89
|
setQuestions(dashboardData.questions);
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
|
-
function getQueryParams(moduleName,
|
|
92
|
+
function getQueryParams(moduleName, dashboardName) {
|
|
89
93
|
var filters = {
|
|
90
94
|
module: {
|
|
91
95
|
name: {
|
|
@@ -93,11 +97,8 @@ function getQueryParams(moduleName, dashboardId, dashboardName) {
|
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
};
|
|
96
|
-
if (
|
|
97
|
-
filters.
|
|
98
|
-
}
|
|
99
|
-
else if (dashboardName !== undefined) {
|
|
100
|
-
filters.name = { $eq: dashboardName };
|
|
100
|
+
if (dashboardName !== undefined) {
|
|
101
|
+
filters.name = { $eqi: dashboardName };
|
|
101
102
|
}
|
|
102
103
|
var query = {
|
|
103
104
|
filters: filters,
|
|
@@ -131,8 +132,8 @@ function isRenderDashboardBody(questions, dashboardVariables, filters) {
|
|
|
131
132
|
return allVariablesFiltered;
|
|
132
133
|
}
|
|
133
134
|
var SolidDashboard = function (params) {
|
|
134
|
-
var _a, _b, _c, _d, _e;
|
|
135
|
-
var
|
|
135
|
+
var _a, _b, _c, _d, _e, _f;
|
|
136
|
+
var _g = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardName)), data = _g.data, isLoading = _g.isLoading, error = _g.error; // FIXME : error handling should be done properly
|
|
136
137
|
// Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption
|
|
137
138
|
// 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?
|
|
138
139
|
// 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
|
|
@@ -144,14 +145,41 @@ var SolidDashboard = function (params) {
|
|
|
144
145
|
// TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...
|
|
145
146
|
// const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);
|
|
146
147
|
var dispatch = useDispatch();
|
|
148
|
+
var toast = useRef(null);
|
|
147
149
|
var visibleNavbar = useSelector(function (state) { var _a; return (_a = state.navbarState) === null || _a === void 0 ? void 0 : _a.visibleNavbar; });
|
|
148
|
-
var
|
|
149
|
-
var
|
|
150
|
-
var
|
|
151
|
-
var
|
|
152
|
-
var
|
|
153
|
-
var
|
|
154
|
-
var
|
|
150
|
+
var _h = useState([]), filters = _h[0], setFilters = _h[1];
|
|
151
|
+
var _j = useState(false), isOpenSolidXAiPanel = _j[0], setIsOpenSolidXAiPanel = _j[1];
|
|
152
|
+
var _k = useState(380), chatterWidth = _k[0], setChatterWidth = _k[1];
|
|
153
|
+
var _l = useState(false), isResizing = _l[0], setIsResizing = _l[1];
|
|
154
|
+
var _m = useState([]), questions = _m[0], setQuestions = _m[1];
|
|
155
|
+
var _o = useState([]), dashboardVariables = _o[0], setDashboardVariables = _o[1];
|
|
156
|
+
var _p = useState(false), isDashboardFilterVisible = _p[0], setIsDashboardFilterVisible = _p[1];
|
|
157
|
+
var _q = useUpsertUserDashboardLayoutMutation(), upsertDashboardLayout = _q[0], _r = _q[1], isDashboardLayoutLoading = _r.isLoading, dashboardLayoutError = _r.error, isDashboardLayoutSuccess = _r.isSuccess, dashboardLayoutData = _r.data;
|
|
158
|
+
var _s = useState([]), dashboardLayout = _s[0], setDashboardLayout = _s[1];
|
|
159
|
+
var updateUserDashboardLayout = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
160
|
+
var response, error_1;
|
|
161
|
+
return __generator(this, function (_a) {
|
|
162
|
+
switch (_a.label) {
|
|
163
|
+
case 0:
|
|
164
|
+
_a.trys.push([0, 2, , 3]);
|
|
165
|
+
return [4 /*yield*/, upsertDashboardLayout({
|
|
166
|
+
dashboardId: data === null || data === void 0 ? void 0 : data.records[0].id,
|
|
167
|
+
layout: JSON.stringify(dashboardLayout),
|
|
168
|
+
}).unwrap()];
|
|
169
|
+
case 1:
|
|
170
|
+
response = _a.sent();
|
|
171
|
+
if (response.statusCode === 200) {
|
|
172
|
+
showToast(toast, "success", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_SUCCESSFULLY);
|
|
173
|
+
}
|
|
174
|
+
return [3 /*break*/, 3];
|
|
175
|
+
case 2:
|
|
176
|
+
error_1 = _a.sent();
|
|
177
|
+
showToast(toast, "error", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_FAILED);
|
|
178
|
+
return [3 /*break*/, 3];
|
|
179
|
+
case 3: return [2 /*return*/];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}); };
|
|
155
183
|
useEffect(function () {
|
|
156
184
|
// Invoke the dashboard api to fetch the dashboard data
|
|
157
185
|
// console.log('Dashboard Data testing:', isLoading, data, error);
|
|
@@ -208,9 +236,9 @@ var SolidDashboard = function (params) {
|
|
|
208
236
|
dispatch(showNavbar()); // open both
|
|
209
237
|
}
|
|
210
238
|
};
|
|
211
|
-
var
|
|
239
|
+
var _t = useState(null), mcpUrl = _t[0], setMcpUrl = _t[1];
|
|
212
240
|
var getMcpUrl = useLazyGetMcpUrlQuery()[0];
|
|
213
|
-
var
|
|
241
|
+
var _u = useLazyGetSolidSettingsQuery(), trigger = _u[0], solidSettingsData = _u[1].data;
|
|
214
242
|
useEffect(function () {
|
|
215
243
|
trigger(""); // Fetch settings on mount
|
|
216
244
|
}, []);
|
|
@@ -221,7 +249,7 @@ var SolidDashboard = function (params) {
|
|
|
221
249
|
}
|
|
222
250
|
}, [solidSettingsData]);
|
|
223
251
|
var enableSolidXAiPanel = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
224
|
-
var queryData, queryString, response,
|
|
252
|
+
var queryData, queryString, response, error_2;
|
|
225
253
|
var _a, _b;
|
|
226
254
|
return __generator(this, function (_c) {
|
|
227
255
|
switch (_c.label) {
|
|
@@ -241,18 +269,14 @@ var SolidDashboard = function (params) {
|
|
|
241
269
|
}
|
|
242
270
|
return [3 /*break*/, 3];
|
|
243
271
|
case 2:
|
|
244
|
-
|
|
272
|
+
error_2 = _c.sent();
|
|
245
273
|
return [3 /*break*/, 3];
|
|
246
274
|
case 3: return [2 /*return*/];
|
|
247
275
|
}
|
|
248
276
|
});
|
|
249
277
|
}); };
|
|
250
|
-
return (_jsxs("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("i", { className: "pi pi-th-large" }) }), _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) &&
|
|
251
|
-
_jsxs(_Fragment, { children: [_jsx(Tooltip, { className: 'solid-field-tooltip', target: ".solid-field-tooltip-icon" }), _jsx("i", { className: "pi pi-info-circle solid-field-tooltip-icon", "data-pr-tooltip": (_e = data === null || data === void 0 ? void 0 : data.records[0]) === null || _e === void 0 ? void 0 : _e.description, "data-pr-position": 'right' })] })] })] }), dashboardVariables && dashboardVariables.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("div", { className: 'flex gap-2', children: [_jsx(Button, {
|
|
252
|
-
// label="Clear Filters"
|
|
253
|
-
, {
|
|
254
|
-
// label="Clear Filters"
|
|
255
|
-
icon: "pi pi-filter-slash", severity: "danger", onClick: function () { setFilters([]); setIsDashboardFilterVisible(false); } }))] }), _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, { questions: questions, filters: filters })] }))] }), mcpUrl && (_jsxs("div", { className: "chatter-section ".concat(isOpenSolidXAiPanel === false ? 'collapsed' : 'open'), style: { width: chatterWidth }, children: [isOpenSolidXAiPanel && (_jsx("div", { style: {
|
|
278
|
+
return (_jsxs("div", { className: "h-screen surface-0 flex", children: [_jsx(Toast, { ref: toast }), _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("i", { className: "pi pi-th-large" }) }), _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) &&
|
|
279
|
+
_jsxs(_Fragment, { children: [_jsx(Tooltip, { className: 'solid-field-tooltip', target: ".solid-field-tooltip-icon" }), _jsx("i", { className: "pi pi-info-circle solid-field-tooltip-icon", "data-pr-tooltip": (_e = data === null || data === void 0 ? void 0 : data.records[0]) === null || _e === void 0 ? void 0 : _e.description, "data-pr-position": 'right' })] })] })] }), dashboardVariables && dashboardVariables.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("div", { className: 'flex gap-2', children: [_jsx("a", { onClick: function () { return setIsDashboardFilterVisible(true); }, children: _jsxs(_Fragment, { children: [_jsx(Button, { type: "button", icon: filters.length > 0 ? "pi pi-filter-fill" : "pi pi-filter", className: "p-button-sm lg:hidden solid-icon-button ", size: 'small' }), _jsx(Button, { type: "button", icon: filters.length > 0 ? "pi pi-filter-fill" : "pi pi-filter", label: "Filter", className: "hidden lg:inline-flex", size: 'small' })] }) }), filters.length > 0 && (_jsx(Button, { type: "button", size: "small", icon: "pi pi-filter-slash", severity: "secondary", className: "solid-icon-button ", outlined: true, onClick: function () { setFilters([]); setIsDashboardFilterVisible(false); } })), _jsx(Button, { type: "button", size: "small", icon: "pi pi-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 })] }))] }), mcpUrl && (_jsxs("div", { className: "chatter-section ".concat(isOpenSolidXAiPanel === false ? 'collapsed' : 'open'), style: { width: chatterWidth }, children: [isOpenSolidXAiPanel && (_jsx("div", { style: {
|
|
256
280
|
width: 5,
|
|
257
281
|
cursor: 'col-resize',
|
|
258
282
|
position: 'absolute',
|