new appeal progress pattern
This commit is contained in:
@@ -6,6 +6,8 @@ import {
|
||||
getBasicPartSavedDetails,
|
||||
} from "../../actions";
|
||||
|
||||
import xpath from "xpath";
|
||||
|
||||
/*
|
||||
* Get the lookup collection by the appeal type entity
|
||||
* @param String formtype - string from appeal entity name
|
||||
@@ -164,3 +166,178 @@ export const getSearchDetailsPaged = (searchResultsObj) => {
|
||||
// origin: protocol + "//" + host,
|
||||
// };
|
||||
// };
|
||||
|
||||
export const getProgressObj = (
|
||||
formObjXML,
|
||||
titleList,
|
||||
mandatoryFieldsData,
|
||||
props
|
||||
) => {
|
||||
const parser = new DOMParser();
|
||||
const BuildFormObj = (formObjXML) => {
|
||||
var doc = parser.parseFromString(formObjXML, "text/xml");
|
||||
|
||||
var tabs = xpath.select("//form/tabs/tab[*]", doc);
|
||||
|
||||
const formObj = Object.keys(tabs).map((key, index) => {
|
||||
var sectionXML = xpath.select(
|
||||
"//tabs/tab[" +
|
||||
(index + 1) +
|
||||
"]//rows/row/*/control[not(@parentField)]/../..",
|
||||
doc
|
||||
);
|
||||
|
||||
return BuildRowObj(sectionXML, titleList[key].value);
|
||||
});
|
||||
|
||||
const progressObj = Object.keys(formObj).map((key, index) => {
|
||||
let fieldObj = formObj[key].fieldsrowObj;
|
||||
|
||||
let rowCount = 0;
|
||||
|
||||
!props.dirty &&
|
||||
typeof props.initialValues != "undefined" &&
|
||||
Object.keys(fieldObj).map((key, index) => {
|
||||
fieldObj[key].datafieldname in props.initialValues &&
|
||||
props.initialValues[fieldObj[key].datafieldname] !=
|
||||
null &&
|
||||
rowCount++;
|
||||
});
|
||||
props.dirty &&
|
||||
Object.keys(fieldObj).map((key, index) => {
|
||||
fieldObj[key].datafieldname in
|
||||
props.props.form["appealForm"].values &&
|
||||
props.props.form["appealForm"].values[
|
||||
fieldObj[key].datafieldname
|
||||
] != null &&
|
||||
rowCount++;
|
||||
});
|
||||
|
||||
return {
|
||||
"title": titleList[key].value,
|
||||
rowCount,
|
||||
"totalFields": formObj[key].fieldsTotal,
|
||||
"allFieldsComplete": rowCount == formObj[key].fieldsTotal,
|
||||
};
|
||||
});
|
||||
|
||||
return progressObj;
|
||||
};
|
||||
|
||||
const BuildRowObj = (rowXML, titleList) => {
|
||||
const rowObj = Object.keys(rowXML).map((key, index) => {
|
||||
var doc = parser.parseFromString(rowXML[key].outerHTML, "text/xml");
|
||||
if (_.isEmpty(rowXML[key].innerHTML)) {
|
||||
("");
|
||||
} else {
|
||||
var rows = xpath.select("//label/@description", doc);
|
||||
var fieldtype = xpath.select("//@classid", doc);
|
||||
var validation = xpath.select("//@validation", doc);
|
||||
var datafieldname = xpath.select("//@datafieldname", doc);
|
||||
var datafieldcontent = xpath.select("//@datafieldcontent", doc);
|
||||
var parentField = xpath.select("//@parentField", doc);
|
||||
|
||||
var parentFieldShowOnValue = xpath.select(
|
||||
"//@parentFieldShowOnValue",
|
||||
doc
|
||||
);
|
||||
|
||||
var requiredDocumentValue = xpath.select(
|
||||
"//@requiredDocumentValue",
|
||||
doc
|
||||
);
|
||||
|
||||
var requiredDocumentLabel = xpath.select(
|
||||
"//@requiredDocumentLabel",
|
||||
doc
|
||||
);
|
||||
|
||||
var hint = xpath.select("//label/@hint", doc);
|
||||
var dateStart = xpath.select("//@dateStart", doc);
|
||||
var dateEnd = xpath.select("//@dateEnd", doc);
|
||||
|
||||
hint = !_.isEmpty(hint) && hint[0].value;
|
||||
|
||||
validation = !_.isEmpty(validation) ? validation[0].value : [];
|
||||
|
||||
parentField = !_.isEmpty(parentField) && parentField[0].value;
|
||||
|
||||
parentFieldShowOnValue =
|
||||
!_.isEmpty(parentFieldShowOnValue) &&
|
||||
parentFieldShowOnValue[0].value;
|
||||
|
||||
datafieldcontent =
|
||||
!_.isEmpty(datafieldcontent) && datafieldcontent[0].value;
|
||||
|
||||
requiredDocumentValue =
|
||||
!_.isEmpty(requiredDocumentValue) &&
|
||||
requiredDocumentValue[0].value;
|
||||
|
||||
requiredDocumentLabel =
|
||||
!_.isEmpty(requiredDocumentLabel) &&
|
||||
requiredDocumentLabel[0].value;
|
||||
|
||||
dateStart = !_.isEmpty(dateStart) && dateStart[0].value;
|
||||
|
||||
dateEnd = !_.isEmpty(dateEnd) && dateEnd[0].value;
|
||||
|
||||
const isRequiredField = jsonpath.query(
|
||||
mandatoryFieldsData,
|
||||
"$..value[?(@.LogicalName=='" +
|
||||
datafieldname[0].value +
|
||||
"')]"
|
||||
);
|
||||
|
||||
if (datafieldname[0].value == "pinswg_fileUpload") {
|
||||
return {
|
||||
"fieldType": fieldtype[0].value,
|
||||
"label": rows[0].value,
|
||||
"datafieldname": datafieldname[0].value,
|
||||
"key": key,
|
||||
"picklistData": props.props.formData.pickListData,
|
||||
"mandatoryFieldsData": mandatoryFieldsData,
|
||||
};
|
||||
} else {
|
||||
if (typeof isRequiredField[0] != "undefined") {
|
||||
if (isRequiredField[0].RequiredLevel.Value != "None") {
|
||||
//console.log(datafieldname[0].value, validation);
|
||||
return {
|
||||
"fieldType": fieldtype[0].value,
|
||||
"label": rows[0].value,
|
||||
"datafieldname": datafieldname[0].value,
|
||||
"datafieldcontent": datafieldcontent,
|
||||
"validation": validation,
|
||||
};
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
rowObj = rowObj.filter(function (el) {
|
||||
return el != null;
|
||||
});
|
||||
|
||||
const filterUnwanted = (rowObj) => {
|
||||
const required = rowObj.filter((el) => {
|
||||
return !_.isEmpty(el.validation);
|
||||
});
|
||||
return required;
|
||||
};
|
||||
|
||||
return {
|
||||
"title": titleList,
|
||||
"validationFieldsTotal": filterUnwanted(rowObj).length,
|
||||
"fieldsTotal": rowObj.length,
|
||||
"fieldsrowObj": rowObj,
|
||||
};
|
||||
};
|
||||
|
||||
const progObj = BuildFormObj(formObjXML);
|
||||
//console.log(progObj);
|
||||
return progObj;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user