BxDolChartGrowth.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /**
  2. * Copyright (c) UNA, Inc - https://una.io
  3. * MIT License - https://opensource.org/licenses/MIT
  4. *
  5. * @defgroup UnaCore UNA Core
  6. * @{
  7. */
  8. function BxDolChartGrowth (oOptions) {
  9. this._sObjName = undefined == oOptions.sObjName ? 'oBxDolChartGrowth' : oOptions.sObjName; // javascript object name, to run current object instance from onTimer
  10. this._sActionsUrl = oOptions.sRootUrl + 'chart.php'; // actions url address
  11. this._oRequestParams = oOptions.oRequestParams == undefined ? {} : oOptions.oRequestParams;
  12. this._sAnimationEffect = 'fade';
  13. this._iAnimationSpeed = 'slow';
  14. this._sKeyObjects = 'bx_chart_growth_objects';
  15. this._sKeyDateFrom = 'bx_chart_growth_date_from';
  16. this._sKeyDateTo = 'bx_chart_growth_date_to';
  17. this._sKeyGraph = 'bx_chart_growth_graph';
  18. this._sDateFormat = 'yy-mm-dd';
  19. this._oChart = null;
  20. this._oChartOptionsDefault = {};
  21. this._sChartColorBorder = undefined == oOptions.sChartColorBorder ? 'rgba(74, 144, 226, 1.0)' : oOptions.sChartColorBorder;
  22. this._sChartColorBackground = undefined == oOptions.sChartColorBackground ? 'rgba(74, 144, 226, 0.4)' : oOptions.sChartColorBackground;
  23. var $this = this;
  24. $(document).ready(function() {
  25. $this.loadData();
  26. });
  27. }
  28. BxDolChartGrowth.prototype.loadData = function()
  29. {
  30. var $this = this;
  31. var oGraph = $('#' + this._sKeyGraph);
  32. var oGraphWrp = oGraph.parents('div:first');
  33. var oGraphErr = oGraphWrp.find('.bx-chart-growth-graph-error').hide();
  34. $('#' + this._sKeyObjects).attr('disabled', true);
  35. bx_loading(oGraphWrp, true);
  36. $.get(
  37. this._sActionsUrl,
  38. jQuery.extend({}, {
  39. object: $('#' + this._sKeyObjects).val(),
  40. action: 'load_data_by_interval',
  41. from: $('#' + $this._sKeyDateFrom).val(),
  42. to: $('#' + $this._sKeyDateTo).val()
  43. }, this._oRequestParams),
  44. function(oData) {
  45. $('#' + $this._sKeyObjects).attr('disabled', false);
  46. bx_loading(oGraphWrp, false);
  47. if(oData.error != undefined) {
  48. if($this._oChart)
  49. $this._oChart.destroy();
  50. oGraphErr.html(oData.error).show();
  51. return;
  52. }
  53. // hide date selector if chart doesn't support date range
  54. if (oData.hide_date_range) {
  55. $('#' + $this._sKeyDateFrom).parents('.bx-form-element-wrapper:first').fadeOut();
  56. $('#' + $this._sKeyDateTo).parents('.bx-form-element-wrapper:first').fadeOut();
  57. }
  58. else {
  59. $('#' + $this._sKeyDateFrom).parents('.bx-form-element-wrapper:first').fadeIn();
  60. $('#' + $this._sKeyDateTo).parents('.bx-form-element-wrapper:first').fadeIn();
  61. }
  62. var oChartOptions = oData.options || {};
  63. var oChartLabels = new Array();
  64. var oChartData = new Array();
  65. // create chart arrays
  66. if(oData.column_date !== false && oData.column_count !== false)
  67. for (var i in oData.data) {
  68. var sDate = oData.data[i][oData.column_date];
  69. var aDate = sDate.match(/(\d{4})-(\d{2})-(\d{2})/);
  70. if(!aDate || !aDate[1] || !aDate[2] || !aDate[3])
  71. continue;
  72. oChartLabels[i] = sDate;
  73. oChartData[i] = oData.data[i][oData.column_count];
  74. }
  75. if($this._oChart)
  76. $this._oChart.destroy();
  77. $this._oChart = new Chart(oGraph, {
  78. type: oData.type != undefined ? oData.type : 'line',
  79. data: {
  80. labels: oChartLabels,
  81. datasets: [{
  82. label: oData.title,
  83. data: oChartData,
  84. borderColor: $this._sChartColorBorder,
  85. backgroundColor: $this._sChartColorBackground
  86. }]
  87. },
  88. options: $.extend({}, $this._oChartOptionsDefault, oChartOptions)
  89. });
  90. },
  91. 'json'
  92. );
  93. };
  94. /** @} */