UNPKG

thalassa-aqueduct

Version:

Dynamic haproxy load balancer and configuration. Part of Thalassa

64 lines (51 loc) 1.86 kB
angular.module('ui.bootstrap.buttons', []) .constant('buttonConfig', { activeClass:'active', toggleEvent:'click' }) .directive('btnRadio', ['buttonConfig', function (buttonConfig) { var activeClass = buttonConfig.activeClass || 'active'; var toggleEvent = buttonConfig.toggleEvent || 'click'; return { require:'ngModel', link:function (scope, element, attrs, ngModelCtrl) { //model -> UI ngModelCtrl.$render = function () { element.toggleClass(activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio))); }; //ui->model element.bind(toggleEvent, function () { if (!element.hasClass(activeClass)) { scope.$apply(function () { ngModelCtrl.$setViewValue(scope.$eval(attrs.btnRadio)); ngModelCtrl.$render(); }); } }); } }; }]) .directive('btnCheckbox', ['buttonConfig', function (buttonConfig) { var activeClass = buttonConfig.activeClass || 'active'; var toggleEvent = buttonConfig.toggleEvent || 'click'; return { require:'ngModel', link:function (scope, element, attrs, ngModelCtrl) { var trueValue = scope.$eval(attrs.btnCheckboxTrue); var falseValue = scope.$eval(attrs.btnCheckboxFalse); trueValue = angular.isDefined(trueValue) ? trueValue : true; falseValue = angular.isDefined(falseValue) ? falseValue : false; //model -> UI ngModelCtrl.$render = function () { element.toggleClass(activeClass, angular.equals(ngModelCtrl.$modelValue, trueValue)); }; //ui->model element.bind(toggleEvent, function () { scope.$apply(function () { ngModelCtrl.$setViewValue(element.hasClass(activeClass) ? falseValue : trueValue); ngModelCtrl.$render(); }); }); } }; }]);