<!DOCTYPE html>
<html ng-app="plunker">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.js"></script>
<script src="http://ci.angularjs.org/job/angularui-bootstrap/ws/dist/ui-bootstrap-tpls-0.1.1-SNAPSHOT.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" />
@*<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel="stylesheet">*@
<script src="~/Script/app/Home/DialogDeomoCtrl.js"></script>
<link href="~/CSS/stytree.css" rel="stylesheet" />
</head>
<body>
<div ng-controller="DialogDemoCtrl" >
<div class="span5 article-tree">
<div ng-style="{'overflow': 'auto'}" >
<script type="text/ng-template" id="tree_item_renderer" >
<span ng-click="nodeClicked(data)" >
<i class="{{ switcher( isLeaf(data), '', 'icon-minus-sign' )}}"></i>
{{showNode(data)}}
</span>
<a href="">{{data.name + ' Edit'}}</a>
<ul class="some" ng-show="data.show">
<li ng-repeat="data in data.nodes" class="parent_li" ng-include="'tree_item_renderer'" tree-node></li>
</ul>
</script>
<div class="tree well">
<ul>
<li ng-repeat="data in displayTree" ng-include="'tree_item_renderer'" data-ng-click="loadconfig()"></li>
</ul>
</div>
</div>
</div>
</div>
</body>
</html>
angular.module('plunker', ['ui.bootstrap', 'ngResource']);
function DialogDemoCtrl($scope, $dialog, $resource) {
//$scope.isExecuted = false;
//buildEmptyTree();
$scope.title = "visible";
$scope.count = 0;
$scope.loadconfig = function () {
if ($scope.count == 0)
{
treeConfig();
$scope.count = 1;
}
console.log('load: ' + new Date().getMilliseconds());
}
read('getvalue', { id: 123 });
$scope.selectedNode = "";
$scope.showNode = function (data) {
//console.log(data);
return data.name;
};
$scope.isClient = function (selectedNode) {
if (selectedNode == undefined) {
return false;
}
if (selectedNode.device_name != undefined) {
return true;
}
return false;
};
function read(action, params) {
console.log('read: ' + new Date().getMilliseconds());
var resource = $resource('api/Home/' + action, params, { action: { method: 'GET', isArray: true } });
resource.action(params).$promise.then(function (d) {
$scope.displayTree = d;
});
};
}
function treeConfig() {
var title = $('.tree li:has(ul)').find('.parent_li').find(' > span').attr('title');
if (title == undefined) {
// alert(title + " out");
$('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', 'Collapse this branch');
}
$('.tree li.parent_li > span').on('click', function (e) {
var children = $(this).parent('li.parent_li').find(' > ul > li');
if (children.is(":visible")) {
var title = $(this).attr('title');
// alert(title + " visible");
if (title == "Collapse this branch") {
children.hide('fast');
$(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
}
} else if (children.is(":hidden")) {
var title = $(this).attr('title');
// alert(title + " hidden");
if (title == "Expand this branch") {
children.show('fast');
$(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
}
}
e.stopPropagation();
});
}
.tree {
min-height:20px;
padding:19px;
margin-bottom:20px;
background-color:#fbfbfb;
border:1px solid #999;
-webkit-border-radius:4px;
-moz-border-radius:4px;
border-radius:4px;
-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);
-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);
box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05)
}
.tree li {
list-style-type:none;
margin:0;
padding:10px 5px 0 5px;
position:relative
}
.tree li::before, .tree li::after {
content:'';
left:-20px;
position:absolute;
right:auto
}
.tree li::before {
border-left:1px solid #999;
bottom:50px;
height:100%;
top:0;
width:1px
}
.tree li::after {
border-top:1px solid #999;
height:20px;
top:25px;
width:25px
}
.tree li span {
-moz-border-radius:5px;
-webkit-border-radius:5px;
border:1px solid #999;
border-radius:5px;
display:inline-block;
padding:3px 8px;
text-decoration:none
}
.tree li.parent_li>span {
cursor:pointer
}
.tree>ul>li::before, .tree>ul>li::after {
border:0
}
.tree li:last-child::before {
height:30px
}
.tree li.parent_li>span:hover, .tree li.parent_li>span:hover+ul li span {
background:#eee;
border:1px solid #94a0b4;
color:#000
}
Saturday, January 3, 2015
AngularJs Bootstrap TreeView
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment