From a32538e94b58687720881ee9e255d21f347fec37 Mon Sep 17 00:00:00 2001 From: hkernbach Date: Fri, 13 May 2016 17:16:25 +0200 Subject: [PATCH 1/4] css --- .../system/_admin/aardvark/APP/frontend/scss/_subNavbar.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/apps/system/_admin/aardvark/APP/frontend/scss/_subNavbar.scss b/js/apps/system/_admin/aardvark/APP/frontend/scss/_subNavbar.scss index 031c0f04fb..45c9b16a97 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/scss/_subNavbar.scss +++ b/js/apps/system/_admin/aardvark/APP/frontend/scss/_subNavbar.scss @@ -212,7 +212,7 @@ background: $c-white; border: 1px solid $c-bluegrey-border; display: none; - margin-top: 10px !important; + margin-top: 55px !important; min-width: 200px; position: absolute; z-index: 9999; From 628474f54e1d660eb33b2487b267cc6263b0501a Mon Sep 17 00:00:00 2001 From: hkernbach Date: Fri, 13 May 2016 17:48:44 +0200 Subject: [PATCH 2/4] sessions value generation --- .../@arangodb/foxx/legacy/authentication.js | 2 -- .../foxx/sessions/storages/_system.js | 22 ++++++++++++++++--- .../foxx/sessions/storages/collection.js | 20 +++++++++++++++-- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/js/server/modules/@arangodb/foxx/legacy/authentication.js b/js/server/modules/@arangodb/foxx/legacy/authentication.js index ad694d0097..1b0ee6184a 100644 --- a/js/server/modules/@arangodb/foxx/legacy/authentication.js +++ b/js/server/modules/@arangodb/foxx/legacy/authentication.js @@ -307,8 +307,6 @@ function encodePassword(password) { return encoded; } - - //////////////////////////////////////////////////////////////////////////////// /// @brief constructor //////////////////////////////////////////////////////////////////////////////// diff --git a/js/server/modules/@arangodb/foxx/sessions/storages/_system.js b/js/server/modules/@arangodb/foxx/sessions/storages/_system.js index d0a852e8ad..95809bf716 100644 --- a/js/server/modules/@arangodb/foxx/sessions/storages/_system.js +++ b/js/server/modules/@arangodb/foxx/sessions/storages/_system.js @@ -26,6 +26,7 @@ const assert = require('assert'); const internal = require('internal'); const arangodb = require('@arangodb'); const NOT_FOUND = arangodb.errors.ERROR_ARANGO_DOCUMENT_NOT_FOUND.code; +const UNIQUE_CONSTRAINT = arangodb.errors.ERROR_ARANGO_UNIQUE_CONSTRAINT_VIOLATED.code; const db = arangodb.db; const aql = arangodb.aql; @@ -87,9 +88,24 @@ module.exports = function systemStorage(cfg) { let sid = session._key; const isNew = !sid; if (isNew) { - const meta = db._sessions.save(payload); - sid = meta._key; - session._key = sid; + // generate a new key + let crypto = require("@arangodb/crypto"); + while (true) { + payload._key = crypto.sha256(crypto.rand() + "-frontend"); + try { + // test if key is already present in collection + const meta = db._sessions.save(payload); + sid = meta._key; + session._key = sid; + console.log(1); + console.log(session._key); + break; + } catch (e) { + if (!e.isArangoError || e.errorNum !== UNIQUE_CONSTRAINT) { + throw e; + } + } + } } else { db._sessions.replace(sid, payload); } diff --git a/js/server/modules/@arangodb/foxx/sessions/storages/collection.js b/js/server/modules/@arangodb/foxx/sessions/storages/collection.js index 593b91cfac..26e330638c 100644 --- a/js/server/modules/@arangodb/foxx/sessions/storages/collection.js +++ b/js/server/modules/@arangodb/foxx/sessions/storages/collection.js @@ -25,6 +25,7 @@ const assert = require('assert'); const arangodb = require('@arangodb'); const NOT_FOUND = arangodb.errors.ERROR_ARANGO_DOCUMENT_NOT_FOUND.code; +const UNIQUE_CONSTRAINT = arangodb.errors.ERROR_ARANGO_UNIQUE_CONSTRAINT_VIOLATED.code; const db = arangodb.db; const aql = arangodb.aql; @@ -95,8 +96,23 @@ module.exports = function collectionStorage(cfg) { data: session.data }; if (!session._key) { - const meta = collection.save(payload); - session._key = meta._key; + // generate a new key + let crypto = require("@arangodb/crypto"); + while (true) { + payload._key = crypto.sha256(crypto.rand() + "-frontend"); + try { + // test if key is already present in collection + const meta = collection.save(payload); + session._key = meta._key; + console.log(2); + console.log(session._key); + break; + } catch (e) { + if (!e.isArangoError || e.errorNum !== UNIQUE_CONSTRAINT) { + throw e; + } + } + } } else { collection.replace(session._key, payload); } From 722fc88212bb52021322a853dda182659e8009ac Mon Sep 17 00:00:00 2001 From: hkernbach Date: Fri, 13 May 2016 17:57:26 +0200 Subject: [PATCH 3/4] dashboard scss --- .../system/_admin/aardvark/APP/frontend/scss/_newDashboard.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/js/apps/system/_admin/aardvark/APP/frontend/scss/_newDashboard.scss b/js/apps/system/_admin/aardvark/APP/frontend/scss/_newDashboard.scss index 5f77640858..bf122cdbec 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/scss/_newDashboard.scss +++ b/js/apps/system/_admin/aardvark/APP/frontend/scss/_newDashboard.scss @@ -381,6 +381,7 @@ @extend %pull-right; .dashboard-legend-inner { + margin-right: 25px; padding: 10px 5px 5px 0; text-align: right; From 0ca4db3c18532ae4408b6dce7cf99d228376cc1e Mon Sep 17 00:00:00 2001 From: hkernbach Date: Fri, 13 May 2016 19:00:26 +0200 Subject: [PATCH 4/4] added replication factor --- .../APP/frontend/js/views/collectionsView.js | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/js/apps/system/_admin/aardvark/APP/frontend/js/views/collectionsView.js b/js/apps/system/_admin/aardvark/APP/frontend/js/views/collectionsView.js index 39162f74f2..300363f0ec 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/js/views/collectionsView.js +++ b/js/apps/system/_admin/aardvark/APP/frontend/js/views/collectionsView.js @@ -327,11 +327,16 @@ else { var collName = $('#new-collection-name').val(), collSize = $('#new-collection-size').val(), + replicationFactor = $('#new-replication-factor').val(), collType = $('#new-collection-type').val(), collSync = $('#new-collection-sync').val(), shards = 1, shardBy = []; + if (replicationFactor === '') { + replicationFactor = 1; + } + if (isCoordinator) { shards = $('#new-collection-shards').val(); @@ -393,6 +398,7 @@ wfs: wfs, isSystem: isSystem, collSize: collSize, + replicationFactor: replicationFactor, collType: collType, shards: shards, shardBy: shardBy @@ -496,6 +502,24 @@ ] ) ); + if (window.App.isCluster) { + advancedTableContent.push( + window.modalView.createTextEntry( + "new-replication-factor", + "Replication factor", + "", + "Numeric value. Default is '1'. Description: TODO", + "", + false, + [ + { + rule: Joi.string().allow('').optional().regex(/^[0-9]*$/), + msg: "Must be a number." + } + ] + ) + ); + } advancedTableContent.push( window.modalView.createSelectEntry( "new-collection-sync",