fix not showing items with grouptypes on maps not filtered

This commit is contained in:
Anton Tranelis 2024-07-21 12:02:40 +02:00
parent b640e2bc97
commit ed3446dc13
2 changed files with 14 additions and 5 deletions

View File

@ -6,7 +6,7 @@ import { ItemViewPopup } from './Subcomponents/ItemViewPopup'
import { useAllItemsLoaded, useItems, useSetItemsApi, useSetItemsData } from './hooks/useItems'
import { useEffect, useState } from 'react'
import { ItemFormPopup } from './Subcomponents/ItemFormPopup'
import { useFilterTags, useIsGroupTypeVisible, useIsLayerVisible } from './hooks/useFilter'
import { useFilterTags, useIsGroupTypeVisible, useIsLayerVisible, useVisibleGroupType } from './hooks/useFilter'
import { useAddTag, useAllTagsLoaded, useGetItemTags, useTags } from './hooks/useTags'
import { useAddMarker, useAddPopup, useLeafletRefs } from './hooks/useLeafletRefs'
import { Popup } from 'leaflet'
@ -81,6 +81,8 @@ export const Layer = ({
const isGroupTypeVisible = useIsGroupTypeVisible();
const visibleGroupTypes = useVisibleGroupType();
useEffect(() => {
@ -149,7 +151,7 @@ export const Layer = ({
filter(item =>
filterTags.length == 0 ? item : filterTags.every(tag => getItemTags(item).some(filterTag => filterTag.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())))?.
filter(item => item.layer && isLayerVisible(item.layer)).
filter(item => item.group_type && isGroupTypeVisible(item.group_type)||item.group_type==null).
filter(item => item.group_type && isGroupTypeVisible(item.group_type)|| visibleGroupTypes.length == 0).
map((item: Item) => {
if (getValue(item, itemLongitudeField) && getValue(item, itemLatitudeField)) {

View File

@ -23,6 +23,7 @@ const FilterContext = createContext<UseFilterManagerResult>({
filterTags: [],
searchPhrase: "",
visibleLayers: [],
visibleGroupTypes: [],
addFilterTag: () => { },
removeFilterTag: () => { },
resetFilterTags: () => { },
@ -41,6 +42,7 @@ function useFilterManager(initialTags: Tag[]): {
filterTags: Tag[];
searchPhrase: string;
visibleLayers: LayerProps[];
visibleGroupTypes: string[];
addFilterTag: (tag: Tag) => void;
removeFilterTag: (name: string) => void;
resetFilterTags: () => void;
@ -117,11 +119,11 @@ function useFilterManager(initialTags: Tag[]): {
if(exist2) return state.filter((groupType) => groupType != action.groupType);
else return [... state, action.groupType];
case "RESET_GROUP_TYPE":
return initialLayers;
return [];
default:
throw new Error();
}
}, initialLayers);
},[]);
const [searchPhrase, searchPhraseSet] = React.useState<string>("");
@ -227,7 +229,7 @@ function useFilterManager(initialTags: Tag[]): {
searchPhraseSet(phrase)
}, []);
return { filterTags, addFilterTag, removeFilterTag, resetFilterTags, setSearchPhrase, searchPhrase, visibleLayers, toggleVisibleLayer, resetVisibleLayers, isLayerVisible, addVisibleLayer, addVisibleGroupType, toggleVisibleGroupType, isGroupTypeVisible };
return { filterTags, addFilterTag, removeFilterTag, resetFilterTags, setSearchPhrase, searchPhrase, visibleLayers, toggleVisibleLayer, resetVisibleLayers, isLayerVisible, addVisibleLayer, visibleGroupTypes, addVisibleGroupType, toggleVisibleGroupType, isGroupTypeVisible };
}
export const FilterProvider: React.FunctionComponent<{
@ -309,4 +311,9 @@ export const useToggleVisibleGroupType = (): UseFilterManagerResult["toggleVisib
export const useIsGroupTypeVisible = (): UseFilterManagerResult["isGroupTypeVisible"] => {
const { isGroupTypeVisible } = useContext(FilterContext);
return isGroupTypeVisible
};
export const useVisibleGroupType = (): UseFilterManagerResult["visibleGroupTypes"] => {
const { visibleGroupTypes } = useContext(FilterContext);
return visibleGroupTypes;
};