http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4940e63d/console/plugin/lib/slider.js
----------------------------------------------------------------------
diff --git a/console/plugin/lib/slider.js b/console/plugin/lib/slider.js
deleted file mode 100644
index 1f0dd1d..0000000
--- a/console/plugin/lib/slider.js
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- jQuery UI Slider plugin wrapper
-
-    Source: https://github.com/angular-ui/ui-slider/blob/master/src/slider.js
-       License: MIT
-
-*/
-angular.module('ui.slider', 
[]).value('uiSliderConfig',{}).directive('uiSlider', ['uiSliderConfig', 
'$timeout', function(uiSliderConfig, $timeout) {
-    uiSliderConfig = uiSliderConfig || {};
-    return {
-        require: 'ngModel',
-        compile: function() {
-            var preLink = function (scope, elm, attrs, ngModel) {
-
-                function parseNumber(n, decimals) {
-                    return (decimals) ? parseFloat(n) : parseInt(n, 10);
-                }
-
-                var options = angular.extend(scope.$eval(attrs.uiSlider) || 
{}, uiSliderConfig);
-                // Object holding range values
-                var prevRangeValues = {
-                    min: null,
-                    max: null
-                };
-
-                // convenience properties
-                var properties = ['min', 'max', 'step'];
-                var useDecimals = (!angular.isUndefined(attrs.useDecimals)) ? 
true : false;
-
-                var init = function() {
-                    // When ngModel is assigned an array of values then range 
is expected to be true.
-                    // Warn user and change range to true else an error occurs 
when trying to drag handle
-                    if (angular.isArray(ngModel.$viewValue) && options.range 
!== true) {
-                        console.warn('Change your range option of ui-slider. 
When assigning ngModel an array of values then the range option should be set 
to true.');
-                        options.range = true;
-                    }
-
-                    // Ensure the convenience properties are passed as options 
if they're defined
-                    // This avoids init ordering issues where the slider's 
initial state (eg handle
-                    // position) is calculated using widget defaults
-                    // Note the properties take precedence over any duplicates 
in options
-                    angular.forEach(properties, function(property) {
-                        if (angular.isDefined(attrs[property])) {
-                            options[property] = parseNumber(attrs[property], 
useDecimals);
-                        }
-                    });
-
-                    elm.slider(options);
-                    init = angular.noop;
-                };
-
-                // Find out if decimals are to be used for slider
-                angular.forEach(properties, function(property) {
-                    // support {{}} and watch for updates
-                    attrs.$observe(property, function(newVal) {
-                        if (!!newVal) {
-                            init();
-                            options[property] = parseNumber(newVal, 
useDecimals);
-                            elm.slider('option', property, parseNumber(newVal, 
useDecimals));
-                            ngModel.$render();
-                        }
-                    });
-                });
-                attrs.$observe('disabled', function(newVal) {
-                    init();
-                    elm.slider('option', 'disabled', !!newVal);
-                });
-
-                // Watch ui-slider (byVal) for changes and update
-                scope.$watch(attrs.uiSlider, function(newVal) {
-                    init();
-                    if(newVal !== undefined) {
-                      elm.slider('option', newVal);
-                    }
-                }, true);
-
-                // Late-bind to prevent compiler clobbering
-                $timeout(init, 0, true);
-
-                // Update model value from slider
-                elm.bind('slide', function(event, ui) {
-                    ngModel.$setViewValue(ui.values || ui.value);
-                    scope.$apply();
-                });
-
-                // Update slider from model value
-                ngModel.$render = function() {
-                    init();
-                    var method = options.range === true ? 'values' : 'value';
-
-                    if (!options.range && isNaN(ngModel.$viewValue) && 
!(ngModel.$viewValue instanceof Array)) {
-                        ngModel.$viewValue = 0;
-                    }
-                    else if (options.range && 
!angular.isDefined(ngModel.$viewValue)) {
-                            ngModel.$viewValue = [0,0];
-                    }
-
-                    // Do some sanity check of range values
-                    if (options.range === true) {
-
-                        // Check outer bounds for min and max values
-                        if (angular.isDefined(options.min) && options.min > 
ngModel.$viewValue[0]) {
-                            ngModel.$viewValue[0] = options.min;
-                        }
-                        if (angular.isDefined(options.max) && options.max < 
ngModel.$viewValue[1]) {
-                            ngModel.$viewValue[1] = options.max;
-                        }
-
-                        // Check min and max range values
-                        if (ngModel.$viewValue[0] > ngModel.$viewValue[1]) {
-                            // Min value should be less to equal to max value
-                            if (prevRangeValues.min >= ngModel.$viewValue[1]) {
-                                ngModel.$viewValue[0] = prevRangeValues.min;
-                            }
-                            // Max value should be less to equal to min value
-                            if (prevRangeValues.max <= ngModel.$viewValue[0]) {
-                                ngModel.$viewValue[1] = prevRangeValues.max;
-                            }
-                        }
-
-                        // Store values for later user
-                        prevRangeValues.min = ngModel.$viewValue[0];
-                        prevRangeValues.max = ngModel.$viewValue[1];
-
-                    }
-                    elm.slider(method, ngModel.$viewValue);
-                };
-
-                scope.$watch(attrs.ngModel, function() {
-                    if (options.range === true) {
-                        ngModel.$render();
-                    }
-                }, true);
-
-                function destroy() {
-                    elm.slider('destroy');
-                }
-                scope.$on("$destroy", function() {
-                    destroy();
-                });
-            };
-
-            var postLink = function (scope, element, attrs, ngModel) {
-                // Add tick marks if 'tick' and 'step' attributes have been 
setted on element.
-                // Support horizontal slider bar so far. 'tick' and 'step' 
attributes are required.
-                var options = angular.extend({}, scope.$eval(attrs.uiSlider));
-                var properties = ['max', 'step', 'tick'];
-                angular.forEach(properties, function(property) {
-                    if (angular.isDefined(attrs[property])) {
-                        options[property] = attrs[property];
-                    }
-                });
-                if (angular.isDefined(options['tick']) && 
angular.isDefined(options['step'])) {
-                    var gaps = 
parseInt(parseInt(options['max'])/parseInt(options['step'])) - 1;
-                    if (gaps > 0) {
-                        for (var i = 0; i<= gaps; ++i) {
-                            var left = ((i / gaps) * 100) + '%';
-                            
$("<div/>").addClass("ui-slider-tick").appendTo(element).css({left: left});
-                        };
-                    }
-                }
-            }
-
-            return {
-                pre: preLink,
-                post: postLink
-            };
-        }
-    };
-}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4940e63d/console/stand-alone/plugin/css/plugin.css
----------------------------------------------------------------------
diff --git a/console/stand-alone/plugin/css/plugin.css 
b/console/stand-alone/plugin/css/plugin.css
new file mode 100644
index 0000000..5097d64
--- /dev/null
+++ b/console/stand-alone/plugin/css/plugin.css
@@ -0,0 +1,658 @@
+/*
+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.
+*/
+main-display > .span8 {
+  height: 100%;
+  position: relative;
+}
+
+.nickname-window,
+.channel-window,
+.main-window {
+  position: absolute;
+  top: 2px;
+  bottom: 2px;
+  left: 4px;
+  right: 4px;
+  /* border: 1px solid #d4d4d4;
+  border-radius: 4px;*/
+  overflow-y: auto;
+  overflow-x: hidden;
+}
+
+.nickname-window > .nickname-window-inner,
+.channel-window > .channel-window-inner,
+.main-window > .main-window-inner {
+  position: static;
+}
+
+.channel-window-inner > ul > li {
+  cursor: pointer;
+  padding: 0;
+  border-bottom: 1px solid #EEEEEE;
+}
+
+
+.channel-window-inner > ul > li > span:hover {
+  background-color: #EAEAEA;
+}
+
+ul.qdrListNodes > li > span {
+  padding: 6px 20px; 6px; 6px;
+  display: block;
+}
+
+.qdrList .gridStyle {
+    width: 20em;
+    margin-right: 0;
+    float: left;
+}
+
+
+.qdrList div.gridDetails {
+
+    width: auto;
+}
+
+.selectedItems {
+    margin-left: 21em;
+}
+
+.qdrListPane {
+    top: 110px;
+}
+
+.qdrListActions {
+    width: auto;
+}
+
+.nickname-window-inner > ul > li {
+  cursor: pointer;
+}
+
+.channel-window {
+  bottom: 40px;
+}
+
+.main-window {
+  border: none;
+  top: 46px;
+  bottom: 46px;
+}
+
+.main-window.no-topic {
+  top: 2px;
+}
+
+.topic-window {
+  position: absolute;
+  left: 10px;
+  right: 10px;
+  top: 2px;
+  height: 20px;
+  overflow: hidden;
+  z-index: 50;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+  border-left: 1px solid #d4d4d4;
+  border-right: 1px solid #d4d4d4;
+  border-bottom: 1px solid #d4d4d4;
+  background: white;
+  padding: 10px;
+}
+
+.input-widget {
+  background: white;
+  position: absolute;
+  bottom: 2px;
+  left: 2px;
+  right: 2px;
+  height: 40px;
+  z-index: 50;
+}
+
+.input-widget > form {
+  position: relative;
+}
+
+.input-widget > form > div {
+  position: absolute;
+  left: 2px;
+  top: 2px;
+  bottom: 2px;
+  right: 84px;
+}
+
+.input-widget > form > div > input[type="text"] {
+  width: 100%;
+}
+
+.input-widget > form > input[type="submit"] {
+  position: absolute;
+  right: 2px;
+  top: 3px;
+}
+
+.input-widget > form > input {
+  margin-bottom: 0;
+}
+
+.channel-control-buttons {
+  position: absolute;
+  background: white;
+  bottom: 2px;
+  left: 2px;
+  right: 2px;
+  z-index: 50;
+}
+
+div.listAttrName {
+    padding-top: 5px;
+}
+
+div.listAttrName i.icon-bar-chart {
+    float: right;
+    margin: 5px;
+}
+
+div.listAttrName i.icon-bar-chart.active, div.hastip i.icon-bar-chart.active, 
li.haschart i {
+    background-color: #AAFFAA;
+}
+
+div#main div ul.nav li a:not(.btn) {
+    background: initial !important;
+}
+
+div#main div ul.nav li.active a {
+    background-color: #f0f0ff !important;
+}
+
+div#main.qdr {
+    margin-top: 44px !important;
+}
+
+div.charts-header {
+  font-size: 1.2em;
+  color: #666666;
+  margin: 1em 0;
+}
+
+.selectedNode, .selectedAction, .selectedEntity {
+    font-weight: 600;
+    color: #606066;
+}
+
+.okButton {
+    text-align: center;
+    margin: 1em;
+}
+
+span.showChartsLink {
+    border: 1px solid blue;
+    padding: 1px 2px;
+}
+
+div.listGraphs p {
+    margin: 1em 0 2em 2em;
+    text-align: center;
+}
+
+div.centered {
+    text-align: center;
+    margin: 4em;
+}
+
+.modal-body.centered {
+       margin: 0;
+}
+
+div.aChart {
+    height: 200px;
+    width:  400px;
+    margin: 1em;
+}
+
+div.chartContainer {
+    float: left;
+}
+
+div.d3Chart path {
+    stroke: black;
+    stroke-width: 1;
+       opacity: 0.5;
+}
+
+div.d3Chart path.line {
+    stroke: steelblue;
+    stroke-width: 1;
+    fill: none;
+    opacity: 1;
+}
+
+.mo-rect {
+    fill: #ffffdd;
+    stroke: #f0f0f0;
+    stroke-width: 1;
+}
+
+.mo-guide {
+    fill: none;
+    stroke: #d0d0d0;
+    stroke-width: 2;
+    stroke-dasharray: 3,3;
+}
+
+div.d3Chart .title {
+    text-decoration: underline;
+}
+
+
+.axis line, .axis path {
+  fill: none;
+  shape-rendering: crispEdges;
+  stroke-width: 1;
+  stroke: #000000;
+}
+
+.axis line {
+  stroke: #C0C0C0;
+  stroke-dasharray: 1,1;
+  opacity: 0.5;
+}
+
+.y.axis text, .x.axis text, .focus text, div.d3Chart .title {
+    font-size: 12px;
+}
+
+.y.axis path {
+   stroke: #000;
+ }
+
+.overlay {
+   fill: none;
+   pointer-events: all;
+ }
+
+.focus circle {
+   fill: none;
+   stroke: steelblue;
+ }
+.focus .fo-table {
+       /* box-shadow: 2px 2px 3px #EEE; */
+}
+
+div.d3Chart {
+    padding: 1em 0;
+    border: 1px solid #C0C0C0;
+}
+
+div.d3Chart .axis path {
+       display: inherit;
+}
+.c3-circle {
+       display: none;
+}
+
+.fo-table {
+       border: 1px solid darkgray;
+       background-color: white;
+       font-size: .85em;
+}
+
+.fo-table td {
+       padding: 4px;
+       border-left: 1px solid darkgray;
+}
+.fo-table tr.detail td {
+       padding: 1px 4px;
+}
+.fo-title {
+       color: white;
+       background-color: darkgray;
+}
+
+.fo-table-legend {
+       width: 8px;
+       height: 8px;
+       border: 1px solid black;
+       margin: 0 4px;
+       display: inline-block;
+}
+
+svg .legend {
+       dominant-baseline: central;
+}
+
+div.chartContainer div.aChart {
+    margin-top: 0.5em;
+}
+
+div#main.qdr div ul.nav li.active a {
+  background-color: #e0e0ff !important;
+  color: #000000;
+}
+
+div#main.qdr .selected, .box.selected {
+  color: #000000;
+  text-shadow: none;
+}
+
+/* the selected node on the list page */
+div.qdrList li.active {
+    background-color: #e0e0ff;
+}
+
+/* the selected row in the name table */
+div#main.qdr div.qdrList div.selected {
+  background-color: #e0e0ff !important;
+}
+
+#dialogChart {
+    height: 200px;
+}
+
+div.qdrCharts p.chartLabels button {
+    float: right;
+}
+
+div.qdrCharts p.chartLabels {
+     padding-right: 1em;;
+ }
+
+p.dialogHeader {
+    text-align: center;
+}
+
+p.dialogHeader input {
+    margin-top: 10px;
+    width: 480px;
+}
+
+.ui-slider-tick {
+  position: absolute;
+  background-color: #666;
+  width: 2px;
+  height: 8px;
+  top: 12px;
+  z-index: -1;
+}
+
+label.rateGroup {
+    float: left;
+}
+
+div.chartOptions div.dlg-slider {
+    float: left;
+    margin-left: 2em;
+    width: 28em;
+    font-size: 14px;
+}
+
+div.chartOptions div.duration {
+  width: 35em !important;
+}
+
+div.chartOptions .slider {
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+input[type="radio"] {
+    margin-top: 0 !important;
+}
+
+div.chartOptions legend {
+    font-size: 1.2em;
+    margin-bottom: 10px;
+}
+
+div.chartOptions span.minicolors-swatch {
+    width: 14px;
+    height: 14px;
+}
+
+.minicolors-input {
+    width: 4em;
+    padding: 0 0 0 24px !important;
+}
+
+
+div.colorPicker div:nth-of-type(1), /* first span under div.colorPicker */
+ div.minicolors{
+    float:left;
+    margin-right: 0.5em;
+}
+
+div.chartOptions p.sep {
+    height: 1em;
+}
+
+ul.nav-tabs {
+    border-bottom: 1px solid #ddd !important;
+}
+
+.chartOptions ul.nav-tabs {
+    margin-bottom: 0px !important;
+}
+
+div.tabbable div.tab-content {
+    overflow: visible;
+}
+
+div.tabbable ul.nav-tabs > .active > a {
+  background-color: #f8f8f8;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+
+
+div.tabbable .tab-pane {
+    background-color: #f8f8f8;
+    padding: 12px;
+    border-right: 1px solid #ddd;
+    border-left: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+}
+
+div.tabbable ul.nav-tabs {
+  margin-bottom: 0;
+}
+
+ul.qdrTopoModes {
+    position: relative;
+    top: -10px;
+}
+.overview.section {
+       /* width: 35em; */
+}
+.overview.section .ngGrid {
+       height: 12em !important;
+       min-height: 12em !important;
+}
+
+.overview.routers.section .ngGrid {
+       height: 16em !important;
+       min-height: 16em !important;
+}
+.overview.routers.section {
+       /*width: 15em; */
+ }
+
+.grid-align-value {
+       text-align: right;
+}
+
+.overview .ngRow:hover {
+       background:#e0e0ff;
+}
+
+.treeContainer {
+       width: 250px;
+       float: left;
+}
+
+.treeDetails {
+       margin-left: 260px;
+}
+
+.gridStyle:not(.noHighlight) .ui-grid-row:hover .ui-grid-cell-contents {
+       background-color: #e0e0ff;
+}
+
+.ngCellText {
+       padding: 4px 0 0 4px;
+}
+
+.overview {
+       border-bottom: 1px solid #d4d4d4;
+}
+
+.ui-grid-row.ui-grid-row-selected > [ui-grid-row] > .ui-grid-cell {
+  background-color: #e0e0ff;
+}
+
+.tab-content .tab-pane {
+    background-color: #f8f8f8;
+    padding: 12px;
+    border-right: 1px solid #ddd;
+    border-left: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+}
+
+div.chartOptions ul.nav-tabs > .active > a {
+  background-color: #f8f8f8;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+
+div.chartOptions label:nth-of-type(2) {
+    margin-left: 1em;
+}
+div.chartOptions label {
+       font-weight: normal;
+}
+
+.form-horizontal .control-label {
+    float: left;
+    width: 160px;
+    padding-top: 5px;
+    text-align: right;
+}
+
+.form-horizontal .controls {
+    margin-left: 180px;
+}
+
+.form-horizontal input,  {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+}
+
+input[type="text"], input[type="number"], input[type="password"] {
+    background-color: #ffffff;
+    border: 1px solid #cccccc;
+    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+    -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+    -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+    -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+    -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+    transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+
+input[type="text"], input[type="number"], input[type="password"] {
+    display: inline-block;
+    width: 200px;
+    padding: 4px 6px;
+    margin-bottom: 10px;
+    font-size: 14px;
+    line-height: 20px;
+    color: #555555;
+    vertical-align: middle;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
+}
+
+.login input[type="checkbox"] {
+       margin-top: 0.75em;
+}
+
+#login-container {
+       width: 18.5em;
+       margin-top: 2em;
+}
+
+div.login.container {
+       width: 550px;
+}
+
+#overtree .fancytree-container {
+       border: 0px;
+}
+
+#overtree span.fancytree-alert-icon.ui-icon-refresh {
+       background-position: -64px -80px;
+}
+#overtree span.fancytree-alert-icon.ui-icon-transfer-e-w {
+       background-position: -112px -80px;
+}
+
+#alerts {
+       position: fixed;
+       right: 0;
+       top: 0;
+       z-index: 100;
+}
+
+.alert-enter,
+.alert-leave,
+.alert-move {
+  -webkit-transition: 1s linear all;
+  -moz-transition: 1s linear all;
+  -o-transition: 1s linear all;
+  transition: 1s linear all;
+  position:relative;
+}
+
+.alert-enter {
+  left:-10px;
+  opacity:0;
+}
+.alert-enter.alert-enter-active {
+  left:0;
+  opacity:1;
+}
+
+.alert-leave {
+  left:0;
+  opacity:1;
+}
+.alert-leave.alert-leave-active {
+  left:-10px;
+  opacity:0;
+}
+
+.alert-move {
+  opacity:0.5;
+}
+.alert-move.alert-move-active {
+  opacity:1;
+}
+

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4940e63d/console/stand-alone/plugin/css/qdrTopology.css
----------------------------------------------------------------------
diff --git a/console/stand-alone/plugin/css/qdrTopology.css 
b/console/stand-alone/plugin/css/qdrTopology.css
new file mode 100644
index 0000000..e1cf239
--- /dev/null
+++ b/console/stand-alone/plugin/css/qdrTopology.css
@@ -0,0 +1,498 @@
+/*
+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.
+*/
+
+svg {
+  background-color: transparent;
+  cursor: default;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  user-select: none;
+}
+
+svg:not(.active):not(.ctrl) {
+  cursor: crosshair;
+}
+#end-arrow-selected, #start-arrow-selected {
+       stroke: #00F;
+       fill: #00F;
+}
+
+path.link {
+  fill: none;
+  stroke: #000;
+  stroke-width: 4px;
+  cursor: default;
+}
+
+svg:not(.active):not(.ctrl) path.link {
+  cursor: pointer;
+}
+
+path.link.selected {
+  stroke-dasharray: 10,2;
+  stroke: #00F  !important;
+}
+
+
+path.link.highlighted {
+    stroke: #0F0 !important;
+
+}
+
+path.link.temp {
+  opacity: 0.3;
+}
+path.link.temp.over {
+  opacity: 0.8;
+  stroke-dasharray: 10,2;
+}
+
+path.link.dragline {
+  pointer-events: none;
+}
+
+path.link.hidden {
+  stroke-width: 0;
+}
+
+
+circle.node {
+    stroke-width: 1.5px;
+    cursor: pointer;
+    stroke: darkgray;
+    fill: lightgray;
+}
+
+circle.node.reflexive {
+    stroke: #F00 !important;
+    stroke-width: 2.5px;
+}
+circle.node.selected {
+    stroke: #F00 !important;
+    stroke-width: 2px;
+    fill: #e0e0ff !important;
+}
+circle.node.inter-router {
+    fill: #EAEAEA;
+}
+circle.node.normal {
+    fill: #F0F000;
+}
+circle.node.on-demand {
+    fill: #00F000;
+}
+
+circle.node.fixed {
+    stroke-dasharray: 10,2;
+}
+circle.node.temp {
+    stroke: #f80;
+    fill: #f0f0ff;
+}
+
+text {
+  font: 12px sans-serif;
+  pointer-events: none;
+  /*font-family: monospace;*/
+
+}
+
+.tooltipsy
+{
+    padding: 10px;
+/*    max-width: 320px;*/
+    color: #303030;
+    background-color: #fcfcfe;
+    border: 1px solid #deca7e;
+    border-radius: 5px;
+}
+
+.tiptable {
+
+}
+.tiptable tr {
+       border-bottom: 1px solid #ccc;
+}
+
+.tiptable tr:last-child {
+       border-bottom: 0px;
+}
+
+.tiptable tr:nth-child(even) {
+       background: #fcfcfe;
+}
+.tiptable tr:nth-child(odd) {
+       background: #FFF
+}
+
+text.id {
+  text-anchor: middle;
+  font-weight: bold;
+}
+
+.row-fluid.tertiary {
+  position: relative;
+  left: 20px;
+}
+
+.row-fluid.tertiary.left {
+  float: left;
+}
+
+.row-fluid.tertiary.panel {
+  width: 410px;
+  height: 100%;
+}
+
+.panel-adjacent {
+  margin-left: 430px;
+}
+
+#topologyForm.selected {
+  border: 1px solid red;
+}
+#topologyForm {
+  border: 1px solid white;
+  padding: 2px;
+  position: relative;
+  top: -8px;
+}
+
+#topologyForm > div {
+  width:396px;
+}
+
+/* globe */
+.land {
+  fill: #999;
+  stroke-opacity: 1;
+}
+
+.graticule {
+  fill: none;
+  stroke: black;
+  stroke-width:.5;
+  opacity:.1;
+}
+
+.labels {
+    font: 18px sans-serif;
+    fill: black;
+    opacity: .85;
+       text-anchor: middle;
+}
+
+.noclicks { pointer-events:none; }
+
+.point {  opacity:.6; }
+
+.arcs {
+  opacity:.7;
+  stroke: darkgreen;
+  stroke-width: 3;
+}
+.flyers {
+  stroke-width:1;
+  opacity: 0;
+  stroke: darkred;
+}
+.arc, .flyer {
+  stroke-linejoin: round;
+  fill:none;
+}
+.arc { }
+.arc:hover {
+  stroke: darkred;
+}
+.flyer { }
+.flyer:hover {
+  stroke: darkgreen;
+}
+.arc.inter-router {
+  stroke: darkblue;
+}
+
+#addNodeForm {
+  padding: 1em;
+}
+
+
+li.currentStep {
+  font-weight: bold;
+}
+
+.qdrTopology div.panel {
+  position: absolute;
+}
+/*
+.ui-dialog-titlebar {
+    border: 0;
+    background: transparent;
+}
+*/
+
+.ui-tabs.ui-tabs-vertical {
+    padding: 0;
+    width: 48em;
+}
+.ui-tabs.ui-tabs-vertical .ui-widget-header {
+    border: none;
+}
+.ui-tabs.ui-tabs-vertical .ui-tabs-nav {
+    float: left;
+    width: 10em;
+    background: #CCC;
+    border-radius: 4px 0 0 4px;
+    border-right: 1px solid gray;
+}
+.ui-tabs.ui-tabs-vertical .ui-tabs-nav li {
+    clear: left;
+    width: 100%;
+    margin: 0.1em 0;
+    border: 1px solid gray;
+    border-width: 1px 0 1px 1px;
+    border-radius: 4px 0 0 4px;
+    overflow: hidden;
+    position: relative;
+    right: -2px;
+    z-index: 2;
+}
+.ui-tabs.ui-tabs-vertical .ui-tabs-nav li a {
+    display: block;
+    width: 100%;
+    padding: 0.1em 1em;
+}
+.ui-tabs.ui-tabs-vertical .ui-tabs-nav li a:hover {
+    cursor: pointer;
+}
+.ui-tabs.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active {
+    margin-bottom: 0.2em;
+    padding-bottom: 0;
+    border-right: 1px solid white;
+}
+.ui-tabs.ui-tabs-vertical .ui-tabs-nav li:last-child {
+    margin-bottom: 10px;
+}
+.ui-tabs.ui-tabs-vertical .ui-tabs-panel {
+    float: left;
+    width: 34em;
+    border-left: 1px solid gray;
+    border-radius: 0;
+    position: relative;
+    left: -1px;
+}
+
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected {
+    right: -3px !important;
+}
+
+.ui-tabs li i.ui-icon {
+    display: inline-block;
+}
+.ui-tabs .ui-tabs-panel {
+    /* padding-top: 0 !important; */
+}
+
+.ui-widget-content fieldset {
+  float: left;
+  padding: 0 1em 0 0;
+}
+
+.entity-description {
+  color: #960;
+  font-size: 90%;
+}
+
+.attr-description {
+  padding-top: 1.5em;
+  float: right;
+  width: 17em;
+}
+.attr-annotations {
+    padding-top: 2.5em;
+    clear: both;
+}
+.attr-annotations > span {
+    padding-top: 0.5em;
+    border-top: 1px dashed darkgray;
+    display: block;
+}
+
+.attr-type {
+    color: #990;
+    font-size: 85%;
+}
+.attr-required {
+    color: red;
+    font-size: 85%;
+}
+.attr-unique {
+    color: green;
+    font-size: 85%;
+}
+
+#tabs.nodeEntities {
+  border: 0;
+}
+
+#tabs ul.nodeTabs {
+  background: #fff;
+}
+
+#tabs #Container {
+  border-left: 1px solid #aaa;
+}
+
+#tabs.ui-tabs .ui-tabs-nav li {
+  border-bottom: 1px solid #aaa !important;
+}
+
+.entity-fields {
+  /* height: 400px; */
+  overflow-y: scroll;
+  overflow-x: hidden;
+}
+
+.entity-fields div.boolean label:first-child {
+    float: left;
+    margin-right: 1em;
+}
+.entity-fields div.boolean {
+    padding-bottom: 1em;
+}
+
+.entity-fields label.ng-binding {
+    font-weight: 600;
+    margin-top: 0.5em;
+}
+
+.aggregate {
+       text-align: right;
+}
+
+.aggregate i {
+       float: right;
+    margin: 3px 3px 3px 8px;
+}
+
+.aggregate .hastip {
+       padding: 5px;
+}
+
+.subTip .tipsy-inner {
+       background-color: white;
+       color: black;
+       font-size: 1.3em;
+       border: 1px solid black;
+}
+
+.subTip .tipsy-arrow-n { border-bottom-color: black; }
+.subTip .tipsy-arrow-s { border-top-color: black; }
+.subTip .tipsy-arrow-e { border-left-color: black; }
+.subTip .tipsy-arrow-w { border-right-color: black; }
+
+
+.contextMenu {
+    display:none;
+       position:absolute;
+       left:30px;
+       top:-30px;
+       z-index:999;
+       /* width:300px; */
+}
+.contextMenu ul {
+       width:300px;
+       margin:0;
+       /* padding:10px; */
+       list-style:none;
+       background:#fff;
+       color:#333;
+    font-weight: 600;
+       /* -moz-border-radius:5px; -webkit-border-radius:5px; 
border-radius:5px; */
+       -moz-box-shadow:5px 5px 5px #ddd; -webkit-box-shadow:5px 5px 5px #999; 
box-shadow:5px 5px 5px #ddd;
+       border: 1px solid #aaa;
+}
+.contextMenu ul li {
+       padding:5px 10px;
+       /* border-bottom: solid 1px #ccc; */
+}
+.contextMenu ul li:hover {
+       background:#4a90d9; color:#fff;
+}
+.contextMenu ul li:last-child {
+    border:none;
+}
+
+.na {
+    display: none;
+}
+.contextMenu ul li.new {
+    display: block;
+}
+.contextMenu ul li.adding, .contextMenu ul li.adding + li {
+    display: block;
+}
+.contextMenu ul li.force-display {
+    display: block;
+}
+.contextMenu ul li.context-separator {
+    background-color: lightgray;
+    height: 1px;
+    padding: 0;
+}
+
+.ui-tabs.ui-tabs-vertical .ui-tabs-nav li.separated {
+    margin-top: 1em;
+}
+
+#crosssection {
+    display: none;
+    position: absolute;
+    top: 200px;
+    left: 600px;
+}
+
+.node circle {
+/*  fill: rgb(31, 119, 180);
+  fill-opacity: .25; */
+  fill: #cfe2f3;
+  fill-opacity: .98;
+  stroke: black;
+  stroke-width: 3px;
+}
+
+.leaf circle {
+  fill: #6fa8dc;
+  fill-opacity: 0.95;
+  stroke-width: 3px;
+}
+
+.leaf circle[title] {
+    font-family: monospace;
+
+}
+
+.tabs-left .nav-tabs {
+       float: left;
+}
+.tabs-left .nav-tabs > li {
+       float: initial;
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to