myems-admin/js/plugins/flot/angular-flot.js

Summary

Maintainability
A
1 hr
Test Coverage
// Generated by CoffeeScript 1.8.0
angular.module('angular-flot', []).directive('flot', function() {
    return {
        restrict: 'EA',
        template: '<div></div>',
        scope: {
            dataset: '=',
            options: '=',
            callback: '='
        },
        link: function(scope, element, attributes) {
            var height, init, onDatasetChanged, onOptionsChanged, plot, plotArea, width, _ref, _ref1;
            plot = null;
            width = attributes.width || '100%';
            height = attributes.height || '100%';
            if (((_ref = scope.options) != null ? (_ref1 = _ref.legend) != null ? _ref1.container : void 0 : void 0) instanceof jQuery) {
                throw 'Please use a jQuery expression string with the "legend.container" option.';
            }
            if (!scope.dataset) {
                scope.dataset = [];
            }
            if (!scope.options) {
                scope.options = {
                    legend: {
                        show: false
                    }
                };
            }
            plotArea = $(element.children()[0]);
            plotArea.css({
                width: width,
                height: height
            });
            init = function() {
                var plotObj;
                plotObj = $.plot(plotArea, scope.dataset, scope.options);
                if (scope.callback) {
                    scope.callback(plotObj);
                }
                return plotObj;
            };
            onDatasetChanged = function(dataset) {
                if (plot) {
                    plot.setData(dataset);
                    plot.setupGrid();
                    return plot.draw();
                } else {
                    return plot = init();
                }
            };
            scope.$watch('dataset', onDatasetChanged, true);
            onOptionsChanged = function() {
                return plot = init();
            };
            return scope.$watch('options', onOptionsChanged, true);
        }
    };
});