chart.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //= require amcharts/ext/object_keys
  2. AmCharts.RB.Chart = AmCharts.RB.Util.Class.create({
  3. initialize: function(chart)
  4. {
  5. this.chart = chart;
  6. },
  7. load_data: function(data)
  8. {
  9. this.chart.dataProvider = data;
  10. if (this.pie()) {
  11. if (AmCharts.RB.Util.is_empty(this.chart.titleField)) this.chart.titleField = this.title_field();
  12. if (AmCharts.RB.Util.is_empty(this.chart.valueField)) this.chart.valueField = this.value_field();
  13. }
  14. else
  15. {
  16. if (AmCharts.RB.Util.is_empty(this.chart.categoryField)) this.chart.categoryField = this.category_field();
  17. }
  18. this.chart.validateData();
  19. this.chart.animateAgain();
  20. },
  21. category_field: function()
  22. {
  23. if (this.chart.dataProvider.length == 0) return '';
  24. return Object.keys(this.chart.dataProvider[0])[0];
  25. },
  26. value_field: function()
  27. {
  28. if (this.chart.dataProvider.length == 0) return '';
  29. return Object.keys(this.chart.dataProvider[0])[1];
  30. },
  31. title_field: function()
  32. {
  33. if (this.chart.dataProvider.length == 0) return '';
  34. return Object.keys(this.chart.dataProvider[0])[0];
  35. },
  36. failed: function(message)
  37. {
  38. var blanket = AmCharts.RB.Helpers.get_blanket(this.chart.container.div),
  39. blanket_inner = blanket.childNodes[0].childNodes[0].childNodes[0];
  40. blanket.style.display = '';
  41. var error_div = document.createElement("DIV");
  42. error_div.className = 'chart-loading-error';
  43. error_div.appendChild(document.createTextNode(message));
  44. blanket_inner.innerHTML = "";
  45. blanket_inner.appendChild(error_div);
  46. },
  47. pie: function()
  48. {
  49. return this.chart.type === "pie";
  50. },
  51. serial: function()
  52. {
  53. return this.chart.type === "serial";
  54. }
  55. });