webui-aria2/js/libs/dojox/grid/enhanced/plugins/exporter/CSVWriter.js.uncompressed.js
2012-05-01 19:52:07 +08:00

89 lines
2.6 KiB
JavaScript

//>>built
define("dojox/grid/enhanced/plugins/exporter/CSVWriter", [
"dojo/_base/declare",
"dojo/_base/array",
"./_ExportWriter",
"../Exporter"
], function(declare, array, _ExportWriter, Exporter){
Exporter.registerWriter("csv", "dojox.grid.enhanced.plugins.exporter.CSVWriter");
return declare("dojox.grid.enhanced.plugins.exporter.CSVWriter", _ExportWriter, {
// summary:
// Export grid to CSV format.
_separator: ',',
_newline: "\r\n",
constructor: function(/* object? */writerArgs){
// summary:
// CSV default separator is ','.
// But we can also use our own.
// writerArgs: object?
// {separator:'...'}
if(writerArgs){
this._separator = writerArgs.separator ? writerArgs.separator : this._separator;
this._newline = writerArgs.newline ? writerArgs.newline : this._newline;
}
this._headers = [];
this._dataRows = [];
},
_formatCSVCell: function(/* string */cellValue){
// summary:
// Format cell value to follow CSV standard.
// See: http://en.wikipedia.org/wiki/Comma-separated_values
// tags:
// private
// cellValue: string
// The value in a cell.
// returns:
// The formatted content of a cell
if(cellValue === null || cellValue === undefined){
return '';
}
var result = String(cellValue).replace(/"/g, '""');
if(result.indexOf(this._separator) >= 0 || result.search(/[" \t\r\n]/) >= 0){
result = '"' + result + '"';
}
return result; //String
},
beforeContentRow: function(/* object */arg_obj){
// summary:
// Overrided from _ExportWriter
var row = [],
func = this._formatCSVCell;
array.forEach(arg_obj.grid.layout.cells, function(cell){
//We are not interested in indirect selectors and row indexes.
if(!cell.hidden && array.indexOf(arg_obj.spCols,cell.index) < 0){
//We only need data here, not html
row.push(func(this._getExportDataForCell(arg_obj.rowIndex, arg_obj.row, cell, arg_obj.grid)));
}
}, this);
this._dataRows.push(row);
//We do not need to go into the row.
return false; //Boolean
},
handleCell: function(/* object */arg_obj){
// summary:
// Overrided from _ExportWriter
var cell = arg_obj.cell;
if(arg_obj.isHeader && !cell.hidden && array.indexOf(arg_obj.spCols,cell.index) < 0){
this._headers.push(cell.name || cell.field);
}
},
toString: function(){
// summary:
// Overrided from _ExportWriter
var result = this._headers.join(this._separator);
for(var i = this._dataRows.length - 1; i >= 0; --i){
this._dataRows[i] = this._dataRows[i].join(this._separator);
}
return result + this._newline + this._dataRows.join(this._newline); //String
}
});
});