transformers.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. transform: function(data, panel, model) {
  57. model.columns.push({text: 'Time', type: 'date'});
  58. model.columns.push({text: 'Title'});
  59. model.columns.push({text: 'Text'});
  60. model.columns.push({text: 'Tags'});
  61. if (!data || data.length === 0) {
  62. return;
  63. }
  64. for (var i = 0; i < data.length; i++) {
  65. var evt = data[i];
  66. model.rows.push([evt.min, evt.title, evt.text, evt.tags]);
  67. }
  68. }
  69. };
  70. transformers['json'] = {
  71. description: 'JSON Data',
  72. transform: function(data, panel, model) {
  73. var i, y, z;
  74. for (i = 0; i < panel.columns.length; i++) {
  75. model.columns.push({text: panel.columns[i].name});
  76. }
  77. if (model.columns.length === 0) {
  78. model.columns.push({text: 'JSON'});
  79. }
  80. for (i = 0; i < data.length; i++) {
  81. var series = data[i];
  82. for (y = 0; y < series.datapoints.length; y++) {
  83. var dp = series.datapoints[y];
  84. var values = [];
  85. for (z = 0; z < panel.columns.length; z++) {
  86. values.push(dp[panel.columns[z].name]);
  87. }
  88. if (values.length === 0) {
  89. values.push(JSON.stringify(dp));
  90. }
  91. model.rows.push(values);
  92. }
  93. }
  94. }
  95. };
  96. export {transformers}