{% extends "layouts/base.twig" %} {% block title %}{{ translations.benchmark_competitors ?? 'Benchmark: Competitors' }}{% endblock %} {% block head %} {{ parent() }} {% endblock %} {% block page_heading %}

{{ translations.benchmark ?? 'Benchmark' }} — {{ translations.competitors ?? 'Competitors' }}

{{ translations.benchmark_competitors_subtitle ?? 'Manage your competitor list and keep price snapshots organized.' }}

{% endblock %} {% block content %} {% set totalAll = competitors|length %} {% set totalActive = 0 %} {% for c in competitors %} {% if c.isActive() %}{% set totalActive = totalActive + 1 %}{% endif %} {% endfor %}

{{ translations.competitors ?? 'Competitors' }}

{{ translations.total ?? 'Total' }}: {{ totalAll }} {{ translations.active ?? 'Active' }}: {{ totalActive }}
{{ translations.benchmark_competitors_hint ?? 'Keep 3–8 key competitors. Add observations weekly or after a price change.' }}
{{ translations.search_competitors_hint ?? 'Type to filter the list instantly.' }}
{% if competitors is empty %}
{{ translations.no_competitors_yet ?? 'No competitors yet. Add your first competitor.' }}
{% else %}
{% for c in competitors %} {% set obsCount = c.getObservationsCount() %} {% set lastObservedAt = c.getLastObservedAt() %} {% set daysSince = c.getDaysSinceLastObservation() %} {% set needsUpdate = (daysSince is not null and daysSince > 7) ? 1 : 0 %} {% set searchText = (c.getName() ~ ' ' ~ (c.getCity() ?? '') ~ ' ' ~ (c.getNotes() ?? '') ~ ' ' ~ (c.getType() ?? '') ~ ' ' ~ (lastObservedAt ?? ''))|lower %}
{{ c.getName() }}
{% if c.getCity() %}{{ c.getCity() }}{% endif %} {% if c.getDistanceKm() %} {{ c.getDistanceKm() }} km {% endif %}
{% if c.getType() %} {{ c.getType() }} {% endif %} {{ c.isActive() ? (translations.active ?? 'Active') : (translations.inactive ?? 'Inactive') }} {% if lastObservedAt %} {{ lastObservedAt }} {% endif %} {% if needsUpdate %} {{ translations.needs_update ?? 'Needs update' }} {% endif %}
{% if c.getNotes() %}
{{ translations.notes ?? 'Notes' }}
{{ c.getNotes() }}
{% endif %}
{{ translations.observations ?? 'Observations' }}
{{ obsCount }}
{{ translations.last_observation ?? 'Last' }}
{{ lastObservedAt ?? '-' }}
{{ translations.days_since_last ?? 'Days since last' }}
{% if daysSince is not null %}{{ daysSince }}{% else %}-{% endif %}
{% endfor %}
{% endif %}
{# ========================== MODAL: CREATE / EDIT ========================== #} {% endblock %} {% block scripts %} {% endblock %}