Better tab table management. Ajax request to move up or down the tag order.
authorcavaliet
Wed, 01 Jun 2011 19:13:42 +0200
changeset 8 fe20b23e9f0f
parent 7 b5204be88f8e
child 9 ba16d97a8632
Better tab table management. Ajax request to move up or down the tag order.
web/hdabo/static/hdabo/css/style.css
web/hdabo/templates/hdabo_base.html
web/hdabo/templates/partial/list_for_orga.html
web/hdabo/templates/partial/one_sheet.html
web/hdabo/templates/partial/organisation_list.html
web/hdabo/urls.py
web/hdabo/views.py
--- a/web/hdabo/static/hdabo/css/style.css	Tue May 31 11:49:24 2011 +0200
+++ b/web/hdabo/static/hdabo/css/style.css	Wed Jun 01 19:13:42 2011 +0200
@@ -10,6 +10,9 @@
  	min-width:750px;
 	text-align: justify; 	
 }
+body p {
+ 	margin: 2px; 	
+}
 
 a img,a:link img, a:active img, a:visited img, a:hover img  {
 	border:0px;
@@ -32,7 +35,7 @@
 	/*border-bottom-width: 1px;
 	border-bottom-style: dashed;
 	border-bottom-color: #2c8084;
-	/*font-weight: bold;*/
+	font-weight: bold;*/
 }
 a:visited {
 	color: #50a4a3;
@@ -48,7 +51,7 @@
 
 #header
 {
-    padding: .5em;
+    padding: .2em;
     border-bottom: 1px solid gray;
     border-left: 1px solid gray;
 }
@@ -63,7 +66,7 @@
 {
     padding: 0px;
 	max-width: 8em;
-	font-size: 40px;
+	font-size: 30px;
 	font-weight : bold;
 	text-align: left;
     text-transform: uppercase;
@@ -216,12 +219,17 @@
 }
 
 #toolbar {
-	margin-top: 10px;
-	border-bottom: 3px solid #707070;
+	margin-top: 2px;
+	margin-bottom: 2px;
+	border-bottom: 2px solid #707070;
+}
+#toolbar p {
+	margin-top: 5px;
+	margin-bottom: 5px;
 }
 
 #inner_content {
-	padding: 40px 0px 50px 0px; 	
+	padding: 5px 0px 50px 0px;
 }
 
 #loginstate {
@@ -278,7 +286,7 @@
 .errorlist
 {
     color: red;
-    font-size:12px
+    font-size:12px;
 }
 
 tr.hdabooddline {
@@ -299,4 +307,20 @@
 	font-weight : bold;
 }
 
+#tag_table {
+	width: 100%;
+	border-spacing: 0px;
+}
+#tag_table td, th {
+	/*border: thin solid #6495ed;*/
+	padding: 3px;
+}
+.updown_td {
+	width: 12px;
+}
 
+.sheet_title {
+	font-size: 14px;
+}
+
+
--- a/web/hdabo/templates/hdabo_base.html	Tue May 31 11:49:24 2011 +0200
+++ b/web/hdabo/templates/hdabo_base.html	Wed Jun 01 19:13:42 2011 +0200
@@ -12,6 +12,7 @@
     <link rel="SHORTCUT ICON" href="{{STATIC_URL}}hdabo/img/favicon.ico" />
     <title>{% block title %}HDA-BO{% endblock %}</title>
     {% block js_import %}
+    <script type="text/javascript" src="{{STATIC_URL}}hdabo/js/hdabo.js"></script>
     <script type="text/javascript" src="{{STATIC_URL}}hdabo/js/jquery.min.js"></script>
     <script type="text/javascript" src="{{STATIC_URL}}hdabo/js/jquery.nyroModal.min.js"></script>
     <!--[if IE 6]>
@@ -36,42 +37,27 @@
     {% endblock %}
     
     {% block js_declaration %}
-    <script type="text/javascript">   
-    $(document).ready(function() {
-    	
-    	$("#version").css('visibility','hidden');
-    	
-    	$("#versionwrapper").hover(
-    	    function(event) {
-    		    $("#version",event.target).css('visibility','visible');
-    		},
-    	    function(event) {
-    		   $("#version",event.target).css('visibility','hidden');
-    		}
-    	);
-    	
-    });
-    </script>
     {% endblock %}
+    
 {% endblock %}
 </head>
 <body>
 {% block body %}
 <div class="container">
-<div id="header" class="span-24 last">      
+<div id="header">      
     {% block header %}
-    <div id="header_left" class="span-24 last">
+    <div id="header_left">
     	<p><a href="{% url hdabo.views.home %}">HDA<span class="hda_blue">BO</span></a></p>
     </div>
     {% endblock %}
 </div>
 <div id="content" class="span-24 last">
-    <div id="toolbar" class="span-24 last">
+    <div id="toolbar">
     {% block toolbar %}
     <p><a href="{% url hdabo.views.home %}">home</a></p>
     {% endblock %}
     </div>
-    <div id="inner_content" class="span-24 last">
+    <div id="inner_content">
     {% block content %}
     {% endblock %}
     </div>      
--- a/web/hdabo/templates/partial/list_for_orga.html	Tue May 31 11:49:24 2011 +0200
+++ b/web/hdabo/templates/partial/list_for_orga.html	Wed Jun 01 19:13:42 2011 +0200
@@ -1,9 +1,24 @@
 {% extends "hdabo_base.html" %}
     {% block title %}HDA - BO : Fiches pour {{ orga_name }}{% endblock %}
     
+    {% block js_declaration %}
+    {{block.super}}
+    {% if valid != "2" %}
+    <script type="text/javascript">
+    
+    var global_csrf_token = "{{ csrf_token }}";
+    var tag_up_down_url = "{% url hdabo.views.tag_up_down %}";
+    
+    $(document).ready(function(){
+        init_tags_events();
+    });
+    </script>
+    {% endif %}
+    {% endblock %}
+    
     {% block content %}
     {{block.super}}
-    <p>Fiche(s) pour l'organisation <b>{{ orga_name }}</b> : {{nb_sheets}} fiche(s) ({{valid}}/{{start_index}})</p>
+    <p>Fiche(s) pour l'organisation <b>{{ orga_name }}</b> : {{nb_sheets}} fiche(s)</p>
     {% if valid != "2" %}
     <div id="count_nav_top">
         <p><a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=0 %}">&lt;&lt;</a>&nbsp;&nbsp;
--- a/web/hdabo/templates/partial/one_sheet.html	Tue May 31 11:49:24 2011 +0200
+++ b/web/hdabo/templates/partial/one_sheet.html	Wed Jun 01 19:13:42 2011 +0200
@@ -1,8 +1,10 @@
 {% block one_sheet %}
 <table>
-<tr><td><b>title</b></td><td>{{ds.title}}</td></tr>
+{% csrf_token %}
+<input type="hidden" name="datasheet_id" value="{{ds.id}}" id="datasheet_id" />
+<tr><td><b>title</b></td><td><p class="sheet_title">{{ds.title}}</p></td></tr>
 <tr><td><b>description</b></td><td>{{ds.description}}</td></tr>
-<tr><td><b>url</b></td><td>{{ds.url}}</td></tr>
+<tr><td><b>url</b></td><td><a href="{{ds.url}}" target="_blank">{{ds.url}}</a></td></tr>
 <tr><td><b>domain_text</b></td><td>{{ds.domain_text}}</td></tr>
 <tr><td><b>primary_periods_text</b></td><td>{{ds.primary_periods_text}}</td></tr>
 <tr><td><b>college_periods_text</b></td><td>{{ds.college_periods_text}}</td></tr>
@@ -18,35 +20,11 @@
 <tr><td><b>validation_date</b></td><td>{{ds.validation_date}}</td></tr>
 <tr><td><b>validated</b></td><td>{{ds.validated}}</td></tr>
 <tr><td><b>validator</b></td><td>{{ds.validator}}</td></tr>
-<tr><td><b>tag_list</b></td><td>{{ds.tag_list}}</td></tr>
 <tr>
     <td><b>tags</b></td>
-    <td><table>
-        <th><td>id</td>
-        <td>label</td>
-        {% comment %}<td>original_label</td>{% endcomment %}
-        <td>alias</td>
-        <td>wikipedia_url</td>
-        <td>url_status</td>
-        <td>dbpedia_uri</td>
-        <td>wikipedia_activated</td></th>
-    {% for t in ds.tags.all %}
-        <tr><td>{{t.label}}</td><td>{{t.label}}</td>
-        {% comment %}<td>{{t.original_label}}</td>{% endcomment %}
-        <td>{{t.alias}}</td>
-        <td>{{t.wikipedia_url}}</td>
-        <td>{{t.url_status}}</td>
-        <td>{{t.dbpedia_uri}}</td>
-        <td>{{t.wikipedia_activated}}</td></tr>
-        
-        {% comment %}
-        <tr><td><b>original_order</b></td><td>{{t.original_order}}</td></tr>
-        <tr><td><b>order</b></td><td>{{t.order}}</td></tr>
-        <tr><td><b>index_note</b></td><td>{{t.index_note}}</td></tr>
-        <tr><td><b>categories</b></td><td>{{t.categories}}</td></tr>
-        {% endcomment %}
-    {% endfor %}
-    </table></td>
+    <td id="tag_table_container">
+    {% include "partial/tag_table.html" %}
+    </td>
 </tr>
 </table>
 {% endblock %}
--- a/web/hdabo/templates/partial/organisation_list.html	Tue May 31 11:49:24 2011 +0200
+++ b/web/hdabo/templates/partial/organisation_list.html	Wed Jun 01 19:13:42 2011 +0200
@@ -11,12 +11,21 @@
         <th class="contenttitle">Fiches validées</th>
         <th class="contenttitle">Toutes les fiches</th>
     </tr>
-    {% for organisation in organisations %}
+    {% for item in organisations %}
     <tr class="imageline {% cycle 'hdabooddline' 'hdaboevenline'%}">
-        <td class="contenttitle">{{ organisation.name|default:"_" }} (<a href="{{organisation.website}}" target="_blank">lien</a>)</td>
-        <td class="contenttitle"><a class="contenttitlelink" href="{% url hdabo.views.list_for_orga orga_id=organisation.id valid=0 %}">Voir</a></td>
-        <td class="contenttitle"><a class="contenttitlelink" href="{% url hdabo.views.list_for_orga orga_id=organisation.id valid=1 %}">Voir</a></td>
-        <td class="contenttitle"><a class="contenttitlelink" href="{% url hdabo.views.list_for_orga orga_id=organisation.id valid=2 %}">Voir</a></td>
+        <td class="contenttitle">{{ item.organisation.name|default:"_" }} (<a href="{{item.organisation.website}}" target="_blank">lien</a>)</td>
+        <td class="contenttitle">
+        {% if item.nb_unval > 0 %}
+        <a class="contenttitlelink" href="{% url hdabo.views.list_for_orga orga_id=item.organisation.id valid=0 %}">{{item.nb_unval}}</a>
+        {% else %}0{% endif %}</td>
+        <td class="contenttitle">
+        {% if item.nb_val > 0 %}
+        <a class="contenttitlelink" href="{% url hdabo.views.list_for_orga orga_id=item.organisation.id valid=1 %}">{{item.nb_val}}</a>
+        {% else %}0{% endif %}</td>
+        <td class="contenttitle">
+        {% if item.nb_all > 0 %}
+        <a class="contenttitlelink" href="{% url hdabo.views.list_for_orga orga_id=item.organisation.id valid=2 %}">{{item.nb_all}}</a>
+        {% else %}0{% endif %}</td>
     </tr>
     {% endfor %}
     </table>
--- a/web/hdabo/urls.py	Tue May 31 11:49:24 2011 +0200
+++ b/web/hdabo/urls.py	Wed Jun 01 19:13:42 2011 +0200
@@ -15,9 +15,9 @@
     # Uncomment the next line to enable the admin:
     url(r'^admin/', include(admin.site.urls)),
     url(r'^$', 'hdabo.views.home', name='home'),
-    #url(r'^list/(?P<orga_id>.*)/(?P<start_index>.*)/(?P<valid>.*)/$', '', name='list_for_orga'),
     url(r'^list/(?P<orga_id>[\w-]+)$', 'hdabo.views.list_for_orga'),
     url(r'^list/(?P<orga_id>[\w-]+)/(?P<valid>[\w-]+)/$', 'hdabo.views.list_for_orga'),
     url(r'^list/(?P<orga_id>[\w-]+)/(?P<valid>[\w-]+)/(?P<start_index>[\w-]+)/$', 'hdabo.views.list_for_orga'),
     url(r'^list/(?P<orga_id>[\w-]+)/(?P<valid>[\w-]+)/(?P<start_index>[\w-]+)/(?P<length>[\w-]+)/$', 'hdabo.views.list_for_orga'),
+    url(r'^tagupdown$', 'hdabo.views.tag_up_down'),
 )
--- a/web/hdabo/views.py	Tue May 31 11:49:24 2011 +0200
+++ b/web/hdabo/views.py	Wed Jun 01 19:13:42 2011 +0200
@@ -9,14 +9,23 @@
 from django.shortcuts import (render_to_response, get_object_or_404,
     get_list_or_404)
 from django.template import RequestContext
-from models import Organisation, Datasheet
+from models import Organisation, Datasheet, TaggedSheet, Tag
 
 
 #@login_required
 def home(request):
     
     # Get all organisations
-    org_list = Organisation.objects.all()
+    orgas = Organisation.objects.all()
+    # Count all validated, unvalidated sheets for each organisation
+    org_list = []
+    for orga in orgas :
+        all_datasheets = Datasheet.objects.filter(organisation=orga)
+        nb_all = len(all_datasheets)
+        nb_val = len(all_datasheets.filter(validated=True))
+        nb_unval = len(all_datasheets.filter(validated=False))
+        org_list.append({'organisation':orga, 'nb_all':nb_all, 'nb_val':nb_val, 'nb_unval':nb_unval})
+    
     
     return render_to_response("partial/organisation_list.html",
                               {'organisations':org_list},
@@ -28,11 +37,6 @@
     
     orga = Organisation.objects.get(id=orga_id)
     orga_name = orga.name
-    # If valid = 0, we search unvalidated sheets
-    # If valid = 1, we search validated sheets
-    # If valid = 2, we search AND DISPLAY all sheets
-    all_datasheets = Datasheet.objects.filter(organisation=orga)
-    nb_sheets = len(all_datasheets)
     
     if start_index :
         try:
@@ -42,20 +46,29 @@
     else :
         start_index = 0
     
+    # If valid = 0, we search unvalidated sheets
+    # If valid = 1, we search validated sheets
+    # If valid = 2, we search AND DISPLAY all sheets
     if valid == "1" :
         # We count all the validated sheets
-        datasheets = all_datasheets.filter(validated=True)
+        datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=True)
         nb_sheets = len(datasheets)
         # And select the current one
         datasheets = [datasheets[start_index]]
     elif valid != "2":
         # We count all the validated sheets
-        datasheets = all_datasheets.filter(validated=False)
+        datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=False)
         nb_sheets = len(datasheets)
         # And select the current one
         datasheets = [datasheets[start_index]]
     else :
-        datasheets = all_datasheets
+        datasheets = Datasheet.objects.filter(organisation=orga)
+        nb_sheets = len(datasheets)
+    
+    # We get the ORDERED tags if we display one sheet (case valid = 0 and 1)
+    ordered_tags = None
+    if valid != "2" :
+        ordered_tags = TaggedSheet.objects.filter(datasheet=datasheets[0]).order_by('order')
     
     displayed_index = start_index + 1;
     prev_index = max(start_index - 1, 0);
@@ -64,8 +77,48 @@
     
     return render_to_response("partial/list_for_orga.html",
                               {'datasheets':datasheets, 'orga_name':orga_name,
-                               'nb_sheets':nb_sheets,'orga_id':orga_id,
+                               'nb_sheets':nb_sheets,'orga_id':orga_id, 'ordered_tags':ordered_tags,
                                'prev_index':prev_index, 'next_index':next_index, 'last_index':last_index,
                                'start_index':start_index, 'displayed_index':displayed_index, 'valid':valid},
                               context_instance=RequestContext(request))
 
+#@login_required
+def tag_up_down(request):
+    ds_id = request.POST["datasheet_id"]
+    tag_id = request.POST["tag_id"]
+    # move can be "u" or "d", for up and down
+    move = request.POST["move"]
+    # First we get the datasheet's TaggedSheets
+    ds_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0])
+    # We get the current TaggedSheet ans its's order
+    ts = ds_tags.filter(tag=Tag.objects.filter(id=tag_id))[0]
+    tag_order = ts.order
+    if move == "u" :
+        next_order = tag_order - 1
+    elif move == "d" :
+        next_order = tag_order + 1
+    else :
+        next_order = None
+    # We get the other TaggedSheet that will be moved
+    other_ts = ds_tags.filter(order=next_order)[0]
+    # We switch the orders
+    ts.order = next_order
+    other_ts.order = tag_order
+    ts.save()
+    other_ts.save()
+    
+    return get_tag_table(request=request, ds_id=ds_id, valid=0)
+
+
+
+#@login_required
+def get_tag_table(request=None, ds_id=None, valid=None):
+    
+    ordered_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]).order_by('order')
+    
+    return render_to_response("partial/tag_table.html",
+                              {'ordered_tags':ordered_tags, 'valid':valid},
+                              context_instance=RequestContext(request))
+
+
+