1
0
Fork 0

make graph viewer issue less expensive queries

This commit is contained in:
Jan Steemann 2015-04-01 11:40:38 +02:00
parent ea91826821
commit 33de89915c
1 changed files with 63 additions and 25 deletions

View File

@ -153,12 +153,38 @@ function GharialAdapter(nodes, edges, viewer, config) {
});
},
getNRandom = function(n, callback) {
sendQuery(queries.randomVertices, {
limit: n
}, function(res) {
callback(res);
getNRandom = function(n, collection) {
var data = {
query: queries.randomVertices,
bindVars: {
"@collection" : collection,
limit: n
}
};
var result;
$.ajax({
type: "POST",
url: api.cursor,
data: JSON.stringify(data),
contentType: "application/json",
dataType: "json",
processData: false,
async: false,
success: function(data) {
result = data.result;
},
error: function(data) {
try {
console.log(data.statusText);
throw "[" + data.errorNum + "] " + data.errorMessage;
}
catch (e) {
throw "Undefined ERROR";
}
}
});
return result;
},
parseResultOfTraversal = function (result, callback) {
@ -233,7 +259,7 @@ function GharialAdapter(nodes, edges, viewer, config) {
+ "})";
queries.childrenCentrality = "RETURN LENGTH(GRAPH_EDGES(@graph, @id, {direction: any}))";
queries.connectedEdges = "RETURN GRAPH_EDGES(@graph, @id)";
queries.randomVertices = "FOR x IN GRAPH_VERTICES(@graph, {}) SORT RAND() LIMIT @limit RETURN x";
queries.randomVertices = "FOR x IN @@collection SORT RAND() LIMIT @limit RETURN x";
self.explore = absAdapter.explore;
@ -242,13 +268,18 @@ function GharialAdapter(nodes, edges, viewer, config) {
};
self.loadRandomNode = function(callback) {
getNRandom(1, function(list) {
if (list.length === 0) {
callback({errorCode: 404});
var collections = _.shuffle(self.getNodeCollections()), i;
for (i = 0; i < collections.length; ++i) {
var list = getNRandom(1, collections[i]);
if (list.length > 0) {
self.loadInitialNode(list[0]._id, callback);
return;
}
self.loadInitialNode(list[0]._id, callback);
});
}
// no vertex found
callback({errorCode: 404});
};
self.loadInitialNode = function(nodeId, callback) {
@ -457,20 +488,27 @@ function GharialAdapter(nodes, edges, viewer, config) {
self.getAttributeExamples = function(callback) {
if (callback && callback.length >= 1) {
getNRandom(10, function(l) {
var ret = _.sortBy(
_.uniq(
_.flatten(
_.map(l, function(o) {
return _.keys(o);
})
)
), function(e) {
return e.toLowerCase();
}
);
callback(ret);
});
var ret = [ ];
var collections = _.shuffle(self.getNodeCollections()), i;
for (i = 0; i < collections.length; ++i) {
var l = getNRandom(10, collections[i]);
if (l.length > 0) {
ret = ret.concat(_.flatten(
_.map(l, function(o) {
return _.keys(o);
})
));
}
}
var ret = _.sortBy(
_.uniq(ret), function(e) {
return e.toLowerCase();
}
);
callback(ret);
}
};