X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fhazelnut%2Fstatic%2Fjs%2Fhazelnut.js;h=ae253d0fad8736b2acd282096a41e417ddfc6755;hb=66e63a3a8dbd1c2a47668b0479ea1ff361269f64;hp=89275eee06d6775ddfc638141a7a5d4ea7da4835;hpb=4ff1372de7efe594e67562ab6c28df4b9f1a3b39;p=myslice.git diff --git a/plugins/hazelnut/static/js/hazelnut.js b/plugins/hazelnut/static/js/hazelnut.js index 89275eee..ae253d0f 100644 --- a/plugins/hazelnut/static/js/hazelnut.js +++ b/plugins/hazelnut/static/js/hazelnut.js @@ -8,7 +8,7 @@ // TEMP var debug=false; - debug=true +// debug=true var Hazelnut = Plugin.extend({ @@ -17,10 +17,17 @@ this._super(options, element); /* Member variables */ - // query status - this.received_all = false; - this.received_set = false; - this.in_set_buffer = Array(); + // in general we expect 2 queries here + // query_uuid refers to a single object (typically a slice) + // query_all_uuid refers to a list (typically resources or users) + // these can return in any order so we keep track of which has been received yet + this.received_all_query = false; + this.received_query = false; + + // 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 + this.buffered_lines = []; /* XXX Events XXX */ // this.$element.on('show.Datatables', this.on_show); @@ -39,17 +46,10 @@ this.listen_query(options.query_uuid); this.listen_query(options.query_all_uuid, 'all'); - /* an internal buffer for keeping lines and display them in one call to fnAddData */ - this.buffered_lines = []; - /* GUI setup and event binding */ this.initialize_table(); }, - default_options: { - 'checkboxes': false - }, - /* PLUGIN EVENTS */ on_show: function(e) @@ -80,7 +80,7 @@ { /* Transforms the table into DataTable, and keep a pointer to it */ var self = this; - actual_options = { + 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>>", @@ -101,6 +101,12 @@ // xxx DISABLED by jordan: was causing errors in datatables.js // xxx turned back on by Thierry - this is the code that takes python-provided options into account // check your datatables_options tag instead + // however, we have to accumulate in aoColumnDefs from here (above) + // and from the python wrapper (checkboxes management, plus any user-provided aoColumnDefs) + if ( 'aoColumnDefs' in this.options.datatables_options) { + actual_options['aoColumnDefs']=this.options.datatables_options['aoColumnDefs'].concat(actual_options['aoColumnDefs']); + delete this.options.datatables_options['aoColumnDefs']; + } $.extend(actual_options, this.options.datatables_options ); this.table = this.elmt('table').dataTable(actual_options); @@ -142,13 +148,13 @@ return (tabIndex.length > 0) ? tabIndex[0] : -1; }, // getColIndex - checkbox: function (key, value) + checkbox_html : function (key, value) { var result=""; // Prefix id with plugin_uuid result += "