stats.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. window.addEvent('domready', function() {
  2. 'use strict';
  3. new Request.JSON({
  4. 'url': 'http://localhost:8892/v1/1/data/1?start=2014-04-19&end=2014-04-19',
  5. 'onSuccess': graph_stats,
  6. }).get();
  7. function graph_stats(data) {
  8. Object.each(data, function(fields, date) {
  9. if (fields == null)
  10. return;
  11. Object.each(fields, function(subfields, field) {
  12. if (field == 'disk')
  13. return;
  14. graph_stat(field, subfields);
  15. });
  16. });
  17. }
  18. var colors = {
  19. 'cpu': {
  20. 'idle': '#3aa',
  21. 'user': '#33a',
  22. 'system': '#aa3',
  23. },
  24. 'mem': {
  25. 'used': '#a33',
  26. 'buffers': '#3aa',
  27. 'cached': '#33a',
  28. },
  29. 'net': {
  30. 'bytes_recv': '#33a',
  31. 'bytes_sent': '#3a3',
  32. },
  33. };
  34. function graph_stat(field, data) {
  35. var series = [];
  36. Object.each(data, function(array, k) {
  37. array = array.map(function(val, i) {
  38. return {'x': i, 'y': val};
  39. })
  40. var serie = {
  41. 'name': field + '.' + k,
  42. 'data': array,
  43. 'color': colors[field][k] || '#111',
  44. };
  45. series.push(serie);
  46. });
  47. var graph_div = new Element('div');
  48. var legend_div = new Element('div');
  49. var graph = new Rickshaw.Graph({
  50. 'element': graph_div,
  51. 'width': 500,
  52. 'height': 200,
  53. 'renderer': 'area',
  54. 'stroke': true,
  55. 'series': series,
  56. });
  57. new Rickshaw.Graph.Legend({
  58. 'graph': graph,
  59. 'element': legend_div,
  60. });
  61. new Rickshaw.Graph.HoverDetail({
  62. 'graph': graph,
  63. });
  64. new Rickshaw.Graph.Axis.Time({
  65. 'graph': graph,
  66. 'timeUnit': new Rickshaw.Fixtures.Time().unit('minute'),
  67. });
  68. new Rickshaw.Graph.Axis.Y({
  69. 'graph': graph,
  70. 'tickFormat': Rickshaw.Fixtures.Number.formatKMBT,
  71. });
  72. graph.render();
  73. $('graphs').adopt(graph_div, legend_div, new Element('br'));
  74. }
  75. });