@solidxai/core-ui 0.1.12-beta.1 → 0.1.12-beta.3
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 +15 -19
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +26 -20
- package/dist/components/common/BackButton.js +1 -1
- package/dist/components/common/BackButton.js.map +1 -1
- package/dist/components/common/BackButton.tsx +1 -1
- package/dist/components/common/CancelButton.js +1 -1
- package/dist/components/common/CancelButton.js.map +1 -1
- package/dist/components/common/CancelButton.tsx +1 -1
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +6 -33
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +20 -57
- package/dist/components/common/SettingsComponent.d.ts.map +1 -1
- package/dist/components/common/SettingsComponent.js +1 -9
- package/dist/components/common/SettingsComponent.js.map +1 -1
- package/dist/components/common/SettingsComponent.tsx +1 -8
- package/dist/components/common/SolidBreadcrumb.js +1 -1
- package/dist/components/common/SolidBreadcrumb.js.map +1 -1
- package/dist/components/common/SolidBreadcrumb.tsx +2 -2
- package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -1
- package/dist/components/common/SolidFaviconProvider.js +1 -8
- package/dist/components/common/SolidFaviconProvider.js.map +1 -1
- package/dist/components/common/SolidFaviconProvider.tsx +1 -7
- package/dist/components/core/card/CardItem.d.ts.map +1 -1
- package/dist/components/core/card/CardItem.js +3 -4
- package/dist/components/core/card/CardItem.js.map +1 -1
- package/dist/components/core/card/CardItem.tsx +3 -4
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +6 -1
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +6 -1
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js +4 -1
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +4 -1
- package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
- package/dist/components/core/common/SolidCreateButton.js +2 -13
- package/dist/components/core/common/SolidCreateButton.js.map +1 -1
- package/dist/components/core/common/SolidCreateButton.tsx +2 -15
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +34 -15
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +37 -17
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +15 -13
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +4 -4
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +6 -5
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +1 -1
- package/dist/components/core/form/SolidFormFooter.d.ts +2 -1
- package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormFooter.js +48 -14
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +50 -4
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +52 -50
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +16 -9
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +2 -10
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +2 -10
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +11 -4
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +13 -5
- package/dist/components/core/list/SolidListView.d.ts +2 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +195 -111
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +136 -39
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js +2 -0
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +2 -0
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +16 -19
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +16 -22
- package/dist/components/core/locales/SolidChatterLocaleTabView.d.ts.map +1 -1
- package/dist/components/core/locales/SolidChatterLocaleTabView.js +9 -8
- package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
- package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +4 -1
- package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
- package/dist/components/core/locales/SolidLocale.js +1 -2
- package/dist/components/core/locales/SolidLocale.js.map +1 -1
- package/dist/components/core/locales/SolidLocale.tsx +1 -2
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +1 -1
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +0 -1
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +1 -2
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +1 -3
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +47 -26
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +55 -23
- package/dist/components/layout/AdminTopHeader.js +2 -3
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +2 -2
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +5 -2
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +7 -4
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +6 -4
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +4 -2
- package/dist/constants/error-messages.d.ts +1 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +1 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/constants/error-messages.ts +1 -0
- package/dist/helpers/assetUrl.d.ts +3 -0
- package/dist/helpers/assetUrl.d.ts.map +1 -0
- package/dist/helpers/assetUrl.js +22 -0
- package/dist/helpers/assetUrl.js.map +1 -0
- package/dist/helpers/assetUrl.ts +26 -0
- package/dist/helpers/modelViewPersistence.d.ts +5 -0
- package/dist/helpers/modelViewPersistence.d.ts.map +1 -0
- package/dist/helpers/modelViewPersistence.js +168 -0
- package/dist/helpers/modelViewPersistence.js.map +1 -0
- package/dist/helpers/modelViewPersistence.ts +201 -0
- package/dist/helpers/routePaths.d.ts +6 -0
- package/dist/helpers/routePaths.d.ts.map +1 -1
- package/dist/helpers/routePaths.js +13 -0
- package/dist/helpers/routePaths.js.map +1 -1
- package/dist/helpers/routePaths.ts +25 -0
- package/dist/redux/api/solidServiceApi.d.ts +10 -2
- package/dist/redux/api/solidServiceApi.d.ts.map +1 -1
- package/dist/redux/api/solidServiceApi.js +2 -4
- package/dist/redux/api/solidServiceApi.js.map +1 -1
- package/dist/redux/api/solidServiceApi.ts +4 -6
- package/dist/redux/store/defaultStoreConfig.d.ts +5 -1
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/resources/solid-custom.css +3 -0
- package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.js +11 -0
- package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.tsx +13 -0
- package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js +11 -0
- package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.tsx +13 -0
- package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +25 -2
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +29 -2
- package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/TreePage.js +10 -2
- package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
- package/dist/routes/pages/admin/core/TreePage.tsx +11 -2
- package/package.json +2 -1
|
@@ -793,9 +793,44 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
793
793
|
user?.id
|
|
794
794
|
])
|
|
795
795
|
|
|
796
|
+
const resetAppliedFilters = ({ preserveGrouping = false }: { preserveGrouping?: boolean } = {}) => {
|
|
797
|
+
setSearchChips([]);
|
|
798
|
+
setSearchFilter(null);
|
|
799
|
+
setFilterRules(initialState);
|
|
800
|
+
setCustomFilter(null);
|
|
801
|
+
setPredefinedSearchChip(null);
|
|
802
|
+
setPredefinedSearchBaseFilter(null);
|
|
803
|
+
setCurrentSavedFilterData(null);
|
|
804
|
+
setCurrentSavedFilterQuery(null);
|
|
805
|
+
setCurrentSavedFilterRules(null);
|
|
806
|
+
if (!preserveGrouping) {
|
|
807
|
+
setGroupingRules(defaultGroupingRules);
|
|
808
|
+
setAggregationRules(defaultAggregationRules);
|
|
809
|
+
}
|
|
810
|
+
setShowOverlay(false);
|
|
811
|
+
setShowChipManager(false);
|
|
812
|
+
setInputValue("");
|
|
813
|
+
|
|
814
|
+
const currentPageUrl = window.location.pathname;
|
|
815
|
+
localStorage.removeItem(currentPageUrl);
|
|
816
|
+
|
|
817
|
+
if (activeSavedFilter) {
|
|
818
|
+
const params = new URLSearchParams(searchParams.toString());
|
|
819
|
+
params.delete("savedQuery");
|
|
820
|
+
const nextUrl = params.toString() ? `${pathname}?${params.toString()}` : pathname;
|
|
821
|
+
router.replace(nextUrl);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
setHasSearched(true);
|
|
825
|
+
setRefreshKey((prev) => prev + 1);
|
|
826
|
+
};
|
|
827
|
+
|
|
796
828
|
useImperativeHandle(ref, () => ({
|
|
797
829
|
clearFilter: () => {
|
|
798
|
-
|
|
830
|
+
resetAppliedFilters();
|
|
831
|
+
},
|
|
832
|
+
clearAppliedFilters: (options?: { preserveGrouping?: boolean }) => {
|
|
833
|
+
resetAppliedFilters(options);
|
|
799
834
|
},
|
|
800
835
|
openGroupingDialog: () => {
|
|
801
836
|
setShowOverlay(false);
|
|
@@ -1615,22 +1650,7 @@ export const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handle
|
|
|
1615
1650
|
|
|
1616
1651
|
const clearAllAppliedChips = () => {
|
|
1617
1652
|
if (managedChipItems.length === 0) return;
|
|
1618
|
-
|
|
1619
|
-
if (activeSavedFilter || currentSavedFilterData) {
|
|
1620
|
-
removeSavedFilter();
|
|
1621
|
-
}
|
|
1622
|
-
|
|
1623
|
-
setSearchChips([]);
|
|
1624
|
-
setSearchFilter(null);
|
|
1625
|
-
setPredefinedSearchChip(null);
|
|
1626
|
-
setPredefinedSearchBaseFilter(null);
|
|
1627
|
-
setCustomFilter(null);
|
|
1628
|
-
setFilterRules(initialState);
|
|
1629
|
-
setGroupingRules(defaultGroupingRules);
|
|
1630
|
-
setAggregationRules(defaultAggregationRules);
|
|
1631
|
-
setShowChipManager(false);
|
|
1632
|
-
setHasSearched(true);
|
|
1633
|
-
setRefreshKey((prev) => prev + 1);
|
|
1653
|
+
resetAppliedFilters();
|
|
1634
1654
|
};
|
|
1635
1655
|
|
|
1636
1656
|
useEffect(() => {
|
package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js
CHANGED
|
@@ -99,24 +99,25 @@ var GenerateModelCodeRowAction = function (event) {
|
|
|
99
99
|
});
|
|
100
100
|
};
|
|
101
101
|
var generateCodeHandler = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
102
|
-
var error_2;
|
|
103
|
-
var _a;
|
|
104
|
-
return __generator(this, function (
|
|
105
|
-
switch (
|
|
102
|
+
var error_2, errorMessage;
|
|
103
|
+
var _a, _b, _c;
|
|
104
|
+
return __generator(this, function (_d) {
|
|
105
|
+
switch (_d.label) {
|
|
106
106
|
case 0:
|
|
107
|
-
|
|
107
|
+
_d.trys.push([0, 2, , 3]);
|
|
108
108
|
setIsGenerating(true);
|
|
109
109
|
setStatusMessage("Submitting model generation request...");
|
|
110
110
|
return [4 /*yield*/, generateCode({ id: (_a = event === null || event === void 0 ? void 0 : event.rowData) === null || _a === void 0 ? void 0 : _a.id }).unwrap()];
|
|
111
111
|
case 1:
|
|
112
|
-
|
|
112
|
+
_d.sent();
|
|
113
113
|
setStatusMessage("Waiting for backend to come back online...");
|
|
114
114
|
return [3 /*break*/, 3];
|
|
115
115
|
case 2:
|
|
116
|
-
error_2 =
|
|
116
|
+
error_2 = _d.sent();
|
|
117
117
|
setIsGenerating(false);
|
|
118
118
|
dispatch(closePopup());
|
|
119
|
-
|
|
119
|
+
errorMessage = ((_b = error_2 === null || error_2 === void 0 ? void 0 : error_2.data) === null || _b === void 0 ? void 0 : _b.message) || ((_c = error_2 === null || error_2 === void 0 ? void 0 : error_2.data) === null || _c === void 0 ? void 0 : _c.error) || ERROR_MESSAGES.CODE_GENERATE_FAILED;
|
|
120
|
+
dispatch(showToast({ severity: "error", summary: "Failed to generate code", detail: errorMessage }));
|
|
120
121
|
return [3 /*break*/, 3];
|
|
121
122
|
case 3: return [2 /*return*/];
|
|
122
123
|
}
|
|
@@ -127,20 +128,21 @@ var GenerateModelCodeRowAction = function (event) {
|
|
|
127
128
|
return undefined;
|
|
128
129
|
var timer = window.setTimeout(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
129
130
|
var isAlive;
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
var _a, _b;
|
|
132
|
+
return __generator(this, function (_c) {
|
|
133
|
+
switch (_c.label) {
|
|
132
134
|
case 0:
|
|
133
135
|
setIsPinging(true);
|
|
134
136
|
setStatusMessage("Checking backend availability before refreshing metadata...");
|
|
135
137
|
return [4 /*yield*/, pingBackendWithRetry()];
|
|
136
138
|
case 1:
|
|
137
|
-
isAlive =
|
|
139
|
+
isAlive = _c.sent();
|
|
138
140
|
setIsPinging(false);
|
|
139
141
|
if (!isAlive) return [3 /*break*/, 3];
|
|
140
142
|
setStatusMessage("Refreshing seeded metadata...");
|
|
141
|
-
return [4 /*yield*/, triggerSeeder("ModuleMetadataSeederService")];
|
|
143
|
+
return [4 /*yield*/, triggerSeeder({ seeder: "ModuleMetadataSeederService", modulesToSeed: ((_b = (_a = event === null || event === void 0 ? void 0 : event.rowData) === null || _a === void 0 ? void 0 : _a.module) === null || _b === void 0 ? void 0 : _b.name) ? [event.rowData.module.name] : undefined })];
|
|
142
144
|
case 2:
|
|
143
|
-
|
|
145
|
+
_c.sent();
|
|
144
146
|
return [2 /*return*/];
|
|
145
147
|
case 3:
|
|
146
148
|
setIsGenerating(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateModelCodeRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { AlertTriangle, FileCode2, Sparkles } from \"lucide-react\";\nimport { SolidCircularLoader } from \"../../../../../../components/core/common/SolidLoaders/SolidCircularLoader\";\nimport { ERROR_MESSAGES } from \"../../../../../../constants/error-messages\";\nimport { env } from \"../../../../../../adapters/env\";\nimport { useGenerateCodeForModelMutation } from \"../../../../../../redux/api/modelApi\";\nimport { useSeederMutation } from \"../../../../../../redux/api/solidServiceApi\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../../shad-cn-ui\";\n\nconst GenerateModelCodeRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const [statusMessage, setStatusMessage] = useState(\"Preparing model generation...\");\n const [isPinging, setIsPinging] = useState(false);\n const [isGenerating, setIsGenerating] = useState(false);\n\n const [generateCode, { isLoading: isGenerateCodeUpdating, isSuccess: isGenerateCodeSuceess }] =\n useGenerateCodeForModelMutation();\n\n const [triggerSeeder, { data, isSuccess: isSeederSuccess, isError: isSeederError }] = useSeederMutation();\n\n const isSolidCoreModel = event?.rowData?.module?.name === \"solid-core\";\n const generatedFiles = useMemo(\n () => [\n \"Entity file\",\n \"Repository file\",\n \"Controller file\",\n \"Service file\",\n \"Create and update DTO files\",\n ],\n []\n );\n\n const pingBackendWithRetry = async (retries = 30, delay = 500): Promise<boolean> => {\n for (let i = 0; i < retries; i += 1) {\n try {\n const res = await fetch(`${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/ping`);\n if (res.ok) return true;\n } catch (error) {\n // ignore and retry\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n return false;\n };\n\n const generateCodeHandler = async () => {\n try {\n setIsGenerating(true);\n setStatusMessage(\"Submitting model generation request...\");\n await generateCode({ id: event?.rowData?.id }).unwrap();\n setStatusMessage(\"Waiting for backend to come back online...\");\n } catch (error) {\n setIsGenerating(false);\n dispatch(closePopup());\n dispatch(showToast({ severity: \"error\", summary: \"Something went wrong\", detail: ERROR_MESSAGES.API_ERROR }));\n }\n };\n\n useEffect(() => {\n if (!isGenerateCodeSuceess) return undefined;\n\n const timer = window.setTimeout(async () => {\n setIsPinging(true);\n setStatusMessage(\"Checking backend availability before refreshing metadata...\");\n const isAlive = await pingBackendWithRetry();\n setIsPinging(false);\n\n if (isAlive) {\n setStatusMessage(\"Refreshing seeded metadata...\");\n await triggerSeeder(\"ModuleMetadataSeederService\");\n return;\n }\n\n setIsGenerating(false);\n dispatch(closePopup());\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.BACKEND_UNAVAILABLE,\n detail: ERROR_MESSAGES.SEEDER_NOT_TRIGGERED,\n })\n );\n }, 5000);\n\n return () => window.clearTimeout(timer);\n }, [dispatch, isGenerateCodeSuceess, triggerSeeder]);\n\n useEffect(() => {\n if (isSeederSuccess) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n detail: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n })\n );\n setIsGenerating(false);\n dispatch(closePopup());\n window.location.reload();\n }\n\n if (isSeederError) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SEEDER_ERROR, detail: ERROR_MESSAGES.SEEDER_NOT_RUN }));\n setIsGenerating(false);\n }\n }, [data, dispatch, isSeederError, isSeederSuccess]);\n\n if (isGenerating) {\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Model</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Applying the code generation pipeline and reseeding metadata.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading\">\n <SolidCircularLoader />\n <p className=\"solid-generate-code-popup__loading-title\">\n {isPinging ? \"Waiting for backend...\" : \"Generating model code...\"}\n </p>\n <p className=\"solid-generate-code-popup__loading-copy\">{statusMessage}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Model</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">\n Generate or refresh the model code artifacts from the current metadata definition.\n </p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body\">\n {isSolidCoreModel ? (\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <AlertTriangle size={16} />\n <span>You cannot generate code for Solid Core models.</span>\n </div>\n ) : (\n <>\n <p className=\"solid-generate-code-popup__intro\">\n Proceed with model code generation. Existing generated files may be overwritten.\n </p>\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <FileCode2 size={15} />\n <span>Artifacts created</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n {generatedFiles.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </div>\n </>\n )}\n\n <div className=\"solid-generate-code-popup__actions\">\n {!isSolidCoreModel ? (\n <SolidButton\n size=\"small\"\n autoFocus\n leftIcon={<Sparkles size={14} />}\n loading={isGenerateCodeUpdating}\n onClick={generateCodeHandler}\n >\n Generate\n </SolidButton>\n ) : null}\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => dispatch(closePopup())}>\n {isSolidCoreModel ? \"Close\" : \"Cancel\"}\n </SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default GenerateModelCodeRowAction;\n"]}
|
|
1
|
+
{"version":3,"file":"GenerateModelCodeRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2EAA2E,CAAC;AAChH,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,IAAM,0BAA0B,GAAG,UAAC,KAA2C;;IAC7E,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IACzB,IAAA,KAAoC,QAAQ,CAAC,+BAA+B,CAAC,EAA5E,aAAa,QAAA,EAAE,gBAAgB,QAA6C,CAAC;IAC9E,IAAA,KAA4B,QAAQ,CAAC,KAAK,CAAC,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAC;IAC5C,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IAElD,IAAA,KACJ,+BAA+B,EAAE,EAD5B,YAAY,QAAA,EAAE,UAAuE,EAA1D,sBAAsB,eAAA,EAAa,qBAAqB,eACvD,CAAC;IAE9B,IAAA,KAAgF,iBAAiB,EAAE,EAAlG,aAAa,QAAA,EAAE,UAA4D,EAA1D,IAAI,UAAA,EAAa,eAAe,eAAA,EAAW,aAAa,aAAyB,CAAC;IAE1G,IAAM,gBAAgB,GAAG,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,MAAM,0CAAE,IAAI,MAAK,YAAY,CAAC;IACvE,IAAM,cAAc,GAAG,OAAO,CAC5B,cAAM,OAAA;QACJ,aAAa;QACb,iBAAiB;QACjB,iBAAiB;QACjB,cAAc;QACd,6BAA6B;KAC9B,EANK,CAML,EACD,EAAE,CACH,CAAC;IAEF,IAAM,oBAAoB,GAAG,UAAO,OAAY,EAAE,KAAW;QAAzB,wBAAA,EAAA,YAAY;QAAE,sBAAA,EAAA,WAAW;;;;;;wBAClD,CAAC,GAAG,CAAC;;;6BAAE,CAAA,CAAC,GAAG,OAAO,CAAA;;;;wBAEX,qBAAM,KAAK,CAAC,UAAG,GAAG,CAAC,6BAA6B,CAAC,cAAW,CAAC,EAAA;;wBAAnE,GAAG,GAAG,SAA6D;wBACzE,IAAI,GAAG,CAAC,EAAE;4BAAE,sBAAO,IAAI,EAAC;;;;;4BAI1B,qBAAM,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAA1B,CAA0B,CAAC,EAAA;;wBAA1D,SAA0D,CAAC;;;wBAPhC,CAAC,IAAI,CAAC,CAAA;;4BASnC,sBAAO,KAAK,EAAC;;;;KACd,CAAC;IAEF,IAAM,mBAAmB,GAAG;;;;;;;oBAExB,eAAe,CAAC,IAAI,CAAC,CAAC;oBACtB,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;oBAC3D,qBAAM,YAAY,CAAC,EAAE,EAAE,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAAvD,SAAuD,CAAC;oBACxD,gBAAgB,CAAC,4CAA4C,CAAC,CAAC;;;;oBAE/D,eAAe,CAAC,KAAK,CAAC,CAAC;oBACvB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;oBACjB,YAAY,GAAG,CAAA,MAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,IAAI,0CAAE,OAAO,MAAI,MAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,IAAI,0CAAE,KAAK,CAAA,IAAI,cAAc,CAAC,oBAAoB,CAAC;oBACvG,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;;;;;SAExG,CAAC;IACF,SAAS,CAAC;QACR,IAAI,CAAC,qBAAqB;YAAE,OAAO,SAAS,CAAC;QAE7C,IAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;;;;;;wBAC9B,YAAY,CAAC,IAAI,CAAC,CAAC;wBACnB,gBAAgB,CAAC,6DAA6D,CAAC,CAAC;wBAChE,qBAAM,oBAAoB,EAAE,EAAA;;wBAAtC,OAAO,GAAG,SAA4B;wBAC5C,YAAY,CAAC,KAAK,CAAC,CAAC;6BAEhB,OAAO,EAAP,wBAAO;wBACT,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;wBAClD,qBAAM,aAAa,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,aAAa,EAAE,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,MAAM,0CAAE,IAAI,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAA;;wBAArJ,SAAqJ,CAAC;wBACtJ,sBAAO;;wBAGT,eAAe,CAAC,KAAK,CAAC,CAAC;wBACvB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;wBACvB,QAAQ,CACN,SAAS,CAAC;4BACR,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,cAAc,CAAC,mBAAmB;4BAC3C,MAAM,EAAE,cAAc,CAAC,oBAAoB;yBAC5C,CAAC,CACH,CAAC;;;;aACH,EAAE,IAAI,CAAC,CAAC;QAET,OAAO,cAAM,OAAA,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAA1B,CAA0B,CAAC;IAC1C,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC,CAAC;IAErD,SAAS,CAAC;QACR,IAAI,eAAe,EAAE;YACnB,QAAQ,CACN,SAAS,CAAC;gBACR,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,cAAc,CAAC,0BAA0B;gBAClD,MAAM,EAAE,cAAc,CAAC,0BAA0B;aAClD,CAAC,CACH,CAAC;YACF,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACvB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SAC1B;QAED,IAAI,aAAa,EAAE;YACjB,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YACxH,eAAe,CAAC,KAAK,CAAC,CAAC;SACxB;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;IAErD,IAAI,YAAY,EAAE;QAChB,OAAO,CACL,eAAK,SAAS,EAAC,2BAA2B,aACxC,cAAK,SAAS,EAAC,0DAA0D,YACvE,0BACE,aAAI,SAAS,EAAC,2BAA2B,+BAAoB,EAC7D,YAAG,SAAS,EAAC,kCAAkC,8EAAkE,IAC7G,GACF,EACN,cAAK,SAAS,EAAC,yBAAyB,GAAG,EAC3C,eAAK,SAAS,EAAC,mGAAmG,aAChH,KAAC,mBAAmB,KAAG,EACvB,YAAG,SAAS,EAAC,0CAA0C,YACpD,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B,GAChE,EACJ,YAAG,SAAS,EAAC,yCAAyC,YAAE,aAAa,GAAK,IACtE,IACF,CACP,CAAC;KACH;IAED,OAAO,CACL,eAAK,SAAS,EAAC,2BAA2B,aACxC,cAAK,SAAS,EAAC,0DAA0D,YACvE,0BACE,aAAI,SAAS,EAAC,2BAA2B,+BAAoB,EAC7D,YAAG,SAAS,EAAC,kCAAkC,mGAE3C,IACA,GACF,EACN,cAAK,SAAS,EAAC,yBAAyB,GAAG,EAC3C,eAAK,SAAS,EAAC,0DAA0D,aACtE,gBAAgB,CAAC,CAAC,CAAC,CAClB,eAAK,SAAS,EAAC,8CAA8C,aAC3D,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,GAAI,EAC3B,6EAA4D,IACxD,CACP,CAAC,CAAC,CAAC,CACF,8BACE,YAAG,SAAS,EAAC,kCAAkC,iGAE3C,EACJ,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,wCAAwC,aACrD,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,EACvB,+CAA8B,IAC1B,EACN,aAAI,SAAS,EAAC,iCAAiC,YAC5C,cAAc,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,CAC5B,uBAAgB,IAAI,IAAX,IAAI,CAAa,CAC3B,EAF6B,CAE7B,CAAC,GACC,IACD,IACL,CACJ,EAED,eAAK,SAAS,EAAC,oCAAoC,aAChD,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACnB,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,SAAS,QACT,QAAQ,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EAChC,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,mBAAmB,yBAGhB,CACf,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,YAC9E,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAC1B,IACV,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,0BAA0B,CAAC","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { AlertTriangle, FileCode2, Sparkles } from \"lucide-react\";\nimport { SolidCircularLoader } from \"../../../../../../components/core/common/SolidLoaders/SolidCircularLoader\";\nimport { ERROR_MESSAGES } from \"../../../../../../constants/error-messages\";\nimport { env } from \"../../../../../../adapters/env\";\nimport { useGenerateCodeForModelMutation } from \"../../../../../../redux/api/modelApi\";\nimport { useSeederMutation } from \"../../../../../../redux/api/solidServiceApi\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../../shad-cn-ui\";\n\nconst GenerateModelCodeRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const [statusMessage, setStatusMessage] = useState(\"Preparing model generation...\");\n const [isPinging, setIsPinging] = useState(false);\n const [isGenerating, setIsGenerating] = useState(false);\n\n const [generateCode, { isLoading: isGenerateCodeUpdating, isSuccess: isGenerateCodeSuceess }] =\n useGenerateCodeForModelMutation();\n\n const [triggerSeeder, { data, isSuccess: isSeederSuccess, isError: isSeederError }] = useSeederMutation();\n\n const isSolidCoreModel = event?.rowData?.module?.name === \"solid-core\";\n const generatedFiles = useMemo(\n () => [\n \"Entity file\",\n \"Repository file\",\n \"Controller file\",\n \"Service file\",\n \"Create and update DTO files\",\n ],\n []\n );\n\n const pingBackendWithRetry = async (retries = 30, delay = 500): Promise<boolean> => {\n for (let i = 0; i < retries; i += 1) {\n try {\n const res = await fetch(`${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/ping`);\n if (res.ok) return true;\n } catch (error) {\n // ignore and retry\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n return false;\n };\n\n const generateCodeHandler = async () => {\n try {\n setIsGenerating(true);\n setStatusMessage(\"Submitting model generation request...\");\n await generateCode({ id: event?.rowData?.id }).unwrap();\n setStatusMessage(\"Waiting for backend to come back online...\");\n } catch (error: any) {\n setIsGenerating(false);\n dispatch(closePopup());\n const errorMessage = error?.data?.message || error?.data?.error || ERROR_MESSAGES.CODE_GENERATE_FAILED;\n dispatch(showToast({ severity: \"error\", summary: \"Failed to generate code\", detail: errorMessage }));\n }\n };\n useEffect(() => {\n if (!isGenerateCodeSuceess) return undefined;\n\n const timer = window.setTimeout(async () => {\n setIsPinging(true);\n setStatusMessage(\"Checking backend availability before refreshing metadata...\");\n const isAlive = await pingBackendWithRetry();\n setIsPinging(false);\n\n if (isAlive) {\n setStatusMessage(\"Refreshing seeded metadata...\");\n await triggerSeeder({ seeder: \"ModuleMetadataSeederService\", modulesToSeed: event?.rowData?.module?.name ? [event.rowData.module.name] : undefined });\n return;\n }\n\n setIsGenerating(false);\n dispatch(closePopup());\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.BACKEND_UNAVAILABLE,\n detail: ERROR_MESSAGES.SEEDER_NOT_TRIGGERED,\n })\n );\n }, 5000);\n\n return () => window.clearTimeout(timer);\n }, [dispatch, isGenerateCodeSuceess, triggerSeeder]);\n\n useEffect(() => {\n if (isSeederSuccess) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n detail: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n })\n );\n setIsGenerating(false);\n dispatch(closePopup());\n window.location.reload();\n }\n\n if (isSeederError) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SEEDER_ERROR, detail: ERROR_MESSAGES.SEEDER_NOT_RUN }));\n setIsGenerating(false);\n }\n }, [data, dispatch, isSeederError, isSeederSuccess]);\n\n if (isGenerating) {\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Model</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Applying the code generation pipeline and reseeding metadata.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading\">\n <SolidCircularLoader />\n <p className=\"solid-generate-code-popup__loading-title\">\n {isPinging ? \"Waiting for backend...\" : \"Generating model code...\"}\n </p>\n <p className=\"solid-generate-code-popup__loading-copy\">{statusMessage}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Model</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">\n Generate or refresh the model code artifacts from the current metadata definition.\n </p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body\">\n {isSolidCoreModel ? (\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <AlertTriangle size={16} />\n <span>You cannot generate code for Solid Core models.</span>\n </div>\n ) : (\n <>\n <p className=\"solid-generate-code-popup__intro\">\n Proceed with model code generation. Existing generated files may be overwritten.\n </p>\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <FileCode2 size={15} />\n <span>Artifacts created</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n {generatedFiles.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </div>\n </>\n )}\n\n <div className=\"solid-generate-code-popup__actions\">\n {!isSolidCoreModel ? (\n <SolidButton\n size=\"small\"\n autoFocus\n leftIcon={<Sparkles size={14} />}\n loading={isGenerateCodeUpdating}\n onClick={generateCodeHandler}\n >\n Generate\n </SolidButton>\n ) : null}\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => dispatch(closePopup())}>\n {isSolidCoreModel ? \"Close\" : \"Cancel\"}\n </SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default GenerateModelCodeRowAction;\n"]}
|
package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx
CHANGED
|
@@ -53,13 +53,13 @@ const GenerateModelCodeRowAction = (event: SolidListRowdataDynamicFunctionProps)
|
|
|
53
53
|
setStatusMessage("Submitting model generation request...");
|
|
54
54
|
await generateCode({ id: event?.rowData?.id }).unwrap();
|
|
55
55
|
setStatusMessage("Waiting for backend to come back online...");
|
|
56
|
-
} catch (error) {
|
|
56
|
+
} catch (error: any) {
|
|
57
57
|
setIsGenerating(false);
|
|
58
58
|
dispatch(closePopup());
|
|
59
|
-
|
|
59
|
+
const errorMessage = error?.data?.message || error?.data?.error || ERROR_MESSAGES.CODE_GENERATE_FAILED;
|
|
60
|
+
dispatch(showToast({ severity: "error", summary: "Failed to generate code", detail: errorMessage }));
|
|
60
61
|
}
|
|
61
62
|
};
|
|
62
|
-
|
|
63
63
|
useEffect(() => {
|
|
64
64
|
if (!isGenerateCodeSuceess) return undefined;
|
|
65
65
|
|
|
@@ -71,7 +71,7 @@ const GenerateModelCodeRowAction = (event: SolidListRowdataDynamicFunctionProps)
|
|
|
71
71
|
|
|
72
72
|
if (isAlive) {
|
|
73
73
|
setStatusMessage("Refreshing seeded metadata...");
|
|
74
|
-
await triggerSeeder("ModuleMetadataSeederService");
|
|
74
|
+
await triggerSeeder({ seeder: "ModuleMetadataSeederService", modulesToSeed: event?.rowData?.module?.name ? [event.rowData.module.name] : undefined });
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
77
|
|
package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js
CHANGED
|
@@ -126,20 +126,21 @@ var GenerateModuleCodeRowAction = function (event) {
|
|
|
126
126
|
return undefined;
|
|
127
127
|
var timer = window.setTimeout(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
128
128
|
var isAlive;
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
var _a;
|
|
130
|
+
return __generator(this, function (_b) {
|
|
131
|
+
switch (_b.label) {
|
|
131
132
|
case 0:
|
|
132
133
|
setIsPinging(true);
|
|
133
134
|
setStatusMessage("Checking backend availability before refreshing metadata...");
|
|
134
135
|
return [4 /*yield*/, pingBackendWithRetry(30, 500)];
|
|
135
136
|
case 1:
|
|
136
|
-
isAlive =
|
|
137
|
+
isAlive = _b.sent();
|
|
137
138
|
setIsPinging(false);
|
|
138
139
|
if (!isAlive) return [3 /*break*/, 3];
|
|
139
140
|
setStatusMessage("Refreshing seeded metadata...");
|
|
140
|
-
return [4 /*yield*/, triggerSeeder("ModuleMetadataSeederService")];
|
|
141
|
+
return [4 /*yield*/, triggerSeeder({ seeder: "ModuleMetadataSeederService", modulesToSeed: ((_a = event === null || event === void 0 ? void 0 : event.rowData) === null || _a === void 0 ? void 0 : _a.name) ? [event.rowData.name] : undefined })];
|
|
141
142
|
case 2:
|
|
142
|
-
|
|
143
|
+
_b.sent();
|
|
143
144
|
return [2 /*return*/];
|
|
144
145
|
case 3:
|
|
145
146
|
setIsGenerating(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateModuleCodeRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { AlertTriangle, FileCode2, Sparkles } from \"lucide-react\";\nimport { SolidCircularLoader } from \"../../../../../../components/core/common/SolidLoaders/SolidCircularLoader\";\nimport { ERROR_MESSAGES } from \"../../../../../../constants/error-messages\";\nimport { env } from \"../../../../../../adapters/env\";\nimport { useGenerateCodeFormoduleMutation } from \"../../../../../../redux/api/moduleApi\";\nimport { useSeederMutation } from \"../../../../../../redux/api/solidServiceApi\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../../shad-cn-ui\";\n\nconst GenerateModuleCodeRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const [statusMessage, setStatusMessage] = useState(\"Preparing module generation...\");\n const [isPinging, setIsPinging] = useState(false);\n const [isGenerating, setIsGenerating] = useState(false);\n\n const [generateCode, { isLoading: isGenerateCodeUpdating, isSuccess: isGenerateCodeSuceess }] =\n useGenerateCodeFormoduleMutation();\n\n const [triggerSeeder, { data, isSuccess: isSeederSuccess, isError: isSeederError }] = useSeederMutation();\n\n const isSolidCoreModule = event?.rowData?.name === \"solid-core\";\n const generatedFiles = useMemo(\n () => [\n \"Module file\",\n \"Metadata references\",\n \"Controller wiring\",\n \"Service and repository imports\",\n ],\n []\n );\n\n const pingBackendWithRetry = async (retries = 30, delay = 500): Promise<boolean> => {\n for (let i = 0; i < retries; i += 1) {\n try {\n const res = await fetch(`${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/ping`);\n if (res.ok) return true;\n } catch (error) {\n // ignore and retry\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n return false;\n };\n\n const generateCodeHandler = async () => {\n try {\n setIsGenerating(true);\n setStatusMessage(\"Submitting module generation request...\");\n await generateCode({ id: event?.rowData?.id }).unwrap();\n setStatusMessage(\"Waiting for backend to come back online...\");\n } catch (error) {\n setIsGenerating(false);\n dispatch(closePopup());\n dispatch(showToast({ severity: \"error\", summary: \"Something went wrong\", detail: ERROR_MESSAGES.API_ERROR }));\n }\n };\n\n useEffect(() => {\n if (!isGenerateCodeSuceess) return undefined;\n\n const timer = window.setTimeout(async () => {\n setIsPinging(true);\n setStatusMessage(\"Checking backend availability before refreshing metadata...\");\n const isAlive = await pingBackendWithRetry(30, 500);\n setIsPinging(false);\n\n if (isAlive) {\n setStatusMessage(\"Refreshing seeded metadata...\");\n await triggerSeeder(\"ModuleMetadataSeederService\");\n return;\n }\n\n setIsGenerating(false);\n dispatch(closePopup());\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.BACKEND_UNAVAILABLE,\n detail: ERROR_MESSAGES.SEEDER_NOT_TRIGGERED,\n })\n );\n }, 5000);\n\n return () => window.clearTimeout(timer);\n }, [dispatch, isGenerateCodeSuceess, triggerSeeder]);\n\n useEffect(() => {\n if (isSeederSuccess) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n detail: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n })\n );\n setIsGenerating(false);\n dispatch(closePopup());\n window.location.reload();\n }\n\n if (isSeederError) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SEEDER_ERROR, detail: ERROR_MESSAGES.SEEDER_NOT_RUN }));\n setIsGenerating(false);\n }\n }, [data, dispatch, isSeederError, isSeederSuccess]);\n\n if (isGenerating) {\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Applying the code generation pipeline and reseeding metadata.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading\">\n <SolidCircularLoader />\n <p className=\"solid-generate-code-popup__loading-title\">\n {isPinging ? \"Waiting for backend...\" : \"Generating module code...\"}\n </p>\n <p className=\"solid-generate-code-popup__loading-copy\">{statusMessage}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">\n Generate or refresh the module code artifacts from the current metadata definition.\n </p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body\">\n {isSolidCoreModule ? (\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <AlertTriangle size={16} />\n <span>You cannot generate code for Solid Core modules.</span>\n </div>\n ) : (\n <>\n <p className=\"solid-generate-code-popup__intro\">\n Proceed with module code generation. Existing generated files may be overwritten.\n </p>\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <FileCode2 size={15} />\n <span>Artifacts impacted</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n {generatedFiles.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </div>\n </>\n )}\n\n <div className=\"solid-generate-code-popup__actions\">\n {!isSolidCoreModule ? (\n <SolidButton\n size=\"small\"\n autoFocus\n leftIcon={<Sparkles size={14} />}\n loading={isGenerateCodeUpdating}\n onClick={generateCodeHandler}\n >\n Generate\n </SolidButton>\n ) : null}\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => dispatch(closePopup())}>\n {isSolidCoreModule ? \"Close\" : \"Cancel\"}\n </SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default GenerateModuleCodeRowAction;\n"]}
|
|
1
|
+
{"version":3,"file":"GenerateModuleCodeRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { AlertTriangle, FileCode2, Sparkles } from \"lucide-react\";\nimport { SolidCircularLoader } from \"../../../../../../components/core/common/SolidLoaders/SolidCircularLoader\";\nimport { ERROR_MESSAGES } from \"../../../../../../constants/error-messages\";\nimport { env } from \"../../../../../../adapters/env\";\nimport { useGenerateCodeFormoduleMutation } from \"../../../../../../redux/api/moduleApi\";\nimport { useSeederMutation } from \"../../../../../../redux/api/solidServiceApi\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../../shad-cn-ui\";\n\nconst GenerateModuleCodeRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const [statusMessage, setStatusMessage] = useState(\"Preparing module generation...\");\n const [isPinging, setIsPinging] = useState(false);\n const [isGenerating, setIsGenerating] = useState(false);\n\n const [generateCode, { isLoading: isGenerateCodeUpdating, isSuccess: isGenerateCodeSuceess }] =\n useGenerateCodeFormoduleMutation();\n\n const [triggerSeeder, { data, isSuccess: isSeederSuccess, isError: isSeederError }] = useSeederMutation();\n\n const isSolidCoreModule = event?.rowData?.name === \"solid-core\";\n const generatedFiles = useMemo(\n () => [\n \"Module file\",\n \"Metadata references\",\n \"Controller wiring\",\n \"Service and repository imports\",\n ],\n []\n );\n\n const pingBackendWithRetry = async (retries = 30, delay = 500): Promise<boolean> => {\n for (let i = 0; i < retries; i += 1) {\n try {\n const res = await fetch(`${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/ping`);\n if (res.ok) return true;\n } catch (error) {\n // ignore and retry\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n return false;\n };\n\n const generateCodeHandler = async () => {\n try {\n setIsGenerating(true);\n setStatusMessage(\"Submitting module generation request...\");\n await generateCode({ id: event?.rowData?.id }).unwrap();\n setStatusMessage(\"Waiting for backend to come back online...\");\n } catch (error) {\n setIsGenerating(false);\n dispatch(closePopup());\n dispatch(showToast({ severity: \"error\", summary: \"Something went wrong\", detail: ERROR_MESSAGES.API_ERROR }));\n }\n };\n\n useEffect(() => {\n if (!isGenerateCodeSuceess) return undefined;\n\n const timer = window.setTimeout(async () => {\n setIsPinging(true);\n setStatusMessage(\"Checking backend availability before refreshing metadata...\");\n const isAlive = await pingBackendWithRetry(30, 500);\n setIsPinging(false);\n\n if (isAlive) {\n setStatusMessage(\"Refreshing seeded metadata...\");\n await triggerSeeder({ seeder: \"ModuleMetadataSeederService\", modulesToSeed: event?.rowData?.name ? [event.rowData.name] : undefined });\n return;\n }\n\n setIsGenerating(false);\n dispatch(closePopup());\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.BACKEND_UNAVAILABLE,\n detail: ERROR_MESSAGES.SEEDER_NOT_TRIGGERED,\n })\n );\n }, 5000);\n\n return () => window.clearTimeout(timer);\n }, [dispatch, isGenerateCodeSuceess, triggerSeeder]);\n\n useEffect(() => {\n if (isSeederSuccess) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n detail: ERROR_MESSAGES.CODE_GENERTAE_SUCCESSFULLY,\n })\n );\n setIsGenerating(false);\n dispatch(closePopup());\n window.location.reload();\n }\n\n if (isSeederError) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SEEDER_ERROR, detail: ERROR_MESSAGES.SEEDER_NOT_RUN }));\n setIsGenerating(false);\n }\n }, [data, dispatch, isSeederError, isSeederSuccess]);\n\n if (isGenerating) {\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Applying the code generation pipeline and reseeding metadata.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading\">\n <SolidCircularLoader />\n <p className=\"solid-generate-code-popup__loading-title\">\n {isPinging ? \"Waiting for backend...\" : \"Generating module code...\"}\n </p>\n <p className=\"solid-generate-code-popup__loading-copy\">{statusMessage}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Generate Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">\n Generate or refresh the module code artifacts from the current metadata definition.\n </p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body\">\n {isSolidCoreModule ? (\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <AlertTriangle size={16} />\n <span>You cannot generate code for Solid Core modules.</span>\n </div>\n ) : (\n <>\n <p className=\"solid-generate-code-popup__intro\">\n Proceed with module code generation. Existing generated files may be overwritten.\n </p>\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <FileCode2 size={15} />\n <span>Artifacts impacted</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n {generatedFiles.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </div>\n </>\n )}\n\n <div className=\"solid-generate-code-popup__actions\">\n {!isSolidCoreModule ? (\n <SolidButton\n size=\"small\"\n autoFocus\n leftIcon={<Sparkles size={14} />}\n loading={isGenerateCodeUpdating}\n onClick={generateCodeHandler}\n >\n Generate\n </SolidButton>\n ) : null}\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => dispatch(closePopup())}>\n {isSolidCoreModule ? \"Close\" : \"Cancel\"}\n </SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default GenerateModuleCodeRowAction;\n"]}
|
|
@@ -70,7 +70,7 @@ const GenerateModuleCodeRowAction = (event: SolidListRowdataDynamicFunctionProps
|
|
|
70
70
|
|
|
71
71
|
if (isAlive) {
|
|
72
72
|
setStatusMessage("Refreshing seeded metadata...");
|
|
73
|
-
await triggerSeeder("ModuleMetadataSeederService");
|
|
73
|
+
await triggerSeeder({ seeder: "ModuleMetadataSeederService", modulesToSeed: event?.rowData?.name ? [event.rowData.name] : undefined });
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SolidFormViewProps } from "./SolidFormView";
|
|
2
2
|
export type SolidFormFooterProps = {
|
|
3
3
|
params: SolidFormViewProps;
|
|
4
|
+
internationalisationEnabled?: boolean;
|
|
4
5
|
};
|
|
5
|
-
export declare const SolidFormFooter: ({ params }: SolidFormFooterProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare const SolidFormFooter: ({ params, internationalisationEnabled }: SolidFormFooterProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
7
|
//# sourceMappingURL=SolidFormFooter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidFormFooter.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormFooter.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAMrD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidFormFooter.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormFooter.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAMrD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC;AAQF,eAAO,MAAM,eAAe,4CAAqD,oBAAoB,4CAkNpG,CAAC"}
|
|
@@ -55,14 +55,47 @@ import { useSearchParams } from "../../../hooks/useSearchParams";
|
|
|
55
55
|
import { useRouter } from "../../../hooks/useRouter";
|
|
56
56
|
import { SolidButton, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger } from "../../shad-cn-ui";
|
|
57
57
|
export var SolidFormFooter = function (_a) {
|
|
58
|
-
var params = _a.params;
|
|
58
|
+
var params = _a.params, _b = _a.internationalisationEnabled, internationalisationEnabled = _b === void 0 ? false : _b;
|
|
59
59
|
var pathname = usePathname();
|
|
60
60
|
var searchParams = useSearchParams();
|
|
61
61
|
var router = useRouter();
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var
|
|
65
|
-
var
|
|
62
|
+
var _c = useState(null), prevNav = _c[0], setPrevNav = _c[1];
|
|
63
|
+
var _d = useState(null), nextNav = _d[0], setNextNav = _d[1];
|
|
64
|
+
var _e = useState(null), meta = _e[0], setMeta = _e[1];
|
|
65
|
+
var _f = useLazyNavigationQuery(), triggerGetNavigation = _f[0], isLoading = _f[1].isLoading;
|
|
66
|
+
var rewriteLocaleFilter = function (filterNode, locale) {
|
|
67
|
+
if (!filterNode || typeof filterNode !== "object")
|
|
68
|
+
return filterNode;
|
|
69
|
+
if (Array.isArray(filterNode)) {
|
|
70
|
+
return filterNode.map(function (item) { return rewriteLocaleFilter(item, locale); });
|
|
71
|
+
}
|
|
72
|
+
var nextNode = __assign({}, filterNode);
|
|
73
|
+
if (Object.prototype.hasOwnProperty.call(nextNode, "localeName")) {
|
|
74
|
+
var localeFilter = nextNode.localeName;
|
|
75
|
+
if (localeFilter && typeof localeFilter === "object" && !Array.isArray(localeFilter)) {
|
|
76
|
+
var updatedLocaleFilter_1 = __assign({}, localeFilter);
|
|
77
|
+
Object.keys(updatedLocaleFilter_1).forEach(function (operator) {
|
|
78
|
+
var operatorValue = updatedLocaleFilter_1[operator];
|
|
79
|
+
if (Array.isArray(operatorValue)) {
|
|
80
|
+
updatedLocaleFilter_1[operator] = [locale];
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
updatedLocaleFilter_1[operator] = locale;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
nextNode.localeName = updatedLocaleFilter_1;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
nextNode.localeName = locale;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
Object.keys(nextNode).forEach(function (key) {
|
|
93
|
+
if (key === "localeName")
|
|
94
|
+
return;
|
|
95
|
+
nextNode[key] = rewriteLocaleFilter(nextNode[key], locale);
|
|
96
|
+
});
|
|
97
|
+
return nextNode;
|
|
98
|
+
};
|
|
66
99
|
// -----------------------------
|
|
67
100
|
// Helper: update local storage
|
|
68
101
|
// -----------------------------
|
|
@@ -111,7 +144,7 @@ export var SolidFormFooter = function (_a) {
|
|
|
111
144
|
}
|
|
112
145
|
if (params.id !== "new") {
|
|
113
146
|
var fetchNavigation = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
114
|
-
var listPath, queryObject, defaultQueryObject, locale, defaultEntityLocaleId, queryData, queryString, response;
|
|
147
|
+
var listPath, queryObject, defaultQueryObject, locale, defaultEntityLocaleId, resolvedFilters, requiresPopulate, queryData, queryString, response;
|
|
115
148
|
var _a, _b, _c, _d, _e, _f;
|
|
116
149
|
return __generator(this, function (_g) {
|
|
117
150
|
switch (_g.label) {
|
|
@@ -121,15 +154,16 @@ export var SolidFormFooter = function (_a) {
|
|
|
121
154
|
defaultQueryObject = queryObject || {};
|
|
122
155
|
locale = searchParams.get("locale");
|
|
123
156
|
defaultEntityLocaleId = searchParams.get("defaultEntityLocaleId");
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
157
|
+
resolvedFilters = internationalisationEnabled && locale
|
|
158
|
+
? rewriteLocaleFilter(defaultQueryObject.finalFullFilter || null, locale)
|
|
159
|
+
: (defaultQueryObject.finalFullFilter || null);
|
|
160
|
+
requiresPopulate = Array.isArray(defaultQueryObject.sort) &&
|
|
161
|
+
defaultQueryObject.sort[0].split(":")[0].includes(".");
|
|
162
|
+
queryData = __assign({ offset: defaultQueryObject.offset || 0, limit: defaultQueryObject.limit || 25, filters: resolvedFilters,
|
|
128
163
|
// fields: ["id"],
|
|
129
|
-
modelName: params.modelName,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
};
|
|
164
|
+
modelName: params.modelName, recordId: params.id, sort: defaultQueryObject.sort }, (requiresPopulate && {
|
|
165
|
+
populate: defaultQueryObject.populate,
|
|
166
|
+
}));
|
|
133
167
|
if (locale) {
|
|
134
168
|
queryData.locale = locale;
|
|
135
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidFormFooter.js","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormFooter.tsx"],"names":[],"mappings":"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","sourcesContent":["\n\nimport { useLazyNavigationQuery } from \"../../../redux/api/modelApi\";\nimport { useEffect, useState } from \"react\";\nimport qs from \"qs\";\nimport { setFilterObjectToLocalStorageByUrl, getFilterObjectFromLocalStorageByUrl } from \"../list/SolidListView\";\nimport { SolidFormViewProps } from \"./SolidFormView\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { SolidButton, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger } from \"../../shad-cn-ui\";\n\nexport type SolidFormFooterProps = {\n params: SolidFormViewProps;\n};\n\ntype NavItem = {\n recordId: number;\n offset: number;\n limit: number;\n};\n\nexport const SolidFormFooter = ({ params }: SolidFormFooterProps) => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const router = useRouter();\n\n const [prevNav, setPrevNav] = useState<NavItem | null>(null);\n const [nextNav, setNextNav] = useState<NavItem | null>(null);\n const [meta, setMeta] = useState<any>(null);\n\n const [triggerGetNavigation, { isLoading }] =\n useLazyNavigationQuery();\n\n // -----------------------------\n // Helper: update local storage\n // -----------------------------\n const updatePaginationInLocalStorage = (offset: number, limit: number) => {\n const listPath = window.location.pathname.replace(\n /\\/form\\/[^/]+/,\n \"/list\",\n );\n const queryObject = getFilterObjectFromLocalStorageByUrl(listPath) || {};\n\n const updatedQueryObj = {\n ...queryObject,\n offset,\n limit,\n };\n setFilterObjectToLocalStorageByUrl(listPath, updatedQueryObj)\n };\n\n const getNewUrl = (recordId: number): string => {\n // Replace the id after /form/\n const newPathname = pathname.replace(\n /\\/form\\/[^/]+/,\n `/form/${recordId}`,\n );\n\n // Clone search params (immutable in Next.js)\n const params = new URLSearchParams(searchParams.toString());\n\n // Remove only userKeyField\n params.delete(\"userKeyField\");\n\n const query = params.toString();\n return query ? `${newPathname}?${query}` : newPathname;\n }\n\n\n // -----------------------------\n // Click handlers\n // -----------------------------\n const handlePrev = () => {\n\n if (!prevNav) return;\n\n updatePaginationInLocalStorage(prevNav.offset, prevNav.limit);\n const newUrl = getNewUrl(prevNav.recordId)\n router.push(newUrl);\n };\n\n const handleNext = () => {\n if (!nextNav) return;\n\n updatePaginationInLocalStorage(nextNav.offset, nextNav.limit);\n const newUrl = getNewUrl(nextNav.recordId)\n router.push(newUrl);\n };\n\n // -----------------------------\n // Fetch navigation data\n // -----------------------------\n useEffect(() => {\n if (params.embeded === true) {\n setPrevNav(null);\n setNextNav(null);\n setMeta(null);\n return;\n }\n\n if (params.id !== \"new\") {\n\n const fetchNavigation = async () => {\n const listPath = window.location.pathname.replace(\n /\\/form\\/[^/]+/,\n \"/list\",\n );\n\n const queryObject = getFilterObjectFromLocalStorageByUrl(listPath);\n const defaultQueryObject = queryObject || {};\n const locale = searchParams.get(\"locale\");\n const defaultEntityLocaleId = searchParams.get(\"defaultEntityLocaleId\");\n\n const queryData: Record<string, any> = {\n offset: defaultQueryObject.offset || 0,\n limit: defaultQueryObject.limit || 25,\n filters: defaultQueryObject.finalFullFilter || null,\n // fields: [\"id\"],\n modelName: params.modelName,\n recordId: params.id,\n sort: defaultQueryObject.sort,\n };\n\n if (locale) {\n queryData.locale = locale;\n }\n\n if (defaultEntityLocaleId && defaultEntityLocaleId !== \"new\") {\n queryData.defaultEntityLocaleId = defaultEntityLocaleId;\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n const response: any = await triggerGetNavigation(queryString).unwrap();\n if (response.statusCode == 200) {\n setPrevNav(response?.data?.prev ?? null);\n setNextNav(response?.data?.next ?? null);\n setMeta(response?.data?.meta ?? null);\n }\n };\n fetchNavigation();\n }\n }, [params.id, params.embeded, params.modelName, searchParams, triggerGetNavigation]);\n\n // -----------------------------\n // UI\n // -----------------------------\n return (\n <div\n className=\"flex justify-end items-center gap-2 p-1\"\n >{meta &&\n <span className=\"solid-form-footer-pagination-meta p-2\">{`${meta.currentIndexGlobal} of ${meta.totalRecords}`}</span>\n }\n {prevNav && (\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <SolidButton\n icon=\"si si-angle-left\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handlePrev()}\n disabled={isLoading}\n />\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"top\">Previous</SolidTooltipContent>\n </SolidTooltip>\n )}\n\n {nextNav && (\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <SolidButton\n icon=\"si si-angle-right\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleNext()}\n disabled={isLoading}\n />\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"top\">Next</SolidTooltipContent>\n </SolidTooltip>\n )}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidFormFooter.js","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormFooter.tsx"],"names":[],"mappings":"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","sourcesContent":["\n\nimport { useLazyNavigationQuery } from \"../../../redux/api/modelApi\";\nimport { useEffect, useState } from \"react\";\nimport qs from \"qs\";\nimport { setFilterObjectToLocalStorageByUrl, getFilterObjectFromLocalStorageByUrl } from \"../list/SolidListView\";\nimport { SolidFormViewProps } from \"./SolidFormView\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { SolidButton, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger } from \"../../shad-cn-ui\";\n\nexport type SolidFormFooterProps = {\n params: SolidFormViewProps;\n internationalisationEnabled?: boolean;\n};\n\ntype NavItem = {\n recordId: number;\n offset: number;\n limit: number;\n};\n\nexport const SolidFormFooter = ({ params, internationalisationEnabled = false }: SolidFormFooterProps) => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const router = useRouter();\n\n const [prevNav, setPrevNav] = useState<NavItem | null>(null);\n const [nextNav, setNextNav] = useState<NavItem | null>(null);\n const [meta, setMeta] = useState<any>(null);\n\n const [triggerGetNavigation, { isLoading }] =\n useLazyNavigationQuery();\n\n const rewriteLocaleFilter = (filterNode: any, locale: string): any => {\n if (!filterNode || typeof filterNode !== \"object\") return filterNode;\n\n if (Array.isArray(filterNode)) {\n return filterNode.map((item) => rewriteLocaleFilter(item, locale));\n }\n\n const nextNode = { ...filterNode };\n\n if (Object.prototype.hasOwnProperty.call(nextNode, \"localeName\")) {\n const localeFilter = nextNode.localeName;\n\n if (localeFilter && typeof localeFilter === \"object\" && !Array.isArray(localeFilter)) {\n const updatedLocaleFilter: Record<string, any> = { ...localeFilter };\n Object.keys(updatedLocaleFilter).forEach((operator) => {\n const operatorValue = updatedLocaleFilter[operator];\n if (Array.isArray(operatorValue)) {\n updatedLocaleFilter[operator] = [locale];\n } else {\n updatedLocaleFilter[operator] = locale;\n }\n });\n nextNode.localeName = updatedLocaleFilter;\n } else {\n nextNode.localeName = locale;\n }\n }\n\n Object.keys(nextNode).forEach((key) => {\n if (key === \"localeName\") return;\n nextNode[key] = rewriteLocaleFilter(nextNode[key], locale);\n });\n\n return nextNode;\n };\n\n // -----------------------------\n // Helper: update local storage\n // -----------------------------\n const updatePaginationInLocalStorage = (offset: number, limit: number) => {\n const listPath = window.location.pathname.replace(\n /\\/form\\/[^/]+/,\n \"/list\",\n );\n const queryObject = getFilterObjectFromLocalStorageByUrl(listPath) || {};\n\n const updatedQueryObj = {\n ...queryObject,\n offset,\n limit,\n };\n setFilterObjectToLocalStorageByUrl(listPath, updatedQueryObj)\n };\n\n const getNewUrl = (recordId: number): string => {\n // Replace the id after /form/\n const newPathname = pathname.replace(\n /\\/form\\/[^/]+/,\n `/form/${recordId}`,\n );\n\n // Clone search params (immutable in Next.js)\n const params = new URLSearchParams(searchParams.toString());\n\n // Remove only userKeyField\n params.delete(\"userKeyField\");\n\n const query = params.toString();\n return query ? `${newPathname}?${query}` : newPathname;\n }\n\n\n // -----------------------------\n // Click handlers\n // -----------------------------\n const handlePrev = () => {\n\n if (!prevNav) return;\n\n updatePaginationInLocalStorage(prevNav.offset, prevNav.limit);\n const newUrl = getNewUrl(prevNav.recordId)\n router.push(newUrl);\n };\n\n const handleNext = () => {\n if (!nextNav) return;\n\n updatePaginationInLocalStorage(nextNav.offset, nextNav.limit);\n const newUrl = getNewUrl(nextNav.recordId)\n router.push(newUrl);\n };\n\n // -----------------------------\n // Fetch navigation data\n // -----------------------------\n useEffect(() => {\n if (params.embeded === true) {\n setPrevNav(null);\n setNextNav(null);\n setMeta(null);\n return;\n }\n\n if (params.id !== \"new\") {\n\n const fetchNavigation = async () => {\n const listPath = window.location.pathname.replace(\n /\\/form\\/[^/]+/,\n \"/list\",\n );\n\n const queryObject = getFilterObjectFromLocalStorageByUrl(listPath);\n const defaultQueryObject = queryObject || {};\n const locale = searchParams.get(\"locale\");\n const defaultEntityLocaleId = searchParams.get(\"defaultEntityLocaleId\");\n const resolvedFilters = internationalisationEnabled && locale\n ? rewriteLocaleFilter(defaultQueryObject.finalFullFilter || null, locale)\n : (defaultQueryObject.finalFullFilter || null);\n\n const requiresPopulate =\n Array.isArray(defaultQueryObject.sort) &&\n defaultQueryObject.sort[0].split(\":\")[0].includes(\".\");\n const queryData = {\n offset: defaultQueryObject.offset || 0,\n limit: defaultQueryObject.limit || 25,\n filters: resolvedFilters,\n // fields: [\"id\"],\n modelName: params.modelName,\n recordId: params.id,\n sort: defaultQueryObject.sort,\n ...(requiresPopulate && {\n populate: defaultQueryObject.populate,\n }),\n };\n\n if (locale) {\n queryData.locale = locale;\n }\n\n if (defaultEntityLocaleId && defaultEntityLocaleId !== \"new\") {\n queryData.defaultEntityLocaleId = defaultEntityLocaleId;\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n const response: any = await triggerGetNavigation(queryString).unwrap();\n if (response.statusCode == 200) {\n setPrevNav(response?.data?.prev ?? null);\n setNextNav(response?.data?.next ?? null);\n setMeta(response?.data?.meta ?? null);\n }\n };\n fetchNavigation();\n }\n }, [params.id, params.embeded, params.modelName, searchParams, triggerGetNavigation]);\n\n // -----------------------------\n // UI\n // -----------------------------\n return (\n <div\n className=\"flex justify-end items-center gap-2 p-1\"\n >{meta &&\n <span className=\"solid-form-footer-pagination-meta p-2\">{`${meta.currentIndexGlobal} of ${meta.totalRecords}`}</span>\n }\n {prevNav && (\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <SolidButton\n icon=\"si si-angle-left\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handlePrev()}\n disabled={isLoading}\n />\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"top\">Previous</SolidTooltipContent>\n </SolidTooltip>\n )}\n\n {nextNav && (\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <SolidButton\n icon=\"si si-angle-right\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleNext()}\n disabled={isLoading}\n />\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"top\">Next</SolidTooltipContent>\n </SolidTooltip>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -12,6 +12,7 @@ import { SolidButton, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger } f
|
|
|
12
12
|
|
|
13
13
|
export type SolidFormFooterProps = {
|
|
14
14
|
params: SolidFormViewProps;
|
|
15
|
+
internationalisationEnabled?: boolean;
|
|
15
16
|
};
|
|
16
17
|
|
|
17
18
|
type NavItem = {
|
|
@@ -20,7 +21,7 @@ type NavItem = {
|
|
|
20
21
|
limit: number;
|
|
21
22
|
};
|
|
22
23
|
|
|
23
|
-
export const SolidFormFooter = ({ params }: SolidFormFooterProps) => {
|
|
24
|
+
export const SolidFormFooter = ({ params, internationalisationEnabled = false }: SolidFormFooterProps) => {
|
|
24
25
|
const pathname = usePathname();
|
|
25
26
|
const searchParams = useSearchParams();
|
|
26
27
|
const router = useRouter();
|
|
@@ -32,6 +33,42 @@ export const SolidFormFooter = ({ params }: SolidFormFooterProps) => {
|
|
|
32
33
|
const [triggerGetNavigation, { isLoading }] =
|
|
33
34
|
useLazyNavigationQuery();
|
|
34
35
|
|
|
36
|
+
const rewriteLocaleFilter = (filterNode: any, locale: string): any => {
|
|
37
|
+
if (!filterNode || typeof filterNode !== "object") return filterNode;
|
|
38
|
+
|
|
39
|
+
if (Array.isArray(filterNode)) {
|
|
40
|
+
return filterNode.map((item) => rewriteLocaleFilter(item, locale));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const nextNode = { ...filterNode };
|
|
44
|
+
|
|
45
|
+
if (Object.prototype.hasOwnProperty.call(nextNode, "localeName")) {
|
|
46
|
+
const localeFilter = nextNode.localeName;
|
|
47
|
+
|
|
48
|
+
if (localeFilter && typeof localeFilter === "object" && !Array.isArray(localeFilter)) {
|
|
49
|
+
const updatedLocaleFilter: Record<string, any> = { ...localeFilter };
|
|
50
|
+
Object.keys(updatedLocaleFilter).forEach((operator) => {
|
|
51
|
+
const operatorValue = updatedLocaleFilter[operator];
|
|
52
|
+
if (Array.isArray(operatorValue)) {
|
|
53
|
+
updatedLocaleFilter[operator] = [locale];
|
|
54
|
+
} else {
|
|
55
|
+
updatedLocaleFilter[operator] = locale;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
nextNode.localeName = updatedLocaleFilter;
|
|
59
|
+
} else {
|
|
60
|
+
nextNode.localeName = locale;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
Object.keys(nextNode).forEach((key) => {
|
|
65
|
+
if (key === "localeName") return;
|
|
66
|
+
nextNode[key] = rewriteLocaleFilter(nextNode[key], locale);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
return nextNode;
|
|
70
|
+
};
|
|
71
|
+
|
|
35
72
|
// -----------------------------
|
|
36
73
|
// Helper: update local storage
|
|
37
74
|
// -----------------------------
|
|
@@ -111,15 +148,24 @@ export const SolidFormFooter = ({ params }: SolidFormFooterProps) => {
|
|
|
111
148
|
const defaultQueryObject = queryObject || {};
|
|
112
149
|
const locale = searchParams.get("locale");
|
|
113
150
|
const defaultEntityLocaleId = searchParams.get("defaultEntityLocaleId");
|
|
114
|
-
|
|
115
|
-
|
|
151
|
+
const resolvedFilters = internationalisationEnabled && locale
|
|
152
|
+
? rewriteLocaleFilter(defaultQueryObject.finalFullFilter || null, locale)
|
|
153
|
+
: (defaultQueryObject.finalFullFilter || null);
|
|
154
|
+
|
|
155
|
+
const requiresPopulate =
|
|
156
|
+
Array.isArray(defaultQueryObject.sort) &&
|
|
157
|
+
defaultQueryObject.sort[0].split(":")[0].includes(".");
|
|
158
|
+
const queryData = {
|
|
116
159
|
offset: defaultQueryObject.offset || 0,
|
|
117
160
|
limit: defaultQueryObject.limit || 25,
|
|
118
|
-
filters:
|
|
161
|
+
filters: resolvedFilters,
|
|
119
162
|
// fields: ["id"],
|
|
120
163
|
modelName: params.modelName,
|
|
121
164
|
recordId: params.id,
|
|
122
165
|
sort: defaultQueryObject.sort,
|
|
166
|
+
...(requiresPopulate && {
|
|
167
|
+
populate: defaultQueryObject.populate,
|
|
168
|
+
}),
|
|
123
169
|
};
|
|
124
170
|
|
|
125
171
|
if (locale) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidFormView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormView.tsx"],"names":[],"mappings":"AA4DA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,mBAAmB,CAAC,EAAE,GAAG,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACnC,CAAC;AA8HF,eAAO,MAAM,uBAAuB,WAAY,GAAG,EAAE,KAAG,GAQvD,CAAA;AACD,eAAO,MAAM,sBAAsB,QAAS,MAAM,uBAAuB,OAAO,MAAM,EAAE,GAAG,CAAC,QAa3F,CAAC;AA0VF,QAAA,MAAM,aAAa,WAAY,kBAAkB,
|
|
1
|
+
{"version":3,"file":"SolidFormView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormView.tsx"],"names":[],"mappings":"AA4DA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,mBAAmB,CAAC,EAAE,GAAG,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACnC,CAAC;AA8HF,eAAO,MAAM,uBAAuB,WAAY,GAAG,EAAE,KAAG,GAQvD,CAAA;AACD,eAAO,MAAM,sBAAsB,QAAS,MAAM,uBAAuB,OAAO,MAAM,EAAE,GAAG,CAAC,QAa3F,CAAC;AA0VF,QAAA,MAAM,aAAa,WAAY,kBAAkB,4CAq9ChD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|