Add vendor name sort on all bills page IO-482

This commit is contained in:
Patrick Fic
2021-02-02 15:45:19 -08:00
parent 5c6400c0eb
commit 6c11a7ea5e
2 changed files with 35 additions and 15 deletions

View File

@@ -39,9 +39,20 @@ export function BillsListPage({
title: t("bills.fields.vendorname"), title: t("bills.fields.vendorname"),
dataIndex: "vendorname", dataIndex: "vendorname",
key: "vendorname", key: "vendorname",
// sorter: (a, b) => alphaSort(a.vendor.name, b.vendor.name), sortObject: (direction) => {
// sortOrder: return {
// state.sortedInfo.columnKey === "vendorname" && state.sortedInfo.order, vendor: {
name: direction
? direction === "descend"
? "desc"
: "asc"
: "desc",
},
};
},
sorter: (a, b) => alphaSort(a.vendor.name, b.vendor.name),
sortOrder:
state.sortedInfo.columnKey === "vendorname" && state.sortedInfo.order,
render: (text, record) => <span>{record.vendor.name}</span>, render: (text, record) => <span>{record.vendor.name}</span>,
}, },
{ {
@@ -138,8 +149,15 @@ export function BillsListPage({
const handleTableChange = (pagination, filters, sorter) => { const handleTableChange = (pagination, filters, sorter) => {
setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); setState({ ...state, filteredInfo: filters, sortedInfo: sorter });
search.page = pagination.current; search.page = pagination.current;
search.sortcolumn = sorter.columnKey; if (sorter && sorter.column && sorter.column.sortObject) {
search.sortorder = sorter.order; search.searchObj = JSON.stringify(sorter.column.sortObject(sorter.order));
} else {
delete search.searchObj;
search.sortcolumn = sorter.order ? sorter.columnKey : null;
search.sortorder = sorter.order;
}
search.sort = JSON.stringify({ [sorter.columnKey]: sorter.order });
history.push({ search: queryString.stringify(search) }); history.push({ search: queryString.stringify(search) });
}; };

View File

@@ -4,15 +4,15 @@ import { useQuery } from "react-apollo";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { useLocation } from "react-router-dom"; import { useLocation } from "react-router-dom";
import AlertComponent from "../../components/alert/alert.component";
import BillDetailEditContainer from "../../components/bill-detail-edit/bill-detail-edit.container"; import BillDetailEditContainer from "../../components/bill-detail-edit/bill-detail-edit.container";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import { QUERY_ALL_BILLS_PAGINATED } from "../../graphql/bills.queries"; import { QUERY_ALL_BILLS_PAGINATED } from "../../graphql/bills.queries";
import { import {
setBreadcrumbs, setBreadcrumbs,
setSelectedHeader, setSelectedHeader,
} from "../../redux/application/application.actions"; } from "../../redux/application/application.actions";
import BillsPageComponent from "./bills.page.component"; import BillsPageComponent from "./bills.page.component";
import AlertComponent from "../../components/alert/alert.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -22,7 +22,7 @@ const mapDispatchToProps = (dispatch) => ({
export function BillsPageContainer({ setBreadcrumbs, setSelectedHeader }) { export function BillsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
const { t } = useTranslation(); const { t } = useTranslation();
const searchParams = queryString.parse(useLocation().search); const searchParams = queryString.parse(useLocation().search);
const { page, sortcolumn, sortorder, search } = searchParams; const { page, sortcolumn, sortorder, search, searchObj } = searchParams;
useEffect(() => { useEffect(() => {
document.title = t("titles.bills-list"); document.title = t("titles.bills-list");
@@ -40,13 +40,15 @@ export function BillsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
offset: page ? (page - 1) * 25 : 0, offset: page ? (page - 1) * 25 : 0,
limit: 25, limit: 25,
order: [ order: [
{ searchObj
[sortcolumn || "date"]: sortorder ? JSON.parse(searchObj)
? sortorder === "descend" : {
? "desc" [sortcolumn || "date"]: sortorder
: "asc" ? sortorder === "descend"
: "desc", ? "desc"
}, : "asc"
: "desc",
},
], ],
}, },
} }