67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
angular.module('ui.knob', [])
|
|
.directive('knob', function () {
|
|
return {
|
|
restrict: 'EACM',
|
|
template: function(elem, attrs){
|
|
|
|
return '<input value="{{ knob }}">';
|
|
|
|
},
|
|
replace: true,
|
|
scope: true,
|
|
link: function (scope, elem, attrs) {
|
|
|
|
scope.knob = scope.$eval(attrs.knobData);
|
|
|
|
var renderKnob = function(){
|
|
|
|
scope.knob = scope.$eval(attrs.knobData);
|
|
|
|
var opts = {};
|
|
if(!angular.isUndefined(attrs.knobOptions)){
|
|
opts = scope.$eval(attrs.knobOptions);
|
|
}
|
|
|
|
if(!angular.isUndefined(attrs.knobMax)){
|
|
var max = scope.$eval(attrs.knobMax);
|
|
if(!angular.isUndefined(max)){
|
|
|
|
opts.max = max;
|
|
|
|
}
|
|
}
|
|
|
|
$elem = $(elem);
|
|
$elem.val(scope.knob);
|
|
$elem.change();
|
|
$elem.knob(opts);
|
|
|
|
};
|
|
|
|
var updateMax = function updateMax() {
|
|
var max = scope.$eval(attrs.knobMax);
|
|
var val = scope.$eval(attrs.knobData);
|
|
$elem = $(elem);
|
|
$elem.trigger('configure', {
|
|
'max': parseInt(max)
|
|
}).trigger('change');
|
|
$elem.val(val);
|
|
$elem.change();
|
|
}
|
|
|
|
scope.$watch(attrs.knobData, function () {
|
|
renderKnob();
|
|
});
|
|
|
|
scope.$watch(attrs.knobMax, function() {
|
|
// There is some bug with updateMax- has to be fix
|
|
// updateMax();
|
|
});
|
|
|
|
scope.$watch(attrs.knobOptions, function () {
|
|
renderKnob();
|
|
}, true);
|
|
|
|
}
|
|
};
|
|
}); |