diff --git a/api/src/constants/index.ts b/api/src/constants/index.ts index 757db7391..775ced39e 100644 --- a/api/src/constants/index.ts +++ b/api/src/constants/index.ts @@ -70,8 +70,8 @@ export const HTTP_TEXTS = { "Reseting the content mapping is restricted. Please verify the status and review preceding actions.", CONTENTMAPPER_NOT_FOUND: "Sorry, the requested content mapper id does not exists.", - ADMIN_LOGIN_ERROR: - "Sorry, You Don't have admin access in any of the Organisation" + ADMIN_LOGIN_ERROR: + "Sorry, You Don't have admin access in any of the Organisation", }; export const HTTP_RESPONSE_HEADERS = { @@ -127,11 +127,11 @@ export const PREDEFINED_STATUS = [ export const PREDEFINED_STEPS = [1, 2, 3, 4, 5]; export const NEW_PROJECT_STATUS = { - 0: 0, //DRAFT - 1: 1, //READY_TO_TEST - 2: 2, //TESTING_IN_PROGRESS - 3: 3, //READY_FOR_MIGRATION - 4: 4, //MIGRATION_IN_PROGRESS - 5: 5, //MIGRATION_SUCCESSFUL - 6: 6 //MIGRATION_TERMINATED -}; \ No newline at end of file + 0: 0, //DRAFT + 1: 1, //READY_TO_TEST + 2: 2, //TESTING_IN_PROGRESS + 3: 3, //READY_FOR_MIGRATION + 4: 4, //MIGRATION_IN_PROGRESS + 5: 5, //MIGRATION_SUCCESSFUL + 6: 6, //MIGRATION_TERMINATED +}; diff --git a/api/src/database.ts b/api/src/database.ts index 0e7d331ac..0f4d162cd 100644 --- a/api/src/database.ts +++ b/api/src/database.ts @@ -8,7 +8,6 @@ const connectToDatabase = async () => { fs.mkdirSync("./database"); } logger.info("successfully connecting to Low DB"); - } catch (error) { logger.error("Error while connecting to Low DB:", error); process.exit(1); diff --git a/api/src/models/FieldMapper.ts b/api/src/models/FieldMapper.ts index b4662188b..f37f6bff4 100644 --- a/api/src/models/FieldMapper.ts +++ b/api/src/models/FieldMapper.ts @@ -2,11 +2,11 @@ import { JSONFile } from "lowdb/node"; import LowWithLodash from "../utils/lowdb-lodash.utils.js"; interface Advanced { - validationRegex: string, - Mandatory:boolean, - Multiple:boolean, - Unique:boolean, - NonLocalizable:boolean + validationRegex: string; + Mandatory: boolean; + Multiple: boolean; + Unique: boolean; + NonLocalizable: boolean; } interface FieldMapper { @@ -21,7 +21,7 @@ interface FieldMapper { isDeleted: boolean; backupFieldType: string; refrenceTo: { uid: string; title: string }; - advanced:Advanced + advanced: Advanced; }[]; } diff --git a/api/src/services/contentMapper.service.ts b/api/src/services/contentMapper.service.ts index 66d9192a3..6076dd4ff 100644 --- a/api/src/services/contentMapper.service.ts +++ b/api/src/services/contentMapper.service.ts @@ -8,7 +8,7 @@ import { HTTP_TEXTS, HTTP_CODES, STEPPER_STEPS, - NEW_PROJECT_STATUS + NEW_PROJECT_STATUS, } from "../constants/index.js"; import logger from "../utils/logger.js"; import { config } from "../config/index.js"; @@ -256,8 +256,7 @@ const updateContentType = async (req: Request) => { NEW_PROJECT_STATUS[4], ].includes(project.status) || project.current_step < STEPPER_STEPS.CONTENT_MAPPING - ) - { + ) { logger.error( getLogMessage( srcFun, diff --git a/api/src/services/org.service.ts b/api/src/services/org.service.ts index 0eed96e9b..e71dbfc50 100644 --- a/api/src/services/org.service.ts +++ b/api/src/services/org.service.ts @@ -312,19 +312,19 @@ const getStackLocal = async (token_payload: any, data: any) => { status: err.response.status, }; } - let localesArr:any =[] - res?.data?.locales.map((lang:any)=>{ + let localesArr: any = []; + res?.data?.locales.map((lang: any) => { return localesArr.push({ - code:lang.code, - name:lang.name - }) - }) + code: lang.code, + name: lang.name, + }); + }); let obj = { name: stack.name, api_key: stack.api_key, master_locale: stack.master_locale, - locales: localesArr + locales: localesArr, }; stacks.push(obj); } diff --git a/api/src/services/projects.service.ts b/api/src/services/projects.service.ts index 81ddbe548..e091c6901 100644 --- a/api/src/services/projects.service.ts +++ b/api/src/services/projects.service.ts @@ -9,7 +9,7 @@ import { HTTP_TEXTS, HTTP_CODES, STEPPER_STEPS, - NEW_PROJECT_STATUS + NEW_PROJECT_STATUS, } from "../constants/index.js"; import { config } from "../config/index.js"; import { getLogMessage, safePromise } from "../utils/index.js"; @@ -479,8 +479,8 @@ const updateDestinationStack = async (req: Request) => { ); if ( - project.status === NEW_PROJECT_STATUS[4] || - project.status === NEW_PROJECT_STATUS[5] || + project.status === NEW_PROJECT_STATUS[4] || + project.status === NEW_PROJECT_STATUS[5] || project.current_step < STEPPER_STEPS.DESTINATION_STACK ) { logger.error( @@ -531,7 +531,7 @@ const updateDestinationStack = async (req: Request) => { data.projects[projectIndex].destination_stack_id = stack_api_key; data.projects[projectIndex].current_step = STEPPER_STEPS.DESTINATION_STACK; - data.projects[projectIndex].status = NEW_PROJECT_STATUS[0]; + data.projects[projectIndex].status = NEW_PROJECT_STATUS[0]; data.projects[projectIndex].updated_at = new Date().toISOString(); }); @@ -590,7 +590,7 @@ const updateCurrentStep = async (req: Request) => { switch (project.current_step) { case STEPPER_STEPS.LEGACY_CMS: { - if (project.status !== NEW_PROJECT_STATUS[0] || !isStepCompleted) { + if (project.status !== NEW_PROJECT_STATUS[0] || !isStepCompleted) { logger.error( getLogMessage( srcFunc, diff --git a/api/src/utils/index.ts b/api/src/utils/index.ts index 297e6c986..40823eacc 100644 --- a/api/src/utils/index.ts +++ b/api/src/utils/index.ts @@ -1,4 +1,3 @@ - export const throwError = (message: string, statusCode: number) => { throw Object.assign(new Error(message), { statusCode }); }; @@ -26,4 +25,3 @@ export const getLogMessage = ( ...(error && { error }), }; }; - diff --git a/ui/src/components/ContentMapper/index.tsx b/ui/src/components/ContentMapper/index.tsx index 100c6bde3..cb6d47d74 100644 --- a/ui/src/components/ContentMapper/index.tsx +++ b/ui/src/components/ContentMapper/index.tsx @@ -224,6 +224,7 @@ const ContentMapper = () => { acc[item?.id] = true; return acc; }, {}); + setRowIds(selectedId); }, [tableData]); @@ -489,15 +490,37 @@ const ContentMapper = () => { }; // Function to handle selected fields - const handleSelectedEntries = (singleSelectedRowIds: any, selectedData: any) => { + const handleSelectedEntries = (singleSelectedRowIds: UidMap[], selectedData: FieldMapType[]) => { const selectedObj: any = {}; + singleSelectedRowIds.forEach((uid: any) => { selectedObj[uid] = true; }); + + const uncheckedElements = findUncheckedElement(selectedData, tableData); + uncheckedElements && validateArray(uncheckedElements) && uncheckedElements?.forEach((field) => { + if (field?.otherCmsType === "Group") { + const newEle = selectedData?.filter((entry) => entry?.uid?.startsWith(field?.uid + '.')) + + newEle && validateArray(newEle) && newEle.forEach((child) => { + selectedObj[child?.id || ''] = false; + selectedData?.splice(selectedData?.indexOf(child), 1); + }) + } + }) + setRowIds(selectedObj); setSelectedEntries(selectedData); + }; + // Function to find unchecked field + const findUncheckedElement = (selectedData: FieldMapType[], tableData: FieldMapType[]) => { + return tableData.filter((mainField: FieldMapType) => + !selectedData.some((selectedField:FieldMapType) => selectedField?.otherCmsField === mainField?.otherCmsField) + ); + } + // Method for change select value const handleValueChange = (value: FieldTypes, rowIndex: string) => { setisDropDownCHanged(true); @@ -1040,7 +1063,7 @@ const ContentMapper = () => { searchPlaceholder={searchPlaceholder} fetchTableData={fetchData} loadMoreItems={loadMoreItems} - tableHeight={485} + tableHeight={465} equalWidthColumns={true} columnSelector={false} initialRowSelectedData={tableData}