filters fixes

dev
RekHoto 3 years ago
parent abbfc84364
commit 7c91625bbe

@ -82,35 +82,42 @@ export const useGetFilteredPendingPointsCount = () => {
} = usePointSelection(); } = usePointSelection();
const includedIds = [...included]; const includedIds = [...included];
const getParams = () => { const getParams = () => {
let tempParams = { const params = new URLSearchParams({
page: 1, page: 1,
page_size: 1, page_size: 1,
"prediction_current[]": prediction, "prediction_current[]": prediction,
"status[]": [STATUSES.pending], "status[]": [STATUSES.pending],
"categories[]": categories, "categories[]": categories,
"included[]": includedIds, "included[]": includedIds,
}; });
RANGE_FILTERS_KEYS.map((filterKey) => { RANGE_FILTERS_KEYS.map((filterKey) => {
if (!fieldHasChanged(filters, ranges, filterKey).result) return; if (!fieldHasChanged(filters, ranges, filterKey).result) return;
tempParams = { if (/d[0-9]/.test(filterKey)) {
...tempParams, params.append('dist_to_group__gt', [
[`${filterKey}__gt`]: filters[`${filterKey}__gt`] - 1, filterKey.split('d')[1],
[`${filterKey}__lt`]: filters[`${filterKey}__lt`] + 1, filters[`${filterKey}__gt`] - 1
].join(','));
params.append('dist_to_group__lt', [
filterKey.split('d')[1],
filters[`${filterKey}__lt`] + 1
].join(','));
} else {
params.append(`${filterKey}__gt`, filters[`${filterKey}__gt`] - 1);
params.append(`${filterKey}__lt`, filters[`${filterKey}__lt`] + 1);
} }
}); });
return tempParams; return params;
} }
return useQuery( return useQuery(
["filtered-points", filters, includedIds], ["filtered-points", filters, includedIds],
async () => { async () => {
const params = new URLSearchParams({ const params = getParams();
...getParams()
});
return await getPoints(params, region); return await getPoints(params, region);
}, },

@ -1,11 +1,11 @@
import { RANGE_FILTERS_KEYS, usePendingPointsFilters } from "../../../../stores/usePendingPointsFilters"; import { CATEGORIES_MAP, RANGE_FILTERS_KEYS, usePendingPointsFilters } from "../../../../stores/usePendingPointsFilters";
import { FilterSlider } from "./Slider.jsx"; import { FilterSlider } from "./Slider.jsx";
import { Button, Collapse } from "antd"; import { Button, Collapse } from "antd";
import React, { useMemo } from "react"; import React, { useMemo } from "react";
import { Title } from "../../../../components/Title.jsx"; import { Title } from "../../../../components/Title.jsx";
import { usePostamatesAndPvzGroups } from "../../../../api.js"; import { usePostamatesAndPvzGroups } from "../../../../api.js";
import {fieldHasChanged, getFilteredGroups} from "../../../../utils.js"; import { fieldHasChanged, getFilteredGroups } from "../../../../utils.js";
import {CloseOutlined} from "@ant-design/icons"; import { CloseOutlined } from "@ant-design/icons";
export const AdvancedFilters = ({onClose}) => { export const AdvancedFilters = ({onClose}) => {
const { filters, ranges, setFilterWithKey } = usePendingPointsFilters(); const { filters, ranges, setFilterWithKey } = usePendingPointsFilters();
@ -191,7 +191,7 @@ export const AdvancedFilters = ({onClose}) => {
> >
<Collapse.Panel <Collapse.Panel
key={`filter_${category.id}`} key={`filter_${category.id}`}
header={<Title type={"primary"} text={category.name} classNameText="text-black" />} header={<Title type={"primary"} text={CATEGORIES_MAP[category.name]} classNameText="text-black" />}
forceRender forceRender
> >
<div className="mt-4 mb-12"> <div className="mt-4 mb-12">
@ -217,7 +217,7 @@ export const AdvancedFilters = ({onClose}) => {
<div className="flex items-center justify-between p-4 border-0 border-t border-solid border-gray-300"> <div className="flex items-center justify-between p-4 border-0 border-t border-solid border-gray-300">
<span>Выбрано: {selectedCnt}</span> <span>Выбрано: {selectedCnt}</span>
<div className="flex gap-2"> <div className="flex gap-2">
<Button disabled={selectedCnt === 0} onClick={() => clearFilters()} type="primary"> <Button disabled={selectedCnt === 0} onClick={() => clearFilters()} type="secondary">
Сбросить фильтры Сбросить фильтры
</Button> </Button>
</div> </div>

@ -14,31 +14,41 @@ export const usePendingTableData = (page, resetPage, pageSize, setPageSize, sort
} = filters; } = filters;
const getParams = () => { const getParams = () => {
let tempParams = { const params = new URLSearchParams({
page, page,
page_size: pageSize, page_size: pageSize,
"prediction_current[]": prediction, "prediction_current[]": prediction,
"status[]": [STATUSES.pending], "status[]": [STATUSES.pending],
"categories[]": categories, "categories[]": categories,
ordering: sort, ordering: sort,
}; });
RANGE_FILTERS_KEYS.map((filterKey) => { RANGE_FILTERS_KEYS.map((filterKey) => {
if (!fieldHasChanged(filters, ranges, filterKey).result) return; if (!fieldHasChanged(filters, ranges, filterKey).result) return;
tempParams = { if (/d[0-9]/.test(filterKey)) {
...tempParams, params.append('dist_to_group__gt', [
[`${filterKey}__gt`]: filters[`${filterKey}__gt`] - 1, filterKey.split('d')[1],
[`${filterKey}__lt`]: filters[`${filterKey}__lt`] + 1, filters[`${filterKey}__gt`] - 1
].join(','));
params.append('dist_to_group__lt', [
filterKey.split('d')[1],
filters[`${filterKey}__lt`] + 1
].join(','));
} else {
params.append(`${filterKey}__gt`, filters[`${filterKey}__gt`] - 1);
params.append(`${filterKey}__lt`, filters[`${filterKey}__lt`] + 1);
} }
}); });
return tempParams; return params;
} }
const {data, isInitialLoading, isFetching} = useQuery( const {data, isInitialLoading, isFetching} = useQuery(
["table", page, filters, sort], ["table", page, filters, sort],
async () => { async () => {
const params = new URLSearchParams(getParams()); const params = getParams();
return await getPoints(params, region); return await getPoints(params, region);
}, },

Loading…
Cancel
Save