From 2ec88c995ce547d55bb31c37e0532245a6f70d99 Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Mon, 31 Jan 2022 20:11:31 +0000 Subject: [PATCH] sorting on documents --- .env.local | 10 +-- actions/index.js | 35 +++++++++-- components/case/documents.js | 62 ++++++++++++++++++- components/case/pagination.js | 21 +++++-- components/search/dnssearchresults.js | 55 ++++++++++++++-- components/search/pagination.js | 25 +++++--- components/search/searchresults.js | 46 ++++++-------- .../endpoint/getadvancedsearchpaged_api.js | 12 +++- .../endpoint/getbasicdnssearchpaged_api.js | 9 ++- pages/api/endpoint/getbasicsearch_api.js | 2 +- .../api/endpoint/getbasicsearchdetails_api.js | 2 +- pages/api/endpoint/getbasicsearchpaged_api.js | 2 +- .../endpoint/getsearchdocumentdetails_api.js | 2 + .../getsearchdocumentdetailspaged_api.js | 11 +++- styles/sass/welshgov/_application.scss | 16 ++--- 15 files changed, 240 insertions(+), 70 deletions(-) diff --git a/.env.local b/.env.local index 44042762..8b1a773e 100644 --- a/.env.local +++ b/.env.local @@ -37,11 +37,11 @@ RELAYPATH = "pp-pedw-hc" //Prod Oauth WGO -//CLIENT_ID = 3e4141a3-1fbd-454e-98f0-7f3a4f14a3cc -//CLIENT_SECRET = mJN7Q~lFu.xFGa5KCc.zwIm_fJAWxajyQaFo~ -//RELAY_ROOT = https://prod-pedw-ns.servicebus.windows.net/prod-pedw-hc/ -//RELAYURI = "prod-pedw-ns.servicebus.windows.net" -//RELAYPATH = "prod-pedw-hc" +CLIENT_ID = 3e4141a3-1fbd-454e-98f0-7f3a4f14a3cc +CLIENT_SECRET = mJN7Q~lFu.xFGa5KCc.zwIm_fJAWxajyQaFo~ +RELAY_ROOT = https://prod-pedw-ns.servicebus.windows.net/prod-pedw-hc/ +RELAYURI = "prod-pedw-ns.servicebus.windows.net" +RELAYPATH = "prod-pedw-hc" GOOGLE_TAG_MANAGER = GTM-T78CBC3 diff --git a/actions/index.js b/actions/index.js index 18d60bc3..fd7d5b22 100644 --- a/actions/index.js +++ b/actions/index.js @@ -166,10 +166,15 @@ export const getBasicDNSSearch = (searchString) => { }); }; -export const getBasicDNSSearchPaged = (pageNumber) => { +export const getBasicDNSSearchPaged = (pageNumber, orderBy, fieldSort) => { return axios .get( - "/api/endpoint/getbasicdnssearchpaged_api?pageNumber=" + pageNumber + "/api/endpoint/getbasicdnssearchpaged_api?pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort ) .then((res) => res.data) .catch((error) => { @@ -196,13 +201,22 @@ export const getAdvancedSearch = (searchString) => { }); }; -export const getAdvancedSearchPaged = (searchString, pageNumber) => { +export const getAdvancedSearchPaged = ( + searchString, + pageNumber, + orderBy, + fieldSort +) => { return axios .get( "/api/endpoint/getadvancedsearchpaged_api?searchstring=" + JSON.stringify(searchString) + "&pageNumber=" + - pageNumber + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort ) .then((res) => res.data) .catch((error) => { @@ -273,13 +287,22 @@ export const getSearchDocumentDetails = (incidentID) => { }); }; -export const getSearchDocumentDetailsPaged = (incidentID, pageNumber) => { +export const getSearchDocumentDetailsPaged = ( + incidentID, + pageNumber, + orderBy, + fieldSort +) => { return axios .get( "/api/endpoint/getsearchdocumentdetailspaged_api?incidentid=" + incidentID + "&pageNumber=" + - pageNumber + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort ) .then((res) => res.data) .catch((error) => { diff --git a/components/case/documents.js b/components/case/documents.js index 9e096b5a..f98244e0 100644 --- a/components/case/documents.js +++ b/components/case/documents.js @@ -67,9 +67,38 @@ const DocumentDetails = (props) => {
{t("case:documents-doc-type-label")} +
{t("case:documents-date-published-label")} +
{/*
{t("case:documents-size-label")} @@ -199,6 +228,8 @@ const DocumentDetails = (props) => { currentPage={currentPage} searchResultsObj={documentDetailsObj} spinnerState={spinnerState} + orderBy={orderByState} + fieldSort={fieldSortState} getDocumentResults={getDocumentResults} /> @@ -250,8 +281,13 @@ const DocumentDetails = (props) => { const searchDocumentResultsObj = docDetailsObj(); }, [incidentid, setDocumentHistory, setDocumentDetails]); - const getDocumentResults = (pageNumber) => { - getSearchDocumentDetailsPaged(incidentid, pageNumber) + const getDocumentResults = (incidentid, pageNumber, orderBy, fieldSort) => { + getSearchDocumentDetailsPaged( + incidentid, + pageNumber, + orderBy, + fieldSort + ) .then((data) => data) .then((data) => { //console.log("getting details", data); @@ -264,7 +300,12 @@ const DocumentDetails = (props) => { }; const getDocumentDetails = async () => { - let docObj = await getSearchDocumentDetailsPaged(incidentid, pageNumber) + let docObj = await getSearchDocumentDetailsPaged( + incidentid, + pageNumber, + orderBy, + fieldSort + ) .then((data) => { //console.log(data); setDocumentDetails(data); @@ -345,6 +386,8 @@ const DocumentDetails = (props) => { }; const [showDocumentSearchState, setDocumentSearchState] = useState(false); + const [orderByState, setOrderbyState] = useState("createdon"); + const [fieldSortState, setfieldSortState] = useState("asc"); let documentSearchState = () => { showDocumentSearchState == true @@ -352,6 +395,19 @@ const DocumentDetails = (props) => { : setDocumentSearchState(true); }; + // const sortDataBy = (whichField) => { + // setOrderbyState(whichField); + // setfieldSortState("asc"); + + // getSearchPageResults(1, whichField, fieldSortState); + // whichField == orderByState + // ? fieldSortState == "desc" + // ? setfieldSortState("asc") + // : setfieldSortState("desc") + // : setfieldSortState("asc"); + // setShowSpinnerState(true); + // }; + return ( <>
diff --git a/components/case/pagination.js b/components/case/pagination.js index 50b88581..b35c01dd 100644 --- a/components/case/pagination.js +++ b/components/case/pagination.js @@ -4,6 +4,8 @@ import useTranslation from "next-translate/useTranslation"; const PaginationControl = (props) => { const { + orderBy, + fieldSort, searchString, searchResultsObj, currentPage, @@ -82,7 +84,11 @@ const PaginationControl = (props) => { className="govuk-body govuk-link govuk-!-font-weight-bold govuk-link--no-underline activePaginationItem leftTextButton" onClick={() => { spinnerState(), - getDocumentResults(currentPage - 1); + getDocumentResults( + currentPage - 1, + orderBy, + fieldSort + ); }} > {t("common:previous-link-button")} @@ -115,8 +121,11 @@ const PaginationControl = (props) => { key={i} onClick={() => { spinnerState(); - console.log(i + 1); - getDocumentResults(i + 1); + getDocumentResults( + i + 1, + orderBy, + fieldSort + ); }} > {e} @@ -130,7 +139,11 @@ const PaginationControl = (props) => { className="govuk-body govuk-link govuk-!-font-weight-bold govuk-link--no-underline activePaginationItem rightTextButton" onClick={() => { spinnerState(), - getDocumentResults(currentPage + 1); + getDocumentResults( + currentPage + 1, + orderBy, + fieldSort + ); }} > {t("common:next-link-button")} diff --git a/components/search/dnssearchresults.js b/components/search/dnssearchresults.js index 11167c23..a28ca10e 100644 --- a/components/search/dnssearchresults.js +++ b/components/search/dnssearchresults.js @@ -46,6 +46,9 @@ const DNSSearchResults = (props) => { : setShowSpinnerState(true); }; + const [orderByState, setOrderbyState] = useState("createdon"); + const [fieldSortState, setfieldSortState] = useState("asc"); + const ResultsView = (resultsArr) => { return (
@@ -62,11 +65,40 @@ const DNSSearchResults = (props) => { {t("search:searchresults-applicant-label")}
- {t("search:searchresults-authority-label")} +
- {t("search:searchresults-status-label")} +
@@ -243,6 +275,8 @@ const DNSSearchResults = (props) => { @@ -272,10 +306,10 @@ const DNSSearchResults = (props) => { ) : pagesCount; - const getSearchPageResults = (pageNumber) => { + const getSearchPageResults = (pageNumber, orderBy, fieldSort) => { //console.log(advancedSearch, searchString, pageNumber); - getBasicDNSSearchPaged(pageNumber) + getBasicDNSSearchPaged(pageNumber, orderBy, fieldSort) .then((data) => { return data; }) @@ -288,6 +322,19 @@ const DNSSearchResults = (props) => { }); }; + const sortDataBy = (whichField) => { + setOrderbyState(whichField); + setfieldSortState("asc"); + + getSearchPageResults(1, whichField, fieldSortState); + whichField == orderByState + ? fieldSortState == "desc" + ? setfieldSortState("asc") + : setfieldSortState("desc") + : setfieldSortState("asc"); + setShowSpinnerState(true); + }; + return ( <>
diff --git a/components/search/pagination.js b/components/search/pagination.js index ce68813a..35f35fd8 100644 --- a/components/search/pagination.js +++ b/components/search/pagination.js @@ -84,7 +84,11 @@ const PaginationControl = (props) => { className="govuk-body govuk-link govuk-!-font-weight-bold govuk-link--no-underline activePaginationItem leftTextButton" onClick={() => { spinnerState(), - getSearchPageResults(currentPage - 1); + getSearchPageResults( + currentPage - 1, + orderBy, + fieldSort + ); }} > {t("common:previous-link-button")} @@ -116,13 +120,12 @@ const PaginationControl = (props) => { className="govuk-body govuk-link govuk-!-padding-2 govuk-!-font-weight-bold govuk-link--no-underline activePaginationItem" key={i} onClick={() => { - spinnerState(); - console.log(i + 1); - getSearchPageResults( - i + 1, - orderBy, - fieldSort - ); + spinnerState(), + getSearchPageResults( + i + 1, + orderBy, + fieldSort + ); }} > {e} @@ -136,7 +139,11 @@ const PaginationControl = (props) => { className="govuk-body govuk-link govuk-!-font-weight-bold govuk-link--no-underline activePaginationItem rightTextButton" onClick={() => { spinnerState(), - getSearchPageResults(currentPage + 1); + getSearchPageResults( + currentPage + 1, + orderBy, + fieldSort + ); }} > {t("common:next-link-button")} diff --git a/components/search/searchresults.js b/components/search/searchresults.js index 734ef56d..6750e173 100644 --- a/components/search/searchresults.js +++ b/components/search/searchresults.js @@ -74,6 +74,9 @@ const SearchResults = (props) => { : setShowSpinnerState(true); }; + const [orderByState, setOrderbyState] = useState("createdon"); + const [fieldSortState, setfieldSortState] = useState("asc"); + const cookies = parseCookies(); const selectWatchedCase = (loggedInUser, incidentID, appealType) => { @@ -526,14 +529,12 @@ const SearchResults = (props) => { const getSearchPageResults = (pageNumber, orderBy, fieldSort) => { //console.log(advancedSearch, searchString, pageNumber); - console.log("got this ", fieldSortState + " " + orderByState); - if (advancedSearch) { var searchoObj = Object.assign( ...searchString.map(([key, val]) => ({ [key]: val })) ); - getAdvancedSearchPaged(searchoObj, pageNumber) + getAdvancedSearchPaged(searchoObj, pageNumber, orderBy, fieldSort) .then((data) => data) .then((data) => { //console.log("getting details", data); @@ -545,13 +546,10 @@ const SearchResults = (props) => { }); } else { getBasicSearchPaged(searchString, pageNumber, orderBy, fieldSort) - .then((data) => { - //console.log(data); - setSearchResults(data); - return data; - }) + .then((data) => data) .then((data) => { //console.log("getting details", data); + setSearchResults(data); return getSearchDetailsPaged(data).then((data) => { setSearchDetails(data); setShowSpinnerState(false); @@ -560,28 +558,24 @@ const SearchResults = (props) => { } }; - const [orderByState, setOrderbyState] = useState("createdon"); - const [fieldSortState, setfieldSortState] = useState("desc"); - const sortDataBy = (whichField) => { - console.log(whichField); - orderByState == "createdon" - ? setOrderbyState(whichField) - : setOrderbyState(whichField); + setOrderbyState(whichField); + setfieldSortState("asc"); - fieldSortState == "desc" - ? setfieldSortState("asc") - : setfieldSortState("desc"); - - console.log(currentPage, orderByState + " " + fieldSortState); - getSearchPageResults(currentPage, orderByState, fieldSortState); + getSearchPageResults(1, whichField, fieldSortState); + whichField == orderByState + ? fieldSortState == "desc" + ? setfieldSortState("asc") + : setfieldSortState("desc") + : setfieldSortState("asc"); + setShowSpinnerState(true); }; - console.log( - "page is here ", - currentPage, - orderByState + " " + fieldSortState - ); + // console.log( + // "page is here ", + // currentPage, + // orderByState + " " + fieldSortState + // ); return ( <> diff --git a/pages/api/endpoint/getadvancedsearchpaged_api.js b/pages/api/endpoint/getadvancedsearchpaged_api.js index 9f3bb570..77b638ac 100644 --- a/pages/api/endpoint/getadvancedsearchpaged_api.js +++ b/pages/api/endpoint/getadvancedsearchpaged_api.js @@ -1,5 +1,6 @@ import axios from "axios"; import CryptoJS from "crypto-js"; +import { query } from "jsonpath"; import _ from "lodash"; import { getToken, azureHeadersPaged } from "../../../actions"; @@ -26,6 +27,9 @@ export default async function ApiProxy(req, res) { var pageNumber = req.query.pageNumber; var token = await getToken(); + var orderby = req.query.orderby; + var fieldSort = req.query.fieldSort; + searchString = _.isEmpty(searchString) ? searchString : JSON.parse(decodeURI(searchString)); @@ -60,11 +64,17 @@ export default async function ApiProxy(req, res) { var queryUrl = "incidents?$select=description,numberofchildincidents,_accountid_value,_customerid_value,_pinswg_associatedlpa_value,_ownerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title, _primarycontactid_value&$expand=primarycontactid($select=fullname)&$filter=" + queryString + - " and pinswg_appealcasetype ne null and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true" + + " and pinswg_appealcasetype ne null and pinswg_publishtoweb eq true&$orderby=" + + orderby + + " " + + fieldSort + + "&$count=true" + (typeof pageNumber != "undefined" ? "&$skiptoken=" + ('') : ""); + console.log("adv qu: ", queryUrl); + var apiResponse = _.isEmpty(searchString) ? res.status(400).json() : axios diff --git a/pages/api/endpoint/getbasicdnssearchpaged_api.js b/pages/api/endpoint/getbasicdnssearchpaged_api.js index c90c9c35..0a2c2ebe 100644 --- a/pages/api/endpoint/getbasicdnssearchpaged_api.js +++ b/pages/api/endpoint/getbasicdnssearchpaged_api.js @@ -25,8 +25,15 @@ export default async function ApiProxy(req, res) { var pageNumber = req.query.pageNumber; var token = await getToken(); + var orderby = req.query.orderby; + var fieldSort = req.query.fieldSort; + var queryUrl = - "incidents?$select=description,numberofchildincidents,_accountid_value,_customerid_value,_pinswg_associatedlpa_value,_ownerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title, _primarycontactid_value&$expand=primarycontactid($select=fullname)&$filter=pinswg_appealcasetype eq 846040011 and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true" + + "incidents?$select=description,numberofchildincidents,_accountid_value,_customerid_value,_pinswg_associatedlpa_value,_ownerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title, _primarycontactid_value&$expand=primarycontactid($select=fullname)&$filter=pinswg_appealcasetype eq 846040011 and pinswg_publishtoweb eq true&$orderby=" + + orderby + + " " + + fieldSort + + "&$count=true" + (typeof pageNumber != "undefined" ? "&$skiptoken=" + '' : ""); diff --git a/pages/api/endpoint/getbasicsearch_api.js b/pages/api/endpoint/getbasicsearch_api.js index 2944f93e..ac577c1b 100644 --- a/pages/api/endpoint/getbasicsearch_api.js +++ b/pages/api/endpoint/getbasicsearch_api.js @@ -32,7 +32,7 @@ export default async function ApiProxy(req, res) { searchString + "')) and pinswg_appealcasetype ne null and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true"; - console.log("basic query ", queryUrl); + // console.log("basic search ", queryUrl); var apiResponse = _.isEmpty(req.query) ? res.status(400).json() diff --git a/pages/api/endpoint/getbasicsearchdetails_api.js b/pages/api/endpoint/getbasicsearchdetails_api.js index 0abcb60b..608efbfa 100644 --- a/pages/api/endpoint/getbasicsearchdetails_api.js +++ b/pages/api/endpoint/getbasicsearchdetails_api.js @@ -34,7 +34,7 @@ export default async function ApiProxy(req, res) { queryUrl = queryUrl + getSelectQuery(appealTypeName); - console.log("query: ", queryUrl, "<<<' : ""); - console.log(queryUrl); + //console.log("basic search paged:", queryUrl); var apiResponse = searchString.length > 0 diff --git a/pages/api/endpoint/getsearchdocumentdetails_api.js b/pages/api/endpoint/getsearchdocumentdetails_api.js index 10039332..66ee9344 100644 --- a/pages/api/endpoint/getsearchdocumentdetails_api.js +++ b/pages/api/endpoint/getsearchdocumentdetails_api.js @@ -43,6 +43,8 @@ export default async function ApiProxy(req, res) { incidentID + "&$select=pinswg_isharedocumentlocations,_pinswg_documentids_value,pinswg_isharelabelcasetype,pinswg_isharelabellpaname,pinswg_publishtoweb,pinswg_uploadstatus,pinswg_isharedocumentclassification,pinswg_isharedocumentreference"; + console.log("docu: ", queryUrl); + return axios .get( WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), diff --git a/pages/api/endpoint/getsearchdocumentdetailspaged_api.js b/pages/api/endpoint/getsearchdocumentdetailspaged_api.js index b95c4084..724f2233 100644 --- a/pages/api/endpoint/getsearchdocumentdetailspaged_api.js +++ b/pages/api/endpoint/getsearchdocumentdetailspaged_api.js @@ -39,14 +39,23 @@ export default async function ApiProxy(req, res) { var incidentID = req.query.incidentid; var token = await getToken(); + var orderby = req.query.orderby; + var fieldSort = req.query.fieldSort; + var queryUrl = "pinswg_documents?$count=true&$filter=pinswg_publishtoweb eq true and _pinswg_documentids_value eq " + incidentID + - "&$select=pinswg_isharedocumentlocations,_pinswg_documentids_value,pinswg_isharelabelcasetype,pinswg_isharelabellpaname,pinswg_publishtoweb,pinswg_uploadstatus,pinswg_isharedocumentclassification,pinswg_isharedocumentreference" + + "&$select=pinswg_isharedocumentlocations,_pinswg_documentids_value,pinswg_isharelabelcasetype,pinswg_isharelabellpaname,pinswg_publishtoweb,pinswg_uploadstatus,pinswg_isharedocumentclassification,pinswg_isharedocumentreference&$orderby=" + + orderby + + " " + + fieldSort + + "&$count=true" + (typeof pageNumber != "undefined" ? "&$skiptoken=" + ('') : ""); + console.log("docu: ", queryUrl); + return axios .get( WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), diff --git a/styles/sass/welshgov/_application.scss b/styles/sass/welshgov/_application.scss index 81b95fb8..f041a9ba 100644 --- a/styles/sass/welshgov/_application.scss +++ b/styles/sass/welshgov/_application.scss @@ -806,7 +806,7 @@ textarea, .documentList { .govuk-summary-list__key:first-of-type { - width: 20%; + width: 40%; } .govuk-summary-list__key:last-of-type { width: 20%; @@ -834,14 +834,16 @@ textarea, background: none; padding-left: 0; + color: #0360a6; + &.sortDesc:after { width: 0; height: 0; border-style: solid; - border-width: 13.9px 8px 0 8px; - border-color: #31373d transparent transparent transparent; + border-width: 12px 5px 0 5px; + border-color: #0360a6 transparent transparent transparent; content: ""; - top: 15px; + top: 16px; position: relative; left: 10px; } @@ -849,10 +851,10 @@ textarea, width: 0; height: 0; border-style: solid; - border-width: 0 8px 13.9px 8px; - border-color: transparent transparent #31373d transparent; + border-width: 0 5px 12px 5px; + border-color: transparent transparent #0360a6 transparent; content: ""; - top: -15px; + top: -16px; position: relative; left: 10px; }