diff options
-rw-r--r-- | archaeological_warehouse/models.py | 10 | ||||
-rw-r--r-- | ishtar_common/static/js/ishtar.js | 25 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/DataTables-stats.html | 15 |
3 files changed, 48 insertions, 2 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index d24985645..d30a90f56 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -17,6 +17,7 @@ # See the file COPYING for details. +from collections import OrderedDict import datetime import uuid @@ -538,6 +539,15 @@ class Container(DocumentItem, Merge, LightHistorizedItem, QRCodeItem, GeoItem, ] PARENT_SEARCH_VECTORS = ["parent"] + STATISTIC_MODALITIES_OPTIONS = OrderedDict([ + ("location__name", _("Location (warehouse)")), + ("responsible__name", _("Responsible (warehouse)")), + ('finds__base_finds__context_record__operation__cached_label', + _("Operation")), + ]) + STATISTIC_MODALITIES = [ + key for key, lbl in STATISTIC_MODALITIES_OPTIONS.items()] + # search parameters EXTRA_REQUEST_KEYS = { 'location': 'location__pk', diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 60ebb0bc9..da1a47de6 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -1529,9 +1529,17 @@ var stats_current_graph; var _render_stats_empty = function(stats_values, name){ $("#charts-" + name).hide(); $("#stats-table-" + name).hide(); + $("#stats-error-" + name).hide(); $("#stats-empty-" + name).show(); }; +var _render_stats_too_many_values = function(name){ + $("#charts-" + name).hide(); + $("#stats-empty-" + name).hide(); + $("#stats-table-" + name).hide(); + $("#stats-error-" + name).show(); +} + var _render_stats_table = function(stats_values, name){ var modality_1 = $("#stats_modality_1-" + name).val(); var modality_2 = $("#stats_modality_2-" + name).val(); @@ -1596,6 +1604,7 @@ var _render_stats_table = function(stats_values, name){ html += "</tbody></table>"; $("#charts-" + name).hide(); $("#stats-empty-" + name).hide(); + $("#stats-error-" + name).hide(); $("#stats-table-content-" + name).html(html); $("#stats-table-" + name).show(); @@ -1605,6 +1614,9 @@ var _render_stats_table = function(stats_values, name){ $("#stats-table-csv-" + name).attr("download", "ishtar-stats.csv"); }; +var MAX_STATS_GRAPH_VALUES = 100; +var MAX_STATS_GRAPH_MODALITY_VALUES = 100; + var render_stats = function(stats_values, name){ var stats_type = $("#stats_renderer-" + name).val(); @@ -1622,12 +1634,23 @@ var render_stats = function(stats_values, name){ return _render_stats_table(stats_values, name); } + if (stats_values.length > MAX_STATS_GRAPH_VALUES){ + _render_stats_too_many_values(name); + return; + } + for (idx in stats_values){ + if (stats_values[idx][1].length > MAX_STATS_GRAPH_MODALITY_VALUES){ + _render_stats_too_many_values(name); + return; + } + } + $("#stats-table-" + name).hide(); $("#stats-empty-" + name).hide(); + $("#stats-error-" + name).hide(); $("#charts-" + name).show(); var modality_1 = $("#stats_modality_1-" + name).val(); var modality_2 = $("#stats_modality_2-" + name).val(); - stats_xaxis = { label: $('#stats_modality_1-' + name + ' option:selected').text() }; diff --git a/ishtar_common/templates/blocks/DataTables-stats.html b/ishtar_common/templates/blocks/DataTables-stats.html index febb8f5a3..342051d19 100644 --- a/ishtar_common/templates/blocks/DataTables-stats.html +++ b/ishtar_common/templates/blocks/DataTables-stats.html @@ -79,7 +79,20 @@ </div> </div> <div id="stats-empty-{{name}}"> - {% trans "No data" %} + <p class="alert alert-info" > + <i class="fa fa-info-circle" aria-hidden="true"></i> + {% trans "No data" %} + </p> + </div> + <div id="stats-error-{{name}}"> + <div class="alert alert-info"> + <i class="fa fa-info-circle" aria-hidden="true"></i> + {% trans "Too many values for the selected modalities, graph cannot be displayed. You can: " %} + <ul> + <li>{% trans 'Select "table" type.'%}</li> + <li>{% trans 'Refine the search to limit the results.'%}</li> + </ul> + </div> </div> </div> |