Currently, when exporting all data, wpd ignores the groups and tuples column and omits it everywhere.
May I suggest to rewrite the corresponding generateCSV function?
function generateCSV() {
wpd.popup.close('export-all-data-popup');
// generate file and trigger download
// loop over all datasets
let plotData = wpd.appData.getPlotData();
let dsColl = plotData.getDatasets();
if (dsColl == null || dsColl.length === 0) {
// axes is not aligned, show an error message?
wpd.messagePopup.show(wpd.gettext('no-datasets-to-export-error'),
wpd.gettext('no-datasets-to-export'));
return;
}
let maxDatapts = 0;
let header = [];
let varheader = [];
let valData = [];
let numCols = 0;
for (let i = 0; i < dsColl.length; i++) {
let axes = plotData.getAxesForDataset(dsColl[i]);
if (axes == null)
continue;
let axLab = axes.getAxesLabels();
let axdims = axLab.length;
numCols += axdims;
let pts = dsColl[i].getCount();
if (pts > maxDatapts) {
maxDatapts = pts;
}
header.push(dsColl[i].name);
+ Pseudocode:
+ if ( dsColl[i] has pointGroups):
+ colNb = axdims + 2
- for (let j = 0; j < axdims; j++) {
+ for (let j = 0; j < colNb; j++) {
if (j !== 0) {
header.push('');
}
+ if j<axdims:
varheader.push(axLab[j]);
+ else if j==axdims:
+ varheader.push("Tuple");
+ else if j==axdims+1:
+ varheader.push("Group");
}
for (let i = 0; i < maxDatapts; i++) {
var valRow = [];
for (let j = 0; j < numCols; j++) {
valRow.push('');
}
valData.push(valRow);
}
let colIdx = 0;
for (let i = 0; i < dsColl.length; i++) {
let axes = plotData.getAxesForDataset(dsColl[i]);
if (axes == null)
continue;
let axLab = axes.getAxesLabels();
let axdims = axLab.length;
let pts = dsColl[i].getCount();
for (let j = 0; j < pts; j++) {
let px = dsColl[i].getPixel(j);
let val = getValueAtPixel(j, axes, px);
for (let di = 0; di < axdims; di++) {
valData[j][colIdx + di] = val[di];
}
+ if dsColl[i] has pointGroups:
+ let tuple = dsColl[i].getTuple();
+ let group = dsColl[i].getGroup();
+ valData[j][colIdx + axdims] = tuple;
+ valData[j][colIdx + axdims + 1] = group;
}
colIdx += axdims;
}
let csvText = header.join(',') + '\n' + varheader.join(',') + '\n';
for (let i = 0; i < maxDatapts; i++) {
csvText += valData[i].join(',') + '\n';
}
// download
wpd.download.csv(csvText, "wpd_datasets.csv");
}
While I'm at it, I'd like to thank everybody involved in development very much for this tool, I've been using it for ages now :D
Currently, when exporting all data, wpd ignores the groups and tuples column and omits it everywhere.
May I suggest to rewrite the corresponding generateCSV function?
function generateCSV() { wpd.popup.close('export-all-data-popup'); // generate file and trigger download // loop over all datasets let plotData = wpd.appData.getPlotData(); let dsColl = plotData.getDatasets(); if (dsColl == null || dsColl.length === 0) { // axes is not aligned, show an error message? wpd.messagePopup.show(wpd.gettext('no-datasets-to-export-error'), wpd.gettext('no-datasets-to-export')); return; } let maxDatapts = 0; let header = []; let varheader = []; let valData = []; let numCols = 0; for (let i = 0; i < dsColl.length; i++) { let axes = plotData.getAxesForDataset(dsColl[i]); if (axes == null) continue; let axLab = axes.getAxesLabels(); let axdims = axLab.length; numCols += axdims; let pts = dsColl[i].getCount(); if (pts > maxDatapts) { maxDatapts = pts; } header.push(dsColl[i].name); + Pseudocode: + if ( dsColl[i] has pointGroups): + colNb = axdims + 2 - for (let j = 0; j < axdims; j++) { + for (let j = 0; j < colNb; j++) { if (j !== 0) { header.push(''); } + if j<axdims: varheader.push(axLab[j]); + else if j==axdims: + varheader.push("Tuple"); + else if j==axdims+1: + varheader.push("Group"); } for (let i = 0; i < maxDatapts; i++) { var valRow = []; for (let j = 0; j < numCols; j++) { valRow.push(''); } valData.push(valRow); } let colIdx = 0; for (let i = 0; i < dsColl.length; i++) { let axes = plotData.getAxesForDataset(dsColl[i]); if (axes == null) continue; let axLab = axes.getAxesLabels(); let axdims = axLab.length; let pts = dsColl[i].getCount(); for (let j = 0; j < pts; j++) { let px = dsColl[i].getPixel(j); let val = getValueAtPixel(j, axes, px); for (let di = 0; di < axdims; di++) { valData[j][colIdx + di] = val[di]; } + if dsColl[i] has pointGroups: + let tuple = dsColl[i].getTuple(); + let group = dsColl[i].getGroup(); + valData[j][colIdx + axdims] = tuple; + valData[j][colIdx + axdims + 1] = group; } colIdx += axdims; } let csvText = header.join(',') + '\n' + varheader.join(',') + '\n'; for (let i = 0; i < maxDatapts; i++) { csvText += valData[i].join(',') + '\n'; } // download wpd.download.csv(csvText, "wpd_datasets.csv"); }While I'm at it, I'd like to thank everybody involved in development very much for this tool, I've been using it for ages now :D