Skip to content
This repository has been archived by the owner on Jan 16, 2020. It is now read-only.

Commit

Permalink
Merge pull request #54 from ofilangi/v2.0
Browse files Browse the repository at this point in the history
V2.0
  • Loading branch information
Olivier Filangi committed Jul 22, 2016
2 parents 7ba45db + 361a31e commit 588c798
Show file tree
Hide file tree
Showing 26 changed files with 635 additions and 4,956 deletions.
15 changes: 14 additions & 1 deletion .travis.yml
Expand Up @@ -10,11 +10,24 @@ cache: pip
install:
- pip install coveralls
- python setup.py install
- npm install --save-dev gulp
- npm install --save-dev gulp-util
- npm install --save-dev gulp-concat
- npm install --save-dev gulp-sourcemaps
- npm install --save-dev gulp-babel babel-preset-es2015
- npm install --save-dev gulp-mocha
- npm install gulp-mocha-phantomjs --save-dev
- npm install should --save-dev
- npm install --save-dev mocha
- npm install --save-dev chai
- npm install jshint gulp-jshint --save-dev
before_script:
- docker pull tenforce/virtuoso
- sudo docker run -d --name virtuoso -p 127.0.0.1:8890:8890 -p 127.0.0.1:1111:1111 -e DBA_PASSWORD=dba -e SPARQL_UPDATE=true -e DEFAULT_GRAPH=http://localhost:8890/DAV --net="host" -t tenforce/virtuoso
- docker ps -a
- sleep 45
script: python setup.py nosetests
script:
- python setup.py nosetests
- gulp test
after_success:
coveralls
67 changes: 0 additions & 67 deletions Gruntfile.js

This file was deleted.

100 changes: 50 additions & 50 deletions askomics/static/js/AskomicsForceLayoutManager.js
@@ -1,7 +1,5 @@
/*jshint esversion: 6 */

/*
*/
var AskomicsForceLayoutManager = function () {

var w = $("#svgdiv").width();
Expand All @@ -23,7 +21,7 @@ var AskomicsForceLayoutManager = function () {

AskomicsForceLayoutManager.prototype.offProposedUri = function(type,uri) {

tab = this.getArrayForProposedUri(type);
let tab = this.getArrayForProposedUri(type);

for (var uriI of tab) {
if (uriI == uri) return;
Expand All @@ -33,7 +31,7 @@ var AskomicsForceLayoutManager = function () {

AskomicsForceLayoutManager.prototype.onProposedUri = function(type,uri) {

tab = this.getArrayForProposedUri(type);
let tab = this.getArrayForProposedUri(type);

for (var i in tab) {
if (tab[i] == uri ) {
Expand All @@ -45,7 +43,7 @@ var AskomicsForceLayoutManager = function () {

AskomicsForceLayoutManager.prototype.isProposedUri = function(type,uri) {

tab = this.getArrayForProposedUri(type);
let tab = this.getArrayForProposedUri(type);

for (var i in tab) {
if (tab[i] == uri ) {
Expand Down Expand Up @@ -171,7 +169,7 @@ var AskomicsForceLayoutManager = function () {

AskomicsForceLayoutManager.prototype.start = function () {
/* Get information about start point to bgin query */
var startPoint = $('#startpoints').find(":selected").data("value");
let startPoint = $('#startpoints').find(":selected").data("value");

//startPoint = userAbstraction.buildBaseNode(startPoint.uri);
/* load abstraction */
Expand Down Expand Up @@ -209,9 +207,9 @@ var AskomicsForceLayoutManager = function () {

nodes.splice(0, nodes.length);
links.splice(0, links.length);
t = graphBuilder.setNodesAndLinksFromState(dump);
lnodes = t[0];
llinks = t[1];
let t = graphBuilder.setNodesAndLinksFromState(dump);
let lnodes = t[0];
let llinks = t[1];

if ( lnodes.length <=0 ) return ; /* nothing to do */

Expand Down Expand Up @@ -243,7 +241,7 @@ var AskomicsForceLayoutManager = function () {
AskomicsForceLayoutManager.prototype.updateInstanciateLinks = function(links) {
console.log('updateInstanciateLinks size:'+links.length);
for (var l of links) {
var id = l.id;
let id = l.id;
console.log(JSON.stringify(l));
$("#" + id).css("stroke-dasharray","");
$("#" + id).css("opacity","1");
Expand All @@ -258,7 +256,7 @@ var AskomicsForceLayoutManager = function () {
throw new Error("AskomicsForceLayoutManager.prototype.updateInstanciateNode : node is not defined !");

// change label node with the SPARQL Variate Id
$('#txt_'+node.id).html(node.label+'<tspan font-size="7" baseline-shift="sub">'+graphBuilder.getLabelIndexNode(node)+"</tspan>");
$('#txt_'+node.id).html(node.label+node.getLabelIndexNodeHtml());
// canceled transparency
$("#node_"+node.id).css("opacity", "1");
$('#txt_'+node.id).css("opacity","1");
Expand All @@ -285,7 +283,7 @@ var AskomicsForceLayoutManager = function () {

} else {
// deselection case
for ( var n in selectNodes ){
for ( let n in selectNodes ){
if (selectNodes[n].id == node.id) {
// remove the current node from the selected node list !
selectNodes.splice(n,1);
Expand Down Expand Up @@ -354,18 +352,18 @@ var AskomicsForceLayoutManager = function () {

AskomicsForceLayoutManager.prototype.insertSuggestionsWithNewNode = function (slt_node) {
/* get All suggested node and relation associated to get orientation of arc */
tab = userAbstraction.getRelationsObjectsAndSubjectsWithURI(slt_node.uri);
objectsTarget = tab[0]; /* All triplets which slt_node URI are the subject */
subjectsTarget = tab[1]; /* All triplets which slt_node URI are the object */
var link = {} ;
let tab = userAbstraction.getRelationsObjectsAndSubjectsWithURI(slt_node.uri);
let objectsTarget = tab[0]; /* All triplets which slt_node URI are the subject */
let subjectsTarget = tab[1]; /* All triplets which slt_node URI are the object */

var suggestedList = {} ;
let link;

for (var uri in objectsTarget ) {
/* Filter if node are not desired by the user */
if (! forceLayoutManager.isProposedUri("node",uri)) continue ;
/* creatin node */
suggestedNode = userAbstraction.buildBaseNode(uri);
let suggestedNode = userAbstraction.buildBaseNode(uri);
/* specific attribute for suggested node */
suggestedNode = graphBuilder.setSuggestedNode(suggestedNode,slt_node.x,slt_node.y);

Expand Down Expand Up @@ -394,10 +392,12 @@ var AskomicsForceLayoutManager = function () {
for (uri in subjectsTarget ) {
/* Filter if node are not desired by the user */
if (! forceLayoutManager.isProposedUri("node",uri)) continue ;

let suggestedNode;
if ( ! (uri in suggestedList) ) {
suggestedNode = userAbstraction.buildBaseNode(uri);
suggestedNode = graphBuilder.setSuggestedNode(suggestedNode,slt_node.x,slt_node.y);
} else {
suggestedNode = suggestedList[uri];
}

for (var rel2 in subjectsTarget[uri]) {
Expand All @@ -423,7 +423,7 @@ var AskomicsForceLayoutManager = function () {
// add neighbours of a node to the graph as propositions.

// Manage positionnable entities
positionableEntities = userAbstraction.getPositionableEntities();
let positionableEntities = userAbstraction.getPositionableEntities();

for (uri in positionableEntities) {
// if selected node is not a positionable node, donc create a positionable
Expand All @@ -436,7 +436,7 @@ var AskomicsForceLayoutManager = function () {

/* uncomment if we don't want a positionable relation between the same node */
//if ( uri == slt_node.uri ) continue ;

let suggestedNode;
if ( ! (uri in suggestedList) ) {
/* creatin node */
suggestedNode = userAbstraction.buildBaseNode(uri);
Expand Down Expand Up @@ -468,9 +468,9 @@ var AskomicsForceLayoutManager = function () {
AskomicsForceLayoutManager.prototype.insertSuggestionsWithTwoNodesInstancied = function (node1, node2) {

/* get All suggested node and relation associated to get orientation of arc */
tab = userAbstraction.getRelationsObjectsAndSubjectsWithURI(node1.uri);
objectsTarget = tab[0]; /* All triplets which slt_node URI are the subject */
subjectsTarget = tab[1]; /* All triplets which slt_node URI are the object */
let tab = userAbstraction.getRelationsObjectsAndSubjectsWithURI(node1.uri);
let objectsTarget = tab[0]; /* All triplets which slt_node URI are the subject */
let subjectsTarget = tab[1]; /* All triplets which slt_node URI are the object */

for (var rel in objectsTarget[node2.uri]) {
/* Filter if link are not desired by the user */
Expand All @@ -480,34 +480,34 @@ var AskomicsForceLayoutManager = function () {
let uriLink = objectsTarget[node2.uri][rel];
let source = node1;
let target = node2;
link = new AskomicsLink(uriLink,source,target);
let link = new AskomicsLink(uriLink,source,target);
link.id = graphBuilder.getId();
links.push(link);
}

for (let rel2 in subjectsTarget[node2.uri]) {
for (let rel in subjectsTarget[node2.uri]) {
/* Filter if link are not desired by the user */
if (! forceLayoutManager.isProposedUri("link",subjectsTarget[node2.uri][rel2])) continue ;
if (! forceLayoutManager.isProposedUri("link",subjectsTarget[node2.uri][rel])) continue ;

if ( this.relationInstancied(node2,node1,subjectsTarget[node2.uri][rel2],links) ) continue ;
if ( this.relationInstancied(node2,node1,subjectsTarget[node2.uri][rel],links) ) continue ;

let uriLink = subjectsTarget[node2.uri][rel2];
let uriLink = subjectsTarget[node2.uri][rel];
let source = node2;
let target = node1;
link = new AskomicsLink(uriLink,source,target);
let link = new AskomicsLink(uriLink,source,target);
link.id = graphBuilder.getId();
links.push(link);
}
// Manage positionnable entities
positionableEntities = userAbstraction.getPositionableEntities();
let positionableEntities = userAbstraction.getPositionableEntities();

if ( forceLayoutManager.isProposedUri("link","positionable") &&
(node1.uri in positionableEntities) && (node2.uri in positionableEntities)) {

let uriLink = 'positionable' ;
let source = node2 ;
let target = node1;
link = new AskomicsPositionableLink(uriLink,source,target);
let link = new AskomicsPositionableLink(uriLink,source,target);
link.id = graphBuilder.getId();
links.push(link);
}
Expand All @@ -516,9 +516,9 @@ var AskomicsForceLayoutManager = function () {
/* Remove all nodes and links suggestion */
AskomicsForceLayoutManager.prototype.removeSuggestions = function() {

var removeL = [];
let removeL = [];
for (var idx in links) {
l = links[idx];
let l = links[idx];
if ( l.suggested ) {
removeL.push(idx);
l.source.nlink[l.target.id]--; // decrease the number of link
Expand All @@ -540,16 +540,16 @@ var AskomicsForceLayoutManager = function () {
}
}
for (var n2=removeN.length-1;n2>=0;n2--){
idxn = removeN[n2];
let idxn = removeN[n2];
nodes.splice(idxn,1);
}
} ; /* user want a new relation contraint betwwenn two node*/

// take a string and return an entity with a sub index
AskomicsForceLayoutManager.prototype.selectListLinksUser= function (links,node) {
/* fix the first link associted with the new instanciate node TODO: propose an interface to select the link */
for (var il in links) {
var l = links[il];
for (let il in links) {
let l = links[il];
if ( l.suggested && (l.source.id == node.id || l.target.id == node.id) ) {
return [links[il]];
}
Expand Down Expand Up @@ -593,7 +593,7 @@ var AskomicsForceLayoutManager = function () {
forceLayoutManager.selectLink(d);

if ( d.suggested ) {
ll = [d];
let ll = [d];
graphBuilder.instanciateLink(ll);
forceLayoutManager.updateInstanciateLinks(ll);
if ( d.source.suggested || d.target.suggested ) {
Expand Down Expand Up @@ -673,8 +673,8 @@ var AskomicsForceLayoutManager = function () {
.style('stroke', 'grey')
.style("stroke-dasharray",function(d) {return d.suggested?"2":"";})
.style("opacity", function(d) {return d.suggested?"0.3":"1";})
.style("stroke-width", "2")
.on("mouseover", function(d) { this.style[2]="4";});
.style("stroke-width", "2");
// .on("mouseover", function(d) { this.style[2]="4";}); /* "TypeError: 2 is read-only" occurs in browser */

var node = vis.selectAll("g.node")
.data(nodes, function (d) { return d.id; });
Expand Down Expand Up @@ -740,7 +740,7 @@ var AskomicsForceLayoutManager = function () {
.attr("font-size","7")
.attr("baseline-shift","sub")
.text(function (d) {
return graphBuilder.getLabelIndexNode(d);
return d.getLabelIndexNode();
});

link.exit().remove();
Expand All @@ -750,17 +750,17 @@ var AskomicsForceLayoutManager = function () {
node.attr("transform", function (d) { return "translate(" + d.x + "," + d.y + ")"; });

link.attr("d", function(d) {
var nlinks = d.source.nlink[d.target.id]; // same as d.target.nlink[d.source.id]
let nlinks = d.source.nlink[d.target.id]; // same as d.target.nlink[d.source.id]

/* diminution of arc to improve display of links */
var penteX = d.target.x-d.source.x;
var penteY = d.target.y-d.source.y;
let penteX = d.target.x-d.source.x;
let penteY = d.target.y-d.source.y;
/* arrondi a une decimale */
penteX = Math.round(penteX*10)/10;
penteY = Math.round(penteY*10)/10;

var XT=0,YT=0,XS=0,YS=0;
var dim = d.source.getRNode()/3.0;
let XT=0,YT=0,XS=0,YS=0;
let dim = d.source.getRNode()/3.0;
if ( penteX >0 && penteY>0) {
XT = -dim ;
YT = -dim ;
Expand All @@ -783,16 +783,16 @@ var AskomicsForceLayoutManager = function () {
XS = -dim ;
YS = -dim ;
}
Xsource = d.source.x + XS;
Ysource = d.source.y + YS;
Xtarget = d.target.x + XT;
Ytarget = d.target.y + YT;
let Xsource = d.source.x + XS;
let Ysource = d.source.y + YS;
let Xtarget = d.target.x + XT;
let Ytarget = d.target.y + YT;
/* Manage a line if weigth = 1 */
if ( nlinks <= 1 ) {
return "M" + Xsource + "," + Ysource + "L" + Xtarget + "," + Ytarget ;
} else {
/* sinon calcul d une courbure */
var dx = Xtarget - Xsource,
let dx = Xtarget - Xsource,
dy = Ytarget - Ysource,
dr = Math.sqrt(dx * dx + dy * dy);

Expand Down

0 comments on commit 588c798

Please sign in to comment.