file_export.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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(
  6. seriesList,
  7. dateTimeFormat = DEFAULT_DATETIME_FORMAT,
  8. excel = false
  9. ) {
  10. var text = (excel ? 'sep=;\n' : '') + 'Series;Time;Value\n';
  11. _.each(seriesList, function(series) {
  12. _.each(series.datapoints, function(dp) {
  13. text +=
  14. series.alias +
  15. ';' +
  16. moment(dp[1]).format(dateTimeFormat) +
  17. ';' +
  18. dp[0] +
  19. '\n';
  20. });
  21. });
  22. saveSaveBlob(text, 'grafana_data_export.csv');
  23. }
  24. export function exportSeriesListToCsvColumns(
  25. seriesList,
  26. dateTimeFormat = DEFAULT_DATETIME_FORMAT,
  27. excel = false
  28. ) {
  29. var text = (excel ? 'sep=;\n' : '') + 'Time;';
  30. // add header
  31. _.each(seriesList, function(series) {
  32. text += series.alias + ';';
  33. });
  34. text = text.substring(0, text.length - 1);
  35. text += '\n';
  36. // process data
  37. var dataArr = [[]];
  38. var sIndex = 1;
  39. _.each(seriesList, function(series) {
  40. var cIndex = 0;
  41. dataArr.push([]);
  42. _.each(series.datapoints, function(dp) {
  43. dataArr[0][cIndex] = moment(dp[1]).format(dateTimeFormat);
  44. dataArr[sIndex][cIndex] = dp[0];
  45. cIndex++;
  46. });
  47. sIndex++;
  48. });
  49. // make text
  50. for (var i = 0; i < dataArr[0].length; i++) {
  51. text += dataArr[0][i] + ';';
  52. for (var j = 1; j < dataArr.length; j++) {
  53. text += dataArr[j][i] + ';';
  54. }
  55. text = text.substring(0, text.length - 1);
  56. text += '\n';
  57. }
  58. saveSaveBlob(text, 'grafana_data_export.csv');
  59. }
  60. export function exportTableDataToCsv(table, excel = false) {
  61. var text = excel ? 'sep=;\n' : '';
  62. // add header
  63. _.each(table.columns, function(column) {
  64. text += (column.title || column.text) + ';';
  65. });
  66. text += '\n';
  67. // process data
  68. _.each(table.rows, function(row) {
  69. _.each(row, function(value) {
  70. text += value + ';';
  71. });
  72. text += '\n';
  73. });
  74. saveSaveBlob(text, 'grafana_data_export.csv');
  75. }
  76. export function saveSaveBlob(payload, fname) {
  77. var blob = new Blob([payload], { type: 'text/csv;charset=utf-8' });
  78. saveAs(blob, fname);
  79. }