Commit 8d9b45f4 authored by jgould's avatar jgould

collapse columns fix

parent 319cf5c3
This diff is collapsed.
morpheus.TxtReader = function(options) { morpheus.TxtReader = function (options) {
this.options = $.extend({}, { this.options = $.extend({}, {
dataRowStart : 1, dataRowStart: 1,
dataColumnStart : 1 dataColumnStart: 1
}, options); }, options);
}; };
morpheus.TxtReader.prototype = { morpheus.TxtReader.prototype = {
read : function(fileOrUrl, callback) { read: function (fileOrUrl, callback) {
var _this = this; var _this = this;
var name = morpheus.Util.getBaseFileName(morpheus.Util var name = morpheus.Util.getBaseFileName(morpheus.Util
.getFileName(fileOrUrl)); .getFileName(fileOrUrl));
morpheus.BufferedReader.getArrayBuffer(fileOrUrl, function(err, morpheus.BufferedReader.getArrayBuffer(fileOrUrl, function (err,
arrayBuffer) { arrayBuffer) {
if (err) { if (err) {
callback(err); callback(err);
} else { } else {
try { try {
callback(null, _this._read(name, callback(null, _this._read(name,
new morpheus.BufferedReader(new Uint8Array( new morpheus.BufferedReader(new Uint8Array(
arrayBuffer)))); arrayBuffer))));
} catch (x) { } catch (x) {
callback(x); callback(x);
} }
...@@ -25,7 +25,7 @@ morpheus.TxtReader.prototype = { ...@@ -25,7 +25,7 @@ morpheus.TxtReader.prototype = {
}); });
}, },
_read : function(datasetName, reader) { _read: function (datasetName, reader) {
var tab = /\t/; var tab = /\t/;
var header = morpheus.Util.trim(reader.readLine()).split(tab); var header = morpheus.Util.trim(reader.readLine()).split(tab);
if (this.options.dataRowStart > 1) { if (this.options.dataRowStart > 1) {
...@@ -50,7 +50,7 @@ morpheus.TxtReader.prototype = { ...@@ -50,7 +50,7 @@ morpheus.TxtReader.prototype = {
var tokens = s.split(tab); var tokens = s.split(tab);
for (var j = 0; j < dataColumnStart; j++) { for (var j = 0; j < dataColumnStart; j++) {
// row metadata // row metadata
arrayOfRowArrays[j].push(String(tokens[j])); arrayOfRowArrays[j].push(morpheus.Util.copyString(tokens[j]));
} }
for (var j = dataColumnStart; j <= ncols; j++) { for (var j = dataColumnStart; j <= ncols; j++) {
var token = tokens[j]; var token = tokens[j];
...@@ -59,23 +59,16 @@ morpheus.TxtReader.prototype = { ...@@ -59,23 +59,16 @@ morpheus.TxtReader.prototype = {
} }
} }
var dataset = new morpheus.Dataset({ var dataset = new morpheus.Dataset({
name : datasetName, name: datasetName,
rows : matrix.length, rows: matrix.length,
columns : ncols, columns: ncols,
array : matrix, array: matrix,
dataType : 'Float32' dataType: 'Float32'
}); });
// if (this.options.trim) {
// arrayOfRowArrays.forEach(function(array) {
// for (var i = 0, length = array.length; i < length; i++) {
// array[i] = $.trim(array[i]);
// }
// });
// }
// morpheus.DatasetUtil.fill(dataset, NaN);
var columnIds = dataset.getColumnMetadata().add('id'); var columnIds = dataset.getColumnMetadata().add('id');
for (var i = 0, j = dataColumnStart; i < ncols; i++, j++) { for (var i = 0, j = dataColumnStart; i < ncols; i++, j++) {
columnIds.setValue(i, String(header[j])); columnIds.setValue(i, morpheus.Util.copyString(header[j]));
} }
var rowIdVector = dataset.getRowMetadata().add('id'); var rowIdVector = dataset.getRowMetadata().add('id');
rowIdVector.array = arrayOfRowArrays[0]; rowIdVector.array = arrayOfRowArrays[0];
......
...@@ -57,13 +57,13 @@ morpheus.CollapseDatasetTool.prototype = { ...@@ -57,13 +57,13 @@ morpheus.CollapseDatasetTool.prototype = {
var dataset = project.getFullDataset(); var dataset = project.getFullDataset();
var rows = options.input.collapse == 'Rows'; var rows = options.input.collapse == 'Rows';
if (!rows) { if (!rows) {
dataset = morpheus.DatasetUtil.transposedView(dataset); dataset = new morpheus.TransposedDatasetView(dataset);
} }
var allFields = morpheus.MetadataUtil.getMetadataNames(dataset var allFields = morpheus.MetadataUtil.getMetadataNames(dataset
.getRowMetadata()); .getRowMetadata());
dataset = morpheus.CollapseDataset(dataset, collapseToFields, f, true); dataset = morpheus.CollapseDataset(dataset, collapseToFields, f, true);
if (!rows) { if (!rows) {
dataset = dataset.getDataset(); dataset = new morpheus.TransposedDatasetView(dataset);
} }
var set = new morpheus.Map(); var set = new morpheus.Map();
_.each(allFields, function (field) { _.each(allFields, function (field) {
......
...@@ -168,9 +168,19 @@ morpheus.HeatMapElementCanvas.prototype = { ...@@ -168,9 +168,19 @@ morpheus.HeatMapElementCanvas.prototype = {
var right = morpheus.Positions.getRight(clip, columnPositions); var right = morpheus.Positions.getRight(clip, columnPositions);
var top = morpheus.Positions.getTop(clip, rowPositions); var top = morpheus.Positions.getTop(clip, rowPositions);
var bottom = morpheus.Positions.getBottom(clip, rowPositions); var bottom = morpheus.Positions.getBottom(clip, rowPositions);
context.translate(-clip.x, -clip.y); if (this.dataset.getRowCount() === 0 || this.dataset.getColumnCount() === 0) {
this._draw({left: left, right: right, top: top, bottom: bottom, context: context}); return context.fillText("No data", 0, 0);
context.translate(clip.x, clip.y); } else {
context.translate(-clip.x, -clip.y);
this._draw({
left: left,
right: right,
top: top,
bottom: bottom,
context: context
});
context.translate(clip.x, clip.y);
}
}, },
_draw: function (options) { _draw: function (options) {
...@@ -180,6 +190,7 @@ morpheus.HeatMapElementCanvas.prototype = { ...@@ -180,6 +190,7 @@ morpheus.HeatMapElementCanvas.prototype = {
var bottom = options.bottom; var bottom = options.bottom;
var context = options.context; var context = options.context;
var dataset = this.dataset; var dataset = this.dataset;
var columnPositions = this.columnPositions; var columnPositions = this.columnPositions;
var rowPositions = this.rowPositions; var rowPositions = this.rowPositions;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment