196 lines
7.9 KiB
JavaScript
196 lines
7.9 KiB
JavaScript
import _ from "lodash";
|
|
import useTranslation from "next-translate/useTranslation";
|
|
import { useRouter } from "next/router";
|
|
import xpath from "xpath";
|
|
import BuildField from "./buildfield";
|
|
|
|
export default function BuildRow(props) {
|
|
let { t } = useTranslation();
|
|
|
|
const router = useRouter();
|
|
const { locale } = router;
|
|
|
|
const {
|
|
rowXML,
|
|
whichSection,
|
|
sectionCount,
|
|
onSubmit,
|
|
mandatoryFieldsData,
|
|
setUploadCount,
|
|
uploadCount,
|
|
setFileCount,
|
|
completedUploadFilesCount,
|
|
setCompletedUploadFilesCount,
|
|
} = props;
|
|
|
|
const parser = new DOMParser();
|
|
|
|
return (
|
|
<div className="govuk-grid-column-full">
|
|
{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 maxFieldLength = xpath.select("//@maxFieldLength", doc);
|
|
var maxSubField = xpath.select("//@maxsubfield", 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 documentTypeCode = xpath.select(
|
|
"//@ishareDocumentCode",
|
|
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
|
|
: [];
|
|
|
|
maxFieldLength =
|
|
!_.isEmpty(maxFieldLength) && maxFieldLength[0].value;
|
|
|
|
maxSubField =
|
|
!_.isEmpty(maxSubField) && maxSubField[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;
|
|
|
|
documentTypeCode =
|
|
!_.isEmpty(documentTypeCode) &&
|
|
documentTypeCode[0].value;
|
|
|
|
dateStart = !_.isEmpty(dateStart) && dateStart[0].value;
|
|
|
|
dateEnd = !_.isEmpty(dateEnd) && dateEnd[0].value;
|
|
|
|
//const isRequiredField = jsonpath({path:
|
|
// "$..value[?(@ && @.LogicalName=='" +
|
|
// datafieldname[0].value +
|
|
// "')]",
|
|
// mandatoryFieldsData
|
|
// );
|
|
|
|
//console.log("build row datafieldname[0]", datafieldname[0]);
|
|
|
|
if (datafieldname[0].value == "pinswg_fileUpload") {
|
|
return (
|
|
<BuildField
|
|
fieldType={fieldtype[0].value}
|
|
label={rows[0].value}
|
|
datafieldname={datafieldname[0].value}
|
|
key={key}
|
|
props={props}
|
|
picklistData={
|
|
props.props.props.formData.pickListData
|
|
}
|
|
mandatoryFieldsData={mandatoryFieldsData}
|
|
documentTypeCode={documentTypeCode}
|
|
setFileCount={setFileCount}
|
|
setUploadCount={setUploadCount}
|
|
uploadCount={uploadCount}
|
|
/>
|
|
);
|
|
} else {
|
|
//console.log(
|
|
// datafieldname[0].value,
|
|
// isRequiredField[0].RequiredLevel.Value
|
|
// );
|
|
// if (typeof isRequiredField[0] != "undefined") {
|
|
// if (
|
|
// isRequiredField[0].RequiredLevel.Value != "None"
|
|
// ) {
|
|
//console.log(datafieldname[0].value, validation);
|
|
return (
|
|
<BuildField
|
|
fieldType={fieldtype[0].value}
|
|
label={rows[0].value}
|
|
datafieldname={datafieldname[0].value}
|
|
datafieldcontent={datafieldcontent}
|
|
parentField={parentField}
|
|
parentFieldShowOnValue={parentFieldShowOnValue}
|
|
key={key}
|
|
props={props}
|
|
picklistData={
|
|
props.props.props.formData.pickListData
|
|
}
|
|
mandatoryFieldsData={mandatoryFieldsData}
|
|
hint={hint}
|
|
requiredDocumentLabel={requiredDocumentLabel}
|
|
requiredDocumentValue={requiredDocumentValue}
|
|
validation={validation}
|
|
maxFieldLength={maxFieldLength}
|
|
dateStart={dateStart}
|
|
dateEnd={dateEnd}
|
|
setDocumentsList={props.props.setDocumentsList}
|
|
documentList={
|
|
props.props.appealType.documentList
|
|
}
|
|
documentTypeCode={documentTypeCode}
|
|
setFilesForAppeal={
|
|
props.props.setFilesForAppeal
|
|
}
|
|
maxSubField={maxSubField}
|
|
setFileCount={setFileCount}
|
|
setUploadCount={setUploadCount}
|
|
/>
|
|
);
|
|
// } else {
|
|
// return null;
|
|
// }
|
|
// } else {
|
|
// return null;
|
|
// }
|
|
}
|
|
}
|
|
})}
|
|
</div>
|
|
);
|
|
}
|