diff --git a/src/Components/Map/Layer.tsx b/src/Components/Map/Layer.tsx
index fa46abab..91284a5a 100644
--- a/src/Components/Map/Layer.tsx
+++ b/src/Components/Map/Layer.tsx
@@ -30,6 +30,7 @@ export const Layer = ({
api,
itemType,
itemNameField = 'name',
+ itemSubnameField,
itemTextField = 'text',
itemAvatarField,
itemColorField,
@@ -41,6 +42,7 @@ export const Layer = ({
itemNeedsField,
onlyOnePerOwner = false,
customEditLink,
+ customEditParameter,
setItemFormPopup,
itemFormPopup,
clusterRef
@@ -55,7 +57,6 @@ export const Layer = ({
const addMarker = useAddMarker();
const addPopup = useAddPopup();
const leafletRefs = useLeafletRefs();
- const resetFilterTags = useResetFilterTags();
const location = useLocation();
@@ -76,8 +77,8 @@ export const Layer = ({
useEffect(() => {
- data && setItemsData({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemType, itemNameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, setItemFormPopup, itemFormPopup, clusterRef });
- api && setItemsApi({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemType, itemNameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, setItemFormPopup, itemFormPopup, clusterRef });
+ data && setItemsData({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemType, itemNameField, itemSubnameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, customEditParameter, setItemFormPopup, itemFormPopup, clusterRef });
+ api && setItemsApi({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemType, itemNameField, itemSubnameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, customEditParameter, setItemFormPopup, itemFormPopup, clusterRef });
}, [data, api])
useMapEvents({
@@ -103,9 +104,8 @@ export const Layer = ({
if (window.location.pathname.split("/")[2]) {
const id = window.location.pathname.split("/")[2]
const marker = leafletRefs[id]?.marker;
- resetFilterTags();
- if (marker && filterTags.length == 0) {
- marker !== null && clusterRef?.zoomToShowLayer(marker, () => {
+ if (marker) {
+ marker && clusterRef.hasLayer(marker) && clusterRef?.zoomToShowLayer(marker, () => {
marker.openPopup();
});
const item = leafletRefs[id]?.item;
diff --git a/src/Components/Map/Subcomponents/Controls/SearchControl.tsx b/src/Components/Map/Subcomponents/Controls/SearchControl.tsx
index abbe2a67..ad28b28b 100644
--- a/src/Components/Map/Subcomponents/Controls/SearchControl.tsx
+++ b/src/Components/Map/Subcomponents/Controls/SearchControl.tsx
@@ -116,12 +116,11 @@ export const SearchControl = () => {
{itemsResults.slice(0, 5).map(item => (
{
const marker = Object.entries(leafletRefs).find(r => r[1].item == item)?.[1].marker;
- resetFilterTags();
- if(marker && filterTags.length == 0){
- navigate(`/${item.layer.name}/${item.id}`)
+ if(marker){
+ navigate(`/${item.layer.name}/${item.id}?${new URLSearchParams(window.location.search)}`)
}
else {
- navigate("item/"+item.id)
+ navigate("item/"+item.id+"?"+new URLSearchParams(window.location.search))
}
}
diff --git a/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx b/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx
index 4f81c846..400b1f1f 100644
--- a/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx
+++ b/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx
@@ -10,7 +10,7 @@ import { useMap } from "react-leaflet";
-export function HeaderView({ item, api, editCallback, deleteCallback, setPositionCallback, itemNameField, itemAvatarField, loading, hideMenu = false, big = false }: {
+export function HeaderView({ item, api, editCallback, deleteCallback, setPositionCallback, itemNameField, itemSubnameField, itemAvatarField, loading, hideMenu = false, big = false, truncateSubname = true, hideSubname = false }: {
item: Item,
api?: ItemsApi
,
editCallback?: any,
@@ -18,10 +18,12 @@ export function HeaderView({ item, api, editCallback, deleteCallback, setPositio
setPositionCallback?: any,
itemNameField?: string,
itemAvatarField?: string,
+ itemSubnameField?: string,
loading?: boolean,
hideMenu?: boolean,
big?: boolean,
- updatePosition?: boolean
+ hideSubname?: boolean,
+ truncateSubname?:boolean
}) {
@@ -31,8 +33,10 @@ export function HeaderView({ item, api, editCallback, deleteCallback, setPositio
const navigate = useNavigate();
const assetsApi = useAssetApi();
- const avatar = itemAvatarField && getValue(item, itemAvatarField) ? assetsApi.url + getValue(item, itemAvatarField) + `${big ? "?width=160&heigth=160": "?width=80&heigth=80"}` : item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField) && assetsApi.url + getValue(item, item.layer?.itemAvatarField) + `${big ? "?width=160&heigth=160": "?width=80&heigth=80"}`;
+ const avatar = itemAvatarField && getValue(item, itemAvatarField) ? assetsApi.url + getValue(item, itemAvatarField) + `${big ? "?width=160&heigth=160" : "?width=80&heigth=80"}` : item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField) && assetsApi.url + getValue(item, item.layer?.itemAvatarField) + `${big ? "?width=160&heigth=160" : "?width=80&heigth=80"}`;
const title = itemNameField ? getValue(item, itemNameField) : item.layer?.itemNameField && item && getValue(item, item.layer?.itemNameField);
+ const subtitle = itemSubnameField ? getValue(item, itemSubnameField) : item.layer?.itemSubnameField && item && getValue(item, item.layer?.itemSubnameField);
+
const openDeleteModal = async (event: React.MouseEvent) => {
@@ -44,15 +48,27 @@ export function HeaderView({ item, api, editCallback, deleteCallback, setPositio
return (
<>
-
-
-
- {avatar &&
-

}
-
{title&& title}
-
-
-
e.stopPropagation()} className={`${big ? "tw-mt-5":"tw-mt-1"}`}>
+
+
+
+ {avatar && (
+

+ )}
+
+
+ {title}
+
+ {subtitle && !hideSubname &&
+ {subtitle}
+
}
+
+
+
+
e.stopPropagation()} className={`${big ? "tw-mt-5" : "tw-mt-1"}`}>
{(api?.deleteItem || item.layer?.api?.updateItem)
&& (hasUserPermission(api?.collectionName!, "delete", item) || hasUserPermission(api?.collectionName!, "update", item))
&& !hideMenu &&
@@ -64,20 +80,20 @@ export function HeaderView({ item, api, editCallback, deleteCallback, setPositio
{((api?.updateItem && hasUserPermission(api.collectionName!, "update", item)) || item.layer?.customEditLink) && editCallback && -
- item.layer?.customEditLink? navigate(item.layer.customEditLink) : editCallback()}>
+ item.layer?.customEditLink ? navigate(`${item.layer.customEditLink}/${item.layer.customEditParameter && getValue(item, item.layer.customEditParameter)}`) : editCallback(e)}>
}
- {((api?.updateItem && hasUserPermission(api.collectionName!, "update", item))) && setPositionCallback &&-
+ {((api?.updateItem && hasUserPermission(api.collectionName!, "update", item))) && setPositionCallback &&
-
-
+
}
- {api?.deleteItem && hasUserPermission(api.collectionName!, "delete", item) && deleteCallback &&-
+ {api?.deleteItem && hasUserPermission(api.collectionName!, "delete", item) && deleteCallback &&
-
{loading ?
:
diff --git a/src/Components/Map/Subcomponents/ItemViewPopup.tsx b/src/Components/Map/Subcomponents/ItemViewPopup.tsx
index 08c8de74..9b2fde73 100644
--- a/src/Components/Map/Subcomponents/ItemViewPopup.tsx
+++ b/src/Components/Map/Subcomponents/ItemViewPopup.tsx
@@ -63,7 +63,7 @@ export const ItemViewPopup = React.forwardRef((props: ItemViewPopupProps, ref: a
return (
-
{map.closePopup();setSelectPosition(props.item); navigate("/")}} loading={loading} />
+ {map.closePopup();setSelectPosition(props.item); navigate("/")}} loading={loading} hideSubname/>
{props.children ?
diff --git a/src/Components/Map/hooks/useSelectPosition.tsx b/src/Components/Map/hooks/useSelectPosition.tsx
index f4d59d9a..0b860405 100644
--- a/src/Components/Map/hooks/useSelectPosition.tsx
+++ b/src/Components/Map/hooks/useSelectPosition.tsx
@@ -18,7 +18,7 @@ function useSelectPositionManager(): {
setMarkerClicked: React.Dispatch
>;
} {
const [selectPosition, setSelectPosition] = useState(null);
- const [markerClicked, setMarkerClicked] = useState- ();
+ const [markerClicked, setMarkerClicked] = useState
- ();
const updateItem = useUpdateItem();
const hasUserPermission = useHasUserPermission();
@@ -43,6 +43,7 @@ function useSelectPositionManager(): {
await linkItem(updatedItem.id);
toast.success("Item position updated");
setSelectPosition(null);
+ setMarkerClicked(null);
}
}
else {
@@ -55,9 +56,6 @@ function useSelectPositionManager(): {
const linkItem = async (id: string) => {
if (markerClicked) {
let new_relations = markerClicked.relations || [];
- console.log(new_relations);
- console.log(id);
-
if (!new_relations.some(r => r.related_items_id == id)) {
new_relations?.push({ items_id: markerClicked.id, related_items_id: id })
@@ -80,9 +78,6 @@ function useSelectPositionManager(): {
return { selectPosition, setSelectPosition, setMarkerClicked };
}
-
-
-
export const SelectPositionProvider: React.FunctionComponent<{
children?: React.ReactNode
}> = ({ children }) => (
diff --git a/src/Components/Profile/LinkedItemsHeaderView.tsx b/src/Components/Profile/LinkedItemsHeaderView.tsx
index 44bef0b6..d6bd9810 100644
--- a/src/Components/Profile/LinkedItemsHeaderView.tsx
+++ b/src/Components/Profile/LinkedItemsHeaderView.tsx
@@ -6,11 +6,12 @@ import { useAssetApi } from "../AppShell/hooks/useAssets";
-export function LinkedItemsHeaderView({ item, unlinkCallback, itemNameField, itemAvatarField, loading, unlinkPermission }: {
+export function LinkedItemsHeaderView({ item, unlinkCallback, itemNameField, itemAvatarField, loading, unlinkPermission, itemSubnameField }: {
item: Item,
unlinkCallback?: any,
itemNameField?: string,
itemAvatarField?: string,
+ itemSubnameField?: string,
loading?: boolean,
unlinkPermission: boolean
}) {
@@ -20,32 +21,39 @@ export function LinkedItemsHeaderView({ item, unlinkCallback, itemNameField, ite
const avatar = itemAvatarField && getValue(item, itemAvatarField) ? assetsApi.url + getValue(item, itemAvatarField) : item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField) && assetsApi.url + getValue(item, item.layer?.itemAvatarField);
const title = itemNameField ? getValue(item, itemNameField) : item.layer?.itemNameField && item && getValue(item, item.layer?.itemNameField);
+ const subtitle = itemSubnameField ? getValue(item, itemSubnameField) : item.layer?.itemSubnameField && item && getValue(item, item.layer?.itemSubnameField);
+
-
useEffect(() => {
-
+
}, [item])
-
+
return (
<>
-
-
-
{
- avatar ?
-
-

+
+
+
+ {avatar && (
+

+ )}
+
+
+ {title}
- :
- ""
- }
-
{title ? title : item.name}
-
+ {subtitle &&
+ {subtitle}
+
}
+
e.stopPropagation()}>
- { unlinkPermission &&
+ {unlinkPermission &&