diff --git a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/MicroplanPreview.js b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/MicroplanPreview.js
index 992c1478994..0486d7df2e5 100644
--- a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/MicroplanPreview.js
+++ b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/MicroplanPreview.js
@@ -799,7 +799,7 @@ function filterObjects(arr1, arr2) {
// Iterate through the first array
arr1.forEach((obj1) => {
// Find the corresponding object in the second array
- let obj2 = arr2.find((item) => item.key === obj1.key);
+ let obj2 = _.cloneDeep(arr2.find((item) => item.key === obj1.key));
// If the object with the same key is found in the second array and their values are the same
if (obj2 && obj1.value !== obj2.value) {
diff --git a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/RuleEngine.js b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/RuleEngine.js
index e6343c6c721..a65694b13f6 100644
--- a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/RuleEngine.js
+++ b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/RuleEngine.js
@@ -6,6 +6,7 @@ import { ButtonType1, CloseButton, ModalHeading } from "../../components/CommonC
import { Modal } from "@egovernments/digit-ui-components";
import { tourSteps } from "../../configs/tourSteps";
import { useMyContext } from "../../utils/context";
+import { v4 as uuidv4 } from "uuid";
const page = "ruleEngine";
@@ -119,14 +120,14 @@ const RuleEngine = ({ campaignType = "SMC", microplanData, setMicroplanData, che
let temp;
setHypothesisAssumptionsList(hypothesisAssumptions);
setExampleOption(hypothesisAssumptions.length ? hypothesisAssumptions[0] : "");
-let outputs;
+ let outputs;
if (ruleConfigureOutput) temp = ruleConfigureOutput.find((item) => item.campaignType === campaignType);
if (temp && temp.data) {
let data = temp.data;
microplanData?.ruleEngine?.forEach((item) => {
data = data.filter((e) => e !== item?.output);
});
- outputs= data
+ outputs = data;
setOutputs(data);
}
@@ -135,7 +136,7 @@ let outputs;
if (UIConfiguration) temp = UIConfiguration.find((item) => item.name === "ruleConfigure");
if (temp && temp.ruleConfigureOperators) {
temp = temp.ruleConfigureOperators.map((item) => item.name);
- operator= temp
+ operator = temp;
setOperators(temp);
}
if (AutoFilledRuleConfigurationsList) setAutoFillData(AutoFilledRuleConfigurationsList);
@@ -159,8 +160,7 @@ let outputs;
setInputs,
setOutputs
);
- if(filteredRules)
- setRules(filteredRules);
+ if (filteredRules) setRules(filteredRules);
}, [state?.Schemas, state?.RuleConfigureOutput, state?.UIConfiguration, state?.AutoFilledRuleConfigurations]);
// // useEffect to set autofill data
@@ -302,10 +302,12 @@ const RuleEngineInformation = ({ t }) => {
// Function to add a new assumption
const addRulesHandler = (setRules) => {
+ let uuid = uuidv4();
setRules((previous) => [
...previous,
{
- id: previous.length ? previous[previous.length - 1].id + 1 : 0,
+ id: uuid,
+ // previous.length ? previous[previous.length - 1].id + 1 : 0,
output: "",
input: "",
operator: "",
@@ -670,7 +672,10 @@ const setAutoFillRules = (autofillData, rules, hypothesisAssumptionsList, output
!hypothesisAssumptionsList?.includes(item?.assumptionValue)
)
return;
- item["id"] = newRules.length;
+ if (!item["id"]) {
+ let uuid = uuidv4();
+ item["id"] = uuid;
+ }
newRules.push(item);
rulePlusInputs?.push(item?.output);
ruleOuputList?.push(item?.output);
@@ -694,14 +699,17 @@ const setRuleEngineDataFromSsn = (rules, hypothesisAssumptions) => {
let newRules = [];
let outputs = [];
rules.forEach((item, index) => {
- if (!hypothesisAssumptions?.includes(item?.assumptionValue)) return ;
- item["id"] = index;
+ if (!hypothesisAssumptions?.includes(item?.assumptionValue)) return;
+ if (!item["id"]) {
+ let uuid = uuidv4();
+ item["id"] = uuid;
+ }
newRules.push(item);
outputs.push(item.output);
});
// let filteredRules = [];
// newRules.forEach((item) => {
- // // if (!outputs?.includes(item?.input)) return;
+ // // if (!outputs?.includes(item?.input)) return;
// item["id"] = newRules.length;
// filteredRules.push(item);
// });
diff --git a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/SavedMicroplans.js b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/SavedMicroplans.js
index 5dd6149d12a..6e1b1434baf 100644
--- a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/SavedMicroplans.js
+++ b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/SavedMicroplans.js
@@ -143,7 +143,7 @@ const SavedMicroplans = () => {
const computedSession = await updateSessionUtils.computeSessionObject(row.original,state,additionalPropsForExcel)
Digit.SessionStorage.set("microplanData", computedSession);
setShowLoader(false)
- history.push(`/${window.contextPath}/employee/microplanning/create-microplan?id=${row?.original?.id}`);
+ history.push(`/${window.contextPath}/employee/microplanning/create-microplan?id=${row?.original?.executionPlanId}`);
} catch (error) {
console.error(error.message)
}
diff --git a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/Upload.js b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/Upload.js
index 230cb6ba844..4d2d2b0b077 100644
--- a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/Upload.js
+++ b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/pages/employee/Upload.js
@@ -1008,7 +1008,7 @@ const UploadSection = ({ item, selected, setSelectedSection }) => {
return (
diff --git a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/services/searchSavedPlans.js b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/services/searchSavedPlans.js
index 82b916a2517..18914b95338 100644
--- a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/services/searchSavedPlans.js
+++ b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/services/searchSavedPlans.js
@@ -35,6 +35,8 @@ const SearchSavedPlans = async (body) => {
});
const { PlanConfiguration } = responsePlan;
+ if(!PlanConfiguration || PlanConfiguration.length === 0) return [];
+
const executionPlanIds = PlanConfiguration?.map((row) => row?.executionPlanId)?.filter((item) => item);
const CampaignDetails = {
tenantId: Digit.ULBService.getCurrentTenantId(),
diff --git a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/index.js b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/index.js
index a167462541f..1e38ca97aab 100644
--- a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/index.js
+++ b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/index.js
@@ -159,7 +159,7 @@ const mapDataForApi = (data, Operators, microplanName, campaignId, status) => {
if (data && data.upload) {
Object.values(data?.upload).forEach((item) => {
if (item?.error) return;
- const data = { filestoreId: item.filestoreId, inputFileType: item.fileType, templateIdentifier: item.section };
+ const data = { filestoreId: item.filestoreId, inputFileType: item.fileType, templateIdentifier: item.section, id: item.fileId };
files.push(data);
});
Object.values(data?.upload).forEach((item) => {
@@ -179,12 +179,10 @@ const mapDataForApi = (data, Operators, microplanName, campaignId, status) => {
files,
assumptions: data?.hypothesis?.map((item) => {
let templist = JSON.parse(JSON.stringify(item));
- delete templist.id;
return templist;
}),
operations: data?.ruleEngine?.map((item) => {
const data = JSON.parse(JSON.stringify(item));
- delete data.id;
const operator = Operators.find((e) => e.name === data.operator);
if (operator && operator.code) data.operator = operator?.code;
return data;
@@ -194,7 +192,7 @@ const mapDataForApi = (data, Operators, microplanName, campaignId, status) => {
};
};
-const resourceMappingAndDataFilteringForExcelFiles = (schemaData, hierarchy, selectedFileType, fileDataToStore, t) => {
+const resourceMappingAndDataFilteringForExcelFiles = (schemaData, hierarchy, selectedFileType, fileDataToStore,t, translatedData = true) => {
let resourceMappingData = [];
let newFileData = {};
@@ -207,7 +205,7 @@ const resourceMappingAndDataFilteringForExcelFiles = (schemaData, hierarchy, sel
if (LOCALITY && hierarchy[hierarchy?.length - 1] !== LOCALITY) toChange = hierarchy[hierarchy?.length - 1];
const schemaKeys = Object.keys(schemaData.schema["Properties"]).concat(hierarchy);
schemaKeys.forEach((item) => {
- if (columnForMapping.has(t(item))) {
+ if ((translatedData && columnForMapping.has(t(item))) || (!translatedData && columnForMapping.has(item))) {
if (LOCALITY && toChange === item) {
toAddInResourceMapping = {
mappedFrom: t(item),
@@ -229,7 +227,7 @@ const resourceMappingAndDataFilteringForExcelFiles = (schemaData, hierarchy, sel
let toRemove = [];
if (value && value.length > 0) {
value[0].forEach((item, index) => {
- const mappedTo = resourceMappingData.find((e) => e.mappedFrom === item)?.mappedTo;
+ const mappedTo = resourceMappingData.find((e) => (translatedData && e.mappedFrom === item) || (!translatedData && e.mappedFrom === t(item)))?.mappedTo;
if (!mappedTo) {
toRemove.push(index);
return;
diff --git a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/updateSessionUtils.js b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/updateSessionUtils.js
index e0c9b0cb941..c6f271831f7 100644
--- a/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/updateSessionUtils.js
+++ b/micro-ui/web/micro-ui-internals/packages/modules/hcm-microplanning/src/utils/updateSessionUtils.js
@@ -142,16 +142,17 @@ export const updateSessionUtils = {
};
const handleGeoJson = (file, result, upload) => {
- const { inputFileType, templateIdentifier, filestoreId } = file || {};
-
+ const { inputFileType, templateIdentifier, filestoreId, id: fileId } = file || {};
upload[templateIdentifier] = {
id: templateIdentifier,
section: templateIdentifier,
fileName: templateIdentifier,
fileType: inputFileType,
file: {},
+ fileId: fileId,
+ filestoreId: filestoreId,
error: null,
- resourceMapping: row?.resourceMapping?.filter((resourse) => resourse.filestoreId === filestoreId),
+ resourceMapping: row?.resourceMapping?.filter((resourse) => resourse.filestoreId === filestoreId).map((item) => ({ ...item, filestoreId })),
data: {},
};
@@ -172,7 +173,7 @@ export const updateSessionUtils = {
};
const handleExcel = (file, result, upload) => {
- const { inputFileType, templateIdentifier, filestoreId } = file || {};
+ const { inputFileType, templateIdentifier, filestoreId, id: fileId } = file || {};
upload[templateIdentifier] = {
id: templateIdentifier,
@@ -180,18 +181,20 @@ export const updateSessionUtils = {
fileName: templateIdentifier,
fileType: inputFileType,
file: {},
+ fileId: fileId,
+ filestoreId: filestoreId,
error: null,
- resourceMapping: row?.resourceMapping?.filter((resourse) => resourse.filestoreId === filestoreId),
+ resourceMapping: row?.resourceMapping?.filter((resourse) => resourse.filestoreId === filestoreId).map((item) => ({ ...item, filestoreId })),
data: {},
};
- const schema = state?.Schemas?.filter((schema) => {
+ const schema = state?.Schemas?.find((schema) => {
if (schema.type === inputFileType && schema.section === templateIdentifier && schema.campaignType === "ITIN") {
return true;
} else {
return false;
}
- })?.[0];
+ });
if (!schema) {
console.error("Schema got undefined while handling excel at handleExcel");
}
@@ -203,10 +206,11 @@ export const updateSessionUtils = {
id: inputFileType,
},
result,
- additionalPropsForExcel.t
+ additionalPropsForExcel.t,
+ false
);
upload[templateIdentifier].data = resultAfterMapping?.tempFileDataToStore;
- upload[templateIdentifier].resourceMapping = resultAfterMapping?.tempResourceMappingData;
+ // upload[templateIdentifier].resourceMapping = resultAfterMapping?.tempResourceMappingData;
};
const fetchFiles = async () => {
@@ -216,54 +220,70 @@ export const updateSessionUtils = {
}
const promises = [];
+ let storedData = [];
files.forEach(({ filestoreId, inputFileType, templateIdentifier, id }) => {
- const promiseToAttach = axios
- .get("/filestore/v1/files/id", {
- responseType: "arraybuffer",
- headers: {
- "Content-Type": "application/json",
- Accept: ACCEPT_HEADERS[inputFileType],
- "auth-token": Digit.UserService.getUser()?.["access_token"],
- },
- params: {
- tenantId: Digit.ULBService.getCurrentTenantId(),
- fileStoreId: filestoreId,
- },
- })
- .then((res) => {
- if (inputFileType === EXCEL) {
- const file = new Blob([res.data], { type: ACCEPT_HEADERS[inputFileType] });
- return parseXlsxToJsonMultipleSheetsForSessionUtil(
- file,
- { header: 1 },
- {
+ debugger;
+ let fileData = {
+ filestoreId,
+ inputFileType,
+ templateIdentifier,
+ id,
+ };
+ let dataInSsn = Digit.SessionStorage.get("microplanData")?.upload?.[templateIdentifier];
+ if (dataInSsn && dataInSsn.filestoreId === filestoreId) {
+ storedData.push({ file: fileData, jsonData: dataInSsn?.data });
+ } else {
+ const promiseToAttach = axios
+ .get("/filestore/v1/files/id", {
+ responseType: "arraybuffer",
+ headers: {
+ "Content-Type": "application/json",
+ Accept: ACCEPT_HEADERS[inputFileType],
+ "auth-token": Digit.UserService.getUser()?.["access_token"],
+ },
+ params: {
+ tenantId: Digit.ULBService.getCurrentTenantId(),
+ fileStoreId: filestoreId,
+ },
+ })
+ .then((res) => {
+ if (inputFileType === EXCEL) {
+ const file = new Blob([res.data], { type: ACCEPT_HEADERS[inputFileType] });
+ return parseXlsxToJsonMultipleSheetsForSessionUtil(
+ file,
+ { header: 1 },
+ {
+ filestoreId,
+ inputFileType,
+ templateIdentifier,
+ id,
+ }
+ );
+ } else if (inputFileType === GEOJSON) {
+ return parseGeoJSONResponse(res.data, {
filestoreId,
inputFileType,
templateIdentifier,
id,
- }
- );
- } else if (inputFileType === GEOJSON) {
- return parseGeoJSONResponse(res.data, {
- filestoreId,
- inputFileType,
- templateIdentifier,
- id,
- });
- } else if (inputFileType === SHAPEFILE) {
- const geoJson = shpToGeoJSON(res.data, {
- filestoreId,
- inputFileType,
- templateIdentifier,
- id,
- });
- return geoJson;
- }
- });
- promises.push(promiseToAttach);
+ });
+ } else if (inputFileType === SHAPEFILE) {
+ const geoJson = shpToGeoJSON(res.data, {
+ filestoreId,
+ inputFileType,
+ templateIdentifier,
+ id,
+ });
+ return geoJson;
+ }
+ });
+ promises.push(promiseToAttach);
+ }
});
- const result = await Promise.all(promises);
+ const resolvedPromises = await Promise.all(promises);
+ let result = storedData;
+ if (resolvedPromises) result = [...storedData, ...resolvedPromises];
+ debugger;
return result;
};
const setMicroplanUpload = async (filesResponse) => {
diff --git a/micro-ui/web/microplan/package.json b/micro-ui/web/microplan/package.json
index 23fd2c4c11e..aa3105874be 100644
--- a/micro-ui/web/microplan/package.json
+++ b/micro-ui/web/microplan/package.json
@@ -15,9 +15,9 @@
"@egovernments/digit-ui-libraries": "1.8.1-beta.1",
"@egovernments/digit-ui-module-core": "1.8.1-beta.14",
"@egovernments/digit-ui-module-utilities": "1.0.1-beta.1",
- "@egovernments/digit-ui-react-components": "1.8.1-beta.2",
+ "@egovernments/digit-ui-react-components": "1.8.1-beta.20",
"@egovernments/digit-ui-module-hcmmicroplanning":"0.0.1",
- "@egovernments/digit-ui-components": "0.0.1-beta.17",
+ "@egovernments/digit-ui-components": "0.0.1-beta.20",
"babel-loader": "8.1.0",
"clean-webpack-plugin": "4.0.0",
"react": "17.0.2",
diff --git a/micro-ui/web/package.json b/micro-ui/web/package.json
index 8d49f858a18..3ae2e40b192 100644
--- a/micro-ui/web/package.json
+++ b/micro-ui/web/package.json
@@ -18,7 +18,7 @@
"@egovernments/digit-ui-module-workbench": "1.0.0-beta.6",
"@egovernments/digit-ui-module-core": "1.8.1-beta.14",
"@egovernments/digit-ui-module-hrms": "1.8.0-beta.2",
- "@egovernments/digit-ui-react-components": "1.8.0-beta.5",
+ "@egovernments/digit-ui-react-components": "1.8.1-beta.20",
"@egovernments/digit-ui-module-dss": "1.8.0-beta",
"@egovernments/digit-ui-module-common": "1.8.0-beta",
"@egovernments/digit-ui-module-utilities": "1.0.0-beta",