pagination for documents seo head meta refactor

This commit is contained in:
2021-10-22 13:23:38 +01:00
parent c388aec21f
commit 346cefd1bb
31 changed files with 1478 additions and 533 deletions
+251 -117
View File
@@ -5,12 +5,16 @@ import jsonpath from "jsonpath";
import { useState, useEffect, useRef } from "react";
import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
import transLookup from "../../data/lookuptranslations.json";
import PaginationControl from "./pagination";
import LoadingOverlay from "react-loading-overlay";
import {
getBasicSearch,
getBasicSearchDetails,
getSearchDocumentDetails1,
getSearchDocumentHistory1,
getSearchDocumentHistory1Paged,
getSearchDocumentDetails1Paged,
getSASToken,
} from "../../actions";
@@ -45,123 +49,141 @@ const DocumentDetails = (props) => {
//console.log(documentDetailsArr);
documentDetailsArr = documentDetailsArr.value;
return (
<dl className="documentList govuk-summary-list govuk-!-margin-bottom-9 results">
<div className="govuk-summary-list__row results-headings">
<dd className="govuk-summary-list__key govuk-!-font-size-16 ">
{t("case:documents-name-label")}
</dd>
<dd className="govuk-summary-list__key govuk-!-font-size-16">
{t("case:documents-doc-type-label")}
</dd>
<dd className="govuk-summary-list__key govuk-!-font-size-16">
{t("case:documents-date-published-label")}
</dd>
{/* <dd className="govuk-summary-list__key govuk-!-font-size-16">
<>
<p>
{t("case:documents-count-label-1")}{" "}
{documentDetailsObj["@odata.count"]}{" "}
{t("case:documents-count-label-2")}
</p>
<dl className="documentList govuk-summary-list govuk-!-margin-bottom-9 results">
<div className="govuk-summary-list__row results-headings">
<dd className="govuk-summary-list__key govuk-!-font-size-16 ">
{t("case:documents-name-label")}
</dd>
<dd className="govuk-summary-list__key govuk-!-font-size-16">
{t("case:documents-doc-type-label")}
</dd>
<dd className="govuk-summary-list__key govuk-!-font-size-16">
{t("case:documents-date-published-label")}
</dd>
{/* <dd className="govuk-summary-list__key govuk-!-font-size-16">
{t("case:documents-size-label")}
</dd> */}
</div>
</div>
{documentDetailsArr.map((item) => {
let detailsObj = jsonpath.query(
item,
"$..[?(@._pinswg_documentids_value=='" +
incidentid +
"')]"
);
detailsObj = item;
{documentDetailsArr.map((item) => {
let detailsObj = jsonpath.query(
item,
"$..[?(@._pinswg_documentids_value=='" +
incidentid +
"')]"
);
detailsObj = item;
if (typeof detailsObj != "undefined") {
var documentHistoryArr = documentHistoryObj || [];
return documentHistoryArr.map((historyItem, key) => {
let historyObj = jsonpath.query(
documentHistoryObj[key],
"$..value[?(@._pinswg_documentid_value=='" +
detailsObj.pinswg_documentid +
"')]"
);
if (typeof detailsObj != "undefined") {
var documentHistoryArr = documentHistoryObj || [];
return documentHistoryArr.map(
(historyItem, key) => {
let historyObj = jsonpath.query(
documentHistoryObj[key],
"$..value[?(@._pinswg_documentid_value=='" +
detailsObj.pinswg_documentid +
"')]"
);
historyObj = historyObj[0];
return !_.isEmpty(historyObj) ? (
<div
className="govuk-summary-list__row"
key={key}
>
<dd className="govuk-summary-list__value govuk-!-font-size-16 ">
<a
href={
"/api/proxy/documents/download/" +
detailsObj.pinswg_isharedocumentreference
}
historyObj = historyObj[0];
return !_.isEmpty(historyObj) ? (
<div
className="govuk-summary-list__row"
key={key}
>
<span className="results-visually-hidden">
{t("case:documents-name-label")}
:
</span>
{_.has(historyObj, [
"_pinswg_documentid_value@OData.Community.Display.V1.FormattedValue",
])
? historyObj[
"_pinswg_documentid_value@OData.Community.Display.V1.FormattedValue"
]
: ""}
</a>
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t("case:documents-doc-type-label")}
:
</span>
<dd className="govuk-summary-list__value govuk-!-font-size-16 ">
<a
href={
"/api/proxy/documents/download/" +
detailsObj.pinswg_isharedocumentreference
}
>
<span className="results-visually-hidden">
{t(
"case:documents-name-label"
)}
:
</span>
{_.has(historyObj, [
"_pinswg_documentid_value@OData.Community.Display.V1.FormattedValue",
])
? historyObj[
"_pinswg_documentid_value@OData.Community.Display.V1.FormattedValue"
]
: ""}
</a>
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t(
"case:documents-doc-type-label"
)}
:
</span>
{router.locale == "cy"
? jsonpath.query(
transLookup,
'$..[?(@.value=="' +
detailsObj[
{router.locale == "cy"
? jsonpath.query(
transLookup,
'$..[?(@.value=="' +
detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy'
)
: detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy'
)
: detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t(
"case:documents-date-published-label"
)}
:
</span>
] ||
t(
"case:summary-no-date-entered-label"
)}
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t(
"case:documents-date-published-label"
)}
:
</span>
{_.has(historyObj, [
"pinswg_publisheddate@OData.Community.Display.V1.FormattedValue",
])
? formatDates(
historyObj[
"pinswg_publisheddate@OData.Community.Display.V1.FormattedValue"
]
)
: ""}
</dd>
{/* <dd className="govuk-summary-list__value govuk-!-font-size-16">
{_.has(historyObj, [
"pinswg_publisheddate@OData.Community.Display.V1.FormattedValue",
])
? formatDates(
historyObj[
"pinswg_publisheddate@OData.Community.Display.V1.FormattedValue"
]
)
: ""}
</dd>
{/* <dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t("case:documents-size-label")}:
</span>
92
</dd> */}
</div>
) : (
""
</div>
) : (
""
);
}
);
});
}
})}
</dl>
}
})}
</dl>
<PaginationControl
currentPage={currentPage}
searchResultsObj={documentDetailsObj}
spinnerState={spinnerState}
getDocumentResults={getDocumentResults}
/>
</>
);
};
@@ -177,6 +199,8 @@ const DocumentDetails = (props) => {
let historyObj = getDocumentHistory(data.value).then(
(result) => {
setDocumentHistory(result);
setDocumentSearchState(true);
return result;
}
);
@@ -206,10 +230,72 @@ const DocumentDetails = (props) => {
);
return Promise.all(historyArr);
};
const searchDocumentResultsObj = docDetailsObj();
}, [incidentid, setDocumentHistory, setDocumentDetails]);
const getDocumentResults = (pageNumber) => {
//console.log(advancedSearch, searchString, pageNumber);
getSearchDocumentDetails1Paged(incidentid, pageNumber)
.then((data) => {
//console.log(data);
setDocumentDetails(data);
return data;
})
.then((data) => {
//console.log("getting details", data);
return getDocumentHistory(data.value).then((data) => {
setDocumentHistory(data);
setShowSpinnerState(false);
});
});
};
const getDocumentDetails = async () => {
let docObj = await getSearchDocumentDetails1Paged(
incidentid,
pageNumber
)
.then((data) => {
//console.log(data);
setDocumentDetails(data);
return data;
})
.then((data) => {
let historyObj = getDocumentHistory(
data.value,
pageNumber
).then((result) => {
setDocumentHistory(result);
return result;
});
return data;
});
return docObj;
};
const getDocumentHistory = async (searchDocumentDetailsObj, pageNumber) => {
let historyArr = [];
searchDocumentDetailsObj = searchDocumentDetailsObj || [];
const detailsObj = searchDocumentDetailsObj.map(
(historyDetail, index) => {
if (historyDetail.pinswg_publishtoweb != true) {
console.log(historyDetail.pinswg_documentid);
} else {
historyArr.push(
getSearchDocumentHistory1Paged(
historyDetail.pinswg_documentid,
pageNumber
)
);
}
}
);
return Promise.all(historyArr);
};
function formatDates(dateObj) {
var dateObj = new Date(dateObj);
var dd = String(dateObj.getDate()).padStart(2, "0");
@@ -219,25 +305,73 @@ const DocumentDetails = (props) => {
return dd + "/" + mm + "/" + yyyy;
}
const pagesCount = Math.ceil(documentDetailsObj["@odata.count"] / 10);
let currentPage = 0;
currentPage = decodeURI(documentDetailsObj["@odata.nextLink"]).split(
"skiptoken="
)[1];
currentPage =
typeof currentPage != "undefined"
? parseInt(
decodeURI(currentPage)
.split('pagenumber="')[1]
.slice(
0,
decodeURI(currentPage)
.split('pagenumber="')[1]
.indexOf('"')
) - 1
)
: pagesCount;
const [showSpinnerState, setShowSpinnerState] = useState(false);
let spinnerState = () => {
showSpinnerState == true
? setShowSpinnerState(false)
: setShowSpinnerState(true);
};
const [showDocumentSearchState, setDocumentSearchState] = useState(false);
let documentSearchState = () => {
showDocumentSearchState == true
? setDocumentSearchState(false)
: setDocumentSearchState(true);
};
return (
<div>
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<h2>{t("case:documents-heading-label")}</h2>
{_.isEmpty(documentHistoryObj) ? (
<div className="govuk-grid-row">
<div className="govuk-grid-column-two-thirds">
<h3>
{t("case:documents-non-available-label")}
</h3>
<>
<div>
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<h2>{t("case:documents-heading-label")}</h2>
{_.isEmpty(documentHistoryObj) ? (
<div className="govuk-grid-row">
<div className="govuk-grid-column-two-thirds">
<h3>
{showDocumentSearchState == false
? t("case:documents-checking-label")
: t(
"case:documents-non-available-label"
)}
</h3>
</div>
</div>
</div>
) : (
DocumentView(documentDetailsArr)
)}
) : (
DocumentView(documentDetailsArr)
)}
</div>
</div>
</div>
</div>
<LoadingOverlay
active={showSpinnerState}
spinner
text={t("common:spinner-searching")}
/>
</>
);
};