X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fhazelnut%2Fstatic%2Fjs%2Fhazelnut.js;h=ab22c1e443bdffaa05c48ace37ab58b1c3131031;hb=c33f536cc523e21c29cf06d0c906009b01b6f576;hp=48c8aaa0fff32c4eb114535c3a15b727d889e5e5;hpb=90d67c0586ebd5c4233a378b918d643ae152ae56;p=unfold.git diff --git a/plugins/hazelnut/static/js/hazelnut.js b/plugins/hazelnut/static/js/hazelnut.js index 48c8aaa0..ab22c1e4 100644 --- a/plugins/hazelnut/static/js/hazelnut.js +++ b/plugins/hazelnut/static/js/hazelnut.js @@ -6,7 +6,6 @@ (function($){ - // TEMP var debug=false; // debug=true @@ -83,7 +82,7 @@ var actual_options = { // Customize the position of Datatables elements (length,filter,button,...) // we use a fluid row on top and another on the bottom, making sure we take 12 grid elt's each time - sDom: "<'row'<'col-md-5'l><'col-md-1'r><'col-md-6'f>>t<'row'<'col-md-5'i><'col-md-7'p>>", + sDom: "<'row'<'col-xs-5'l><'col-xs-1'r><'col-xs-6'f>>t<'row'<'col-xs-5'i><'col-xs-7'p>>", // XXX as of sept. 2013, I cannot locate a bootstrap3-friendly mode for now // hopefully this would come with dataTables v1.10 ? // in any case, search for 'sPaginationType' all over the code for more comments @@ -203,7 +202,7 @@ // adding an array in one call is *much* more efficient // this.table.fnAddData(line); - this.buffered_lines.push(line) + this.buffered_lines.push(line); }, @@ -238,8 +237,7 @@ set_checkbox: function(record, checked) { /* Default: checked = true */ - if (typeof checked === 'undefined') - checked = true; + if (checked === undefined) checked = true; var key_value; /* The function accepts both records and their key */ @@ -259,7 +257,8 @@ var checkbox_id = this.flat_id(this.id('checkbox', key_value)); checkbox_id = '#' + checkbox_id; - var element = $(checkbox_id, this.table.fnGetNodes()); + // 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); element.attr('checked', checked); }, @@ -326,9 +325,9 @@ on_query_done: function() { - if (this.received_all_query) - this.unspin(); this.received_query = true; + // unspin once we have received both + if (this.received_all_query && this.received_query) this.unspin(); }, on_field_state_changed: function(data) @@ -368,22 +367,22 @@ on_all_query_done: function() { - var self = this; - if (this.received_query) { - /* XXX needed ? XXX We uncheck all checkboxes ... */ - $("[id^='datatables-checkbox-" + this.options.plugin_uuid +"']").attr('checked', false); - - /* ... and check the ones specified in the resource list */ - $.each(this.buffered_records_to_check, function(i, record) { - if (debug) messages.debug ("delayed turning on checkbox " + i + " record= " + record); - self.set_checkbox(record, true); - }); - - this.unspin(); - } + if (debug) messages.debug("1-shot initializing dataTables content with " + this.buffered_lines.length + " lines"); this.table.fnAddData (this.buffered_lines); this.buffered_lines=[]; + + var self = this; + // if we've already received the slice query, we have not been able to set + // checkboxes on the fly at that time (dom not yet created) + $.each(this.buffered_records_to_check, function(i, record) { + if (debug) messages.debug ("delayed turning on checkbox " + i + " record= " + record); + self.set_checkbox(record, true); + }); + this.buffered_records_to_check = []; + this.received_all_query = true; + // unspin once we have received both + if (this.received_all_query && this.received_query) this.unspin(); }, // on_all_query_done @@ -486,6 +485,7 @@ var self = e.data; // XXX this.value = key of object to be added... what about multiple keys ? + if (debug) messages.debug("hazelnut click handler checked=" + this.checked + " hrn=" + this.value); manifold.raise_event(self.options.query_uuid, this.checked?SET_ADD:SET_REMOVED, this.value); //return false; // prevent checkbox to be checked, waiting response from manifold plugin api