X-Git-Url: http://git.onelab.eu/?p=myslice.git;a=blobdiff_plain;f=plugins%2Fquerytable%2Fstatic%2Fjs%2Fquerytable.js;h=15ee6f1c2fba59ee5fe9a91236b791a9c7f077af;hp=ebfb833d55995cf0c82ccdf52e6106e7b279e7ec;hb=a52c3773de8611def256d97dd699ba09d390b8fd;hpb=dfdc8ce3be8c9381e91169dba7ee87444280b0c5 diff --git a/plugins/querytable/static/js/querytable.js b/plugins/querytable/static/js/querytable.js index ebfb833d..15ee6f1c 100644 --- a/plugins/querytable/static/js/querytable.js +++ b/plugins/querytable/static/js/querytable.js @@ -7,12 +7,12 @@ (function($){ var debug=false; - debug=true +// debug=true var QueryTable = Plugin.extend({ - init: function(options, element) - { + init: function(options, element) { + this.classname="querytable"; this._super(options, element); /* Member variables */ @@ -31,12 +31,11 @@ // 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); + /* Events */ + // xx somehow non of these triggers at all for now this.elmt().on('show', this, this.on_show); - // Unbind all events using namespacing - // TODO in destructor - // $(window).unbind('QueryTable'); + 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; @@ -69,25 +68,17 @@ /* PLUGIN EVENTS */ - on_show: function(e) - { + on_show: function(e) { + if (debug) messages.debug("querytable.on_show"); var self = e.data; + self.table.fnAdjustColumnSizing(); + }, - self.table.fnAdjustColumnSizing() - - /* Refresh dataTabeles if click on the menu to display it : fix dataTables 1.9.x Bug */ - /* temp disabled... useful ? -- jordan - $(this).each(function(i,elt) { - if (jQuery(elt).hasClass('dataTables')) { - var myDiv=jQuery('#querytable-' + this.id).parent(); - if(myDiv.height()==0) { - var oTable=$('#querytable-' + this.id).dataTable(); - oTable.fnDraw(); - } - } - }); - */ - }, // on_show + on_resize: function(e) { + if (debug) messages.debug("querytable.on_resize"); + var self = e.data; + self.table.fnAdjustColumnSizing(); + }, /* GUI EVENTS */ @@ -167,8 +158,10 @@ }, // getColIndex // create a checkbox tag - // computes 'id' attribute from canonical_key (using flat_id) - // computes 'common_id' from init_key for initialization phase + // computes 'id' attribute from canonical_key + // computes 'init_id' from init_key for initialization phase + // no need to used convoluted ids with plugin-uuid or others, since + // we search using table.$ which looks only in this table checkbox_html : function (record) { var result=""; // Prefix id with plugin_uuid @@ -176,17 +169,13 @@ result += " class='querytable-checkbox'"; // compute id from canonical_key var id = record[this.canonical_key] - // normalize using flat_id - see plugin.js - id = this.flat_id(id) -// if (debug) messages.debug("checkbox_html, id="+id); - result += " id='" + id + "'"; - // compute common_id too - var common_id=record[this.init_key]; - common_id=this.flat_id(common_id); + // compute init_id form init_key + var init_id=record[this.init_key]; + // set id - for retrieving from an id, or for posting events upon user's clicks + result += " id='"+record[this.canonical_key]+"'"; + // set init_id + result += "init_id='" + init_id + "'"; // wrap up - result += "common_id='" + common_id + "'"; - // set value for posting events upon user's clicks - result += " value='"+record[this.canonical_key]+"'"; result += " type='checkbox'"; result += " autocomplete='off'"; result += ">"; @@ -218,8 +207,20 @@ else line.push(record['hostname']); - } else if (colnames[j] == 'hrn' && typeof(record) != 'undefined') { - line.push(' '+record['hrn']); + } else if (colnames[j] == this.init_key && typeof(record) != 'undefined') { + obj = this.object + o = obj.split(':'); + if(o.length>1){ + obj = o[1]; + }else{ + obj = o[0]; + } + /* XXX TODO: Remove this and have something consistant */ + if(obj=='resource'){ + line.push(' '+record[this.init_key]); + }else{ + line.push(' '+record[this.init_key]); + } } else { if (record[colnames[j]]) line.push(record[colnames[j]]); @@ -271,18 +272,19 @@ // (because the argument record, if it comes from query, might not have canonical_key set set_checkbox_from_record: function (record, checked) { if (checked === undefined) checked = true; - var common_id = this.flat_id(record[this.init_key]); - if (debug) messages.debug("set_checkbox_from_record, common_id="+common_id); - var element = this.table.$('[common_id="'+common_id+'"]'); + var init_id = record[this.init_key]; + if (debug) messages.debug("querytable.set_checkbox_from_record, init_id="+init_id); + // using table.$ to search inside elements that are not visible + var element = this.table.$('[init_id="'+init_id+'"]'); element.attr('checked',checked); }, // id relates to canonical_key set_checkbox_from_data: function (id, checked) { if (checked === undefined) checked = true; - var id=this.flat_id(id); - if (debug) messages.debug("set_checkbox_from_data, id="+id); - var element = this.table.$('#'+id); + if (debug) messages.debug("querytable.set_checkbox_from_data, id="+id); + // using table.$ to search inside elements that are not visible + var element = this.table.$("[id='"+id+"']"); element.attr('checked',checked); }, @@ -369,8 +371,6 @@ // if the 'all' query has been dealt with already we may turn on the checkbox this.set_checkbox_from_record(record, true); } else { - // otherwise we need to remember that and do it later on - if (debug) messages.debug("Remembering record to check " + record[this.init_key]); this.buffered_records_to_check.push(record); } }, @@ -453,7 +453,7 @@ // if we've already received the slice query, we have not been able to set // checkboxes on the fly at that time (dom not yet created) $.each(this.buffered_records_to_check, function(i, record) { - if (debug) messages.debug ("delayed turning on checkbox " + i + " record= " + record); + if (debug) messages.debug ("querytable delayed turning on checkbox " + i + " record= " + record); self.set_checkbox_from_record(record, true); }); this.buffered_records_to_check = []; @@ -550,10 +550,11 @@ e.stopPropagation(); var self = e.data; + var id=this.id; - // XXX this.value = key of object to be added... what about multiple keys ? - if (debug) messages.debug("querytable click handler checked=" + this.checked + " "+this.canonical_key+"=" + this.value); - manifold.raise_event(self.options.query_uuid, this.checked?SET_ADD:SET_REMOVED, this.value); + // this.id = key of object to be added... what about multiple keys ? + if (debug) messages.debug("querytable._check_click key="+this.canonical_key+"->"+id+" checked="+this.checked); + manifold.raise_event(self.options.query_uuid, this.checked?SET_ADD:SET_REMOVED, id); //return false; // prevent checkbox to be checked, waiting response from manifold plugin api },