You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.4 KiB

import {useQuery} from "@tanstack/react-query";
import {exportPoints} from "../../../api";
import {handleExportSuccess} from "../ExportButton";
import {appendFiltersInUse} from "../../../utils.js";
import {useDzkhFilters} from "../../../stores/useDzkhFilters.js";
import { useWeatherFilter } from "../../../dzkh-features/WeatherSlider/useWeatherFilter.js";
import { useSimulateAccident } from "../../../stores/useSimulateAccident.js";
import { tempMapper } from "../../../config.js";
import { useUpdateLayerCounter } from "../../../stores/useUpdateLayerCounter.js";
export const useExportData = (enabled, onSettled) => {
const { filters, consumer_filter, source_filter, consumer_type, wall_material, energy_class } = useDzkhFilters();
const { value } = useWeatherFilter();
const { selectedSourceConfig } = useSimulateAccident()
const t = tempMapper[value];
const {
region,
} = filters;
const getParams = () => {
const params = new URLSearchParams();
const customFilters = [];
if (consumer_filter && source_filter) {
const cK = consumer_filter.key + "_" + t;
const sK = source_filter.key + "_" + t;
const cFilter = `${cK}__gte=${consumer_filter.gt}&${cK}__lte=${consumer_filter.lt}`;
const sFilter = `${sK}__gte=${source_filter.gt}&${sK}__lt=${source_filter.lt}`;
customFilters.push(`(${sFilter})|(${cFilter})`);
}
if (selectedSourceConfig) {
if (selectedSourceConfig.sourceId) customFilters.push(`(tp_number=${selectedSourceConfig.sourceId})`);
if (selectedSourceConfig.dispatcherNumber) customFilters.push(`(ods_number=${selectedSourceConfig.dispatcherNumber})`);
}
if (customFilters.length !== 0) {
params.append("filters", customFilters.join("&"));
}
if (consumer_filter && !source_filter) {
params.append(consumer_filter.key + "_" + t + "__gt" , consumer_filter.gt)
params.append(consumer_filter.key + "_" + t + "__lt", consumer_filter.lt)
}
if (source_filter && !consumer_filter) {
params.append(source_filter.key + "_" + t + "__gt" , source_filter.gt)
params.append(source_filter.key + "_" + t + "__lt", source_filter.lt)
}
return params;
}
return useQuery(
["export-initial", filters],
async () => {
return await exportPoints(getParams(), region);
},
{
enabled,
onSuccess: handleExportSuccess,
onSettled,
retry: false,
}
);
};