<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div id="logging" class="clearfix">


  <div id="frame">

    <div class="block">
      <h2><span>{{watcher}}</span></h2>
      <ul class="tree jstree">
        <li class="jstree-leaf level-{{logger.level.toLowerCase()}}" ng-class="{'jstree-last':$last}" ng-repeat="logger in logging" ng-include="'logger.html'"></li>
      </ul>
    </div>
  </div>
</div>

  <script type="text/ng-template"  id="logger.html">
      <ins class="trigger jstree-icon">&nbsp;</ins>
      <a ng-click="toggleOptions(logger)" class="trigger {{logger.level.toLowerCase() }}" ng-class="{null:!logger.level, set: logger.set}" title="{{ logger.name }}" rel="{{logger.level}}">
        <span class="ns">{{logger.name}}</span>
        <span class="name" ng-show="logger.short">{{ logger.short }}</span>
        <span class="name" ng-show="!logger.short"><em>empty</em></span>
      </a>

      <div class="selector-holder" ng-class="{open:logger.showOptions}">
        <div class="selector">
          <a class="trigger" ng-click="toggleOptions(logger)"><span><em>{{logger.level || "null"}}</em></span></a>
          <div ng-show="logger.showOptions">
          <ul>
            <li ng-repeat="level in levels track by level.pos">
              <a ng-click="setLevel(logger, level.name)">{{level.name}}</a>
            </li>
            <li class="unset"><a ng-click="setLevel(logger, 'unset')">UNSET</a></li>
          </ul>
          <a class="close" ng-click="toggleOptions(logger)"><span>[x]</span></a>
          </div>
        </div>
      </div>
      <ul>
        <li class="jstree-leaf level-{{logger.level.toLowerCase()}}" ng-class="{'jstree-last':$last}" ng-repeat="logger in logger.children" ng-include="'logger.html'"></li>
      </ul>
  </script>
