MDL-55110 core: Add support for smooth lines
[moodle.git] / lib / amd / src / chart_output_chartjs.js
index d7e42d3..dad0074 100644 (file)
@@ -26,8 +26,10 @@ define([
     'core/chartjs',
     'core/chart_axis',
     'core/chart_output_base',
+    'core/chart_line',
     'core/chart_pie',
-], function($, Chartjs, Axis, Base, Pie) {
+    'core/chart_series'
+], function($, Chartjs, Axis, Base, Line, Pie, Series) {
 
     /**
      * Makes an axis ID.
@@ -208,6 +210,7 @@ define([
                 backgroundColor: colors,
                 // Pie charts look better without borders.
                 borderColor: this._chart.getType() == Pie.prototype.TYPE ? null : colors,
+                lineTension: this._isSmooth(series) ? 0.3 : 0
             };
 
             if (series.getXAxis() !== null) {
@@ -222,6 +225,27 @@ define([
         return sets;
     };
 
+    /**
+     * Verify if the chart line is smooth or not.
+     *
+     * @protected
+     * @param {module:core/chart_series} series The series.
+     * @returns {Bool}
+     */
+    Output.prototype._isSmooth = function(series) {
+        var smooth = false;
+        if (this._chart.getType() === Line.prototype.TYPE) {
+            smooth = series.getSmooth();
+            if (smooth === null) {
+                smooth = this._chart.getSmooth();
+            }
+        } else if (series.getType() === Series.prototype.TYPE_LINE) {
+            smooth = series.getSmooth();
+        }
+
+        return smooth;
+    };
+
     /** @override */
     Output.prototype.update = function() {
         $.extend(true, this._config, this._makeConfig());