summaryrefslogtreecommitdiffstats
path: root/python/fatcat_web
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2019-09-04 13:24:44 -0700
committerBryan Newbold <bnewbold@robocracy.org>2019-09-04 13:24:47 -0700
commitf75190ab7979c411bc8d90fab13c931933f4595c (patch)
tree34aa7822761c5fb0ee3cb2735a9f73447c99933b /python/fatcat_web
parent22fc51c7ce5a04e29870c921e291fddd3de38503 (diff)
downloadfatcat-f75190ab7979c411bc8d90fab13c931933f4595c.tar.gz
fatcat-f75190ab7979c411bc8d90fab13c931933f4595c.zip
finish container coverage page
Also re-worked container view sidebar a bit more.
Diffstat (limited to 'python/fatcat_web')
-rw-r--r--python/fatcat_web/routes.py15
-rw-r--r--python/fatcat_web/search.py12
-rw-r--r--python/fatcat_web/templates/container_view.html38
-rw-r--r--python/fatcat_web/templates/container_view_coverage.html61
-rw-r--r--python/fatcat_web/templates/entity_macros.html13
5 files changed, 110 insertions, 29 deletions
diff --git a/python/fatcat_web/routes.py b/python/fatcat_web/routes.py
index 3f5af621..d41d6bdf 100644
--- a/python/fatcat_web/routes.py
+++ b/python/fatcat_web/routes.py
@@ -15,6 +15,7 @@ from fatcat_web.auth import handle_token_login, handle_logout, load_user, handle
from fatcat_web.cors import crossdomain
from fatcat_web.search import *
from fatcat_web.entity_helpers import *
+from fatcat_web.graphics import *
### Generic Entity Views ####################################################
@@ -737,6 +738,20 @@ def container_ident_ia_coverage_years_json(ident):
histogram = [dict(year=h[0], in_ia=h[1], count=h[2]) for h in histogram]
return jsonify({'container_id': ident, "histogram": histogram})
+@app.route('/container/<ident>/ia_coverage_years.svg', methods=['GET', 'OPTIONS'])
+@crossdomain(origin='*',headers=['access-control-allow-origin','Content-Type'])
+def container_ident_ia_coverage_years_svg(ident):
+ try:
+ container = api.get_container(ident)
+ except ApiException as ae:
+ abort(ae.status)
+ try:
+ histogram = get_elastic_container_histogram(container.ident)
+ except Exception as ae:
+ app.log.error(ae)
+ abort(503)
+ return ia_coverage_histogram(histogram).render_response()
+
@app.route('/release/<ident>.bib', methods=['GET'])
def release_bibtex(ident):
try:
diff --git a/python/fatcat_web/search.py b/python/fatcat_web/search.py
index 523269ce..2ee76517 100644
--- a/python/fatcat_web/search.py
+++ b/python/fatcat_web/search.py
@@ -213,6 +213,11 @@ def get_elastic_container_stats(ident, issnl=None):
preserved
"""
+ # XXX:
+ ident = "iznnn644szdwva7khyxqzc73bi"
+ ident = "lx7svdzmc5dl3ay4zncjjrql7i"
+ ident = "sn27gkxlkbhuzeexoqyapc756a"
+
query = {
"size": 0,
"query": {
@@ -296,6 +301,11 @@ def get_elastic_container_histogram(ident):
(year, in_ia, count)
"""
+ # XXX:
+ ident = "iznnn644szdwva7khyxqzc73bi"
+ ident = "lx7svdzmc5dl3ay4zncjjrql7i"
+ ident = "sn27gkxlkbhuzeexoqyapc756a"
+
query = {
"aggs": {
"year_in_ia": {
@@ -346,7 +356,7 @@ def get_elastic_container_histogram(ident):
resp.raise_for_status()
# TODO: abort()
resp = resp.json()
- print(resp)
+ #print(resp)
vals = [(h['key']['year'], h['key']['in_ia'], h['doc_count'])
for h in resp['aggregations']['year_in_ia']['buckets']]
vals = sorted(vals)
diff --git a/python/fatcat_web/templates/container_view.html b/python/fatcat_web/templates/container_view.html
index 87e70f2b..0efc18a0 100644
--- a/python/fatcat_web/templates/container_view.html
+++ b/python/fatcat_web/templates/container_view.html
@@ -3,18 +3,6 @@
{% import "entity_macros.html" as entity_macros %}
{% extends "entity_base.html" %}
-{% macro progress_color(frac) -%}
-{% if frac >= 1 %}
-green
-{% elif frac > 0.95 %}
-olive
-{% elif frac < 0.5 %}
-red
-{% else %}
-yellow
-{% endif %}
-{%- endmacro %}
-
{% block entity_main %}
<div class="ui stackable mobile reversed grid centered">
@@ -69,7 +57,7 @@ yellow
{% if container._stats %}
<div class="ui segment attached">
<div style="text-align: center;">
- <div class="ui small center statistic">
+ <div class="ui small statistic">
<div class="value">{{ "{:,}".format(container._stats.total) }}</div>
<div class="label" style="text-transform: none;">Known Releases</div>
</div>
@@ -80,26 +68,26 @@ yellow
{% set frac_preserved = container._stats.is_preserved/container._stats.total %}
{% set frac_web = container._stats.in_web/container._stats.total %}
- <div class="ui {{ progress_color(frac_kbart) }} progress" style="margin-bottom: 0.1em;">
- <div class="bar" style="width: {{ "{:.1f}".format(frac_kbart*100) }}%;">
- <div class="progress">{{ "{:.1f}".format(frac_kbart*100) }}%</div>
+ <div class="ui {{ entity_macros.progress_color(frac_web) }} progress" style="margin-bottom: 0.1em;">
+ <div class="bar" style="width: {{ (frac_web*100)|int }}%;">
+ <div class="progress">{{ (frac_web*100)|int }}%</div>
</div>
</div>
- {{ "{:,}".format(container._stats.in_kbart ) }} preserved (dark)
+ {{ "{:,}".format(container._stats.in_web) }} preserved and available (bright)
- <div class="ui {{ progress_color(frac_preserved) }} progress" style="margin-bottom: 0.1em;">
- <div class="bar" style="width: {{ "{:.1f}".format(frac_preserved*100) }}%;">
- <div class="progress">{{ "{:.1f}".format(frac_preserved*100) }}%</div>
+ <div class="ui {{ entity_macros.progress_color(frac_preserved) }} progress" style="margin-bottom: 0.1em;">
+ <div class="bar" style="width: {{ (frac_preserved*100)|int }}%;">
+ <div class="progress">{{ (frac_preserved*100)|int }}%</div>
</div>
</div>
- {{ "{:,}".format(container._stats.is_preserved) }} preserved or available
+ {{ "{:,}".format(container._stats.is_preserved) }} preserved at all (bright or dark)
- <div class="ui {{ progress_color(frac_web) }} progress" style="margin-bottom: 0.1em; margin-top: 1em;">
- <div class="bar" style="width: {{ "{:.1f}".format(frac_web*100) }}%;">
- <div class="progress">{{ "{:.1f}".format(frac_web*100) }}%</div>
+ <div class="ui {{ entity_macros.progress_color(frac_kbart) }} progress" style="margin-bottom: 0.1em; margin-top: 1em;">
+ <div class="bar" style="width: {{ (frac_kbart*100)|int }}%;">
+ <div class="progress">{{ (frac_kbart*100)|int }}%</div>
</div>
</div>
- {{ "{:,}".format(container._stats.in_web) }} fulltext available to read
+ {{ "{:,}".format(container._stats.in_kbart ) }} preserved by Keeper (dark)
{% endif %}
</div>
diff --git a/python/fatcat_web/templates/container_view_coverage.html b/python/fatcat_web/templates/container_view_coverage.html
index eb9dba8a..db435181 100644
--- a/python/fatcat_web/templates/container_view_coverage.html
+++ b/python/fatcat_web/templates/container_view_coverage.html
@@ -6,10 +6,65 @@
{% block entity_main %}
-<h3>Preservation Coverage By Year</h3>
+<div class="ui centered grid">
+ <div class="row">
+ <div class="twelve wide column">
+ <div class="ui large horizontal statistic">
+ <div class="value">{{ "{:,}".format(container._stats.total) }}</div>
+ <div class="label" style="text-transform: none;">Known Releases</div>
+ </div>
+ {% if container._stats.total >= 1 %}
-<img src="/container/{{ container.ident }}/ia_coverage_years.svg">
-<br><a href="/container/{{ container.ident }}/ia_coverage_years.json">Download as JSON</a>
+ {% set frac_kbart = container._stats.in_kbart/container._stats.total %}
+ {% set frac_preserved = container._stats.is_preserved/container._stats.total %}
+ {% set frac_web = container._stats.in_web/container._stats.total %}
+
+ <div class="ui large {{ entity_macros.progress_color(frac_web) }} progress" style="margin-bottom: 0.1em;">
+ <div class="bar" style="width: {{ (frac_web*100)|int }}%;">
+ <div class="progress">{{ (frac_web*100)|int }}%</div>
+ </div>
+ <div class="label">
+ {{ "{:,}".format(container._stats.in_web) }} preserved and available (bright)
+ </div>
+ </div>
+
+ <br>
+ <div class="ui large {{ entity_macros.progress_color(frac_preserved) }} progress" style="margin-bottom: 0.1em;">
+ <div class="bar" style="width: {{ (frac_preserved*100)|int }}%;">
+ <div class="progress">{{ (frac_preserved*100)|int }}%</div>
+ </div>
+ <div class="label">
+ {{ "{:,}".format(container._stats.is_preserved) }} preserved at all (bright or dark)
+ </div>
+ </div>
+
+ <br>
+ <div class="ui large {{ entity_macros.progress_color(frac_kbart) }} progress" style="margin-bottom: 0.1em; margin-top: 1em;">
+ <div class="bar" style="width: {{ (frac_kbart*100)|int }}%;">
+ <div class="progress">{{ (frac_kbart*100)|int }}%</div>
+ </div>
+ <div class="label">
+ {{ "{:,}".format(container._stats.in_kbart ) }} preserved by Keeper (dark)
+ </div>
+ </div>
+
+ {% endif %}
+ </div>
+ </div>
+</div>
+
+{% if container._stats.total >= 1 %}
+ <br>
+ <h2>Perpetual Access Coverage by Year</h2>
+
+ <figure style="margin: 0 0 0 0;">
+ <embed type="image/svg+xml" src="/container/{{ container.ident }}/ia_coverage_years.svg" />
+ </figure>
+
+ <div style="float: right;">
+ <a href="/container/{{ container.ident }}/ia_coverage_years.json">Download as JSON</a>
+ </div>
+{% endif %}
{% endblock %}
diff --git a/python/fatcat_web/templates/entity_macros.html b/python/fatcat_web/templates/entity_macros.html
index 6124630c..fc199c21 100644
--- a/python/fatcat_web/templates/entity_macros.html
+++ b/python/fatcat_web/templates/entity_macros.html
@@ -221,3 +221,16 @@
{% endif %}
</div>
{% endmacro %}
+
+{% macro progress_color(frac) -%}
+{% if frac >= 1 %}
+green
+{% elif frac > 0.95 %}
+olive
+{% elif frac < 0.5 %}
+red
+{% else %}
+yellow
+{% endif %}
+{%- endmacro %}
+