if (dataTable) {
this.loadRowsFromTable(dataTable,this.options.fixedHdrRows);
dataTable.parentNode.removeChild(dataTable); // delete the data once it has been loaded
- } else {
- this.clear();
}
},
clear: function() {
this.baseRows = [];
this.rows = [];
+ this.modified = [];
+ this.attr = null;
this.startPos = -1;
this.size = 0;
this.windowPos = 0;
if (bufRow>=this.size) return false;
if (!this.rows[bufRow][col]) this.rows[bufRow][col]={};
this.rows[bufRow][col]=newval;
- if (typeof newstyle=='string') this.rows[bufRow][col]._style=newstyle;
- this.rows[bufRow][col].modified=true;
+ if (this.options.acceptStyle && typeof newstyle=='string') {
+ if (!this.attr) this.attr=[];
+ if (!this.attr[bufRow]) this.attr[bufRow]=[];
+ this.attr[bufRow][col]=newstyle;
+ }
+ if (!this.modified[bufRow]) this.modified[bufRow]=[];
+ this.modified[bufRow][col]=true;
return true;
},
// set headings
for (i=0; i<2; i++) {
this.thead[i]=this.tabs[i].createTHead();
- //Rico.addClass(this.tabs[i],'ricoLG_top');
this.thead[i].className='ricoLG_top';
if (Rico.theme.gridheader) Rico.addClass(this.thead[i],Rico.theme.gridheader);
}
switch (fmt.filterUI.charAt(0)) {
case 't':
// text field
- field=Rico.createFormField(divs[1],'input',Rico.inputtypes.search ? 'search' : 'text',name,name);
+ field=Rico.createFormField(divs[1],'input',Rico.inputtypes.search ? 'search' : 'text',name,'RicoFilter');
var size=fmt.filterUI.match(/\d+/);
field.maxLength=fmt.Length || 50;\r
field.size=size ? parseInt(size,10) : 10;
// multi-select
case 's':
// drop-down select
- field=Rico.createFormField(divs[1],'select',null,name);\r
+ field=Rico.createFormField(divs[1],'select',null,name,'RicoFilter');\r
Rico.addSelectOption(field,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));\r
col.filterField=field;
var options={};\r
Rico.extend(options, this.buffer.ajaxOptions);
var colnum=typeof(fmt.filterCol)=='number' ? fmt.filterCol : c;
- options.parameters = {id: this.tableId, distinct:colnum};
- options.parameters[this.actionId]="query";
+ options.parameters = this.buffer.formQueryHashXML(0,-1);
+ options.parameters.distinct = colnum;
options.onComplete = this.filterValuesUpdateFunc(c);
new Rico.ajaxRequest(this.buffer.dataSource, options);
break;\r
+ case 'n':
+ field=Rico.createFormField(divs[1],'select',null,name,'RicoFilter');
+ Rico.addSelectOption(field,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));
+ col.filterField=field;
+ var choices=fmt.filterUI.length == 1 ? "-0+" : fmt.filterUI.substr(1);
+ if (choices.indexOf("-") >= 0) Rico.addSelectOption(field,"LT0","< 0");
+ if (choices.indexOf("0") >= 0) Rico.addSelectOption(field,"EQ0","= 0");
+ if (choices.indexOf("+") >= 0) Rico.addSelectOption(field,"GT0","> 0");
+ Rico.eventBind(col.filterField,'change',Rico.eventHandle(col,'nFilterChange'));
+ break;
case 'c':
// custom
if (typeof col._createFilters == 'function')
var rowsElement = response.getElementsByTagName('rows')[0];\r
var col=this.columns[parseInt(colnum,10)];
var rows = this.buffer.dom2jstable(rowsElement);\r
+ var found = !col.filterValues || !col.filterValues.length;
+ if (!found) for (var i=0; i<rows.length; i++) {
+ if (rows[i][0] == col.filterValues[0]) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ col.setUnfiltered(true);
+ if (this.options.filterHandler)
+ this.options.filterHandler();
+ }
var c,opt,v;
if (col.filterType==Rico.ColumnConst.USERFILTER && col.filterOp=='EQ') v=col.filterValues[0];
Rico.log('filterValuesUpdate: col='+colnum+' rows='+rows.length);
},
adjustPageSize: function() {
+ Rico.log('adjustPageSize start');
var remHt=this.remainingHt();
Rico.log('adjustPageSize remHt='+remHt+' lastRow='+this.lastRowPos);
if (remHt > this.rowHeight)
this.autoAppendRows(remHt);
else if (remHt < 0 || this.sizeTo=='data')
this.autoRemoveRows(-remHt);
+ Rico.log('adjustPageSize end');
},
setPageSize: function(newRowCount) {
+ Rico.log('setPageSize '+this.tableId+' newRowCount='+newRowCount);
newRowCount=Math.min(newRowCount,this.options.maxPageRows);
newRowCount=Math.max(newRowCount,this.options.minPageRows);
this.sizeTo='fixed';
},
resizeWindow: function() {
- Rico.log('resizeWindow '+this.tableId+' lastRow='+this.lastRowPos);
+ Rico.log('resizeWindow '+this.tableId+' lastRow='+this.lastRowPos+' resizeState='+this.resizeState);
if (this.resizeState=='finish') {
Rico.log('resizeWindow postponed');
this.resizeState='resize';
return;
}
if (this.sizeTo=='parent' && Rico.getStyle(this.outerDiv.parentNode,'display') == 'none') return;
+ Rico.log('resizeWindow: about to adjustPageSize')
var oldSize=this.pageSize;
this.adjustPageSize();
this.finishResize(oldSize);
},
finishResize: function(oldSize) {
+ Rico.log('finishResize '+this.tableId);
if (this.pageSize > oldSize && this.buffer.totalRows>0) {
this.isPartialBlank=true;
var adjStart=this.adjustRow(this.lastRowPos);
},
finishResize2: function() {
+ Rico.log('finishResize2 '+this.tableId+': resizeState='+this.resizeState);
this.sizeDivs();
this.updateHeightDiv();
if (this.resizeState=='resize') {
* @return array of matching column indexes
*/
findColumnsBySpec: function(colAttr, colValue) {
- var result=[]
+ var result=[];
for (var n=0; n<this.options.columnSpecs.length; n++) {
if (this.options.columnSpecs[n][colAttr] == colValue) result.push(n);
}
switch (this.filterOp) {
case 'EQ': return '= '+vals.join(', ');
case 'NE': return Rico.getPhraseById('filterNot',vals.join(', '));
+ case 'LT': return '< '+vals[0];
+ case 'GT': return '> '+vals[0];
case 'LE': return '<= '+vals[0];
case 'GE': return '>= '+vals[0];
case 'LIKE': return Rico.getPhraseById('filterLike',vals[0]);
return this.filterType == Rico.ColumnConst.USERFILTER;
},
-filterChange: function(e) {\r
+filterChange: function(e) {
var selbox=Rico.eventElement(e);
- if (selbox.value==this.liveGrid.options.FilterAllToken)\r
- this.setUnfiltered();\r
+ if (selbox.value==this.liveGrid.options.FilterAllToken)
+ this.setUnfiltered();
else
- this.setFilter('EQ',selbox.value,Rico.ColumnConst.USERFILTER,function() {selbox.selectedIndex=0;});\r
+ this.setFilter('EQ',selbox.value,Rico.ColumnConst.USERFILTER,function() {selbox.selectedIndex=0;});
+},
+
+nFilterChange: function(e) {
+ var selbox=Rico.eventElement(e);
+ if (selbox.value==this.liveGrid.options.FilterAllToken) {
+ this.setUnfiltered();
+ } else {
+ var op=selbox.value.substr(0,2);
+ var value=selbox.value.substr(2);
+ this.setFilter(op,value,Rico.ColumnConst.USERFILTER,function() {selbox.selectedIndex=0;});
+ }
},
filterClear: function(e) {\r