diff options
-rw-r--r-- | python/fatcat_web/routes.py | 15 | ||||
-rw-r--r-- | python/fatcat_web/search.py | 12 | ||||
-rw-r--r-- | python/fatcat_web/templates/container_view.html | 38 | ||||
-rw-r--r-- | python/fatcat_web/templates/container_view_coverage.html | 61 | ||||
-rw-r--r-- | python/fatcat_web/templates/entity_macros.html | 13 |
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 %} + |