From 072e31091d58e9546fdfa82637b49206e113c104 Mon Sep 17 00:00:00 2001 From: deniz kusefoglu Date: Mon, 9 Oct 2017 15:09:27 -0700 Subject: [PATCH] Refrain from coercing data to a date if column name is not time --- ui/src/data_explorer/components/VisHeader.js | 6 +++- ui/src/shared/parsing/resultsToCSV.js | 30 +++++++++++++------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/ui/src/data_explorer/components/VisHeader.js b/ui/src/data_explorer/components/VisHeader.js index 0457460fe7..6e2c85cb01 100644 --- a/ui/src/data_explorer/components/VisHeader.js +++ b/ui/src/data_explorer/components/VisHeader.js @@ -9,7 +9,11 @@ import download from 'src/external/download.js' const getCSV = (query, errorThrown) => async () => { try { const {results} = await fetchTimeSeriesAsync({source: query.host, query}) - const {name, CSVString} = resultsToCSV(results) + const {flag, name, CSVString} = resultsToCSV(results) + if (flag === 'no_data') { + errorThrown('no data', 'There are no data to download.') + return + } download(CSVString, `${name}.csv`, 'text/plain') } catch (error) { errorThrown(error, 'Unable to download .csv file') diff --git a/ui/src/shared/parsing/resultsToCSV.js b/ui/src/shared/parsing/resultsToCSV.js index 47596b16ec..18db204c82 100644 --- a/ui/src/shared/parsing/resultsToCSV.js +++ b/ui/src/shared/parsing/resultsToCSV.js @@ -5,19 +5,29 @@ export const formatDate = timestamp => moment(timestamp).format('M/D/YYYY h:mm:ss A') const resultsToCSV = results => { - const {name, columns, values} = _.get(results, ['0', 'series', '0'], {}) - const [, ...cols] = columns + if (!_.get(results, ['0', 'series', '0'])) { + return {flag: 'no_data', name: '', CSVString: ''} + } - const CSVString = [['date', ...cols].join(',')] - .concat( - values.map(([timestamp, ...measurements]) => - // MS Excel format - [formatDate(timestamp), ...measurements].join(',') + const {name, columns, values} = _.get(results, ['0', 'series', '0']) + + if (columns[0] === 'time') { + const [, ...cols] = columns + const CSVString = [['date', ...cols].join(',')] + .concat( + values.map(([timestamp, ...measurements]) => + // MS Excel format + [formatDate(timestamp), ...measurements].join(',') + ) ) - ) - .join('\n') + .join('\n') + return {flag: 'ok', name, CSVString} + } - return {name, CSVString} + const CSVString = [columns.join(',')] + .concat(values.map(row => row.join(','))) + .join('\n') + return {flag: 'ok', name, CSVString} } export default resultsToCSV