Skip to content

ExportAllData ignores groups/tuples for grouped data #330

@Matthias1373

Description

@Matthias1373

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions