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