3d1428042e3cf50b4300487d58a3e54bc6b353d6
[ccsdk/apps.git] / sdnr / wireless-transport / code-Carbon-SR1 / ux / help / help-module / src / main / resources / help / help.tree.ts
1 import * as angular from 'angularAMD';
2
3 export interface Node {
4   label?: string,
5   nodes?: Node[],
6   versions?: {
7     [version: string]: { 
8       label: string,
9       date: string,
10       path: string
11     }
12   } 
13 }
14
15 const help = angular.module('app.help');
16
17 // class HelpTreeController implements ng.IController {
18 //   constructor(private $scope: ng.IScope & { rootNode: Node, data: Node[]}) {
19 //     $scope.$watch("rootNode", (n, o) => {
20 //       $scope.data = Object.keys($scope.rootNode).map(key => $scope.rootNode[key]);
21 //     });
22 //   }
23 // }
24
25 // help.controller("treeCtrl", ["$scope", HelpTreeController]);
26
27 const helpTree = function ($compile) {
28   return {
29     restrict: "E",
30     transclude: true,
31     scope: { rootNode: '=' },
32     //controller: 'treeCtrl',
33     template:
34       '<ul>' +
35       '<li ng-transclude></li>' +
36       '<li ng-repeat="child in rootNode.nodes">' +
37       '<tree root-node="child"><div ng-transclude></div></tree>' +
38       '</li>' +
39       '</ul>',
40     compile: function (tElement, tAttr, transclude) {
41       var contents = tElement.contents().remove();
42       var compiledContents;
43       return function (scope, iElement, iAttr) {
44         if (!compiledContents) {
45           compiledContents = $compile(contents, transclude);
46         }
47         compiledContents(scope, function (clone, scope) {
48           iElement.append(clone);
49         });
50       };
51     }
52   };
53 };
54
55 help.directive("tree", ["$compile", helpTree]);