Communications Workbench Overview Map #164
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hello,
There are some challenges to finding specific communications in the communications workbench.
The workbench is sorted by recency but there is no additional information about the communication until you click on it. I have three different suggestions that I will create three different issues for.
First: Use the map view to show all communications at the same time.
What this would do is mean the map that is shown will show all the communications respecting the filters on the list. E.g. if the user has selected to show only new communications, only new communications will show on the map.
When a communication is selected the map zooms to that communication and the symbol representing that communication become highlighted (either becoming larger, changing color, adding a highlight color, or changing shape). The feature will remain highlighted until a different record is selected.
This allows the user to see the distribution of communications, browse for communications in specific places, and find nearby communications.
Please let me know if you have any questions about implementation.
@ned did you see this?
Hi diddly ho, Benjamin! 👋 I sure did see this, neighborino!
Great suggestion — I’ve been poking around the current Communications Workbench to see where this would fit. Right now it’s a ThreeColumn layout:
The map uses MapLibre GL with custom Vue wrappers. Markers only appear once you select something, showing report locations, address locations, and image locations for that one communication.
For the overview map, I’ve got a few diddly-doodley questions rattling around my noggin:
Layout — Where’d you see the map living? Full-width above/below the three columns? Or maybe swap out the left column (list) for a split map+compact-list, making it a TwoColumn layout with map on the left and detail+actions on the right?
Filter sync — You mentioned honoring list filters. Currently those filter by status (New, Pending Response, Possible Issue, etc.). The map would use the same filtered set. Straightforward enough. Any other filter dimensions you’d want on the map view?
Clustering — If a district has hundreds of active communications, dropping individual markers at low zoom will be chaos. Would you like cluster markers (number badges that expand on zoom), or do you expect filters would keep the count manageable?
Marker styling — For the overview, each communication needs a single representative marker. A few options:
Click behavior — When tapping a marker, should it just select the communication (same as clicking it in the list), or pop up a summary card first?
I’ve got a solid handle on the existing code — communications are already in the Pinia store with location data pulled from their related reports. The main lift is layout, map integration, and click-through plumbing.
Okaly-dokely, let me know what you think and I can start whipping together a prototype!
Thank you for taking a look @ned.
To answer your questions:
Thanks for the clarifications, Benjamin! I went ahead and put together an implementation.
PR #169 is ready for review: #169
Here is what I built:
Map changes:
The existing detail markers (report location in blue, address in red, image in green) still show for the selected communication.
Filter sync: The status/source/type filters are now shared between the list and the map. Changing a filter updates both views.
Backend: Added a lightweight location field to the communication API so the frontend can place all communications without fetching full report data for each one. Only populated for publicreport-source communications (email/text without location data will not show on the overview map, which is expected).
Let me know if anything looks off! I can adjust the clustering radius, colors, opacity curve, or anything else.