mirror of https://gitee.com/bigwinds/arangodb
make graph viewer issue less expensive queries
This commit is contained in:
parent
ea91826821
commit
33de89915c
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue