var debug=false;
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
this.slick_data=[];
var selector="#grid-"+this.options.domid;
- if (debug) {
+ if (debug_deep) {
messages.debug("slick grid selector is " + selector);
for (c in this.slick_columns) {
var col=this.slick_columns[c];
messages.debug("slick_column["+c+"]:"+msg);
}
}
+ // add a checkbox column
+ var checkbox_selector = new Slick.CheckboxSelectColumn({
+ 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.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)
}, // initialize_table
}, // 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";
},
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);
- if (debug)
- for (k in this.slick_data[0]) messages.debug("slick_data[0]["+k+"]="+this.slick_data[0][k]);
+ this.slick_grid.autosizeColumns();
this.slick_grid.render();
+ var duration=new Date()-start;
+ if (debug) messages.debug("setData+render took " + 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]);
+ }
var self = this;
// if we've already received the slice query, we have not been able to set