transformers.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. ///<reference path="../../headers/common.d.ts" />
  2. import moment = require('moment');
  3. import _ = require('lodash');
  4. var transformers = {};
  5. transformers['timeseries_to_rows'] = {
  6. description: 'Time series to rows',
  7. transform: function(data, panel, model) {
  8. model.columns = [
  9. {text: 'Time', type: 'date'},
  10. {text: 'Series'},
  11. {text: 'Value'},
  12. ];
  13. for (var i = 0; i < data.length; i++) {
  14. var series = data[i];
  15. for (var y = 0; y < series.datapoints.length; y++) {
  16. var dp = series.datapoints[y];
  17. model.rows.push([dp[1], series.target, dp[0]]);
  18. }
  19. }
  20. },
  21. };
  22. transformers['timeseries_to_columns'] = {
  23. description: 'Time series to columns',
  24. transform: function(data, panel, model) {
  25. model.columns.push({text: 'Time', type: 'date'});
  26. // group by time
  27. var points = {};
  28. for (var i = 0; i < data.length; i++) {
  29. var series = data[i];
  30. model.columns.push({text: series.target});
  31. for (var y = 0; y < series.datapoints.length; y++) {
  32. var dp = series.datapoints[y];
  33. var timeKey = dp[1].toString();
  34. if (!points[timeKey]) {
  35. points[timeKey] = {time: dp[1]};
  36. points[timeKey][i] = dp[0];
  37. }
  38. else {
  39. points[timeKey][i] = dp[0];
  40. }
  41. }
  42. }
  43. for (var time in points) {
  44. var point = points[time];
  45. var values = [point.time];
  46. for (var i = 0; i < data.length; i++) {
  47. var value = point[i];
  48. values.push(value);
  49. }
  50. model.rows.push(values);
  51. }
  52. }
  53. };
  54. transformers['annotations'] = {
  55. description: 'Annotations',
  56. };
  57. transformers['json'] = {
  58. description: 'JSON Data',
  59. transform: function(data, panel, model) {
  60. var i, y, z;
  61. for (i = 0; i < panel.fields.length; i++) {
  62. model.columns.push({text: panel.fields[i].name});
  63. }
  64. if (model.columns.length === 0) {
  65. model.columns.push({text: 'JSON'});
  66. }
  67. for (i = 0; i < data.length; i++) {
  68. var series = data[i];
  69. for (y = 0; y < series.datapoints.length; y++) {
  70. var dp = series.datapoints[y];
  71. var values = [];
  72. for (z = 0; z < panel.fields.length; z++) {
  73. values.push(dp[panel.fields[z].name]);
  74. }
  75. if (values.length === 0) {
  76. values.push(JSON.stringify(dp));
  77. }
  78. model.rows.push(values);
  79. }
  80. }
  81. }
  82. };
  83. export {transformers}