From dc71d16a1f4e9ae23e1890a2e5d692570ef89f8d Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Mon, 21 Oct 2024 15:39:28 +0100 Subject: [PATCH] when click change linik values persisted --- actions/azurestorage.js | 8 +- .../representation/representationElements.js | 4 +- components/elements/index.js | 4 +- .../myportal/awaitingsubmissionfromblob.js | 29 +++-- components/newappeal/buildcheckrow.js | 13 ++- components/newappeal/buildchecksection.js | 83 +++++++++----- components/newappeal/buildprogress.js | 47 ++++++++ components/newappeal/buildsection.js | 108 ++++++++++-------- package.json | 4 +- 9 files changed, 199 insertions(+), 101 deletions(-) diff --git a/actions/azurestorage.js b/actions/azurestorage.js index eab8146f..5af1760f 100644 --- a/actions/azurestorage.js +++ b/actions/azurestorage.js @@ -501,10 +501,10 @@ export const deleteBlobCase = async (containerName, blobName) => { } //containerClient.deleteBlob(blobName); - console.log(`deleted blob ${blobName}`); - for await (const blob of containerClient.listBlobsFlat()) { - console.log(" ------ :", blob.name); - } + // console.log(`deleted blob ${blobName}`); + // for await (const blob of containerClient.listBlobsFlat()) { + // console.log(" ------ :", blob.name); + // } return { "deleted": blobName }; }; diff --git a/components/case/representation/representationElements.js b/components/case/representation/representationElements.js index adc14a0f..4a5cb881 100644 --- a/components/case/representation/representationElements.js +++ b/components/case/representation/representationElements.js @@ -6,9 +6,9 @@ import React, { useMemo, useState } from "react"; import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import Dropzone from "react-dropzone"; -import "react-quill/dist/quill.snow.css"; +import "react-quill-new/dist/quill.snow.css"; import { Field } from "redux-form"; -const ReactQuill = dynamic(() => import("react-quill"), { ssr: false }); +const ReactQuill = dynamic(() => import("react-quill-new"), { ssr: false }); import { addDays, diff --git a/components/elements/index.js b/components/elements/index.js index acfb19a0..a7748b4c 100644 --- a/components/elements/index.js +++ b/components/elements/index.js @@ -24,8 +24,8 @@ import { subMonths, subYears, } from "date-fns"; -import "react-quill/dist/quill.snow.css"; -const ReactQuill = dynamic(() => import("react-quill"), { ssr: false }); +import "react-quill-new/dist/quill.snow.css"; +const ReactQuill = dynamic(() => import("react-quill-new"), { ssr: false }); const RenderTextfield = ({ id, diff --git a/components/myportal/awaitingsubmissionfromblob.js b/components/myportal/awaitingsubmissionfromblob.js index 53f15827..78875b50 100644 --- a/components/myportal/awaitingsubmissionfromblob.js +++ b/components/myportal/awaitingsubmissionfromblob.js @@ -26,20 +26,31 @@ const AwaitingSubmissionFromBlob = (props) => { const { locale } = router; const { setCurrentView } = props; + function sortByISODate(arr, dateKey) { + return arr.sort((a, b) => new Date(b[dateKey]) - new Date(a[dateKey])); + } + + function sortByField(arr, field, ascending = true) { + return arr.sort((a, b) => { + if (a[field] < b[field]) return ascending ? -1 : 1; + if (a[field] > b[field]) return ascending ? 1 : -1; + return 0; // Equal + }); + } + function filterByExistingFieldValue(arr, filterArr, field) { + const filterValues = filterArr.map((item) => item[field]); + return arr.filter((item) => !filterValues.includes(item[field])); + } + let topthreeRowArr = []; let showTopThreeArr = props.awaitingSubmissionFromBlob.value; let showTopThreeArrDets = props.awaitingSubmissionFromBlob.case; - Object.keys(showTopThreeArrDets).map((key, index) => { - let createdDate = showTopThreeArrDets[key].createdon; - showTopThreeArr[key].createdDate = createdDate; - }); + showTopThreeArr = sortByField(showTopThreeArr, "pinswg_name"); + showTopThreeArrDets = sortByField(showTopThreeArrDets, "ticketnumber"); - showTopThreeArr.sort(function compare(a, b) { - var dateA = new Date(a.createdDate); - var dateB = new Date(b.createdDate); - return dateB - dateA; - }); + showTopThreeArr = sortByISODate(showTopThreeArr, "createdDate"); + showTopThreeArrDets = sortByISODate(showTopThreeArrDets, "createdon"); const raisedDate = (datePart) => { var dateObj = new Date(datePart); diff --git a/components/newappeal/buildcheckrow.js b/components/newappeal/buildcheckrow.js index e65c1d89..29d8c515 100644 --- a/components/newappeal/buildcheckrow.js +++ b/components/newappeal/buildcheckrow.js @@ -23,6 +23,7 @@ let BuildCheckRow = (props) => { sectionCount, onSubmit, updateCurrentSection, + setCurrentSection, mandatoryFieldsData, } = props; @@ -161,20 +162,19 @@ let BuildCheckRow = (props) => { ) : fieldtype[0].value == "{16D63FD6-119B-4353-BDCA-18358721C3FE}" - ? (console.log( + ? console.log( props.props.form[ "appealForm" ].values[ datafieldname[0].value ] - ), - (
sdfsd eeefsdfs
)) + ) : fieldtype[0].value == "{0273EDBD-AC1D-40d3-9FB2-095C621B552D}" ? props.props.form[ "appealForm" ].values[ - datafieldname[0].value + datafieldname[0].value[0] ].map((tenant, index) => { return (
{ className="govuk-link" href="#" onClick={() => { - updateCurrentSection( + setCurrentSection( whichSection ); }} @@ -248,6 +248,9 @@ let BuildCheckRow = (props) => { const mapDispatchToProps = (dispatch) => { return { + setCurrentSection: (currentSection) => { + dispatch(setCurrentSection(currentSection)); + }, updateCurrentSection: (whichSection) => { dispatch(setCurrentSection(whichSection)); dispatch(setFormComplete("true")); diff --git a/components/newappeal/buildchecksection.js b/components/newappeal/buildchecksection.js index 29f0f4ce..0c0816eb 100644 --- a/components/newappeal/buildchecksection.js +++ b/components/newappeal/buildchecksection.js @@ -4,7 +4,7 @@ import Link from "next/link"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import { connect } from "react-redux"; -import { formValueSelector } from "redux-form"; +import { formValueSelector, Field, reduxForm } from "redux-form"; import xpath from "xpath"; import fieldLookup from "../../data/crmfieldlookuptranslations.json"; import { @@ -55,11 +55,11 @@ let BuildCheckSection = (props) => { const handleParam = (setValue) => (e) => setValue(e.target.value); - const basicSearch = (event) => { - event.preventDefault(); - console.log(query); - // /searchresults - }; + // const basicSearch = (event) => { + // event.preventDefault(); + // //console.log(query); + // // /searchresults + // }; const onHandleSubmit = (values) => { //alert(1); @@ -71,32 +71,37 @@ let BuildCheckSection = (props) => { let buildAppealFilesArray = []; //console.log("attached docs: - ", buildAppealFilesArray); + buildAppealFilesArray = props.props.form.appealForm.values.filesList || []; - // let filesUploadObj = Object.keys(props.props.form.appealForm.values) - // .filter(function (k) { - // return k.indexOf("pinswg_fileUpload") == 0; - // }) - // .reduce(function (newData, k) { - // newData[k] = props.props.form.appealForm.values[k]; - // return newData; - // }, {}); + let filesUploadObj = props.appealType.fileList.value[0]; - // for (let key in filesUploadObj) { - // for (let j in filesUploadObj[key]) { - // typeof filesUploadObj[key][j].name != "undefined" && - // buildAppealFilesArray.push({ - // "name": filesUploadObj[key][j].name, - // "size": filesUploadObj[key][j].size, - // }); - // } - // } - - buildAppealFilesArray = props.props.form.appealForm.values.filesList; + for (let key in filesUploadObj) { + typeof filesUploadObj[key].name != "undefined" && + buildAppealFilesArray.push({ + "name": filesUploadObj[key].name, + "size": filesUploadObj[key].contentLength, + }); + } buildAppealFilesArray.filter(function (item, idx) { return item.name; }); - console.log(buildAppealFilesArray); + //console.log(buildAppealFilesArray); + + function removeDuplicates(arr, key) { + const seen = new Set(); + return arr.filter((item) => { + const value = item[key]; + if (seen.has(value)) { + return false; // Duplicate found + } else { + seen.add(value); // Add value to the set + return true; // Keep the item + } + }); + } + + buildAppealFilesArray = removeDuplicates(buildAppealFilesArray, "name"); let pdfObj = props.props.form.appealForm.values; @@ -124,7 +129,7 @@ let BuildCheckSection = (props) => { const finaliseAppeal = async () => { setFinaliseAppealProcess(true); - console.log("finalising appeal:"); + //console.log("finalising appeal:"); await generateAppealPDF( pdfObj, props.props.accountDetails.containerID, @@ -141,7 +146,7 @@ let BuildCheckSection = (props) => { ); }) .then(() => { - console.log("have sent complete message :"); + //console.log("have sent complete message :"); setCurrentSection(9999); }); }; @@ -208,7 +213,7 @@ let BuildCheckSection = (props) => { className="govuk-link" href="#" onClick={() => { - updateCurrentSection( + setCurrentSection( sectionCount ); }} @@ -300,6 +305,15 @@ let BuildCheckSection = (props) => { > {t("newappeal:submit-appeal-button")} + + setCurrentSection(sectionCount - 1) + } + > + {t("common:back-link")} +
)} @@ -338,4 +352,13 @@ const mapDispatchToProps = (dispatch) => { const selector = formValueSelector("appealForm"); // <-- same as form name -export default connect(mapStateToProps, mapDispatchToProps)(BuildCheckSection); +export default connect( + mapStateToProps, + mapDispatchToProps +)( + reduxForm({ + form: "appealForm", + destroyOnUnmount: false, + enableReinitialize: true, // this is needed!! + })(BuildCheckSection) +); diff --git a/components/newappeal/buildprogress.js b/components/newappeal/buildprogress.js index 0318d7f5..ff2a525d 100644 --- a/components/newappeal/buildprogress.js +++ b/components/newappeal/buildprogress.js @@ -126,6 +126,53 @@ const BuildProgress = (props) => { ))} + {/*
  • +
    +

    + + + + + Step + {" "} + {progObj.length + 1} + + + + + + + { + gotoSection(progObj.length + 1); + }} + className="app-step-nav__button app-step-nav__button--title js-step-title-button" + aria-expanded="false" + aria-controls={ + "step-panel-confirmation" + } + > + + Confirmation + + + +

    +
    +
  • */} diff --git a/components/newappeal/buildsection.js b/components/newappeal/buildsection.js index 7da6aaaf..3a06da3b 100644 --- a/components/newappeal/buildsection.js +++ b/components/newappeal/buildsection.js @@ -99,10 +99,10 @@ let BuildSection = (props) => { //console.log(fileListObj); - console.log( - "\n////////////////////////\n upload files:", - props.props.accountDetails.containerID - ); + // console.log( + // "\n////////////////////////\n upload files:", + // props.props.accountDetails.containerID + // ); var dataObj = values; @@ -130,7 +130,7 @@ let BuildSection = (props) => { let incidentId = props.appealType.caseReference.incidentid; let updateBody = values || {}; let buildAppealFilesArray = []; - console.log("attached docs: - ", buildAppealFilesArray); + //console.log("attached docs: - ", buildAppealFilesArray); let filesUploadObj = Object.keys(values) .filter(function (k) { @@ -141,7 +141,7 @@ let BuildSection = (props) => { return newData; }, {}); - console.log(filesUploadObj); + //console.log(filesUploadObj); for (let key in filesUploadObj) { for (let j in filesUploadObj[key]) { @@ -167,14 +167,14 @@ let BuildSection = (props) => { setSavingStatus(useSaveStatus); uploadAppealFiles(values); - console.log( - "\n////////////////////////\n appeal pdf payload", - values, - props.props.accountDetails.containerID, - props.appealType.caseReference.ticketnumber, - props.appealType, - "\n////////////////////////\n" - ); + // console.log( + // "\n////////////////////////\n appeal pdf payload", + // values, + // props.props.accountDetails.containerID, + // props.appealType.caseReference.ticketnumber, + // props.appealType, + // "\n////////////////////////\n" + // ); // let pdfObj = values; @@ -251,22 +251,22 @@ let BuildSection = (props) => { "linkExpiry": 10 * 60, }; - console.log( - "/////////////////////////////////", - "returnLink:", - props.props.url + - (router.locale != "en" ? "/cy/fymhorth/" : "/myportal/") + - appTypeCollection.UrlName + - "?lpa=" + - props.appealType.appealLPA + - "&apt=" + - appTypeCollection.appealTypeID + - "&casereference=" + - props.appealType.caseReference.ticketnumber + - "&inid=" + - props.appealType.caseReference.incidentid, - "/////////////////////////////////" - ); + // console.log( + // "/////////////////////////////////", + // "returnLink:", + // props.props.url + + // (router.locale != "en" ? "/cy/fymhorth/" : "/myportal/") + + // appTypeCollection.UrlName + + // "?lpa=" + + // props.appealType.appealLPA + + // "&apt=" + + // appTypeCollection.appealTypeID + + // "&casereference=" + + // props.appealType.caseReference.ticketnumber + + // "&inid=" + + // props.appealType.caseReference.incidentid, + // "/////////////////////////////////" + // ); sendSavedEmail == true && sendEmail( @@ -297,7 +297,7 @@ let BuildSection = (props) => { return newData; }, {}); - console.log(filesUploadObj); + //console.log(filesUploadObj); for (let key in filesUploadObj) { for (let j in filesUploadObj[key]) { @@ -308,13 +308,13 @@ let BuildSection = (props) => { } } - console.log(buildAppealFilesArray); + //console.log(buildAppealFilesArray); setFilesForAppeal(buildAppealFilesArray); // Object.assign(values, { "filesList": buildAppealFilesArray }); delete valuesObj["_pinswg_appellant_value"]; - console.log("has errors:", props.invalid); + //console.log("has errors:", props.invalid); props.invalid == false && updateCaseProgress(valuesObj, false, false); setCurrentSection(currentSection + 1); @@ -467,16 +467,16 @@ let BuildSection = (props) => { props.props.form[props.form] .values || {}; - console.log( - "valuesobj:", - valuesObj - ); + // console.log( + // "valuesobj:", + // valuesObj + // ); delete valuesObj[ "_pinswg_appellant_value" ]; - console.log("on save:", valuesObj); + // console.log("on save:", valuesObj); updateCaseProgress( valuesObj, true, @@ -487,6 +487,13 @@ let BuildSection = (props) => { {t("common:save-exit-button")} )} + {/* + setCurrentSection(sectionCount + 1) + } + > + goto check + */} ) : ( "" @@ -622,15 +629,22 @@ let BuildSection = (props) => { ); }; -const mapStateToProps = (state) => { - return { - search: state.search, - searchResultsObj: state.searchResultsObj, - formData: state.formData, - appealType: state.appealType, - initialValues: state.appealType.caseReference.caseDetails, - //form: state.form, - }; +const mapStateToProps = (state, ownProps) => { + return ownProps.props.hasOwnProperty("initialValues") + ? { + search: state.search, + searchResultsObj: state.searchResultsObj, + formData: state.formData, + appealType: state.appealType, + initialValues: state.appealType.caseReference.caseDetails, + } + : { + search: state.search, + searchResultsObj: state.searchResultsObj, + formData: state.formData, + appealType: state.appealType, + //form: state.form, + }; }; const mapDispatchToProps = (dispatch) => { diff --git a/package.json b/package.json index 71bbce3e..5dbe6827 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "react-leaflet": "^4.2.1", "react-pdf": "^7.6.0", "react-pdf-html": "^1.1.18", - "react-quill": "^2.0.0", + "react-quill-new": "^3.3.3", "react-redux": "^7.2.6", "redux": "^4.2.1", "redux-form": "^8.3.10", @@ -97,4 +97,4 @@ "eslint-plugin-jsdoc": "^48.2.3", "prisma": "^5.0.0" } -} +} \ No newline at end of file