X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Flists%2Fsimplelist.js;h=9cd5129722784d64647707f0b5d265ae65f953d2;hb=a953233a34580bc72aa8b6b03c017ff94f9eee7d;hp=172cd34e80058e827dc81465b8b43f92743bb854;hpb=f4331c700e8d1d577323c2e9cb6e3d4531453f70;p=myslice.git diff --git a/plugins/lists/simplelist.js b/plugins/lists/simplelist.js index 172cd34e..9cd51297 100644 --- a/plugins/lists/simplelist.js +++ b/plugins/lists/simplelist.js @@ -28,12 +28,12 @@ var channel='/results/' + options.query_uuid + '/changed'; /* passing $this as 2nd arg: callbacks will retrieve $this as e.data */ $.subscribe(channel, $this, update_plugin); - if (debug) window.console.log('subscribing to ' + channel); + if (debug) window.messages.debug('subscribing to ' + channel); $this.data('SimpleList', options); }); }, destroy : function( ) { - if (debug) console.log("SimpleList.destroy..."); + if (debug) messages.debug("SimpleList.destroy..."); return this.each(function(){ var $this = $(this), data = $this.data('SimpleList'); // xxx not too sure what this is about @@ -42,7 +42,7 @@ }); }, update : function( content ) { - if (debug) console.log("SimpleList.update..."); + if (debug) messages.debug("SimpleList.update..."); }, }; // methods @@ -50,41 +50,50 @@ // complexity here is mostly because a datatables-enabled table cannot // be updated in a "normal" way using .html() function update_plugin(e, rows) { - // e.data is what we passed in second argument to subscribe - // so here it is the jquery object attached to the plugin
- var $plugindiv=e.data; - // locate the element; with datatables in the way, - // this might not be a direct son of the div-plugin - var $table=$plugindiv.find("table.simplelist").first(); - // also we may or may not have a header - var $tbody=$table.find("tbody.simplelist").first(); - var use_datatables = $table.hasClass("with-datatables"); - if (debug) console.log($plugindiv.attr('id') + " udt= " + use_datatables); + // e.data is what we passed in second argument to subscribe + // so here it is the jquery object attached to the plugin
+ var $plugindiv = e.data; + // locate the
element; with datatables in the way, + // this might not be a direct son of the div-plugin + var $table = $plugindiv.find("table.simplelist").first(); + // also we may or may not have a header + var $tbody = $table.find("tbody.simplelist").first(); + var use_datatables = $table.hasClass("with-datatables"); + if (debug) + messages.debug($plugindiv.attr('id') + " udt= " + use_datatables); // clear the spinning wheel: look up an ancestor that has the need-spin class // do this before we might return - $plugindiv.closest('.need-spin').spin(false); + $plugindiv.closest('.need-spin').spin(false); if (rows.length == 0) { - if (use_datatables) datatables_set_message ($table, $tbody, unfold.warning("No result")); - else regular_set_message ($table, $tbody, unfold.warning("No result")); + if (use_datatables) + datatables_set_message ($table, $tbody, unfold.warning("No result")); + else + regular_set_message ($table, $tbody, unfold.warning("No result")); return; } + if (typeof rows[0].error != 'undefined') { - var error="ERROR: " + rows[0].error; - if (use_datatables) datatables_set_message ($table, $tbody, unfold.error(error)); - else regular_set_message ($table, $tbody, unfold.error(error)); + var error="ERROR: " + rows[0].error; + if (use_datatables) + datatables_set_message ($table, $tbody, unfold.error(error)); + else + regular_set_message ($table, $tbody, unfold.error(error)); return; } + var options = $plugindiv.data().SimpleList; - if (use_datatables) datatables_update_table ($table,$tbody,rows,options.key); - else regular_update_table ($table,$tbody,rows,options.key); + if (use_datatables) + datatables_update_table($table, $tbody, rows, options.key); + else + regular_update_table($table, $tbody, rows, options.key); - } + } // hard-wire a separate presentation depending on the key being used.... function cell(key, value) { - if (key == 'slice_hrn') { + if (key == 'slice.slice_hrn') { return "" + value + ""; } else if (key == 'network_hrn') { return "" + value ; @@ -98,19 +107,35 @@ } function regular_update_table ($table, $tbody, rows, key) { - if (debug) console.log('regular_update_table ' + rows.length + " rows"); - var html=$.map(rows, function (row) { return html_row ( cell (key, row[key])); }).join(); - $tbody.html(html); + if (debug) + messages.debug('regular_update_table ' + rows.length + " rows"); + var html=$.map(rows, function (row) { + value = row; + $.each(key.split('.'), function(i, k) { + if ($.isArray(value)) { + value = $.map(value, function(val, i) { return val[k]}); + } else { + value = value[k]; + } + }); + if ($.isArray(value)) { + x = $.map(value, function(val, i) { return html_row ( cell (key, val)); }); + return x; + } else { + return html_row ( cell (key, value)); + } + }).join(); + $tbody.html(html); } function datatables_set_message ($table, $tbody, message) { - $table.dataTable().fnClearTable(); - $table.dataTable().fnAddData( [ message ] ); - $table.dataTable().fnDraw(); + $table.dataTable().fnClearTable(); + $table.dataTable().fnAddData( [ message ] ); + $table.dataTable().fnDraw(); } function datatables_update_table ($table, $tbody, rows, key) { - if (debug) console.log('datatables_update_table ' + rows.length + " rows"); + if (debug) messages.debug('datatables_update_table ' + rows.length + " rows"); $table.dataTable().fnClearTable(); // the lambda here returns a [[]] because $.map is kind of broken; as per the doc: // The function can return any value to add to the array. A returned array will be flattened into the resulting array. @@ -119,6 +144,8 @@ $table.dataTable().fnDraw(); } - function html_row (cell) { return ""; } + function html_row (cell) { + return ""; + } })( jQuery );
"+cell+"
"+cell+"