From d873945f4ea9cf3ec839e81fda4bc93074a9a79a Mon Sep 17 00:00:00 2001 From: samwel141 Date: Tue, 23 Apr 2024 21:22:20 +0300 Subject: [PATCH 1/4] Removed unwanted lines of code --- src/store/TrustRelationshipsContext.js | 28 ++------------------------ 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/src/store/TrustRelationshipsContext.js b/src/store/TrustRelationshipsContext.js index 5cdc827..391e1bf 100644 --- a/src/store/TrustRelationshipsContext.js +++ b/src/store/TrustRelationshipsContext.js @@ -189,13 +189,10 @@ const TrustRelationshipsProvider = ({ children }) => { - // error + const [message, setMessage] = useState(''); - // data to be displayed in the table const [tableRows, setTableRows] = useState([]); - - // total rows count for pagination const [totalRowCount, setTotalRowCount] = useState(null); const authContext = useContext(AuthContext); @@ -206,32 +203,11 @@ const TrustRelationshipsProvider = ({ children }) => { try { setIsLoading(true); - const data1 = await getTrustRelationships(authContext.token, {pagination, filter, sorting}); - + const data = await getTrustRelationships(authContext.token, {pagination, filter, sorting}); - const randomizeTrustState = (dataArray) => { - // Directly manipulate only the trust_relationships part of dataArray - let manipulatedTrustRelationships = dataArray.trust_relationships.map(item => ({ - ...item, - state: Math.random() < 0.5 ? 'trusted' : 'requested' // Randomly assign state - })); - - // Return the entire dataArray object with the updated trust_relationships - return { - ...dataArray, - trust_relationships: manipulatedTrustRelationships - }; - }; - - - const data = randomizeTrustState(data1); - - const preparedRows = prepareRows(await data.trust_relationships); - // console.log(tableRows) setTableRows(preparedRows); setTotalRowCount(data.total); - // console.log(data.trust_relationships) } catch (error) { console.error(error); From a61bbff6ede29c04c50cadc4925ec935b2092bbf Mon Sep 17 00:00:00 2001 From: samwel141 Date: Wed, 24 Apr 2024 14:51:25 +0300 Subject: [PATCH 2/4] fix initiated_by wallet in trust side panel --- src/pages/TrustRelationship/trustRelationshipSidePanel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/TrustRelationship/trustRelationshipSidePanel.js b/src/pages/TrustRelationship/trustRelationshipSidePanel.js index 6e727d0..4890bff 100644 --- a/src/pages/TrustRelationship/trustRelationshipSidePanel.js +++ b/src/pages/TrustRelationship/trustRelationshipSidePanel.js @@ -104,7 +104,7 @@ function TrustRelationshipSidePanel({ open, onClose, rowInfo }) { - {rowInfo.actor_wallet} + {rowInfo.originating_wallet} From 7215b0b6f82944bafc46eaf30046daf6ef70a0c3 Mon Sep 17 00:00:00 2001 From: Mlowegene Date: Tue, 30 Apr 2024 11:14:26 +0300 Subject: [PATCH 3/4] fix: modified filter features for improved functionality. --- src/models/TrustRelationShipFilter.js | 52 +- .../TrustRelationship.test.js | 2 +- .../TrustRelationshipTable.js | 184 +++--- .../TrustRelationshipTable.test.js | 2 +- .../TrustRelationshipsFilters.js | 623 +++++++++--------- 5 files changed, 446 insertions(+), 417 deletions(-) diff --git a/src/models/TrustRelationShipFilter.js b/src/models/TrustRelationShipFilter.js index e8eebf1..2a25ad3 100644 --- a/src/models/TrustRelationShipFilter.js +++ b/src/models/TrustRelationShipFilter.js @@ -1,28 +1,28 @@ -import { getDateText } from "../utils/formatting"; +import { getDateText } from '../utils/formatting'; export default class TrustRelationshipsFilter { - // possible query options - state; - type; - requestType; - before; - after; - - constructor(options) { - // assign options properties to created instance - Object.assign(this, options); - } - - // where object contains the query options - getWhereObj() { - let where = {}; - - if (this.state) where.state = this.state.toLowerCase(); - if (this.type) where.type = this.type.toLowerCase(); - if (this.requestType) where.requestType = this.requestType.toLowerCase(); - if (this.before) where.before = getDateText(this.before, 'YYYY-MM-DD'); - if (this.after) where.after = getDateText(this.after, 'YYYY-MM-DD'); - - return where; - } - } \ No newline at end of file + // possible query options + state; + type; + request_type; + before; + after; + + constructor(options) { + // assign options properties to created instance + Object.assign(this, options); + } + + // where object contains the query options + getWhereObj() { + let where = {}; + + if (this.state) where.state = this.state.toLowerCase(); + if (this.type) where.type = this.type.toLowerCase(); + if (this.request_type) where.request_type = this.request_type.toLowerCase(); + if (this.before) where.before = getDateText(this.before, 'YYYY-MM-DD'); + if (this.after) where.after = getDateText(this.after, 'YYYY-MM-DD'); + + return where; + } +} diff --git a/src/pages/TrustRelationship/TrustRelationship.test.js b/src/pages/TrustRelationship/TrustRelationship.test.js index 3884279..aad65a2 100644 --- a/src/pages/TrustRelationship/TrustRelationship.test.js +++ b/src/pages/TrustRelationship/TrustRelationship.test.js @@ -214,7 +214,7 @@ describe('Trust Relationships page', function () { ); expect(await screen.findByTestId('table-pagination')).toBeInTheDocument(); expect(await screen.findByTestId('trust-relationships-table')).toBeInTheDocument(); - expect(await screen.findByTestId('date-range-filter')).toBeInTheDocument(); + // expect(await screen.findByTestId('date-range-filter')).toBeInTheDocument(); expect(await screen.findByTestId('state-select-filter')).toBeInTheDocument(); expect(await screen.findByTestId('requestType-select-filter')).toBeInTheDocument(); expect(await screen.findByTestId('type-select-filter')).toBeInTheDocument(); diff --git a/src/pages/TrustRelationship/TrustRelationshipTable.js b/src/pages/TrustRelationship/TrustRelationshipTable.js index d79195e..1c678d7 100644 --- a/src/pages/TrustRelationship/TrustRelationshipTable.js +++ b/src/pages/TrustRelationship/TrustRelationshipTable.js @@ -33,100 +33,100 @@ import { TypeSelectFilter, RequestTypeSelectFilter, ResetButton, - DateRangeFilter + // DateRangeFilter } from './TrustRelationshipsFilters'; import TrustRelationshipSidePanel from './trustRelationshipSidePanel'; - - const FilterDialog = ({anchorEl, - handleFilterClose, - filter, - setFilter, - statesList, - requestTypeList, - getStatusColor, - typeList, - defaultFilter - }) => { - return ( +const FilterDialog = ({ + anchorEl, + handleFilterClose, + filter, + setFilter, + statesList, + requestTypeList, + getStatusColor, + typeList, + defaultFilter, +}) => { + return ( - - - - - - - - - - - + + + - - - ) -} + + ); +}; const TrustRelationshipTableHeader = ({ tableTitle, getStatusColor }) => { const { @@ -199,9 +199,9 @@ const TrustRelationshipTableHeader = ({ tableTitle, getStatusColor }) => { Filters - { expect( await screen.findByTestId('trust-relationships-table'), ).toBeInTheDocument(); - expect(await screen.findByTestId('date-range-filter')).toBeInTheDocument(); + // expect(await screen.findByTestId('date-range-filter')).toBeInTheDocument(); expect( await screen.findByTestId('state-select-filter'), ).toBeInTheDocument(); diff --git a/src/pages/TrustRelationship/TrustRelationshipsFilters.js b/src/pages/TrustRelationship/TrustRelationshipsFilters.js index bd22f6d..746a439 100644 --- a/src/pages/TrustRelationship/TrustRelationshipsFilters.js +++ b/src/pages/TrustRelationship/TrustRelationshipsFilters.js @@ -1,310 +1,339 @@ /* eslint-disable no-unused-vars */ import { - Button, - Card, - CardActions, - CardContent, - FormControl, - Grid, - Popover, - Typography, - } from '@mui/material'; - import { - ArrowDropDownIcon, - DateFilterTitle, - FilterLabelText, - SelectFilter, - SelectMenuItem, - DateRangeButton, - DateRangeFilterIcon, - } from './TrustRelationshipsFilters.styled'; - import { DateRangeIcon } from '@mui/x-date-pickers'; + Button, + Card, + CardActions, + CardContent, + FormControl, + Grid, + Popover, + Typography, +} from '@mui/material'; +import { + ArrowDropDownIcon, + DateFilterTitle, + FilterLabelText, + SelectFilter, + SelectMenuItem, + DateRangeButton, + DateRangeFilterIcon, +} from './TrustRelationshipsFilters.styled'; +import { DateRangeIcon } from '@mui/x-date-pickers'; import { DatePicker } from '@mui/x-date-pickers'; - import React, { useEffect, useState } from 'react'; - import TransferFilter from '../../models/TransferFilter'; - - /**@function - * @name StateSelectFilter - * @description Renders the transfer status filter - * - * @param filter - * @param setFilter - * @param statusList - * @param {function} getStatusColor returns color corresponding to transfer state value - * - * @return {JSX.Element} Transfer status filter component - * @constructor - */ +import React, { useEffect, useState } from 'react'; +import TrustRelationshipsFilter from '../../models/TrustRelationShipFilter'; +/**@function + * @name StateSelectFilter + * @description Renders the transfer status filter + * + * @param filter + * @param setFilter + * @param statusList + * @param {function} getStatusColor returns color corresponding to transfer state value + * + * @return {JSX.Element} Transfer status filter component + * @constructor + */ -export const StateSelectFilter = ({ filter, setFilter, statesList, getStatusColor }) => { - // get state from filter - const { state } = filter; - - const handleSelectChange = (e) => { - const newFilter = new TransferFilter({ ...filter, state: e.target.value }); - setFilter(newFilter); - }; - - return ( - - State - - - All - - {statesList.map((val, index) => { - return ( - - {val.label} - - ); - })} - - - ); - }; +export const StateSelectFilter = ({ + filter, + setFilter, + statesList, + getStatusColor, +}) => { + // get state from filter + const { state } = filter; - export const RequestTypeSelectFilter = ({ filter, setFilter, requestTypeList, getStatusColor }) => { - // get state from filter - const { requestType } = filter; - - const handleSelectChange = (e) => { - const newFilter = new TransferFilter({ ...filter, requestType: e.target.value }); - setFilter(newFilter); - }; - - return ( - - Request Type - - - All - - {requestTypeList.map((state, index) => { - return ( - - {state.label} - - ); - })} - - - ); + const handleSelectChange = (e) => { + const newFilter = new TrustRelationshipsFilter({ + ...filter, + state: e.target.value, + }); + setFilter(newFilter); }; - export const TypeSelectFilter = ({ filter, setFilter, typeList, getStatusColor }) => { - // get state from filter - const { type } = filter; - - const handleSelectChange = (e) => { - const newFilter = new TransferFilter({ ...filter, type: e.target.value }); - setFilter(newFilter); - }; - - return ( - - Type - - - All - - {typeList.map((state, index) => { - return ( - - {state.label} - - ); - })} - - - ); - }; - + return ( + + State - export const ResetButton = ({ setFilter, defaultFilter, close }) => { - return ( - - ); + All + + {statesList.map((val, index) => { + return ( + + {val.label} + + ); + })} + + + ); +}; + +export const RequestTypeSelectFilter = ({ + filter, + setFilter, + requestTypeList, + getStatusColor, +}) => { + // get state from filter + const { request_type } = filter; + + const handleSelectChange = (e) => { + const newFilter = new TrustRelationshipsFilter({ + ...filter, + request_type: e.target.value, + }); + setFilter(newFilter); }; - - /**@function - * @name DateRangeFilter - * @description Renders the date range filter - * - * @return {JSX.Element} Date range filter component - * @constructor - */ - export const DateRangeFilter = ({ filter, setFilter }) => { - - // start and end dates (from filter) - const { after, before } = filter; - - // start and end dates (for datepicker display) - // they are dayjs date objects - // set as after and before in case there is default value - const [startDate, setStartDate] = useState(after); - const [endDate, setEndDate] = useState(before); - - // disable OK button on either datepicker error - const [isStartDateError, setIsStartDateError] = useState(false); - const [isEndDateError, setIsEndDateError] = useState(false); - - const [anchorEl, setAnchorEl] = useState(null); - const defaultDateText = 'mm/dd/yyyy'; - // MM/DD/YYYY format is used to convert date object to text - const dateFormat = defaultDateText.toUpperCase(); - - // update start and end dates when filter reset button is clicked - useEffect(() => { - setStartDate(after); - setEndDate(before); - }, [after, before]); - - // opens the popover - const handleClick = (e) => { - setAnchorEl(e.target); - }; - - // resets dates to previously present values and closes the popover - const handleClose = () => { - setStartDate(after); - setEndDate(before); - setAnchorEl(null); - }; - - // updates the filter object and closes the popover - const handleOK = () => { - const newFilter = new TransferFilter({ - ...filter, - after: startDate, - before: endDate, - }); - setFilter(newFilter); - - setAnchorEl(null); - }; - - return ( - - Created Date - } endIcon={}> - {/* {startDate ? getDateText(startDate, dateFormat) : defaultDateText} -{' '} - {endDate ? getDateText(endDate, dateFormat) : defaultDateText} */} - - - - - - - - Enter dates - - - - - { - setStartDate(date); - setIsStartDateError(false); - }} - disableFuture - maxDate={endDate} - onError={(error) => { - setIsStartDateError(!!error); - }} - /> - - - { - setEndDate(date); - setIsEndDateError(false); - }} - disableFuture - minDate={startDate} - onError={(error) => setIsEndDateError(!!error)} - /> - - - - - - - - - - - ); + + return ( + + Request Type + + + All + + {requestTypeList.map((state, index) => { + return ( + + {state.label} + + ); + })} + + + ); +}; + +export const TypeSelectFilter = ({ + filter, + setFilter, + typeList, + getStatusColor, +}) => { + // get state from filter + const { type } = filter; + + const handleSelectChange = (e) => { + const newFilter = new TrustRelationshipsFilter({ + ...filter, + type: e.target.value, + }); + setFilter(newFilter); }; - - \ No newline at end of file + + return ( + + Type + + + All + + {typeList.map((state, index) => { + return ( + + {state.label} + + ); + })} + + + ); +}; + +export const ResetButton = ({ setFilter, defaultFilter, close }) => { + return ( + + ); +}; + +/**@function + * @name DateRangeFilter + * @description Renders the date range filter + * + * @return {JSX.Element} Date range filter component + * @constructor + */ +// export const DateRangeFilter = ({ filter, setFilter }) => { + +// // start and end dates (from filter) +// const { after, before } = filter; + +// // start and end dates (for datepicker display) +// // they are dayjs date objects +// // set as after and before in case there is default value +// const [startDate, setStartDate] = useState(after); +// const [endDate, setEndDate] = useState(before); + +// // disable OK button on either datepicker error +// const [isStartDateError, setIsStartDateError] = useState(false); +// const [isEndDateError, setIsEndDateError] = useState(false); + +// const [anchorEl, setAnchorEl] = useState(null); +// const defaultDateText = 'mm/dd/yyyy'; +// // MM/DD/YYYY format is used to convert date object to text +// const dateFormat = defaultDateText.toUpperCase(); + +// // update start and end dates when filter reset button is clicked +// useEffect(() => { +// setStartDate(after); +// setEndDate(before); +// }, [after, before]); + +// // opens the popover +// const handleClick = (e) => { +// setAnchorEl(e.target); +// }; + +// // resets dates to previously present values and closes the popover +// const handleClose = () => { +// setStartDate(after); +// setEndDate(before); +// setAnchorEl(null); +// }; + +// // updates the filter object and closes the popover +// const handleOK = () => { +// const newFilter = new TrustRelationshipsFilter({ +// ...filter, +// after: startDate, +// before: endDate, +// }); +// setFilter(newFilter); + +// setAnchorEl(null); +// }; + +// return ( +// +// Created Date +// } endIcon={}> +// {/* {startDate ? getDateText(startDate, dateFormat) : defaultDateText} -{' '} +// {endDate ? getDateText(endDate, dateFormat) : defaultDateText} */} +// +// +// +// +// +// +// +// Enter dates +// +// +// +// +// { +// setStartDate(date); +// setIsStartDateError(false); +// }} +// disableFuture +// maxDate={endDate} +// onError={(error) => { +// setIsStartDateError(!!error); +// }} +// /> +// +// +// { +// setEndDate(date); +// setIsEndDateError(false); +// }} +// disableFuture +// minDate={startDate} +// onError={(error) => setIsEndDateError(!!error)} +// /> +// +// +// +// +// +// +// +// +// +// +// ); +// }; From 7deae327fa5cc223688da8b0d307942f861e3ca7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 30 Apr 2024 08:34:48 +0000 Subject: [PATCH 4/4] chore(release): 2.1.0-v2.2 [skip ci] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 197af21..c0d4702 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [2.1.0-v2.2](https://github.com/Greenstand/treetracker-wallet-admin-client/compare/v2.1.0-v2.1...v2.1.0-v2.2) (2024-04-30) + + +### Bug Fixes + +* modified filter features for improved functionality. ([7215b0b](https://github.com/Greenstand/treetracker-wallet-admin-client/commit/7215b0b6f82944bafc46eaf30046daf6ef70a0c3)) + # [2.1.0-v2.1](https://github.com/Greenstand/treetracker-wallet-admin-client/compare/v2.0.0...v2.1.0-v2.1) (2024-04-09) diff --git a/package.json b/package.json index 0ac4dc7..705b5cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "treetracker-wallet-admin-client", - "version": "2.1.0-v2.1", + "version": "2.1.0-v2.2", "private": true, "dependencies": { "@emotion/react": "^11.10.6",