filters fixes

dev
RekHoto 3 years ago
parent 4ed8116565
commit 6f4a4d0252

@ -23,7 +23,7 @@ if (import.meta.env.MODE === "development") {
mountStoreDevtool("PointSelection", usePointSelection);
}
const version = '0.0.5';
const version = '0.0.6';
function App() {

@ -24,7 +24,12 @@ import { icons } from "../icons/icons-config";
import { LastMLRun } from "./LastMLRun";
import { useGetPendingPointsRange, useOtherGroups, usePostamatesAndPvzGroups } from "../api.js";
import { getFilteredGroups, transliterate } from "../utils.js";
import { RANGE_FILTERS_KEYS, RANGE_FILTERS_MAP, usePendingPointsFilters } from "../stores/usePendingPointsFilters.js";
import {
CATEGORIES_MAP,
RANGE_FILTERS_KEYS,
RANGE_FILTERS_MAP,
usePendingPointsFilters
} from "../stores/usePendingPointsFilters.js";
export const MapComponent = () => {
const mapRef = useRef(null);
@ -70,7 +75,7 @@ export const MapComponent = () => {
filteredPostamatesGroups.map((item) => {
RANGE_FILTERS_MAP[`category${item.id}`] = {
name: item.name,
name: CATEGORIES_MAP[item.name],
};
item.groups.map((groupItem) => {
if (!RANGE_FILTERS_KEYS.includes(`d${groupItem.id}`)) RANGE_FILTERS_KEYS.push(`d${groupItem.id}`);

@ -3,6 +3,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
import { STATUSES } from "./config";
import { usePointSelection } from "./stores/usePointSelection";
import { RANGE_FILTERS_KEYS, usePendingPointsFilters } from "./stores/usePendingPointsFilters";
import {fieldHasChanged} from "./utils.js";
export const BASE_URL = import.meta.env.VITE_API_URL;
@ -70,24 +71,45 @@ export const useGetTotalInitialPointsCount = () => {
};
export const useGetFilteredPendingPointsCount = () => {
const { filters } = usePendingPointsFilters();
const { prediction, categories, region } = filters;
const { filters, ranges } = usePendingPointsFilters();
const {
prediction,
categories,
region,
} = filters;
const {
selection: { included },
} = usePointSelection();
const includedIds = [...included];
const getParams = () => {
let tempParams = {
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,
}
});
return tempParams;
}
return useQuery(
["filtered-points", filters, includedIds],
async () => {
const params = new URLSearchParams({
page: 1,
page_size: 1,
"prediction_current[]": prediction,
"status[]": [STATUSES.pending],
"categories[]": categories,
"included[]": includedIds,
...getParams()
});
return await getPoints(params, region);

@ -22,7 +22,7 @@ export const AdvancedFilters = ({onClose}) => {
if (fieldHasChanged(filters, ranges, key).result) counter += 1;
});
return counter;
}, [filters]);
}, [filters, ranges]);
const clearFilters = () => {
RANGE_FILTERS_KEYS.map((key) => {
@ -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 onClick={() => clearFilters()} type="primary">
<Button disabled={selectedCnt === 0} onClick={() => clearFilters()} type="primary">
Сбросить фильтры
</Button>
</div>

@ -19,7 +19,7 @@ export const AdvancedFiltersWrapper = () => {
if (fieldHasChanged(filters, ranges, key).result) counter += 1;
})
return counter;
}, [filters]);
}, [filters, ranges]);
const getPopoverContent = () => {
const keys = RANGE_FILTERS_KEYS.map((key) => {
@ -92,7 +92,7 @@ export const AdvancedFiltersWrapper = () => {
{selectedCnt}
</Popover>
</div>
<RightOutlined rotate={open ? 0 : 180} className="mt-0.5 mr-1"/>
<RightOutlined rotate={open ? 180 : 0} className="mt-0.5 mr-1"/>
</Button>
</Dropdown>
);

@ -40,6 +40,11 @@ export const RANGE_FILTERS_MAP = {
},
}
export const CATEGORIES_MAP = {
"ПВЗ": "Расстояние до ПВЗ сети",
"Постаматы прочих сетей": "Расстояние до постамата сети",
}
export const INITIAL = {
prediction: [0, 0],
categories: [],

Loading…
Cancel
Save