import { useState } from 'react'
import useSWR from 'swr'
import { fetcher } from '../../http/axiosInstance'
import { BASE_URL } from '../../constants'
import { NavLink, Stack, Text } from '@mantine/core';
import { IconChevronDown } from '@tabler/icons-react';
import { setSelectedObjectType } from '../../store/map';
import { setCurrentObjectId, useObjectsStore } from '../../store/objects';
const ObjectTree = ({
map_id
}: {
map_id: string,
}) => {
const { selectedYear, selectedDistrict } = useObjectsStore().id[map_id]
const [existingCount, setExistingCount] = useState(0)
const [planningCount, setPlanningCount] = useState(0)
const { data: existingObjectsList } = useSWR(
selectedYear && selectedDistrict ? `/general/objects/list?year=${selectedYear}&city_id=${selectedDistrict}&planning=0` : null,
(url) => fetcher(url, BASE_URL.ems).then(res => {
if (Array.isArray(res)) {
let count = 0
res.forEach(el => {
count = count + el.count
})
setExistingCount(count)
}
return res
}),
{
revalidateOnFocus: false
}
)
const { data: planningObjectsList } = useSWR(
selectedYear && selectedDistrict ? `/general/objects/list?year=${selectedYear}&city_id=${selectedDistrict}&planning=1` : null,
(url) => fetcher(url, BASE_URL.ems).then(res => {
if (Array.isArray(res)) {
let count = 0
res.forEach(el => {
count = count + el.count
})
setPlanningCount(count)
}
return res
}),
{
revalidateOnFocus: false
}
)
if (selectedDistrict) {
return (
)
} else {
return (
Выберите регион и населённый пункт, чтобы увидеть список объектов.
)
}
}
interface TypeTreeProps {
label: string;
value: string;
count: number;
objectList: unknown;
planning: number;
map_id: string;
}
const TypeTree = ({
label,
objectList,
count,
planning,
map_id
}: TypeTreeProps) => {
return (
{Array.isArray(objectList) && objectList.map(list => (
))}
)
}
interface IObjectList {
label: string;
id: number;
planning: number;
count: number;
map_id: string;
}
const ObjectList = ({
label,
id,
planning,
count,
map_id
}: IObjectList) => {
const { selectedDistrict, selectedYear } = useObjectsStore().id[map_id]
const { data } = useSWR(
selectedDistrict && selectedYear ? `/general/objects/list?type=${id}&city_id=${selectedDistrict}&year=${selectedYear}&planning=${planning}` : null,
(url) => fetcher(url, BASE_URL.ems),
{
revalidateOnFocus: false,
revalidateIfStale: false
}
)
return (
{
setSelectedObjectType(map_id, id)
}} rightSection={} p={0} label={`${label} ${count ? `(${count})` : ''}`}>
{Array.isArray(data) && data.map((type) => (
setCurrentObjectId(map_id, type.object_id)} />
))}
)
}
export default ObjectTree