06/16 Phase 6 (continue)
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}{{ _('Admin · Analytics') }}{% endblock %}
|
||||
{% block content %}
|
||||
{% include "admin/_nav.html" %}
|
||||
|
||||
<div class="card">
|
||||
<h2>{{ _('Analytics — last 30 days') }}</h2>
|
||||
|
||||
<div class="kpi-grid">
|
||||
<div class="card kpi-card">
|
||||
<div class="kpi-label">{{ _('New signups (30d)') }}</div>
|
||||
<div class="kpi-value">{{ signups|sum(attribute='n') }}</div>
|
||||
</div>
|
||||
<div class="card kpi-card">
|
||||
<div class="kpi-label">{{ _('Listings posted (30d)') }}</div>
|
||||
<div class="kpi-value">{{ listings_chart|sum(attribute='n') }}</div>
|
||||
</div>
|
||||
<div class="card kpi-card">
|
||||
<div class="kpi-label">{{ _('Revenue (30d)') }}</div>
|
||||
<div class="kpi-value">${{ '%.2f'|format((revenue_chart|sum(attribute='cents') or 0) / 100) }}</div>
|
||||
</div>
|
||||
<div class="card kpi-card">
|
||||
<div class="kpi-label">{{ _('Ad impressions (active ads)') }}</div>
|
||||
<div class="kpi-value">{{ ad_stats.total_impressions or 0 }}</div>
|
||||
</div>
|
||||
<div class="card kpi-card">
|
||||
<div class="kpi-label">{{ _('Ad clicks (active ads)') }}</div>
|
||||
<div class="kpi-value">{{ ad_stats.total_clicks or 0 }}</div>
|
||||
</div>
|
||||
<div class="card kpi-card">
|
||||
<div class="kpi-label">{{ _('Overall CTR') }}</div>
|
||||
<div class="kpi-value">
|
||||
{% if ad_stats.total_impressions %}
|
||||
{{ '%.2f'|format(ad_stats.total_clicks / ad_stats.total_impressions * 100) }}%
|
||||
{% else %}—{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3>{{ _('Signups per day') }}</h3>
|
||||
{% if signups %}
|
||||
<table class="list">
|
||||
<thead><tr><th>{{ _('Date') }}</th><th>{{ _('Signups') }}</th></tr></thead>
|
||||
{% for row in signups %}
|
||||
<tr>
|
||||
<td class="muted small">{{ row.day }}</td>
|
||||
<td>{{ row.n }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p class="muted">{{ _('No signups in the last 30 days.') }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3>{{ _('Listings posted per day') }}</h3>
|
||||
{% if listings_chart %}
|
||||
<table class="list">
|
||||
<thead><tr><th>{{ _('Date') }}</th><th>{{ _('Listings') }}</th></tr></thead>
|
||||
{% for row in listings_chart %}
|
||||
<tr>
|
||||
<td class="muted small">{{ row.day }}</td>
|
||||
<td>{{ row.n }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p class="muted">{{ _('No listings posted in the last 30 days.') }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3>{{ _('Revenue per day') }}</h3>
|
||||
{% if revenue_chart %}
|
||||
<table class="list">
|
||||
<thead><tr><th>{{ _('Date') }}</th><th>{{ _('Revenue') }}</th></tr></thead>
|
||||
{% for row in revenue_chart %}
|
||||
<tr>
|
||||
<td class="muted small">{{ row.day }}</td>
|
||||
<td>${{ '%.2f'|format((row.cents or 0) / 100) }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p class="muted">{{ _('No revenue in the last 30 days.') }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3>{{ _('Top categories by active listings') }}</h3>
|
||||
{% if top_cats %}
|
||||
<table class="list">
|
||||
<thead><tr><th>{{ _('Category') }}</th><th>{{ _('Active listings') }}</th></tr></thead>
|
||||
{% for name, n in top_cats %}
|
||||
<tr>
|
||||
<td>{{ name }}</td>
|
||||
<td>{{ n }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p class="muted">{{ _('No listings.') }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user