Skip to content
This repository was archived by the owner on Aug 7, 2024. It is now read-only.

Commit 20fd18a

Browse files
committed
Merged Events and Users array in backend and fetching event coordinates with City, State and Country
1 parent 3daed79 commit 20fd18a

4 files changed

Lines changed: 32 additions & 24 deletions

File tree

components/map/Clusters.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import UserMarker from "./UserMarker";
66
import styles from "./Clusters.module.css";
77
import EventMarker from "./EventMarker";
88

9-
export default function Clusters({users, events}) {
9+
export default function Clusters({points}) {
1010
const map = useMap();
1111
const mapB = map.getBounds();
1212
const [bounds, setBounds] = useState([
@@ -33,7 +33,7 @@ export default function Clusters({users, events}) {
3333
})
3434

3535
const { clusters, supercluster } = useSupercluster({
36-
points: [...users,...events],
36+
points: points,
3737
bounds,
3838
zoom,
3939
options: {
@@ -93,8 +93,10 @@ export default function Clusters({users, events}) {
9393
}
9494

9595
// we have a single point to render
96-
return (
97-
cluster.properties.isEvent ? <EventMarker event={cluster} key={name} /> :<UserMarker user={cluster} key={username} />
96+
return cluster.properties.isEvent ? (
97+
<EventMarker event={cluster} key={name} />
98+
) : (
99+
<UserMarker user={cluster} key={username} />
98100
);
99101
})}
100102
</>

components/map/Map.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { MapContainer, TileLayer } from "react-leaflet";
22
import Clusters from "./Clusters";
33
import "leaflet/dist/leaflet.css";
44

5-
export default function Map({ users, events }) {
5+
export default function Map({ points }) {
66
const boundsMap = [
77
[-90, -180], // Southwest coordinates
88
[90, 180], // Northeast coordinates
@@ -23,7 +23,7 @@ export default function Map({ users, events }) {
2323
attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
2424
url="https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"
2525
/>
26-
<Clusters users={users} events={events} />
26+
<Clusters points={points} />
2727
</MapContainer>
2828
);
2929
}

pages/api/system/reload.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,9 @@ export default async function handler(req, res) {
195195
}
196196

197197
// - events
198-
async function getCoordinates(city) {
198+
async function getCoordinates(city,state,country) {
199199
const location = await fetch(
200-
`https://nominatim.openstreetmap.org/?addressdetails=1&q=${city}&format=json&limit=1`
200+
`https://nominatim.openstreetmap.org/?addressdetails=1&city=${city}&state=${state}&country=${country}&format=json&limit=1`
201201
);
202202
const coordinates = await location.json();
203203
const final = {
@@ -213,11 +213,17 @@ export default async function handler(req, res) {
213213
{
214214
events: await Promise.all(
215215
profile.events.map(async (event, position) => {
216-
let coordinates = event.location
217-
? event.location.city
218-
? await getCoordinates(event.location.city)
219-
: ""
220-
: "";
216+
let coordinates =
217+
event.location &&
218+
event.location.city &&
219+
event.location.state &&
220+
event.location.country
221+
? await getCoordinates(
222+
event.location.city,
223+
event.location.state,
224+
event.location.country
225+
)
226+
: "";
221227
return {
222228
isVirtual: event.isVirtual,
223229
color: event.color,

pages/map.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export async function getStaticProps() {
2323
users: [],
2424
tags: [],
2525
events:[],
26+
points: []
2627
};
2728
try {
2829
data.users = await getUsers();
@@ -120,16 +121,16 @@ export async function getStaticProps() {
120121
}
121122
}
122123
});
123-
124+
data.points=[...data.users,...data.events]
124125
return {
125126
props: { data },
126127
revalidate: pageConfig.revalidateSeconds,
127128
};
128129
}
129130

130131
export default function Map({ data }) {
131-
let { users, tags, events } = data;
132-
const [filteredUsers, setFilteredUsers] = useState([]);
132+
let { tags, points } = data;
133+
const [filteredPoints, setFilteredPoints] = useState([]);
133134
const [selectedTags, setSelectedTags] = useState(new Set());
134135

135136
let results = [];
@@ -151,12 +152,12 @@ export default function Map({ data }) {
151152
const valueLower = value.toLowerCase();
152153
const terms = [...updateSelectedTagsFilter(value)];
153154

154-
results = users.filter((user) => {
155-
if (user.properties.name.toLowerCase().includes(valueLower)) {
155+
results = points.filter((point) => {
156+
if (point.properties.name.toLowerCase().includes(valueLower)) {
156157
return true;
157158
}
158159

159-
let userTags = user.properties.tags?.map((tag) => tag.toLowerCase());
160+
let userTags = point.properties.tags?.map((tag) => tag.toLowerCase());
160161

161162
if (terms.every((keyword) => userTags?.includes(keyword.toLowerCase()))) {
162163
return true;
@@ -165,11 +166,11 @@ export default function Map({ data }) {
165166
return false;
166167
});
167168

168-
setFilteredUsers(results);
169+
setFilteredPoints(results);
169170
};
170171

171172
const resetFilter = () => {
172-
setFilteredUsers([]);
173+
setFilteredPoints([]);
173174
setSelectedTags(new Set());
174175
};
175176

@@ -208,7 +209,7 @@ export default function Map({ data }) {
208209
<Badge
209210
disable={selectedTags.size == 0 ? true : false}
210211
content={
211-
filteredUsers.length > 0 ? filteredUsers.length : users.length
212+
filteredPoints.length > 0 ? filteredPoints.length : points.length
212213
}
213214
>
214215
<Button
@@ -232,8 +233,7 @@ export default function Map({ data }) {
232233
</div>
233234
<div className="h-screen">
234235
<DynamicMap
235-
users={filteredUsers.length > 0 ? filteredUsers : users}
236-
events={events}
236+
points={filteredPoints.length > 0 ? filteredPoints : points}
237237
/>
238238
</div>
239239
</Page>

0 commit comments

Comments
 (0)