disable sort order when sorting by node (not used in any case)
authorymh <ymh.work@gmail.com>
Tue, 30 Jul 2013 18:39:12 +0200
changeset 82 8a67acd1f3aa
parent 81 e78e5a2017b6
child 83 4cdef872c351
disable sort order when sorting by node (not used in any case) Do not level node to the minimum level of the page
src/jocondelab/forms.py
src/jocondelab/static/jocondelab/css/style.css
src/jocondelab/static/jocondelab/js/jocondelab.js
src/jocondelab/templates/jocondelab/partial/term_list_table.html
src/jocondelab/templates/jocondelab/term_list.html
src/jocondelab/views.py
--- a/src/jocondelab/forms.py	Tue Jul 30 16:21:04 2013 +0200
+++ b/src/jocondelab/forms.py	Tue Jul 30 18:39:12 2013 +0200
@@ -98,9 +98,15 @@
     order_by = fields.ChoiceField(label=_("order_by"), required=False, choices=(('normalized_label',_('label')),('nb_notice',_('nb notice')),('level',_('level')),('lft', _('order_lft'))))
     order_dir = fields.ChoiceField(label=_("order_dir"), required=False, choices=(('asc',_('asc')), ('desc',_('desc'))))
     
+    def __init__(self, *args, **kwargs):
+        super(TermFilterForm, self).__init__(*args, **kwargs)
+        if self.data.get('order_by', 'normalized_label') == 'lft':        
+            self.fields['order_dir'].widget.attrs['disabled'] = 'disabled'
+            
     def clean(self):
         fields_not_empty = any([v for k,v in self.cleaned_data.items() if k not in ('thesaurus','thesaurus_tree', 'link_status', 'order_by', 'order_dir')] + [self.cleaned_data.get('link_status', -1) >= 0])
-        self.can_display_level = (not fields_not_empty) and (self.cleaned_data.get('thesaurus',None) is not None) and (self.cleaned_data.get('order_by','normalized_label') == 'lft') 
+        self.can_display_level = (not fields_not_empty) and (self.cleaned_data.get('thesaurus',None) is not None) and (self.cleaned_data.get('order_by','normalized_label') == 'lft')
+        self.selected_thesaurus = self.cleaned_data.get('thesaurus', None) 
         return super(TermFilterForm, self).clean()
         
     
--- a/src/jocondelab/static/jocondelab/css/style.css	Tue Jul 30 16:21:04 2013 +0200
+++ b/src/jocondelab/static/jocondelab/css/style.css	Tue Jul 30 18:39:12 2013 +0200
@@ -607,7 +607,7 @@
 	min-width: 100px;
 	height: 18px;
 	padding: 1px 1px 0px 1px;
-	vertical-align: center;
+	vertical-align: middle;
 }
 
 #term-filter-field-list #label {
--- a/src/jocondelab/static/jocondelab/js/jocondelab.js	Tue Jul 30 16:21:04 2013 +0200
+++ b/src/jocondelab/static/jocondelab/js/jocondelab.js	Tue Jul 30 18:39:12 2013 +0200
@@ -409,6 +409,14 @@
         }
     });
 
+    $('#order_by').change(function(e) {
+        if($('#order_by').val() === 'lft') {
+            $('#order_dir').prop('disabled', true);
+        }
+        else {
+            $('#order_dir').prop('disabled', false);
+        }
+    })
     
 }
 
--- a/src/jocondelab/templates/jocondelab/partial/term_list_table.html	Tue Jul 30 16:21:04 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/partial/term_list_table.html	Tue Jul 30 18:39:12 2013 +0200
@@ -8,7 +8,7 @@
         <tbody>
         {% for term in object_list %}
         <tr class="{% cycle 'hdabooddline' 'hdaboevenline' %}" id="term-{{term.id}}">
-            <td class="{{term.url_status_text}} term-list-label" {% if show_levels %}style="padding-left: {{ term.corrected_level }}em"{% endif %}><a href="{% url 'term' term_id=term.id %}{% append_to_param %}">{{ term.label }}</a></td>
+            <td class="{{term.url_status_text}} term-list-label" {% if show_levels %}style="padding-left: {{ term.level }}em"{% endif %}><a href="{% url 'term' term_id=term.id %}{% append_to_param %}">{{ term.label }}</a></td>
             <td class="text_centered">{{ term.thesaurus.label }}</td>
             <td class="text_centered">{{ term.level }}</td>
             <td class="text_centered">
--- a/src/jocondelab/templates/jocondelab/term_list.html	Tue Jul 30 16:21:04 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/term_list.html	Tue Jul 30 18:39:12 2013 +0200
@@ -22,7 +22,7 @@
         <tbody>
         {% for term in object_list %}
         <tr class="{% cycle 'hdabooddline' 'hdaboevenline' %}">
-            <td class="{{term.url_status_text}} term-list-label" {% if show_levels %}style="padding-left: {{ term.corrected_level }}em"{% endif %} ><a href="{% url 'term' term_id=term.id %}{% append_to_param %}">{{ term.label }}</a></td>
+            <td class="{{term.url_status_text}} term-list-label" {% if show_levels %}style="padding-left: {{ term.level }}em"{% endif %} ><a href="{% url 'term' term_id=term.id %}{% append_to_param %}">{{ term.label }}</a></td>
             <td class="text_centered">{{ term.thesaurus.label }}</td>
             <td class="text_centered">{{ term.level }}</td>            
             <td class="text_centered">
--- a/src/jocondelab/views.py	Tue Jul 30 16:21:04 2013 +0200
+++ b/src/jocondelab/views.py	Tue Jul 30 18:39:12 2013 +0200
@@ -46,33 +46,27 @@
         context = ListView.get_context_data(self, **kwargs)
         filter_form = self.get_filter_form()
         context['filter_form'] = filter_form
-        page = context.get('page_obj', None)
-        if page and self.can_display_level:
-            levels = [t.level for t in page.object_list]
-            min_level = min(levels)
-            max_level = max(levels)
-            if max_level > 0 :
+        valid_thesaurus_ids = [entry['thesaurus__id'] for entry in Term.objects.root_nodes().values('thesaurus__id').annotate(root_nodes_count=Count('thesaurus__id')).order_by().filter(root_nodes_count__lt=settings.JOCONDE_TERM_TREE_MAX_ROOT_NODE)]  # @UndefinedVariable
+        context['term_tree_valid_thesaurus'] = json.dumps(valid_thesaurus_ids)
+        if self.selected_thesaurus and self.can_display_level:
+            if self.selected_thesaurus.id in valid_thesaurus_ids:
                 context['show_levels'] = True
-                new_object_list = []
-                for t in page.object_list:
-                    t.corrected_level = 2*(t.level-min_level)
-                    new_object_list.append(t)
-                page.object_list = new_object_list
             else:
                 context['show_levels'] = False
         else:
-            context['show_level'] = False
-        context['term_tree_valid_thesaurus'] = json.dumps([entry['thesaurus__id'] for entry in Term.objects.root_nodes().values('thesaurus__id').annotate(root_nodes_count=Count('thesaurus__id')).order_by().filter(root_nodes_count__lt=settings.JOCONDE_TERM_TREE_MAX_ROOT_NODE)])  # @UndefinedVariable
+            context['show_level'] = False        
         return context
     
     def get_queryset(self):
         qs = super(TermListView, self).get_queryset()
         filter_form = self.get_filter_form()
         if filter_form.is_valid():
-            self.can_display_level = filter_form.can_display_level            
+            self.can_display_level = filter_form.can_display_level
+            self.selected_thesaurus = filter_form.selected_thesaurus 
             return filter_form.get_filter_qs(qs)
         else:
-            self.can_display_level = False
+            self.can_display_level = False            
+            self.selected_thesaurus = None
             return None
 
 class TermListTableView(TermListView):
@@ -104,8 +98,11 @@
         filter_form = self.get_filter_form()
         if filter_form.is_valid():
             self.can_display_level = filter_form.can_display_level
+            self.selected_thesaurus = filter_form.selected_thesaurus
             return filter_form.get_filter_qs(qs)
         else:
+            self.can_display_level = False
+            self.selected_thesaurus = None
             return None
 
     
@@ -133,29 +130,21 @@
         context['ancestors'] = self.object.get_ancestors(ascending=True)
                  
         context['filter_form'] = self.get_filter_form()
-        context['term_tree_valid_thesaurus'] = json.dumps([entry['thesaurus__id'] for entry in Term.objects.root_nodes().values('thesaurus__id').annotate(root_nodes_count=Count('thesaurus__id')).order_by().filter(root_nodes_count__lt=settings.JOCONDE_TERM_TREE_MAX_ROOT_NODE)])  # @UndefinedVariable
         context['link_semantic_level_choice'] = TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES
         context['JOCONDE_IMG_BASE_URL'] = settings.JOCONDE_IMG_BASE_URL
         context['JOCONDE_NOTICE_BASE_URL'] = settings.JOCONDE_NOTICE_BASE_URL
         context['wikipedia_lang_list'] = settings.WIKIPEDIA_URLS.keys()
         context['wikipedia_urls'] = json.dumps(settings.WIKIPEDIA_URLS)
         
-        page = context.get('page_obj', None)
-        if page and self.can_display_level:
-            levels = [t.level for t in page.object_list]
-            min_level = min(levels)
-            max_level = max(levels)
-            if max_level > 0 :
+        valid_thesaurus_ids = [entry['thesaurus__id'] for entry in Term.objects.root_nodes().values('thesaurus__id').annotate(root_nodes_count=Count('thesaurus__id')).order_by().filter(root_nodes_count__lt=settings.JOCONDE_TERM_TREE_MAX_ROOT_NODE)]  # @UndefinedVariable
+        context['term_tree_valid_thesaurus'] = json.dumps(valid_thesaurus_ids)
+        if self.selected_thesaurus and self.can_display_level:
+            if self.selected_thesaurus.id in valid_thesaurus_ids:
                 context['show_levels'] = True
-                new_object_list = []
-                for t in page.object_list:
-                    t.corrected_level = 2*(t.level-min_level)
-                    new_object_list.append(t)
-                page.object_list = new_object_list
             else:
                 context['show_levels'] = False
         else:
-            context['show_level'] = False
+            context['show_level'] = False        
 
         
         field_index = {