Merged PR 1305: uat fixes

uat fixes

Related work items: #12771, #12799
This commit is contained in:
Robert Bond
2024-11-26 09:30:56 +00:00
10 changed files with 99 additions and 27 deletions
+62 -8
View File
@@ -70,6 +70,7 @@ const RenderTextfield = ({
: 100
: 200
}
// pattern={custom.hasOwnProperty("pattern") && custom.pattern}
/>
</div>
</>
@@ -1303,10 +1304,20 @@ export function NumericField(props) {
formProps,
parentFieldShowOnValue,
parentField,
maxFieldLength,
} = props;
const required = (value) => {
return value || value == 0 ? undefined : "Is required";
};
const isNumber = (value) => {
const regex = /^\d*\.?\d{0,1}$/;
return regex.test(value) ? undefined : "Should be a number or decimal";
};
const maxLength = (max) => (value) =>
value && value.length > max
? `Must be ${max} characters or less`
: undefined;
//parentFieldShowOnValue
var showIfHasParentShowValue =
@@ -1350,7 +1361,7 @@ export function NumericField(props) {
name={props.name}
id={props.name}
type="number"
className="govuk-input govuk-input--width-20"
className="govuk-input govuk-input--width-20 wwwww"
spellCheck="false"
aria-describedby={name}
pattern="[0-9]*"
@@ -1360,6 +1371,22 @@ export function NumericField(props) {
component={RenderTextfield}
label={label}
normalize={(value) => parseInt(value)}
// name={props.name}
// id={props.name}
// // component="input"
// type="text"
// className="govuk-input govuk-input--width-20 wwww"
// aria-describedby={name}
// pattern="^\d*(\.\d{0,2})?$"
// validate={[
// required,
// isNumber,
// maxLength(props.maxFieldLength),
// ]}
// component={RenderTextfield}
// label={props.label}
// maxFieldLength={props.maxFieldLength}
/>
</div>
)}
@@ -1380,6 +1407,16 @@ export function DecimalField(props) {
} = props;
const required = (value) => (value ? undefined : "Is required");
const isNumber = (value) => {
const regex = /^\d*\.?\d{0,1}$/;
return regex.test(value) ? undefined : "Should be a number or decimal";
};
const maxLength = (max) => (value) =>
value && value.length > max
? `Must be ${max} characters or less`
: undefined;
//parentFieldShowOnValue
var showIfHasParentShowValue =
parentField != false &&
@@ -1427,12 +1464,17 @@ export function DecimalField(props) {
className="govuk-input govuk-input--width-10"
spellCheck="false"
aria-describedby={name}
pattern="[0-9]*"
pattern="^\d*(\.\d{0,2})?$"
inputMode="numeric"
parse={Number}
validate={eval(validation)}
validate={[
required,
isNumber,
maxLength(props.maxFieldLength),
]}
component={RenderTextfield}
label={props.label}
maxFieldLength={props.maxFieldLength}
/>
</div>
)}
@@ -1858,33 +1900,43 @@ const renderField = ({ input, label, type, meta: { touched, error } }) => (
const RenderSubFields = ({ fields }) => {
let { t } = useTranslation();
let subTitle = fields.name.split("pinswg_")[1];
return (
<ul>
<div>
{fields.map((member, index) => (
<div key={index}>
<h4>Tenant #{index + 1}</h4>
<h4>
{subTitle == "owners" ? "Owners" : "Tenant"} #
{index + 1}
</h4>
<div className="fieldArrayContainer">
<Field
id={`${member}.${fields.name}`}
name={`${member}.${fields.name}`}
type="text"
component={RenderTextfield}
label="Tenant Name"
label={
subTitle == "owners"
? "Owners name"
: "Tenant name"
}
className="govuk-input govuk-input--width-10"
/>
<Field
name={`${member}.dateserved`}
type="text"
component={RenderDatePicker}
label="Date served notice"
label="Date served "
dateStart={"-6m"}
dateEnd={"0"}
className="govuk-input govuk-input--width-10"
/>
<button
type="button"
title="Remove tenant"
title="Remove"
onClick={() => fields.remove(index)}
className="govuk-button fieldArrayDelete"
>
@@ -1899,7 +1951,9 @@ const RenderSubFields = ({ fields }) => {
className="govuk-link fieldArrayLink"
onClick={() => fields.push({})}
>
{t("newappeal:new-appeal-add-tenant-label")}
{subTitle == "owners"
? "Add Owners"
: t("newappeal:new-appeal-add-tenant-label")}
</button>
</ul>
);
@@ -51,7 +51,9 @@ const AwaitingSubmissionFromBlob = (props) => {
let mergedArray = showTopThreeArr.map((item1) => {
let item2 = showTopThreeArrDets.find(
(item) => item.pinswg_name === item1.ticketnumber
(item) =>
item.pinswg_name === item1.ticketnumber ||
item.appealComplete === item1.ticketnumber
);
return { ...item1, ...item2 };
});
@@ -128,7 +130,7 @@ const AwaitingSubmissionFromBlob = (props) => {
.pinswg_appealcasetype +
"&casereference=" +
showTopThreeArr[key]
.pinswg_name +
.ticketnumber +
"&inid=" +
showTopThreeArr[key].incidentid
}
+17 -1
View File
@@ -48,6 +48,7 @@ const RenderTextfield = ({
id={id}
type={type}
disabled={disabled ? true : false}
maxLength={custom.maxFieldLength || ""}
/>
</div>
</>
@@ -93,6 +94,7 @@ const RenderMultiline = ({
{...input}
rows={rows}
className={className}
maxLength="2000"
></textarea>
</div>
</>
@@ -526,7 +528,7 @@ let AboutYou = (props) => {
className="govuk-input govuk-input--width-20"
validate={[required]}
label={t("newappeal:about-you-on-behalf-label")}
maxFieldLength="25"
maxFieldLength="200"
/>
<div className="govuk-form-group">
<details className="govuk-details" data-module="govuk-details">
@@ -566,6 +568,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-appellant-contact-details-firstname-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_appellantlastname"}
@@ -577,6 +580,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-appellant-contact-details-lastname-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_appellantaddress"}
@@ -589,6 +593,7 @@ let AboutYou = (props) => {
"newappeal:about-you-appellant-contact-details-address-label"
)}
rows={4}
maxFieldLength="2000"
/>
<Field
name={"pinswg_appellantemailaddress"}
@@ -600,6 +605,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-appellant-contact-details-email-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_appellantphonenumber"}
@@ -660,6 +666,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-appellant-contact-details-firstname-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_appellantlastname"}
@@ -671,6 +678,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-appellant-contact-details-lastname-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_appellantaddress"}
@@ -683,6 +691,7 @@ let AboutYou = (props) => {
"newappeal:about-you-appellant-contact-details-address-label"
)}
rows={4}
maxFieldLength="2000"
/>
<Field
name={"pinswg_appellantemailaddress"}
@@ -694,6 +703,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-appellant-contact-details-email-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_appellantphonenumber"}
@@ -719,6 +729,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-agent-contact-details-companyname-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_agentreference"}
@@ -728,6 +739,7 @@ let AboutYou = (props) => {
className="govuk-input govuk-input--width-20"
// validate={[required]}
label={t("newappeal:about-you-agent-reference-label")}
maxFieldLength="200"
/>
<Field
name={"pinswg_agentfirstname"}
@@ -739,6 +751,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-agent-contact-details-firstname-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_agentlastname"}
@@ -750,6 +763,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-agent-contact-details-lastname-label"
)}
maxFieldLength="200"
/>{" "}
<Field
name={"pinswg_agentaddress"}
@@ -762,6 +776,7 @@ let AboutYou = (props) => {
"newappeal:about-you-agent-contact-details-address-label"
)}
rows={4}
maxFieldLength="2000"
/>
<Field
name={"pinswg_agentemailaddress"}
@@ -773,6 +788,7 @@ let AboutYou = (props) => {
label={t(
"newappeal:about-you-agent-contact-details-email-label"
)}
maxFieldLength="200"
/>
<Field
name={"pinswg_agentphonenumber"}
+1 -1
View File
@@ -123,7 +123,7 @@ let CompleteAppeal = (props) => {
{t("newappeal:new-appeal-complete-paragraph-2")}
</p>
<p className="govuk-body">
{t("newappeal:new-appeal-complete-paragraph-3")}::
{t("newappeal:new-appeal-complete-paragraph-3")}:
<Link href={"mailto:" + t("home:login-contact-email")}>
{t("home:login-contact-email")}
</Link>
@@ -108,9 +108,9 @@ export const planningappeals78_pdf = ({ docProps, pickListData }) => {
}
let values = docProps;
let datestr = values.pinswg_name.split("-");
let signedDate = datestr[2] + "/" + datestr[1] + "/" + datestr[0];
let appealTypeValue = getFormCollectionByID(values.pinswg_appealcasetype);
// let datestr = values.pinswg_name.split("-");
// let signedDate = datestr[2] + "/" + datestr[1] + "/" + datestr[0];
// let appealTypeValue = getFormCollectionByID(values.pinswg_appealcasetype);
var path = require("path");
const configDirectory = path.resolve(process.cwd(), "data/formsxml");
+9 -1
View File
@@ -144,6 +144,14 @@
</labels>
<control validation="[required]" id="pinswg_ownershipcertificate" classid="{07FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED}" datafieldcontent="[846040001|newappeal:new-appeal-ownership-option-A,846040002|newappeal:new-appeal-ownership-option-B,846040003|newappeal:new-appeal-ownership-option-CD]" datafieldname="pinswg_ownershipcertificate" requiredDocumentValue="Yes" requiredDocumentLabel="Relevant Ownership certificate" disabled="false" />
</row>
<!--
<row>
<labels>
<label description="Owners" />
</labels>
<control id="pinswg_owners" parentField="pinswg_ownershipcertificate" parentFieldShowOnValue="846040002" classid="{0273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_owners" disabled="false" />
</row>
-->
<row>
<labels>
<label description="Agricultural holding" hint="newappeal:new-appeal-agricultural-hint" />
@@ -154,7 +162,7 @@
<labels>
<label description="Tenants name" />
</labels>
<control id="pinswg_agriculturaltenant" parentField="pinswg_agriculturalholding" parentFieldShowOnValue="846040002" classid="{0273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_agriculturaltenantname" disabled="false" />
<control id="pinswg_agriculturaltenant" parentField="pinswg_agriculturalholding" parentFieldShowOnValue="846040000" classid="{0273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_agriculturaltenantname" disabled="false" />
</row>
</rows>
</section>
+1 -1
View File
@@ -20,7 +20,7 @@
"hascas-confirmation-hint": "This appeal route is only applicable if your application relates the refusal of planning permission, or the refusal of an application to vary or remove a condition attached to a previous permision. All other applications will be submitted via a Section 78 Planning Appeal",
"about-you-page-title": "About you",
"about-you-hint": "If you are making more than one appeal for the site then please submit via email",
"about-you-on-behalf-label": "Appellant or organisations name (if applicable):",
"about-you-on-behalf-label": "Appellant or organisation's name (if applicable):",
"about-you-who-can-appeal-label": "Who can appeal?",
"about-you-who-can-appeal-paragraph": "Only those named as an applicant on the original application form can submit an appeal. If you are submitting an appeal on behalf of a company, state the name of the company you are representing",
"about-you-who-are-you-label": "Are you the appellant or an agent acting on behalf of the appellant?",
@@ -22,14 +22,6 @@ const ApiResponse = (req, res) => {
"846,040,000",
"attributevalue": 846040000,
},
{
"value": "Householder and Minor Commercial Appeals - HAS/CAS",
"stringmapid": "585d46a7-9138-ec11-aacb-00224800be9c",
"organizationid": "01191a4d-105f-eb11-aaba-00224800be9c",
"attributevalue@OData.Community.Display.V1.FormattedValue":
"846,040,004",
"attributevalue": 846040004,
},
],
});
};
@@ -35,7 +35,7 @@ ApiProxy.get(async (req, res) => {
});
Object.assign(blobProgress, {
"appealComplete": blobProgress.pinswg_name,
"appealComplete": tempCaseRef,
});
delete blobProgress["pinswg_name"];
+1 -1
View File
@@ -198,7 +198,7 @@ export default async function handler(req, res) {
await createAppealPDFBlob(
renderedPDF,
containerID,
blobProgress.pinswg_name
blobProgress.pinswg_name || blobProgress.caseObj.ticketnumber
).then((data) => {
console.log(
"///////////////////////////////////\nfile created: " +