apollo_developers/assets/js/directives/sparkline.js
venbatechnologies@gmail.com 1809bcf9c9 fixed table for student details
2018-04-23 18:34:11 +05:30

60 lines
1.8 KiB
JavaScript
Executable File

'use strict';
app.directive('jqSparkline', [
function() {'use strict';
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elem, attrs, ngModel) {
var opts = {};
//TODO: Use $eval to get the object
opts.type = attrs.type || 'line';
opts.barColor = attrs.barColor || '#000000';
opts.height = attrs.height || '35px';
opts.width = attrs.width || '35px';
opts.barWidth = attrs.barWidth || '5px';
opts.barSpacing = attrs.barSpacing || '2px';
opts.zeroAxis = attrs.zeroAxis || 'true';
opts.resize = attrs.resize || false;
opts.fillColor = attrs.fillColor || '#cdf';
opts.lineWidth = attrs.lineWidth || 1;
opts.lineColor = attrs.lineColor || '#00f';
opts.spotColor = attrs.spotColor || '#f80';
opts.spotRadius = attrs.spotRadius || 1.5;
opts.minSpotColor = attrs.minSpotColor || '#f80';
opts.maxSpotColor = attrs.maxSpotColor || '#f80';
opts.highlightSpotColor = attrs.highlightSpotColor || '#5f5';
opts.highlightLineColor = attrs.highlightLineColor || '#f22';
scope.$watch(attrs.ngModel, function() {
render();
});
scope.$watch(attrs.opts, function() {
render();
});
var render = function() {
var model;
if(attrs.opts)
angular.extend(opts, angular.fromJson(attrs.opts));
console.log(opts);
// Trim trailing comma if we are a string
angular.isString(ngModel.$viewValue) ? model = ngModel.$viewValue.replace(/(^,)|(,$)/g, "") : model = ngModel.$viewValue;
var data;
// Make sure we have an array of numbers
angular.isArray(model) ? data = model : data = model.split(',');
$(elem).sparkline(data, opts);
};
// function to initiate Sparkline
var sparkResize;
$(window).resize(function(e) {
if (opts.resize) {
clearTimeout(sparkResize);
sparkResize = setTimeout(render, 500);
}
});
}
};
}]);