Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions api/src/org/labkey/api/data/TSVJSONWriter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package org.labkey.api.data;

import org.json.JSONArray;
import org.labkey.api.util.FileUtil;

import java.util.List;

public class TSVJSONWriter extends TSVWriter
{
private final JSONArray _rows;
private final String _filename;

/**
* Writes a JSONArray of JSONArrays to TSV.
* @param filename The filename without a file extension
* @param rows A JSONArray object that is expected to be an array of arrays. e.g. [[1,2,3], [4,5,6]].
*/
public TSVJSONWriter(String filename, JSONArray rows)
{
_filename = filename;
_rows = rows;
_headerRowVisible = false;
}

private List<String> jsonArrayToStringList(JSONArray jsonArray)
{
return jsonArray.toList()
.stream()
.map(obj -> (obj == null) ? "" : String.valueOf(obj))
.toList();
}

@Override
protected int writeBody()
{
for (int i = 0; i < _rows.length(); i++)
{
List<String> values = jsonArrayToStringList(_rows.getJSONArray(i));
writeLine(values);
}

return _rows.length();
}

@Override
protected String getFilename()
{
return FileUtil.makeLegalName(_filename + "." + getFilenameExtension());
}
}
8 changes: 4 additions & 4 deletions assay/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion assay/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"clean": "rimraf resources/web/assay/gen && rimraf resources/views/gen && rimraf resources/web/gen"
},
"dependencies": {
"@labkey/components": "6.68.1"
"@labkey/components": "6.68.2"
},
"devDependencies": {
"@labkey/build": "8.6.0",
Expand Down
8 changes: 4 additions & 4 deletions core/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
}
},
"dependencies": {
"@labkey/components": "6.68.1",
"@labkey/components": "6.68.2",
"@labkey/themes": "1.4.2"
},
"devDependencies": {
Expand Down
8 changes: 4 additions & 4 deletions experiment/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion experiment/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"test-integration": "cross-env NODE_ENV=test jest --ci --runInBand -c test/js/jest.config.integration.js"
},
"dependencies": {
"@labkey/components": "6.68.1"
"@labkey/components": "6.68.2"
},
"devDependencies": {
"@labkey/build": "8.6.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package org.labkey.experiment.controllers.exp;

import au.com.bytecode.opencsv.CSVWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
Expand All @@ -25,7 +24,6 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Workbook;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -90,6 +88,7 @@
import org.labkey.api.data.SimpleFilter;
import org.labkey.api.data.Sort;
import org.labkey.api.data.SqlSelector;
import org.labkey.api.data.TSVJSONWriter;
import org.labkey.api.data.TSVWriter;
import org.labkey.api.data.TableInfo;
import org.labkey.api.data.TableSelector;
Expand Down Expand Up @@ -226,6 +225,7 @@
import org.labkey.api.util.SafeToRender;
import org.labkey.api.util.SessionHelper;
import org.labkey.api.util.StringExpression;
import org.labkey.api.util.StringUtilsLabKey;
import org.labkey.api.util.URLHelper;
import org.labkey.api.util.UniqueID;
import org.labkey.api.util.CsrfInput;
Expand Down Expand Up @@ -2841,29 +2841,14 @@ public void export(ConvertArraysToExcelForm form, HttpServletResponse response,
String filename = filenamePrefix + "." + delimType.extension;
String newlineChar = !rootObject.isNull("newlineChar") ? rootObject.getString("newlineChar") : "\n";

PageFlowUtil.prepareResponseForFile(response, Collections.emptyMap(), filename, true);
response.setContentType(delimType.contentType);
response.setCharacterEncoding(StringUtilsLabKey.DEFAULT_CHARSET.name());

//NOTE: we could also have used TSVWriter; however, this is in use elsewhere and we dont need a custom subclass
try (CSVWriter writer = new CSVWriter(response.getWriter(), delimType.delim, quoteType.quoteChar, newlineChar))
try(var tsvWriter = new TSVJSONWriter(filenamePrefix, rowsArray))
{
for (int i = 0; i < rowsArray.length(); i++)
{
List<Object> objectList = rowsArray.getJSONArray(i).toList();
Iterator<Object> it = objectList.iterator();
List<String> list = new ArrayList<>();

while (it.hasNext())
{
Object o = it.next();
if (o != null)
list.add(o.toString());
else
list.add("");
}

writer.writeNext(list.toArray(new String[0]));
}
tsvWriter.setRowSeparator(newlineChar);
tsvWriter.setDelimiterCharacter(delimType);
tsvWriter.setQuoteCharacter(quoteType);
tsvWriter.write(response);
}

JSONObject qInfo = rootObject.optJSONObject("queryinfo");
Expand Down
8 changes: 4 additions & 4 deletions pipeline/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pipeline/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"build-prod": "npm run clean && cross-env NODE_ENV=production PROD_SOURCE_MAP=source-map webpack --config node_modules/@labkey/build/webpack/prod.config.js --color --progress --profile"
},
"dependencies": {
"@labkey/components": "6.68.1"
"@labkey/components": "6.68.2"
},
"devDependencies": {
"@labkey/build": "8.6.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1949,14 +1949,19 @@ LABKEY.vis.GenericChartHelper = new function(){
return;

var plotConfigArr = generatePlotConfigs(renderTo, chartConfig, labels, aes, scales, geom, data, trendlineData);
let plots = [];
$.each(plotConfigArr, function(idx, plotConfig) {
if (chartType === 'pie_chart') {
new LABKEY.vis.PieChart(plotConfig);
plots.push(new LABKEY.vis.PieChart(plotConfig));
}
else {
new LABKEY.vis.Plot(plotConfig).render();
const plot = new LABKEY.vis.Plot(plotConfig);
plot.render();
plots.push(plot);
}
}, this);

return plots;
}

var _renderMessages = function(divId, messages) {
Expand Down