1
0
Fork 0

Merge branch 'devel' of https://github.com/arangodb/arangodb into devel

This commit is contained in:
jsteemann 2016-04-22 12:37:06 +02:00
commit 84e53cb40a
43 changed files with 555 additions and 339 deletions

View File

@ -63,7 +63,7 @@ struct OperationResult {
OperationResult(std::shared_ptr<VPackBuffer<uint8_t>> buffer,
std::shared_ptr<VPackCustomTypeHandler> handler,
std::string const& message, int code, bool wasSynchronous,
std::unordered_map<int, size_t> countErrorCodes)
std::unordered_map<int, size_t> const& countErrorCodes)
: buffer(buffer),
customTypeHandler(handler),
errorMessage(message),

View File

@ -1506,6 +1506,16 @@ OperationResult Transaction::modifyLocal(
TRI_voc_cid_t cid = addCollectionAtRuntime(collectionName);
TRI_document_collection_t* document = documentCollection(trxCollection(cid));
// First see whether or not we have to do synchronous replication:
std::shared_ptr<std::vector<ServerID> const> followers;
bool doingSynchronousReplication = false;
if (ServerState::instance()->isDBServer()) {
// Now replicate the same operation on all followers:
auto const& followerInfo = document->followers();
followers = followerInfo->get();
doingSynchronousReplication = followers->size() > 0;
}
// Update/replace are a read and a write, let's get the write lock already
// for the read operation:
int res = lock(trxCollection(cid), TRI_TRANSACTION_WRITE);
@ -1536,7 +1546,7 @@ OperationResult Transaction::modifyLocal(
if (res == TRI_ERROR_ARANGO_CONFLICT) {
// still return
if (!options.silent && !isBabies) {
if ((!options.silent || doingSynchronousReplication) && !isBabies) {
std::string key = newVal.get(TRI_VOC_ATTRIBUTE_KEY).copyString();
buildDocumentIdentity(resultBuilder, cid, key, actualRevision,
VPackSlice(),
@ -1549,7 +1559,7 @@ OperationResult Transaction::modifyLocal(
TRI_ASSERT(mptr.getDataPtr() != nullptr);
if (!options.silent) {
if (!options.silent || doingSynchronousReplication) {
std::string key = newVal.get(TRI_VOC_ATTRIBUTE_KEY).copyString();
buildDocumentIdentity(resultBuilder, cid, key,
mptr.revisionIdAsSlice(), actualRevision,
@ -1560,10 +1570,11 @@ OperationResult Transaction::modifyLocal(
};
res = TRI_ERROR_NO_ERROR;
if (newValue.isArray()) {
bool multiCase = newValue.isArray();
std::unordered_map<int, size_t> errorCounter;
resultBuilder.openArray();
if (multiCase) {
{
VPackArrayBuilder guard(&resultBuilder);
VPackArrayIterator it(newValue);
while (it.valid()) {
res = workForOneDocument(it.value(), true);
@ -1572,14 +1583,103 @@ OperationResult Transaction::modifyLocal(
}
++it;
}
resultBuilder.close();
return OperationResult(resultBuilder.steal(), nullptr, "", TRI_ERROR_NO_ERROR,
options.waitForSync, errorCounter);
}
res = TRI_ERROR_NO_ERROR;
} else {
res = workForOneDocument(newValue, false);
return OperationResult(resultBuilder.steal(), nullptr, "", res,
options.waitForSync);
}
if (doingSynchronousReplication && res == TRI_ERROR_NO_ERROR) {
// In the multi babies case res is always TRI_ERROR_NO_ERROR if we
// get here, in the single document case, we do not try to replicate
// in case of an error.
// Now replicate the good operations on all followers:
auto cc = arangodb::ClusterComm::instance();
std::string path
= "/_db/" +
arangodb::basics::StringUtils::urlEncode(_vocbase->_name) +
"/_api/document/" +
arangodb::basics::StringUtils::urlEncode(document->_info.name())
+ "?isRestore=true";
VPackBuilder payload;
auto doOneDoc = [&](VPackSlice doc, VPackSlice result) {
VPackObjectBuilder guard(&payload);
TRI_SanitizeObject(doc, payload);
VPackSlice s = result.get(TRI_VOC_ATTRIBUTE_KEY);
payload.add(TRI_VOC_ATTRIBUTE_KEY, s);
s = result.get(TRI_VOC_ATTRIBUTE_REV);
payload.add(TRI_VOC_ATTRIBUTE_REV, s);
};
VPackSlice ourResult = resultBuilder.slice();
if (multiCase) {
VPackArrayBuilder guard(&payload);
VPackArrayIterator itValue(newValue);
VPackArrayIterator itResult(ourResult);
while (itValue.valid() && itResult.valid()) {
TRI_ASSERT((*itResult).isObject());
if (!(*itResult).hasKey("error")) {
doOneDoc(itValue.value(), itResult.value());
}
itValue.next();
itResult.next();
}
} else {
VPackArrayBuilder guard(&payload);
doOneDoc(newValue, ourResult);
}
auto body = std::make_shared<std::string>();
*body = payload.slice().toJson();
// Now prepare the requests:
std::vector<ClusterCommRequest> requests;
for (auto const& f : *followers) {
requests.emplace_back("server:" + f,
operation == TRI_VOC_DOCUMENT_OPERATION_REPLACE ?
arangodb::GeneralRequest::RequestType::PUT :
arangodb::GeneralRequest::RequestType::PATCH,
path, body);
}
size_t nrDone = 0;
size_t nrGood = cc->performRequests(requests, 15.0, nrDone,
Logger::REPLICATION);
if (nrGood < followers->size()) {
// we drop all followers that were not successful:
for (size_t i = 0; i < followers->size(); ++i) {
bool replicationWorked
= requests[i].done &&
requests[i].result.status == CL_COMM_RECEIVED &&
(requests[i].result.answer_code !=
GeneralResponse::ResponseCode::ACCEPTED &&
requests[i].result.answer_code !=
GeneralResponse::ResponseCode::OK);
if (replicationWorked) {
bool found;
requests[i].result.answer->header("x-arango-error-codes", found);
replicationWorked = !found;
}
if (!replicationWorked) {
auto const& followerInfo = document->followers();
followerInfo->remove((*followers)[i]);
LOG_TOPIC(ERR, Logger::REPLICATION)
<< "modifyLocal: dropping follower "
<< (*followers)[i] << " for shard " << collectionName;
}
}
}
}
if (doingSynchronousReplication && options.silent) {
// We needed the results, but do not want to report:
resultBuilder.clear();
}
return OperationResult(resultBuilder.steal(), nullptr, "", res,
options.waitForSync, errorCounter);
}
//////////////////////////////////////////////////////////////////////////////
@ -1802,7 +1902,7 @@ OperationResult Transaction::removeLocal(std::string const& collectionName,
(requests[i].result.answer_code !=
GeneralResponse::ResponseCode::ACCEPTED &&
requests[i].result.answer_code !=
GeneralResponse::ResponseCode::CREATED);
GeneralResponse::ResponseCode::OK);
if (replicationWorked) {
bool found;
requests[i].result.answer->header("x-arango-error-codes", found);
@ -1812,7 +1912,7 @@ OperationResult Transaction::removeLocal(std::string const& collectionName,
auto const& followerInfo = document->followers();
followerInfo->remove((*followers)[i]);
LOG_TOPIC(ERR, Logger::REPLICATION)
<< "insertLocal: dropping follower "
<< "removeLocal: dropping follower "
<< (*followers)[i] << " for shard " << collectionName;
}
}
@ -1981,6 +2081,57 @@ OperationResult Transaction::truncateLocal(std::string const& collectionName,
return OperationResult(ex.code());
}
// Now see whether or not we have to do synchronous replication:
if (ServerState::instance()->isDBServer()) {
std::shared_ptr<std::vector<ServerID> const> followers;
// Now replicate the same operation on all followers:
auto const& followerInfo = document->followers();
followers = followerInfo->get();
if (followers->size() > 0) {
// Now replicate the good operations on all followers:
auto cc = arangodb::ClusterComm::instance();
std::string path
= "/_db/" +
arangodb::basics::StringUtils::urlEncode(_vocbase->_name) +
"/_api/collection/" + collectionName + "/truncate";
auto body = std::make_shared<std::string>();
// Now prepare the requests:
std::vector<ClusterCommRequest> requests;
for (auto const& f : *followers) {
requests.emplace_back("server:" + f,
arangodb::GeneralRequest::RequestType::PUT,
path, body);
}
size_t nrDone = 0;
size_t nrGood = cc->performRequests(requests, 15.0, nrDone,
Logger::REPLICATION);
if (nrGood < followers->size()) {
// we drop all followers that were not successful:
for (size_t i = 0; i < followers->size(); ++i) {
bool replicationWorked
= requests[i].done &&
requests[i].result.status == CL_COMM_RECEIVED &&
(requests[i].result.answer_code !=
GeneralResponse::ResponseCode::ACCEPTED &&
requests[i].result.answer_code !=
GeneralResponse::ResponseCode::OK);
if (!replicationWorked) {
auto const& followerInfo = document->followers();
followerInfo->remove((*followers)[i]);
LOG_TOPIC(ERR, Logger::REPLICATION)
<< "truncateLocal: dropping follower "
<< (*followers)[i] << " for shard " << collectionName;
}
}
}
}
}
res = unlock(trxCollection(cid), TRI_TRANSACTION_WRITE);
if (res != TRI_ERROR_NO_ERROR) {

View File

@ -8398,6 +8398,7 @@ function GraphViewerUI(container, adapterConfig, optWidth, optHeight, viewerConf
},
createSVG = function () {
console.log(height);
return d3.select("#" + container.id + " #background")
.append("svg")
.attr("id", "graphViewerSVG")
@ -8569,8 +8570,8 @@ function GraphViewerUI(container, adapterConfig, optWidth, optHeight, viewerConf
buttons.id = "modifiers";
title.appendChild(document.createTextNode("Graph Viewer"));
title.className = "arangoHeader";
//title.appendChild(document.createTextNode("Graph Viewer"));
//title.className = "arangoHeader";
/*
nodeShaperDropDown.id = "nodeshapermenu";
@ -8584,7 +8585,7 @@ function GraphViewerUI(container, adapterConfig, optWidth, optHeight, viewerConf
menubar.appendChild(configureLists.filter);
menubar.appendChild(configureLists.node);
transparentHeader.appendChild(buttons);
transparentHeader.appendChild(title);
//transparentHeader.appendChild(title);
adapterUI.addControlChangeGraph(function() {
updateAttributeExamples();
@ -16634,7 +16635,7 @@ var __fs__=require("fs");var __rcf__=__fs__.join(__fs__.home(),".arangosh.rc");i
},
residentSize: {
header: "Resident Size",
header: "Memory",
axes: {
y: {
labelsKMG2: false,
@ -16720,7 +16721,7 @@ var __fs__=require("fs");var __rcf__=__fs__.join(__fs__.home(),".arangosh.rc");i
requests: {
header: "Requests",
labels: ["datetime", "REQUESTS"],
labels: ["datetime", "Reads", "Writes"],
stackedGraph: true,
div: "requestsChart",
axes: {
@ -22644,16 +22645,23 @@ window.ArangoUsers = Backbone.Collection.extend({
if (valueList.length > 1) {
// HTTP requests combine all types to one
// 0: date, 1: GET", 2: "PUT", 3: "POST", 4: "DELETE", 5: "PATCH",
// 6: "HEAD", 7: "OPTIONS", 8: "OTHER"
//
var read = 0, write = 0;
if (valueList.length === 9) {
var counter = 0, sum = 0;
_.each(valueList, function(value) {
if (counter !== 0) {
sum += value;
}
counter++;
});
valueList = [valueList[0], sum];
read += valueList[1];
read += valueList[6];
read += valueList[7];
read += valueList[8];
write += valueList[2];
write += valueList[3];
write += valueList[4];
write += valueList[5];
valueList = [valueList[0], read, write];
}
self.history[self.server][f].push(valueList);
@ -25243,19 +25251,6 @@ window.ArangoUsers = Backbone.Collection.extend({
if (navElement) {
window.clearTimeout(timer);
timer = null;
if (name === '_system') {
// show "logs" button
$('.logs-menu').css('visibility', 'visible');
$('.logs-menu').css('display', 'inline');
// show dbs menues
$('#databaseNavi').css('display','inline');
}
else {
// hide "logs" button
$('.logs-menu').css('visibility', 'hidden');
$('.logs-menu').css('display', 'none');
}
self.render();
}
}, 50);
@ -25863,7 +25858,7 @@ window.ArangoUsers = Backbone.Collection.extend({
var height = arangoHelper.calculateCenterDivHeight();
this.ui = new GraphViewerUI($("#content")[0], adapterConfig, width, height, {
this.ui = new GraphViewerUI($("#content")[0], adapterConfig, width, $('.centralRow').height() - 135, {
nodeShaper: {
label: "_key",
color: {
@ -30276,7 +30271,7 @@ window.ArangoUsers = Backbone.Collection.extend({
"aqlEditor", "queryTable", "previewWrapper", "querySpotlight",
"bindParamEditor", "toggleQueries1", "toggleQueries2",
"saveCurrentQuery", "querySize", "executeQuery", "switchTypes",
"explainQuery", "clearQuery", "importQuery", "exportQuery"
"explainQuery", "importQuery", "exportQuery"
];
_.each(divs, function(div) {
$("#" + div).toggle();

File diff suppressed because one or more lines are too long

View File

@ -585,7 +585,7 @@
</div>
</div>
</div>
<div class="dashboard-sub-bar"">Resident Size</div>
<div class="dashboard-sub-bar"">Memory</div>
</div>
<% tendency("Virtual Size in GB", "virtualSize", false); %>
@ -728,6 +728,7 @@
<% if (name !== '_system') { %>
<div class="tile pure-u-1-1 pure-u-sm-1-2 pure-u-md-1-3 pure-u-lg-1-4 pure-u-xl-1-6">
<div class="fullBorderBox" style="border: 0;">
<div class="borderBox"></div>
<div class="iconSet">
<span class="icon_arangodb_settings2 editDatabase" id="<%=name %>_edit-database" alt="Edit database" title="Edit database"></span>
@ -737,6 +738,7 @@
</div>
<h5 class="collectionName" style="margin-left: 0; margin-right: 0;"><%=name %></h5>
</div>
</div>
<%};%>
<%});%>
@ -1197,17 +1199,18 @@ if (list.length > 0) {
%>
<div class="tile tile-graph pure-u-1-1 pure-u-sm-1-2 pure-u-md-1-3 pure-u-lg-1-4 pure-u-xl-1-6" id="<%=graphName %>_tile">
<div class="paddingBox">
<div class="borderBox"></div>
<div class="iconSet">
<span class="icon_arangodb_settings2 editGraph" id="<%=graphName %>_settings" alt="Edit graph" title="Edit graph"></span>
</div>
<span class="icon_arangodb_edge5 tile-icon"></span>
<span class="icon_arangodb_edge5 icon_arangodb_edge5-2 tile-icon"></span>
<div class="tileBadge">
</div>
<div class="tileBadge"></div>
<h5 class="collectionName"><%=graphName %></h5>
</div>
</div>
<%});%>
</div>
</div></script><script id="graphViewGroupByEntry.ejs" type="text/template"><div class="control-group">
@ -1217,7 +1220,8 @@ if (list.length > 0) {
<button id="remove_<%=type %>_<%=id%>" class="graphViewer-icon-button gv_internal_remove_line gv-icon-small delete" />
</div>
</div></script><script id="helpUsView.ejs" type="text/template"><div class="helpUs">
<div class="_form_87"></div><script src="https://arangodb.activehosted.com/f/embed.php?id=87" type="text/javascript" charset="utf-8"></script><script id="indicesView.ejs" type="text/template"><div class="contentIn" id="indexHeaderContent">
<iframe src="https://docs.google.com/forms/d/1vsIwy0mJSeToEnfo_jnBaQebewbcURL730IkZIrkyEE/viewform?embedded=true" scrolling="no" width="100%" height="1300px" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
</div></script><script id="indicesView.ejs" type="text/template"><div class="contentIn" id="indexHeaderContent">
<div id="indexEditView">
<table id="collectionEditIndexTable" class="edit-index-table">
<thead>
@ -2300,11 +2304,9 @@ if (list.length > 0) {
<% } %>
</div></script><script id="navigationView.ejs" type="text/template"><ul class="navlist arango-collection-ul" id="arangoCollectionUl">
<% if (isCluster) { %>
<li class="navbar-spacer big"></li>
<li class="cluster-menu"><a id="cluster" class="tab" href="#cluster"><i class="fa fa-circle-o"></i>Cluster</a></li>
<li class="nodes-menu"><a id="nodes" class="tab" href="#cNodes"><i class="fa fa-server"></i>Nodes</a></li>
<% } else { %>
<li class="navbar-spacer big"></li>
<li class="dashboard-menu"><a id="dashboard" class="tab" href="#dashboard"><i class="fa fa-dashboard"></i>Dashboard</a></li>
<% } %>
<li class="navbar-spacer big"></li>
@ -2329,7 +2331,7 @@ if (list.length > 0) {
<li class="databases-menu"><a id="databases" class="tab" href="#databases"><i class="fa fa-database"></i>Databases</a></li>
<% } %>
<% if (!isCluster) { %>
<li class="logs-menu"><a id="logs" class="tab" href="#manage"><i class="fa fa-file-text"></i>Logs</a></li>
<li class="logs-menu"><a id="logs" class="tab" href="#logs"><i class="fa fa-file-text"></i>Logs</a></li>
<% } %>
<li class="navbar-spacer big"></li>
<li class="helpus-menu"><a id="helpus" class="tab" href="#helpus"><i class="fa fa-heart"></i>Help Us</a></li>
@ -2344,12 +2346,10 @@ if (list.length > 0) {
</li>
<% if (!isCluster) { %>
<% if (currentDB.get('isSystem')) { %>
<li class="dropdown-item">
<a id="logs" class="tab" href="#logs">Logs</a>
</li>
<% } %>
<% } %>
<li class="dropdown-item">
<a id="userManagement" class="tab" href="#userManagement">User Management</a>
@ -2592,7 +2592,7 @@ if (list.length > 0) {
<button id="saveCurrentQuery" class="button-success"><i class="fa fa-save"></i>Save</button>
</div>
<div class="pull-right">
<div class="pull-right" style="position: absolute; top: 60px; right: 0;">
<span id="querySpotlight" class="action"><i class="fa fa-search"></i></span>
<div class="styled-select">
<select id="querySize" class="query-size"/>
@ -2963,4 +2963,4 @@ var cutByResolution = function (str) {
</div>
<div id="workMonitorContent" class="innerContent">
</div></script></head><body><nav class="navbar"><div class="primary"><div class="navlogo"><a class="logo big" href="#"><img class="arangodbLogo" src="img/arangodb_logo_big.png"></a> <a class="logo small" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a></div><div class="statmenu" id="statisticBar"></div><div class="navmenu" id="navigationBar"></div></div></nav><div class="bodyWrapper"><div class="centralRow"><div id="navbar2" class="navbarWrapper secondary"><div class="subnavmenu" id="subNavigationBar"></div></div><div class="resizecontainer contentWrapper"><div id="content" class="centralContent"></div><footer class="footer"><div id="footerBar"></div></footer></div></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="libs.js?version=1461257358510"></script><script src="app.js?version=1461257358510"></script></body></html>
</div></script></head><body><nav class="navbar"><div class="primary"><div class="navlogo"><a class="logo big" href="#"><img class="arangodbLogo" src="img/arangodb_logo_big.png"></a> <a class="logo small" href="#"><img class="arangodbLogo" src="img/arangodb_logo_small.png"></a></div><div class="statmenu" id="statisticBar"></div><div class="navmenu" id="navigationBar"></div></div></nav><div class="bodyWrapper"><div class="centralRow"><div id="navbar2" class="navbarWrapper secondary"><div class="subnavmenu" id="subNavigationBar"></div></div><div class="resizecontainer contentWrapper"><div id="content" class="centralContent"></div><footer class="footer"><div id="footerBar"></div></footer></div></div></div><div id="modalPlaceholder"></div><div id="progressPlaceholder" style="display:none"></div><div id="spotlightPlaceholder" style="display:none"></div><div class="arangoFrame" style=""><div class="outerDiv"><div class="innerDiv"></div></div></div><script src="libs.js?version=1461321201201"></script><script src="app.js?version=1461321201201"></script></body></html>

View File

@ -635,7 +635,7 @@
</div>
</div>
</div>
<div class="dashboard-sub-bar"">Resident Size</div>
<div class="dashboard-sub-bar"">Memory</div>
</div>
<% tendency("Virtual Size in GB", "virtualSize", false); %>
@ -783,6 +783,7 @@
<% if (name !== '_system') { %>
<div class="tile pure-u-1-1 pure-u-sm-1-2 pure-u-md-1-3 pure-u-lg-1-4 pure-u-xl-1-6">
<div class="fullBorderBox" style="border: 0;">
<div class="borderBox"></div>
<div class="iconSet">
<span class="icon_arangodb_settings2 editDatabase" id="<%=name %>_edit-database" alt="Edit database" title="Edit database"></span>
@ -792,6 +793,7 @@
</div>
<h5 class="collectionName" style="margin-left: 0; margin-right: 0;"><%=name %></h5>
</div>
</div>
<%};%>
<%});%>
@ -1295,17 +1297,18 @@ if (list.length > 0) {
%>
<div class="tile tile-graph pure-u-1-1 pure-u-sm-1-2 pure-u-md-1-3 pure-u-lg-1-4 pure-u-xl-1-6" id="<%=graphName %>_tile">
<div class="paddingBox">
<div class="borderBox"></div>
<div class="iconSet">
<span class="icon_arangodb_settings2 editGraph" id="<%=graphName %>_settings" alt="Edit graph" title="Edit graph"></span>
</div>
<span class="icon_arangodb_edge5 tile-icon"></span>
<span class="icon_arangodb_edge5 icon_arangodb_edge5-2 tile-icon"></span>
<div class="tileBadge">
</div>
<div class="tileBadge"></div>
<h5 class="collectionName"><%=graphName %></h5>
</div>
</div>
<%});%>
</div>
</div>
@ -1325,7 +1328,7 @@ if (list.length > 0) {
<script id="helpUsView.ejs" type="text/template">
<div class="helpUs">
<div class="_form_87"></div><script src="https://arangodb.activehosted.com/f/embed.php?id=87" type="text/javascript" charset="utf-8"></script>
<iframe src="https://docs.google.com/forms/d/1vsIwy0mJSeToEnfo_jnBaQebewbcURL730IkZIrkyEE/viewform?embedded=true" scrolling="no" width="100%" height="1300px" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
</div>
</script>
@ -2474,11 +2477,9 @@ if (list.length > 0) {
<script id="navigationView.ejs" type="text/template">
<ul class="navlist arango-collection-ul" id="arangoCollectionUl">
<% if (isCluster) { %>
<li class="navbar-spacer big"></li>
<li class="cluster-menu"><a id="cluster" class="tab" href="#cluster"><i class="fa fa-circle-o"></i>Cluster</a></li>
<li class="nodes-menu"><a id="nodes" class="tab" href="#cNodes"><i class="fa fa-server"></i>Nodes</a></li>
<% } else { %>
<li class="navbar-spacer big"></li>
<li class="dashboard-menu"><a id="dashboard" class="tab" href="#dashboard"><i class="fa fa-dashboard"></i>Dashboard</a></li>
<% } %>
<li class="navbar-spacer big"></li>
@ -2503,7 +2504,7 @@ if (list.length > 0) {
<li class="databases-menu"><a id="databases" class="tab" href="#databases"><i class="fa fa-database"></i>Databases</a></li>
<% } %>
<% if (!isCluster) { %>
<li class="logs-menu"><a id="logs" class="tab" href="#manage"><i class="fa fa-file-text"></i>Logs</a></li>
<li class="logs-menu"><a id="logs" class="tab" href="#logs"><i class="fa fa-file-text"></i>Logs</a></li>
<% } %>
<li class="navbar-spacer big"></li>
<li class="helpus-menu"><a id="helpus" class="tab" href="#helpus"><i class="fa fa-heart"></i>Help Us</a></li>
@ -2518,12 +2519,10 @@ if (list.length > 0) {
</li>
<% if (!isCluster) { %>
<% if (currentDB.get('isSystem')) { %>
<li class="dropdown-item">
<a id="logs" class="tab" href="#logs">Logs</a>
</li>
<% } %>
<% } %>
<li class="dropdown-item">
<a id="userManagement" class="tab" href="#userManagement">User Management</a>
@ -2810,7 +2809,7 @@ if (list.length > 0) {
<button id="saveCurrentQuery" class="button-success"><i class="fa fa-save"></i>Save</button>
</div>
<div class="pull-right">
<div class="pull-right" style="position: absolute; top: 60px; right: 0;">
<span id="querySpotlight" class="action"><i class="fa fa-search"></i></span>
<div class="styled-select">
<select id="querySize" class="query-size"/>
@ -3289,8 +3288,8 @@ var cutByResolution = function (str) {
</div>
</div>
<script src="libs.js?version=1461257358510"></script>
<script src="app.js?version=1461257358510"></script>
<script src="libs.js?version=1461321201201"></script>
<script src="app.js?version=1461321201201"></script>
</body>
</html>

View File

@ -1,2 +1,2 @@
<script src="libs.js?version=1461257358510"></script>
<script src="app.js?version=1461257358510"></script>
<script src="libs.js?version=1461321201201"></script>
<script src="app.js?version=1461321201201"></script>

File diff suppressed because one or more lines are too long

View File

@ -6,7 +6,6 @@ body {
background: rgba(64, 74, 83, 0.04);
color: #333;
display: block;
font-family: 'Roboto', sans-serif !important;
font-size: 14px;
font-weight: 400;
height: 100%;
@ -27,7 +26,6 @@ input,
textarea,
.page-title span,
.pingback a.url {
font-family: 'Roboto', sans-serif !important;
font-weight: 400; }
@font-face {
@ -2092,6 +2090,17 @@ textarea,
div.footer-right, div.footer-right p, ul.headerButtonList li, div .tile .iconSet span, div .bigtile .iconSet span, .search-field, .headerBar > div.headerButtonBar, .fixedDropdown button, .fixedDropdown .notificationItem i, .dashboard-sub-bar-menu, .dashboard-legend, .query-button, .arango-tab li, div.gv_colour_list, .docsThirdCol {
float: right; }
body,
input,
textarea,
.page-title span,
.pingback a.url, button, .modal-body, .ui-tooltip, .dataNotReadyYet, .dashboard-sub-bar, .dashboard-sub-bar .dashboard-sub-bar-title, .dygraph-label.dygraph-title, .inputEditorWrapper .bindParamEditorWrapper table,
.inputEditorWrapper .aqlEditorWrapper table, .inputEditorWrapper .bindParamEditorWrapper table td input,
.inputEditorWrapper .aqlEditorWrapper table td input, .inputEditorWrapper .bindParamEditorWrapper table th,
.inputEditorWrapper .aqlEditorWrapper table th, .inputEditorWrapper .aqlEditorWrapper .previewWrapper .previewBar,
.inputEditorWrapper .bindParamEditorWrapper .previewWrapper .previewBar, .collectionTh, .collectionInfoTh2, .figuresHeader th, .graphLabel, .snippet-no-num {
font-family: 'Roboto', sans-serif !important; }
.tileList:after, .resizecontainer:after, .headerBar > div.headerButtonBar:after, .detail-chart:after, .dashboard-sub-bar:after, .dashboard-medium-chart .dashboard-medium-chart-menu:after, .dashboard-medium-chart .dashboard-medium-chart-inner:after, .dashboard-tendency-container .dashboard-tendency-chart:after, .dashboard-bar-chart-container .dashboard-bar-chart:after, .dashboard-row:after, #distributionChartDiv:after, .lineChartDiv:after, .arango-tab:after, .pagination-line li:after, .document-info .document-info-container .document-inner-info-container .document-attribute:after {
clear: both;
content: '.';
@ -2363,6 +2372,8 @@ div.queryline input, input.search-input, .modal-body .select2-choices input, .mo
.navlist {
list-style: none;
margin: 0;
position: relative;
top: 0;
width: 150px; }
.navlist > li {
line-height: 30px; }
@ -2392,11 +2403,10 @@ 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: #fff;
height: 1px;
background-color: rgba(0, 0, 0, 0.2);
height: 2px;
margin-bottom: 0;
margin-top: 0;
opacity: .5; }
margin-top: 0; }
.navlist .active {
border-left: 2px solid #77cb99; }
.navlist .active .tab {
@ -2625,10 +2635,9 @@ button.disabled,
#closeBtnInfoView {
margin-left: 0 !important; }
button {
font-family: 'Roboto', sans-serif !important; }
button.btn-server {
width: 120px; }
button.gv-zoom-btn {
background-size: 14px 14px;
height: 14px;
@ -2680,6 +2689,7 @@ button {
box-shadow: none;
left: 13px;
top: 25px; }
button.gv-icon-btn {
-moz-border-radius: 0 !important;
-webkit-border-radius: 0 !important;
@ -2689,19 +2699,25 @@ button {
width: 36px; }
button.gv-icon-btn.active {
background-color: #7dbc42; }
button.gv_dropdown_entry {
height: 30px;
margin: 4px 4px 4px 12px;
width: 160px; }
button.gv_context_button {
width: 65px; }
button.large-distance {
margin-left: 12px; }
button.short-distance {
margin-left: 6px; }
button.shutdown {
margin-top: 6px;
padding: 3px 14px; }
button.graphViewer-icon-button {
background-color: transparent;
border: 0;
@ -2761,20 +2777,20 @@ a.headerButton {
cursor: not-allowed; }
div.toolbox {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
background-color: #fff;
border: 1px solid rgba(140, 138, 137, 0.25);
margin-right: 5px;
margin-top: -3px;
padding-bottom: 5px;
padding-top: 5px;
position: absolute; }
position: absolute;
top: -10px; }
div.toolbox div.gv_action_button {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
background-color: #fff;
color: #555;
height: 30px;
@ -3131,7 +3147,8 @@ div .tile {
height: 100px; }
div .tile-graph h5 {
margin: 0; }
margin-left: 5px;
margin-right: 5px; }
div .tile-graph .tile-icon:hover {
cursor: pointer; }
@ -5234,7 +5251,7 @@ div.centralContent {
background-color: transparent;
box-sizing: border-box;
margin-top: 10px;
padding-bottom: 5px;
padding-bottom: 20px;
padding-left: 5px;
padding-right: 5px;
padding-top: 5px;
@ -5455,10 +5472,10 @@ span.gv_caret {
input.search-input {
border: 1px solid #fff;
height: 15px;
line-height: 17px;
height: 20px;
line-height: 20px;
margin-right: -4px;
margin-top: 6px;
margin-top: 3px;
width: 120px; }
.search-field {
@ -5469,7 +5486,7 @@ input.search-input {
margin-left: -20px;
opacity: .5;
position: relative;
top: -2px; }
top: -3px; }
.search-field .fa-search:hover {
cursor: pointer;
opacity: 1; }
@ -5682,7 +5699,6 @@ div.headerBar {
.modal-body {
color: #736b68;
font-family: 'Roboto', sans-serif !important;
font-size: 14px;
font-weight: 300;
max-height: 410px; }
@ -6141,7 +6157,6 @@ div.headerBar {
border-radius: 3px !important;
box-shadow: none !important;
color: #fff !important;
font-family: 'Roboto', sans-serif !important;
font-size: 10pt !important;
font-weight: 100 !important;
z-index: 99999999; }
@ -6254,7 +6269,6 @@ div.headerBar {
.dataNotReadyYet {
color: #faa732;
font-family: 'Roboto', sans-serif;
font-size: 14px;
font-weight: 100;
text-align: center; }
@ -6263,7 +6277,6 @@ div.headerBar {
background-color: #fff;
box-sizing: border-box;
color: rgba(0, 0, 0, 0.5);
font-family: 'Roboto', sans-serif;
font-size: 11pt;
font-weight: 600;
height: 50px;
@ -6277,7 +6290,6 @@ div.headerBar {
text-transform: uppercase; }
.dashboard-sub-bar .dashboard-sub-bar-title {
color: #000;
font-family: 'Roboto', sans-serif;
font-size: 11pt;
font-weight: 600;
opacity: .5;
@ -6451,12 +6463,12 @@ div.headerBar {
.dashboard-bar-chart-container .dashboard-bar-chart .dashboard-bar-chart-chart {
padding-top: 10px; }
.dashboard-bar-chart-container .dashboard-bar-chart .dashboard-bar-chart-chart .nv-bar rect {
fill-opacity: .8;
stroke-opacity: .8;
fill-opacity: .6;
stroke-opacity: .6;
stroke-width: .5px; }
.dashboard-legend .dashboard-legend-inner {
padding: 0 5px 5px 0;
padding: 10px 5px 5px 0;
text-align: right; }
.dashboard-legend .dashboard-legend-inner br {
display: none; }
@ -6511,6 +6523,9 @@ div.headerBar {
#repl-progress .inner {
margin-top: 0; }
.nvtooltip {
display: none; }
#requests,
#system,
#replication {
@ -6563,7 +6578,6 @@ div.headerBar {
.dygraph-label.dygraph-title {
color: #000;
font-family: 'Roboto', sans-serif;
font-size: 15px;
font-weight: 400;
text-align: left; }
@ -7016,8 +7030,7 @@ toolbar {
color: #c12dad; }
.inputEditorWrapper .bindParamEditorWrapper table,
.inputEditorWrapper .aqlEditorWrapper table {
border-top: 0;
font-family: 'Roboto', sans-serif; }
border-top: 0; }
.inputEditorWrapper .bindParamEditorWrapper table tbody,
.inputEditorWrapper .aqlEditorWrapper table tbody {
display: block;
@ -7076,14 +7089,12 @@ toolbar {
.inputEditorWrapper .aqlEditorWrapper table td input {
clear: both;
float: right;
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-family: 'Lato', sans-serif;
font-weight: 400;
height: 34px;
padding: 0;
@ -7136,7 +7147,6 @@ toolbar {
.inputEditorWrapper .bindParamEditorWrapper .previewWrapper .previewBar {
background-color: #fff;
border-bottom: 1px solid rgba(140, 138, 137, 0.25);
font-family: 'Lato', sans-serif;
height: 34px; }
.inputEditorWrapper .aqlEditorWrapper .previewWrapper .previewBar span,
.inputEditorWrapper .bindParamEditorWrapper .previewWrapper .previewBar span {
@ -7194,6 +7204,16 @@ toolbar {
padding-top: 0; }
#queryManagementContent .arango-table {
border: 0; }
#queryManagementContent .arango-table tr th:nth-child(1) {
width: 10%; }
#queryManagementContent .arango-table tr th:nth-child(1) td {
text-align: center; }
#queryManagementContent .arango-table tr th:nth-child(2) {
width: 50%; }
#queryManagementContent .arango-table tr th:nth-child(3) {
width: 20%; }
#queryManagementContent .arango-table tr th:nth-child(4) {
width: 20%; }
#clearQuery {
display: none; }
@ -7636,6 +7656,7 @@ textarea,
display: none; }
#arangoLogTable {
border-top: 0;
min-height: 444px; }
#arangoLogTable tbody tr {
height: 40px; }
@ -7680,10 +7701,10 @@ textarea,
div.gv_zoom_widget {
height: 300px;
left: 64px;
left: 62px;
opacity: .7;
position: absolute;
top: 20px;
top: 0;
width: 40px;
z-index: 1; }
div.gv_zoom_widget div.gv_zoom_buttons_bg {
@ -7732,7 +7753,7 @@ svg.graph-viewer {
border-radius: 3px;
left: 54px;
position: absolute;
top: 10px;
top: -10px;
z-index: 0; }
svg.graph-viewer text {
max-width: 90px;
@ -7758,7 +7779,7 @@ div.gv-colour-list {
position: absolute;
right: 8px;
text-align: right;
top: 20px;
top: 0;
z-index: 1; }
div.gv-colour-list li {
float: none;
@ -7794,7 +7815,6 @@ input.gv-radio-button {
width: auto; }
.collectionTh {
font-family: 'Roboto', sans-serif !important;
font-size: 14px;
font-weight: 400 !important;
text-align: left;
@ -7848,7 +7868,6 @@ input.gv-radio-button {
min-height: 200px; }
.collectionInfoTh2 {
font-family: 'Lato', sans-serif !important;
font-weight: 400 !important;
text-align: left;
width: 150px; }
@ -7865,7 +7884,6 @@ input.gv-radio-button {
.figuresHeader {
border-bottom: 1px solid #c2c2c2; }
.figuresHeader th {
font-family: 'Lato', sans-serif !important;
font-weight: 400 !important; }
#collectionIndexTable {
@ -7960,8 +7978,6 @@ input.gv-radio-button {
.dashboard-large-chart,
.dashboard-medium-chart-outer:first-child {
padding-right: 0 !important; }
.dashboard-medium-chart {
margin-bottom: 10px; }
div.dropdownInner ul label {
font-size: 13px; }
.navlogo .big {
@ -7984,6 +8000,11 @@ input.gv-radio-button {
.arango-collection-ul .tab .fa {
padding-left: 6px;
padding-right: 20px; }
.social-icons p {
float: left;
margin-left: -3px; }
.social-icons p .fa {
font-size: 16px; }
.headerButtonBar {
display: none; }
div.bodyWrapper,
@ -8309,7 +8330,6 @@ input.gv-radio-button {
outline-style: none; }
.graphLabel {
font-family: "Roboto", sans-serif;
font-size: 11pt;
font-weight: 600;
margin-top: -25px;
@ -8752,6 +8772,12 @@ main {
.subnavmenu #dbStatus {
padding-right: 20px; }
.helpUs iframe {
left: 0;
position: absolute;
right: 0;
top: 101px; }
.arangoDataTable {
border-spacing: 0 0;
position: relative;
@ -8816,7 +8842,6 @@ table.arangoDataTable tr.odd {
visibility: hidden; }
.snippet-no-num {
font-family: 'Open Sans', sans-serif;
font-size: 1em;
font-weight: 400;
margin-bottom: 0; }

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- The icon can be used freely in both personal and commercial projects with no attribution required, but always appreciated.
You may NOT sub-license, resell, rent, redistribute or otherwise transfer the icon without express written permission from iconmonstr.com -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path id="database-icon" d="M422.122,355.606v46.524C422.122,435.196,347.747,462,256,462c-91.747,0-166.122-26.804-166.122-59.869
v-46.524c10.283,7.391,23.186,13.907,38.485,19.422C162.918,387.481,208.248,394.34,256,394.34
c47.753,0,93.082-6.858,127.638-19.312C398.938,369.514,411.839,362.997,422.122,355.606z M383.638,277.788
c-34.556,12.454-79.885,19.312-127.638,19.312c-47.752,0-93.082-6.858-127.638-19.312c-15.299-5.514-28.201-12.03-38.484-19.421
v46.104c0,33.065,74.375,59.869,166.122,59.869c91.747,0,166.122-26.804,166.122-59.869v-46.104
C411.839,265.758,398.938,272.274,383.638,277.788z M256,50c-91.747,0-166.122,26.805-166.122,59.87
c0,33.066,74.375,59.871,166.122,59.871c91.747,0,166.122-26.805,166.122-59.871C422.122,76.805,347.747,50,256,50z
M383.638,180.428C349.082,192.881,303.753,199.74,256,199.74c-47.752,0-93.082-6.859-127.638-19.312
c-15.299-5.514-28.201-12.031-38.484-19.422v46.225c0,33.065,74.375,59.87,166.122,59.87c91.747,0,166.122-26.805,166.122-59.87
v-46.224C411.839,168.397,398.938,174.914,383.638,180.428z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -87,7 +87,7 @@
},
residentSize: {
header: "Resident Size",
header: "Memory",
axes: {
y: {
labelsKMG2: false,
@ -173,7 +173,7 @@
requests: {
header: "Requests",
labels: ["datetime", "REQUESTS"],
labels: ["datetime", "Reads", "Writes"],
stackedGraph: true,
div: "requestsChart",
axes: {

View File

@ -129,7 +129,7 @@
</div>
</div>
</div>
<div class="dashboard-sub-bar"">Resident Size</div>
<div class="dashboard-sub-bar"">Memory</div>
</div>
<% tendency("Virtual Size in GB", "virtualSize", false); %>

View File

@ -52,6 +52,7 @@
<% if (name !== '_system') { %>
<div class="tile pure-u-1-1 pure-u-sm-1-2 pure-u-md-1-3 pure-u-lg-1-4 pure-u-xl-1-6">
<div class="fullBorderBox" style="border: 0;">
<div class="borderBox"></div>
<div class="iconSet">
<span class="icon_arangodb_settings2 editDatabase" id="<%=name %>_edit-database" alt="Edit database" title="Edit database"></span>
@ -61,6 +62,7 @@
</div>
<h5 class="collectionName" style="margin-left: 0; margin-right: 0;"><%=name %></h5>
</div>
</div>
<%};%>
<%});%>

View File

@ -52,17 +52,18 @@
%>
<div class="tile tile-graph pure-u-1-1 pure-u-sm-1-2 pure-u-md-1-3 pure-u-lg-1-4 pure-u-xl-1-6" id="<%=graphName %>_tile">
<div class="paddingBox">
<div class="borderBox"></div>
<div class="iconSet">
<span class="icon_arangodb_settings2 editGraph" id="<%=graphName %>_settings" alt="Edit graph" title="Edit graph"></span>
</div>
<span class="icon_arangodb_edge5 tile-icon"></span>
<span class="icon_arangodb_edge5 icon_arangodb_edge5-2 tile-icon"></span>
<div class="tileBadge">
</div>
<div class="tileBadge"></div>
<h5 class="collectionName"><%=graphName %></h5>
</div>
</div>
<%});%>
</div>
</div>

View File

@ -1,7 +1,7 @@
<script id="helpUsView.ejs" type="text/template">
<div class="helpUs">
<div class="_form_87"></div><script src="https://arangodb.activehosted.com/f/embed.php?id=87" type="text/javascript" charset="utf-8"></script>
<iframe src="https://docs.google.com/forms/d/1vsIwy0mJSeToEnfo_jnBaQebewbcURL730IkZIrkyEE/viewform?embedded=true" scrolling="no" width="100%" height="1300px" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
</div>
</script>

View File

@ -9,7 +9,7 @@
<button id="saveCurrentQuery" class="button-success"><i class="fa fa-save"></i>Save</button>
</div>
<div class="pull-right">
<div class="pull-right" style="position: absolute; top: 60px; right: 0;">
<span id="querySpotlight" class="action"><i class="fa fa-search"></i></span>
<div class="styled-select">
<select id="querySize" class="query-size"/>

View File

@ -385,16 +385,23 @@
if (valueList.length > 1) {
// HTTP requests combine all types to one
// 0: date, 1: GET", 2: "PUT", 3: "POST", 4: "DELETE", 5: "PATCH",
// 6: "HEAD", 7: "OPTIONS", 8: "OTHER"
//
var read = 0, write = 0;
if (valueList.length === 9) {
var counter = 0, sum = 0;
_.each(valueList, function(value) {
if (counter !== 0) {
sum += value;
}
counter++;
});
valueList = [valueList[0], sum];
read += valueList[1];
read += valueList[6];
read += valueList[7];
read += valueList[8];
write += valueList[2];
write += valueList[3];
write += valueList[4];
write += valueList[5];
valueList = [valueList[0], read, write];
}
self.history[self.server][f].push(valueList);

View File

@ -224,7 +224,7 @@
"aqlEditor", "queryTable", "previewWrapper", "querySpotlight",
"bindParamEditor", "toggleQueries1", "toggleQueries2",
"saveCurrentQuery", "querySize", "executeQuery", "switchTypes",
"explainQuery", "clearQuery", "importQuery", "exportQuery"
"explainQuery", "importQuery", "exportQuery"
];
_.each(divs, function(div) {
$("#" + div).toggle();

View File

@ -6,6 +6,10 @@
float: right;
}
%font-family {
font-family: 'Roboto', sans-serif !important;
}
%clear-float {
&:after {
clear: both;

View File

@ -3,11 +3,11 @@ html {
}
body {
@extend %font-family;
//background: $c-lightgreen-2-bg !important;
background: $c-bluegrey-bg;
color: $c-body-color;
display: block;
font-family: 'Roboto', sans-serif !important;
font-size: 14px;
font-weight: 400;
height: 100%;

View File

@ -108,7 +108,7 @@ button.disabled,
button {
font-family: 'Roboto', sans-serif !important;
@extend %font-family;
&.btn-server {
width: 120px;

View File

@ -1,5 +1,5 @@
.graphLabel {
font-family: "Roboto", sans-serif;
@extend %font-family;
font-size: 11pt;
font-weight: 600;
margin-top: -25px;

View File

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

View File

@ -51,9 +51,9 @@
}
.dygraph-label.dygraph-title {
@extend %font-family;
color: $c-black;
font: {
family: 'Roboto', sans-serif;
size: 15px;
weight: 400;
}

View File

@ -99,7 +99,7 @@ table.arangoDataTable tr.odd {
}
.snippet-no-num {
font-family: 'Open Sans', sans-serif;
@extend %font-family;
font-size: 1em;
font-weight: 400;
margin-bottom: 0;

View File

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

View File

@ -1,10 +1,10 @@
input.search-input {
@extend %inputs;
border: 1px solid $c-white;
height: 15px;
line-height: 17px;
height: 20px;
line-height: 20px;
margin-right: -4px;
margin-top: 6px;
margin-top: 3px;
width: 120px;
}
@ -18,7 +18,7 @@ input.search-input {
margin-left: -20px;
opacity: .5;
position: relative;
top: -2px;
top: -3px;
&:hover {
cursor: pointer;

View File

@ -0,0 +1,9 @@
.helpUs {
iframe {
left: 0;
position: absolute;
right: 0;
top: 101px;
}
}

View File

@ -62,6 +62,7 @@
//new log view - do not delete
#arangoLogTable {
border-top: 0;
min-height: 444px;
tbody {

View File

@ -43,8 +43,8 @@
}
.modal-body {
@extend %font-family;
color: $c-btn-inverse;
font-family: 'Roboto', sans-serif !important;
font-size: 14px;
font-weight: 300;
max-height: 410px;

View File

@ -162,6 +162,8 @@ $navbar-size: 150px;
.navlist {
list-style: none;
margin: 0;
position: relative;
top: 0;
width: $navbar-size;
> li {
@ -213,11 +215,10 @@ $navbar-size: 150px;
}
&.navbar-spacer {
background-color: $c-white;
height: 1px;
background-color: rgba(0, 0, 0, .2);
height: 2px;
margin-bottom: 0;
margin-top: 0;
opacity: .5;
}
}

View File

@ -41,20 +41,20 @@
}
.dataNotReadyYet {
@extend %font-family;
color: $c-warning;
font-family: 'Roboto', sans-serif;
font-size: 14px;
font-weight: 100;
text-align: center;
}
.dashboard-sub-bar {
@extend %font-family;
@extend %clear-float;
@extend %pull-left;
background-color: $c-white;
box-sizing: border-box;
color: rgba(0, 0, 0, .5);
font-family: 'Roboto', sans-serif;
font-size: 11pt;
font-weight: 600;
height: 50px;
@ -71,8 +71,8 @@
.dashboard-sub-bar-title {
@extend %pull-left;
@extend %font-family;
color: $c-black;
font-family: 'Roboto', sans-serif;
font-size: 11pt;
font-weight: 600;
opacity: .5;
@ -368,8 +368,8 @@
padding-top: 10px;
.nv-bar rect {
fill-opacity: .8;
stroke-opacity: .8;
fill-opacity: .6;
stroke-opacity: .6;
stroke-width: .5px;
}
}
@ -381,7 +381,7 @@
@extend %pull-right;
.dashboard-legend-inner {
padding: 0 5px 5px 0;
padding: 10px 5px 5px 0;
text-align: right;
br {
@ -485,6 +485,10 @@
}
}
.nvtooltip {
display: none;
}
#requests,
#system,
#replication {

View File

@ -52,8 +52,8 @@
}
table {
@extend %font-family;
border-top: 0;
font-family: 'Roboto', sans-serif;
tbody {
display: block;
@ -124,10 +124,10 @@
}
input {
@extend %font-family;
@extend %inputs;
clear: both;
float: right;
font-family: 'Lato', sans-serif;
height: 17px;
margin-bottom: 3px;
margin-top: 3px;
@ -136,7 +136,7 @@
}
th {
font-family: 'Lato', sans-serif;
@extend %font-family;
font-weight: 400;
height: 34px;
padding: 0;
@ -208,9 +208,9 @@
background-color: $c-white;
.previewBar {
@extend %font-family;
background-color: $c-white;
border-bottom: 1px solid $c-content-border;
font-family: 'Lato', sans-serif;
height: 34px;
span {
@ -303,6 +303,28 @@
.arango-table {
border: 0;
tr {
th:nth-child(1) {
width: 10%;
td {
text-align: center;
}
}
th:nth-child(2) {
width: 50%;
}
th:nth-child(3) {
width: 20%;
}
th:nth-child(4) {
width: 20%;
}
}
}
}

View File

@ -585,7 +585,7 @@ div.centralContent {
box-sizing: border-box;
margin-top: 10px;
padding: {
bottom: 5px;
bottom: 20px;
left: 5px;
right: 5px;
top: 5px;

View File

@ -14,7 +14,7 @@
}
.dashboard-medium-chart {
margin-bottom: 10px;
//margin-bottom: 10px;
}
// CONTENT DROPDOWNS
@ -58,6 +58,17 @@
}
}
.social-icons {
p {
float: left;
margin-left: -3px;
.fa {
font-size: 16px;
}
}
}
//actions sub menu
.headerButtonBar {
display: none;

View File

@ -381,7 +381,8 @@ div {
.tile-graph {
h5 {
margin: 0;
margin-left: 5px;
margin-right: 5px;
}
.tile-icon:hover {

View File

@ -1,10 +1,10 @@
.ui-tooltip {
@extend %font-family;
background-color: $c-positive !important;
border: 0 !important;
border-radius: 3px !important;
box-shadow: none !important;
color: $c-white !important;
font-family: 'Roboto', sans-serif !important;
font-size: 10pt !important;
font-weight: 100 !important;
z-index: 99999999;

View File

@ -88,6 +88,8 @@
@import 'arangoTabbar';
//Sub Navigation
@import 'subNavbar';
//Help View
@import 'help';
// Data Tables, TODO: might all be superflous
@import 'dataTables';