{{ project.name }}

{# Identity line โ€” project number / client, not a module name. The enabled modules are already shown as chips in the page header. #} {% set _idbits = [] %} {% if project.project_number %}{% set _ = _idbits.append(project.project_number) %}{% endif %} {% if project.client_name %}{% set _ = _idbits.append(project.client_name) %}{% endif %} {% if _idbits %}

{{ _idbits | join(' ยท ') }}

{% endif %}
{% if project.status == 'upcoming' %} Upcoming {% elif project.status == 'active' %} Active {% elif project.status == 'on_hold' %} On Hold {% elif project.status == 'completed' %} Completed {% elif project.status == 'archived' %} Archived {% endif %}
{% if project.description %}

{{ project.description }}

{% endif %}

Locations

{{ locations | length }}

Assigned Units

{{ assigned_units | length }}

Active Sessions

{{ active_sessions | length }}

Completed Sessions

{{ completed_sessions_count }}

{# Separate location lists per module type so vibration points and sound NRLs don't get mixed in one list. Build the section set from the enabled modules. #} {% set loc_sections = [] %} {% if 'vibration_monitoring' in modules %}{% set _ = loc_sections.append(('vibration', 'Vibration Locations', 'Add Location')) %}{% endif %} {% if 'sound_monitoring' in modules %}{% set _ = loc_sections.append(('sound', 'NRLs', 'Add NRL')) %}{% endif %} {% if not loc_sections %}{% set _ = loc_sections.append(('', 'Locations', 'Add Location')) %}{% endif %}
{% for ltype, title, add_label in loc_sections %}

{{ title }}

{% endfor %}
{# Location map โ€” uses the reusable partial that fetches from /api/projects/{p}/locations-json. Same render is reused on the deeper Vibration tab so both surfaces stay in sync. #} {% with project_id=project.id %} {% include 'partials/projects/location_map.html' %} {% endwith %}
{% if upcoming_actions %}
{{ upcoming_actions | length }} upcoming action{{ '' if upcoming_actions | length == 1 else 's' }} โ†’
{% endif %}