MDL-55013 core: add support for title
authorSimey Lameze <simey@moodle.com>
Fri, 24 Jun 2016 03:59:32 +0000 (11:59 +0800)
committerDan Poltawski <dan@moodle.com>
Mon, 25 Jul 2016 09:42:19 +0000 (10:42 +0100)
Part of MDL-54987 epic.

lib/amd/build/chart_base.min.js
lib/amd/build/chart_output_chartjs.min.js
lib/amd/src/chart_base.js
lib/amd/src/chart_output_chartjs.js
lib/classes/chart_base.php

index 9da2980..ee42009 100644 (file)
Binary files a/lib/amd/build/chart_base.min.js and b/lib/amd/build/chart_base.min.js differ
index 972541e..c85ada5 100644 (file)
Binary files a/lib/amd/build/chart_output_chartjs.min.js and b/lib/amd/build/chart_output_chartjs.min.js differ
index bacf6bc..6da2fcc 100644 (file)
@@ -31,6 +31,7 @@ define(['core/chart_series'], function(Series) {
     }
     Base.prototype._series = null;
     Base.prototype._labels = null;
+    Base.prototype._title = null;
     Base.prototype.COLORSET = ['red', 'green', 'blue', 'yellow', 'pink', 'orange'];
     Base.prototype.TYPE = null;
 
@@ -49,6 +50,7 @@ define(['core/chart_series'], function(Series) {
         // to have a reference to the class in the sub classes, in PHP I'd do new self().
         var Chart = new Klass();
         Chart.setLabels(data.labels);
+        Chart.setTitle(data.title);
         for (var i = 0; i < data.series.length; i++) {
             Chart.addSeries(Series.prototype.create(data.series[i]));
         }
@@ -63,6 +65,10 @@ define(['core/chart_series'], function(Series) {
         return this._series;
     };
 
+    Base.prototype.getTitle = function() {
+        return this._title;
+    };
+
     Base.prototype.getType = function() {
         if (!this.TYPE) {
             throw new Error('The TYPE property has not been set.');
@@ -77,6 +83,10 @@ define(['core/chart_series'], function(Series) {
         this._labels = labels;
     };
 
+    Base.prototype.setTitle = function(title) {
+        this._title = title;
+    };
+
     Base.prototype._validateSerie = function(serie) {
         if (this._series.length && this._series[0].getCount() != serie.getCount()) {
             throw new Error('Series do not have an equal number of values.');
index 34fa32e..7c80346 100644 (file)
@@ -62,6 +62,10 @@ define(['jquery', 'core/chartjs', 'core/chart_output_base'], function($, Chartjs
                 datasets: this.getDatasets()
             },
             options: {
+                title: {
+                    display: this._chart.getTitle() !== null,
+                    text: this._chart.getTitle()
+                }
             }
         };
         return config;
index 38c3bf2..5e69999 100644 (file)
@@ -40,6 +40,7 @@ class chart_base implements JsonSerializable, renderable {
 
     protected $series = [];
     protected $labels = [];
+    protected $title = null;
 
     public function __construct() {
     }
@@ -52,7 +53,8 @@ class chart_base implements JsonSerializable, renderable {
         return [
             'type' => $this->get_type(),
             'series' => $this->series,
-            'labels' => $this->labels
+            'labels' => $this->labels,
+            'title' => $this->title
         ];
     }
 
@@ -64,6 +66,10 @@ class chart_base implements JsonSerializable, renderable {
         return $this->series;
     }
 
+    public function get_title() {
+        return $this->title;
+    }
+
     public function get_type() {
         $classname = get_class($this);
         return substr($classname, strpos($classname, '_') + 1);
@@ -73,4 +79,7 @@ class chart_base implements JsonSerializable, renderable {
         $this->labels = $labels;
     }
 
+    public function set_title($title) {
+        $this->title = $title;
+    }
 }