X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=plugins%2Fhazelnut%2Fstatic%2Fjs%2Fhazelnut.js;h=7c042b188de2492cd3e6447fa90eb3bec1d5e686;hb=2baef1cc1dd5bd77c4a949cd60721122d1b55a46;hp=249d2b4b80399ce5646809a18f1ae0dec473ec9b;hpb=4a99831db81024d5d25869d4c475d381fd39f75a;p=myslice.git diff --git a/plugins/hazelnut/static/js/hazelnut.js b/plugins/hazelnut/static/js/hazelnut.js index 249d2b4b..7c042b18 100644 --- a/plugins/hazelnut/static/js/hazelnut.js +++ b/plugins/hazelnut/static/js/hazelnut.js @@ -23,6 +23,9 @@ 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 @@ -126,15 +129,15 @@ */ $.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 this._hazelnut_filter.call(self, oSettings, aData, iDataIndex); + return self._hazelnut_filter.call(self, oSettings, aData, iDataIndex); }); /* Processing hidden_columns */ $.each(this.options.hidden_columns, function(i, field) { - manifold.raise_event(self.options.query_all_uuid, FIELD_REMOVED, field); - //self.hide_column(field); + //manifold.raise_event(self.options.query_all_uuid, FIELD_REMOVED, field); + self.hide_column(field); }); }, // initialize_table @@ -259,7 +262,8 @@ var checkbox_id = this.flat_id(this.id('checkbox', key_value)); - checkbox_id = '#' + checkbox_id; + // function escape_id(myid) is defined in portal/static/js/common.functions.js + checkbox_id = escape_id(checkbox_id); // 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); @@ -270,13 +274,16 @@ on_filter_added: function(filter) { - // XXX + this.filters.push(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(); }, @@ -449,19 +456,8 @@ */ _hazelnut_filter: function(oSettings, aData, iDataIndex) { - var cur_query = this.current_query; - if (!cur_query) return 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];