plugin.hazelnut: fixed issue with filtering
authorLoic Baron <loic.baron@lip6.fr>
Mon, 28 Oct 2013 10:50:36 +0000 (11:50 +0100)
committerLoic Baron <loic.baron@lip6.fr>
Mon, 28 Oct 2013 10:50:36 +0000 (11:50 +0100)
plugins/hazelnut/static/js/hazelnut.js

index dcd4e1f..7c042b1 100644 (file)
@@ -23,6 +23,9 @@
             this.received_all_query = false;
             this.received_query = false;
 
             this.received_all_query = false;
             this.received_query = false;
 
+            // We need to remember the active filter for datatables filtering
+            this.filters = Array(); 
+
             // an internal buffer for records that are 'in' and thus need to be checked 
             this.buffered_records_to_check = [];
            // an internal buffer for keeping lines and display them in one call to fnAddData
             // an internal buffer for records that are 'in' and thus need to be checked 
             this.buffered_records_to_check = [];
            // an internal buffer for keeping lines and display them in one call to fnAddData
              */
             $.fn.dataTableExt.afnFiltering.push(function( oSettings, aData, iDataIndex ) { 
                 /* No filtering if the table does not match */
              */
             $.fn.dataTableExt.afnFiltering.push(function( oSettings, aData, iDataIndex ) { 
                 /* No filtering if the table does not match */
-                if (oSettings.nTable.id != "hazelnut-" + self.options.plugin_uuid)
+                if (oSettings.nTable.id != self.options.plugin_uuid + '__table')
                     return true;
                     return true;
-                return this._hazelnut_filter.call(self, oSettings, aData, iDataIndex);
+                return self._hazelnut_filter.call(self, oSettings, aData, iDataIndex);
             });
 
             /* Processing hidden_columns */
             });
 
             /* Processing hidden_columns */
 
         on_filter_added: function(filter)
         {
 
         on_filter_added: function(filter)
         {
-            // XXX
-            console.log(filter);
+            this.filters.push(filter);
             this.redraw_table();
         },
 
         on_filter_removed: function(filter)
         {
             this.redraw_table();
         },
 
         on_filter_removed: function(filter)
         {
-            // XXX
+            // Remove corresponding filters
+            this.filters = $.grep(this.filters, function(x) {
+                return x != filter;
+            });
             this.redraw_table();
         },
         
             this.redraw_table();
         },
         
          */
         _hazelnut_filter: function(oSettings, aData, iDataIndex)
         {
          */
         _hazelnut_filter: function(oSettings, aData, iDataIndex)
         {
-            var cur_query = this.current_query;
-            if (!cur_query) return true;
             var ret = true;
             var ret = true;
-
-            /* We have an array of filters : a filter is an array (key op val) 
-             * field names (unless shortcut)    : oSettings.aoColumns  = [ sTitle ]
-             *     can we exploit the data property somewhere ?
-             * field values (unless formatting) : aData
-             *     formatting should leave original data available in a hidden field
-             *
-             * The current line should validate all filters
-             */
-            $.each (cur_query.filters, function(index, filter) { 
+            $.each (this.filters, function(index, filter) { 
                 /* XXX How to manage checkbox ? */
                 var key = filter[0]; 
                 var op = filter[1];
                 /* XXX How to manage checkbox ? */
                 var key = filter[0]; 
                 var op = filter[1];