X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fhazelnut%2Fhazelnut.js;h=4bf182ec2a83befea2b9b448b55db2b5ecd230f2;hb=69867d5296684463d3aad4f6db867d24005102aa;hp=a5a9ad8e8071561ca9d4953c5651a2d40cb1810e;hpb=8bd7506149ec3e26a194fcc6e596781e0b399b0f;p=myslice.git
diff --git a/plugins/hazelnut/hazelnut.js b/plugins/hazelnut/hazelnut.js
index a5a9ad8e..4bf182ec 100644
--- a/plugins/hazelnut/hazelnut.js
+++ b/plugins/hazelnut/hazelnut.js
@@ -1,8 +1,5 @@
/**
- * MySlice Hazelnut plugin
- * URL: http://trac.myslice.info
* Description: display a query result in a datatables-powered
- * Author: The MySlice Team
* Copyright (c) 2012 UPMC Sorbonne Universite - INRIA
* License: GPLv3
*/
@@ -43,20 +40,23 @@
return this.each(function() {
var $this = $(this);
/* Events */
- $(this).on('show.Datatables', methods.show);
+ $this.on('show.Datatables', methods.show);
/* An object that will hold private variables and methods */
var hazelnut = new Hazelnut (options);
- $(this).data('Hazelnut', hazelnut);
+ $this.data('Hazelnut', hazelnut);
var query_channel = '/query/' + options.query_uuid + '/changed';
var update_channel = '/update-set/' + options.query_uuid;
var results_channel = '/results/' + options.query_uuid + '/changed';
+ // xxx not tested yet
$.subscribe(query_channel, function(e, query) { hazelnut.set_query(query); });
+ // xxx not tested yet
$.subscribe(update_channel, function(e, resources, instance) { hazelnut.set_resources(resources, instance); });
+ // expected to work
$.subscribe(results_channel, $this, function(e, rows) { hazelnut.update_plugin(e,rows); });
- if (debug) console.log("hazelnut '" + this.id + "' subscribed to e.g." + results_channel);
+ if (debug) messages.debug("hazelnut '" + this.id + "' subscribed to e.g." + results_channel);
}); // this.each
}, // init
@@ -78,7 +78,7 @@
show : function( ) {
var $this=$(this);
// xxx wtf. why [1] ? would expect 0...
- if (debug) console.log("Hitting suspicious line in hazelnut.show");
+ if (debug) messages.debug("Hitting suspicious line in hazelnut.show");
var oTable = $($('.dataTable', $this)[1]).dataTable();
oTable.fnAdjustColumnSizing()
@@ -103,42 +103,35 @@
function Hazelnut(options) {
/* member variables */
this.options = options;
- /* constructor */
- this.table = null;
// xxx thierry : initialize this here - it was not, I expect this relied on set_query somehow..
//this.current_query = null;
this.current_query=manifold.find_query(this.options.query_uuid);
- if (debug) console.log("Hazelnut constructor: have set current_query -> " + this.current_query);
+ if (debug) messages.debug("Hazelnut constructor: have set current_query -> " + this.current_query);
this.query_update = null;
this.current_resources = Array();
var object = this;
/* Transforms the table into DataTable, and keep a pointer to it */
- this.table = $('#hazelnut-' + options.plugin_uuid).dataTable({
+ actual_options = {
// Customize the position of Datatables elements (length,filter,button,...)
- // inspired from :
- // http://datatables.net/release-datatables/examples/advanced_init/dom_toolbar.html
- // http://www.datatables.net/forums/discussion/3914/adding-buttons-to-header-or-footer/p1
- //"sDom": 'lf<"#datatableSelectAll-'+ options.plugin_uuid+'">rtip',
- sDom: "<'row-fluid'<'span6'T><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
+ // we use a fluid row on top and another on the bottom, making sure we take 12 grid elt's each time
+ sDom: "<'row-fluid'<'span5'l><'span1'r><'span6'f>>t<'row-fluid'<'span5'i><'span7'p>>",
sPaginationType: 'bootstrap',
// Handle the null values & the error : Datatables warning Requested unknown parameter
// http://datatables.net/forums/discussion/5331/datatables-warning-...-requested-unknown-parameter/p2
aoColumnDefs: [{sDefaultContent: '',aTargets: [ '_all' ]}],
-// bRetrieve: true,
// WARNING: this one causes tables in a 'tabs' that are not exposed at the time this is run to show up empty
// sScrollX: '100%', /* Horizontal scrolling */
bProcessing: true, /* Loading */
-// this looks like just another ugly hack
-// fnRowCallback: function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
-// $(nRow).attr('id', unfold.get_value(aData[3]));
-// return nRow;
-// },
fnDrawCallback: function() { hazelnut_draw_callback.call(object, options); }
- });
+ };
+ // the intention here is that options.datatables_options as coming from the python object take precedence
+ $.extend(actual_options, options.datatables_options );
+ this.table = $('#hazelnut-' + options.plugin_uuid).dataTable(actual_options);
/* Setup the SelectAll button in the dataTable header */
+ /* xxx not sure this is still working */
var oSelectAll = $('#datatableSelectAll-'+ options.plugin_uuid);
oSelectAll.html("Select All");
oSelectAll.button();
@@ -167,7 +160,7 @@
previous_query = this.current_query;
/* Save the query as the current query */
this.current_query = query;
- if (debug) console.log("hazelnut.set_query, current_query is now -> " + this.current_query);
+ if (debug) messages.debug("hazelnut.set_query, current_query is now -> " + this.current_query);
/* We check all necessary fields : in column editor I presume XXX */
// XXX ID naming has no plugin_uuid
if (typeof(query.fields) != 'undefined') {
@@ -215,7 +208,7 @@
}
this.set_resources = function(resources, instance) {
- if (debug) console.log("entering hazelnut.set_resources");
+ if (debug) messages.debug("entering hazelnut.set_resources");
var options = this.options;
var previous_resources = this.current_resources;
this.current_resources = resources;
@@ -244,7 +237,7 @@
* XXX will be removed/replaced
*/
this.selected_changed = function(e, change) {
- if (debug) console.log("entering hazelnut.selected_changed");
+ if (debug) messages.debug("entering hazelnut.selected_changed");
var actions = change.split("/");
if (actions.length > 1) {
var oNodes = this.table.fnGetNodes();
@@ -268,7 +261,7 @@
// 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;
- if (debug) console.log("entering hazelnut.update_plugin on id '" + $plugindiv.attr('id') + "'");
+ if (debug) messages.debug("entering hazelnut.update_plugin on id '" + $plugindiv.attr('id') + "'");
// 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);
@@ -281,7 +274,7 @@
this.table.html(unfold.errorDisplay("No Result"));
return;
} else if (typeof(rows[0].error) != 'undefined') {
- if (debug) console.log ("undefined result");
+ if (debug) messages.debug ("undefined result");
this.table.html(unfold.errorDisplay(rows[0].error));
return;
}
@@ -332,7 +325,7 @@
});
this.table.fnClearTable();
- if (debug) console.log("hazelnut.update_plugin: total of " + newlines.length + " rows");
+ if (debug) messages.debug("hazelnut.update_plugin: total of " + newlines.length + " rows");
this.table.fnAddData(newlines);
};
@@ -349,6 +342,7 @@
/***************************************************************************
* Private methods
+ * xxx I'm not sure why this should not be methods in the Hazelnut class above
***************************************************************************/
/**