var debug=false;
debug=true
- var contents_debug=false;
-// contents_debug=true;
+ var debug_deep=false;
+// debug_deep=true;
var QueryTable = Plugin.extend({
// compute columns based on columns and hidden_columns
this.slick_columns = [];
var all_columns = this.options.columns; // .concat(this.options.hidden_columns)
+ // xxx would be helpful to support a column_renamings options arg
+ // for redefining some labels like 'network_hrn' that really are not meaningful
for (c in all_columns) {
var column=all_columns[c];
- this.slick_columns.push ( {id:column, name:column, field:column });
+ this.slick_columns.push ( {id:column, name:column, field:column,
+ cssClass: "querytable-column-"+column,
+ width:100, minWidth:40, });
}
// xxx should be extensible from caller with this.options.slickgrid_options
enableColumnReorder: true,
};
- this.slick_data=[];
+ this.slick_data = [];
+ this.slick_dataview = new Slick.Data.DataView();
+ var self=this;
+ this.slick_dataview.onRowCountChanged.subscribe ( function (e,args) {
+ self.slick_grid.updateRowCount();
+ self.slick_grid.autosizeColumns();
+ self.slick_grid.render();
+ });
var selector="#grid-"+this.options.domid;
- if (contents_debug) {
+ if (debug_deep) {
messages.debug("slick grid selector is " + selector);
for (c in this.slick_columns) {
var col=this.slick_columns[c];
cssClass: "slick-cell-checkboxsel"
});
this.slick_columns.push(checkbox_selector.getColumnDefinition());
- this.slick_grid = new Slick.Grid(selector, this.slick_data, this.slick_columns, this.slick_options);
+ this.slick_grid = new Slick.Grid(selector, this.slick_dataview, this.slick_columns, this.slick_options);
this.slick_grid.setSelectionModel (new Slick.RowSelectionModel ({selectActiveRow: false}));
this.slick_grid.registerPlugin (checkbox_selector);
+ // autotooltips: for showing the full column name when ellipsed
+ var auto_tooltips = new Slick.AutoTooltips ({ enableForHeaderCells: true });
+ this.slick_grid.registerPlugin (auto_tooltips);
this.columnpicker = new Slick.Controls.ColumnPicker (this.slick_columns, this.slick_grid, this.slick_options)
}, // getColIndex
checkbox_html : function (key, value) {
-// if (debug) messages.debug("checkbox_html, value="+value);
+ if (debug_deep) messages.debug("checkbox_html, value="+value);
var result="";
// Prefix id with plugin_uuid
result += "<input";
},
new_record: function(record) {
+ // xxx having a field named 'id' is a requirement from dataview
+ record['id']=record[this.key];
this.slick_data.push(record);
},
},
set_checkbox: function(record, checked) {
- console.log("set_checkbox not implemented");
+ console.log("set_checkbox not yet implemented with slickgrid");
return;
/* Default: checked = true */
if (checked === undefined) checked = true;
checkbox_id = escape_id(checkbox_id);
// using dataTables's $ to search also in nodes that are not currently displayed
var element = this.table.$(checkbox_id);
- if (debug)
+ if (debug_deep)
messages.debug("set_checkbox checked=" + checked
+ " id=" + checkbox_id + " matches=" + element.length);
element.attr('checked', checked);
on_all_query_done: function() {
if (debug) messages.debug("1-shot initializing dataTables content with " + this.slick_data.length + " lines");
var start=new Date();
- this.slick_grid.setData (this.slick_data, true);
- this.slick_grid.render();
+ this.slick_dataview.setItems (this.slick_data);
var duration=new Date()-start;
- if (debug) messages.debug("setData+render took " + duration + " ms");
- if (contents_debug) {
+ if (debug) messages.debug("setItems " + duration + " ms");
+ if (debug_deep) {
// show full contents of first row app
for (k in this.slick_data[0]) messages.debug("slick_data[0]["+k+"]="+this.slick_data[0][k]);
}