file_export.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import _ from 'lodash';
  2. import moment from 'moment';
  3. import { saveAs } from 'file-saver';
  4. const DEFAULT_DATETIME_FORMAT = 'YYYY-MM-DDTHH:mm:ssZ';
  5. export function exportSeriesListToCsv(seriesList, dateTimeFormat = DEFAULT_DATETIME_FORMAT, excel = false) {
  6. var text = (excel ? 'sep=;\n' : '') + 'Series;Time;Value\n';
  7. _.each(seriesList, function(series) {
  8. _.each(series.datapoints, function(dp) {
  9. text += series.alias + ';' + moment(dp[1]).format(dateTimeFormat) + ';' + dp[0] + '\n';
  10. });
  11. });
  12. saveSaveBlob(text, 'grafana_data_export.csv');
  13. }
  14. export function exportSeriesListToCsvColumns(seriesList, dateTimeFormat = DEFAULT_DATETIME_FORMAT, excel = false) {
  15. var text = (excel ? 'sep=;\n' : '') + 'Time;';
  16. // add header
  17. _.each(seriesList, function(series) {
  18. text += series.alias + ';';
  19. });
  20. text = text.substring(0, text.length - 1);
  21. text += '\n';
  22. // process data
  23. var dataArr = [[]];
  24. var sIndex = 1;
  25. _.each(seriesList, function(series) {
  26. var cIndex = 0;
  27. dataArr.push([]);
  28. _.each(series.datapoints, function(dp) {
  29. dataArr[0][cIndex] = moment(dp[1]).format(dateTimeFormat);
  30. dataArr[sIndex][cIndex] = dp[0];
  31. cIndex++;
  32. });
  33. sIndex++;
  34. });
  35. // make text
  36. for (var i = 0; i < dataArr[0].length; i++) {
  37. text += dataArr[0][i] + ';';
  38. for (var j = 1; j < dataArr.length; j++) {
  39. text += dataArr[j][i] + ';';
  40. }
  41. text = text.substring(0, text.length - 1);
  42. text += '\n';
  43. }
  44. saveSaveBlob(text, 'grafana_data_export.csv');
  45. }
  46. export function exportTableDataToCsv(table, excel = false) {
  47. var text = excel ? 'sep=;\n' : '';
  48. // add header
  49. _.each(table.columns, function(column) {
  50. text += (column.title || column.text) + ';';
  51. });
  52. text += '\n';
  53. // process data
  54. _.each(table.rows, function(row) {
  55. _.each(row, function(value) {
  56. text += value + ';';
  57. });
  58. text += '\n';
  59. });
  60. saveSaveBlob(text, 'grafana_data_export.csv');
  61. }
  62. export function saveSaveBlob(payload, fname) {
  63. var blob = new Blob([payload], { type: 'text/csv;charset=utf-8' });
  64. saveAs(blob, fname);
  65. }