Skip to content

Commit e82975a

Browse files
committed
centralize popup generation
1 parent 5b4a509 commit e82975a

1 file changed

Lines changed: 24 additions & 13 deletions

File tree

index.html

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -182,37 +182,48 @@
182182
}
183183
}
184184

185+
function getPopupContent(segmentIdx, featureIdx) {
186+
const segment = allSegments[segmentIdx];
187+
if (!segment) return "Unknown segment";
188+
const feature = segment.features[featureIdx];
189+
if (!feature) return "Unknown feature";
190+
const priorityDetails = window.priorities[feature.priority];
191+
return `
192+
${feature.title || 'Unknown'}<br>
193+
<strong>Priority:</strong> ${feature.priority}<br>
194+
<strong>Deadline:</strong> ${formatDeadline(priorityDetails.Deadline)}<br>
195+
<strong>Timeline:</strong> ${priorityDetails.Timeline} hours
196+
`;
197+
}
198+
185199
/**
186200
* Update which segments are rendered based on the current map viewport.
187201
* If any part of a segment is visible, all its features are rendered.
188202
*/
189203
function updateVisibleFeatures() {
190204
const mapBounds = map.getBounds();
191-
allSegments.forEach((segment, segIndex) => {
205+
allSegments.forEach((segment, segmentIdx) => {
192206
if (mapBounds.intersects(segment.bounds)) {
193207
// If this segment isn’t rendered yet, add it.
194-
if (!(segIndex in renderedSegments)) {
208+
if (!(segmentIdx in renderedSegments)) {
195209
const segmentLayer = L.layerGroup();
196-
segment.features.forEach((feature) => {
210+
segment.features.forEach((feature, featureIdx) => {
197211
const color = getPriorityColor(feature.priority);
198212
const priorityDetails = window.priorities[feature.priority];
199213
const polyline = L.polyline(feature.coords, { color, weight: 6 })
200-
.bindPopup(`
201-
${feature.title || 'Unknown'}<br>
202-
<strong>Priority:</strong> ${feature.priority}<br>
203-
<strong>Deadline:</strong> ${formatDeadline(priorityDetails.Deadline)}<br>
204-
<strong>Timeline:</strong> ${priorityDetails.Timeline} hours
205-
`);
214+
.bindPopup(function() {
215+
return getPopupContent(segmentIdx, featureIdx);
216+
});
206217
polyline.addTo(segmentLayer);
207218
});
208219
segmentLayer.addTo(featuresLayer);
209-
renderedSegments[segIndex] = segmentLayer;
220+
renderedSegments[segmentIdx] = segmentLayer;
210221
}
211222
} else {
212223
// If the segment is not visible and is currently rendered, remove it.
213-
if (segIndex in renderedSegments) {
214-
featuresLayer.removeLayer(renderedSegments[segIndex]);
215-
delete renderedSegments[segIndex];
224+
if (segmentIdx in renderedSegments) {
225+
featuresLayer.removeLayer(renderedSegments[segmentIdx]);
226+
delete renderedSegments[segmentIdx];
216227
}
217228
}
218229
});

0 commit comments

Comments
 (0)