1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- angular.module('kityminderEditor')
- .directive('selectAll', function() {
- return {
- restrict: 'E',
- templateUrl: 'ui/directive/selectAll/selectAll.html',
- scope: {
- minder: '='
- },
- replace: true,
- link: function($scope) {
- var minder = $scope.minder;
- $scope.items = ['revert', 'siblings', 'level', 'path', 'tree'];
- $scope.select = {
- all: function() {
- var selection = [];
- minder.getRoot().traverse(function(node) {
- selection.push(node);
- });
- minder.select(selection, true);
- minder.fire('receiverfocus');
- },
- revert: function() {
- var selected = minder.getSelectedNodes();
- var selection = [];
- minder.getRoot().traverse(function(node) {
- if (selected.indexOf(node) == -1) {
- selection.push(node);
- }
- });
- minder.select(selection, true);
- minder.fire('receiverfocus');
- },
- siblings: function() {
- var selected = minder.getSelectedNodes();
- var selection = [];
- selected.forEach(function(node) {
- if (!node.parent) return;
- node.parent.children.forEach(function(sibling) {
- if (selection.indexOf(sibling) == -1) selection.push(sibling);
- });
- });
- minder.select(selection, true);
- minder.fire('receiverfocus');
- },
- level: function() {
- var selectedLevel = minder.getSelectedNodes().map(function(node) {
- return node.getLevel();
- });
- var selection = [];
- minder.getRoot().traverse(function(node) {
- if (selectedLevel.indexOf(node.getLevel()) != -1) {
- selection.push(node);
- }
- });
- minder.select(selection, true);
- minder.fire('receiverfocus');
- },
- path: function() {
- var selected = minder.getSelectedNodes();
- var selection = [];
- selected.forEach(function(node) {
- while(node && selection.indexOf(node) == -1) {
- selection.push(node);
- node = node.parent;
- }
- });
- minder.select(selection, true);
- minder.fire('receiverfocus');
- },
- tree: function() {
- var selected = minder.getSelectedNodes();
- var selection = [];
- selected.forEach(function(parent) {
- parent.traverse(function(node) {
- if (selection.indexOf(node) == -1) selection.push(node);
- });
- });
- minder.select(selection, true);
- minder.fire('receiverfocus');
- }
- };
- }
- }
- });
|