observatories icons fixed

This commit is contained in:
Emily Neighbour 2025-04-07 13:13:19 +01:00
parent ce30fb1ed7
commit 9f5cc43f3b
4 changed files with 38 additions and 37 deletions

View File

@ -15,7 +15,6 @@ export default function Observatories() {
title: "Earthquake - Berlin Observatory", title: "Earthquake - Berlin Observatory",
text1: "Logged by ", text1: "Logged by ",
text2: "30 minutes ago", text2: "30 minutes ago",
magnitude: 8.5,
longitude: 10.4515, // Near Berlin, Germany longitude: 10.4515, // Near Berlin, Germany
latitude: 52.52, latitude: 52.52,
}, },
@ -24,7 +23,6 @@ export default function Observatories() {
title: "New Observatory - Phuket, Thailand", title: "New Observatory - Phuket, Thailand",
text1: "Dr. Neil Armstrong", text1: "Dr. Neil Armstrong",
text2: "2 weeks ago", text2: "2 weeks ago",
magnitude: 0.0,
longitude: -122.4194, longitude: -122.4194,
latitude: 37.7749, latitude: 37.7749,
}, },
@ -33,7 +31,6 @@ export default function Observatories() {
title: "Observatory Scientist Change", title: "Observatory Scientist Change",
text1: "Dr. Samantha Green new lead scientist", text1: "Dr. Samantha Green new lead scientist",
text2: "1 month ago", text2: "1 month ago",
magnitude: 0.0,
longitude: 139.6917, longitude: 139.6917,
latitude: 35.6762, latitude: 35.6762,
}, },

View File

@ -88,7 +88,9 @@ export default function Sidebar({
{/* <p className="text-xs text-neutral-600">{event.text1}</p> */} {/* <p className="text-xs text-neutral-600">{event.text1}</p> */}
<p className="text-xs text-neutral-500 mt-1">{event.text2}</p> <p className="text-xs text-neutral-500 mt-1">{event.text2}</p>
</div> </div>
<MagnitudeNumber magnitude={event.magnitude} /> {
(event.magnitude) ? <MagnitudeNumber magnitude={event.magnitude} /> : <></>
}
</button> </button>
))} ))}
</div> </div>

View File

@ -78,56 +78,57 @@ function MapComponent({ events, selectedEventId, setSelectedEventId, hoveredEven
// Add markers with location pulse // Add markers with location pulse
events.forEach((event) => { events.forEach((event) => {
const color = getMagnitudeColor(event.magnitude);
//<GiObservatory />
// Create marker container
const quakeElement = document.createElement("div"); const quakeElement = document.createElement("div");
quakeElement.style.width = "50px"; // Increased size to accommodate pulse
quakeElement.style.height = "50px";
quakeElement.style.position = "absolute";
quakeElement.style.display = "flex";
quakeElement.style.alignItems = "center";
quakeElement.style.justifyContent = "center";
// Central dot
const dotElement = document.createElement("div"); const dotElement = document.createElement("div");
dotElement.style.width = "10px";
dotElement.style.height = "10px";
dotElement.style.backgroundColor = color;
dotElement.style.borderRadius = "50%";
dotElement.style.position = "absolute";
dotElement.style.zIndex = "2"; // Ensure dot is above pulse
// Pulsing ring
const pulseElement = document.createElement("div"); const pulseElement = document.createElement("div");
pulseElement.className = "location-pulse";
pulseElement.style.width = "20px"; // Initial size if (event.magnitude) {
pulseElement.style.height = "20px"; const color = getMagnitudeColor(event.magnitude);
pulseElement.style.backgroundColor = `${color}80`; // Color with 50% opacity (hex alpha)
pulseElement.style.borderRadius = "50%"; // Create marker container
pulseElement.style.position = "absolute"; quakeElement.style.width = "50px"; // Increased size to accommodate pulse
pulseElement.style.zIndex = "1"; quakeElement.style.height = "50px";
quakeElement.style.position = "absolute";
quakeElement.style.display = "flex";
quakeElement.style.alignItems = "center";
quakeElement.style.justifyContent = "center";
// Central dot
dotElement.style.width = "10px";
dotElement.style.height = "10px";
dotElement.style.backgroundColor = color;
dotElement.style.borderRadius = "50%";
dotElement.style.position = "absolute";
dotElement.style.zIndex = "2"; // Ensure dot is above pulse
// Pulsing ring
pulseElement.className = "location-pulse";
pulseElement.style.width = "20px"; // Initial size
pulseElement.style.height = "20px";
pulseElement.style.backgroundColor = `${color}80`; // Color with 50% opacity (hex alpha)
pulseElement.style.borderRadius = "50%";
pulseElement.style.position = "absolute";
pulseElement.style.zIndex = "1";
}
// Observatory marker // Observatory marker
//<GiObservatory />
const observatoryElement = document.createElement("div"); const observatoryElement = document.createElement("div");
observatoryElement.style.fontSize = "24px"; // Adjust icon size
observatoryElement.style.color = "#FF5722"; // Set color
const root = createRoot(observatoryElement); // `createRoot` is now the standard API const root = createRoot(observatoryElement); // `createRoot` is now the standard API
root.render( root.render(
<GiObservatory style={{ fontSize: "24px", color: "#FF5722" }} /> <GiObservatory className="text-blue-600 text-2xl drop-shadow-lg" />
); );
quakeElement.appendChild(pulseElement); quakeElement.appendChild(pulseElement);
quakeElement.appendChild(dotElement); quakeElement.appendChild(dotElement);
const marker = new mapboxgl.Marker({ element: mapType === "observatories"? observatoryElement : quakeElement }).setLngLat([event.longitude, event.latitude]).addTo(map.current!); const marker = new mapboxgl.Marker({ element: mapType === "observatories" ? observatoryElement : quakeElement }).setLngLat([event.longitude, event.latitude]).addTo(map.current!);
const popup = new mapboxgl.Popup({ offset: 25, closeButton: false, anchor: "bottom" }).setHTML(` const popup = new mapboxgl.Popup({ offset: 25, closeButton: false, anchor: "bottom" }).setHTML(`
<div> <div>
<h3>${event.title}</h3> <h3>${event.title}</h3>
<p>Magnitude: ${event.magnitude}</p> ${ mapType === "observatories" ? `<p>${event.text1}</p>` : `<p>Magnitude: ${event.magnitude}</p>`}
<p>${event.text2}</p> <p>${event.text2}</p>
</div> </div>
`); `);

View File

@ -1,9 +1,10 @@
interface Event { interface Event {
id: string; id: string;
title: string; title: string;
magnitude: number; magnitude?: number;
longitude: number; longitude: number;
latitude: number; latitude: number;
text1: string;
text2: string; text2: string;
} }