141 lines
4.3 KiB
JavaScript
Executable File
141 lines
4.3 KiB
JavaScript
Executable File
'use strict';
|
|
/**
|
|
* controller for angular-bootstrap-nav-tree
|
|
* An AngularJS directive that creates a Tree based on a Bootstrap "nav" list.
|
|
*/
|
|
app.controller('TreeCtrl', ["$scope", "$timeout", function ($scope, $timeout) {
|
|
var apple_selected, tree, treedata_avm, treedata_geography;
|
|
$scope.my_tree_handler = function (branch) {
|
|
var _ref;
|
|
$scope.output = "You selected: " + branch.label;
|
|
if ((_ref = branch.data) != null ? _ref.description :
|
|
void 0) {
|
|
return $scope.output += '(' + branch.data.description + ')';
|
|
}
|
|
};
|
|
apple_selected = function (branch) {
|
|
return $scope.output = "APPLE! : " + branch.label;
|
|
};
|
|
treedata_avm = [{
|
|
label: 'Animal',
|
|
children: [{
|
|
label: 'Dog',
|
|
data: {
|
|
description: "man's best friend"
|
|
}
|
|
}, {
|
|
label: 'Cat',
|
|
data: {
|
|
description: "Felis catus"
|
|
}
|
|
}, {
|
|
label: 'Hippopotamus',
|
|
data: {
|
|
description: "hungry, hungry"
|
|
}
|
|
}, {
|
|
label: 'Chicken',
|
|
children: ['White Leghorn', 'Rhode Island Red', 'Jersey Giant']
|
|
}]
|
|
}, {
|
|
label: 'Vegetable',
|
|
data: {
|
|
definition: "A plant or part of a plant used as food, typically as accompaniment to meat or fish, such as a cabbage, potato, carrot, or bean.",
|
|
data_can_contain_anything: true
|
|
},
|
|
onSelect: function (branch) {
|
|
return $scope.output = "Vegetable: " + branch.data.definition;
|
|
},
|
|
children: [{
|
|
label: 'Oranges'
|
|
}, {
|
|
label: 'Apples',
|
|
children: [{
|
|
label: 'Granny Smith',
|
|
onSelect: apple_selected
|
|
}, {
|
|
label: 'Red Delicous',
|
|
onSelect: apple_selected
|
|
}, {
|
|
label: 'Fuji',
|
|
onSelect: apple_selected
|
|
}]
|
|
}]
|
|
}, {
|
|
label: 'Mineral',
|
|
children: [{
|
|
label: 'Rock',
|
|
children: ['Igneous', 'Sedimentary', 'Metamorphic']
|
|
}, {
|
|
label: 'Metal',
|
|
children: ['Aluminum', 'Steel', 'Copper']
|
|
}, {
|
|
label: 'Plastic',
|
|
children: [{
|
|
label: 'Thermoplastic',
|
|
children: ['polyethylene', 'polypropylene', 'polystyrene', ' polyvinyl chloride']
|
|
}, {
|
|
label: 'Thermosetting Polymer',
|
|
children: ['polyester', 'polyurethane', 'vulcanized rubber', 'bakelite', 'urea-formaldehyde']
|
|
}]
|
|
}]
|
|
}];
|
|
treedata_geography = [{
|
|
label: 'North America',
|
|
children: [{
|
|
label: 'Canada',
|
|
children: ['Toronto', 'Vancouver']
|
|
}, {
|
|
label: 'USA',
|
|
children: ['New York', 'Los Angeles']
|
|
}, {
|
|
label: 'Mexico',
|
|
children: ['Mexico City', 'Guadalajara']
|
|
}]
|
|
}, {
|
|
label: 'South America',
|
|
children: [{
|
|
label: 'Venezuela',
|
|
children: ['Caracas', 'Maracaibo']
|
|
}, {
|
|
label: 'Brazil',
|
|
children: ['Sao Paulo', 'Rio de Janeiro']
|
|
}, {
|
|
label: 'Argentina',
|
|
children: ['Buenos Aires', 'Cordoba']
|
|
}]
|
|
}];
|
|
$scope.my_data = treedata_avm;
|
|
$scope.try_changing_the_tree_data = function () {
|
|
if ($scope.my_data === treedata_avm) {
|
|
return $scope.my_data = treedata_geography;
|
|
} else {
|
|
return $scope.my_data = treedata_avm;
|
|
}
|
|
};
|
|
$scope.my_tree = tree = {};
|
|
$scope.try_async_load = function () {
|
|
$scope.my_data = [];
|
|
$scope.doing_async = true;
|
|
return $timeout(function () {
|
|
if (Math.random() < 0.5) {
|
|
$scope.my_data = treedata_avm;
|
|
} else {
|
|
$scope.my_data = treedata_geography;
|
|
}
|
|
$scope.doing_async = false;
|
|
return tree.expand_all();
|
|
}, 1000);
|
|
};
|
|
return $scope.try_adding_a_branch = function () {
|
|
var b;
|
|
b = tree.get_selected_branch();
|
|
return tree.add_branch(b, {
|
|
label: 'New Branch',
|
|
data: {
|
|
something: 42,
|
|
"else": 43
|
|
}
|
|
});
|
|
};
|
|
}]); |