docs: function C3Chart ($timeout) {
      var chartLinker = function (scope, element, attrs, chartCtrl) {
          var paddingTop = attrs.paddingTop;
          var paddingRight = attrs.paddingRight;
          var paddingBottom = attrs.paddingBottom;
          var paddingLeft = attrs.paddingLeft;
          var sortData = attrs.sortData;
          var transitionDuration = attrs.transitionDuration;
          var initialConfig = attrs.initialConfig;
  
          if (attrs.interactionEnabled && attrs.interactionEnabled === 'false') {
              chartCtrl.addInteractionEnabled(false);
          }
  
          if (paddingTop) {
              chartCtrl.addPadding('top', paddingTop);
          }
          if (paddingRight) {
              chartCtrl.addPadding('right', paddingRight);
          }
          if (paddingBottom) {
              chartCtrl.addPadding('bottom', paddingBottom);
          }
          if (paddingLeft) {
              chartCtrl.addPadding('left', paddingLeft);
          }
          if (sortData) {
              chartCtrl.addSorting(sortData);
          }
          if (attrs.labelsFormatFunction) {
              chartCtrl.addDataLabelsFormatFunction(scope.labelsFormatFunction());
          }
          if (attrs.onZoomEndFunction) {
              chartCtrl.addOnZoomEndFunction(scope.onZoomEndFunction());
          }
          if (attrs.subchartOnBrushFunction){
            chartCtrl.addSubchartOnBrushFunction(scope.subchartOnBrushFunction());          
          }         
          if (attrs.callbackFunction) {
              chartCtrl.addChartCallbackFunction(scope.callbackFunction());
          }
          if (transitionDuration) {
              chartCtrl.addTransitionDuration(transitionDuration);
          }
          if (initialConfig) {
              chartCtrl.addInitialConfig(initialConfig);
          }
          // Trick to wait for all rendering of the DOM to be finished.
          $timeout(function () {
              chartCtrl.showGraph();
          });
      };
  
      return {
          "restrict": "E",
          "controller": "ChartController",
          "scope": {
              "bindto": "@bindtoId",
              "showLabels": "@showLabels",
              "labelsFormatFunction": "&",
              "onZoomEndFunction": "&",            
              "showSubchart": "@showSubchart",
              "subchartOnBrushFunction": "&",
              "enableZoom": "@enableZoom",
              "rescaleZoom": "@rescaleZoom",
              "chartData": "=chartData",
              "chartColumns": "=chartColumns",
              "chartX": "=chartX",
              "callbackFunction": "&",
              "emptyLabel": "@emptyLabel"
          },
          "template": "<div><div id='{{bindto}}'></div><div ng-transclude></div></div>",
          "replace": true,
          "transclude": true,
          "link": chartLinker
      };
  }