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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
110
409e8fd79794 add showAllEdge function
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
1 (function(){/**/
51
a76259e2ca9f add public/viewer
one
parents:
diff changeset
2 //agreeType:agreeType
a76259e2ca9f add public/viewer
one
parents:
diff changeset
3 //relation:relationType
a76259e2ca9f add public/viewer
one
parents:
diff changeset
4 //position:displayPosition
a76259e2ca9f add public/viewer
one
parents:
diff changeset
5 //newPosition:animationPositon
a76259e2ca9f add public/viewer
one
parents:
diff changeset
6 //info:claimInfo
a76259e2ca9f add public/viewer
one
parents:
diff changeset
7 //id:claimID
a76259e2ca9f add public/viewer
one
parents:
diff changeset
8 //mentions:claimArray
a76259e2ca9f add public/viewer
one
parents:
diff changeset
9 //view:viewObject
a76259e2ca9f add public/viewer
one
parents:
diff changeset
10
a76259e2ca9f add public/viewer
one
parents:
diff changeset
11 if(!window.JSON)window.JSON={parse:function(json){return eval("("+json+")");}}
a76259e2ca9f add public/viewer
one
parents:
diff changeset
12 var jsondata;
a76259e2ca9f add public/viewer
one
parents:
diff changeset
13 window.LoadJSON=LoadJSON;
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
19 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
20
a76259e2ca9f add public/viewer
one
parents:
diff changeset
21 window.LoadNewJSON=LoadNewJSON;
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
34 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
35
a76259e2ca9f add public/viewer
one
parents:
diff changeset
36 window.getUserListFromJSONTree=getUserListFromJSONTree;
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
54 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
55
a76259e2ca9f add public/viewer
one
parents:
diff changeset
56
a76259e2ca9f add public/viewer
one
parents:
diff changeset
57 window.createJSONTreeInfo=createJSONTreeInfo;
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
62 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
63
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
80 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
81
a76259e2ca9f add public/viewer
one
parents:
diff changeset
82 window.updateJSONTreeDiff=updateJSONTreeDiff;
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
118 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
119
a76259e2ca9f add public/viewer
one
parents:
diff changeset
120
a76259e2ca9f add public/viewer
one
parents:
diff changeset
121
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
204 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
205
a76259e2ca9f add public/viewer
one
parents:
diff changeset
206
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
232 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
238 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
239 window.createRandom=createRandom;
a76259e2ca9f add public/viewer
one
parents:
diff changeset
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
a76259e2ca9f add public/viewer
one
parents:
diff changeset
250 }
a76259e2ca9f add public/viewer
one
parents:
diff changeset
251
a76259e2ca9f add public/viewer
one
parents:
diff changeset
252 /**/})();/**/