Merge branch 'feature/fixes' into 'dev'

filters fixes

See merge request spatial/postamates_frontend!26
dev
Timofey Malinin 3 years ago
commit f72042f5d1

@ -82,35 +82,42 @@ export const useGetFilteredPendingPointsCount = () => {
} = usePointSelection();
const includedIds = [...included];
const getParams = () => {
let tempParams = {
const params = new URLSearchParams({
page: 1,
page_size: 1,
"prediction_current[]": prediction,
"status[]": [STATUSES.pending],
"categories[]": categories,
"included[]": includedIds,
};
});
RANGE_FILTERS_KEYS.map((filterKey) => {
if (!fieldHasChanged(filters, ranges, filterKey).result) return;
tempParams = {
...tempParams,
[`${filterKey}__gt`]: filters[`${filterKey}__gt`] - 1,
[`${filterKey}__lt`]: filters[`${filterKey}__lt`] + 1,
if (/d[0-9]/.test(filterKey)) {
params.append('dist_to_group__gt', [
filterKey.split('d')[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(
["filtered-points", filters, includedIds],
async () => {
const params = new URLSearchParams({
...getParams()
});
const params = getParams();
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 { Button, Collapse } from "antd";
import React, { useMemo } from "react";
import { Title } from "../../../../components/Title.jsx";
import { usePostamatesAndPvzGroups } from "../../../../api.js";
import {fieldHasChanged, getFilteredGroups} from "../../../../utils.js";
import {CloseOutlined} from "@ant-design/icons";
import { fieldHasChanged, getFilteredGroups } from "../../../../utils.js";
import { CloseOutlined } from "@ant-design/icons";
export const AdvancedFilters = ({onClose}) => {
const { filters, ranges, setFilterWithKey } = usePendingPointsFilters();
@ -191,7 +191,7 @@ export const AdvancedFilters = ({onClose}) => {
>
<Collapse.Panel
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
>
<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">
<span>Выбрано: {selectedCnt}</span>
<div className="flex gap-2">
<Button disabled={selectedCnt === 0} onClick={() => clearFilters()} type="primary">
<Button disabled={selectedCnt === 0} onClick={() => clearFilters()} type="secondary">
Сбросить фильтры
</Button>
</div>

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

Loading…
Cancel
Save