Mercurial > hg > Members > nobuyasu > Consensus
annotate public/viewer/treeArrangement.js @ 110:409e8fd79794 draft
add showAllEdge function
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 18 Mar 2013 01:15:27 +0900 |
parents | a76259e2ca9f |
children | 5ee0a70ab968 |
rev | line source |
---|---|
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
1 (function(){/**/ |
51 | 2 //agreeType:agreeType |
3 //relation:relationType | |
4 //position:displayPosition | |
5 //newPosition:animationPositon | |
6 //info:claimInfo | |
7 //id:claimID | |
8 //mentions:claimArray | |
9 //view:viewObject | |
10 | |
11 if(!window.JSON)window.JSON={parse:function(json){return eval("("+json+")");}} | |
12 var jsondata; | |
13 window.LoadJSON=LoadJSON; | |
14 function LoadJSON(url){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
15 var http=new XMLHttpRequest(); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
16 http.open("GET",url,false); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
17 http.send(); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
18 return JSON.parse(jsondata=http.responseText); |
51 | 19 } |
20 | |
21 window.LoadNewJSON=LoadNewJSON; | |
22 function LoadNewJSON(params){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
23 if(!params)params=[[],[0]] |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
24 var json=JSON.parse(jsondata) |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
25 for(var i=0;i<params.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
26 var param=params[i]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
27 var arr=json.mentions; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
28 for(var j=0;j<param.length;j++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
29 arr=arr[param[j]].claim.mentions; |
51 | 30 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
31 arr.push({type:"suggestion",id:10+i,claim:JSON.parse(jsondata)}); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
32 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
33 return json; |
51 | 34 } |
35 | |
36 window.getUserListFromJSONTree=getUserListFromJSONTree; | |
37 function getUserListFromJSONTree(root){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
38 var list=[],map={}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
39 function add(u){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
40 if(map['#'+u])return; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
41 map['#'+u]=true; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
42 list.push(u); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
43 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
44 function collect(node){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
45 add(node.info.author); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
46 var users=node.info.users; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
47 for(var i=0;i<users.length;i++)add(users[i].id); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
48 for(var i=0;i<node.mentions.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
49 collect(node.mentions[i]); |
51 | 50 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
51 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
52 collect(root); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
53 return list.sort(); |
51 | 54 } |
55 | |
56 | |
57 window.createJSONTreeInfo=createJSONTreeInfo; | |
58 function createJSONTreeInfo(jsonobj){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
59 var root=createTree(jsonobj); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
60 var layout=calcTreePosition(root,1.5); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
61 return {layout:layout,root:root}; |
51 | 62 } |
63 | |
64 function createTree(node){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
65 var obj={mentions:[]}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
66 if(node.claim){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
67 obj.id=node.id; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
68 obj.relation=node.type; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
69 node=node.claim; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
70 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
71 obj.agreeType=node.type; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
72 obj.info=node; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
73 if(node.id)obj.id=node.id; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
74 for(var i=0;i<node.mentions.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
75 obj.mentions[i]=createTree(node.mentions[i]); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
76 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
77 obj.mentions.sort(function(a,b){return a.id-b.id}) |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
78 delete node.mentions; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
79 return obj; |
51 | 80 } |
81 | |
82 window.updateJSONTreeDiff=updateJSONTreeDiff; | |
83 function updateJSONTreeDiff(node,newnode,newflag){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
84 if(newflag==1){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
85 newnode.newPosition=newnode.position; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
86 newnode.position={x:node.position.x,y:node.position.y}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
87 for(var i=0;i<newnode.mentions.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
88 updateJSONTreeDiff(node,newnode.mentions[i],1); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
89 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
90 }else if(newflag==-1){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
91 node.newPosition={x:newnode.newPosition.x,y:newnode.newPosition.y,remove:true}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
92 for(var i=0;i<node.mentions.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
93 updateJSONTreeDiff(node.mentions[i],newnode,-1); |
51 | 94 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
95 }else{ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
96 node.info=newnode.info; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
97 node.relation=newnode.relation; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
98 node.newPosition=newnode.position; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
99 var oldmentionmap={}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
100 for(var i=0;i<node.mentions.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
101 var m=node.mentions[i]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
102 oldmentionmap[m.id]=m; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
103 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
104 for(var i=0;i<newnode.mentions.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
105 var nm=newnode.mentions[i]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
106 var om=oldmentionmap[nm.id]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
107 delete oldmentionmap[nm.id]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
108 if(om)updateJSONTreeDiff(om,nm); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
109 else{ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
110 node.mentions.push(nm); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
111 updateJSONTreeDiff(node,nm,1); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
112 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
113 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
114 for(var i in oldmentionmap){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
115 updateJSONTreeDiff(oldmentionmap[i],node,-1); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
116 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
117 } |
51 | 118 } |
119 | |
120 | |
121 | |
122 function calcTreePosition(root,interval){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
123 if(!(interval>1))interval=1; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
124 function shiftPosition(node,x){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
125 node.position.x+=x; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
126 node.position.y++; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
127 var childs=node.mentions; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
128 for(var i=0;i<childs.length;i++)shiftPosition(childs[i],x); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
129 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
130 function recTree(node){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
131 node.position={x:0,y:0}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
132 var childs=node.mentions; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
133 if(childs.length==0)return [{l:0,r:0}]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
134 var lrarr=[]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
135 for(var i=0;i<childs.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
136 lrarr.push(recTree(childs[i])); |
51 | 137 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
138 |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
139 |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
140 if(true){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
141 var wmax=0; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
142 for(var i=0;i<lrarr.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
143 for(var j=i+1;j<lrarr.length;j++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
144 var max=0; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
145 for(var depth=0;lrarr[i][depth]&&lrarr[j][depth];depth++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
146 var dist=lrarr[i][depth].r-lrarr[j][depth].l+(depth?interval:1); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
147 if(dist>max)max=dist; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
148 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
149 var w=max/(j-i); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
150 if(wmax<w)wmax=w; |
51 | 151 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
152 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
153 var LR=[{l:0,r:0}]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
154 for(var i=0;i<childs.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
155 var dx=wmax*(i-(childs.length-1)/2); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
156 shiftPosition(childs[i],dx); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
157 var lr=lrarr[i]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
158 for(var d=0;d<lr.length;d++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
159 var l=lr[d].l+dx,r=lr[d].r+dx; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
160 if(!LR[d+1])LR[d+1]={l:l,r:r}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
161 else if(l<LR[d+1].l)LR[d+1].l=l; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
162 else if(LR[d+1].l<r)LR[d+1].r=r; |
51 | 163 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
164 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
165 return LR; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
166 }else{ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
167 var LR=lrarr[0]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
168 var pos=[0]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
169 for(var i=1;i<lrarr.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
170 var lr=lrarr[i]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
171 var maxDist=0; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
172 console.log(lr.length) |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
173 for(var depth=0;depth<lr.length;depth++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
174 if(!LR[depth])break; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
175 var dist=LR[depth].r-lr[depth].l+(depth?interval:1); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
176 if(dist>maxDist)maxDist=dist; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
177 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
178 pos[i]=maxDist; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
179 for(var depth=0;depth<lr.length;depth++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
180 if(LR[depth])LR[depth].r=lr[depth].r+maxDist; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
181 else LR[depth]={l:lr[depth].l+maxDist,r:lr[depth].r+maxDist}; |
51 | 182 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
183 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
184 var center=(LR[0].l+LR[0].r)/2; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
185 for(var i=0;i<childs.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
186 console.log(pos[i],center); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
187 shiftPosition(childs[i],pos[i]-center); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
188 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
189 for(var i=0;i<LR.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
190 LR[i].l-=center; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
191 LR[i].r-=center; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
192 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
193 LR.unshift({l:0,r:0}); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
194 return LR; |
51 | 195 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
196 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
197 var LR=recTree(root); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
198 var left=0,right=0; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
199 for(var i=0;i<LR.length;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
200 if(LR[i].l<left)left=LR[i].l; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
201 if(LR[i].r>right)right=LR[i].r; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
202 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
203 return {LR:LR,depth:LR.length,left:left,right:right}; |
51 | 204 } |
205 | |
206 | |
207 function checkTreeArangement(){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
208 var canvas=document.createElement("canvas"); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
209 obj=LoadJSON("../mocksenario/consensus/browse/1"); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
210 var rndparam=[[2,3],[2,3],[2,3]]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
211 for(var i=0;i<100;i++)rndparam.push([0,3]); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
212 obj=createRandom(rndparam); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
213 result=calcTreePosition(obj,2); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
214 var size=(result.right-result.left) |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
215 canvas.width=size*20+40;canvas.height=result.depth*50+50; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
216 g=canvas.getContext('2d'); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
217 document.body.appendChild(canvas); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
218 canvas.style.border="1px dotted red"; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
219 function recDraw(node){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
220 g.beginPath(); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
221 var text=(node.toulmin||(node.claim&&node.claim.toulmin)||{title:"none"}).title; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
222 var x=20-20*result.left+20*node.position.x,y=50*(1+node.position.y); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
223 g.fillText(text,x-g.measureText(text).width/2,y); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
224 var childs=node.mentions||node.claim.mentions; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
225 for(var i=0,o;o=childs[i];i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
226 var x2=20-20*result.left+20*o.position.x,y2=50*(1+o.position.y); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
227 g.beginPath();g.moveTo(x,y);g.lineTo(x2,y2);g.stroke(); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
228 recDraw(o); |
51 | 229 } |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
230 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
231 recDraw(obj); |
51 | 232 } |
233 function rndStr(){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
234 var s="",n=3+3*Math.random(); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
235 var c="abcdefghijklmnopqrstuvwxyz"; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
236 for(var i=0;i<n;i++)s+=c.charAt(c.length*Math.random()) |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
237 return s; |
51 | 238 } |
239 window.createRandom=createRandom; | |
240 function createRandom(childInfo,depth){ | |
110
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
241 if(!depth)depth=0; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
242 var info=childInfo[depth]; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
243 var node={claim:{toulmin:{title:rndStr()},mentions:[]}}; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
244 if(!info)return node; |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
245 var n=info[0]+Math.floor((info[1]-info[0])*Math.random()); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
246 for(var i=0;i<n;i++){ |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
247 node.claim.mentions.push(createRandom(childInfo,depth+1)); |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
248 } |
409e8fd79794
add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
51
diff
changeset
|
249 return node; |
51 | 250 } |
251 | |
252 /**/})();/**/ |