Commit ecb87d35 authored by PkSM3's avatar PkSM3

implicit-clusters experiment

parent 2bef5f55
......@@ -279,8 +279,8 @@ function EdgeWeightFilter(sliderDivID , type_attrb , type , criteria) {
sid = Edges[ID].sourceID
tid = Edges[ID].targetID
if (sid==n || tid==n) {
if(isUndef(getn(sid)) && !Nodes[sid].hidden ) unHide(sid)
if(isUndef(getn(tid)) && !Nodes[tid].hidden ) unHide(tid)
if(isUndef(getn(sid))) unHide(sid)
if(isUndef(getn(tid))) unHide(tid)
add1Edge(ID)
// pr("\tADD "+ID)
}
......@@ -399,7 +399,7 @@ function NodeWeightFilter(sliderDivID , type_attrb , type , criteria) {
for(var id in ids) {
ID = ids[id]
Nodes[ID].lock = false;
if(partialGraph._core.graph.nodesIndex[ID] && !Nodes[ID].hidden)
if(partialGraph._core.graph.nodesIndex[ID])
partialGraph._core.graph.nodesIndex[ID].hidden = false;
}
} else {
......
......@@ -1426,19 +1426,20 @@ function unHide(id){
//visibleEdges.push(id);
if(!isUndef(gete(id))) return;
if(Edges[id] && !Edges[id].lock){
if (!Nodes[Edges[id].sourceID].hidden && !Nodes[Edges[id].targetID].hidden) {
//if (!Nodes[Edges[id].sourceID].hidden && !Nodes[Edges[id].targetID].hidden) {
var anedge = {
id: id,
sourceID: Edges[id].sourceID,
targetID: Edges[id].targetID,
lock : false,
iscluster: (!Nodes[Edges[id].sourceID].iscluster && !Nodes[Edges[id].targetID].iscluster)?false:true ,
label: Edges[id].label,
weight: (swMacro && (iwantograph=="sociosemantic"))?Edges[id].bweight:Edges[id].weight
};
partialGraph.addEdge(id , anedge.sourceID , anedge.targetID , anedge);
return;
}
//}
}
}
}
......
......@@ -620,30 +620,13 @@ sigma.classes.Cascade = function() {
clearSchedule();
// Rescale graph:
self.graph.rescale(
self.width,
self.height,
n > 0,
e > 0
).setBorders();
self.mousecaptor.checkBorders(
self.graph.borders,
self.width,
self.height
);
self.graph.rescale( self.width, self.height, n > 0, e > 0 ).setBorders();
self.graph.translate(
self.mousecaptor.stageX,
self.mousecaptor.stageY,
self.mousecaptor.ratio,
n > 0,
e > 0
);
self.mousecaptor.checkBorders( self.graph.borders, self.width, self.height );
self.dispatch(
'graphscaled'
);
self.graph.translate( self.mousecaptor.stageX, self.mousecaptor.stageY, self.mousecaptor.ratio, n > 0, e > 0 );
self.dispatch( 'graphscaled' );
// Clear scene:
for (var k in self.domElements) {
......@@ -670,13 +653,8 @@ sigma.classes.Cascade = function() {
if (n) {
if (n > 1) {
while (self.plotter.task_drawNode()) {}
}else {
sigma.chronos.addTask(
self.plotter.task_drawNode,
'node_' + self.id,
false
);
} else {
sigma.chronos.addTask( self.plotter.task_drawNode, 'node_' + self.id, false );
start = true;
previous = 'node_' + self.id;
}
......@@ -686,20 +664,11 @@ sigma.classes.Cascade = function() {
if (l > 1) {
while (self.plotter.task_drawLabel()) {}
} else {
if (previous) {
sigma.chronos.queueTask(
self.plotter.task_drawLabel,
'label_' + self.id,
previous
);
if (previous) {
sigma.chronos.queueTask( self.plotter.task_drawLabel, 'label_' + self.id, previous );
} else {
sigma.chronos.addTask(
self.plotter.task_drawLabel,
'label_' + self.id,
false
);
sigma.chronos.addTask( self.plotter.task_drawLabel, 'label_' + self.id, false );
}
start = true;
previous = 'label_' + self.id;
}
......@@ -710,17 +679,9 @@ sigma.classes.Cascade = function() {
while (self.plotter.task_drawEdge()) {}
}else {
if (previous) {
sigma.chronos.queueTask(
self.plotter.task_drawEdge,
'edge_' + self.id,
previous
);
sigma.chronos.queueTask( self.plotter.task_drawEdge, 'edge_' + self.id, previous );
}else {
sigma.chronos.addTask(
self.plotter.task_drawEdge,
'edge_' + self.id,
false
);
sigma.chronos.addTask( self.plotter.task_drawEdge, 'edge_' + self.id, false );
}
start = true;
......@@ -728,9 +689,7 @@ sigma.classes.Cascade = function() {
}
}
self.dispatch(
'draw'
);
self.dispatch( 'draw' );
self.refresh();
......@@ -873,6 +832,7 @@ sigma.classes.Cascade = function() {
'x': 0,
'y': 0,
'size': 1,
'iscluster':false,
'degree': 0,
'inDegree': 0,
'outDegree': 0,
......@@ -911,6 +871,9 @@ sigma.classes.Cascade = function() {
case 'label':
n[k] = params[k];
break;
case 'iscluster':
n[k] = params[k];
break;
default:
n['attr'][k] = params[k];
}
......@@ -945,6 +908,7 @@ sigma.classes.Cascade = function() {
'shape': node['shape'],
'fixed': node['fixed'],
'active': node['active'],
'iscluster': node['iscluster'],
'hidden': node['hidden'],
'forceLabel': node['forceLabel'],
'attr': node['attr']
......@@ -979,6 +943,7 @@ sigma.classes.Cascade = function() {
break;
case 'fixed':
case 'active':
case 'iscluster':
case 'hidden':
case 'forceLabel':
node[k] = !!copy[k];
......@@ -1121,6 +1086,7 @@ sigma.classes.Cascade = function() {
'label': id.toString(),
'id': id.toString(),
'hidden': false,
'iscluster': false,
'attr': {}
};
e['source']['degree']++;
......@@ -1137,6 +1103,9 @@ sigma.classes.Cascade = function() {
case 'hidden':
e[k] = !!params[k];
break;
case 'iscluster':
e[k] = !!params[k];
break;
case 'size':
case 'weight':
e[k] = +params[k];
......@@ -1185,6 +1154,7 @@ sigma.classes.Cascade = function() {
'target': edge['target']['id'],
'size': edge['size'],
'type': edge['type'],
'iscluster': edge['iscluster'],
'weight': edge['weight'],
'displaySize': edge['displaySize'],
'label': edge['label'],
......@@ -2211,44 +2181,39 @@ sigma.classes.Cascade = function() {
* @return {Plotter} Returns itself.
*/
function drawNode(node) {
if(node.iscluster) return self;
size = Math.round(node['displaySize'] * 10) / 10;
shape = node['shape'];
if(!shape) {
shape = self.p.defaultNodeShape;
}
shape = node['shape'];
if(!shape) shape = self.p.defaultNodeShape;
ctx = nodesCtx;
ctx.fillStyle = node['color'];
// Node border:
ctx.beginPath();
switch(shape) {
case 'square':
wh=(node['displaySize'] * 2) + self.p.borderSize;
ctx.strokeRect(node['displayX']-wh/2,
node['displayY']-wh/2,
wh,
wh);
// ctx.strokeRect(node['displayX']-size-(1.3),
// node['displayY']-size-(1.3),
// (node['displaySize'] * 2) + self.p.borderSize,
// (node['displaySize'] * 2) + self.p.borderSize);
break;
default:
ctx.fillStyle = self.p.nodeBorderColor == 'node' ?
(node['color'] || self.p.defaultNodeColor) :
self.p.defaultNodeBorderColor;
ctx.arc(Math.round(node['displayX']),
Math.round(node['displayY']),
node['displaySize'] + self.p.borderSize-2,
0,
Math.PI * 2,
true);
break;
}
switch(shape) {
case 'square':
wh=(node['displaySize'] * 2) + self.p.borderSize;
ctx.strokeRect(node['displayX']-wh/2,
node['displayY']-wh/2,
wh,
wh);
break;
default:
ctx.fillStyle = self.p.nodeBorderColor == 'node' ?
(node['color'] || self.p.defaultNodeColor) :
self.p.defaultNodeBorderColor;
ctx.arc(Math.round(node['displayX']),
Math.round(node['displayY']),
node['displaySize'] + self.p.borderSize-2,
0,
Math.PI * 2,
true);
break;
}
ctx.closePath();
ctx.fill();
......@@ -2256,28 +2221,28 @@ sigma.classes.Cascade = function() {
// Node:
ctx.beginPath();
switch(shape) {
case 'square':
wh=size*2;
ctx.fillRect(node['displayX']-wh/2,
node['displayY']-wh/2,
wh,
wh);
break;
default:
ctx.fillStyle = self.p.nodeHoverColor == 'node' ?
(node['color'] || self.p.defaultNodeColor) :
self.p.defaultNodeHoverColor;
ctx.arc(Math.round(node['displayX']),
Math.round(node['displayY']),
node['displaySize'],
0,
Math.PI * 2,
true);
break;
}
switch(shape) {
case 'square':
wh=size*2;
ctx.fillRect(node['displayX']-wh/2,
node['displayY']-wh/2,
wh,
wh);
break;
default:
ctx.fillStyle = self.p.nodeHoverColor == 'node' ?
(node['color'] || self.p.defaultNodeColor) :
self.p.defaultNodeHoverColor;
ctx.arc(Math.round(node['displayX']),
Math.round(node['displayY']),
node['displaySize'],
0,
Math.PI * 2,
true);
break;
}
ctx.closePath();
ctx.fill();
......@@ -2304,6 +2269,7 @@ sigma.classes.Cascade = function() {
* @return {Plotter} Returns itself.
*/
function drawEdge(edge) {
if(edge.iscluster) return self;
var x1 = edge['source']['displayX'];
var y1 = edge['source']['displayY'];
var x2 = edge['target']['displayX'];
......@@ -2389,6 +2355,7 @@ sigma.classes.Cascade = function() {
* @return {Plotter} Returns itself.
*/
function drawLabel(node) {
if(node.iscluster) return self;
var ctx = labelsCtx;
var thethreshold = self.p.labelThreshold;
......@@ -2424,6 +2391,7 @@ sigma.classes.Cascade = function() {
* @return {Plotter} Returns itself.
*/
function drawHoverNode(node) {
if(node.iscluster) return self;
size = Math.round(node['displaySize'] * 10) / 10;
ctx = hoverCtx;
......@@ -2547,6 +2515,7 @@ sigma.classes.Cascade = function() {
* @return {Plotter} Returns itself.
*/
function drawActiveNode(node) {
if(node.iscluster) return self;
size = Math.round(node['displaySize'] * 10) / 10;
ctx = hoverCtx;
......@@ -2683,7 +2652,7 @@ sigma.classes.Cascade = function() {
);
}
return !node['hidden'] &&
return !node['hidden'] && !node["iscluster"] &&
(node['displayX'] + node['displaySize'] > -width / 3) &&
(node['displayX'] - node['displaySize'] < width * 4 / 3) &&
(node['displayY'] + node['displaySize'] > -height / 3) &&
......
......@@ -669,8 +669,8 @@ function parseSimpleJSON( data , seed ) {
label = (isUndef(nodesNodes[i].label)) ? ("node_"+i): nodesNodes[i].label;
size = (isUndef(nodesNodes[i].size))?1:nodesNodes[i].size;
group = (isUndef(nodesNodes[i].group))?1:nodesNodes[i].group;
ishidden = (isUndef(nodesNodes[i].hidden))?false:nodesNodes[i].hidden;
if (ishidden==1) ishidden=true;
iscluster = (isUndef(nodesNodes[i].hidden))?false:nodesNodes[i].hidden;
if (iscluster==1) iscluster=true;
var node = ({
id: i ,
......@@ -682,7 +682,7 @@ function parseSimpleJSON( data , seed ) {
htmlCont:"",
group:group,
color:color,
hidden: false
iscluster: iscluster
}); // The graph node
Nodes[i] = node;
......@@ -698,7 +698,7 @@ function parseSimpleJSON( data , seed ) {
partialGraph.addNode(i,Nodes[i]);
if(!Nodes[i].hidden)
if(!Nodes[i].iscluster)
updateSearchLabels(i,Nodes[i].label,Nodes[i].type);
}
......@@ -716,6 +716,7 @@ function parseSimpleJSON( data , seed ) {
targetID: target,
lock : false,
label: "",
iscluster:(!Nodes[source].iscluster && !Nodes[target].iscluster)?false:true ,
weight: (edgesNodes[i].w)?edgesNodes[i].w:1
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment