42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
panelApp.directive('batJsonTree', function($compile) {
|
|
return {
|
|
restrict: 'E',
|
|
terminal: true,
|
|
scope: {
|
|
val: '='
|
|
//edit: '=',
|
|
},
|
|
link: function (scope, element, attrs) {
|
|
// this is more complicated then it should be
|
|
// see: https://github.com/angular/angular.js/issues/898
|
|
|
|
var buildDom = function (object) {
|
|
var html = '';
|
|
if (object == undefined) {
|
|
html += 'null';
|
|
} else if (object instanceof Array) {
|
|
var i;
|
|
html += '<div class="scope-branch">[';
|
|
for (i = 0; i < object.length; i++) {
|
|
html += buildDom(object[i]) + ', ';
|
|
}
|
|
html += ']</div>';
|
|
} else if (object instanceof Object) {
|
|
for (prop in object) {
|
|
if (object.hasOwnProperty(prop)) {
|
|
html += '<div class="scope-branch">' + prop + ': ' + buildDom(object[prop]) + '</div>';
|
|
}
|
|
}
|
|
} else {
|
|
html += '<span>' + object.toString() + '</span>';
|
|
}
|
|
return html;
|
|
};
|
|
|
|
scope.$watch('val', function (newVal, oldVal) {
|
|
element.html(buildDom(newVal));
|
|
});
|
|
}
|
|
};
|
|
});
|