stopped using working filters if not changed

dev
RekHoto 2 years ago
parent 853546b34e
commit 0c86da66a6

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

@ -6,6 +6,7 @@ import { useRegionFilterExpression } from "./useRegionFilterExpression";
import { LAYER_IDS } from "./constants";
import { useWorkingPointsFilters } from "../../stores/useWorkingPointsFilters";
import { useSourceLayerName } from "../../api.js";
import { workingFilterHasChanged } from "../../utils.js";
const statusExpression = ["==", ["get", "status"], STATUSES.working];
@ -14,23 +15,24 @@ export const FilteredWorkingPoints = () => {
const layerName = useSourceLayerName();
const {
filters: { deltaTraffic, factTraffic, age, region },
ranges
} = useWorkingPointsFilters();
const regionFilterExpression = useRegionFilterExpression(region);
const deltaExpression = [
const deltaExpression = workingFilterHasChanged(deltaTraffic, ranges, "deltaTraffic") ? [
[">=", ["get", "delta_current"], deltaTraffic[0]],
["<=", ["get", "delta_current"], deltaTraffic[1]],
];
] : [true];
const factExpression = [
const factExpression = workingFilterHasChanged(factTraffic, ranges, "factTraffic") ? [
[">=", ["get", "fact"], factTraffic[0]],
["<=", ["get", "fact"], factTraffic[1]],
];
] : [true];
const ageExpression = [
const ageExpression = workingFilterHasChanged(age, ranges, "age") ? [
[">=", ["get", "age_day"], age[0]],
["<=", ["get", "age_day"], age[1]],
];
] : [true];
const filter = regionFilterExpression
? [

@ -9,6 +9,8 @@ import { Spin } from "antd";
import { useQuery } from "@tanstack/react-query";
import { api, useDbTableName } from "../../../api.js";
import { STATUSES } from "../../../config.js";
import { useEffect } from "react";
import { workingFilterHasChanged } from "../../../utils.js";
const useGetDataRange = () => {
const dbTable = useDbTableName();
@ -34,11 +36,20 @@ const useGetDataRange = () => {
};
export const WorkingPointsFilters = () => {
const { filters, setRegion, clear } = useWorkingPointsFilters();
const { filters, ranges, setRegion, setAge, setDeltaTraffic, setRanges, setFactTraffic, clear } = useWorkingPointsFilters();
const { data: fullRange, isInitialLoading: isFullRangeLoading } =
useGetDataRange();
useEffect(() => {
if (!fullRange) return;
const newRanges = fullRange;
if (workingFilterHasChanged(newRanges.deltaTraffic, ranges, "deltaTraffic")) setDeltaTraffic(fullRange.deltaTraffic);
if (workingFilterHasChanged(newRanges.factTraffic, ranges, "factTraffic")) setFactTraffic(fullRange.deltaTraffic);
if (workingFilterHasChanged(newRanges.age, ranges, "age")) setAge(fullRange.deltaTraffic);
setRanges({...newRanges});
}, [fullRange]);
const activeDynamicFilters = getDynamicActiveFilters(filters, fullRange, [
"deltaTraffic",
"factTraffic",

@ -9,8 +9,16 @@ export const INITIAL = {
age: [-1, 0],
};
export const INITIAL_RANGES = {
region: null,
deltaTraffic: [-10000, 10000],
factTraffic: [-100, 0],
age: [-1, 0],
};
const store = (set) => ({
filters: INITIAL,
ranges: INITIAL_RANGES,
setDeltaTraffic: (value) => {
set((state) => {
@ -35,6 +43,11 @@ const store = (set) => ({
state.filters.region = value;
}),
setRanges: (value) =>
set((state) => {
state.ranges = value;
}),
clear: (fullRange) =>
set((state) => {
if (!fullRange) {

@ -127,5 +127,13 @@ export const predictionHasChanged = (filters, ranges) => {
return gtChanged || ltChanged;
}
export const workingFilterHasChanged = (filter, ranges, fieldKey) => {
if (!ranges[fieldKey]) return false;
const gtChanged = ranges[fieldKey][0] !== filter[0];
const ltChanged = ranges[fieldKey][1] !== filter[1];
return gtChanged || ltChanged;
}
export const isNil = (value) =>
value === undefined || value === null || value === "";

Loading…
Cancel
Save