From 9d55adb26d862d9bf245d70796bcce8c713c7392 Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Fri, 28 Jan 2022 19:35:07 +0000 Subject: [PATCH] added column sort and arrows --- .env.local | 10 +-- actions/index.js | 13 ++- components/search/pagination.js | 20 ++++- components/search/searchresults.js | 81 +++++++++++++++++-- pages/api/documents/download/[id].js | 25 ++++-- pages/api/endpoint/getbasicdnssearch_api.js | 2 + pages/api/endpoint/getbasicsearch_api.js | 2 + pages/api/endpoint/getbasicsearchpaged_api.js | 11 ++- styles/sass/welshgov/_application.scss | 33 ++++++++ 9 files changed, 173 insertions(+), 24 deletions(-) diff --git a/.env.local b/.env.local index 8b1a773e..44042762 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 662a7b9c..18d60bc3 100644 --- a/actions/index.js +++ b/actions/index.js @@ -131,14 +131,23 @@ export const getBasicSearch = (searchString) => { }); }; -export const getBasicSearchPaged = (searchString, pageNumber) => { +export const getBasicSearchPaged = ( + searchString, + pageNumber, + orderBy, + fieldSort +) => { //console.log(queryUrl); return axios .get( "/api/endpoint/getbasicsearchpaged_api?searchString=" + searchString + "&pageNumber=" + - pageNumber + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort ) .then((res) => { return res.data; diff --git a/components/search/pagination.js b/components/search/pagination.js index 9a29050d..a8434c73 100644 --- a/components/search/pagination.js +++ b/components/search/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(), - getSearchPageResults(currentPage - 1); + getSearchPageResults( + currentPage - 1, + orderBy, + fieldSort + ); }} > {t("common:previous-link-button")} @@ -116,7 +122,11 @@ const PaginationControl = (props) => { onClick={() => { // spinnerState(); console.log(i + 1); - getSearchPageResults(i + 1); + getSearchPageResults( + i + 1, + orderBy, + fieldSort + ); }} > {e} @@ -130,7 +140,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 0436111d..eacd31fe 100644 --- a/components/search/searchresults.js +++ b/components/search/searchresults.js @@ -166,13 +166,57 @@ const SearchResults = (props) => { {t("search:searchresults-applicant-label")}
- {t("search:searchresults-authority-label")} + {/* {t("search:searchresults-authority-label")} */} +
- {t("search:searchresults-case-type-label")} + {/* {t("search:searchresults-case-type-label")} */} +
- {t("search:searchresults-status-label")} + {/* {t("search:searchresults-status-label")} */} +
{myportal == true && (
@@ -420,6 +464,8 @@ const SearchResults = (props) => { @@ -448,9 +494,11 @@ const SearchResults = (props) => { ) : pagesCount; - const getSearchPageResults = (pageNumber) => { + 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 })) @@ -470,7 +518,7 @@ const SearchResults = (props) => { }); }); } else { - getBasicSearchPaged(searchString, pageNumber) + getBasicSearchPaged(searchString, pageNumber, orderBy, fieldSort) .then((data) => { //console.log(data); setSearchResults(data); @@ -486,6 +534,29 @@ 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); + + fieldSortState == "desc" + ? setfieldSortState("asc") + : setfieldSortState("desc"); + + console.log(currentPage, orderByState + " " + fieldSortState); + getSearchPageResults(currentPage, orderByState, fieldSortState); + }; + + console.log( + "page is here ", + currentPage, + orderByState + " " + fieldSortState + ); + return ( <>
diff --git a/pages/api/documents/download/[id].js b/pages/api/documents/download/[id].js index 2d740e8c..4acc9afa 100644 --- a/pages/api/documents/download/[id].js +++ b/pages/api/documents/download/[id].js @@ -42,27 +42,36 @@ export default async function ApiProxy(req, res) { var docRef = req.query; - console.log(docRef.id); - var queryUrl = "documents/download/" + docRef.id + "?hash=" + docRef.hash; - console.log(WEBAPI_URL + queryUrl); + const configDocument = (access_token) => { + return { + headers: { + "OData-MaxVersion": "4.0", + "OData-Version": "4.0", + "Accept": "application/json", + "Prefer": 'odata.include-annotations="*",return=representation', + "Content-Type": "application/json", + "Authorization": "Bearer " + access_token, + }, + responseType: "arraybuffer", + }; + }; + return axios .get( WEBAPI_URL + queryUrl, // + hashAPIPath(queryUrl), - azureHeadersPaged(token.access_token) + configDocument(token.access_token) ) .then((response) => { - console.log(response.headers); - res.status(200); res.setHeader( - "Content-disposition", + "content-disposition", "attachment; filename=" + response.headers["content-disposition"].split( "filename=" )[1] ); - res.end(response.data); + res.status(200).send(response.data); }) .catch(({ err }) => { res.status(400).json(err); diff --git a/pages/api/endpoint/getbasicdnssearch_api.js b/pages/api/endpoint/getbasicdnssearch_api.js index 26ce65ad..fb1b79f2 100644 --- a/pages/api/endpoint/getbasicdnssearch_api.js +++ b/pages/api/endpoint/getbasicdnssearch_api.js @@ -27,6 +27,8 @@ 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=pinswg_appealcasetype eq 846040011 and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true"; + console.log(queryUrl); + return axios .get( WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), diff --git a/pages/api/endpoint/getbasicsearch_api.js b/pages/api/endpoint/getbasicsearch_api.js index d2bcff53..2944f93e 100644 --- a/pages/api/endpoint/getbasicsearch_api.js +++ b/pages/api/endpoint/getbasicsearch_api.js @@ -32,6 +32,8 @@ 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); + var apiResponse = _.isEmpty(req.query) ? res.status(400).json() : searchString.length > 0 diff --git a/pages/api/endpoint/getbasicsearchpaged_api.js b/pages/api/endpoint/getbasicsearchpaged_api.js index c2be2114..9388cdd5 100644 --- a/pages/api/endpoint/getbasicsearchpaged_api.js +++ b/pages/api/endpoint/getbasicsearchpaged_api.js @@ -24,16 +24,25 @@ 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=(contains(title, '" + searchString + "') or contains(ticketnumber, '" + searchString + - "')) 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(queryUrl); + var apiResponse = searchString.length > 0 ? axios diff --git a/styles/sass/welshgov/_application.scss b/styles/sass/welshgov/_application.scss index 2b0b6969..b3f78e9d 100644 --- a/styles/sass/welshgov/_application.scss +++ b/styles/sass/welshgov/_application.scss @@ -829,6 +829,39 @@ textarea, } } } + button { + border: none; + background: none; + padding-left: 0; + + &.sortDesc:after { + width: 0; + height: 0; + border-style: solid; + border-width: 13.9px 8px 0 8px; + border-color: #31373d transparent transparent transparent; + content: ""; + top: 15px; + position: relative; + left: 10px; + } + &.sortAsc:after { + width: 0; + height: 0; + border-style: solid; + border-width: 0 8px 13.9px 8px; + border-color: transparent transparent #31373d transparent; + content: ""; + top: -15px; + position: relative; + left: 10px; + } + + &:focus { + border: none; + box-shadow: none; + } + } } .results_wider {