Add CA admin UI and extend admin API for the unified platform.

Deliver parsers, events, analytics, and PI management in Vue; fix Telegram session mount and map navigation to events by eventId.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-30 14:40:59 +03:00
co-authored by Cursor
parent 9dfe713668
commit 2c16bc0b56
26 changed files with 2550 additions and 396 deletions
@@ -96,6 +96,18 @@ function bindMarker(marker: L.Marker, obj: MapObject) {
}
}
function panToObject(obj: MapObject) {
if (!map) return;
const zoom = Math.max(map.getZoom(), 12);
map.flyTo([obj.latitude, obj.longitude], zoom, { duration: 0.6 });
}
function panToSelected() {
if (props.selectedId === null) return;
const obj = props.objects.find((item) => item.id === props.selectedId);
if (obj) panToObject(obj);
}
function syncMarkers() {
if (!map || !markersLayer) return;
@@ -175,6 +187,8 @@ onMounted(() => {
markersLayer = L.layerGroup().addTo(map);
mapContainer.value.addEventListener("contextmenu", handleMapContextMenu);
syncMarkers();
panToSelected();
setTimeout(() => map?.invalidateSize(), 0);
});
onUnmounted(() => {
@@ -187,7 +201,10 @@ onUnmounted(() => {
watch(
() => [props.objects, props.selectedId] as const,
() => syncMarkers(),
() => {
syncMarkers();
panToSelected();
},
{ deep: true },
);
</script>