wikimedia/eventmetrics

View on GitHub
templates/events/show.html.twig

Summary

Maintainability
Test Coverage
{% extends 'base.html.twig' %}
{% import 'macros/layout.html.twig' as layout %}

{% block breadcrumb %}
    <ol class="breadcrumb">
        {% if isOrganizer %}
            <li><a href="{{ path('Programs') }}">{{ msg('my-programs') }}</a></li>
        {% endif %}
        <li><a href="{{ path('Program', {'programId': program.id}) }}">{{ bdi(program.displayTitle) }}</a></li>
        <li class="active">{{ bdi(event.displayTitle) }}</li>
    </ol>
{% endblock %}

{% block body %}
    <div class="container">
        {% include 'events/_header.html.twig' with {'pageTitle': 'event-summary'} %}

        {% include 'events/_metadata.html.twig' %}

        {% set help_link %}
            <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Event_Metrics#filtering-required"
               title="{{ msg('error-filters-desc-tooltip') }}">
                <span class="glyphicon glyphicon-question-sign"></span>
            </a>
        {% endset %}

        {% set has_form_errors = false %}
        {% for formType, form in forms %}
            {% if not form.vars.valid %}
                {# twigcs use-var has_form_errors #}
                {% set has_form_errors = true %}
            {% endif %}
        {% endfor %}

        {% set event_process_link %}
            <a href="#" class="event-process-link">
                {% if event.updated %}{{ msg('update-data') }}{% else %}{{ msg('calculate-totals') }}{% endif %}
            </a>
        {% endset %}

        {% if filtersMissing %}
            <section class="event-errorbox error">
                <h3>{{ msg('error-filters-header') }}</h3>
                <p>
                    {{ msg('error-filters-desc') }}
                    {{ help_link }}
                </p>
                <ul>
                    {% if isOnlyWikidata %}
                        <li>{{ msg('error-filters-wikidata-only') }}</li>
                        <li>{{ msg('error-filters-wikidata') }}</li>
                    {% else %}
                        <li>{{ msg('error-filters-participants-or-categories') }}</li>
                        <li>{{ msg('error-filters-every-wiki') }}</li>
                        <li>{{ msg('error-filters-participants-desc') }}</li>
                        <li>{{ msg('error-filters-categories-desc') }}</li>
                        <li>{{ msg('error-filters-combination') }}</li>
                    {% endif %}
                </ul>
            </section>

        {% elseif event.participants.count == 0 and (wikisWithoutCats.count or event.wikiByDomain('www.wikidata')) %}
            <section class="event-errorbox warn">
                <h3>{{ msg('category-warning-header') }}</h3>
                <p>
                    {{ msg('category-warning-desc', [event_process_link])|raw }}
                    {{ help_link }}
                </p>
                <ul>
                    {% if wikis_without_filters.count %}
                    <li>
                        {{ msg('error-filters-categories-missing') }}
                        {% set unfiltered_wikis = [] %}
                        {% for unfiltered_wiki in wikis_without_filters %}
                            {% set unfiltered_wikis = unfiltered_wikis|merge(['<strong>' ~ unfiltered_wiki.domain ~ '</strong>']) %}
                        {% endfor %}
                        {{ unfiltered_wikis|list_format|raw }}
                    </li>
                    {% endif %}
                    <li>{{ msg('error-filters-every-wiki') }}</li>
                    {% if event.wikiByDomain('www.wikidata') %}
                        <li>{{ msg('error-filters-wikidata') }}</li>
                    {% endif %}
                    <li>{{ msg('error-filters-participants-desc') }}</li>
                    <li>{{ msg('error-filters-categories-desc') }}</li>
                    <li>{{ msg('error-filters-combination') }}</li>
                </ul>
            </section>

        {# twigcs use-var has_form_errors #}
        {% elseif not event.updated and not event.hasJob and not has_form_errors %}
            {% if event.startUTC > date() %}
                <section class="event-errorbox warn">
                    <h3>{{ msg('event-in-future') }}</h3>
                    <ul>
                        {% set settings_link %}
                            <a href="{{ path('EditEvent', {'programId': program.id, 'eventId': event.id}) }}">{{ msg('settings') }}</a>
                        {% endset %}
                        <li>{{ msg('event-in-future-details', [settings_link|trim])|raw }}</li>
                    </ul>
                </section>
            {% else %}
                <div class="alert alert-success event-wiki-stats--empty">
                    {{ msg('event-no-data', [event_process_link])|raw }}
                </div>
            {% endif %}
        {% endif %}

        <section class="event-filters clearfix">
            {% for formType, form in forms %}
                {% form_theme form 'blocks/forms.html.twig' %}
                {% include 'events/_' ~ formType|lower ~ '.html.twig' %}
            {% endfor %}
        </section>

        {% if event.updated is not null %}
            <section class="event-stats clearfix">
                {% set all_edits_link %}
                    &middot;
                    <a href="{{ path('Revisions', {'programId': program.id, 'eventId': event.id}) }}" class="event-export-btn">
                        {{ msg('view-all-edits') }}
                    </a>
                {% endset %}
                {{ layout.statsBlock(
                    event,
                    'contributions',
                    ['pages-created', 'pages-improved', 'edits', 'files-uploaded', 'byte-difference', 'items-created', 'items-improved'],
                    all_edits_link
                ) }}

                {{ layout.statsBlock(event, 'impact', ['pages-created-pageviews', 'pages-improved-pageviews-avg', 'pages-using-files-pageviews-avg', 'pages-using-files', 'file-usage']) }}

                {{ layout.statsBlock(event, 'participation', ['participants', 'new-editors', 'retention']) }}
            </section><!-- #stats -->

            {% if event.wikis|length > 1 %}
                {% include 'events/_wiki_table.html.twig' %}
            {% endif %}
        {% endif %}
    </div>
{% endblock %}