| <!-- |
| 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 class="qdrTopology row-fluid" ng-controller="QDR.TopologyController"> |
| <div class="qdr-topology pane left" ng-controller="QDR.TopologyFormController"> |
| <div id="topologyForm" ng-class="{selected : isSelected()}"> |
| <!-- <div ng-repeat="form in forms" ng-show="isVisible(form)" ng-class='{selected : isSelected(form)}'> --> |
| <div ng-show="form == 'router'"> |
| <h4>Router Info</h4> |
| <div class="gridStyle" ng-grid="topoGridOptions"></div> |
| </div> |
| <div ng-show="form == 'connection'"> |
| <h4>Connection Info</h4> |
| <div class="gridStyle" ng-grid="topoGridOptions"></div> |
| </div> |
| <div id="addNodeForm" ng-show="form == 'add'"> |
| <h4>Add a new router</h4> |
| <ul> |
| <li>Click on an existing router to create a connection to the new router</li> |
| <li>Double-click on the new router to <button ng-click="editNewRouter()">edit</button> its properties</li> |
| <li ng-show="addingNode.hasLink" >Right-click on a new connection to edit its properties</li> |
| </ul> |
| <button ng-click="cancel()">Cancel</button> |
| </div> |
| </div> |
| </div> |
| <div class="panel-adjacent"> |
| |
| <!-- |
| <ul class="nav nav-tabs ng-scope qdrTopoModes"> |
| <li ng-repeat="mode in modes" ng-class="{active : isModeActive(mode.name), 'pull-right' : isRight(mode)}" ng-click="selectMode('{{mode.name}}')" > |
| <a data-placement="bottom" class="ng-binding"> {{mode.name}} </a></li> |
| </ul> |
| --> |
| <div id="topology" ng-show="mode == 'Diagram'"><!-- d3 toplogy here --></div> |
| <div id="crosssection"><!-- d3 pack here --></div> |
| <div id="node_context_menu" class="contextMenu"> |
| <ul> |
| <li class="na" ng-class="{new: contextNode.cls == 'temp'}" ng-click="addingNode.trigger = 'editNode'">Edit...</li> |
| <li class="na" ng-class="{adding: addingNode.step > 0}" ng-click="addingNode.step = 0">Cancel add</li> |
| <li class="context-separator"></li> |
| <li class="na" ng-class="{'force-display': !isFixed()}" ng-click="setFixed(true)">Freeze in place</li> |
| <li class="na" ng-class="{'force-display': isFixed()}" ng-click="setFixed(false)">Unfreeze</li> |
| </ul> |
| </div> |
| <div id="svg_context_menu" class="contextMenu"> |
| <ul> |
| <li ng-click="addingNode.step = 2">Add a new router</li> |
| </ul> |
| </div> |
| <div id="link_context_menu" class="contextMenu"> |
| <ul> |
| <li ng-click="reverseLink()">Reverse connection direction</li> |
| <li ng-click="removeLink()">Remove connection</li> |
| </ul> |
| </div> |
| <div id="svg_legend"></div> |
| <div id="multiple_details"> |
| <div class="gridStyle" ng-grid="multiDetails"></div> |
| </div> |
| <div id="link_details"> |
| <div class="gridStyle" ng-grid="linkDetails"></div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <script type="text/ng-template" id="titleHeaderCellTemplate.html"> |
| <div title="{{col.displayName}}" class="ngHeaderSortColumn {{col.headerClass}}" ng-style="{'cursor': col.cursor}" ng-class="{ 'ngSorted': !noSortVisible }"> |
| <div ng-click="col.sort($event)" ng-class="'colt' + col.index" class="ngHeaderText">{{col.displayName}}</div> |
| <div class="ngSortButtonDown" ng-show="col.showSortButtonDown()"></div> |
| <div class="ngSortButtonUp" ng-show="col.showSortButtonUp()"></div> |
| <div class="ngSortPriority">{{col.sortPriority}}</div> |
| </div> |
| </script> |
| <script type="text/ng-template" id="titleCellTemplate.html"> |
| <div title="{{row.entity[col.field]}}" class="ngCellText">{{row.entity[col.field]}}</div> |
| </script> |
| |
| <!-- |
| This is the template for the node edit dialog that is displayed. |
| --> |
| <script type="text/ng-template" id="node-config-template.html"> |
| <div class="modal-header"> |
| <h3 class="modal-title">Configure new router</h3> |
| </div> |
| <div class="modal-body"> |
| <form novalidate name="editForm"> |
| |
| <tabset vertical="true" class="tabs-left"> |
| <tab ng-repeat="entity in entities"> <!-- ng-class="{separated: entity.tabName == 'listener0'}" --> |
| <tab-heading> |
| <i ng-if="entity.icon !== ''" ng-class="entity.icon ? 'ui-icon-arrowthick-1-w' : 'ui-icon-arrowthick-1-e'" class="ui-icon"></i>{{entity.humanName}} |
| </tab-heading> |
| <div class="entity-description">{{entity.description}}</div> |
| <fieldset> |
| <div ng-mouseenter="showDescription(attribute, $event)" ng-repeat="attribute in entity.attributes"> |
| <label for="{{attribute.name}}">{{attribute.humanName}}</label> |
| <!-- we can't do <input type="{angular expression}"> because... jquery throws an exception because... --> |
| <div ng-if="attribute.input == 'input'"> |
| <!-- ng-pattern="testPattern(attribute)" --> |
| <input ng-if="attribute.type == 'number'" type="number" name="{{attribute.name}}" id="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" class="ui-widget-content ui-corner-all"/> |
| <input ng-if="attribute.type == 'text'" type="text" name="{{attribute.name}}" id="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" class="ui-widget-content ui-corner-all"/> |
| </div> |
| <div ng-if="attribute.input == 'select'"> |
| <select id="{{attribute.name}}" ng-model="attribute.selected" ng-options="item for item in attribute.rawtype"></select> |
| </div> |
| <div ng-if="attribute.input == 'boolean'" class="boolean"> |
| <label><input type="radio" ng-model="attribute.value" value="true"> True</label> |
| <label><input type="radio" ng-model="attribute.value" value="false"> False</label> |
| </div> |
| </div> |
| </fieldset> |
| <div class="attr-description">{{attributeDescription}} |
| <div class="attr-type">{{attributeType}}</div> |
| <div class="attr-required">{{attributeRequired}}</div> |
| <div class="attr-unique">{{attributeUnique}}</div> |
| </div> |
| <div class="attr-annotations" ng-repeat="annotation in entity.annotatedBy"> |
| <span>You can also enter the <button ng-click="selectAnnotationTab(annotation)">{{annotation}}</button> values.</span> |
| </div> |
| </tab> |
| </tabset> |
| |
| |
| </form> |
| </div> |
| <div class="modal-footer"> |
| <button class="btn btn-primary" type="button" ng-click="download()">Download</button> |
| <button class="btn btn-warning" type="button" ng-click="cancel()">Cancel</button> |
| </div> |
| </script> |
| |
| <script type="text/ng-template" id="config-file-header.html">## |
| ## 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 |
| ## |
| </script> |
| |
| <script type="text/ng-template" id="download-dialog-template.html"> |
| <div class="modal-header"> |
| <h3 class="modal-title">Configure new router</h3> |
| </div> |
| <div class="modal-body"> |
| |
| <label title="Show descriptions and default values in confile files"><input type="checkbox" ng-model="verbose"> Verbose output</label> |
| <div> |
| <button ng-click="download()">Download</button> |
| <button class="btn" zero-clipboard data-clipboard-text="{{output}}" title="Copy to clipboard"> |
| <i class="icon-copy"></i> |
| </button> configuration file for {{newRouterName}} |
| </div> |
| <div ng-repeat="part in parts"> |
| <button ng-click="downloadPart(part)">Download</button> |
| <button class="btn" zero-clipboard data-clipboard-text="{{part.output}}" title="Copy to clipboard"> |
| <i class="icon-copy"></i> |
| </button> connector section for {{part.name}} |
| </div> |
| |
| </div> |
| <div class="modal-footer"> |
| <button class="btn btn-primary" type="button" ng-click="done()">Done</button> |
| </div> |
| |
| <!-- |
| |
| <div title="Configure new router"> |
| |
| <label title="Show descriptions and default values in confile files"><input type="checkbox" ng-model="verbose"> Verbose output</label> |
| <div> |
| <button ng-click="download()">Download</button> |
| <button class="btn" zero-clipboard data-clipboard-text="{{output}}" title="Copy to clipboard"> |
| <i class="icon-copy"></i> |
| </button> configuration file for {{newRouterName}} |
| </div> |
| <div ng-repeat="part in parts"> |
| <button ng-click="downloadPart(part)">Download</button> |
| <button class="btn" zero-clipboard data-clipboard-text="{{part.output}}" title="Copy to clipboard"> |
| <i class="icon-copy"></i> |
| </button> connector section for {{part.name}} |
| </div> |
| |
| <div class="okButton"> |
| <button ng-click="done()">Done</button> |
| </div> |
| |
| </div> |
| --> |
| </script> |
| |