{% extends "withoutnav_template.html" %}
{% from "components/textbox.html" import textbox %}
{% from "components/checkbox.html" import checkbox %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/big-number.html" import big_number, big_number_with_status %}
{% from "components/message-count-label.html" import message_count_label %}
{% from "components/table.html" import mapping_table, field, stats_fields, row_group, row, right_aligned_field_heading, hidden_field_heading, text_field %}

{% macro stats_fields(channel, data) -%}

  {% call field(border=False) %}
      <span class="heading-medium">{{ channel.title() }}</span>
  {% endcall %}

  {% call field(align='right', border=False) %}
    {{ big_number(data[channel]['sending'], smaller=True) }}
  {% endcall %}

  {% call field(align='right', border=False) %}
    {{ big_number(data[channel]['delivered'], smaller=True) }}
  {% endcall %}

  {% call field(align='right', status='error' if data[channel]['failed'], border=False) %}
    {{ big_number(data[channel]['failed'], smaller=True) }}
  {% endcall %}

{%- endmacro %}

{% macro services_table(services, caption) %}
  {% call(item, row_number) mapping_table(
    caption=caption,
    caption_visible=True,
    field_headings=[
    'Service',
    hidden_field_heading('Type'),
    right_aligned_field_heading('Sending'),
    right_aligned_field_heading('Delivered'),
    right_aligned_field_heading('Failed')
    ],
    field_headings_visible=True
  ) %}

    {% for service in services %}

      {% call row_group() %}

        {% call row() %}
          {% call field(border=False) %}
            <a href="{{ url_for('main.service_dashboard', service_id=service['id']) }}" class="browse-list-link">{{ service['name'] }}</a>
          {% endcall %}

          {{ stats_fields('email', service['stats']) }}
        {% endcall %}

        {% call row() %}
          {% if not service['active'] %}
            {% call field(status='default') %}
              <span class="heading-medium">archived</span>
            {% endcall %}
          {% elif service['research_mode'] %}
            {% call field(border=False) %}
              <span class="research-mode">research mode</span>
            {% endcall %}
          {% elif not service['restricted'] %}
            {% call field(status='error') %}
              <span class="heading-medium">Live</span>
            {% endcall %}
          {% else %}
            {{ text_field('') }}
          {% endif %}

          {{ stats_fields('sms', service['stats']) }}
        {% endcall %}

      {% endcall %}

    {% endfor %}

  {% endcall %}
{% endmacro %}


{% block per_page_title %}
  Platform admin
{% endblock %}

{% block maincolumn_content %}

  <h1 class="heading-large">
    Platform admin
  </h1>

    <details>
      <summary>Apply filters</summary>
      <form autocomplete="off" method="get">
        {{ textbox(form.start_date, hint="Enter start date in format YYYY-MM-DD") }}
        {{ textbox(form.end_date, hint="Enter end date in format YYYY-MM-DD") }}
        {{ checkbox(form.include_from_test_key) }}
        </br>
        <input type="submit" class="button">
      </form>
    </details>

  <div class="grid-row bottom-gutter">
    <div class="column-half">
      {{ big_number_with_status(
        global_stats.email.delivered + global_stats.email.failed,
        message_count_label(global_stats.email.delivered, 'email'),
        global_stats.email.failed,
        global_stats.email.failure_rate,
        global_stats.email.failure_rate|float > 3,
      ) }}
    </div>
    <div class="column-half">
      {{ big_number_with_status(
        global_stats.sms.delivered + global_stats.sms.failed,
        message_count_label(global_stats.sms.delivered, 'sms'),
        global_stats.sms.failed,
        global_stats.sms.failure_rate,
        global_stats.sms.failure_rate|float > 3,
      ) }}
    </div>
  </div>

  {{ services_table(live_services, 'Live services') }}

  {{ services_table(trial_mode_services, 'Trial mode services') }}

{% endblock %}
