{% extends "dashboard/base.html" %} {% load static %} {% block title %}Live attack map ยท HoneyDjango{% endblock %} {% block heading %}Live Attack Map{% endblock %} {% block content %} {% include "dashboard/partials/_stats.html" %} {% comment %} The map is a self-contained JS island: all logic lives in map.js, which reads its config from these data-* attributes (URLs reversed by Django) rather than from inlined script. Re-skinning this page never touches the map logic. The flex-1 + min-h-0 wrapper gives Leaflet a deterministic height; map.js calls invalidateSize once layout settles and on every resize. {% endcomment %}
{% include "dashboard/partials/_event_table.html" %} {% endblock %} {% block body_scripts %} {% endblock %}