summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_warehouse/models.py10
-rw-r--r--ishtar_common/static/js/ishtar.js25
-rw-r--r--ishtar_common/templates/blocks/DataTables-stats.html15
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>&nbsp;
+ {% 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>&nbsp;
+ {% 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>