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> | 
