/*jshint globalstrict:true */ /*global angular:true */ 'use strict'; angular.module('kibana.directives', []) .directive('kibanaPanel', function($compile) { return { restrict: 'E', link: function(scope, elem, attrs) { var template = ''+ ' '+ '{{panel.type}} '+ '

{{panel.title}}

'; elem.prepend($compile(angular.element(template))(scope)); } }; }) .directive('addPanel', function($compile) { return { restrict: 'A', link: function(scope, elem, attrs) { scope.$watch('panel.type', function(n,o) { if(!_.isUndefined(scope.panel.type)) { var template = '
'; elem.html($compile(angular.element(template))(scope)); } }); } }; }) .directive('arrayJoin', function() { return { restrict: 'A', require: 'ngModel', link: function(scope, element, attr, ngModel) { function split_array(text) { return (text || '').split(','); } function join_array(text) { if(_.isArray(text)) { return (text || '').join(','); } else { return text; } } ngModel.$parsers.push(split_array); ngModel.$formatters.push(join_array); } }; }) .directive('ngModelOnblur', function() { return { restrict: 'A', require: 'ngModel', link: function(scope, elm, attr, ngModelCtrl) { if (attr.type === 'radio' || attr.type === 'checkbox') { return; } elm.unbind('input').unbind('keydown').unbind('change'); elm.bind('blur', function() { scope.$apply(function() { ngModelCtrl.$setViewValue(elm.val()); }); }); } }; }) .directive('ngBlur', ['$parse', function($parse) { return function(scope, element, attr) { var fn = $parse(attr['ngBlur']); element.bind('blur', function(event) { scope.$apply(function() { fn(scope, {$event:event}); }); }); } }]);