From a625608f6059e3ff3bb0afe53e86335d4c81c768 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 May 2015 13:50:08 -0700 Subject: [PATCH 1/5] added tests and support for gradual toggle expansion --- .../lcov-report/angular-tree-control.js.html | 1376 +++++++++++++++++ .../lcov-report/index.html | 333 ++++ .../lcov-report/prettify.css | 1 + .../lcov-report/prettify.js | 1 + Chrome 42.0.2311 (Windows 7)/lcov.info | 399 +++++ angular-tree-control.js | 25 +- test/angular-tree-control-test.js | 119 ++ 7 files changed, 2251 insertions(+), 3 deletions(-) create mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html create mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/index.html create mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css create mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js create mode 100644 Chrome 42.0.2311 (Windows 7)/lcov.info diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html b/Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html new file mode 100644 index 0000000..1a7fbf5 --- /dev/null +++ b/Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html @@ -0,0 +1,1376 @@ + + + + Code coverage report for ./angular-tree-control.js + + + + + + + +
+

Code coverage report for ./angular-tree-control.js

+

+ + Statements: 37.31% (75 / 201)      + + + Branches: 15.75% (20 / 127)      + + + Functions: 40.63% (13 / 32)      + + + Lines: 37.69% (75 / 199)      + +

+
All files » .\ » angular-tree-control.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +3581 +  +  +1 +  +  +  +  +  +1 +252 +44 +22 +  +22 +  +  +208 +  +  +1 +1071 +963 +  +  +62 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1 +  +  +  +  +  +  +  +  +  +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +63 +  +63 +63 +63 +63 +10 +  +63 +  +  +1 +  +  +  +  +  +  +  +  +  +  +  +  +63 +  +  +  +  +  +  +  +  +  +  +  +  +63 +  +  +  +  +  +  +63 +  +  +  +63 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +63 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +63 +  +  +  +  +  +  +  +  +  +63 +  +  +  +  +  +  +  +  +  +  +  +  +  +63 +63 +63 +  +  +  +  +  +  +  +  +  +63 +  +  +63 +  +63 +2 +2 +  +2 +2 +2 +  +  +  +  +  +  +  +  +63 +2 +2 +2 +2 +  +2 +  +  +  +  +  +  +  +2 +1 +1 +  +  +  +  +  +  +1 +1 +  +2 +  +  +  +  +  +  +  +63 +63 +63 +  +  +  +  +  +  +  +  +  +  +62 +  +  +  +  +  +  +  +  +  +  +  +  +62 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
(function ( angular ) {
+    'use strict';
+    
+    angular.module( 'treeControl', [] )
+        .directive( 'treecontrol', ['$compile', '$timeout', function( $compile, $timeout) {
+            /**
+             * @param cssClass - the css class
+             * @param addClassProperty - should we wrap the class name with class=""
+             */
+            function classIfDefined(cssClass, addClassProperty) {
+                if (cssClass) {
+                    if (addClassProperty)
+                        return 'class="' + cssClass + '"';
+                    else
+                        return cssClass;
+                }
+                else
+                    return "";
+            }
+            
+            function ensureDefault(obj, prop, value) {
+                if (!obj.hasOwnProperty(prop))
+                    obj[prop] = value;
+            }
+            
+            return {
+                restrict: 'EA',
+                require: "treecontrol",
+                transclude: true,
+                scope: {
+                    treeModel: "=",
+                    selectedNode: "=?",
+                    selectedNodes: "=?",
+                    expandedNodes: "=?",
+                    onSelection: "&",
+                    onNodeToggle: "&",
+                    options: "=?",
+                    orderBy: "@",
+                    reverseOrder: "@",
+                    filterExpression: "=?",
+                    filterComparator: "=?"
+                },
+                controller: ['$scope', function( $scope ) {
+ 
+                    function defaultIsLeaf(node) {
+                        return !node[$scope.options.nodeChildren] || node[$scope.options.nodeChildren].length === 0;
+                    }
+ 
+                    function shallowCopy(src, dst) {
+                        if (angular.isArray(src)) {
+                            dst = dst || [];
+ 
+                            for ( var i = 0; i < src.length; i++) {
+                                dst[i] = src[i];
+                            }
+                        } else if (angular.isObject(src)) {
+                            dst = dst || {};
+ 
+                            for (var key in src) {
+                                if (hasOwnProperty.call(src, key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
+                                    dst[key] = src[key];
+                                }
+                            }
+                        }
+ 
+                        return dst || src;
+                    }
+                    function defaultEquality(a, b) {
+                        if (a === undefined || b === undefined)
+                            return false;
+                        a = shallowCopy(a);
+                        a[$scope.options.nodeChildren] = [];
+                        b = shallowCopy(b);
+                        b[$scope.options.nodeChildren] = [];
+                        return angular.equals(a, b);
+                    }
+ 
+                    $scope.options = $scope.options || {};
+                    ensureDefault($scope.options, "multiSelection", false);
+                    ensureDefault($scope.options, "nodeChildren", "children");
+                    ensureDefault($scope.options, "dirSelectable", "true");
+                    ensureDefault($scope.options, "injectClasses", {});
+                    ensureDefault($scope.options.injectClasses, "ul", "");
+                    ensureDefault($scope.options.injectClasses, "li", "");
+                    ensureDefault($scope.options.injectClasses, "liSelected", "");
+                    ensureDefault($scope.options.injectClasses, "iExpanded", "");
+                    ensureDefault($scope.options.injectClasses, "iCollapsed", "");
+                    ensureDefault($scope.options.injectClasses, "iLeaf", "");
+                    ensureDefault($scope.options.injectClasses, "label", "");
+                    ensureDefault($scope.options.injectClasses, "labelSelected", "");
+                    ensureDefault($scope.options, "equality", defaultEquality);
+                    ensureDefault($scope.options, "isLeaf", defaultIsLeaf);
+                    ensureDefault($scope.options, "enableIntervalToggle", false);
+                    ensureDefault($scope.options, "childrenLimitInterval", 10);
+                    ensureDefault($scope.options, "childrenTimeInterval", 10);
+ 
+                    $scope.selectedNodes = $scope.selectedNodes || [];
+                    $scope.expandedNodes = $scope.expandedNodes || [];
+                    $scope.expandedNodesMap = {};
+                    for (var i=0; i < $scope.expandedNodes.length; i++) {
+                        $scope.expandedNodesMap[""+i] = $scope.expandedNodes[i];
+                    }
+                    $scope.parentScopeOfTree = $scope.$parent;
+ 
+ 
+                    function isSelectedNode(node) {
+                        if (!$scope.options.multiSelection && ($scope.options.equality(node, $scope.selectedNode)))
+                            return true;
+                        else if ($scope.options.multiSelection && $scope.selectedNodes) {
+                            for (var i = 0; (i < $scope.selectedNodes.length); i++) {
+                                if ($scope.options.equality(node, $scope.selectedNodes[i])) {
+                                    return true;
+                                }
+                            }
+                            return false;
+                        }
+                    }
+ 
+                    $scope.headClass = function(node) {
+                        var liSelectionClass = classIfDefined($scope.options.injectClasses.liSelected, false);
+                        var injectSelectionClass = "";
+                        if (liSelectionClass && isSelectedNode(node))
+                            injectSelectionClass = " " + liSelectionClass;
+                        if ($scope.options.isLeaf(node))
+                            return "tree-leaf" + injectSelectionClass;
+                        if ($scope.expandedNodesMap[this.$id])
+                            return "tree-expanded" + injectSelectionClass;
+                        else
+                            return "tree-collapsed" + injectSelectionClass;
+                    };
+ 
+                    $scope.iBranchClass = function() {
+                        if ($scope.expandedNodesMap[this.$id])
+                            return classIfDefined($scope.options.injectClasses.iExpanded);
+                        else
+                            return classIfDefined($scope.options.injectClasses.iCollapsed);
+                    };
+ 
+                    $scope.nodeExpanded = function() {
+                        return !!$scope.expandedNodesMap[this.$id];
+                    };
+ 
+                    $scope.selectNodeHead = function() {
+                        var expanding = $scope.expandedNodesMap[this.$id] === undefined;
+                        $scope.expandedNodesMap[this.$id] = (expanding ? this.node : undefined);
+                        if (expanding) {
+                            $scope.expandedNodes.push(this.node);
+                        }
+                        else {
+                            var index;
+                            for (var i=0; (i < $scope.expandedNodes.length) && !index; i++) {
+                                if ($scope.options.equality($scope.expandedNodes[i], this.node)) {
+                                    index = i;
+                                }
+                            }
+                            if (index != undefined)
+                                $scope.expandedNodes.splice(index, 1);
+                        }
+                        if ($scope.onNodeToggle)
+                            $scope.onNodeToggle({node: this.node, expanded: expanding});
+                    };
+ 
+                    $scope.selectNodeLabel = function( selectedNode ){
+                        if (selectedNode[$scope.options.nodeChildren] && selectedNode[$scope.options.nodeChildren].length > 0 &&
+                            !$scope.options.dirSelectable) {
+                            this.selectNodeHead();
+                        }
+                        else {
+                            var selected = false;
+                            if ($scope.options.multiSelection) {
+                                var pos = -1;
+                                for (var i=0; i < $scope.selectedNodes.length; i++) {
+                                    if($scope.options.equality(selectedNode, $scope.selectedNodes[i])) {
+                                        pos = i;
+                                        break;
+                                    }
+                                }
+                                if (pos === -1) {
+                                    $scope.selectedNodes.push(selectedNode);
+                                    selected = true;
+                                } else {
+                                    $scope.selectedNodes.splice(pos, 1);
+                                }
+                            } else {
+                                if (!$scope.options.equality(selectedNode, $scope.selectedNode)) {
+                                    $scope.selectedNode = selectedNode;
+                                    selected = true;
+                                }
+                                else {
+                                    $scope.selectedNode = undefined;
+                                }
+                            }
+                            if ($scope.onSelection)
+                                $scope.onSelection({node: selectedNode, selected: selected});
+                        }
+                    };
+ 
+                    $scope.selectedClass = function() {
+                        var isThisNodeSelected = isSelectedNode(this.node);
+                        var labelSelectionClass = classIfDefined($scope.options.injectClasses.labelSelected, false);
+                        var injectSelectionClass = "";
+                        if (labelSelectionClass && isThisNodeSelected)
+                            injectSelectionClass = " " + labelSelectionClass;
+ 
+                        return isThisNodeSelected?"tree-selected" + injectSelectionClass:"";
+                    };
+ 
+										$scope.enableIntervalToggleOnScope = function(scope){
+											var limitInterval = $scope.options.childrenLimitInterval*1;
+											var timeInterval = $scope.options.childrenTimeInterval*1;
+											
+											scope.childrenLimit = limitInterval;
+											$timeout(function addChildren(){
+													if(scope.childrenLimit < (scope.node.children || []).length){
+															scope.childrenLimit = scope.childrenLimit + limitInterval;
+															$timeout(addChildren, timeInterval);
+													}
+											}, timeInterval); 
+										};
+										
+                    //tree template
+                    var orderBy = $scope.orderBy ? ' | orderBy:orderBy:reverseOrder' : '';
+										var limitTo = $scope.options.enableIntervalToggle ? ' | limitTo:childrenLimit' : '';
+                    var template =
+                        '<ul '+classIfDefined($scope.options.injectClasses.ul, true)+'>' +
+                            '<li ng-repeat="node in node.' + $scope.options.nodeChildren + ' | filter:filterExpression:filterComparator ' + orderBy + limitTo + '" ng-class="headClass(node)" '+classIfDefined($scope.options.injectClasses.li, true)+'>' +
+                            '<i class="tree-branch-head" ng-class="iBranchClass()" ng-click="selectNodeHead(node)"></i>' +
+                            '<i class="tree-leaf-head '+classIfDefined($scope.options.injectClasses.iLeaf, false)+'"></i>' +
+                            '<div class="tree-label '+classIfDefined($scope.options.injectClasses.label, false)+'" ng-class="selectedClass()" ng-click="selectNodeLabel(node)" tree-transclude></div>' +
+                            '<treeitem ng-if="nodeExpanded()"></treeitem>' +
+                            '</li>' +
+                            '</ul>';
+ 
+                    this.template = $compile(template);
+                }],
+                compile: function(element, attrs, childTranscludeFn) {
+                    return function ( scope, element, attrs, treemodelCntr ) {
+ 
+                        scope.$watch("treeModel", function updateNodeOnRootScope(newValue) {
+                            Eif (angular.isArray(newValue)) {
+                                Iif (angular.isDefined(scope.node) && angular.equals(scope.node[scope.options.nodeChildren], newValue))
+                                    return;
+                                scope.node = {};
+                                scope.synteticRoot = scope.node;
+                                scope.node[scope.options.nodeChildren] = newValue;
+                            }
+                            else {
+                                if (angular.equals(scope.node, newValue))
+                                    return;
+                                scope.node = newValue;
+                            }
+                        });
+ 
+                        scope.$watchCollection('expandedNodes', function(newValue) {
+                            var notFoundIds = 0;
+                            var newExpandedNodesMap = {};
+                            var $liElements = element.find('li');
+                            var existingScopes = [];
+                            // find all nodes visible on the tree and the scope $id of the scopes including them
+                            angular.forEach($liElements, function(liElement) {
+                                var $liElement = angular.element(liElement);
+                                var liScope = $liElement.scope();
+                                existingScopes.push(liScope);
+                            });
+                            // iterate over the newValue, the new expanded nodes, and for each find it in the existingNodesAndScopes
+                            // if found, add the mapping $id -> node into newExpandedNodesMap
+                            // if not found, add the mapping num -> node into newExpandedNodesMap
+                            angular.forEach(newValue, function(newExNode) {
+                                var found = false;
+                                for (var i=0; (i < existingScopes.length) && !found; i++) {
+                                    var existingScope = existingScopes[i];
+                                    if (scope.options.equality(newExNode, existingScope.node)) {
+                                        newExpandedNodesMap[existingScope.$id] = existingScope.node;
+                                        found = true;
+                                    }
+                                }
+                                Eif (!found)
+                                    newExpandedNodesMap[notFoundIds++] = newExNode;
+                            });
+                            scope.expandedNodesMap = newExpandedNodesMap;
+                        });
+ 
+//                        scope.$watch('expandedNodesMap', function(newValue) {
+//
+//                        });
+ 
+                        //Rendering template for a root node
+                        treemodelCntr.template( scope, function(clone) {
+                            element.html('').append( clone );
+														if($scope.options.enableIntervalToggle) $scope.enableIntervalToggleOnScope(scope);
+                        });
+                        // save the transclude function from compile (which is not bound to a scope as apposed to the one from link)
+                        // we can fix this to work with the link transclude function with angular 1.2.6. as for angular 1.2.0 we need
+                        // to keep using the compile function
+                        scope.$treeTransclude = childTranscludeFn;
+                    }
+                }
+            };
+        }])
+        .directive("treeitem", function() {
+            return {
+                restrict: 'E',
+                require: "^treecontrol",
+                link: function( scope, element, attrs, treemodelCntr) {
+                    // Rendering template for the current node
+                    treemodelCntr.template(scope, function(clone) { 
+                        element.html('').append(clone);
+												if($scope.options.enableIntervalToggle) $scope.enableIntervalToggleOnScope(scope);
+                    });
+                }
+            }
+        })
+        .directive("treeTransclude", function() {
+            return {
+                link: function(scope, element, attrs, controller) {
+                    if (!scope.options.isLeaf(scope.node)) {
+                        angular.forEach(scope.expandedNodesMap, function (node, id) {
+                            if (scope.options.equality(node, scope.node)) {
+                                scope.expandedNodesMap[scope.$id] = scope.node;
+                                scope.expandedNodesMap[id] = undefined;
+                            }
+                        });
+                    }
+                    if (!scope.options.multiSelection && scope.options.equality(scope.node, scope.selectedNode)) {
+                        scope.selectedNode = scope.node;
+                    } else if (scope.options.multiSelection) {
+                        var newSelectedNodes = [];
+                        for (var i = 0; (i < scope.selectedNodes.length); i++) {
+                            if (scope.options.equality(scope.node, scope.selectedNodes[i])) {
+                                newSelectedNodes.push(scope.node);
+                            }
+                        }
+                        scope.selectedNodes = newSelectedNodes;
+                    }
+ 
+                    // create a scope for the transclusion, whos parent is the parent of the tree control
+                    scope.transcludeScope = scope.parentScopeOfTree.$new();
+                    scope.transcludeScope.node = scope.node;
+                    scope.transcludeScope.$parentNode = (scope.$parent.node === scope.synteticRoot)?null:scope.$parent.node;
+                    scope.transcludeScope.$index = scope.$index;
+                    scope.transcludeScope.$first = scope.$first;
+                    scope.transcludeScope.$middle = scope.$middle;
+                    scope.transcludeScope.$last = scope.$last;
+                    scope.transcludeScope.$odd = scope.$odd;
+                    scope.transcludeScope.$even = scope.$even;
+                    scope.$on('$destroy', function() {
+                        scope.transcludeScope.$destroy();
+                    });
+ 
+                    scope.$treeTransclude(scope.transcludeScope, function(clone) {
+                        element.empty();
+                        element.append(clone);
+                    });
+                }
+            }
+        });
+})( angular );
+ 
+ +
+ + + + + + + + diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/index.html b/Chrome 42.0.2311 (Windows 7)/lcov-report/index.html new file mode 100644 index 0000000..26dec22 --- /dev/null +++ b/Chrome 42.0.2311 (Windows 7)/lcov-report/index.html @@ -0,0 +1,333 @@ + + + + Code coverage report for .\ + + + + + + + +
+

Code coverage report for .\

+

+ + Statements: 37.31% (75 / 201)      + + + Branches: 15.75% (20 / 127)      + + + Functions: 40.63% (13 / 32)      + + + Lines: 37.69% (75 / 199)      + +

+
All files » .\
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
angular-tree-control.js37.31%(75 / 201)15.75%(20 / 127)40.63%(13 / 32)37.69%(75 / 199)
+
+
+ + + + + + + + diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css b/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js b/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js new file mode 100644 index 0000000..ef51e03 --- /dev/null +++ b/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js @@ -0,0 +1 @@ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/Chrome 42.0.2311 (Windows 7)/lcov.info b/Chrome 42.0.2311 (Windows 7)/lcov.info new file mode 100644 index 0000000..d711d54 --- /dev/null +++ b/Chrome 42.0.2311 (Windows 7)/lcov.info @@ -0,0 +1,399 @@ +TN: +SF:./angular-tree-control.js +FN:1,(anonymous_1) +FN:5,(anonymous_2) +FN:10,classIfDefined +FN:21,ensureDefault +FN:43,(anonymous_5) +FN:45,defaultIsLeaf +FN:49,shallowCopy +FN:68,defaultEquality +FN:106,isSelectedNode +FN:119,(anonymous_10) +FN:132,(anonymous_11) +FN:139,(anonymous_12) +FN:143,(anonymous_13) +FN:163,(anonymous_14) +FN:198,(anonymous_15) +FN:208,(anonymous_16) +FN:213,addChildren +FN:236,(anonymous_18) +FN:237,(anonymous_19) +FN:239,updateNodeOnRootScope +FN:254,(anonymous_21) +FN:260,(anonymous_22) +FN:268,(anonymous_23) +FN:288,(anonymous_24) +FN:300,(anonymous_25) +FN:304,(anonymous_26) +FN:306,(anonymous_27) +FN:313,(anonymous_28) +FN:315,(anonymous_29) +FN:317,(anonymous_30) +FN:346,(anonymous_31) +FN:350,(anonymous_32) +FNF:32 +FNH:13 +FNDA:1,(anonymous_1) +FNDA:62,(anonymous_2) +FNDA:252,classIfDefined +FNDA:1071,ensureDefault +FNDA:63,(anonymous_5) +FNDA:0,defaultIsLeaf +FNDA:0,shallowCopy +FNDA:0,defaultEquality +FNDA:0,isSelectedNode +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,addChildren +FNDA:63,(anonymous_18) +FNDA:63,(anonymous_19) +FNDA:2,updateNodeOnRootScope +FNDA:2,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:1,(anonymous_23) +FNDA:63,(anonymous_24) +FNDA:62,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:62,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +DA:1,1 +DA:4,1 +DA:10,1 +DA:11,252 +DA:12,44 +DA:13,22 +DA:15,22 +DA:18,208 +DA:21,1 +DA:22,1071 +DA:23,963 +DA:26,62 +DA:45,1 +DA:46,0 +DA:49,1 +DA:50,0 +DA:51,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:57,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:66,0 +DA:68,1 +DA:69,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:78,63 +DA:79,63 +DA:80,63 +DA:81,63 +DA:82,63 +DA:83,63 +DA:84,63 +DA:85,63 +DA:86,63 +DA:87,63 +DA:88,63 +DA:89,63 +DA:90,63 +DA:91,63 +DA:92,63 +DA:93,63 +DA:94,63 +DA:95,63 +DA:97,63 +DA:98,63 +DA:99,63 +DA:100,63 +DA:101,10 +DA:103,63 +DA:106,1 +DA:107,0 +DA:108,0 +DA:109,0 +DA:110,0 +DA:111,0 +DA:112,0 +DA:115,0 +DA:119,63 +DA:120,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:126,0 +DA:127,0 +DA:129,0 +DA:132,63 +DA:133,0 +DA:134,0 +DA:136,0 +DA:139,63 +DA:140,0 +DA:143,63 +DA:144,0 +DA:145,0 +DA:146,0 +DA:147,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:156,0 +DA:157,0 +DA:159,0 +DA:160,0 +DA:163,63 +DA:164,0 +DA:166,0 +DA:169,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:173,0 +DA:174,0 +DA:175,0 +DA:178,0 +DA:179,0 +DA:180,0 +DA:182,0 +DA:185,0 +DA:186,0 +DA:187,0 +DA:190,0 +DA:193,0 +DA:194,0 +DA:198,63 +DA:199,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:203,0 +DA:205,0 +DA:208,63 +DA:209,0 +DA:210,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:215,0 +DA:216,0 +DA:222,63 +DA:223,63 +DA:224,63 +DA:234,63 +DA:237,63 +DA:239,63 +DA:240,2 +DA:241,2 +DA:242,0 +DA:243,2 +DA:244,2 +DA:245,2 +DA:248,0 +DA:249,0 +DA:250,0 +DA:254,63 +DA:255,2 +DA:256,2 +DA:257,2 +DA:258,2 +DA:260,2 +DA:261,0 +DA:262,0 +DA:263,0 +DA:268,2 +DA:269,1 +DA:270,1 +DA:271,0 +DA:272,0 +DA:273,0 +DA:274,0 +DA:277,1 +DA:278,1 +DA:280,2 +DA:288,63 +DA:289,63 +DA:290,63 +DA:295,0 +DA:301,62 +DA:306,0 +DA:307,0 +DA:308,0 +DA:314,62 +DA:316,0 +DA:317,0 +DA:318,0 +DA:319,0 +DA:320,0 +DA:324,0 +DA:325,0 +DA:326,0 +DA:327,0 +DA:328,0 +DA:329,0 +DA:330,0 +DA:333,0 +DA:337,0 +DA:338,0 +DA:339,0 +DA:340,0 +DA:341,0 +DA:342,0 +DA:343,0 +DA:344,0 +DA:345,0 +DA:346,0 +DA:347,0 +DA:350,0 +DA:351,0 +DA:352,0 +LF:199 +LH:75 +BRDA:11,1,0,44 +BRDA:11,1,1,208 +BRDA:12,2,0,22 +BRDA:12,2,1,22 +BRDA:22,3,0,963 +BRDA:22,3,1,108 +BRDA:46,4,0,0 +BRDA:46,4,1,0 +BRDA:50,5,0,0 +BRDA:50,5,1,0 +BRDA:51,6,0,0 +BRDA:51,6,1,0 +BRDA:56,7,0,0 +BRDA:56,7,1,0 +BRDA:57,8,0,0 +BRDA:57,8,1,0 +BRDA:60,9,0,0 +BRDA:60,9,1,0 +BRDA:60,10,0,0 +BRDA:60,10,1,0 +BRDA:60,11,0,0 +BRDA:60,11,1,0 +BRDA:66,12,0,0 +BRDA:66,12,1,0 +BRDA:69,13,0,0 +BRDA:69,13,1,0 +BRDA:69,14,0,0 +BRDA:69,14,1,0 +BRDA:78,15,0,63 +BRDA:78,15,1,41 +BRDA:97,16,0,63 +BRDA:97,16,1,62 +BRDA:98,17,0,63 +BRDA:98,17,1,58 +BRDA:107,18,0,0 +BRDA:107,18,1,0 +BRDA:107,19,0,0 +BRDA:107,19,1,0 +BRDA:109,20,0,0 +BRDA:109,20,1,0 +BRDA:109,21,0,0 +BRDA:109,21,1,0 +BRDA:111,22,0,0 +BRDA:111,22,1,0 +BRDA:122,23,0,0 +BRDA:122,23,1,0 +BRDA:122,24,0,0 +BRDA:122,24,1,0 +BRDA:124,25,0,0 +BRDA:124,25,1,0 +BRDA:126,26,0,0 +BRDA:126,26,1,0 +BRDA:133,27,0,0 +BRDA:133,27,1,0 +BRDA:145,28,0,0 +BRDA:145,28,1,0 +BRDA:146,29,0,0 +BRDA:146,29,1,0 +BRDA:151,30,0,0 +BRDA:151,30,1,0 +BRDA:152,31,0,0 +BRDA:152,31,1,0 +BRDA:156,32,0,0 +BRDA:156,32,1,0 +BRDA:159,33,0,0 +BRDA:159,33,1,0 +BRDA:164,34,0,0 +BRDA:164,34,1,0 +BRDA:164,35,0,0 +BRDA:164,35,1,0 +BRDA:164,35,2,0 +BRDA:170,36,0,0 +BRDA:170,36,1,0 +BRDA:173,37,0,0 +BRDA:173,37,1,0 +BRDA:178,38,0,0 +BRDA:178,38,1,0 +BRDA:185,39,0,0 +BRDA:185,39,1,0 +BRDA:193,40,0,0 +BRDA:193,40,1,0 +BRDA:202,41,0,0 +BRDA:202,41,1,0 +BRDA:202,42,0,0 +BRDA:202,42,1,0 +BRDA:205,43,0,0 +BRDA:205,43,1,0 +BRDA:214,44,0,0 +BRDA:214,44,1,0 +BRDA:214,45,0,0 +BRDA:214,45,1,0 +BRDA:222,46,0,2 +BRDA:222,46,1,61 +BRDA:223,47,0,0 +BRDA:223,47,1,63 +BRDA:240,48,0,2 +BRDA:240,48,1,0 +BRDA:241,49,0,0 +BRDA:241,49,1,2 +BRDA:241,50,0,2 +BRDA:241,50,1,0 +BRDA:248,51,0,0 +BRDA:248,51,1,0 +BRDA:270,52,0,1 +BRDA:270,52,1,0 +BRDA:272,53,0,0 +BRDA:272,53,1,0 +BRDA:277,54,0,1 +BRDA:277,54,1,0 +BRDA:290,55,0,0 +BRDA:290,55,1,0 +BRDA:308,56,0,0 +BRDA:308,56,1,0 +BRDA:316,57,0,0 +BRDA:316,57,1,0 +BRDA:318,58,0,0 +BRDA:318,58,1,0 +BRDA:324,59,0,0 +BRDA:324,59,1,0 +BRDA:324,60,0,0 +BRDA:324,60,1,0 +BRDA:326,61,0,0 +BRDA:326,61,1,0 +BRDA:329,62,0,0 +BRDA:329,62,1,0 +BRDA:339,63,0,0 +BRDA:339,63,1,0 +BRF:127 +BRH:20 +end_of_record diff --git a/angular-tree-control.js b/angular-tree-control.js index e3bd034..5cecf41 100644 --- a/angular-tree-control.js +++ b/angular-tree-control.js @@ -2,7 +2,7 @@ 'use strict'; angular.module( 'treeControl', [] ) - .directive( 'treecontrol', ['$compile', function( $compile ) { + .directive( 'treecontrol', ['$compile', '$timeout', function( $compile, $timeout) { /** * @param cssClass - the css class * @param addClassProperty - should we wrap the class name with class="" @@ -90,6 +90,9 @@ ensureDefault($scope.options.injectClasses, "labelSelected", ""); ensureDefault($scope.options, "equality", defaultEquality); ensureDefault($scope.options, "isLeaf", defaultIsLeaf); + ensureDefault($scope.options, "enableIntervalToggle", false); + ensureDefault($scope.options, "childrenLimitInterval", 10); + ensureDefault($scope.options, "childrenTimeInterval", 10); $scope.selectedNodes = $scope.selectedNodes || []; $scope.expandedNodes = $scope.expandedNodes || []; @@ -202,11 +205,25 @@ return isThisNodeSelected?"tree-selected" + injectSelectionClass:""; }; + $scope.enableIntervalToggleOnScope = function(scope){ + var limitInterval = $scope.options.childrenLimitInterval*1; + var timeInterval = $scope.options.childrenTimeInterval*1; + + scope.childrenLimit = limitInterval; + $timeout(function addChildren(){ + if(scope.childrenLimit < (scope.node.children || []).length){ + scope.childrenLimit = scope.childrenLimit + limitInterval; + $timeout(addChildren, timeInterval); + } + }, timeInterval); + }; + //tree template var orderBy = $scope.orderBy ? ' | orderBy:orderBy:reverseOrder' : ''; + var limitTo = $scope.options.enableIntervalToggle ? ' | limitTo:childrenLimit' : ''; var template = '
    ' + - '
  • ' + + '
  • ' + '' + '' + '
    ' + @@ -270,6 +287,7 @@ //Rendering template for a root node treemodelCntr.template( scope, function(clone) { element.html('').append( clone ); + if(scope.options.enableIntervalToggle) scope.enableIntervalToggleOnScope(scope); }); // save the transclude function from compile (which is not bound to a scope as apposed to the one from link) // we can fix this to work with the link transclude function with angular 1.2.6. as for angular 1.2.0 we need @@ -285,8 +303,9 @@ require: "^treecontrol", link: function( scope, element, attrs, treemodelCntr) { // Rendering template for the current node - treemodelCntr.template(scope, function(clone) { + treemodelCntr.template(scope, function(clone) { element.html('').append(clone); + if(scope.options.enableIntervalToggle) scope.enableIntervalToggleOnScope(scope); }); } } diff --git a/test/angular-tree-control-test.js b/test/angular-tree-control-test.js index 9fb4d9b..0c7a8e4 100644 --- a/test/angular-tree-control-test.js +++ b/test/angular-tree-control-test.js @@ -6,6 +6,7 @@ describe('treeControl', function() { inject(function ($injector) { $compile = $injector.get('$compile'); $rootScope = $injector.get('$rootScope'); + $timeout = $injector.get('$timeout'); }); num = 1; }); @@ -639,4 +640,122 @@ describe('treeControl', function() { }); + describe('gradual children expanding', function(){ + it('should add 20 children per 25 ms', function(){ + var TIME_INTERVAL = 25, + LIMIT_INTERVAL = 20, + MAX_NODES = 100; + $rootScope.treedata = createSubTree(1, MAX_NODES); + $rootScope.treeOptions = { + enableIntervalToggle: true, + childrenLimitInterval: LIMIT_INTERVAL, + childrenTimeInterval: TIME_INTERVAL + }; + element = $compile('{{node.label}}')($rootScope); + $rootScope.$digest(); + + var expectedChildCount = LIMIT_INTERVAL, flag = false; + runs(function(){ + setTimeout(function checkChildCount(){ + if(expectedChildCount<=MAX_NODES){ + expect(element.find('li').length).toBe(expectedChildCount); + expectedChildCount += LIMIT_INTERVAL; + $timeout.flush(); + setTimeout(checkChildCount, TIME_INTERVAL); + } + else flag = true; + }, TIME_INTERVAL/2); + }); + waitsFor(function(){ return flag;}, 'Timeouts finished', TIME_INTERVAL*(MAX_NODES/LIMIT_INTERVAL*2)); + }); + it('should default childrenTimeInterval to 10 ms', function(){ + var TIME_INTERVAL = 10, + LIMIT_INTERVAL = 20, + MAX_NODES = 100; + $rootScope.treedata = createSubTree(1, MAX_NODES); + $rootScope.treeOptions = { + enableIntervalToggle: true, + childrenLimitInterval: LIMIT_INTERVAL, + }; + element = $compile('{{node.label}}')($rootScope); + $rootScope.$digest(); + var expectedChildCount = LIMIT_INTERVAL, flag = false; + runs(function(){ + setTimeout(function checkChildCount(){ + if(expectedChildCount<=MAX_NODES){ + expect(element.find('li').length).toBe(expectedChildCount); + expectedChildCount += LIMIT_INTERVAL; + $timeout.flush(); + setTimeout(checkChildCount, TIME_INTERVAL); + } + else flag = true; + }, TIME_INTERVAL/2); + }); + waitsFor(function(){ return flag;}, 'Timeouts finished', TIME_INTERVAL*(MAX_NODES/LIMIT_INTERVAL*2)); + }); + it('should default childrenLimitInterval to 10', function(){ + var TIME_INTERVAL = 20, + LIMIT_INTERVAL = 10, + MAX_NODES = 50; + $rootScope.treedata = createSubTree(1, MAX_NODES); + $rootScope.treeOptions = { + enableIntervalToggle: true, + childrenTimeInterval: TIME_INTERVAL + }; + element = $compile('{{node.label}}')($rootScope); + $rootScope.$digest(); + var expectedChildCount = LIMIT_INTERVAL, flag = false; + runs(function(){ + setTimeout(function checkChildCount(){ + if(expectedChildCount<=MAX_NODES){ + expect(element.find('li').length).toBe(expectedChildCount); + expectedChildCount += LIMIT_INTERVAL; + $timeout.flush(); + setTimeout(checkChildCount, TIME_INTERVAL); + } + else flag = true; + }, TIME_INTERVAL/2); + }); + waitsFor(function(){ return flag;}, 'Timeouts finished', TIME_INTERVAL*(MAX_NODES/LIMIT_INTERVAL*2)); + }); + it('should handle nested expansion properly', function(){ + var TIME_INTERVAL = 10, + LIMIT_INTERVAL = 10, + MAX_NODES = 50; + $rootScope.treedata = createSubTree(2, MAX_NODES); + $rootScope.treeOptions = { + enableIntervalToggle: true + }; + element = $compile('{{node.label}}')($rootScope); + $rootScope.$digest(); + var expectedChildCount = LIMIT_INTERVAL, subTreeExpectedChildCount = LIMIT_INTERVAL, flag = false; + runs(function(){ + setTimeout(function checkChildCount(){ + if(expectedChildCount<=MAX_NODES){ + expect(element.find('li').length).toBe(expectedChildCount); + expectedChildCount += LIMIT_INTERVAL; + $timeout.flush(); + setTimeout(checkChildCount, TIME_INTERVAL); + } + else { + element.find('li:eq(0) .tree-branch-head').click() + testSubTree(); + } + }, TIME_INTERVAL/2); + + function testSubTree(){ + setTimeout(function checkChildCount(){ + if(subTreeExpectedChildCount<=MAX_NODES){ + expect(element.find('li:eq(0) li').length).toBe(subTreeExpectedChildCount); + subTreeExpectedChildCount += LIMIT_INTERVAL; + $timeout.flush(); + setTimeout(checkChildCount, TIME_INTERVAL); + } + else flag = true; + }, TIME_INTERVAL/2); + } + }); + waitsFor(function(){ return flag;}, 'Timeouts finished', 2*TIME_INTERVAL*(MAX_NODES/LIMIT_INTERVAL*2)); + }); + }); }); From 07a20ebce9870d200bda0c84f77901d249838cea Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 May 2015 14:26:41 -0700 Subject: [PATCH 2/5] removing Chrome folder --- .../lcov-report/angular-tree-control.js.html | 1376 ----------------- .../lcov-report/index.html | 333 ---- .../lcov-report/prettify.css | 1 - .../lcov-report/prettify.js | 1 - Chrome 42.0.2311 (Windows 7)/lcov.info | 399 ----- 5 files changed, 2110 deletions(-) delete mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html delete mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/index.html delete mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css delete mode 100644 Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js delete mode 100644 Chrome 42.0.2311 (Windows 7)/lcov.info diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html b/Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html deleted file mode 100644 index 1a7fbf5..0000000 --- a/Chrome 42.0.2311 (Windows 7)/lcov-report/angular-tree-control.js.html +++ /dev/null @@ -1,1376 +0,0 @@ - - - - Code coverage report for ./angular-tree-control.js - - - - - - - -
    -

    Code coverage report for ./angular-tree-control.js

    -

    - - Statements: 37.31% (75 / 201)      - - - Branches: 15.75% (20 / 127)      - - - Functions: 40.63% (13 / 32)      - - - Lines: 37.69% (75 / 199)      - -

    -
    All files » .\ » angular-tree-control.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -3581 -  -  -1 -  -  -  -  -  -1 -252 -44 -22 -  -22 -  -  -208 -  -  -1 -1071 -963 -  -  -62 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -  -63 -63 -63 -63 -10 -  -63 -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -63 -  -  -  -  -  -  -  -  -  -  -  -  -63 -  -  -  -  -  -  -63 -  -  -  -63 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -63 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -63 -  -  -  -  -  -  -  -  -  -63 -  -  -  -  -  -  -  -  -  -  -  -  -  -63 -63 -63 -  -  -  -  -  -  -  -  -  -63 -  -  -63 -  -63 -2 -2 -  -2 -2 -2 -  -  -  -  -  -  -  -  -63 -2 -2 -2 -2 -  -2 -  -  -  -  -  -  -  -2 -1 -1 -  -  -  -  -  -  -1 -1 -  -2 -  -  -  -  -  -  -  -63 -63 -63 -  -  -  -  -  -  -  -  -  -  -62 -  -  -  -  -  -  -  -  -  -  -  -  -62 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
    (function ( angular ) {
    -    'use strict';
    -    
    -    angular.module( 'treeControl', [] )
    -        .directive( 'treecontrol', ['$compile', '$timeout', function( $compile, $timeout) {
    -            /**
    -             * @param cssClass - the css class
    -             * @param addClassProperty - should we wrap the class name with class=""
    -             */
    -            function classIfDefined(cssClass, addClassProperty) {
    -                if (cssClass) {
    -                    if (addClassProperty)
    -                        return 'class="' + cssClass + '"';
    -                    else
    -                        return cssClass;
    -                }
    -                else
    -                    return "";
    -            }
    -            
    -            function ensureDefault(obj, prop, value) {
    -                if (!obj.hasOwnProperty(prop))
    -                    obj[prop] = value;
    -            }
    -            
    -            return {
    -                restrict: 'EA',
    -                require: "treecontrol",
    -                transclude: true,
    -                scope: {
    -                    treeModel: "=",
    -                    selectedNode: "=?",
    -                    selectedNodes: "=?",
    -                    expandedNodes: "=?",
    -                    onSelection: "&",
    -                    onNodeToggle: "&",
    -                    options: "=?",
    -                    orderBy: "@",
    -                    reverseOrder: "@",
    -                    filterExpression: "=?",
    -                    filterComparator: "=?"
    -                },
    -                controller: ['$scope', function( $scope ) {
    - 
    -                    function defaultIsLeaf(node) {
    -                        return !node[$scope.options.nodeChildren] || node[$scope.options.nodeChildren].length === 0;
    -                    }
    - 
    -                    function shallowCopy(src, dst) {
    -                        if (angular.isArray(src)) {
    -                            dst = dst || [];
    - 
    -                            for ( var i = 0; i < src.length; i++) {
    -                                dst[i] = src[i];
    -                            }
    -                        } else if (angular.isObject(src)) {
    -                            dst = dst || {};
    - 
    -                            for (var key in src) {
    -                                if (hasOwnProperty.call(src, key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
    -                                    dst[key] = src[key];
    -                                }
    -                            }
    -                        }
    - 
    -                        return dst || src;
    -                    }
    -                    function defaultEquality(a, b) {
    -                        if (a === undefined || b === undefined)
    -                            return false;
    -                        a = shallowCopy(a);
    -                        a[$scope.options.nodeChildren] = [];
    -                        b = shallowCopy(b);
    -                        b[$scope.options.nodeChildren] = [];
    -                        return angular.equals(a, b);
    -                    }
    - 
    -                    $scope.options = $scope.options || {};
    -                    ensureDefault($scope.options, "multiSelection", false);
    -                    ensureDefault($scope.options, "nodeChildren", "children");
    -                    ensureDefault($scope.options, "dirSelectable", "true");
    -                    ensureDefault($scope.options, "injectClasses", {});
    -                    ensureDefault($scope.options.injectClasses, "ul", "");
    -                    ensureDefault($scope.options.injectClasses, "li", "");
    -                    ensureDefault($scope.options.injectClasses, "liSelected", "");
    -                    ensureDefault($scope.options.injectClasses, "iExpanded", "");
    -                    ensureDefault($scope.options.injectClasses, "iCollapsed", "");
    -                    ensureDefault($scope.options.injectClasses, "iLeaf", "");
    -                    ensureDefault($scope.options.injectClasses, "label", "");
    -                    ensureDefault($scope.options.injectClasses, "labelSelected", "");
    -                    ensureDefault($scope.options, "equality", defaultEquality);
    -                    ensureDefault($scope.options, "isLeaf", defaultIsLeaf);
    -                    ensureDefault($scope.options, "enableIntervalToggle", false);
    -                    ensureDefault($scope.options, "childrenLimitInterval", 10);
    -                    ensureDefault($scope.options, "childrenTimeInterval", 10);
    - 
    -                    $scope.selectedNodes = $scope.selectedNodes || [];
    -                    $scope.expandedNodes = $scope.expandedNodes || [];
    -                    $scope.expandedNodesMap = {};
    -                    for (var i=0; i < $scope.expandedNodes.length; i++) {
    -                        $scope.expandedNodesMap[""+i] = $scope.expandedNodes[i];
    -                    }
    -                    $scope.parentScopeOfTree = $scope.$parent;
    - 
    - 
    -                    function isSelectedNode(node) {
    -                        if (!$scope.options.multiSelection && ($scope.options.equality(node, $scope.selectedNode)))
    -                            return true;
    -                        else if ($scope.options.multiSelection && $scope.selectedNodes) {
    -                            for (var i = 0; (i < $scope.selectedNodes.length); i++) {
    -                                if ($scope.options.equality(node, $scope.selectedNodes[i])) {
    -                                    return true;
    -                                }
    -                            }
    -                            return false;
    -                        }
    -                    }
    - 
    -                    $scope.headClass = function(node) {
    -                        var liSelectionClass = classIfDefined($scope.options.injectClasses.liSelected, false);
    -                        var injectSelectionClass = "";
    -                        if (liSelectionClass && isSelectedNode(node))
    -                            injectSelectionClass = " " + liSelectionClass;
    -                        if ($scope.options.isLeaf(node))
    -                            return "tree-leaf" + injectSelectionClass;
    -                        if ($scope.expandedNodesMap[this.$id])
    -                            return "tree-expanded" + injectSelectionClass;
    -                        else
    -                            return "tree-collapsed" + injectSelectionClass;
    -                    };
    - 
    -                    $scope.iBranchClass = function() {
    -                        if ($scope.expandedNodesMap[this.$id])
    -                            return classIfDefined($scope.options.injectClasses.iExpanded);
    -                        else
    -                            return classIfDefined($scope.options.injectClasses.iCollapsed);
    -                    };
    - 
    -                    $scope.nodeExpanded = function() {
    -                        return !!$scope.expandedNodesMap[this.$id];
    -                    };
    - 
    -                    $scope.selectNodeHead = function() {
    -                        var expanding = $scope.expandedNodesMap[this.$id] === undefined;
    -                        $scope.expandedNodesMap[this.$id] = (expanding ? this.node : undefined);
    -                        if (expanding) {
    -                            $scope.expandedNodes.push(this.node);
    -                        }
    -                        else {
    -                            var index;
    -                            for (var i=0; (i < $scope.expandedNodes.length) && !index; i++) {
    -                                if ($scope.options.equality($scope.expandedNodes[i], this.node)) {
    -                                    index = i;
    -                                }
    -                            }
    -                            if (index != undefined)
    -                                $scope.expandedNodes.splice(index, 1);
    -                        }
    -                        if ($scope.onNodeToggle)
    -                            $scope.onNodeToggle({node: this.node, expanded: expanding});
    -                    };
    - 
    -                    $scope.selectNodeLabel = function( selectedNode ){
    -                        if (selectedNode[$scope.options.nodeChildren] && selectedNode[$scope.options.nodeChildren].length > 0 &&
    -                            !$scope.options.dirSelectable) {
    -                            this.selectNodeHead();
    -                        }
    -                        else {
    -                            var selected = false;
    -                            if ($scope.options.multiSelection) {
    -                                var pos = -1;
    -                                for (var i=0; i < $scope.selectedNodes.length; i++) {
    -                                    if($scope.options.equality(selectedNode, $scope.selectedNodes[i])) {
    -                                        pos = i;
    -                                        break;
    -                                    }
    -                                }
    -                                if (pos === -1) {
    -                                    $scope.selectedNodes.push(selectedNode);
    -                                    selected = true;
    -                                } else {
    -                                    $scope.selectedNodes.splice(pos, 1);
    -                                }
    -                            } else {
    -                                if (!$scope.options.equality(selectedNode, $scope.selectedNode)) {
    -                                    $scope.selectedNode = selectedNode;
    -                                    selected = true;
    -                                }
    -                                else {
    -                                    $scope.selectedNode = undefined;
    -                                }
    -                            }
    -                            if ($scope.onSelection)
    -                                $scope.onSelection({node: selectedNode, selected: selected});
    -                        }
    -                    };
    - 
    -                    $scope.selectedClass = function() {
    -                        var isThisNodeSelected = isSelectedNode(this.node);
    -                        var labelSelectionClass = classIfDefined($scope.options.injectClasses.labelSelected, false);
    -                        var injectSelectionClass = "";
    -                        if (labelSelectionClass && isThisNodeSelected)
    -                            injectSelectionClass = " " + labelSelectionClass;
    - 
    -                        return isThisNodeSelected?"tree-selected" + injectSelectionClass:"";
    -                    };
    - 
    -										$scope.enableIntervalToggleOnScope = function(scope){
    -											var limitInterval = $scope.options.childrenLimitInterval*1;
    -											var timeInterval = $scope.options.childrenTimeInterval*1;
    -											
    -											scope.childrenLimit = limitInterval;
    -											$timeout(function addChildren(){
    -													if(scope.childrenLimit < (scope.node.children || []).length){
    -															scope.childrenLimit = scope.childrenLimit + limitInterval;
    -															$timeout(addChildren, timeInterval);
    -													}
    -											}, timeInterval); 
    -										};
    -										
    -                    //tree template
    -                    var orderBy = $scope.orderBy ? ' | orderBy:orderBy:reverseOrder' : '';
    -										var limitTo = $scope.options.enableIntervalToggle ? ' | limitTo:childrenLimit' : '';
    -                    var template =
    -                        '<ul '+classIfDefined($scope.options.injectClasses.ul, true)+'>' +
    -                            '<li ng-repeat="node in node.' + $scope.options.nodeChildren + ' | filter:filterExpression:filterComparator ' + orderBy + limitTo + '" ng-class="headClass(node)" '+classIfDefined($scope.options.injectClasses.li, true)+'>' +
    -                            '<i class="tree-branch-head" ng-class="iBranchClass()" ng-click="selectNodeHead(node)"></i>' +
    -                            '<i class="tree-leaf-head '+classIfDefined($scope.options.injectClasses.iLeaf, false)+'"></i>' +
    -                            '<div class="tree-label '+classIfDefined($scope.options.injectClasses.label, false)+'" ng-class="selectedClass()" ng-click="selectNodeLabel(node)" tree-transclude></div>' +
    -                            '<treeitem ng-if="nodeExpanded()"></treeitem>' +
    -                            '</li>' +
    -                            '</ul>';
    - 
    -                    this.template = $compile(template);
    -                }],
    -                compile: function(element, attrs, childTranscludeFn) {
    -                    return function ( scope, element, attrs, treemodelCntr ) {
    - 
    -                        scope.$watch("treeModel", function updateNodeOnRootScope(newValue) {
    -                            Eif (angular.isArray(newValue)) {
    -                                Iif (angular.isDefined(scope.node) && angular.equals(scope.node[scope.options.nodeChildren], newValue))
    -                                    return;
    -                                scope.node = {};
    -                                scope.synteticRoot = scope.node;
    -                                scope.node[scope.options.nodeChildren] = newValue;
    -                            }
    -                            else {
    -                                if (angular.equals(scope.node, newValue))
    -                                    return;
    -                                scope.node = newValue;
    -                            }
    -                        });
    - 
    -                        scope.$watchCollection('expandedNodes', function(newValue) {
    -                            var notFoundIds = 0;
    -                            var newExpandedNodesMap = {};
    -                            var $liElements = element.find('li');
    -                            var existingScopes = [];
    -                            // find all nodes visible on the tree and the scope $id of the scopes including them
    -                            angular.forEach($liElements, function(liElement) {
    -                                var $liElement = angular.element(liElement);
    -                                var liScope = $liElement.scope();
    -                                existingScopes.push(liScope);
    -                            });
    -                            // iterate over the newValue, the new expanded nodes, and for each find it in the existingNodesAndScopes
    -                            // if found, add the mapping $id -> node into newExpandedNodesMap
    -                            // if not found, add the mapping num -> node into newExpandedNodesMap
    -                            angular.forEach(newValue, function(newExNode) {
    -                                var found = false;
    -                                for (var i=0; (i < existingScopes.length) && !found; i++) {
    -                                    var existingScope = existingScopes[i];
    -                                    if (scope.options.equality(newExNode, existingScope.node)) {
    -                                        newExpandedNodesMap[existingScope.$id] = existingScope.node;
    -                                        found = true;
    -                                    }
    -                                }
    -                                Eif (!found)
    -                                    newExpandedNodesMap[notFoundIds++] = newExNode;
    -                            });
    -                            scope.expandedNodesMap = newExpandedNodesMap;
    -                        });
    - 
    -//                        scope.$watch('expandedNodesMap', function(newValue) {
    -//
    -//                        });
    - 
    -                        //Rendering template for a root node
    -                        treemodelCntr.template( scope, function(clone) {
    -                            element.html('').append( clone );
    -														if($scope.options.enableIntervalToggle) $scope.enableIntervalToggleOnScope(scope);
    -                        });
    -                        // save the transclude function from compile (which is not bound to a scope as apposed to the one from link)
    -                        // we can fix this to work with the link transclude function with angular 1.2.6. as for angular 1.2.0 we need
    -                        // to keep using the compile function
    -                        scope.$treeTransclude = childTranscludeFn;
    -                    }
    -                }
    -            };
    -        }])
    -        .directive("treeitem", function() {
    -            return {
    -                restrict: 'E',
    -                require: "^treecontrol",
    -                link: function( scope, element, attrs, treemodelCntr) {
    -                    // Rendering template for the current node
    -                    treemodelCntr.template(scope, function(clone) { 
    -                        element.html('').append(clone);
    -												if($scope.options.enableIntervalToggle) $scope.enableIntervalToggleOnScope(scope);
    -                    });
    -                }
    -            }
    -        })
    -        .directive("treeTransclude", function() {
    -            return {
    -                link: function(scope, element, attrs, controller) {
    -                    if (!scope.options.isLeaf(scope.node)) {
    -                        angular.forEach(scope.expandedNodesMap, function (node, id) {
    -                            if (scope.options.equality(node, scope.node)) {
    -                                scope.expandedNodesMap[scope.$id] = scope.node;
    -                                scope.expandedNodesMap[id] = undefined;
    -                            }
    -                        });
    -                    }
    -                    if (!scope.options.multiSelection && scope.options.equality(scope.node, scope.selectedNode)) {
    -                        scope.selectedNode = scope.node;
    -                    } else if (scope.options.multiSelection) {
    -                        var newSelectedNodes = [];
    -                        for (var i = 0; (i < scope.selectedNodes.length); i++) {
    -                            if (scope.options.equality(scope.node, scope.selectedNodes[i])) {
    -                                newSelectedNodes.push(scope.node);
    -                            }
    -                        }
    -                        scope.selectedNodes = newSelectedNodes;
    -                    }
    - 
    -                    // create a scope for the transclusion, whos parent is the parent of the tree control
    -                    scope.transcludeScope = scope.parentScopeOfTree.$new();
    -                    scope.transcludeScope.node = scope.node;
    -                    scope.transcludeScope.$parentNode = (scope.$parent.node === scope.synteticRoot)?null:scope.$parent.node;
    -                    scope.transcludeScope.$index = scope.$index;
    -                    scope.transcludeScope.$first = scope.$first;
    -                    scope.transcludeScope.$middle = scope.$middle;
    -                    scope.transcludeScope.$last = scope.$last;
    -                    scope.transcludeScope.$odd = scope.$odd;
    -                    scope.transcludeScope.$even = scope.$even;
    -                    scope.$on('$destroy', function() {
    -                        scope.transcludeScope.$destroy();
    -                    });
    - 
    -                    scope.$treeTransclude(scope.transcludeScope, function(clone) {
    -                        element.empty();
    -                        element.append(clone);
    -                    });
    -                }
    -            }
    -        });
    -})( angular );
    - 
    - -
    - - - - - - - - diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/index.html b/Chrome 42.0.2311 (Windows 7)/lcov-report/index.html deleted file mode 100644 index 26dec22..0000000 --- a/Chrome 42.0.2311 (Windows 7)/lcov-report/index.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - Code coverage report for .\ - - - - - - - -
    -

    Code coverage report for .\

    -

    - - Statements: 37.31% (75 / 201)      - - - Branches: 15.75% (20 / 127)      - - - Functions: 40.63% (13 / 32)      - - - Lines: 37.69% (75 / 199)      - -

    -
    All files » .\
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FileStatementsBranchesFunctionsLines
    angular-tree-control.js37.31%(75 / 201)15.75%(20 / 127)40.63%(13 / 32)37.69%(75 / 199)
    -
    -
    - - - - - - - - diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css b/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js b/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js deleted file mode 100644 index ef51e03..0000000 --- a/Chrome 42.0.2311 (Windows 7)/lcov-report/prettify.js +++ /dev/null @@ -1 +0,0 @@ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/Chrome 42.0.2311 (Windows 7)/lcov.info b/Chrome 42.0.2311 (Windows 7)/lcov.info deleted file mode 100644 index d711d54..0000000 --- a/Chrome 42.0.2311 (Windows 7)/lcov.info +++ /dev/null @@ -1,399 +0,0 @@ -TN: -SF:./angular-tree-control.js -FN:1,(anonymous_1) -FN:5,(anonymous_2) -FN:10,classIfDefined -FN:21,ensureDefault -FN:43,(anonymous_5) -FN:45,defaultIsLeaf -FN:49,shallowCopy -FN:68,defaultEquality -FN:106,isSelectedNode -FN:119,(anonymous_10) -FN:132,(anonymous_11) -FN:139,(anonymous_12) -FN:143,(anonymous_13) -FN:163,(anonymous_14) -FN:198,(anonymous_15) -FN:208,(anonymous_16) -FN:213,addChildren -FN:236,(anonymous_18) -FN:237,(anonymous_19) -FN:239,updateNodeOnRootScope -FN:254,(anonymous_21) -FN:260,(anonymous_22) -FN:268,(anonymous_23) -FN:288,(anonymous_24) -FN:300,(anonymous_25) -FN:304,(anonymous_26) -FN:306,(anonymous_27) -FN:313,(anonymous_28) -FN:315,(anonymous_29) -FN:317,(anonymous_30) -FN:346,(anonymous_31) -FN:350,(anonymous_32) -FNF:32 -FNH:13 -FNDA:1,(anonymous_1) -FNDA:62,(anonymous_2) -FNDA:252,classIfDefined -FNDA:1071,ensureDefault -FNDA:63,(anonymous_5) -FNDA:0,defaultIsLeaf -FNDA:0,shallowCopy -FNDA:0,defaultEquality -FNDA:0,isSelectedNode -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,addChildren -FNDA:63,(anonymous_18) -FNDA:63,(anonymous_19) -FNDA:2,updateNodeOnRootScope -FNDA:2,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:1,(anonymous_23) -FNDA:63,(anonymous_24) -FNDA:62,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:62,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -DA:1,1 -DA:4,1 -DA:10,1 -DA:11,252 -DA:12,44 -DA:13,22 -DA:15,22 -DA:18,208 -DA:21,1 -DA:22,1071 -DA:23,963 -DA:26,62 -DA:45,1 -DA:46,0 -DA:49,1 -DA:50,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:57,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:66,0 -DA:68,1 -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:78,63 -DA:79,63 -DA:80,63 -DA:81,63 -DA:82,63 -DA:83,63 -DA:84,63 -DA:85,63 -DA:86,63 -DA:87,63 -DA:88,63 -DA:89,63 -DA:90,63 -DA:91,63 -DA:92,63 -DA:93,63 -DA:94,63 -DA:95,63 -DA:97,63 -DA:98,63 -DA:99,63 -DA:100,63 -DA:101,10 -DA:103,63 -DA:106,1 -DA:107,0 -DA:108,0 -DA:109,0 -DA:110,0 -DA:111,0 -DA:112,0 -DA:115,0 -DA:119,63 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:129,0 -DA:132,63 -DA:133,0 -DA:134,0 -DA:136,0 -DA:139,63 -DA:140,0 -DA:143,63 -DA:144,0 -DA:145,0 -DA:146,0 -DA:147,0 -DA:150,0 -DA:151,0 -DA:152,0 -DA:153,0 -DA:156,0 -DA:157,0 -DA:159,0 -DA:160,0 -DA:163,63 -DA:164,0 -DA:166,0 -DA:169,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:182,0 -DA:185,0 -DA:186,0 -DA:187,0 -DA:190,0 -DA:193,0 -DA:194,0 -DA:198,63 -DA:199,0 -DA:200,0 -DA:201,0 -DA:202,0 -DA:203,0 -DA:205,0 -DA:208,63 -DA:209,0 -DA:210,0 -DA:212,0 -DA:213,0 -DA:214,0 -DA:215,0 -DA:216,0 -DA:222,63 -DA:223,63 -DA:224,63 -DA:234,63 -DA:237,63 -DA:239,63 -DA:240,2 -DA:241,2 -DA:242,0 -DA:243,2 -DA:244,2 -DA:245,2 -DA:248,0 -DA:249,0 -DA:250,0 -DA:254,63 -DA:255,2 -DA:256,2 -DA:257,2 -DA:258,2 -DA:260,2 -DA:261,0 -DA:262,0 -DA:263,0 -DA:268,2 -DA:269,1 -DA:270,1 -DA:271,0 -DA:272,0 -DA:273,0 -DA:274,0 -DA:277,1 -DA:278,1 -DA:280,2 -DA:288,63 -DA:289,63 -DA:290,63 -DA:295,0 -DA:301,62 -DA:306,0 -DA:307,0 -DA:308,0 -DA:314,62 -DA:316,0 -DA:317,0 -DA:318,0 -DA:319,0 -DA:320,0 -DA:324,0 -DA:325,0 -DA:326,0 -DA:327,0 -DA:328,0 -DA:329,0 -DA:330,0 -DA:333,0 -DA:337,0 -DA:338,0 -DA:339,0 -DA:340,0 -DA:341,0 -DA:342,0 -DA:343,0 -DA:344,0 -DA:345,0 -DA:346,0 -DA:347,0 -DA:350,0 -DA:351,0 -DA:352,0 -LF:199 -LH:75 -BRDA:11,1,0,44 -BRDA:11,1,1,208 -BRDA:12,2,0,22 -BRDA:12,2,1,22 -BRDA:22,3,0,963 -BRDA:22,3,1,108 -BRDA:46,4,0,0 -BRDA:46,4,1,0 -BRDA:50,5,0,0 -BRDA:50,5,1,0 -BRDA:51,6,0,0 -BRDA:51,6,1,0 -BRDA:56,7,0,0 -BRDA:56,7,1,0 -BRDA:57,8,0,0 -BRDA:57,8,1,0 -BRDA:60,9,0,0 -BRDA:60,9,1,0 -BRDA:60,10,0,0 -BRDA:60,10,1,0 -BRDA:60,11,0,0 -BRDA:60,11,1,0 -BRDA:66,12,0,0 -BRDA:66,12,1,0 -BRDA:69,13,0,0 -BRDA:69,13,1,0 -BRDA:69,14,0,0 -BRDA:69,14,1,0 -BRDA:78,15,0,63 -BRDA:78,15,1,41 -BRDA:97,16,0,63 -BRDA:97,16,1,62 -BRDA:98,17,0,63 -BRDA:98,17,1,58 -BRDA:107,18,0,0 -BRDA:107,18,1,0 -BRDA:107,19,0,0 -BRDA:107,19,1,0 -BRDA:109,20,0,0 -BRDA:109,20,1,0 -BRDA:109,21,0,0 -BRDA:109,21,1,0 -BRDA:111,22,0,0 -BRDA:111,22,1,0 -BRDA:122,23,0,0 -BRDA:122,23,1,0 -BRDA:122,24,0,0 -BRDA:122,24,1,0 -BRDA:124,25,0,0 -BRDA:124,25,1,0 -BRDA:126,26,0,0 -BRDA:126,26,1,0 -BRDA:133,27,0,0 -BRDA:133,27,1,0 -BRDA:145,28,0,0 -BRDA:145,28,1,0 -BRDA:146,29,0,0 -BRDA:146,29,1,0 -BRDA:151,30,0,0 -BRDA:151,30,1,0 -BRDA:152,31,0,0 -BRDA:152,31,1,0 -BRDA:156,32,0,0 -BRDA:156,32,1,0 -BRDA:159,33,0,0 -BRDA:159,33,1,0 -BRDA:164,34,0,0 -BRDA:164,34,1,0 -BRDA:164,35,0,0 -BRDA:164,35,1,0 -BRDA:164,35,2,0 -BRDA:170,36,0,0 -BRDA:170,36,1,0 -BRDA:173,37,0,0 -BRDA:173,37,1,0 -BRDA:178,38,0,0 -BRDA:178,38,1,0 -BRDA:185,39,0,0 -BRDA:185,39,1,0 -BRDA:193,40,0,0 -BRDA:193,40,1,0 -BRDA:202,41,0,0 -BRDA:202,41,1,0 -BRDA:202,42,0,0 -BRDA:202,42,1,0 -BRDA:205,43,0,0 -BRDA:205,43,1,0 -BRDA:214,44,0,0 -BRDA:214,44,1,0 -BRDA:214,45,0,0 -BRDA:214,45,1,0 -BRDA:222,46,0,2 -BRDA:222,46,1,61 -BRDA:223,47,0,0 -BRDA:223,47,1,63 -BRDA:240,48,0,2 -BRDA:240,48,1,0 -BRDA:241,49,0,0 -BRDA:241,49,1,2 -BRDA:241,50,0,2 -BRDA:241,50,1,0 -BRDA:248,51,0,0 -BRDA:248,51,1,0 -BRDA:270,52,0,1 -BRDA:270,52,1,0 -BRDA:272,53,0,0 -BRDA:272,53,1,0 -BRDA:277,54,0,1 -BRDA:277,54,1,0 -BRDA:290,55,0,0 -BRDA:290,55,1,0 -BRDA:308,56,0,0 -BRDA:308,56,1,0 -BRDA:316,57,0,0 -BRDA:316,57,1,0 -BRDA:318,58,0,0 -BRDA:318,58,1,0 -BRDA:324,59,0,0 -BRDA:324,59,1,0 -BRDA:324,60,0,0 -BRDA:324,60,1,0 -BRDA:326,61,0,0 -BRDA:326,61,1,0 -BRDA:329,62,0,0 -BRDA:329,62,1,0 -BRDA:339,63,0,0 -BRDA:339,63,1,0 -BRF:127 -BRH:20 -end_of_record From 9c1ccb7a272a273c346b0e3a842d1d1088f6a8a1 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 May 2015 12:47:22 -0700 Subject: [PATCH 3/5] edited --- bower.json | 4 ++-- package.json | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bower.json b/bower.json index 8eb1295..7abb4a8 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { - "name": "angular-tree-control", - "version": "0.2.9", + "name": "angular-tree-control-smooth-expand", + "version": "0.3.0", "main": [ "./angular-tree-control.js", "./css/tree-control.css" diff --git a/package.json b/package.json index 0197800..af07128 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "angular-tree-control", + "name": "angular-tree-control-smooth-expand", "version": "0.2.0", "description": "Angular Tree Control", "main": "angular-tree-control.js", @@ -8,14 +8,14 @@ }, "repository": { "type": "git", - "url": "git://github.com/wix/angular-tree-control.git" + "url": "git://github.com/ssteffl/angular-tree-control.git" }, "author": "", "license": "ISC", "bugs": { - "url": "https://github.com/wix/angular-tree-control/issues" + "url": "https://github.com/ssteffl/angular-tree-control-smooth-expand/issues" }, - "homepage": "https://github.com/wix/angular-tree-control", + "homepage": "https://github.com/ssteffl/angular-tree-control-smooth-expand", "devDependencies": { "grunt": "~0.4.2", "grunt-release": "~0.6.0", From 78e74373a7ab1b22bdbeadcd5fc027513edb0568 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 May 2015 12:56:03 -0700 Subject: [PATCH 4/5] a --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index af07128..67f056f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-tree-control-smooth-expand", - "version": "0.2.0", + "version": "0.3.0", "description": "Angular Tree Control", "main": "angular-tree-control.js", "scripts": { From 322782f29205a70cc546aaffc55f463df86f7929 Mon Sep 17 00:00:00 2001 From: ssteffl Date: Fri, 15 May 2015 13:07:17 -0700 Subject: [PATCH 5/5] Update bower.json --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index 7abb4a8..113b99f 100644 --- a/bower.json +++ b/bower.json @@ -12,7 +12,7 @@ "karma.conf.js" ], "dependencies": { - "angular": "~1.2.7" + "angular": "~1.3.15" }, "devDependencies": { "angular-mocks": "~1.2.7",