X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fquerytable%2Fstatic%2Fjs%2Fquerytable.js;h=01c72b66eb851e3776c6d72bf9db6a80c881219e;hb=0b0b20a702f126f0e40ef63cd8f87c705ac962c8;hp=47e0a97a527545725b63538a803e1fd09f71f4ca;hpb=d81f5f5ca87b6eba05adb93cd27ac3c9952cc294;p=unfold.git diff --git a/plugins/querytable/static/js/querytable.js b/plugins/querytable/static/js/querytable.js index 47e0a97a..01c72b66 100644 --- a/plugins/querytable/static/js/querytable.js +++ b/plugins/querytable/static/js/querytable.js @@ -4,68 +4,54 @@ * License: GPLv3 */ -BGCOLOR_RESET = 0; -BGCOLOR_ADDED = 1; -BGCOLOR_REMOVED = 2; +QUERYTABLE_BGCOLOR_RESET = 0; +QUERYTABLE_BGCOLOR_ADDED = 1; +QUERYTABLE_BGCOLOR_REMOVED = 2; (function($){ - - var QUERYTABLE_MAP = { - 'Testbed': 'network_hrn', - 'Resource name': 'hostname', - 'Type': 'type', - }; - var debug=false; // debug=true var QueryTable = Plugin.extend({ init: function(options, element) { - this.classname="querytable"; + this.classname="querytable"; this._super(options, element); /* Member variables */ - // 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_query = false; - - // We need to remember the active filter for datatables filtering - this.filters = Array(); + var query = manifold.query_store.find_analyzed_query(this.options.query_uuid); + this.object = query.object; // XXX /* Events */ - // xx somehow non of these triggers at all for now this.elmt().on('show', this, this.on_show); this.elmt().on('shown.bs.tab', this, this.on_show); this.elmt().on('resize', this, this.on_resize); - var query = manifold.query_store.find_analyzed_query(this.options.query_uuid); - this.object = query.object; - - //// we need 2 different keys - // * canonical_key is the primary key as derived from metadata (typically: urn) - // and is used to communicate about a given record with the other plugins - // * init_key is a key that both kinds of records - // (i.e. records returned by both queries) must have (typically: hrn or hostname) - // in general query_all will return well populated records, but query - // returns records with only the fields displayed on startup - var keys = manifold.metadata.get_key(this.object); - this.canonical_key = (keys && keys.length == 1) ? keys[0] : undefined; - // - this.init_key = this.options.init_key; - // have init_key default to canonical_key - this.init_key = this.init_key || this.canonical_key; - // sanity check - if ( ! this.init_key ) messages.warning ("QueryTable : cannot find init_key"); - if ( ! this.canonical_key ) messages.warning ("QueryTable : cannot find canonical_key"); - if (debug) messages.debug("querytable: canonical_key="+this.canonical_key+" init_key="+this.init_key); + //// we need 2 different keys + // * canonical_key is the primary key as derived from metadata (typically: urn) + // and is used to communicate about a given record with the other plugins + // * init_key is a key that both kinds of records + // (i.e. records returned by both queries) must have (typically: hrn or hostname) + // in general query_all will return well populated records, but query + // returns records with only the fields displayed on startup + var keys = manifold.metadata.get_key(this.object); + this.canonical_key = (keys && keys.length == 1) ? keys[0] : undefined; + // + this.init_key = this.options.init_key; + // have init_key default to canonical_key + this.init_key = this.init_key || this.canonical_key; + + /* sanity check */ + if ( ! this.init_key ) + messages.warning ("QueryTable : cannot find init_key"); + if ( ! this.canonical_key ) + messages.warning ("QueryTable : cannot find canonical_key"); + if (debug) + messages.debug("querytable: canonical_key="+this.canonical_key+" init_key="+this.init_key); /* Setup query and record handlers */ this.listen_query(options.query_uuid); - //this.listen_query(options.query_all_uuid, 'all'); /* GUI setup and event binding */ this.initialize_table(); @@ -74,16 +60,16 @@ BGCOLOR_REMOVED = 2; /* PLUGIN EVENTS */ on_show: function(e) { - if (debug) messages.debug("querytable.on_show"); + if (debug) messages.debug("querytable.on_show"); var self = e.data; self.table.fnAdjustColumnSizing(); - }, + }, on_resize: function(e) { - if (debug) messages.debug("querytable.on_resize"); + if (debug) messages.debug("querytable.on_resize"); var self = e.data; self.table.fnAdjustColumnSizing(); - }, + }, /* GUI EVENTS */ @@ -98,13 +84,13 @@ BGCOLOR_REMOVED = 2; // 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-xs-5'l><'col-xs-1'r><'col-xs-6'f>>t<'row'<'col-xs-5'i><'col-xs-7'p>>", sDom: "<'row'<'col-xs-5'f><'col-xs-1'r><'col-xs-6 columns_selector'>>t<'row'<'col-xs-5'l><'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 + // 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 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' ]}], + aoColumnDefs: [{sDefaultContent: '', aTargets: [ '_all' ]}], // 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 */ @@ -129,16 +115,16 @@ BGCOLOR_REMOVED = 2; // 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 - // 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 ); + // 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 */ @@ -165,11 +151,80 @@ BGCOLOR_REMOVED = 2; /* Processing hidden_columns */ $.each(this.options.hidden_columns, function(i, field) { - //manifold.raise_event(self.options.query_all_uuid, FIELD_REMOVED, field); self.hide_column(field); }); $(".dataTables_filter").append("