X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fhazelnut%2Fstatic%2Fjs%2Fhazelnut.js;h=dbff4ce1081a50c53c15bde5dda65a96c8018eda;hb=a0636b9fc2e25428fb9e66c61c8ce85d1b35cc5b;hp=316c3f8f25442523863e496e7b2e64a1c12a759d;hpb=33c44514c7d6ceafba6a7b89fcef3f93caf8ddb3;p=myslice.git diff --git a/plugins/hazelnut/static/js/hazelnut.js b/plugins/hazelnut/static/js/hazelnut.js index 316c3f8f..dbff4ce1 100644 --- a/plugins/hazelnut/static/js/hazelnut.js +++ b/plugins/hazelnut/static/js/hazelnut.js @@ -6,9 +6,8 @@ (function($){ - // TEMP var debug=false; - debug=true +// debug=true var Hazelnut = Plugin.extend({ @@ -17,10 +16,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 +45,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 +79,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>>", @@ -98,7 +97,16 @@ // XXX use $.proxy here ! }; // the intention here is that options.datatables_options as coming from the python object take precedence - // XXX DISABLED by jordan: was causing errors in datatables.js $.extend(actual_options, options.datatables_options ); + // 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); /* Setup the SelectAll button in the dataTable header */ @@ -139,13 +147,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 += "