Modified sliceview to have the filters on top of the resources div stack, correcting...
authorLoic Baron <loic.baron@lip6.fr>
Mon, 14 Oct 2013 16:31:24 +0000 (18:31 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Mon, 14 Oct 2013 16:31:24 +0000 (18:31 +0200)
plugins/hazelnut/static/js/hazelnut.js
plugins/query_editor/static/js/query_editor.js
portal/sliceview.py

index f17eb25..249d2b4 100644 (file)
 
             /* Processing hidden_columns */
             $.each(this.options.hidden_columns, function(i, field) {
-                self.hide_column(field);
+                manifold.raise_event(self.options.query_all_uuid, FIELD_REMOVED, field);
+                //self.hide_column(field);
             });
         }, // initialize_table
 
             if (this.options.checkboxes) {
                 // Use a key instead of hostname (hard coded...)
                 line.push(this.checkbox_html(this.key, record[this.key]));
-           }
+               }
     
-           // adding an array in one call is *much* more efficient
-           // this.table.fnAddData(line);
-           this.buffered_lines.push(line);
-
+           // adding an array in one call is *much* more efficient
+               // this.table.fnAddData(line);
+               this.buffered_lines.push(line);
         },
 
         clear_table: function()
 
             var checkbox_id = this.flat_id(this.id('checkbox', key_value));
             checkbox_id = '#' + checkbox_id;
-           // using dataTables's $ to search also in nodes that are not currently displayed
+               // using dataTables's $ to search also in nodes that are not currently displayed
             var element = this.table.$(checkbox_id);
-           if (debug) messages.debug("set_checkbox checked=" + checked + " id=" + checkbox_id + " matches=" + element.length);
+               if (debug) messages.debug("set_checkbox checked=" + checked + " id=" + checkbox_id + " matches=" + element.length);
             element.attr('checked', checked);
         },
 
             alert('Hazelnut::clear_fields() not implemented');
         },
 
+        /* XXX TODO: make this generic a plugin has to subscribe to a set of Queries to avoid duplicated code ! */
+        /*************************** ALL QUERY HANDLER ****************************/
+
+        on_all_filter_added: function(filter)
+        {
+            // XXX
+            this.redraw_table();
+        },
+
+        on_all_filter_removed: function(filter)
+        {
+            // XXX
+            this.redraw_table();
+        },
+        
+        on_all_filter_clear: function()
+        {
+            // XXX
+            this.redraw_table();
+        },
+
+        on_all_field_added: function(field)
+        {
+            this.show_column(field);
+        },
+
+        on_all_field_removed: function(field)
+        {
+            this.hide_column(field);
+        },
+
+        on_all_field_clear: function()
+        {
+            alert('Hazelnut::clear_fields() not implemented');
+        },
+
+
         /*************************** RECORD HANDLER ***************************/
 
         on_new_record: function(record)
         {
             if (this.received_all_query) {
-               // if the 'all' query has been dealt with already we may turn on the checkbox
-               if (debug) messages.debug("turning on checkbox for record "+record[this.key]);
+                       // if the 'all' query has been dealt with already we may turn on the checkbox
+                       if (debug) messages.debug("turning on checkbox for record "+record[this.key]);
                 this.set_checkbox(record, true);
-           } else {
-               // otherwise we need to remember that and do it later on
-               if (debug) messages.debug ("Remembering record to check " + record[this.key]);
+               } else {
+                       // otherwise we need to remember that and do it later on
+                       if (debug) messages.debug("Remembering record to check " + record[this.key]);
                 this.buffered_records_to_check.push(record);
-           }
+               }
         },
 
         on_clear_records: function()
         on_query_done: function()
         {
             this.received_query = true;
-           // unspin once we have received both
+           // unspin once we have received both
             if (this.received_all_query && this.received_query) this.unspin();
         },
         
             }
         },
 
+        /* XXX TODO: make this generic a plugin has to subscribe to a set of Queries to avoid duplicated code ! */
         // all
+        on_all_field_state_changed: function(data)
+        {
+            switch(data.request) {
+                case FIELD_REQUEST_ADD:
+                case FIELD_REQUEST_ADD_RESET:
+                    this.set_checkbox(data.value, true);
+                    break;
+                case FIELD_REQUEST_REMOVE:
+                case FIELD_REQUEST_REMOVE_RESET:
+                    this.set_checkbox(data.value, false);
+                    break;
+                default:
+                    break;
+            }
+        },
 
         on_all_new_record: function(record)
         {
index fac8c72..9858818 100644 (file)
 
         on_field_added: function(field)
         {
-            console.log("on_field_added : "+field);
             this.check_field(field);
         },
 
index a4efdbd..9b96d4f 100644 (file)
@@ -111,7 +111,33 @@ class SliceView (LoginRequiredAutoLogoutView):
             domid               = 'pending',
             outline_complete    = True,
         ))
-    
+
+        # --------------------------------------------------------------------------
+        # Filter Resources
+       
+        filter_query_editor = QueryEditor(
+            page  = page,
+            query = query_resource_all,
+            title = "Select Columns",
+            domid = 'select-columns',
+            )
+        filter_active_filters = ActiveFilters(
+            page  = page,
+            query = sq_resource,
+            title = "Active Filters",
+            )
+        filters_area = Stack(
+            page                = page,
+            title               = 'Filter Resources',
+            domid               = 'filters',
+            sons                = [filter_query_editor, filter_active_filters],
+            togglable           = True,
+            # start turned off, it will open up itself when stuff comes in
+            toggled             = False,
+            outline_complete    = True, 
+        )
+        main_stack.insert (filters_area)
+
         # --------------------------------------------------------------------------
         # RESOURCES
         # the resources part is made of a Tabs (Geographic, List), 
@@ -145,18 +171,6 @@ class SliceView (LoginRequiredAutoLogoutView):
                 },
             )
 
-        resources_query_editor = QueryEditor(
-            page  = page,
-            query = query_resource_all,
-            title = "Select Columns",
-            domid = 'select-columns',
-            )
-        resources_active_filters = ActiveFilters(
-            page  = page,
-            query = sq_resource,
-            title = "Active Filters ?",
-            )
-
         # List area itself is a Stack with hazelnut on top,
         # and a togglable tabs for customization plugins 
         resources_as_list_area = Stack(
@@ -170,7 +184,7 @@ class SliceView (LoginRequiredAutoLogoutView):
                            toggled='persistent',
                            domid="customize-resources",
                            outline_complete=True,
-                           sons = [ resources_query_editor, resources_active_filters, ],
+                           #sons = [ resources_query_editor, resources_active_filters, ],
                            ),
                     ],
             )