diff --git a/src/Components/Input/TextAreaInput.tsx b/src/Components/Input/TextAreaInput.tsx
index 9b6520af..8f72ff4c 100644
--- a/src/Components/Input/TextAreaInput.tsx
+++ b/src/Components/Input/TextAreaInput.tsx
@@ -32,7 +32,7 @@ export function TextAreaInput({ labelTitle, dataField, labelStyle, containerStyl
let values: KeyValue[] = [];
tags.map(tag => {
- values.push({ key: tag.id, value: tag.id, color: tag.color })
+ values.push({ key: tag.name, value: tag.name, color: tag.color })
})
var tribute = new Tribute({
diff --git a/src/Components/Map/Layer.tsx b/src/Components/Map/Layer.tsx
index b091c5ff..4775a752 100644
--- a/src/Components/Map/Layer.tsx
+++ b/src/Components/Map/Layer.tsx
@@ -122,7 +122,7 @@ export const Layer = ({
addTag(newtag);
setNewTagsToAdd(current =>
current.filter(tag => {
- return tag.id !== newtag.id;
+ return tag.name !== newtag.name;
}),
)
})
@@ -135,7 +135,7 @@ export const Layer = ({
items.
filter(item => item.layer?.name === name)?.
filter(item =>
- filterTags.length == 0 ? item : filterTags.every(tag => getItemTags(item).some(filterTag => filterTag.id.toLocaleLowerCase() === tag.id.toLocaleLowerCase())))?.
+ filterTags.length == 0 ? item : filterTags.every(tag => getItemTags(item).some(filterTag => filterTag.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())))?.
filter(item => item.layer && isLayerVisible(item.layer)).
map((item: Item) => {
if (getValue(item, itemLongitudeField) && getValue(item, itemLatitudeField)) {
@@ -152,8 +152,8 @@ export const Layer = ({
}
if(allTagsLoaded) {
item[itemTextField].toLocaleLowerCase().match(hashTagRegex)?.map(tag=> {
- if ((!tags.find((t) => t.id.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase()))&& !newTagsToAdd.find((t) => t.id.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {
- const newTag = {id: tag.slice(1).toLocaleLowerCase(), color: randomColor()};
+ if ((!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase()))&& !newTagsToAdd.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {
+ const newTag = {id: crypto.randomUUID(), name: tag.slice(1).toLocaleLowerCase(), color: randomColor()};
setNewTagsToAdd(current => [...current, newTag]);
}
});
diff --git a/src/Components/Map/Subcomponents/Controls/SearchControl.tsx b/src/Components/Map/Subcomponents/Controls/SearchControl.tsx
index b454b59f..98d4213e 100644
--- a/src/Components/Map/Subcomponents/Controls/SearchControl.tsx
+++ b/src/Components/Map/Subcomponents/Controls/SearchControl.tsx
@@ -61,7 +61,7 @@ export const SearchControl = ({ clusterRef }) => {
if (item.layer?.itemTextField) item.text = getValue(item, item.layer.itemTextField)
return item.name?.toLowerCase().includes(value.toLowerCase()) || item.text?.toLowerCase().includes(value.toLowerCase())
}))
- setTagsResults(tags.filter(tag => tag.id?.toLowerCase().includes(value.toLowerCase())))
+ setTagsResults(tags.filter(tag => tag.name?.toLowerCase().includes(value.toLowerCase())))
}, 500, [value]);
@@ -93,11 +93,11 @@ export const SearchControl = ({ clusterRef }) => {
{tagsResults.length > 0 &&
{tagsResults.map(tag => (
-
{
+
{
addFilterTag(tag)
window.history.pushState({}, "", `/`)
}}>
- #{capitalizeFirstLetter(tag.id)}
+ #{capitalizeFirstLetter(tag.name)}
))}
diff --git a/src/Components/Map/Subcomponents/Controls/TagsControl.tsx b/src/Components/Map/Subcomponents/Controls/TagsControl.tsx
index c3d8cc0f..5f51d35a 100644
--- a/src/Components/Map/Subcomponents/Controls/TagsControl.tsx
+++ b/src/Components/Map/Subcomponents/Controls/TagsControl.tsx
@@ -13,7 +13,7 @@ export const TagsControl = () => {
-
#{capitalizeFirstLetter(tag.id)}
+
#{capitalizeFirstLetter(tag.name)}
)
}
diff --git a/src/Components/Map/Subcomponents/ItemFormPopup.tsx b/src/Components/Map/Subcomponents/ItemFormPopup.tsx
index 459bb155..78abc2c6 100644
--- a/src/Components/Map/Subcomponents/ItemFormPopup.tsx
+++ b/src/Components/Map/Subcomponents/ItemFormPopup.tsx
@@ -57,8 +57,8 @@ export function ItemFormPopup(props: ItemFormPopupProps) {
setSpinner(true);
formItem.text && formItem.text.toLocaleLowerCase().match(hashTagRegex)?.map(tag=> {
- if (!tags.find((t) => t.id.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {
- addTag({id: tag.slice(1).toLocaleLowerCase(), color: randomColor()})
+ if (!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {
+ addTag({id: crypto.randomUUID(), name: tag.slice(1).toLocaleLowerCase(), color: randomColor()})
}
});
diff --git a/src/Components/Map/Subcomponents/ItemPopupComponents/TextView.tsx b/src/Components/Map/Subcomponents/ItemPopupComponents/TextView.tsx
index 308aebb3..fa484269 100644
--- a/src/Components/Map/Subcomponents/ItemPopupComponents/TextView.tsx
+++ b/src/Components/Map/Subcomponents/ItemPopupComponents/TextView.tsx
@@ -92,7 +92,7 @@ export const TextView = ({ item, truncate = false}: { item?: Item, truncate?: bo
return (
{
e.stopPropagation();
addFilterTag(tag!);
@@ -123,7 +123,7 @@ export const TextView = ({ item, truncate = false}: { item?: Item, truncate?: bo
);
}
if (href?.startsWith("#")) {
- const tag = tags.find(t => t.id.toLowerCase() == decodeURI(href).slice(1).toLowerCase())
+ const tag = tags.find(t => t.name.toLowerCase() == decodeURI(href).slice(1).toLowerCase())
return {children};
} else {
return (
diff --git a/src/Components/Map/hooks/useTags.tsx b/src/Components/Map/hooks/useTags.tsx
index 78b10d49..f9c607c8 100644
--- a/src/Components/Map/hooks/useTags.tsx
+++ b/src/Components/Map/hooks/useTags.tsx
@@ -13,7 +13,6 @@ type UseTagManagerResult = ReturnType;
const TagContext = createContext({
tags: [],
addTag: () => { },
- removeTag: () => { },
setTagApi: () => { },
setTagData: () => { },
getItemTags: () => [],
@@ -23,7 +22,6 @@ const TagContext = createContext({
function useTagsManager(initialTags: Tag[]): {
tags: Tag[];
addTag: (tag: Tag) => void;
- removeTag: (id: string) => void;
setTagApi: (api: ItemsApi) => void;
setTagData: (data: Tag[]) => void;
getItemTags: (item: Item) => Tag[];
@@ -36,16 +34,13 @@ function useTagsManager(initialTags: Tag[]): {
switch (action.type) {
case "ADD":
const exist = state.find((tag) =>
- tag.id.toLocaleLowerCase() === action.tag.id.toLocaleLowerCase() ? true : false
+ tag.id === action.tag.id ? true : false
);
if (!exist) return [
...state,
- { ...action.tag, id: action.tag.id.toLocaleLowerCase() }
+ { ...action.tag}
];
else return state;
-
- case "REMOVE":
- return state.filter(({ id }) => id !== action.id.toLocaleLowerCase());
default:
throw new Error();
}
@@ -58,7 +53,7 @@ function useTagsManager(initialTags: Tag[]): {
const result = await api.getItems();
if (result) {
result.map(tag => {
- tag.id = tag.id.toLocaleLowerCase();
+ tag.name = tag.name.toLocaleLowerCase();
dispatch({ type: "ADD", tag })
})
setallTagsLoaded(true);
@@ -67,7 +62,7 @@ function useTagsManager(initialTags: Tag[]): {
const setTagData = useCallback((data: Tag[]) => {
data.map(tag => {
- tag.id = tag.id.toLocaleLowerCase();
+ tag.name = tag.name.toLocaleLowerCase();
dispatch({ type: "ADD", tag })
})
}, []);
@@ -77,33 +72,26 @@ function useTagsManager(initialTags: Tag[]): {
type: "ADD",
tag,
});
- if (!tags.some((t) => t.id.toLocaleLowerCase() === tag.id.toLocaleLowerCase())) {
+ if (!tags.some((t) => t.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())) {
api?.createItem && api.createItem(tag);
}
};
- const removeTag = useCallback((id: string) => {
- dispatch({
- type: "REMOVE",
- id,
- });
- api?.deleteItem && api.deleteItem(id);
- }, []);
const getItemTags = useCallback((item: Item) => {
const text = item?.layer?.itemTextField && item ? getValue(item, item.layer?.itemTextField) : undefined;
const itemTagStrings = text?.toLocaleLowerCase().match(hashTagRegex);
const itemTags: Tag[] = [];
itemTagStrings?.map(tag => {
- if (tags.find(t => t.id === tag.slice(1))) {
- itemTags.push(tags.find(t => t.id === tag.slice(1))!)
+ if (tags.find(t => t.name === tag.slice(1))) {
+ itemTags.push(tags.find(t => t.name === tag.slice(1))!)
}
})
return itemTags
}, [tags]);
- return { tags, addTag, removeTag, setTagApi, setTagData, getItemTags, allTagsLoaded };
+ return { tags, addTag, setTagApi, setTagData, getItemTags, allTagsLoaded };
}
export const TagsProvider: React.FunctionComponent<{
@@ -124,11 +112,6 @@ export const useAddTag = (): UseTagManagerResult["addTag"] => {
return addTag;
};
-export const useRemoveTag = (): UseTagManagerResult["removeTag"] => {
- const { removeTag } = useContext(TagContext);
- return removeTag;
-};
-
export const useSetTagApi = (): UseTagManagerResult["setTagApi"] => {
const { setTagApi } = useContext(TagContext);
return setTagApi;
diff --git a/src/types.ts b/src/types.ts
index 770e8ede..309fa6e9 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -70,6 +70,7 @@ export class Geometry {
export interface Tag {
color: string;
id: string;
+ name: string;
}
export interface ItemsApi {