mirror of
https://github.com/duplicati/duplicati.git
synced 2025-11-28 11:30:24 +08:00
82 lines
2.7 KiB
JavaScript
82 lines
2.7 KiB
JavaScript
(function () {
|
|
var comp = angular.module('dotjem.angular.tree', []),
|
|
SW_REGEX = /^(\S+)(\s+as\s+(\w+))?$/;
|
|
|
|
comp.controller("dxStartWithCtrl", [function () {}]);
|
|
|
|
function $RootNodeDirective() {
|
|
return {
|
|
restrict: 'AEC',
|
|
require: 'dxStartWith',
|
|
controller: 'dxStartWithCtrl',
|
|
|
|
scope: true,
|
|
terminal: true,
|
|
transclude: true,
|
|
multiElement: true,
|
|
|
|
$$tlb: true,
|
|
|
|
compile: function (elm, attr) {
|
|
var exp = attr['dxStartWith'] || attr.root,
|
|
match = exp.match(SW_REGEX),
|
|
watch = match[1],
|
|
priorAlias = match[3] || '';
|
|
|
|
return function $RootNodeDirectiveLink(scope, elm, attr, ctrl, $transclude) {
|
|
ctrl.transclude = $transclude;
|
|
ctrl.transclude(scope, function (clone, scope) {
|
|
elm.append(clone);
|
|
scope.$dxLevel = 0;
|
|
scope.$dxIsRoot = true;
|
|
function updatePrior(value) {
|
|
scope.$dxPrior = value;
|
|
if (priorAlias !== '') {
|
|
scope[priorAlias] = value;
|
|
}
|
|
}
|
|
scope.$watch(watch, updatePrior);
|
|
});
|
|
};
|
|
}
|
|
};
|
|
}
|
|
|
|
function $NodeDirective() {
|
|
return {
|
|
restrict: 'AEC',
|
|
require: '^dxStartWith',
|
|
|
|
scope: true,
|
|
terminal: true,
|
|
multiElement: true,
|
|
|
|
compile: function (elm, attr) {
|
|
var exp = attr['dxConnect'] || attr.connect,
|
|
match = exp.match(SW_REGEX),
|
|
watch = match[1],
|
|
priorAlias = match[3] || '';
|
|
|
|
return function $NodeDirectiveLink(scope, elm, attr, ctrl) {
|
|
ctrl.transclude(scope, function (clone, scope) {
|
|
elm.append(clone);
|
|
|
|
scope.$dxLevel = scope.$dxLevel + 1;
|
|
scope.$dxIsRoot = false;
|
|
function updatePrior(value) {
|
|
scope.$dxPrior = value;
|
|
if (priorAlias !== '') {
|
|
scope[priorAlias] = value;
|
|
}
|
|
}
|
|
|
|
scope.$watch(watch, updatePrior);
|
|
});
|
|
};
|
|
}
|
|
};
|
|
}
|
|
|
|
comp.directive('dxStartWith', $RootNodeDirective);
|
|
comp.directive('dxConnect', $NodeDirective);
|
|
}());
|