X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fquery_editor%2Fstatic%2Fjs%2Fquery_editor.js;h=68d0265a388d2448f99a25abdf27c33e2bfa5e06;hb=c79b3c894ec8a08686ae4978e5375c15ec6f2cbf;hp=553dbc6c2264130bba64414af0a46a430732d473;hpb=15ca59cb1f80be244df33026add2cf97f2f87a62;p=myslice.git diff --git a/plugins/query_editor/static/js/query_editor.js b/plugins/query_editor/static/js/query_editor.js index 553dbc6c..68d0265a 100644 --- a/plugins/query_editor/static/js/query_editor.js +++ b/plugins/query_editor/static/js/query_editor.js @@ -35,13 +35,16 @@ // XXX This should be handled by manifold manifold.raise_event(self.options.query_uuid, FILTER_REMOVED, [key, op]); } - } + }; }, init: function(options, element) { this._super(options, element); - console.log("init Query_Editor"); this.listen_query(options.query_uuid); + // this one is the complete list of resources + // and will be bound to callbacks like on_all_new_record + this.listen_query(options.query_all_uuid, 'all'); + this.elts('queryeditor-auto-filter').change(this.event_filter_added('=')); this.elts('queryeditor-filter').change(this.event_filter_added('=')); @@ -57,7 +60,7 @@ // XXX Why isn't it done statically ? var nCloneTh = document.createElement( 'th' ); var nCloneTd = document.createElement( 'td' ); - nCloneTd.innerHTML = ""; + nCloneTd.innerHTML = ""; //nCloneTd.innerHTML = ''; nCloneTh.innerHTML = 'Info'; nCloneTd.className = "center"; @@ -73,35 +76,38 @@ // We are currently using a DataTable display, but another browsing component could be better //jQuery('#'+this.options.plugin_uuid+'-table').dataTable... var metaTable = this.elmt('table').dataTable({ - bFilter : false, - bPaginate : false, - bInfo : false, - sScrollX : '100%', // Horizontal scrolling - sScrollY : '200px', - //bJQueryUI : true, // Use jQuery UI - bProcessing : true, // Loading - aaSorting : [[ 1, "asc" ]], // sort by column fields on load - aoColumnDefs: [ - { 'bSortable': false, 'aTargets': [ 0 ]}, - { 'sWidth': '8px', 'aTargets': [ 0 ] }, - { 'sWidth': '8px', 'aTargets': [ 4 ] } // XXX NB OF COLS - ] +// Thierry : I'm turning off all the dataTables options for now, so that +// the table displays more properly again, might need more tuning though +// bFilter : false, +// bPaginate : false, +// bInfo : false, +// sScrollX : '100%', // Horizontal scrolling +// sScrollY : '200px', +// //bJQueryUI : true, // Use jQuery UI +// bProcessing : true, // Loading +// aaSorting : [[ 1, "asc" ]], // sort by column fields on load +// aoColumnDefs: [ +// { 'bSortable': false, 'aTargets': [ 0 ]}, +// { 'sWidth': '8px', 'aTargets': [ 0 ] }, +// { 'sWidth': '8px', 'aTargets': [ 4 ] } // XXX NB OF COLS +// ] }); + this.table = metaTable; // Actions on the newly added fields this.elmt('table tbody td span').on('click', function() { var nTr = this.parentNode.parentNode; // use jQuery UI instead of images to keep a common UI - // class="ui-icon treeclick ui-icon-triangle-1-s tree-minus" - // East oriented Triangle class="ui-icon-triangle-1-e" - // South oriented Triangle class="ui-icon-triangle-1-s" + // class="glyphicon glyphicon-chevron-down treeclick tree-minus" + // East oriented Triangle class="glyphicon-chevron-right" + // South oriented Triangle class="glyphicon-chevron-down" - if (this.className=="ui-icon ui-icon-triangle-1-e") { - this.removeClass("ui-icon-triangle-1-e").addClass("ui-icon-triangle-1-s"); + if (this.hasClass("glyphicon-chevron-right")) { + this.removeClass("glyphicon-chevron-right").addClass("glyphicon-chevron-down"); // XXX ?????? metaTable.fnOpen(nTr, this.fnFormatDetails(metaTable, nTr, self.options.plugin_uuid+'_div'), 'details' ); } else { - this.removeClass("ui-icon-triangle-1-s").addClass("ui-icon-triangle-1-e"); + this.removeClass("glyphicon-chevron-down").addClass("glyphicon-chevron-right"); metaTable.fnClose(nTr); } }); @@ -170,7 +176,6 @@ on_field_added: function(field) { - console.log("on_field_added : "+field); this.check_field(field); }, @@ -185,13 +190,12 @@ //console.log("Query_Editor: query_done!"); //console.log(this.availableTags); }, - on_new_record: function(record) + /* Autocomplete based on query_all to get all the fields, where query get only the fields selected */ + on_all_new_record: function(record) { - //console.log("Query_Editor: new_record!"); - //console.log(record); availableTags = this.availableTags; jQuery.each(record,function(key,value){ - value = get_value(value); + value = unfold.get_value(value); if(!availableTags.hasOwnProperty(key)){availableTags[key]=new Array();} //availableTags[key].push(value); var currentArray = availableTags[key]; @@ -276,7 +280,10 @@ jQuery.each(availableTags, function(key, value){ value.sort(); - jQuery("#"+domid+"__field__"+key).autocomplete({ + // using dataTables's $ to search also in nodes that are not currently displayed + var element = self.table.$("#"+domid+"__field__"+key); + + element.autocomplete({ source: value, selectFirst: true, minLength: 0, // allows to browse items with no value typed in @@ -293,7 +300,7 @@ var availableTags={}; jQuery.each (rows, function(index, obj) { jQuery.each(obj,function(key,value){ - value = get_value(value); + value = unfold.get_value(value); if(!availableTags.hasOwnProperty(key)){availableTags[key]=new Array();} //availableTags[key].push(value); var currentArray=availableTags[key];