summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2014-10-14 18:31:32 +0200
committerÉtienne Loks <etienne.loks@proxience.com>2014-10-14 18:31:32 +0200
commit79b6f50c48ed7bf8bb56f9d2439f64aeab2861ee (patch)
tree03df566bff5fdd124f321a024a93867f8a07c299
parent88a7f0b2ffd81c3d90f6b23681cacf509a957751 (diff)
downloadIshtar-79b6f50c48ed7bf8bb56f9d2439f64aeab2861ee.tar.bz2
Ishtar-79b6f50c48ed7bf8bb56f9d2439f64aeab2861ee.zip
Re-arrange dashboard in tabs
-rw-r--r--ishtar_common/static/media/style.css27
-rw-r--r--ishtar_common/templates/ishtar/dashboards/dashboard_main.html133
-rw-r--r--ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html88
-rw-r--r--ishtar_common/templates/ishtar/dashboards/dashboard_main_detail_users.html36
-rw-r--r--ishtar_common/urls.py2
-rw-r--r--ishtar_common/views.py43
6 files changed, 206 insertions, 123 deletions
diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css
index 4990fa111..32e957b74 100644
--- a/ishtar_common/static/media/style.css
+++ b/ishtar_common/static/media/style.css
@@ -573,6 +573,33 @@ table.confirm tr.spacer td:last-child{
right:135px;
}
+.ui-widget-header {
+ background:none;
+}
+
+.ui-tabs .ui-tabs-nav li a{
+ color: #D14;
+}
+
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+ background:none;
+ background-color: #F1F2F6;
+ border: 1px solid #CCC;
+ border-radius-top: 4px;
+}
+
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a{
+ background-color:#fff;
+}
+
+#dashboard{
+ padding-top: 20px;
+}
+
+#dash-tabs .ui-tabs .ui-tabs-panel{
+ padding:0;
+}
+
.dashboard > div,
.dashboard h3{
width:760px;
diff --git a/ishtar_common/templates/ishtar/dashboards/dashboard_main.html b/ishtar_common/templates/ishtar/dashboards/dashboard_main.html
index 3242da9a3..06b671343 100644
--- a/ishtar_common/templates/ishtar/dashboards/dashboard_main.html
+++ b/ishtar_common/templates/ishtar/dashboards/dashboard_main.html
@@ -1,6 +1,6 @@
{% extends "base.html" %}
{% load i18n %}
-{% load range %}
+{% load url from future %}
{% block extra_head %}
{{form.media}}
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/jquery.jqplot.min.js"></script>
@@ -11,128 +11,15 @@
<link rel="stylesheet" href="{{STATIC_URL}}js/jqplot/jquery.jqplot.min.css" />
{% endblock %}
{% block content %}
-<div class='dashboard'>
-{% for lbl, dashboard in items %}
-<script language="javascript" type="text/javascript">
-$(document).ready(function(){
-var values{{forloop.counter0}} = [];
-
-{% for idx, lbl, values in dashboard.values %} {% for value in values %}
-{% ifequal forloop.parentloop.counter0 0 %}values{{forloop.parentloop.parentloop.counter0}}.push([{{value}}, 0]);
-{% else %}values{{forloop.parentloop.parentloop.counter0}}[{{forloop.counter0}}][1] = {{value}};{% endifequal %}{% endfor%}{% endfor%}
-
-var plot{{forloop.counter0}} = $.jqplot('chart{{forloop.counter0}}',
- [values{{forloop.counter0}}], {
- series:[{showMarker:false}],
- axes:{
- xaxis:{
- label:'{% trans "Year" %}'
- },
- yaxis:{
- label:'{% trans "Number"%}',
- min:0
- }
- },
- highlighter: {
- show: true,
- sizeAdjust: 7.5
- }
- });
-});
+ <script>
+$(function() { $( "#dash-tabs" ).tabs(); });
</script>
- <h3>{{lbl}}</h3>
- <div>
- <h4>{% trans "Numbers" %}</h4>
- <p><strong>{% trans "Total:" %}</strong> {{dashboard.total_number}}</p>
- <div class='table'>
- <div id="chart{{forloop.counter0}}" style="height:400px; width:700px;"></div>
- {% comment %}
- <table>
- {% for idx, lbl, values in dashboard.values %}
- <tr class='idx {% if forloop.counter0|divisibleby:"2" %}even{%else%}odd{%endif%}'>
- <th>{{lbl}}</th>
- {% for value in values %}<td>{{value}}</td>{% endfor%}
- </tr>
- {% endfor%}
- </table>{% endcomment %}
- </div>
- {% if dashboard.years %}
- <h4>{% trans "By years" %}</h4>
- <ul>
- <li><strong>{% trans "Average:" %}</strong> {{dashboard.average}}</li>
- <li><strong>{% trans "Variance:" %}</strong> {{dashboard.variance}}</li>
- <li><strong>{% trans "Standard deviation:" %}</strong> {{dashboard.standard_deviation}}</li>
- <li><strong>{% trans "Median:" %}</strong> {{dashboard.median}}</li>
- <li><strong>{% trans "Mode:" %}</strong> {{dashboard.mode}}</li>
- </ul>
- {% endif %}
- {% if dashboard.operation_average %}
- <h4>{% trans "By operations" %}</h4>
- <ul>
- <li><strong>{% trans "Average:" %}</strong> {{dashboard.operation_average}}</li>
- <li><strong>{% trans "Variance:" %}</strong> {{dashboard.operation_variance}}</li>
- <li><strong>{% trans "Standard deviation:" %}</strong> {{dashboard.operation_standard_deviation}}</li>
- <li><strong>{% trans "Median:" %}</strong> {{dashboard.operation_median}}</li>
- <li><strong>{% trans "Mode:" %}</strong> {{dashboard.operation_mode}}</li>
- </ul>
- {% endif %}
- <h4>{% trans "Created last" %}</h4>
- <div class='table'>
- <table>
- <tr><th>{{lbl}}</th><th>{% trans "Created" %}</th><th></th></tr>
- {% for item in dashboard.lasts %}<tr>
- <td class='ref'>{{item}}</td>
- <td>{{item.history_date}}</td>
- <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>{%trans "Show"%}</a>{%endif%}</td>
- </tr>{% endfor %}
- </table>
- </div>
- <h4>{% trans "Recent changes" %}</h4>
- <div class='table'>
- <table>
- <tr><th>{{lbl}}</th><th>{% trans "Modified" %}</th><th></th></tr>
- {% for item in dashboard.recents %}<tr>
- <td class='ref'>{{item}}</td>
- <td>{{item.history_date}}</td>
- <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>{%trans "Show"%}</a>{%endif%}</td>
- </tr>{% endfor %}
- </table>
- </div>
- </div>
-{% endfor%}
-
- <h3>{% trans "Users" %}</h3>
- <div>
-<script language="javascript" type="text/javascript">
-$(document).ready(function(){
-var values_users = [];
-{% for user_type in ishtar_users.types %}
-values_users.push(['{{user_type.person__person_types__label}}', {{user_type.number}}]); {% endfor%}
-
-var plot_users = jQuery.jqplot ('user_chart', [values_users],
- {
- seriesDefaults: {
- renderer: jQuery.jqplot.PieRenderer,
- rendererOptions: {
- showDataLabels: true
- }
- },
- legend: { show:true, location: 's' }
- }
- );
-});
-</script>
- <div id="user_chart" style="height:400px; width:700px;"></div>
- <div class='table'>
- <table>
- <tr><th>{% trans "User type" %}</th><th>{% trans "Number" %}</th></tr>
- {% for user_type in ishtar_users.types %}
- <tr>
- <td class='string'>{{user_type.person__person_types__label}}{#TODO: Display all#}</td>
- <td>{{user_type.number}}</td>
- </tr>
- {% endfor%}
- </table>
- </div>
+<div id='dashboard'>
+ <div id="dash-tabs">
+ <ul>
+ {% for label, app in app_list %}
+ <li><a href="{% url 'dashboard-main-detail' app %}">{{label}}</a></li>
+ {% endfor %}</ul>
+ </div>
</div>
{% endblock %}
diff --git a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
new file mode 100644
index 000000000..6a99c4fdd
--- /dev/null
+++ b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
@@ -0,0 +1,88 @@
+{% load i18n %}
+<div class='dashboard'>
+<script language="javascript" type="text/javascript">
+$(document).ready(function(){
+var values_{{item_name}} = [];
+
+{% for idx, lbl, values in dashboard.values %} {% for value in values %}
+{% ifequal forloop.parentloop.counter0 0 %}values_{{item_name}}.push([{{value}}, 0]);
+{% else %}values_{{item_name}}[{{forloop.counter0}}][1] = {{value}};{% endifequal %}{% endfor%}{% endfor%}
+
+var plot_{{item_name}} = $.jqplot('chart_{{item_name}}',
+ [values_{{item_name}}], {
+ series:[{showMarker:false}],
+ axes:{
+ xaxis:{
+ label:'{% trans "Year" %}'
+ },
+ yaxis:{
+ label:'{% trans "Number"%}',
+ min:0
+ }
+ },
+ highlighter: {
+ show: true,
+ sizeAdjust: 7.5
+ }
+ });
+});
+</script>
+ <h3>{{lbl}}</h3>
+ <div>
+ <h4>{% trans "Numbers" %}</h4>
+ <p><strong>{% trans "Total:" %}</strong> {{dashboard.total_number}}</p>
+ <div class='table'>
+ <div id="chart_{{item_name}}" style="height:400px; width:700px;"></div>
+ {% comment %}
+ <table>
+ {% for idx, lbl, values in dashboard.values %}
+ <tr class='idx {% if forloop.counter0|divisibleby:"2" %}even{%else%}odd{%endif%}'>
+ <th>{{lbl}}</th>
+ {% for value in values %}<td>{{value}}</td>{% endfor%}
+ </tr>
+ {% endfor%}
+ </table>{% endcomment %}
+ </div>
+ {% if dashboard.years %}
+ <h4>{% trans "By years" %}</h4>
+ <ul>
+ <li><strong>{% trans "Average:" %}</strong> {{dashboard.average}}</li>
+ <li><strong>{% trans "Variance:" %}</strong> {{dashboard.variance}}</li>
+ <li><strong>{% trans "Standard deviation:" %}</strong> {{dashboard.standard_deviation}}</li>
+ <li><strong>{% trans "Median:" %}</strong> {{dashboard.median}}</li>
+ <li><strong>{% trans "Mode:" %}</strong> {{dashboard.mode}}</li>
+ </ul>
+ {% endif %}
+ {% if dashboard.operation_average %}
+ <h4>{% trans "By operations" %}</h4>
+ <ul>
+ <li><strong>{% trans "Average:" %}</strong> {{dashboard.operation_average}}</li>
+ <li><strong>{% trans "Variance:" %}</strong> {{dashboard.operation_variance}}</li>
+ <li><strong>{% trans "Standard deviation:" %}</strong> {{dashboard.operation_standard_deviation}}</li>
+ <li><strong>{% trans "Median:" %}</strong> {{dashboard.operation_median}}</li>
+ <li><strong>{% trans "Mode:" %}</strong> {{dashboard.operation_mode}}</li>
+ </ul>
+ {% endif %}
+ <h4>{% trans "Created last" %}</h4>
+ <div class='table'>
+ <table>
+ <tr><th>{{lbl}}</th><th>{% trans "Created" %}</th><th></th></tr>
+ {% for item in dashboard.lasts %}<tr>
+ <td class='ref'>{{item}}</td>
+ <td>{{item.history_date}}</td>
+ <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>{%trans "Show"%}</a>{%endif%}</td>
+ </tr>{% endfor %}
+ </table>
+ </div>
+ <h4>{% trans "Recent changes" %}</h4>
+ <div class='table'>
+ <table>
+ <tr><th>{{lbl}}</th><th>{% trans "Modified" %}</th><th></th></tr>
+ {% for item in dashboard.recents %}<tr>
+ <td class='ref'>{{item}}</td>
+ <td>{{item.history_date}}</td>
+ <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>{%trans "Show"%}</a>{%endif%}</td>
+ </tr>{% endfor %}
+ </table>
+ </div>
+ </div>
diff --git a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail_users.html b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail_users.html
new file mode 100644
index 000000000..6602d5193
--- /dev/null
+++ b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail_users.html
@@ -0,0 +1,36 @@
+{% load i18n %}
+ <h3>{% trans "Users" %}</h3>
+ <div>
+<script language="javascript" type="text/javascript">
+$(document).ready(function(){
+var values_users = [];
+{% for user_type in ishtar_users.types %}
+values_users.push(['{{user_type.person__person_types__label}}', {{user_type.number}}]); {% endfor%}
+
+var plot_users = jQuery.jqplot ('user_chart', [values_users],
+ {
+ seriesDefaults: {
+ renderer: jQuery.jqplot.PieRenderer,
+ rendererOptions: {
+ showDataLabels: true
+ }
+ },
+ legend: { show:true, location: 's' }
+ }
+ );
+});
+</script>
+ <div id="user_chart" style="height:400px; width:700px;"></div>
+ <div class='table'>
+ <table>
+ <tr><th>{% trans "User type" %}</th><th>{% trans "Number" %}</th></tr>
+ {% for user_type in ishtar_users.types %}
+ <tr>
+ <td class='string'>{{user_type.person__person_types__label}}{#TODO: Display all#}</td>
+ <td>{{user_type.number}}</td>
+ </tr>
+ {% endfor%}
+ </table>
+ </div>
+</div>
+
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index c46f555e9..8b148530e 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -63,6 +63,8 @@ urlpatterns += patterns('ishtar_common.views',
# General
url(r'dashboard-main/$', 'dashboard_main',
name='dashboard-main'),
+ url(r'dashboard-main/(?P<item_name>[a-z-]+)/$', 'dashboard_main_detail',
+ name='dashboard-main-detail'),
url(r'update-current-item/$', 'update_current_item',
name='update-current-item'),
url(r'new-person/(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$',
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index c3e6dbb33..9f193fdec 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -703,6 +703,7 @@ def dashboard_main(request, dct, obj_id=None, *args, **kwargs):
"""
Main dashboard
"""
+ """
items = []
if 'archaeological_files' in settings.INSTALLED_APPS:
from archaeological_files.models import File
@@ -718,5 +719,47 @@ def dashboard_main(request, dct, obj_id=None, *args, **kwargs):
items.append((_(u"Finds"), models.Dashboard(Find)))
dct = {'items':items,
'ishtar_users':models.UserDashboard()}
+ """
+ app_list = []
+ if 'archaeological_files' in settings.INSTALLED_APPS:
+ app_list.append((_(u"Archaeological files"), 'files'))
+ app_list.append((_(u"Operations"), 'operations'))
+ if 'archaeological_context_records' in settings.INSTALLED_APPS:
+ app_list.append((_(u"Context records"), 'context-records'))
+ if 'archaeological_finds' in settings.INSTALLED_APPS:
+ app_list.append((_(u"Finds"), 'finds'))
+ dct = {'app_list':app_list}
return render_to_response('ishtar/dashboards/dashboard_main.html', dct,
context_instance=RequestContext(request))
+
+def dashboard_main_detail(request, item_name):
+ """
+ Specific tab of the main dashboard
+ """
+ if item_name == 'users':
+ dct = {'ishtar_users':models.UserDashboard()}
+ return render_to_response(
+ 'ishtar/dashboards/dashboard_main_detail_users.html',
+ dct, context_instance=RequestContext(request))
+ lbl, dashboard = None, None
+ if item_name == 'files' and \
+ 'archaeological_files' in settings.INSTALLED_APPS:
+ from archaeological_files.models import File
+ lbl, dashboard = (_(u"Archaeological files"), models.Dashboard(File))
+ if item_name == 'operations':
+ from archaeological_operations.models import Operation
+ lbl, dashboard = (_(u"Operations"), models.Dashboard(Operation))
+ if item_name == 'context-records' and \
+ 'archaeological_context_records' in settings.INSTALLED_APPS:
+ from archaeological_context_records.models import ContextRecord
+ lbl, dashboard = (_(u"Context records"), models.Dashboard(ContextRecord))
+ if item_name == 'finds' and \
+ 'archaeological_finds' in settings.INSTALLED_APPS:
+ from archaeological_finds.models import Find
+ lbl, dashboard = (_(u"Finds"), models.Dashboard(Find))
+ if not lbl:
+ raise Http404
+ dct = {'lbl':lbl, 'dashboard':dashboard,
+ 'item_name':item_name.replace('-', '_')}
+ return render_to_response('ishtar/dashboards/dashboard_main_detail.html',
+ dct, context_instance=RequestContext(request))