1
0
Fork 0

merging web interfaces

This commit is contained in:
hkernbach 2016-04-06 17:44:22 +02:00
parent f0bb30c3f7
commit 4578b66441
81 changed files with 4231 additions and 356 deletions

View File

@ -30,6 +30,7 @@
"frontend/css/ansi.css",
"frontend/css/highlightjs.css",
"frontend/css/jsoneditor.css",
"frontend/css/grids-responsive-min.css",
"frontend/ttf/arangofont/style.css"
]
},

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -796,4 +796,4 @@
</div>
</div>
</div>
</div></script></head><body><nav class="navbar"><div class="resizecontainer"><div class="navlogo"><a class="logo" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a></div><div id="progressPlaceholderIcon"></div><div class="statmenu" id="statisticBar"></div><div class="usermenu" id="userBar" style="float:right"></div><div class="notificationmenu" id="notificationBar" style="float:right"></div><div class="navmenu" id="navigationBar"></div></div></nav><div class="centralRow resizecontainer"><div id="content" class="centralContent"></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div><footer class="footer"><div class="resizecontainer" id="footerBar"></div></footer><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="sharedLibs.js"></script><script src="cluster.js"></script></body></html>
</div></script></head><body><div class="bodyWrapper"><nav class="navbar"><div class="primary"><div class="resizecontainer"><div class="navlogo"><a class="logo" href="#"><img class="arangodbLogo" src="img/DEVLOGO.png"></a></div><div id="progressPlaceholderIcon"></div><div class="statmenu" id="statisticBar"></div><div class="usermenu" id="userBar" style="float:right"></div><div class="notificationmenu" id="notificationBar" style="float:right"></div><div class="navmenu" id="navigationBar"></div></div></div><div class="secondary"><div class="resizecontainer"><div class="subnavmenu" id="subNavigationBar"></div></div></div></nav><div class="centralRow resizecontainer"><div id="content" class="centralContent"></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div></div><footer class="footer"><div class="resizecontainer" id="footerBar"></div></footer><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="sharedLibs.js"></script><script src="cluster.js"></script></body></html>

View File

@ -886,35 +886,48 @@
</head>
<body>
<nav class="navbar">
<div class="resizecontainer">
<div class="navlogo">
<a class="logo" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"/></a>
<div class="bodyWrapper">
<nav class="navbar">
<div class="primary">
<div class="resizecontainer">
<div class="navlogo">
<a class="logo" href="#"><img class="arangodbLogo" src="img/DEVLOGO.png"/></a>
</div>
<div id="progressPlaceholderIcon"></div>
<div class="statmenu" id="statisticBar">
</div>
<div class="usermenu" id="userBar" style="float:right;">
</div>
<div class="notificationmenu" id="notificationBar" style="float:right;">
</div>
<div class="navmenu" id="navigationBar">
</div>
</div>
</div>
<div id="progressPlaceholderIcon"></div>
<div class="statmenu" id="statisticBar">
</div>
<div class="usermenu" id="userBar" style="float:right;">
</div>
<div class="notificationmenu" id="notificationBar" style="float:right;">
</div>
<div class="navmenu" id="navigationBar">
<div class="secondary">
<div class="resizecontainer">
<div class="subnavmenu" id="subNavigationBar"></div>
</div>
</div>
</nav>
<div class="centralRow resizecontainer">
<div id="content" class="centralContent"></div>
</div>
</nav>
<div class="centralRow resizecontainer">
<div id="content" class="centralContent"></div>
</div>
<div id="modalPlaceholder">
</div>
<div id="modalPlaceholder">
</div>
<div id="progressPlaceholder" style="display:none">
</div>
<div id="progressPlaceholder" style="display:none">
</div>
<div id="spotlightPlaceholder" style="display:none">
</div>
<div id="spotlightPlaceholder" style="display:none">
</div>
</div>
</div>

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@ input,
textarea,
.page-title span,
.pingback a.url {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-weight: 400; }
@font-face {
@ -2081,10 +2081,8 @@ textarea,
cursor: pointer; }
.navbar, footer.footer {
background-color: rgba(245, 248, 240, 0.95);
color: #fff;
left: 0;
position: fixed;
right: 0;
width: 100%;
z-index: 1000; }
@ -2105,17 +2103,22 @@ a.danger.coordinator, a.danger.dbserver {
fill: #be342e; }
.button-success {
background-color: #8aa051; }
background-color: #7dbc42; }
.button-success:hover, .button-success:focus {
background-color: #788f3d; }
.button-info {
background-color: #5bc0de; }
.button-info:hover, .button-info:focus {
background-color: #5bc0de; }
.addButton, a.success.coordinator, a.success.dbserver {
color: #8aa051; }
color: #7dbc42; }
.addButton:hover, a.success.coordinator:hover, a.success.dbserver:hover, .addButton:focus, a.success.coordinator:focus, a.success.dbserver:focus {
color: #788f3d; }
a.success.coordinator, a.success.dbserver {
fill: #8aa051; }
fill: #7dbc42; }
a.success.coordinator:hover, a.success.dbserver:hover, a.success.coordinator:focus, a.success.dbserver:focus {
fill: #788f3d; }
@ -2154,8 +2157,8 @@ a.warning.coordinator, a.warning.dbserver {
border: 1px solid #fff;
color: #555; }
.button-header:hover, a.headerButton:hover, a.button-gui:hover, .button-header:focus, a.headerButton:focus, a.button-gui:focus {
background-color: #8aa051;
border: 1px solid #8aa051;
background-color: #7dbc42;
border: 1px solid #7dbc42;
color: #fff; }
.button-notification {
@ -2262,10 +2265,16 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navbar {
-webkit-font-smoothing: subpixel-antialiased;
height: 44px;
height: auto;
margin-bottom: 3px;
padding-top: 6px;
top: 0; }
.navbar > .primary {
background-color: rgba(0, 0, 0, 0.7); }
.navbar > .secondary {
background-color: rgba(255, 255, 255, 0.85);
border-bottom: 1px solid rgba(140, 138, 137, 0.25); }
.navbar > .resizecontainer {
background-color: #fff; }
.navbar .no-left-margin {
border: 0;
margin-left: 0; }
@ -2274,8 +2283,8 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navbar .arangodbLogo {
height: auto;
margin-left: -5px;
margin-top: -1px;
width: 40%; }
margin-top: 6px;
width: 200px; }
.navbar .arango-collection-select {
position: relative;
right: -22px;
@ -2304,7 +2313,7 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navlist {
list-style: none; }
.navlist > li {
height: 39px; }
line-height: 30px; }
.navlist li {
border-left: 1px solid transparent;
border-right: 1px solid transparent;
@ -2324,36 +2333,33 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navlist li.divider {
background-color: rgba(0, 0, 0, 0.2); }
.navlist li.navbar-spacer {
background-color: #a0a0a0;
background-color: #fff;
height: 21px;
margin-top: 9px;
margin-top: 14px;
opacity: .2;
width: 1px; }
.navlist li.navbar-spacer.big {
margin-left: 15px;
margin-right: 15px; }
margin-right: 8px; }
.navlist li.navbar-spacer.med {
margin-left: 5px;
margin-right: 5px; }
.navlist li.navbar-spacer:hover {
background-color: #a0a0a0; }
.navlist .active .tab {
border-bottom: 2px solid #8aa051;
padding-bottom: 4px; }
.navlist > .active {
background-color: transparent; }
.navlist > .active a {
color: #000; }
.navlist > .active:hover {
background-color: #fff; }
.navlist > .active:hover a {
color: #000; }
opacity: .65; }
.navlist .dropdown-item:hover,
.navlist > li:hover {
background-color: #fff;
border-radius: 3px; }
.navlist .dropdown-item:hover a,
.navlist > li:hover a {
color: #000; }
color: #fff;
opacity: .65;
-webkit-tap-highlight-color: transparent;
-webkit-transition: opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); }
.navlist .dropdown-item {
margin-left: 0; }
.navlist .dropdown-item a {
@ -2365,14 +2371,15 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
color: #686766; }
.tab {
color: #686766;
color: #fff;
display: block;
font-size: 12pt;
font-size: 10pt;
font-weight: 100;
padding-bottom: 10px;
padding-left: 5px;
padding-right: 5px;
padding-top: 9px; }
padding-top: 9px;
text-transform: uppercase; }
.tab.userImg {
padding-bottom: 5px; }
@ -2410,7 +2417,7 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.script-dropdown-menu .dropdown-item a:hover {
color: #fff; }
.script-dropdown-menu .dropdown-item:hover {
background-color: #8aa051; }
background-color: #7dbc42; }
.gv-dropdown-menu {
-moz-border-radius: 0;
@ -2431,7 +2438,7 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
color: #fff;
padding-left: 5px; }
.gv-dropdown-menu li a:focus {
background-color: #8aa051 !important;
background-color: #7dbc42 !important;
background-image: none; }
#arangoCollectionSelect {
@ -2461,10 +2468,8 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
margin-left: 22px; }
.footer {
bottom: 0;
font-size: 14px;
left: 0;
position: fixed;
right: 0;
text-align: center;
z-index: 1000; }
@ -2499,7 +2504,7 @@ div.footer-left {
padding: 0;
width: 25px; }
div.footer-left .social-icons p:hover {
background: #8aa051;
background: #7dbc42;
cursor: pointer; }
div.footer-left .social-icons p:hover i {
color: #fff; }
@ -2529,7 +2534,7 @@ div.footer-center {
padding: 6px 2px;
width: 20px; }
div.footer-center i:hover {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
div.footer-center p {
padding-top: 5px; }
@ -2551,26 +2556,26 @@ div.footer-right {
position: relative;
top: -1px; }
div.footer-right .isOnline {
color: #8aa051 !important; }
color: #7dbc42 !important; }
.button-neutral, .button-primary, .button-notification, .button-success, .button-danger, .button-warning, .button-inactive, .button-close, .button-header {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
.button-neutral, .button-primary, .button-notification, .button-success, .button-info, .button-danger, .button-warning, .button-inactive, .button-close, .button-header {
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
-webkit-box-shadow: 0;
-moz-box-shadow: 0;
box-shadow: 0;
font-size: 14px;
font-weight: 300 !important; }
font-weight: 400 !important; }
.button-neutral, .button-primary, .button-notification, .button-success, .button-danger, .button-warning, .button-inactive, .button-close {
.button-neutral, .button-primary, .button-notification, .button-success, .button-info, .button-danger, .button-warning, .button-inactive, .button-close {
border: 0;
color: #fff;
margin-left: 10px;
padding: 5px 16px; }
.button-neutral:focus, .button-primary:focus, .button-notification:focus, .button-success:focus, .button-danger:focus, .button-warning:focus, .button-inactive:focus, .button-close:focus {
.button-neutral:focus, .button-primary:focus, .button-notification:focus, .button-success:focus, .button-info:focus, .button-danger:focus, .button-warning:focus, .button-inactive:focus, .button-close:focus {
outline: none; }
.button-neutral i, .button-primary i, .button-notification i, .button-success i, .button-danger i, .button-warning i, .button-inactive i, .button-close i {
.button-neutral i, .button-primary i, .button-notification i, .button-success i, .button-info i, .button-danger i, .button-warning i, .button-inactive i, .button-close i {
margin-left: -5px; }
.button-header {
@ -2597,7 +2602,7 @@ button.disabled,
margin-left: 0 !important; }
button {
font-family: 'Open Sans', sans-serif !important; }
font-family: 'Lato', sans-serif !important; }
button.btn-server {
width: 120px; }
button.gv-zoom-btn {
@ -2659,7 +2664,7 @@ button {
height: 36px;
width: 36px; }
button.gv-icon-btn.active {
background-color: #8aa051; }
background-color: #7dbc42; }
button.gv_dropdown_entry {
height: 30px;
margin: 4px 4px 4px 12px;
@ -2754,7 +2759,7 @@ div.toolbox {
text-align: center;
width: 30px; }
div.toolbox div.gv_action_button.active {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
div.toolbox div.gv_action_button:first-child {
margin-top: 0; }
@ -3032,7 +3037,7 @@ div .tile, div .bigtile {
padding-top: 2px;
z-index: 2; }
div .tile .iconSet span:hover, div .bigtile .iconSet span:hover {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
div .tile .iconSet span.disabled, div .bigtile .iconSet span.disabled {
cursor: default;
@ -3074,7 +3079,7 @@ div .tile, div .bigtile {
div .tile .tileBadge span .corneredBadge.loading, div .bigtile .tileBadge span .corneredBadge.loading {
border-bottom-color: #ff8f35; }
div .tile .tileBadge span .corneredBadge.loaded, div .bigtile .tileBadge span .corneredBadge.loaded {
border-bottom-color: #8aa051; }
border-bottom-color: #7dbc42; }
div .tile .tileBadge span .corneredBadge.inProgress, div .bigtile .tileBadge span .corneredBadge.inProgress {
border-bottom-color: #5bc0de; }
div .tile .tileBadge span .corneredBadge.unloaded, div .bigtile .tileBadge span .corneredBadge.unloaded {
@ -5128,7 +5133,7 @@ div .bigtile {
div.centralRow {
margin-bottom: 40px;
margin-top: 40px; }
margin-top: 15px; }
div.centralContent {
background-color: transparent;
@ -5255,7 +5260,7 @@ div.dropdownInner {
margin-left: 1px;
margin-right: 6px; }
div.dropdownInner ul li .fa.fa-check-circle-o, div.dropdownInner ul li .fa.fa-check-square-o, div.dropdownInner ul li .fa.fa-dot-circle-o {
color: #8aa051; }
color: #7dbc42; }
div.queryline {
color: #000;
@ -5333,7 +5338,7 @@ div.input-append button.gv_example_toggle {
padding-top: 12px;
vertical-align: top; }
div.input-append button.gv_example_toggle:hover {
background-color: #8aa051; }
background-color: #7dbc42; }
.searchEqualsLabel {
margin-left: 6px;
@ -5390,8 +5395,6 @@ div.headerBar {
color: #fff;
font-size: 16px;
height: 36px;
margin-bottom: 5px;
margin-top: 15px;
padding-left: 5px;
padding-right: 5px;
position: relative; }
@ -5473,7 +5476,7 @@ div.headerBar {
font-size: 10pt;
margin-left: 10px; }
.breadcrumb .activeBread {
color: #8aa051;
color: #7dbc42;
float: left;
font-size: 11.5pt;
font-weight: 100; }
@ -5538,7 +5541,7 @@ div.headerBar {
.modal-body {
color: #736b68;
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-size: 14px;
font-weight: 300;
max-height: 410px; }
@ -5858,7 +5861,7 @@ a.dbserver.double {
right: 60px; }
.cluster-connection-check-success {
color: #8aa051;
color: #7dbc42;
margin-left: 20px; }
.cluster-connection-check-fail {
@ -6102,7 +6105,7 @@ div .tile, div .bigtile {
padding-top: 2px;
z-index: 2; }
div .tile .iconSet span:hover, div .bigtile .iconSet span:hover {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
div .tile .iconSet span.disabled, div .bigtile .iconSet span.disabled {
cursor: default;
@ -6144,7 +6147,7 @@ div .tile, div .bigtile {
div .tile .tileBadge span .corneredBadge.loading, div .bigtile .tileBadge span .corneredBadge.loading {
border-bottom-color: #ff8f35; }
div .tile .tileBadge span .corneredBadge.loaded, div .bigtile .tileBadge span .corneredBadge.loaded {
border-bottom-color: #8aa051; }
border-bottom-color: #7dbc42; }
div .tile .tileBadge span .corneredBadge.inProgress, div .bigtile .tileBadge span .corneredBadge.inProgress {
border-bottom-color: #5bc0de; }
div .tile .tileBadge span .corneredBadge.unloaded, div .bigtile .tileBadge span .corneredBadge.unloaded {
@ -6196,7 +6199,7 @@ div .bigtile {
.dataNotReadyYet {
color: #faa732;
font-family: 'Open Sans', sans-serif;
font-family: 'Lato', sans-serif;
font-size: 14px;
font-weight: 100;
text-align: center; }
@ -8430,7 +8433,7 @@ div .bigtile {
div.centralRow {
margin-bottom: 40px;
margin-top: 40px; }
margin-top: 15px; }
div.centralContent {
background-color: transparent;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -19925,7 +19925,7 @@ var EventEmitter = require("./lib/event_emitter").EventEmitter;
var editorCss = ".ace_editor {\
position: relative;\
overflow: hidden;\
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\
font-family: 'Lato', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\
font-size: 12px;\
line-height: normal;\
direction: ltr;\

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,3 @@
<script src="sharedLibs.js?version=1459264721189"></script>
<script src="libs.js?version=1459264721189"></script>
<script src="app.js?version=1459264721189"></script>
<script src="sharedLibs.js?version=1459957393338"></script>
<script src="libs.js?version=1459957393338"></script>
<script src="app.js?version=1459957393338"></script>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/html"><head><meta charset="utf-8"><title>ArangoDB Web Interface</title><meta name="description" content="ArangoDB Admin Web Interface"><meta name="author" content="Heiko Kernbach, Michael Hackstein"><link href="css/style.css" rel="stylesheet"><link href="css/sass.css" rel="stylesheet"><link rel="shortcut icon" type="image/x-icon" href="favicon.ico"><script id="applicationDetailView.ejs" type="text/template"><div class="application-detail-view">
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/html"><head><meta charset="utf-8"><title>ArangoDB Web Interface</title><meta name="description" content="ArangoDB Admin Web Interface"><meta name="author" content="Heiko Kernbach, Michael Hackstein"><link href="css/style.css" rel="stylesheet"><link href="css/sass.css" rel="stylesheet"><link rel="shortcut icon" type="image/x-icon" href="favicon.ico"><link href="https://fonts.googleapis.com/css?family=Lato:400,300,700" rel="stylesheet" type="text/css"><script id="applicationDetailView.ejs" type="text/template"><div class="application-detail-view">
<div class="headerBar">
<div class="headerButtonBar">
<ul class="headerButtonList">
@ -253,7 +253,67 @@
</tr>
<% }; %>
</tbody>
</table></script><script id="collectionsItemView.ejs" type="text/template"><div class="borderBox"></div>
</table></script><script id="clusterView.ejs" type="text/template"><div id="clusterContent" class="innerContent">
<div class="pure-g cluster-values">
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterNodes" class="value">7</div>
<div class="graphLabel">Nodes</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterRam" class="value">23%</div>
<div class="graphLabel">RAM</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterConnections" class="value">33</div>
<div class="graphLabel">Connections</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterConnectionsAvg" class="value">22</div>
<div class="graphLabel">Connections AVG</div>
</div>
</div>
</div>
<div class="pure-g cluster-graphs">
<div class="pure-u-1-1 pure-u-md-24-24 pure-u-lg-12-24">
<div class="graphWrapper">
<div id='clusterData'></div>
<div class="graphLabel">DATA</div>
</div>
</div>
<div class="pure-u-1-1 pure-u-md-12-24 pure-u-lg-6-24">
<div class="graphWrapper">
<div id='clusterHttp'></div>
<div class="graphLabel">HTTP</div>
</div>
</div>
<div class="pure-u-1-1 pure-u-md-12-24 pure-u-lg-6-24">
<div class="graphWrapper">
<div id='clusterAverage'></div>
<div class="graphLabel">TRANSFER SIZE</div>
</div>
</div>
</div>
</div></script><script id="collectionsItemView.ejs" type="text/template"><div class="borderBox"></div>
<div class="iconSet">
<span id="editCollection_<%=model.get('name')%>" class="icon_arangodb_settings2" alt="Edit collection properties" title="Edit collection properties"></span>
<% if(model.get('status') === "loaded") { %>
@ -694,7 +754,9 @@
<%});%>
</div>
</div></script><script id="dbSelectionView.ejs" type="text/template"><a href="#" class="tab" id="dbselection"></span><div class="dbselection">DB: <%=current%></div> <b class="caret"></b></a>
</div></script><script id="dbSelectionView.ejs" type="text/template"><a href="#" class="tab" id="dbselection"></span><div class="dbselection"><span class="db-name">DB: </span> <%=current%><i class="fa fa-caret-square-o-down"></i></div>
<!-- <b class="caret"></b> -->
</a>
<ul class="link-dropdown-menu" id="dbs_dropdown">
<%
if (list.length > 0) {
@ -2260,14 +2322,19 @@ if (list.length > 0) {
</div>
<% } %>
</div></script><script id="navigationView.ejs" type="text/template"><ul class="navlist arango-collection-ul" id="arangoCollectionUl">
<li class="collections-menu"><a id="cluster" class="tab" href="#collections">Cluster</a></li>
<li class="collections-menu"><a id="nodes" class="tab" href="#collections">Nodes</a></li>
<li class="navbar-spacer big"></li>
<li id="dbSelect" class="dropdown databases-menu"></li>
<li class="collections-menu"><a id="collections" class="tab" href="#collections">Collections</a></li>
<li class="demo-menu"><a id="demo" class="tab" href="#demo">Demo</a></li>
<li class="query-menu"><a id="query" class="tab" href="#query">Queries</a></li>
<li class="graph-menu"><a id="graph" class="tab" href="#graph">Graphs</a></li>
<li class="applications-menu">
<a id="applications" class="tab" href="#applications">Services</a>
</li>
<li class="query-menu"><a id="query" class="tab" href="#query">AQL Editor</a></li>
<li class="users-menu"><a id="users" class="tab" href="#manage">Users</a></li>
<li class="query-menu"><a id="settings" class="tab" href="#settings"><i class="fa fa-cog"></i></a></li>
<!--
<li class="navbar-spacer big"></li>
<li class="dropdown tools-menu" id="toolsDropdown">
<a href="#" class="tab" id="tools">Tools <b class="caret"></b></a>
@ -2312,6 +2379,7 @@ if (list.length > 0) {
<li class="dropdown-item"><a href="https://www.arangodb.com" target="_blank">ArangoDB.com</a></li>
</ul>
</li>
-->
</ul>
<select id="arangoCollectionSelect" class="arango-collection-select">
@ -2483,17 +2551,12 @@ if (list.length > 0) {
</div>
</div></script><script id="queryView2.ejs" type="text/template"><div class="headerBar">
<a class="arangoHeader">AQL Editor 2</a>
</div>
<div id="queryContent" class="queryContent">
</div></script><script id="queryView2.ejs" type="text/template"><div id="queryContent" class="queryContent">
<div class="arangoToolbar arangoToolbarTop">
<div class="pull-left">
<button id="toggleQueries1" class="button-success"><i class="fa fa-star-o"></i>Queries</button>
<button id="toggleQueries2" class="button-success" style="display: none"><i class="fa fa-star"></i>Queries</button>
<button id="toggleQueries1" class="button-primary"><i class="fa fa-star-o"></i>Queries</button>
<button id="toggleQueries2" class="button-primary" style="display: none"><i class="fa fa-star"></i>Queries</button>
<button id="saveCurrentQuery" class="button-success"><i class="fa fa-save"></i>Save</button>
</div>
@ -2532,7 +2595,7 @@ if (list.length > 0) {
<button id="exportQuery" class="button-success query-button" style="display:none">Export Queries</button>
<button id="importQuery" class="button-success query-button" style="display:none">Import Queries</button>
<button id="executeQuery" class="button-success query-button">Execute</button>
<button id="explainQuery" class="button-success query-button">Explain</button>
<button id="explainQuery" class="button-info query-button">Explain</button>
<button id="removeResults" class="button-close query-button" style="display: none">Remove results</button>
</div>
</div>
@ -2637,7 +2700,27 @@ if (list.length > 0) {
style="background-color: #8aa051; margin-top: 9px;"
/>
</a>
</div></script><script id="tableView.ejs" type="text/template"><%
</div></script><script id="subNavigationView.ejs" type="text/template"><ul class="subMenuEntries left">
<li class="subMenuEntry">
<a class="health-info">HEALTH: </a>
<a class="health-state">GOOD</a>
<a class="health-icon">
<i class="fa fa-check-circle"></i>
</a>
</li>
</ul>
<ul class="subMenuEntries right">
<li class="subMenuEntry">
<a>Slow Query History</a>
</li>
<li class="subMenuEntry">
<a>Running Queries</a>
</li>
<li class="subMenuEntry active">
<a>Editor</a>
</li>
</ul></script><script id="tableView.ejs" type="text/template"><%
var escaped = function (value) {
return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
.replace(/"/g, "&quot;").replace(/'/g, "&#39;");
@ -2849,4 +2932,4 @@ var cutByResolution = function (str) {
</div>
<div id="workMonitorContent" class="innerContent">
</div></script></head><body><nav class="navbar"><div class="resizecontainer"><div class="navlogo"><a class="logo" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a></div><div id="progressPlaceholderIcon"></div><div class="statmenu" id="statisticBar"></div><div class="usermenu" id="userBar" style="float:right"></div><div class="notificationmenu" id="notificationBar" style="float:right"></div><div class="navmenu" id="navigationBar"></div></div></nav><div class="centralRow resizecontainer"><div id="content" class="centralContent"></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div><footer class="footer"><div class="resizecontainer" id="footerBar"></div></footer><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="sharedLibs.js?version=1459264721189"></script><script src="libs.js?version=1459264721189"></script><script src="app.js?version=1459264721189"></script></body></html>
</div></script></head><body><div class="bodyWrapper"><nav class="navbar"><div class="primary"><div class="resizecontainer"><div class="navlogo"><a class="logo" href="#"><img class="arangodbLogo" src="img/DEVLOGO.png"></a></div><div id="progressPlaceholderIcon"></div><div class="statmenu" id="statisticBar"></div><div class="usermenu" id="userBar" style="float:right"></div><div class="notificationmenu" id="notificationBar" style="float:right"></div><div class="navmenu" id="navigationBar"></div></div></div><div class="secondary"><div class="resizecontainer"><div class="subnavmenu" id="subNavigationBar"></div></div></div></nav><div class="centralRow resizecontainer"><div id="content" class="centralContent"></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div></div><footer class="footer"><div class="resizecontainer" id="footerBar"></div></footer><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="sharedLibs.js?version=1459780611287"></script><script src="libs.js?version=1459780611287"></script><script src="app.js?version=1459780611287"></script></body></html>

View File

@ -10,8 +10,7 @@
<link href="css/style.css" rel="stylesheet">
<link href="css/sass.css" rel="stylesheet">
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<!-- obsolete file -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,300,700' rel='stylesheet' type='text/css'>
<script id="applicationDetailView.ejs" type="text/template">
<div class="application-detail-view">
@ -288,6 +287,72 @@
</table>
</script>
<script id="clusterView.ejs" type="text/template">
<div id="clusterContent" class="innerContent">
<div class="pure-g cluster-values">
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterNodes" class="value">7</div>
<div class="graphLabel">Nodes</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterRam" class="value">23%</div>
<div class="graphLabel">RAM</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterConnections" class="value">33</div>
<div class="graphLabel">Connections</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterConnectionsAvg" class="value">22</div>
<div class="graphLabel">Connections AVG</div>
</div>
</div>
</div>
<div class="pure-g cluster-graphs">
<div class="pure-u-1-1 pure-u-md-24-24 pure-u-lg-12-24">
<div class="graphWrapper">
<div id='clusterData'></div>
<div class="graphLabel">DATA</div>
</div>
</div>
<div class="pure-u-1-1 pure-u-md-12-24 pure-u-lg-6-24">
<div class="graphWrapper">
<div id='clusterHttp'></div>
<div class="graphLabel">HTTP</div>
</div>
</div>
<div class="pure-u-1-1 pure-u-md-12-24 pure-u-lg-6-24">
<div class="graphWrapper">
<div id='clusterAverage'></div>
<div class="graphLabel">TRANSFER SIZE</div>
</div>
</div>
</div>
</div>
</script>
<script id="collectionsItemView.ejs" type="text/template">
<div class="borderBox"></div>
<div class="iconSet">
@ -749,7 +814,9 @@
</script>
<script id="dbSelectionView.ejs" type="text/template">
<a href="#" class="tab" id="dbselection"></span><div class="dbselection">DB: <%=current%></div> <b class="caret"></b></a>
<a href="#" class="tab" id="dbselection"></span><div class="dbselection"><span class="db-name">DB: </span> <%=current%><i class="fa fa-caret-square-o-down"></i></div>
<!-- <b class="caret"></b> -->
</a>
<ul class="link-dropdown-menu" id="dbs_dropdown">
<%
if (list.length > 0) {
@ -2421,14 +2488,19 @@ if (list.length > 0) {
<script id="navigationView.ejs" type="text/template">
<ul class="navlist arango-collection-ul" id="arangoCollectionUl">
<li class="collections-menu"><a id="cluster" class="tab" href="#collections">Cluster</a></li>
<li class="collections-menu"><a id="nodes" class="tab" href="#collections">Nodes</a></li>
<li class="navbar-spacer big"></li>
<li id="dbSelect" class="dropdown databases-menu"></li>
<li class="collections-menu"><a id="collections" class="tab" href="#collections">Collections</a></li>
<li class="demo-menu"><a id="demo" class="tab" href="#demo">Demo</a></li>
<li class="query-menu"><a id="query" class="tab" href="#query">Queries</a></li>
<li class="graph-menu"><a id="graph" class="tab" href="#graph">Graphs</a></li>
<li class="applications-menu">
<a id="applications" class="tab" href="#applications">Services</a>
</li>
<li class="query-menu"><a id="query" class="tab" href="#query">AQL Editor</a></li>
<li class="users-menu"><a id="users" class="tab" href="#manage">Users</a></li>
<li class="query-menu"><a id="settings" class="tab" href="#settings"><i class="fa fa-cog"></i></a></li>
<!--
<li class="navbar-spacer big"></li>
<li class="dropdown tools-menu" id="toolsDropdown">
<a href="#" class="tab" id="tools">Tools <b class="caret"></b></a>
@ -2473,6 +2545,7 @@ if (list.length > 0) {
<li class="dropdown-item"><a href="https://www.arangodb.com" target="_blank">ArangoDB.com</a></li>
</ul>
</li>
-->
</ul>
<select id="arangoCollectionSelect" class="arango-collection-select">
@ -2675,17 +2748,12 @@ if (list.length > 0) {
<script id="queryView2.ejs" type="text/template">
<div class="headerBar">
<a class="arangoHeader">AQL Editor 2</a>
</div>
<div id="queryContent" class="queryContent">
<div class="arangoToolbar arangoToolbarTop">
<div class="pull-left">
<button id="toggleQueries1" class="button-success"><i class="fa fa-star-o"></i>Queries</button>
<button id="toggleQueries2" class="button-success" style="display: none"><i class="fa fa-star"></i>Queries</button>
<button id="toggleQueries1" class="button-primary"><i class="fa fa-star-o"></i>Queries</button>
<button id="toggleQueries2" class="button-primary" style="display: none"><i class="fa fa-star"></i>Queries</button>
<button id="saveCurrentQuery" class="button-success"><i class="fa fa-save"></i>Save</button>
</div>
@ -2724,7 +2792,7 @@ if (list.length > 0) {
<button id="exportQuery" class="button-success query-button" style="display:none">Export Queries</button>
<button id="importQuery" class="button-success query-button" style="display:none">Import Queries</button>
<button id="executeQuery" class="button-success query-button">Execute</button>
<button id="explainQuery" class="button-success query-button">Explain</button>
<button id="explainQuery" class="button-info query-button">Explain</button>
<button id="removeResults" class="button-close query-button" style="display: none">Remove results</button>
</div>
</div>
@ -2851,6 +2919,32 @@ if (list.length > 0) {
</div>
</script>
<script id="subNavigationView.ejs" type="text/template">
<ul class="subMenuEntries left">
<li class="subMenuEntry">
<a class="health-info">HEALTH: </a>
<a class="health-state">GOOD</a>
<a class="health-icon">
<i class="fa fa-check-circle"></i>
</a>
</li>
</ul>
<ul class="subMenuEntries right">
<li class="subMenuEntry">
<a>Slow Query History</a>
</li>
<li class="subMenuEntry">
<a>Running Queries</a>
</li>
<li class="subMenuEntry active">
<a>Editor</a>
</li>
</ul>
</script>
<script id="tableView.ejs" type="text/template">
<%
var escaped = function (value) {
@ -3090,35 +3184,48 @@ var cutByResolution = function (str) {
</head>
<body>
<nav class="navbar">
<div class="resizecontainer">
<div class="navlogo">
<a class="logo" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"/></a>
<div class="bodyWrapper">
<nav class="navbar">
<div class="primary">
<div class="resizecontainer">
<div class="navlogo">
<a class="logo" href="#"><img class="arangodbLogo" src="img/DEVLOGO.png"/></a>
</div>
<div id="progressPlaceholderIcon"></div>
<div class="statmenu" id="statisticBar">
</div>
<div class="usermenu" id="userBar" style="float:right;">
</div>
<div class="notificationmenu" id="notificationBar" style="float:right;">
</div>
<div class="navmenu" id="navigationBar">
</div>
</div>
</div>
<div id="progressPlaceholderIcon"></div>
<div class="statmenu" id="statisticBar">
</div>
<div class="usermenu" id="userBar" style="float:right;">
</div>
<div class="notificationmenu" id="notificationBar" style="float:right;">
</div>
<div class="navmenu" id="navigationBar">
<div class="secondary">
<div class="resizecontainer">
<div class="subnavmenu" id="subNavigationBar"></div>
</div>
</div>
</nav>
<div class="centralRow resizecontainer">
<div id="content" class="centralContent"></div>
</div>
</nav>
<div class="centralRow resizecontainer">
<div id="content" class="centralContent"></div>
</div>
<div id="modalPlaceholder">
</div>
<div id="modalPlaceholder">
</div>
<div id="progressPlaceholder" style="display:none">
</div>
<div id="progressPlaceholder" style="display:none">
</div>
<div id="spotlightPlaceholder" style="display:none">
</div>
<div id="spotlightPlaceholder" style="display:none">
</div>
</div>
</div>
@ -3133,9 +3240,9 @@ var cutByResolution = function (str) {
</div>
</div>
<script src="sharedLibs.js?version=1459264721189"></script>
<script src="libs.js?version=1459264721189"></script>
<script src="app.js?version=1459264721189"></script>
<script src="sharedLibs.js?version=1459957393338"></script>
<script src="libs.js?version=1459957393338"></script>
<script src="app.js?version=1459957393338"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,20 +1,29 @@
@charset "UTF-8";
html {
height: 100%; }
body {
background: #f5f8f0 !important;
background: none;
color: #333;
display: block;
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-size: 14px;
font-weight: 400;
height: 100%;
line-height: 20px;
margin: 0; }
body > .bodyWrapper {
background-image: linear-gradient(to bottom, #e9eae1 0%, #fafbfc 100%);
height: 100%;
margin: 0 auto -42px;
min-height: 100%; }
body,
input,
textarea,
.page-title span,
.pingback a.url {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-weight: 400; }
@font-face {
@ -2091,10 +2100,8 @@ textarea,
cursor: pointer; }
.navbar, footer.footer {
background-color: rgba(245, 248, 240, 0.95);
color: #fff;
left: 0;
position: fixed;
right: 0;
width: 100%;
z-index: 1000; }
@ -2110,12 +2117,17 @@ textarea,
color: #be342e; }
.button-success, .ajax-file-upload {
background-color: #8aa051; }
background-color: #7dbc42; }
.button-success:hover, .ajax-file-upload:hover, .button-success:focus, .ajax-file-upload:focus {
background-color: #788f3d; }
.button-info {
background-color: #5bc0de; }
.button-info:hover, .button-info:focus {
background-color: #5bc0de; }
.addButton, .contentTables td.dbThSecond span {
color: #8aa051; }
color: #7dbc42; }
.addButton:hover, .contentTables td.dbThSecond span:hover, .addButton:focus, .contentTables td.dbThSecond span:focus {
color: #788f3d; }
@ -2144,8 +2156,8 @@ textarea,
border: 1px solid #fff;
color: #555; }
.button-header:hover, a.headerButton:hover, a.button-gui:hover, .button-header:focus, a.headerButton:focus, a.button-gui:focus {
background-color: #8aa051;
border: 1px solid #8aa051;
background-color: #7dbc42;
border: 1px solid #7dbc42;
color: #fff; }
.button-notification {
@ -2249,10 +2261,16 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navbar {
-webkit-font-smoothing: subpixel-antialiased;
height: 44px;
height: auto;
margin-bottom: 3px;
padding-top: 6px;
top: 0; }
.navbar > .primary {
background-color: rgba(0, 0, 0, 0.7); }
.navbar > .secondary {
background-color: rgba(255, 255, 255, 0.85);
border-bottom: 1px solid rgba(140, 138, 137, 0.25); }
.navbar > .resizecontainer {
background-color: #fff; }
.navbar .no-left-margin {
border: 0;
margin-left: 0; }
@ -2261,8 +2279,8 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navbar .arangodbLogo {
height: auto;
margin-left: -5px;
margin-top: -1px;
width: 40%; }
margin-top: 6px;
width: 200px; }
.navbar .arango-collection-select {
position: relative;
right: -22px;
@ -2291,7 +2309,7 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navlist {
list-style: none; }
.navlist > li {
height: 39px; }
line-height: 30px; }
.navlist li {
border-left: 1px solid transparent;
border-right: 1px solid transparent;
@ -2311,36 +2329,33 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navlist li.divider {
background-color: rgba(0, 0, 0, 0.2); }
.navlist li.navbar-spacer {
background-color: #a0a0a0;
background-color: #fff;
height: 21px;
margin-top: 9px;
margin-top: 14px;
opacity: .2;
width: 1px; }
.navlist li.navbar-spacer.big {
margin-left: 15px;
margin-right: 15px; }
margin-right: 8px; }
.navlist li.navbar-spacer.med {
margin-left: 5px;
margin-right: 5px; }
.navlist li.navbar-spacer:hover {
background-color: #a0a0a0; }
.navlist .active .tab {
border-bottom: 2px solid #8aa051;
padding-bottom: 4px; }
.navlist > .active {
background-color: transparent; }
.navlist > .active a {
color: #000; }
.navlist > .active:hover {
background-color: #fff; }
.navlist > .active:hover a {
color: #000; }
opacity: .65; }
.navlist .dropdown-item:hover,
.navlist > li:hover {
background-color: #fff;
border-radius: 3px; }
.navlist .dropdown-item:hover a,
.navlist > li:hover a {
color: #000; }
color: #fff;
opacity: .65;
-webkit-tap-highlight-color: transparent;
-webkit-transition: opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); }
.navlist .dropdown-item {
margin-left: 0; }
.navlist .dropdown-item a {
@ -2352,14 +2367,15 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
color: #686766; }
.tab {
color: #686766;
color: #fff;
display: block;
font-size: 12pt;
font-size: 10pt;
font-weight: 100;
padding-bottom: 10px;
padding-left: 5px;
padding-right: 5px;
padding-top: 9px; }
padding-top: 9px;
text-transform: uppercase; }
.tab.userImg {
padding-bottom: 5px; }
@ -2397,7 +2413,7 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.script-dropdown-menu .dropdown-item a:hover {
color: #fff; }
.script-dropdown-menu .dropdown-item:hover {
background-color: #8aa051; }
background-color: #7dbc42; }
.gv-dropdown-menu {
-moz-border-radius: 0;
@ -2418,7 +2434,7 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
color: #fff;
padding-left: 5px; }
.gv-dropdown-menu li a:focus {
background-color: #8aa051 !important;
background-color: #7dbc42 !important;
background-image: none; }
#arangoCollectionSelect {
@ -2448,10 +2464,8 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
margin-left: 22px; }
.footer {
bottom: 0;
font-size: 14px;
left: 0;
position: fixed;
right: 0;
text-align: center;
z-index: 1000; }
@ -2486,7 +2500,7 @@ div.footer-left {
padding: 0;
width: 25px; }
div.footer-left .social-icons p:hover {
background: #8aa051;
background: #7dbc42;
cursor: pointer; }
div.footer-left .social-icons p:hover i {
color: #fff; }
@ -2516,7 +2530,7 @@ div.footer-center {
padding: 6px 2px;
width: 20px; }
div.footer-center i:hover {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
div.footer-center p {
padding-top: 5px; }
@ -2538,26 +2552,26 @@ div.footer-right {
position: relative;
top: -1px; }
div.footer-right .isOnline {
color: #8aa051 !important; }
color: #7dbc42 !important; }
.button-neutral, .button-primary, .button-notification, .button-success, .button-danger, .button-warning, .button-inactive, .button-close, .ajax-file-upload-red, .ajax-file-upload, .button-header {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
.button-neutral, .button-primary, .button-notification, .button-success, .button-info, .button-danger, .button-warning, .button-inactive, .button-close, .ajax-file-upload-red, .ajax-file-upload, .button-header {
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
-webkit-box-shadow: 0;
-moz-box-shadow: 0;
box-shadow: 0;
font-size: 14px;
font-weight: 300 !important; }
font-weight: 400 !important; }
.button-neutral, .button-primary, .button-notification, .button-success, .button-danger, .button-warning, .button-inactive, .button-close, .ajax-file-upload-red, .ajax-file-upload {
.button-neutral, .button-primary, .button-notification, .button-success, .button-info, .button-danger, .button-warning, .button-inactive, .button-close, .ajax-file-upload-red, .ajax-file-upload {
border: 0;
color: #fff;
margin-left: 10px;
padding: 5px 16px; }
.button-neutral:focus, .button-primary:focus, .button-notification:focus, .button-success:focus, .button-danger:focus, .button-warning:focus, .button-inactive:focus, .button-close:focus, .ajax-file-upload-red:focus, .ajax-file-upload:focus {
.button-neutral:focus, .button-primary:focus, .button-notification:focus, .button-success:focus, .button-info:focus, .button-danger:focus, .button-warning:focus, .button-inactive:focus, .button-close:focus, .ajax-file-upload-red:focus, .ajax-file-upload:focus {
outline: none; }
.button-neutral i, .button-primary i, .button-notification i, .button-success i, .button-danger i, .button-warning i, .button-inactive i, .button-close i, .ajax-file-upload-red i, .ajax-file-upload i {
.button-neutral i, .button-primary i, .button-notification i, .button-success i, .button-info i, .button-danger i, .button-warning i, .button-inactive i, .button-close i, .ajax-file-upload-red i, .ajax-file-upload i {
margin-left: -5px; }
.button-header {
@ -2584,7 +2598,7 @@ button.disabled,
margin-left: 0 !important; }
button {
font-family: 'Open Sans', sans-serif !important; }
font-family: 'Lato', sans-serif !important; }
button.btn-server {
width: 120px; }
button.gv-zoom-btn {
@ -2646,7 +2660,7 @@ button {
height: 36px;
width: 36px; }
button.gv-icon-btn.active {
background-color: #8aa051; }
background-color: #7dbc42; }
button.gv_dropdown_entry {
height: 30px;
margin: 4px 4px 4px 12px;
@ -2741,7 +2755,7 @@ div.toolbox {
text-align: center;
width: 30px; }
div.toolbox div.gv_action_button.active {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
div.toolbox div.gv_action_button:first-child {
margin-top: 0; }
@ -3019,7 +3033,7 @@ div .tile, div .bigtile {
padding-top: 2px;
z-index: 2; }
div .tile .iconSet span:hover, div .bigtile .iconSet span:hover {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
div .tile .iconSet span.disabled, div .bigtile .iconSet span.disabled {
cursor: default;
@ -3061,7 +3075,7 @@ div .tile, div .bigtile {
div .tile .tileBadge span .corneredBadge.loading, div .bigtile .tileBadge span .corneredBadge.loading {
border-bottom-color: #ff8f35; }
div .tile .tileBadge span .corneredBadge.loaded, div .bigtile .tileBadge span .corneredBadge.loaded {
border-bottom-color: #8aa051; }
border-bottom-color: #7dbc42; }
div .tile .tileBadge span .corneredBadge.inProgress, div .bigtile .tileBadge span .corneredBadge.inProgress {
border-bottom-color: #5bc0de; }
div .tile .tileBadge span .corneredBadge.unloaded, div .bigtile .tileBadge span .corneredBadge.unloaded {
@ -5115,7 +5129,7 @@ div .bigtile {
div.centralRow {
margin-bottom: 40px;
margin-top: 40px; }
margin-top: 15px; }
div.centralContent {
background-color: transparent;
@ -5242,7 +5256,7 @@ div.dropdownInner {
margin-left: 1px;
margin-right: 6px; }
div.dropdownInner ul li .fa.fa-check-circle-o, div.dropdownInner ul li .fa.fa-check-square-o, div.dropdownInner ul li .fa.fa-dot-circle-o {
color: #8aa051; }
color: #7dbc42; }
div.queryline {
color: #000;
@ -5320,7 +5334,7 @@ div.input-append button.gv_example_toggle {
padding-top: 12px;
vertical-align: top; }
div.input-append button.gv_example_toggle:hover {
background-color: #8aa051; }
background-color: #7dbc42; }
.searchEqualsLabel {
margin-left: 6px;
@ -5377,8 +5391,6 @@ div.headerBar {
color: #fff;
font-size: 16px;
height: 36px;
margin-bottom: 5px;
margin-top: 15px;
padding-left: 5px;
padding-right: 5px;
position: relative; }
@ -5460,7 +5472,7 @@ div.headerBar {
font-size: 10pt;
margin-left: 10px; }
.breadcrumb .activeBread {
color: #8aa051;
color: #7dbc42;
float: left;
font-size: 11.5pt;
font-weight: 100; }
@ -5525,7 +5537,7 @@ div.headerBar {
.modal-body {
color: #736b68;
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-size: 14px;
font-weight: 300;
max-height: 410px; }
@ -5899,10 +5911,10 @@ div.headerBar {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background-color: #fff;
border: 1px solid rgba(140, 138, 137, 0.25);
height: 25px;
margin-top: 3px;
margin-left: -10px;
margin-top: 8px;
position: relative;
right: 3px;
text-align: center;
@ -5973,12 +5985,12 @@ div.headerBar {
margin-top: -4px; }
.ui-tooltip {
background-color: #8aa051 !important;
background-color: #7dbc42 !important;
border: 0 !important;
border-radius: 3px !important;
box-shadow: none !important;
color: #fff !important;
font-family: 'Open Sans',sans-serif !important;
font-family: 'Lato',sans-serif !important;
font-size: 10pt !important;
font-weight: 100 !important;
z-index: 99999999; }
@ -6003,7 +6015,7 @@ div.headerBar {
position: relative;
top: 5px; }
.arangoToolbar span.action:hover {
background-color: #8aa051;
background-color: #7dbc42;
border-radius: 3px;
color: #fff;
cursor: pointer; }
@ -6019,7 +6031,7 @@ div.headerBar {
margin-top: 5px; }
.arangoToolbar .pull-right i.positive,
.arangoToolbar .pull-left i.positive {
color: #8aa051; }
color: #7dbc42; }
.arangoToolbar .pull-right i.warning,
.arangoToolbar .pull-left i.warning {
color: #faa732; }
@ -6044,13 +6056,7 @@ div.headerBar {
.arangoToolbar .styled-select {
width: auto; }
.arangoToolbarTop {
border-top-left-radius: 3px;
border-top-right-radius: 3px; }
.arangoToolbarBottom {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
clear: both; }
.arangoToolbarBottom #executeQuery {
margin-right: 5px; }
@ -6064,6 +6070,13 @@ div.headerBar {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; }
.dbselection .fa {
color: #fff;
opacity: .3; }
.dbselection .fa-database {
margin-right: 5px; }
.dbselection .fa-caret-square-o-down {
margin-left: 5px; }
.dashboard-full-width-chart .dashboard-full-width-chart-inner, .dashboard-large-chart .dashboard-large-chart-inner, .dashboard-small-chart .dashboard-small-chart-inner, .dashboard-medium-chart, .dashboard-tendency-container, .dashboard-bar-chart-container {
border-left: 0 solid #000;
@ -6084,7 +6097,7 @@ div.headerBar {
.dataNotReadyYet {
color: #faa732;
font-family: 'Open Sans', sans-serif;
font-family: 'Lato', sans-serif;
font-size: 14px;
font-weight: 100;
text-align: center; }
@ -6344,7 +6357,7 @@ div.headerBar {
.dygraph-label.dygraph-title {
color: #000;
font-family: 'Open Sans', sans-serif;
font-family: 'Lato', sans-serif;
font-size: 15px;
font-weight: 400;
text-align: left; }
@ -6484,7 +6497,7 @@ toolbar {
padding-top: 1px;
width: 15px; }
.vars-editor-header i:hover {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff;
cursor: pointer; }
@ -6538,7 +6551,7 @@ toolbar {
.styled-select select {
background: #fff;
border: 1px solid #c2c2c2 !important;
border-radius: 3px !important;
border-radius: 0 !important;
font-size: 14px;
font-weight: 300;
height: 30px;
@ -6581,8 +6594,8 @@ toolbar {
resize: vertical;
width: 100%; }
.query-dropdown-right textarea:focus {
border-color: #8aa051;
box-shadow: 0 0 3px #8aa051;
border-color: #7dbc42;
box-shadow: 0 0 3px #7dbc42;
outline: none; }
.query-modal-select {
@ -6651,7 +6664,7 @@ toolbar {
display: none;
min-height: 360px; }
.query-div .ace-tm .ace_comment {
color: #8aa051; }
color: #7dbc42; }
.query-div .icon_arangodb {
cursor: pointer;
margin-bottom: 5px; }
@ -6716,7 +6729,7 @@ toolbar {
width: 22px; }
.editor-toolbar span:hover,
.editor-toolbar .vars-editor-header i {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
.editor-toolbar a:hover,
.editor-toolbar span:hover {
@ -6755,6 +6768,7 @@ toolbar {
cursor: copy; }
.inputEditorWrapper .bindParamEditorWrapper,
.inputEditorWrapper .aqlEditorWrapper {
background-color: #fff;
overflow: hidden; }
.inputEditorWrapper .bindParamEditorWrapper .stringtype,
.inputEditorWrapper .aqlEditorWrapper .stringtype {
@ -6774,7 +6788,7 @@ toolbar {
.inputEditorWrapper .bindParamEditorWrapper table,
.inputEditorWrapper .aqlEditorWrapper table {
border-top: 0;
font: 13px/normal Monaco,Menlo,'Ubuntu Mono',Consolas,source-code-pro,monospace; }
font-family: 'Lato', sans-serif; }
.inputEditorWrapper .bindParamEditorWrapper table tbody,
.inputEditorWrapper .aqlEditorWrapper table tbody {
display: block;
@ -6791,7 +6805,7 @@ toolbar {
background-color: transparent !important; }
.inputEditorWrapper .bindParamEditorWrapper table tr.selected,
.inputEditorWrapper .aqlEditorWrapper table tr.selected {
background-color: #8aa051;
background-color: rgba(125, 188, 66, 0.64);
color: #fff; }
.inputEditorWrapper .bindParamEditorWrapper table tr.selected .spanWrapper,
.inputEditorWrapper .aqlEditorWrapper table tr.selected .spanWrapper {
@ -6820,7 +6834,7 @@ toolbar {
.inputEditorWrapper .bindParamEditorWrapper table td .spanWrapper .fa,
.inputEditorWrapper .aqlEditorWrapper table td .spanWrapper .fa {
cursor: pointer;
font-size: 18pt;
font-size: 16pt;
margin-left: 5px;
margin-right: 5px; }
.inputEditorWrapper .bindParamEditorWrapper table td .spanWrapper .fa-minus-circle,
@ -6828,25 +6842,35 @@ toolbar {
margin-left: 20px; }
.inputEditorWrapper .bindParamEditorWrapper table td .spanWrapper .fa-play-circle-o,
.inputEditorWrapper .aqlEditorWrapper table td .spanWrapper .fa-play-circle-o {
color: #8aa051; }
color: #7dbc42; }
.inputEditorWrapper .bindParamEditorWrapper table td input,
.inputEditorWrapper .aqlEditorWrapper table td input {
clear: both;
float: right;
font: 13px/normal Monaco,Menlo,'Ubuntu Mono',Consolas,source-code-pro,monospace !important;
font-family: 'Lato', sans-serif;
height: 17px;
margin-bottom: 3px;
margin-top: 3px;
width: auto !important; }
.inputEditorWrapper .bindParamEditorWrapper table th,
.inputEditorWrapper .aqlEditorWrapper table th {
font: 13px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
font-family: 'Lato', sans-serif;
font-weight: 400;
height: 34px;
padding: 0;
width: 50%; }
.inputEditorWrapper .aqlEditorWrapper,
.inputEditorWrapper .bindParamEditorWrapper {
height: 100%; }
.inputEditorWrapper .aqlEditorWrapper table thead tr th,
.inputEditorWrapper .bindParamEditorWrapper table thead tr th {
text-align: left; }
.inputEditorWrapper .aqlEditorWrapper table thead tr th:first-child,
.inputEditorWrapper .bindParamEditorWrapper table thead tr th:first-child {
padding-left: 10px; }
.inputEditorWrapper .aqlEditorWrapper table tbody input,
.inputEditorWrapper .bindParamEditorWrapper table tbody input {
width: 100% !important; }
.inputEditorWrapper .aqlEditorWrapper .selectError,
.inputEditorWrapper .bindParamEditorWrapper .selectError {
background: #da4f49; }
@ -6883,7 +6907,7 @@ toolbar {
.inputEditorWrapper .bindParamEditorWrapper .previewWrapper .previewBar {
background-color: #fff;
border-bottom: 1px solid rgba(140, 138, 137, 0.25);
font: 13px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
font-family: 'Lato', sans-serif;
height: 34px; }
.inputEditorWrapper .aqlEditorWrapper .previewWrapper .previewBar span,
.inputEditorWrapper .bindParamEditorWrapper .previewWrapper .previewBar span {
@ -6905,6 +6929,8 @@ toolbar {
clear: both;
margin-top: 0;
width: 100%; }
.queryContent .arangoToolbar .fa.fa-star, .queryContent .arangoToolbar .fa.fa-star-o {
color: #ff0; }
.outputEditors {
margin-bottom: 60px; }
@ -6946,7 +6972,7 @@ toolbar {
.innerContent {
background-color: #fff;
border: 1px solid rgba(140, 138, 137, 0.25);
border-radius: 3px;
border-radius: 2px;
min-height: 200px;
padding-top: 13px; }
@ -7044,7 +7070,7 @@ toolbar {
.jsoneditor .menu button {
border: 0 !important; }
.jsoneditor .menu button:hover {
background-color: #8aa051;
background-color: #7dbc42;
color: #fff; }
.jsoneditor .search .frame {
border: 0 !important;
@ -7506,7 +7532,7 @@ input.gv-radio-button {
width: auto; }
.collectionTh {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato Sans', sans-serif !important;
font-size: 14px;
font-weight: 400 !important;
text-align: left;
@ -7560,7 +7586,7 @@ input.gv-radio-button {
min-height: 200px; }
.collectionInfoTh2 {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-weight: 400 !important;
text-align: left;
width: 150px; }
@ -7577,7 +7603,7 @@ input.gv-radio-button {
.figuresHeader {
border-bottom: 1px solid #c2c2c2; }
.figuresHeader th {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-weight: 400 !important; }
#collectionIndexTable {
@ -7716,7 +7742,7 @@ input.gv-radio-button {
font-size: 11pt;
min-width: 55px; }
.document-info .document-thin-font {
color: #8aa051;
color: #7dbc42;
font-family: droid sans mono, monospace, courier new, courier, sans-serif;
font-size: 11pt; }
.document-info .document-type-container div {
@ -7785,7 +7811,7 @@ input.gv-radio-button {
margin-top: 5px; }
#progressPlaceholderIcon {
color: #8aa051;
color: #7dbc42;
float: left;
font-size: 22px;
margin-left: 10px;
@ -7926,6 +7952,40 @@ input.gv-radio-button {
outline-color: transparent;
outline-style: none; }
.graphLabel {
font-family: "Lato", sans-serif;
font-size: 10pt;
font-weight: 600;
margin-top: -25px;
opacity: .5;
padding-bottom: 20px;
text-align: center;
text-transform: uppercase; }
.cluster-graphs > div .graphWrapper {
border: 1px solid rgba(140, 138, 137, 0.25);
margin-left: -1px;
margin-top: -1px; }
.cluster-graphs > div .graphWrapper .nv-controlsWrap {
display: none; }
.cluster-graphs > div .graphWrapper svg {
height: 250px;
margin-left: -17px; }
.cluster-values {
margin-top: -13px; }
.cluster-values > div .valueWrapper {
border: 1px solid rgba(140, 138, 137, 0.25);
margin-left: -1px;
margin-top: -1px; }
.cluster-values > div .valueWrapper .value {
color: #7dbc42;
font-size: 24pt;
line-height: 150px;
text-align: center; }
.cluster-values > div .valueWrapper div:first-child {
height: 150px; }
.application-detail-view section.info {
float: left;
padding: 13px 0 0; }
@ -8084,7 +8144,7 @@ main {
margin-left: -16px; }
.tests-result .pass {
color: #8aa051; }
color: #7dbc42; }
.tests-result .fail {
color: #da4f49; }
@ -8162,6 +8222,48 @@ main {
height: 28px;
margin-bottom: -1px; }
.subnavmenu {
background-color: #fff;
height: auto; }
.subnavmenu ul {
list-style: none;
margin: 0; }
.subnavmenu ul.left {
float: left;
width: 120px; }
.subnavmenu ul.left li {
float: left;
padding: 0 10px 0 0; }
.subnavmenu ul.right {
float: right;
width: 80%; }
.subnavmenu ul.right li {
float: right;
padding: 0 0 0 40px; }
.subnavmenu ul li {
font-size: 9pt;
line-height: 30px;
margin-bottom: 5px;
margin-top: 5px; }
.subnavmenu ul li.active a {
color: rgba(51, 51, 51, 0.6); }
.subnavmenu ul li a {
color: #000;
text-transform: uppercase; }
.subnavmenu .health-info,
.subnavmenu .db-info,
.subnavmenu .db-state,
.subnavmenu .health-state {
font-weight: 600; }
.subnavmenu .health-info,
.subnavmenu .db-info,
.subnavmenu .db-icon {
color: rgba(0, 0, 0, 0.64); }
.subnavmenu .health-state {
color: #7dbc42; }
.subnavmenu .health-icon {
color: #7dbc42; }
.arangoDataTable {
border-spacing: 0 0;
position: relative;
@ -8191,7 +8293,7 @@ main {
.arangoDataTable .dataTable .noPointer tr {
cursor: default; }
.arangoDataTable .selected-row {
background-color: #8aa051 !important; }
background-color: #7dbc42 !important; }
.arangoDataTable .selected-row div {
color: #fff !important; }
.arangoDataTable .selected-row li {
@ -8287,7 +8389,7 @@ table .sorting {
.edit-index-table tfoot {
border-top: 1px solid #f7f3f2; }
.edit-index-table tfoot i {
color: #8aa051;
color: #7dbc42;
font-size: 19px;
margin-left: 16px;
margin-top: 5px; }
@ -8316,7 +8418,7 @@ table .sorting {
.index-button-bar {
float: right; }
.index-button-bar i {
color: #8aa051;
color: #7dbc42;
font-size: 16pt;
margin-right: 43px; }
.index-button-bar i:hover {

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,34 +1,47 @@
</head>
<body>
<nav class="navbar">
<div class="resizecontainer">
<div class="navlogo">
<a class="logo" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"/></a>
<div class="bodyWrapper">
<nav class="navbar">
<div class="primary">
<div class="resizecontainer">
<div class="navlogo">
<a class="logo" href="#"><img class="arangodbLogo" src="img/DEVLOGO.png"/></a>
</div>
<div id="progressPlaceholderIcon"></div>
<div class="statmenu" id="statisticBar">
</div>
<div class="usermenu" id="userBar" style="float:right;">
</div>
<div class="notificationmenu" id="notificationBar" style="float:right;">
</div>
<div class="navmenu" id="navigationBar">
</div>
</div>
</div>
<div id="progressPlaceholderIcon"></div>
<div class="statmenu" id="statisticBar">
</div>
<div class="usermenu" id="userBar" style="float:right;">
</div>
<div class="notificationmenu" id="notificationBar" style="float:right;">
</div>
<div class="navmenu" id="navigationBar">
<div class="secondary">
<div class="resizecontainer">
<div class="subnavmenu" id="subNavigationBar"></div>
</div>
</div>
</nav>
<div class="centralRow resizecontainer">
<div id="content" class="centralContent"></div>
</div>
</nav>
<div class="centralRow resizecontainer">
<div id="content" class="centralContent"></div>
</div>
<div id="modalPlaceholder">
</div>
<div id="modalPlaceholder">
</div>
<div id="progressPlaceholder" style="display:none">
</div>
<div id="progressPlaceholder" style="display:none">
</div>
<div id="spotlightPlaceholder" style="display:none">
</div>
<div id="spotlightPlaceholder" style="display:none">
</div>
</div>
</div>

View File

@ -7,3 +7,4 @@
<link href="css/style.css" rel="stylesheet">
<link href="css/sass.css" rel="stylesheet">
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<link href='https://fonts.googleapis.com/css?family=Lato:400,300,700' rel='stylesheet' type='text/css'>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,38 @@
/*global window, Backbone, console */
(function() {
"use strict";
window.AutomaticRetryCollection = Backbone.Collection.extend({
_retryCount: 0,
checkRetries: function() {
var self = this;
this.updateUrl();
if (this._retryCount > 10) {
window.setTimeout(function() {
self._retryCount = 0;
}, 10000);
window.App.clusterUnreachable();
return false;
}
return true;
},
successFullTry: function() {
this._retryCount = 0;
},
failureTry: function(retry, ignore, err) {
if (err.status === 401) {
window.App.requestAuth();
} else {
window.App.clusterPlan.rotateCoordinator();
this._retryCount++;
retry();
}
}
});
}());

View File

@ -0,0 +1,31 @@
/*global Backbone, window */
window.ClusterStatisticsCollection = Backbone.Collection.extend({
model: window.Statistics,
url: "/_admin/statistics",
updateUrl: function() {
this.url = window.App.getNewRoute(this.host) + this.url;
},
initialize: function(models, options) {
this.host = options.host;
window.App.registerForUpdate(this);
},
// The callback has to be invokeable for each result individually
// TODO RE-ADD Auth
/*
fetch: function(callback, errCB) {
this.forEach(function (m) {
m.fetch({
beforeSend: window.App.addAuth.bind(window.App),
error: function() {
errCB(m);
}
}).done(function() {
callback(m);
});
});
}*/
});

View File

@ -0,0 +1,88 @@
/*global window, Backbone, console */
(function() {
"use strict";
window.ClusterCoordinators = window.AutomaticRetryCollection.extend({
model: window.ClusterCoordinator,
url: "/_admin/aardvark/cluster/Coordinators",
updateUrl: function() {
this.url = window.App.getNewRoute("Coordinators");
},
initialize: function() {
//window.App.registerForUpdate(this);
},
statusClass: function(s) {
switch (s) {
case "ok":
return "success";
case "warning":
return "warning";
case "critical":
return "danger";
case "missing":
return "inactive";
default:
return "danger";
}
},
getStatuses: function(cb, nextStep) {
if(!this.checkRetries()) {
return;
}
var self = this;
this.fetch({
beforeSend: window.App.addAuth.bind(window.App),
error: self.failureTry.bind(self, self.getStatuses.bind(self, cb, nextStep))
}).done(function() {
self.successFullTry();
self.forEach(function(m) {
cb(self.statusClass(m.get("status")), m.get("address"));
});
nextStep();
});
},
byAddress: function (res, callback) {
if(!this.checkRetries()) {
return;
}
var self = this;
this.fetch({
beforeSend: window.App.addAuth.bind(window.App),
error: self.failureTry.bind(self, self.byAddress.bind(self, res, callback))
}).done(function() {
self.successFullTry();
res = res || {};
self.forEach(function(m) {
var addr = m.get("address");
addr = addr.split(":")[0];
res[addr] = res[addr] || {};
res[addr].coords = res[addr].coords || [];
res[addr].coords.push(m);
});
callback(res);
});
},
checkConnection: function(callback) {
var self = this;
if(!this.checkRetries()) {
return;
}
this.fetch({
beforeSend: window.App.addAuth.bind(window.App),
error: self.failureTry.bind(self, self.checkConnection.bind(self, callback))
}).done(function() {
self.successFullTry();
callback();
});
}
});
}());

View File

@ -0,0 +1,153 @@
/*global window, Backbone, _, console */
(function() {
"use strict";
window.ClusterServers = window.AutomaticRetryCollection.extend({
model: window.ClusterServer,
host: '',
url: "/_admin/aardvark/cluster/DBServers",
updateUrl: function() {
//this.url = window.App.getNewRoute("DBServers");
this.url = window.App.getNewRoute(this.host) + this.url;
},
initialize: function(models, options) {
this.host = options.host;
window.App.registerForUpdate(this);
},
statusClass: function(s) {
switch (s) {
case "ok":
return "success";
case "warning":
return "warning";
case "critical":
return "danger";
case "missing":
return "inactive";
default:
return "danger";
}
},
getStatuses: function(cb) {
if(!this.checkRetries()) {
return;
}
var self = this,
completed = function() {
self.successFullTry();
self._retryCount = 0;
self.forEach(function(m) {
cb(self.statusClass(m.get("status")), m.get("address"));
});
};
// This is the first function called in
// Each update loop
this.fetch({
beforeSend: window.App.addAuth.bind(window.App),
error: self.failureTry.bind(self, self.getStatuses.bind(self, cb))
}).done(completed);
},
byAddress: function (res, callback) {
if(!this.checkRetries()) {
return;
}
var self = this;
this.fetch({
beforeSend: window.App.addAuth.bind(window.App),
error: self.failureTry.bind(self, self.byAddress.bind(self, res, callback))
}).done(function() {
self.successFullTry();
res = res || {};
self.forEach(function(m) {
var addr = m.get("address");
addr = addr.split(":")[0];
res[addr] = res[addr] || {};
res[addr].dbs = res[addr].dbs || [];
res[addr].dbs.push(m);
});
callback(res);
});
},
getList: function(callback) {
throw "Do not use";
/*
var self = this;
this.fetch({
beforeSend: window.App.addAuth.bind(window.App),
error: self.failureTry.bind(self, self.getList.bind(self, callback))
}).done(function() {
self.successFullTry();
var res = [];
_.each(self.where({role: "primary"}), function(m) {
var e = {};
e.primary = m.forList();
if (m.get("secondary")) {
e.secondary = self.get(m.get("secondary")).forList();
}
res.push(e);
});
callback(res);
});
*/
},
getOverview: function() {
throw "Do not use DbServer.getOverview";
/*
this.fetch({
async: false,
beforeSend: window.App.addAuth.bind(window.App)
});
var res = {
plan: 0,
having: 0,
status: "ok"
},
self = this,
updateStatus = function(to) {
if (res.status === "critical") {
return;
}
res.status = to;
};
_.each(this.where({role: "primary"}), function(m) {
res.plan++;
switch (m.get("status")) {
case "ok":
res.having++;
break;
case "warning":
res.having++;
updateStatus("warning");
break;
case "critical":
var bkp = self.get(m.get("secondary"));
if (!bkp || bkp.get("status") === "critical") {
updateStatus("critical");
} else {
if (bkp.get("status") === "ok") {
res.having++;
updateStatus("warning");
}
}
break;
default:
console.debug("Undefined server state occurred. This is still in development");
}
});
return res;
*/
}
});
}());

View File

@ -0,0 +1,12 @@
/*jshint browser: true */
/*jshint unused: false */
/*global window, Backbone, $ */
(function() {
"use strict";
window.CoordinatorCollection = Backbone.Collection.extend({
model: window.Coordinator,
url: "/_admin/aardvark/cluster/Coordinators"
});
}());

View File

@ -0,0 +1,31 @@
/*global window, Backbone */
(function() {
"use strict";
window.ClusterCoordinator = Backbone.Model.extend({
defaults: {
"name": "",
"status": "ok",
"address": "",
"protocol": ""
},
idAttribute: "name",
/*
url: "/_admin/aardvark/cluster/Coordinators";
updateUrl: function() {
this.url = window.getNewRoute("Coordinators");
},
*/
forList: function() {
return {
name: this.get("name"),
status: this.get("status"),
url: this.get("url")
};
}
});
}());

View File

@ -0,0 +1,31 @@
/*global window, Backbone */
(function() {
"use strict";
window.ClusterServer = Backbone.Model.extend({
defaults: {
name: "",
address: "",
role: "",
status: "ok"
},
idAttribute: "name",
/*
url: "/_admin/aardvark/cluster/DBServers";
updateUrl: function() {
this.url = window.getNewRoute("DBServers");
},
*/
forList: function() {
return {
name: this.get("name"),
address: this.get("address"),
status: this.get("status")
};
}
});
}());

View File

@ -0,0 +1,15 @@
/*global window, Backbone */
(function() {
"use strict";
window.Coordinator = Backbone.Model.extend({
defaults: {
address: "",
protocol: "",
name: "",
status: ""
}
});
}());

View File

@ -6,8 +6,13 @@
"use strict";
window.Router = Backbone.Router.extend({
toUpdate: [],
dbServers: [],
isCluster: false,
routes: {
"": "dashboard",
"": "cluster",
"dashboard": "dashboard",
"collections": "collections",
"new": "newCollection",
@ -26,6 +31,7 @@
"graph/:name": "showGraph",
"userManagement": "userManagement",
"userProfile": "userProfile",
"cluster": "cluster",
"logs": "logs",
"test": "test"
},
@ -93,6 +99,19 @@
this.arangoCollectionsStore = new window.arangoCollections();
this.arangoDocumentStore = new window.arangoDocument();
//Cluster
this.coordinatorCollection = new window.ClusterCoordinators();
this.coordinatorCollection.fetch({
error: function() {
self.isCluster = false;
},
success: function() {
self.isCluster = true;
self.fetchDBS();
}
});
arangoHelper.setDocumentStore(this.arangoDocumentStore);
this.arangoCollectionsStore.fetch();
@ -130,6 +149,34 @@
},
cluster: function (initialized) {
this.checkUser();
if (!initialized) {
this.waitForInit(this.cluster.bind(this));
return;
}
this.clusterView = new window.ClusterView({
coordinators: this.coordinatorCollection,
dbServers: this.dbServers
});
this.clusterView.render();
},
addAuth: function (xhr) {
var u = this.clusterPlan.get("user");
if (!u) {
xhr.abort();
if (!this.isCheckingUser) {
this.requestAuth();
}
return;
}
var user = u.name;
var pass = u.passwd;
var token = user.concat(":", pass);
xhr.setRequestHeader('Authorization', "Basic " + btoa(token));
},
logs: function (initialized) {
this.checkUser();
if (!initialized) {
@ -505,7 +552,32 @@
});
}
this.userManagementView.render(true);
},
fetchDBS: function() {
var self = this;
this.coordinatorCollection.each(function(coordinator) {
self.dbServers.push(
new window.ClusterServers([], {
host: coordinator.get('address')
})
);
});
_.each(this.dbServers, function(dbservers) {
dbservers.fetch();
});
},
getNewRoute: function(host) {
return "http://" + host;
},
registerForUpdate: function(o) {
this.toUpdate.push(o);
o.updateUrl();
}
});
}());

View File

@ -1 +0,0 @@
<!-- obsolete file -->

View File

@ -0,0 +1,65 @@
<script id="clusterView.ejs" type="text/template">
<div id="clusterContent" class="innerContent">
<div class="pure-g cluster-values">
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterNodes" class="value">7</div>
<div class="graphLabel">Nodes</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterRam" class="value">23%</div>
<div class="graphLabel">RAM</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterConnections" class="value">33</div>
<div class="graphLabel">Connections</div>
</div>
</div>
<div class="pure-u-1-2 pure-u-md-1-4">
<div class="valueWrapper">
<div id="clusterConnectionsAvg" class="value">22</div>
<div class="graphLabel">Connections AVG</div>
</div>
</div>
</div>
<div class="pure-g cluster-graphs">
<div class="pure-u-1-1 pure-u-md-24-24 pure-u-lg-12-24">
<div class="graphWrapper">
<div id='clusterData'></div>
<div class="graphLabel">DATA</div>
</div>
</div>
<div class="pure-u-1-1 pure-u-md-12-24 pure-u-lg-6-24">
<div class="graphWrapper">
<div id='clusterHttp'></div>
<div class="graphLabel">HTTP</div>
</div>
</div>
<div class="pure-u-1-1 pure-u-md-12-24 pure-u-lg-6-24">
<div class="graphWrapper">
<div id='clusterAverage'></div>
<div class="graphLabel">TRANSFER SIZE</div>
</div>
</div>
</div>
</div>
</script>

View File

@ -1,5 +1,7 @@
<script id="dbSelectionView.ejs" type="text/template">
<a href="#" class="tab" id="dbselection"></span><div class="dbselection">DB: <%=current%></div> <b class="caret"></b></a>
<a href="#" class="tab" id="dbselection"></span><div class="dbselection"><span class="db-name">DB: </span> <%=current%><i class="fa fa-caret-square-o-down"></i></div>
<!-- <b class="caret"></b> -->
</a>
<ul class="link-dropdown-menu" id="dbs_dropdown">
<%
if (list.length > 0) {

View File

@ -1,13 +1,18 @@
<script id="navigationView.ejs" type="text/template">
<ul class="navlist arango-collection-ul" id="arangoCollectionUl">
<li class="collections-menu"><a id="cluster" class="tab" href="#collections">Cluster</a></li>
<li class="collections-menu"><a id="nodes" class="tab" href="#collections">Nodes</a></li>
<li class="navbar-spacer big"></li>
<li id="dbSelect" class="dropdown databases-menu"></li>
<li class="collections-menu"><a id="collections" class="tab" href="#collections">Collections</a></li>
<li class="demo-menu"><a id="demo" class="tab" href="#demo">Demo</a></li>
<li class="query-menu"><a id="query" class="tab" href="#query">Queries</a></li>
<li class="graph-menu"><a id="graph" class="tab" href="#graph">Graphs</a></li>
<li class="applications-menu">
<a id="applications" class="tab" href="#applications">Services</a>
</li>
<li class="query-menu"><a id="query" class="tab" href="#query">AQL Editor</a></li>
<li class="users-menu"><a id="users" class="tab" href="#manage">Users</a></li>
<li class="query-menu"><a id="settings" class="tab" href="#settings"><i class="fa fa-cog"></i></a></li>
<!--
<li class="navbar-spacer big"></li>
<li class="dropdown tools-menu" id="toolsDropdown">
<a href="#" class="tab" id="tools">Tools <b class="caret"></b></a>
@ -52,6 +57,7 @@
<li class="dropdown-item"><a href="https://www.arangodb.com" target="_blank">ArangoDB.com</a></li>
</ul>
</li>
-->
</ul>
<select id="arangoCollectionSelect" class="arango-collection-select">

View File

@ -1,16 +1,11 @@
<script id="queryView2.ejs" type="text/template">
<div class="headerBar">
<a class="arangoHeader">AQL Editor 2</a>
</div>
<div id="queryContent" class="queryContent">
<div class="arangoToolbar arangoToolbarTop">
<div class="pull-left">
<button id="toggleQueries1" class="button-success"><i class="fa fa-star-o"></i>Queries</button>
<button id="toggleQueries2" class="button-success" style="display: none"><i class="fa fa-star"></i>Queries</button>
<button id="toggleQueries1" class="button-primary"><i class="fa fa-star-o"></i>Queries</button>
<button id="toggleQueries2" class="button-primary" style="display: none"><i class="fa fa-star"></i>Queries</button>
<button id="saveCurrentQuery" class="button-success"><i class="fa fa-save"></i>Save</button>
</div>
@ -49,7 +44,7 @@
<button id="exportQuery" class="button-success query-button" style="display:none">Export Queries</button>
<button id="importQuery" class="button-success query-button" style="display:none">Import Queries</button>
<button id="executeQuery" class="button-success query-button">Execute</button>
<button id="explainQuery" class="button-success query-button">Explain</button>
<button id="explainQuery" class="button-info query-button">Explain</button>
<button id="removeResults" class="button-close query-button" style="display: none">Remove results</button>
</div>
</div>

View File

@ -0,0 +1,25 @@
<script id="subNavigationView.ejs" type="text/template">
<ul class="subMenuEntries left">
<li class="subMenuEntry">
<a class="health-info">HEALTH: </a>
<a class="health-state">GOOD</a>
<a class="health-icon">
<i class="fa fa-check-circle"></i>
</a>
</li>
</ul>
<ul class="subMenuEntries right">
<li class="subMenuEntry">
<a>Slow Query History</a>
</li>
<li class="subMenuEntry">
<a>Running Queries</a>
</li>
<li class="subMenuEntry active">
<a>Editor</a>
</li>
</ul>
</script>

View File

@ -0,0 +1,513 @@
/*jshint browser: true */
/*jshint unused: false */
/*global arangoHelper, Backbone, templateEngine, $, window, _, nv, d3 */
(function () {
"use strict";
window.ClusterView = Backbone.View.extend({
el: '#content',
template: templateEngine.createTemplate("clusterView.ejs"),
events: {
},
historyInit: false,
interval: 3000,
maxValues: 100,
knownServers: [],
chartData: {},
charts: {},
nvcharts: [],
startHistory: {},
startHistoryAccumulated: {},
initialize: function () {
var self = this;
if (window.App.isCluster) {
this.dbServers = this.options.dbServers;
this.coordinators = this.options.coordinators;
this.updateServerTime();
//start polling with interval
window.setInterval(function() {
var callback = function(data) {
self.rerenderValues(data);
self.rerenderGraphs(data);
};
// now fetch the statistics history
self.getCoordStatHistory(callback);
}, this.interval);
}
},
render: function () {
this.$el.html(this.template.render({}));
this.initValues();
this.getServerStatistics();
this.initGraphs();
},
updateServerTime: function() {
this.serverTime = new Date().getTime();
},
getServerStatistics: function() {
var self = this;
this.data = undefined;
var coord = this.coordinators.first();
this.statCollectCoord = new window.ClusterStatisticsCollection([],
{host: coord.get('address')}
);
this.statCollectDBS = new window.ClusterStatisticsCollection([],
{host: coord.get('address')}
);
// create statistics collector for DB servers
var dbsmodels = [];
_.each(this.dbServers, function(dbs) {
dbs.each(function(model) {
dbsmodels.push(model);
});
});
_.each(dbsmodels, function (dbserver) {
if (dbserver.get("status") !== "ok") {
return;
}
if (self.knownServers.indexOf(dbserver.id) === -1) {
self.knownServers.push(dbserver.id);
}
var stat = new window.Statistics({name: dbserver.id});
stat.url = coord.get("protocol") + "://"
+ coord.get("address")
+ "/_admin/clusterStatistics?DBserver="
+ dbserver.get("name");
self.statCollectDBS.add(stat);
});
// create statistics collector for coordinator
this.coordinators.forEach(function (coordinator) {
if (coordinator.get("status") !== "ok") {return;}
if (self.knownServers.indexOf(coordinator.id) === -1) {
self.knownServers.push(coordinator.id);
}
var stat = new window.Statistics({name: coordinator.id});
stat.url = coordinator.get("protocol") + "://"
+ coordinator.get("address")
+ "/_admin/statistics";
self.statCollectCoord.add(stat);
});
// first load history callback
var callback = function(data) {
self.rerenderValues(data);
self.rerenderGraphs(data);
};
// now fetch the statistics history
self.getCoordStatHistory(callback);
this.updateValues();
},
rerenderValues: function(data) {
//Connections
this.renderValue('#clusterConnections', Math.round(data.clientConnectionsCurrent));
this.renderValue('#clusterConnectionsAvg', Math.round(data.clientConnections15M));
//RAM
var totalMem = data.physicalMemory;
var usedMem = data.residentSizeCurrent;
this.renderValue('#clusterRam', [usedMem, totalMem]);
},
renderValue: function(id, value) {
if (typeof value === 'number') {
$(id).html(value);
}
else if ($.isArray(value)) {
var a = value[0], b = value[1];
var percent = 1 / (b/a) * 100;
$(id).html(percent.toFixed(1) + ' %');
}
},
updateValues: function() {
this.renderValue('#clusterNodes', this.statCollectCoord.size());
this.renderValue('#clusterRam', [1024, 4096]);
},
initValues: function() {
var values = [
"#clusterNodes",
"#clusterRam",
"#clusterConnections",
"#clusterConnectionsAvg",
];
_.each(values, function(id) {
$(id).html('<i class="fa fa-spin fa-circle-o-notch" style="color: rgba(0, 0, 0, 0.64);"></i>');
});
},
graphData: {
data: {
sent: [],
received: []
},
http: [],
average: []
},
checkArraySizes: function() {
var self = this;
_.each(self.chartsOptions, function(val1, key1) {
_.each(val1.options, function(val2, key2) {
console.log(self.chartsOptions[key1].options[key2].values.length);
if (val2.values.length === self.maxValues) {
self.chartsOptions[key1].options[key2].values.shift();
}
});
});
},
formatDataForGraph: function(data) {
var self = this;
if (!self.historyInit) {
_.each(data.times, function(time, key) {
//DATA
self.chartsOptions[0].options[0].values.push({x:time, y: data.bytesSentPerSecond[key]});
self.chartsOptions[0].options[1].values.push({x:time, y: data.bytesReceivedPerSecond[key]});
//HTTP
self.chartsOptions[1].options[0].values.push({x:time, y: self.calcTotalHttp(data.http, key)});
//AVERAGE
self.chartsOptions[2].options[0].values.push({x:time, y: data.avgRequestTime[key]});
});
self.historyInit = true;
}
else {
self.checkArraySizes();
//DATA
self.chartsOptions[0].options[0].values.push({
x: data.times[data.times.length - 1],
y: data.bytesSentPerSecond[data.bytesSentPerSecond.length - 1]
});
self.chartsOptions[0].options[1].values.push({
x: data.times[data.times.length - 1],
y: data.bytesReceivedPerSecond[data.bytesReceivedPerSecond.length - 1]
});
//HTTP
self.chartsOptions[1].options[0].values.push({
x: data.times[data.times.length - 1],
y: self.calcTotalHttp(data.http, data.bytesSentPerSecond.length - 1)
});
//AVERAGE
self.chartsOptions[2].options[0].values.push({
x: data.times[data.times.length - 1],
y: data.avgRequestTime[data.bytesSentPerSecond.length - 1]
});
}
},
chartsOptions: [
{
id: "#clusterData",
count: 2,
options: [
{
area: true,
values: [],
key: "Bytes out",
color: 'rgb(23,190,207)',
strokeWidth: 2,
fillOpacity: 0.1
},
{
area: true,
values: [],
key: "Bytes in",
color: "rgb(188, 189, 34)",
strokeWidth: 2,
fillOpacity: 0.1
}
]
},
{
id: "#clusterHttp",
options: [{
area: true,
values: [],
key: "Bytes",
color: "rgb(0, 166, 90)",
fillOpacity: 0.1
}]
},
{
id: "#clusterAverage",
data: [],
options: [{
area: true,
values: [],
key: "Bytes",
color: "rgb(243, 156, 18)",
fillOpacity: 0.1
}]
}
],
initGraphs: function() {
var self = this;
_.each(self.chartsOptions, function(c) {
nv.addGraph(function() {
self.charts[c.id] = nv.models.stackedAreaChart()
.options({
transitionDuration: 300,
useInteractiveGuideline: true,
showControls: false,
noData: 'Fetching data...'
});
self.charts[c.id].xAxis
.axisLabel("")
.tickFormat(function(d) {
var x = new Date(d * 1000);
return (x.getHours() < 10 ? '0' : '') + x.getHours() + ":" +
(x.getMinutes() < 10 ? '0' : '') + x.getMinutes() + ":" +
(x.getSeconds() < 10 ? '0' : '') + x.getSeconds();
})
.staggerLabels(false);
// TODO UPDATE SINGLE VALUES AFTER UPDATE
self.charts[c.id].yAxis
.axisLabel('')
.tickFormat(function(d) { //TODO 1k bytes sizes
if (d === null) {
return 'N/A';
}
return d3.format(',.2f')(d);
});
var data, lines = self.returnGraphOptions(c.id);
if (lines.length > 0) {
_.each(lines, function (val, key) {
c.options[key].values = val;
});
}
else {
c.options[0].values = [];
}
data = c.options;
self.chartData[c.id] = d3.select(c.id).append('svg')
.datum(data)
.transition().duration(1000)
.call(self.charts[c.id])
.each('start', function() {
window.setTimeout(function() {
d3.selectAll(c.id + ' *').each(function() {
if (this.__transition__) {
this.__transition__.duration = 1;
}
});
}, 0);
});
nv.utils.windowResize(self.charts[c.id].update);
self.nvcharts.push(self.charts[c.id]);
return self.charts[c.id];
});
});
},
returnGraphOptions: function(id) {
var arr = [];
if (id === '#clusterData') {
//arr = [this.graphData.data.sent, this.graphData.data.received];
arr = [
this.chartsOptions[0].options[0].values,
this.chartsOptions[0].options[1].values
];
}
else if (id === '#clusterHttp') {
arr = [this.chartsOptions[1].options[0].values];
}
else if (id === '#clusterAverage') {
arr = [this.chartsOptions[2].options[0].values];
}
else {
arr = [];
}
return arr;
},
rerenderGraphs: function(input) {
var self = this, data, lines;
this.formatDataForGraph(input);
_.each(self.chartsOptions, function(c) {
lines = self.returnGraphOptions(c.id);
if (lines.length > 0) {
_.each(lines, function (val, key) {
c.options[key].values = val;
});
}
else {
c.options[0].values = [];
}
data = c.options;
//update nvd3 chart
if (data[0].values.length > 0) {
if (self.historyInit) {
if (self.charts[c.id]) {
self.charts[c.id].update();
}
}
}
});
},
calcTotalHttp: function(object, pos) {
var sum = 0;
_.each(object, function(totalHttp) {
sum += totalHttp[pos];
});
return sum;
},
getCoordStatHistory: function(callback) {
var self = this, promises = [], historyUrl;
var merged = {
http: {}
};
var getHistory = function(url) {
return $.get(url, {count: self.statCollectCoord.size()}, null, 'json');
};
var mergeHistory = function(data) {
var onetime = ['times'];
var values = [
'physicalMemory',
'residentSizeCurrent',
'clientConnections15M',
'clientConnectionsCurrent'
];
var http = [
'optionsPerSecond',
'putsPerSecond',
'headsPerSecond',
'postsPerSecond',
'getsPerSecond',
'deletesPerSecond',
'othersPerSecond',
'patchesPerSecond'
];
var arrays = [
'bytesSentPerSecond',
'bytesReceivedPerSecond',
'avgRequestTime'
];
var counter = 0, counter2;
_.each(data, function(stat) {
if (typeof stat === 'object') {
if (counter === 0) {
//one time value
_.each(onetime, function(value) {
merged[value] = stat[value];
});
//values
_.each(values, function(value) {
merged[value] = stat[value];
});
//http requests arrays
_.each(http, function(value) {
merged.http[value] = stat[value];
});
//arrays
_.each(arrays, function(value) {
merged[value] = stat[value];
});
}
else {
//values
_.each(values, function(value) {
merged[value] = merged[value] + stat[value];
});
//http requests arrays
_.each(http, function(value) {
counter2 = 0;
_.each(stat[value], function(x) {
merged.http[value][counter] = merged.http[value][counter] + x;
counter2++;
});
});
_.each(arrays, function(value) {
counter2 = 0;
_.each(stat[value], function(x) {
merged[value][counter] = merged[value][counter] + x;
counter2++;
});
});
}
counter++;
}
});
};
this.statCollectCoord.each(function(coord) {
historyUrl = coord.url + '/short';
promises.push(getHistory(historyUrl));
});
$.when.apply($, promises).done(function() {
//wait until all data is here
var arr = [];
_.each(promises, function(stat) {
arr.push(stat.responseJSON);
});
mergeHistory(arr);
callback(merged);
});
}
});
}());

View File

@ -42,6 +42,7 @@
},
template: templateEngine.createTemplate("navigationView.ejs"),
templateSub: templateEngine.createTemplate("subNavigationView.ejs"),
render: function () {
var self = this;
@ -49,6 +50,12 @@
$(this.el).html(this.template.render({
currentDB: this.currentDB
}));
//HEIKO
$("#subNavigationBar").html(this.templateSub.render({
}));
//HEIKO REMOVE
this.dbSelectionView.render($("#dbSelect"));
this.notificationView.render($("#notificationBar"));

View File

@ -793,11 +793,11 @@
//init aql editor
this.aqlEditor = ace.edit("aqlEditor");
this.aqlEditor.getSession().setMode("ace/mode/aql");
this.aqlEditor.setFontSize("13px");
this.aqlEditor.setFontSize("10pt");
this.bindParamAceEditor = ace.edit("bindParamAceEditor");
this.bindParamAceEditor.getSession().setMode("ace/mode/json");
this.bindParamAceEditor.setFontSize("13px");
this.bindParamAceEditor.setFontSize("10pt");
this.bindParamAceEditor.getSession().on('change', function() {
try {

View File

@ -0,0 +1,586 @@
/*global window, $, Backbone, templateEngine, alert, _, d3, Dygraph, document */
(function() {
"use strict";
window.ShowClusterView = Backbone.View.extend({
detailEl: '#modalPlaceholder',
el: "#content",
defaultFrame: 20 * 60 * 1000,
template: templateEngine.createTemplate("showCluster.ejs"),
modal: templateEngine.createTemplate("waitModal.ejs"),
detailTemplate: templateEngine.createTemplate("detailView.ejs"),
events: {
"change #selectDB" : "updateCollections",
"change #selectCol" : "updateShards",
"click .dbserver.success" : "dashboard",
"click .coordinator.success" : "dashboard"
},
replaceSVGs: function() {
$(".svgToReplace").each(function() {
var img = $(this);
var id = img.attr("id");
var src = img.attr("src");
$.get(src, function(d) {
var svg = $(d).find("svg");
svg.attr("id", id)
.attr("class", "icon")
.removeAttr("xmlns:a");
img.replaceWith(svg);
}, "xml");
});
},
updateServerTime: function() {
this.serverTime = new Date().getTime();
},
setShowAll: function() {
this.graphShowAll = true;
},
resetShowAll: function() {
this.graphShowAll = false;
this.renderLineChart();
},
initialize: function() {
this.interval = 10000;
this.isUpdating = false;
this.timer = null;
this.knownServers = [];
this.graph = undefined;
this.graphShowAll = false;
this.updateServerTime();
this.dygraphConfig = this.options.dygraphConfig;
this.dbservers = new window.ClusterServers([], {
interval: this.interval
});
this.coordinators = new window.ClusterCoordinators([], {
interval: this.interval
});
this.documentStore = new window.arangoDocuments();
this.statisticsDescription = new window.StatisticsDescription();
this.statisticsDescription.fetch({
async: false
});
this.dbs = new window.ClusterDatabases([], {
interval: this.interval
});
this.cols = new window.ClusterCollections();
this.shards = new window.ClusterShards();
this.startUpdating();
},
listByAddress: function(callback) {
var byAddress = {};
var self = this;
this.dbservers.byAddress(byAddress, function(res) {
self.coordinators.byAddress(res, callback);
});
},
updateCollections: function() {
var self = this;
var selCol = $("#selectCol");
var dbName = $("#selectDB").find(":selected").attr("id");
if (!dbName) {
return;
}
var colName = selCol.find(":selected").attr("id");
selCol.html("");
this.cols.getList(dbName, function(list) {
_.each(_.pluck(list, "name"), function(c) {
selCol.append("<option id=\"" + c + "\">" + c + "</option>");
});
var colToSel = $("#" + colName, selCol);
if (colToSel.length === 1) {
colToSel.prop("selected", true);
}
self.updateShards();
});
},
updateShards: function() {
var dbName = $("#selectDB").find(":selected").attr("id");
var colName = $("#selectCol").find(":selected").attr("id");
this.shards.getList(dbName, colName, function(list) {
$(".shardCounter").html("0");
_.each(list, function(s) {
$("#" + s.server + "Shards").html(s.shards.length);
});
});
},
updateServerStatus: function(nextStep) {
var self = this;
var callBack = function(cls, stat, serv) {
var id = serv,
type, icon;
id = id.replace(/\./g,'-');
id = id.replace(/\:/g,'_');
icon = $("#id" + id);
if (icon.length < 1) {
// callback after view was unrendered
return;
}
type = icon.attr("class").split(/\s+/)[1];
icon.attr("class", cls + " " + type + " " + stat);
if (cls === "coordinator") {
if (stat === "success") {
$(".button-gui", icon.closest(".tile")).toggleClass("button-gui-disabled", false);
} else {
$(".button-gui", icon.closest(".tile")).toggleClass("button-gui-disabled", true);
}
}
};
this.coordinators.getStatuses(callBack.bind(this, "coordinator"), function() {
self.dbservers.getStatuses(callBack.bind(self, "dbserver"));
nextStep();
});
},
updateDBDetailList: function() {
var self = this;
var selDB = $("#selectDB");
var dbName = selDB.find(":selected").attr("id");
selDB.html("");
this.dbs.getList(function(dbList) {
_.each(_.pluck(dbList, "name"), function(c) {
selDB.append("<option id=\"" + c + "\">" + c + "</option>");
});
var dbToSel = $("#" + dbName, selDB);
if (dbToSel.length === 1) {
dbToSel.prop("selected", true);
}
self.updateCollections();
});
},
rerender : function() {
var self = this;
this.updateServerStatus(function() {
self.getServerStatistics(function() {
self.updateServerTime();
self.data = self.generatePieData();
self.renderPieChart(self.data);
self.renderLineChart();
self.updateDBDetailList();
});
});
},
render: function() {
this.knownServers = [];
delete this.hist;
var self = this;
this.listByAddress(function(byAddress) {
if (Object.keys(byAddress).length === 1) {
self.type = "testPlan";
} else {
self.type = "other";
}
self.updateDBDetailList();
self.dbs.getList(function(dbList) {
$(self.el).html(self.template.render({
dbs: _.pluck(dbList, "name"),
byAddress: byAddress,
type: self.type
}));
$(self.el).append(self.modal.render({}));
self.replaceSVGs();
/* this.loadHistory(); */
self.getServerStatistics(function() {
self.data = self.generatePieData();
self.renderPieChart(self.data);
self.renderLineChart();
self.updateDBDetailList();
self.startUpdating();
});
});
});
},
generatePieData: function() {
var pieData = [];
var self = this;
this.data.forEach(function(m) {
pieData.push({key: m.get("name"), value: m.get("system").virtualSize,
time: self.serverTime});
});
return pieData;
},
/*
loadHistory : function() {
this.hist = {};
var self = this;
var coord = this.coordinators.findWhere({
status: "ok"
});
var endpoint = coord.get("protocol")
+ "://"
+ coord.get("address");
this.dbservers.forEach(function (dbserver) {
if (dbserver.get("status") !== "ok") {return;}
if (self.knownServers.indexOf(dbserver.id) === -1) {
self.knownServers.push(dbserver.id);
}
var server = {
raw: dbserver.get("address"),
isDBServer: true,
target: encodeURIComponent(dbserver.get("name")),
endpoint: endpoint,
addAuth: window.App.addAuth.bind(window.App)
};
});
this.coordinators.forEach(function (coordinator) {
if (coordinator.get("status") !== "ok") {return;}
if (self.knownServers.indexOf(coordinator.id) === -1) {
self.knownServers.push(coordinator.id);
}
var server = {
raw: coordinator.get("address"),
isDBServer: false,
target: encodeURIComponent(coordinator.get("name")),
endpoint: coordinator.get("protocol") + "://" + coordinator.get("address"),
addAuth: window.App.addAuth.bind(window.App)
};
});
},
*/
addStatisticsItem: function(name, time, requests, snap) {
var self = this;
if (! self.hasOwnProperty('hist')) {
self.hist = {};
}
if (! self.hist.hasOwnProperty(name)) {
self.hist[name] = [];
}
var h = self.hist[name];
var l = h.length;
if (0 === l) {
h.push({
time: time,
snap: snap,
requests: requests,
requestsPerSecond: 0
});
}
else {
var lt = h[l - 1].time;
var tt = h[l - 1].requests;
if (tt < requests) {
var dt = time - lt;
var ps = 0;
if (dt > 0) {
ps = (requests - tt) / dt;
}
h.push({
time: time,
snap: snap,
requests: requests,
requestsPerSecond: ps
});
}
/*
else {
h.times.push({
time: time,
snap: snap,
requests: requests,
requestsPerSecond: 0
});
}
*/
}
},
getServerStatistics: function(nextStep) {
var self = this;
var snap = Math.round(self.serverTime / 1000);
this.data = undefined;
var statCollect = new window.ClusterStatisticsCollection();
var coord = this.coordinators.first();
// create statistics collector for DB servers
this.dbservers.forEach(function (dbserver) {
if (dbserver.get("status") !== "ok") {return;}
if (self.knownServers.indexOf(dbserver.id) === -1) {
self.knownServers.push(dbserver.id);
}
var stat = new window.Statistics({name: dbserver.id});
stat.url = coord.get("protocol") + "://"
+ coord.get("address")
+ "/_admin/clusterStatistics?DBserver="
+ dbserver.get("name");
statCollect.add(stat);
});
// create statistics collector for coordinator
this.coordinators.forEach(function (coordinator) {
if (coordinator.get("status") !== "ok") {return;}
if (self.knownServers.indexOf(coordinator.id) === -1) {
self.knownServers.push(coordinator.id);
}
var stat = new window.Statistics({name: coordinator.id});
stat.url = coordinator.get("protocol") + "://"
+ coordinator.get("address")
+ "/_admin/statistics";
statCollect.add(stat);
});
var cbCounter = statCollect.size();
this.data = [];
var successCB = function(m) {
cbCounter--;
var time = m.get("time");
var name = m.get("name");
var requests = m.get("http").requestsTotal;
self.addStatisticsItem(name, time, requests, snap);
self.data.push(m);
if (cbCounter === 0) {
nextStep();
}
};
var errCB = function() {
cbCounter--;
if (cbCounter === 0) {
nextStep();
}
};
// now fetch the statistics
statCollect.fetch(successCB, errCB);
},
renderPieChart: function(dataset) {
var w = $("#clusterGraphs svg").width();
var h = $("#clusterGraphs svg").height();
var radius = Math.min(w, h) / 2; //change 2 to 1.4. It's hilarious.
// var color = d3.scale.category20();
var color = this.dygraphConfig.colors;
var arc = d3.svg.arc() //each datapoint will create one later.
.outerRadius(radius - 20)
.innerRadius(0);
var pie = d3.layout.pie()
.sort(function (d) {
return d.value;
})
.value(function (d) {
return d.value;
});
d3.select("#clusterGraphs").select("svg").remove();
var pieChartSvg = d3.select("#clusterGraphs").append("svg")
// .attr("width", w)
// .attr("height", h)
.attr("class", "clusterChart")
.append("g") //someone to transform. Groups data.
.attr("transform", "translate(" + w / 2 + "," + ((h / 2) - 10) + ")");
var arc2 = d3.svg.arc()
.outerRadius(radius-2)
.innerRadius(radius-2);
var slices = pieChartSvg.selectAll(".arc")
.data(pie(dataset))
.enter().append("g")
.attr("class", "slice");
slices.append("path")
.attr("d", arc)
.style("fill", function (item, i) {
return color[i % color.length];
})
.style("stroke", function (item, i) {
return color[i % color.length];
});
slices.append("text")
.attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; })
// .attr("dy", "0.35em")
.style("text-anchor", "middle")
.text(function(d) {
var v = d.data.value / 1024 / 1024 / 1024;
return v.toFixed(2); });
slices.append("text")
.attr("transform", function(d) { return "translate(" + arc2.centroid(d) + ")"; })
// .attr("dy", "1em")
.style("text-anchor", "middle")
.text(function(d) { return d.data.key; });
},
renderLineChart: function() {
var self = this;
var interval = 60 * 20;
var data = [];
var hash = [];
var t = Math.round(new Date().getTime() / 1000) - interval;
var ks = self.knownServers;
var f = function() {
return null;
};
var d, h, i, j, tt, snap;
for (i = 0; i < ks.length; ++i) {
h = self.hist[ks[i]];
if (h) {
for (j = 0; j < h.length; ++j) {
snap = h[j].snap;
if (snap < t) {
continue;
}
if (! hash.hasOwnProperty(snap)) {
tt = new Date(snap * 1000);
d = hash[snap] = [ tt ].concat(ks.map(f));
}
else {
d = hash[snap];
}
d[i + 1] = h[j].requestsPerSecond;
}
}
}
data = [];
Object.keys(hash).sort().forEach(function (m) {
data.push(hash[m]);
});
var options = this.dygraphConfig.getDefaultConfig('clusterRequestsPerSecond');
options.labelsDiv = $("#lineGraphLegend")[0];
options.labels = [ "datetime" ].concat(ks);
self.graph = new Dygraph(
document.getElementById('lineGraph'),
data,
options
);
},
stopUpdating: function () {
window.clearTimeout(this.timer);
delete this.graph;
this.isUpdating = false;
},
startUpdating: function () {
if (this.isUpdating) {
return;
}
this.isUpdating = true;
var self = this;
this.timer = window.setInterval(function() {
self.rerender();
}, this.interval);
},
dashboard: function(e) {
this.stopUpdating();
var tar = $(e.currentTarget);
var serv = {};
var cur;
var coord;
var ip_port = tar.attr("id");
ip_port = ip_port.replace(/\-/g,'.');
ip_port = ip_port.replace(/\_/g,':');
ip_port = ip_port.substr(2);
serv.raw = ip_port;
serv.isDBServer = tar.hasClass("dbserver");
if (serv.isDBServer) {
cur = this.dbservers.findWhere({
address: serv.raw
});
coord = this.coordinators.findWhere({
status: "ok"
});
serv.endpoint = coord.get("protocol")
+ "://"
+ coord.get("address");
}
else {
cur = this.coordinators.findWhere({
address: serv.raw
});
serv.endpoint = cur.get("protocol")
+ "://"
+ cur.get("address");
}
serv.target = encodeURIComponent(cur.get("name"));
window.App.serverToShow = serv;
window.App.dashboard();
},
getCurrentSize: function (div) {
if (div.substr(0,1) !== "#") {
div = "#" + div;
}
var height, width;
$(div).attr("style", "");
height = $(div).height();
width = $(div).width();
return {
height: height,
width: width
};
},
resize: function () {
var dimensions;
if (this.graph) {
dimensions = this.getCurrentSize(this.graph.maindiv_.id);
this.graph.resize(dimensions.width, dimensions.height);
}
}
});
}());

View File

@ -22,10 +22,9 @@
}
%fixedbar {
background-color: $c-lightgreen-2-transp-bg;
//background-color: $c-lightgreen-2-transp-bg;
color: $c-white;
left: 0;
position: fixed;
right: 0;
width: 100%;
z-index: 1000;
@ -67,6 +66,15 @@
}
}
%info {
background-color: $c-info;
&:hover,
&:focus {
background-color: $c-info-hover;
}
}
%icon-positive {
color: $c-positive;

View File

@ -1,12 +1,25 @@
html {
height: 100%;
}
body {
background: $c-lightgreen-2-bg !important;
//background: $c-lightgreen-2-bg !important;
background: none;
color: $c-body-color;
display: block;
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-size: 14px;
font-weight: 400;
height: 100%;
line-height: 20px;
margin: 0;
> .bodyWrapper {
background-image: linear-gradient(to bottom, #e9eae1 0%, #fafbfc 100%);
height: 100%;
margin: 0 auto -42px;
min-height: 100%;
}
}

View File

@ -1,9 +1,9 @@
// Bootstrap Buttons
%bare-btn {
@include border-radius(3px);
@include border-radius(2px);
@include box-shadow(0);
font-size: 14px;
font-weight: 300 !important;
font-weight: 400 !important;
}
%btn {
@ -48,6 +48,11 @@
@extend %positive;
}
.button-info {
@extend %btn;
@extend %info;
}
[class^='button-']:disabled,
button.disabled,
[class*=' button-']:disabled {
@ -103,7 +108,7 @@ button.disabled,
button {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
&.btn-server {
width: 120px;

View File

@ -0,0 +1,56 @@
.graphLabel {
font-family: "Lato", sans-serif;
font-size: 10pt;
font-weight: 600;
margin-top: -25px;
opacity: .5;
padding-bottom: 20px;
text-align: center;
text-transform: uppercase;
}
.cluster-graphs {
> div {
.graphWrapper {
border: 1px solid $c-content-border;
margin-left: -1px;
margin-top: -1px;
.nv-controlsWrap {
display: none;
}
svg {
height: 250px;
margin-left: -17px;
}
}
}
}
.cluster-values {
margin-top: -13px;
> div {
.valueWrapper {
border: 1px solid $c-content-border;
margin-left: -1px;
margin-top: -1px;
.value {
color: $c-positive;
font-size: 24pt;
line-height: 150px;
text-align: center;
}
div:first-child {
height: 150px;
}
}
}
}

View File

@ -1,5 +1,5 @@
.collectionTh {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato Sans', sans-serif !important;
font-size: 14px;
font-weight: 400 !important;
text-align: left;
@ -79,7 +79,7 @@
}
.collectionInfoTh2 {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-weight: 400 !important;
text-align: left;
width: 150px;
@ -99,7 +99,7 @@
border-bottom: 1px solid $c-c2grey;
th {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-weight: 400 !important;
}
}

View File

@ -8,7 +8,8 @@ $c-lightgreen-2-transp-bg: rgba(245, 248, 240, .95);
$c-pong-green: rgb(140, 219, 139);
$c-positive: #8aa051;
//$c-positive: #8aa051;
$c-positive: rgb(125, 188, 66);
$c-positive-hover: #788f3d;
$c-table-odd-color: rgba(104, 103, 102, .05);
@ -39,6 +40,8 @@ $c-header-btn-border: #fff;
$c-black: #000;
$c-white: #fff;
$c-white-transp: rgba(255, 255, 255, .85);
$c-yellow: #ff0;
$c-c2grey: #c2c2c2;
@ -70,6 +73,7 @@ $c-odd: #d9d9d9;
$c-even: #fff;
$c-navbar-spacer: #a0a0a0;
$c-navbar-border: rgba(140,138,137,.25);
$c-navbar-spacer-shadow: #c8c8c8;
$c-btn-inverse: #736b68;
@ -92,6 +96,9 @@ $c-invalid-red: rgba(234, 23, 23, .6);
$c-info-blue: #5bc0de;
$c-blue: #00f;
$c-info: #5bc0de;
$c-info-hover: #5bc0de;
$c-cluster-button-green: #617e2b;
$c-cluster-button-green-hover: #8ba142;

View File

@ -53,7 +53,7 @@
.dygraph-label.dygraph-title {
color: $c-black;
font: {
family: 'Open Sans', sans-serif;
family: 'Lato', sans-serif;
size: 15px;
weight: 400;
}

View File

@ -5,5 +5,18 @@
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.fa {
color: $c-white;
opacity: .3;
}
.fa-database {
margin-right: 5px;
}
.fa-caret-square-o-down {
margin-left: 5px;
}
}

View File

@ -3,7 +3,7 @@ input,
textarea,
.page-title span,
.pingback a.url {
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-weight: 400;
}

View File

@ -1,8 +1,6 @@
.footer {
bottom: 0;
font-size: 14px;
left: 0;
position: fixed;
right: 0;
text-align: center;
z-index: 1000;
@ -10,6 +8,9 @@
footer.footer {
@extend %fixedbar;
//background-color: $c-white-transp;
//background-color: rgba(219, 226, 230, 1);
//border-top: 1px solid $c-navbar-border;
bottom: 0;
height: 40px;

View File

@ -12,7 +12,7 @@
.innerContent {
background-color: $c-white;
border: 1px solid $c-content-border;
border-radius: 3px;
border-radius: 2px;
min-height: 200px;
padding-top: 13px;
}

View File

@ -62,8 +62,6 @@ div.headerBar {
color: $c-white;
font-size: 16px;
height: 36px;
margin-bottom: 5px;
margin-top: 15px;
padding-left: 5px;
padding-right: 5px;
position: relative;

View File

@ -44,7 +44,7 @@
.modal-body {
color: $c-btn-inverse;
font-family: 'Open Sans', sans-serif !important;
font-family: 'Lato', sans-serif !important;
font-size: 14px;
font-weight: 300;
max-height: 410px;

View File

@ -1,11 +1,23 @@
.navbar {
@extend %fixedbar;
-webkit-font-smoothing: subpixel-antialiased;
height: 44px;
height: auto;
margin-bottom: 3px;
padding-top: 6px;
top: 0;
> .primary {
background-color: rgba(0, 0, 0, .7);
}
> .secondary {
background-color: $c-white-transp;
border-bottom: 1px solid $c-content-border;
}
> .resizecontainer {
background-color: $c-white;
}
.no-left-margin {
border: 0;
margin-left: 0;
@ -18,8 +30,8 @@
.arangodbLogo {
height: auto;
margin-left: -5px;
margin-top: -1px;
width: 40%;
margin-top: 6px;
width: 200px;
}
.arango-collection-select {
@ -77,7 +89,7 @@
list-style: none;
> li {
height: 39px;
line-height: 30px;
}
li {
@ -110,14 +122,15 @@
}
&.navbar-spacer {
background-color: $c-navbar-spacer;
background-color: $c-white;
height: 21px;
margin-top: 9px;
margin-top: 14px;
opacity: .2;
width: 1px;
&.big {
margin-left: 15px;
margin-right: 15px;
margin-right: 8px;
}
&.med {
@ -133,8 +146,8 @@
.active {
.tab {
border-bottom: 2px solid $c-positive;
padding-bottom: 4px;
//border-bottom: 2px solid $c-positive;
//padding-bottom: 4px;
}
}
@ -142,26 +155,21 @@
background-color: $c-transp;
a {
color: $c-black;
opacity: .65;
}
}
> .active:hover {
background-color: $c-white;
a {
color: $c-black;
}
}
.dropdown-item:hover,
> li:hover {
background-color: $c-white;
//background-color: $c-white;
border-radius: 3px;
a {
color: $c-black;
color: $c-white;
opacity: .65;
-webkit-tap-highlight-color: transparent;
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1);
transition: opacity .2s cubic-bezier(.645, .045, .355, 1);
}
}
@ -182,9 +190,10 @@
}
.tab {
color: $c-bar-bg;
color: $c-white;
//color: $c-bar-bg;
display: block;
font-size: 12pt;
font-size: 10pt;
font-weight: 100;
padding: {
bottom: 10px;
@ -192,6 +201,7 @@
right: 5px;
top: 9px;
}
text-transform: uppercase;
&.userImg {
padding-bottom: 5px;

View File

@ -31,7 +31,7 @@
.dataNotReadyYet {
color: $c-warning;
font-family: 'Open Sans', sans-serif;
font-family: 'Lato', sans-serif;
font-size: 14px;
font-weight: 100;
text-align: center;

View File

@ -1,3 +1,5 @@
#notification_menu {
.innerDropdownInnerUL {
margin-left: 0;
@ -128,10 +130,11 @@
#stat_hd {
@include border-radius(3px);
background-color: $c-white;
//background-color: $c-white;
border: 1px solid $c-content-border;
height: 25px;
margin-top: 3px;
margin-left: -10px;
margin-top: 8px;
position: relative;
right: 3px;
text-align: center;

View File

@ -158,7 +158,7 @@ toolbar {
select {
background: $c-white;
border: 1px solid $c-c2grey !important;
border-radius: 3px !important;
border-radius: 0 !important;
font-size: 14px;
font-weight: 300;
height: 30px;

View File

@ -27,6 +27,8 @@
.bindParamEditorWrapper,
.aqlEditorWrapper {
background-color: $c-white;
overflow: hidden;
.stringtype {
@ -51,7 +53,7 @@
table {
border-top: 0;
font: 13px/normal Monaco,Menlo,'Ubuntu Mono',Consolas,source-code-pro,monospace;
font-family: 'Lato', sans-serif;
tbody {
display: block;
@ -72,7 +74,7 @@
}
&.selected {
background-color: $c-positive;
background-color: rgba(125, 188, 66, .64);
color: $c-white;
.spanWrapper {
@ -107,7 +109,7 @@
.fa {
cursor: pointer;
font-size: 18pt;
font-size: 16pt;
margin-left: 5px;
margin-right: 5px;
}
@ -125,7 +127,7 @@
@extend %inputs;
clear: both;
float: right;
font: 13px/normal Monaco,Menlo,'Ubuntu Mono',Consolas,source-code-pro,monospace !important;
font-family: 'Lato', sans-serif;
height: 17px;
margin-bottom: 3px;
margin-top: 3px;
@ -134,7 +136,8 @@
}
th {
font: 13px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
font-family: 'Lato', sans-serif;
font-weight: 400;
height: 34px;
padding: 0;
width: 50%;
@ -146,6 +149,27 @@
.bindParamEditorWrapper {
height: 100%;
table {
thead {
tr {
th {
text-align: left;
}
th:first-child {
padding-left: 10px;
}
}
}
tbody {
input {
width: 100% !important;
}
}
}
.selectError {
background: $c-negative;
}
@ -186,7 +210,7 @@
.previewBar {
background-color: $c-white;
border-bottom: 1px solid $c-content-border;
font: 13px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
font-family: 'Lato', sans-serif;
height: 34px;
span {
@ -220,6 +244,15 @@
clear: both;
margin-top: 0;
width: 100%;
.arangoToolbar {
.fa {
&.fa-star,
&.fa-star-o {
color: $c-yellow;
}
}
}
}
.outputEditors {

View File

@ -561,7 +561,7 @@
div.centralRow {
margin: {
bottom: 40px;
top: 40px;
top: 15px;
}
}

View File

@ -0,0 +1,72 @@
.subnavmenu {
background-color: $c-white;
height: auto;
ul {
list-style: none;
margin: 0;
&.left {
float: left;
width: 120px;
li {
float: left;
padding: 0 10px 0 0;
}
}
&.right {
float: right;
width: 80%;
li {
float: right;
padding: 0 0 0 40px;
}
}
li {
font-size: 9pt;
line-height: 30px;
margin-bottom: 5px;
margin-top: 5px;
&.active {
a {
color: rgba(51, 51, 51, .6);
}
}
a {
color: $c-black;
text-transform: uppercase;
}
}
}
.health-info,
.db-info,
.db-state,
.health-state {
font-weight: 600;
}
.health-info,
.db-info,
.db-icon {
color: rgba(0, 0, 0, .64);
}
.health-state {
color: $c-positive;
}
.health-icon {
color: $c-positive;
}
}

View File

@ -76,13 +76,13 @@
}
.arangoToolbarTop {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
//border-top-left-radius: 3px;
//border-top-right-radius: 3px;
}
.arangoToolbarBottom {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
//border-bottom-left-radius: 3px;
//border-bottom-right-radius: 3px;
clear: both;
#executeQuery {

View File

@ -4,7 +4,7 @@
border-radius: 3px !important;
box-shadow: none !important;
color: $c-white !important;
font-family: 'Open Sans',sans-serif !important;
font-family: 'Lato',sans-serif !important;
font-size: 10pt !important;
font-weight: 100 !important;
z-index: 99999999;

View File

@ -71,6 +71,8 @@
@import 'progressView';
// spotlight view
@import 'spotlightView';
// cluster view
@import 'clusterView';
// application detail view
@import 'applicationDetailView';
@ -81,6 +83,8 @@
@import 'arangoTable';
//arangoTabbar Template
@import 'arangoTabbar';
//Sub Navigation
@import 'subNavbar';
// Data Tables, TODO: might all be superflous
@import 'dataTables';

View File

@ -12515,7 +12515,7 @@ var EventEmitter = require("./lib/event_emitter").EventEmitter;
var editorCss = ".ace_editor {\
position: relative;\
overflow: hidden;\
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\
font-family: 'Lato', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\
font-size: 12px;\
line-height: normal;\
direction: ltr;\

File diff suppressed because one or more lines are too long