Add summary and activity screens, remove private datasets from counts
[ckanext-dga-stats.git] / ckanext / dga_stats / templates / ckanext / stats / index.html
blob:a/ckanext/dga_stats/templates/ckanext/stats/index.html -> blob:b/ckanext/dga_stats/templates/ckanext/stats/index.html
--- a/ckanext/dga_stats/templates/ckanext/stats/index.html
+++ b/ckanext/dga_stats/templates/ckanext/stats/index.html
@@ -1,1 +1,274 @@
-
+{% extends "page.html" %}
+
+{% block breadcrumb_content %}
+  <li class="active">{{ 'Statistics' }}</li>
+{% endblock %}
+
+{% block primary_content %}
+  <article class="module">
+    <section id="summary" class="module-content tab-content">
+      <h2>{{ _('Summary') }}</h2>
+      {% if c.summary_stats %}
+        <table class="table table-chunky table-bordered table-striped">
+          <thead>
+            <tr>
+              <th>{{ _('Measure') }}</th>
+              <th class="metric">{{ _('Value') }}</th>
+            </tr>
+          </thead>
+          <tbody>
+            {% for measure,value in c.summary_stats %}
+              <tr>
+                <td>{{measure}}</td>
+                <td class="metric">{{ value }}</td>
+              </tr>
+            {% endfor %}
+          </tbody>
+        </table>
+      {% else %}
+        <p class="empty">{{ _('No groups') }}</p>
+      {% endif %}
+    </section>
+    <section id="activity-counts" class="module-content tab-content">
+      <h2>{{ _('Site Activity Log') }}</h2>
+      {% if c.activity_counts %}
+        <table class="table table-chunky table-bordered table-striped">
+          <thead>
+            <tr>
+              <th>{{ _('Month') }}</th>
+              <th>{{ _('Activity Type') }}</th>
+              <th class="metric">{{ _('Count') }}</th>
+            </tr>
+          </thead>
+          <tbody>
+            {% for month, type, count in c.activity_counts %}
+              <tr>
+                <td>{{ month }}</td>
+                <td>{{ type }}</td>
+                <td class="metric">{{ count }}</td>
+              </tr>
+            {% endfor %}
+          </tbody>
+        </table>
+      {% else %}
+        <p class="empty">{{ _('No groups') }}</p>
+      {% endif %}
+    </section>
+
+    <section id="stats-total-datasets" class="module-content tab-content active">
+      <h2>{{ _('Total number of Datasets') }}</h2>
+
+      {% set xaxis = {'mode': 'time', 'timeformat': '%y-%b'} %}
+      {% set yaxis = {'min': 0} %}
+      <table class="table table-chunky table-bordered table-striped" data-module="plot" data-module-xaxis="{{ h.dump_json(xaxis) }}" data-module-yaxis="{{ h.dump_json(yaxis) }}">
+        <thead>
+          <tr>
+            <th>{{ _("Date") }}</th>
+            <th>{{ _("Total datasets") }}</th>
+          </tr>
+        </thead>
+        <tbody>
+          {% for row in c.raw_packages_by_week %}
+            <tr>
+              <th data-type="date" data-value="{{ row.date.strftime("%s") }}"><time datetime="{{ row.date.isoformat() }}">{{ h.render_datetime(row.date) }}</time></th>
+              <td>{{ row.total_packages }}</td>
+            </tr>
+          {% endfor %}
+        </tbody>
+      </table>
+    </section>
+
+    <section id="stats-dataset-revisions" class="module-content tab-content">
+      <h2>{{ _('Dataset Revisions per Week') }}</h2>
+
+      {% set xaxis = {'mode': 'time', 'timeformat': '%y-%b'} %}
+      {% set lines = {'fill': 1} %}
+      <table class="table table-chunky table-bordered table-striped" data-module="plot" data-module-xaxis="{{ h.dump_json(xaxis) }}" data-module-lines="{{ h.dump_json(lines) }}">
+        <thead>
+          <tr>
+            <th>{{ _("Date") }}</th>
+            <th>{{ _("All dataset revisions") }}</th>
+            <th>{{ _("New datasets") }}</th>
+          </tr>
+        </thead>
+        <tbody>
+          {% for row in c.raw_all_package_revisions %}
+            <tr>
+              <th data-type="date" data-value="{{ row.date.strftime("%s") }}"><time datetime="{{ row.date.isoformat() }}">{{ h.render_datetime(row.date) }}</time></th>
+              <td>{{ row.total_revisions }}</td>
+              <td>{{ c.raw_new_datasets[loop.index0].new_packages }}</td>
+            </tr>
+          {% endfor %}
+        </tbody>
+      </table>
+    </section>
+
+    <section id="stats-top-rated" class="module-content tab-content">
+      <h2>{{ _('Top Rated Datasets') }}</h2>
+      {% if c.top_rated_packages %}
+        <table class="table table-chunky table-bordered table-striped">
+          <thead>
+            <tr>
+              <th>Dataset</th>
+              <th class="metric">{{ _('Average rating') }}</th>
+              <th class="metric">{{ _('Number of ratings') }}</th>
+            </tr>
+          </thead>
+          <tbody>
+            {% for package, rating, num_ratings in c.top_rated_packages %}
+              <tr>
+                <th>{{ h.link_to(package.title or package.name, h.url_for(controller='package', action='read', id=package.name)) }}</th>
+                <td class="metric">{{ rating }}</td>
+                <td class="metric">{{ num_ratings }}</td>
+              </tr>
+            {% endfor %}
+          </tbody>
+        </table>
+      {% else %}
+        <p class="empty">{{ _('No ratings') }}</p>
+      {% endif %}
+    </section>
+
+    <section id="stats-most-edited" class="module-content tab-content">
+      <h2>{{ _('Most Edited Datasets') }}</h2>
+      {% if c.most_edited_packages %}
+        <table class="table table-chunky table-bordered table-striped">
+          <thead>
+            <tr>
+              <th>{{ _('Dataset') }}</th>
+              <th class="metric">{{ _('Number of edits') }}</th>
+            </tr>
+          </thead>
+          <tbody>
+            {% for package, edits in c.most_edited_packages %}
+              <tr py:for="package, edits in c.most_edited_packages">
+                <td>{{ h.link_to(package.title or package.name, h.url_for(controller='package', action='read', id=package.name)) }}</td>
+                <td class="metric">{{ edits }}</td>
+              </tr>
+            {% endfor %}
+          </tbody>
+        </table>
+      {% else %}
+        <p class="empty">{{ _('No edited datasets') }}</p>
+      {% endif %}
+    </section>
+
+    <section id="stats-largest-groups" class="module-content tab-content">
+      <h2>{{ _('Largest Groups') }}</h2>
+      {% if c.largest_groups %}
+        <table class="table table-chunky table-bordered table-striped">
+          <thead>
+            <tr>
+              <th>{{ _('Group') }}</th>
+              <th class="metric">{{ _('Number of datasets') }}</th>
+            </tr>
+          </thead>
+          <tbody>
+            {% for group, num_packages in c.largest_groups %}
+              <tr>
+                <td>{{ h.link_to(group.title or group.name, h.url_for(controller='group', action='read', id=group.name)) }}</td>
+                <td class="metric">{{ num_packages }}</td>
+              </tr>
+            {% endfor %}
+          </tbody>
+        </table>
+      {% else %}
+        <p class="empty">{{ _('No groups') }}</p>
+      {% endif %}
+    </section>
+    <section id="stats-largest-groups" class="module-content tab-content">
+      <h2>{{ _('Largest Groups') }}</h2>
+      {% if c.largest_groups %}
+        <table class="table table-chunky table-bordered table-striped">
+          <thead>
+            <tr>
+              <th>{{ _('Group') }}</th>
+              <th class="metric">{{ _('Number of datasets') }}</th>
+            </tr>
+          </thead>
+          <tbody>
+            {% for group, num_packages in c.largest_groups %}
+              <tr>
+                <td>{{ h.link_to(group.title or group.name, h.url_for(controller='group', action='read', id=group.name)) }}</td>
+                <td class="metric">{{ num_packages }}</td>
+              </tr>
+            {% endfor %}
+          </tbody>
+        </table>
+      {% else %}
+        <p class="empty">{{ _('No groups') }}</p>
+      {% endif %}
+    </section>
+
+    <section id="stats-top-tags" class="module-content tab-content">
+      <h2>{{ _('Top Tags') }}</h2>
+      <table class="table table-chunky table-bordered table-striped">
+        <thead>
+          <tr>
+            <th>{{ _('Tag Name') }}</th>
+            <th class="metric">{{ _('Number of Datasets') }}</th>
+          </tr>
+        </thead>
+        <tbody>
+          {% for tag, num_packages in c.top_tags %}
+            <tr>
+              <td>{{ h.link_to(tag.name, h.url_for(controller='package', action='search', tags=tag.name)) }}</td>
+              <td class="metric">{{ num_packages }}</td>
+            </tr>
+          {% endfor %}
+        </tbody>
+      </table>
+    </section>
+
+    <section id="stats-most-owned" class="module-content tab-content">
+      <h2>{{ _('Users Owning Most Datasets') }}</h2>
+      <table class="table table-chunky table-bordered table-striped">
+        <thead>
+          <tr>
+            <th>{{ _('User') }}</th>
+            <th class="metric">{{ _('Number of Datasets') }}</th>
+          </tr>
+        </thead>
+        <tbody>
+          {% for user, num_packages in c.top_package_owners %}
+            <tr>
+              <td class="media">{{ h.linked_user(user) }}</td>
+              <td class="metric">{{ num_packages }}</td>
+            </tr>
+          {% endfor %}
+        </tbody>
+      </table>
+    </section>
+  </article>
+{% endblock %}
+
+{% block secondary_content %}
+  <section class="module module-narrow">
+    <h2 class="module-heading"><i class="icon-bar-chart icon-medium"></i> {{ _('Statistics Menu') }}</h2>
+    <nav data-module="stats-nav">
+      <ul class="unstyled nav nav-simple">
+        <li class="nav-item"><a href="#summary" data-toggle="tab">{{ _('Summary') }}</a></li>
+        <li class="nav-item"><a href="#activity-counts" data-toggle="tab">{{ _('Site Activity Log') }}</a></li>
+        <li class="nav-item active"><a href="#stats-total-datasets" data-toggle="tab">{{ _('Total Number of Datasets') }}</a></li>
+        <li class="nav-item"><a href="#stats-dataset-revisions" data-toggle="tab">{{ _('Dataset Revisions per Week') }}</a></li>
+        <li class="nav-item"><a href="#stats-top-rated" data-toggle="tab">{{ _('Top Rated Datasets') }}</a></li>
+        <li class="nav-item"><a href="#stats-most-edited" data-toggle="tab">{{ _('Most Edited Datasets') }}</a></li>
+        <li class="nav-item"><a href="#stats-largest-groups" data-toggle="tab">{{ _('Largest Groups') }}</a></li>
+        <li class="nav-item"><a href="#stats-top-tags" data-toggle="tab">{{ _('Top Tags') }}</a></li>
+        <li class="nav-item"><a href="#stats-most-owned" data-toggle="tab">{{ _('Users Owning Most Datasets') }}</a></li>
+      </ul>
+    </nav>
+  </section>
+{% endblock %}
+
+{% block scripts %}
+  {{ super() }}
+{#
+Hellish hack to get excanvas to work in IE8. We disable html5shiv from
+overriding the createElement() method on this page.
+See: http://stackoverflow.com/questions/10208062/using-flot-with-bootstrap-ie8-incompatibility
+#}
+{% resource "vendor/block_html5_shim" %}
+{% resource "ckanext_dga_stats/stats" %}
+{% endblock %}
+