1 |
|
---|
2 | // API逕ィ繝励Ξ繝輔ぅ繝�け繧ケ謖�ョ� |
---|
3 | var prefix = 'http://www.sparqlbuilder.org/api';
|
---|
4 |
|
---|
5 |
|
---|
6 | // 謠冗判邉サ螳壽焚
|
---|
7 | var PATHNUM = 0;
|
---|
8 | var MAXDEPTH = 0;
|
---|
9 | var TREESPACE = 0;
|
---|
10 | var NODEHEIGHT = 50;
|
---|
11 | var DRAWHEIGHT = 0;
|
---|
12 |
|
---|
13 | // 繝代せ謗「邏「縺ォ菴ソ縺�お繝ウ繝峨�繧、繝ウ繝医�繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繝サ繧ィ繝ウ繝峨け繝ゥ繧ケ
|
---|
14 | var endpoint = "";
|
---|
15 | var startclass= "";
|
---|
16 | var endclass = "";
|
---|
17 |
|
---|
18 | // GET繝。繧ス繝�ラ縺ァ謖�ョ壹&繧後※縺�◆蝣エ蜷医�蛟、蜿門セ礼畑
|
---|
19 | var defendpoint = "";
|
---|
20 | var defstartclass= "";
|
---|
21 | var defendclass = "";
|
---|
22 |
|
---|
23 | // 蜿門セ励@縺殍son菫晏ュ倡畑
|
---|
24 | var jsontext = "";
|
---|
25 | // 謠冗判縺ォ蛻ゥ逕ィ縺吶k繧ェ繝悶ず繧ァ繧ッ繝� |
---|
26 | var pathobj = "";
|
---|
27 |
|
---|
28 | // 蛻昴a縺ォ陦ィ遉コ縺吶k繝代せ謨ー縺ョ荳企剞
|
---|
29 | var pathlimit = 10;
|
---|
30 |
|
---|
31 |
|
---|
32 | // 繝壹�繧ク隱ュ縺ソ霎シ縺ソ縺悟ョ御コ�ャ。隨ャ螳溯。� |
---|
33 | $(function(){
|
---|
34 |
|
---|
35 | // 繝壹�繧ク縺ョ繝代�繝�Κ蛻�r霑ス蜉
|
---|
36 | initparts();
|
---|
37 |
|
---|
38 | // GET繝。繧ス繝�ラ縺ァ謖�ョ壹&繧後◆蛟、縺後≠繧後�蜿門セ� |
---|
39 | getParameter();
|
---|
40 |
|
---|
41 | // 謖�ョ壹′縺ゅl縺ー
|
---|
42 | if(defendpoint != "" && defstartclass != "" && defendclass != ""){
|
---|
43 | // 謖�ョ壹&繧後◆蜀�ョケ繧剃スソ縺ТPARQLbuilder繧帝幕縺� |
---|
44 | openSPARQLBuilder();
|
---|
45 | }
|
---|
46 |
|
---|
47 | });
|
---|
48 |
|
---|
49 | // 繝代�繝��蛻晄悄蛹� |
---|
50 | function initparts(){
|
---|
51 | // SPARQLbuilder逕ィ隕∫エ繧貞叙蠕� |
---|
52 | var sbdiv = $('div#SPARQLBUILDER');
|
---|
53 | // 荳ュ縺ォdiv隕∫エ縺後↑縺代l縺ー
|
---|
54 | if(sbdiv.find('div').length == 0){
|
---|
55 | // 繝医ャ繝励�SPARQLbuilder逕サ髱「繧剃ス懈�
|
---|
56 | var sbtop = '<div class="SBTopItems"><input type="button" class="SBTopButton" value="Open SPARQLBuilder" onclick="openSPARQLBuilder()"><input type="button" class="SBTopButton" value="Try with Sample" onclick="openSample(\'http://www.ebi.ac.uk/rdf/services/reactome/sparql\', \'http://www.biopax.org/release/biopax-level3.owl#Protein\', \'http://www.biopax.org/release/biopax-level3.owl#Pathway\')"><br><textarea class="SBSparqlArea" rows="10"></textarea><br><input type="button" class="SBTopButton" value="Send SPARQL" onclick="sendSPARQL()"><input type="button" class="SBTopButton" value="Download Result" onclick="downloadResult()"></div><div class="SBTutorialLink">Tutorial for SPARQL Builder GUI is <a href="http://www.sparqlbuilder.org/doc/how-to-use-sparql-builder-gui/" target="_blank">here</a>.</div>';
|
---|
57 | // 繝代せ陦ィ遉コ逕サ髱「縺ョ繝「繝シ繝繝ォ繧剃ス懈�
|
---|
58 | var sbmodal = '<div class="SBModalView"><div class="SBModalContents"><div class="SBForms"><div class="SBSelects"><select class="SBEndPointSelect"></select><select class="SBStartClassSelect"></select><select class="SBEndClassSelect"></select></div><div class="SBPermaLink"><input type="button" class="SBPermaLinkButton" value="Permalink" onclick="openPermalink()" disabled="disabled"></div></div><div class="SBMessage"><div class="SBResult"><span class="SBPathnum"></span> Path<span class="SBPlural"></span> found.</div><input type="button" class="SBViewAll" value="View All Path" onclick="viewAll()"></div><div class="SBGraph"><div class="SBAjaxLoad" style="display: none;"><div class="SBLoadIcon"><img src="images/ajax-loader.gif"></div></div></div><div class="SBPath"><div class="SBSelectedPath"></div></div><div class="SBModalButtons"><input type="button" class="SBModalButton" value="Close" onclick="closeSPARQLBuilder()"></div></div></div>';
|
---|
59 |
|
---|
60 | // SPARQLbuilder逕ィ隕∫エ縺ォ繝医ャ繝礼畑逕サ髱「繧定ソス蜉
|
---|
61 | sbdiv.html(sbtop);
|
---|
62 | // body隕∫エ譛ォ蟆セ縺ォ繝「繝シ繝繝ォ逕サ髱「繧定ソス蜉
|
---|
63 | $('body').append(sbmodal);
|
---|
64 | }
|
---|
65 |
|
---|
66 | // 繝「繝シ繝繝ォ逕サ髱「縺ョ繧ッ繝ェ繝�け繧、繝吶Φ繝� |
---|
67 | $('.SBModalView').click(function(){
|
---|
68 | // 繝「繝シ繝繝ォ逕サ髱「繧偵ヵ繧ァ繝シ繝峨い繧ヲ繝医@髱櫁。ィ遉コ縺ォ
|
---|
69 | $(this).fadeOut(700);
|
---|
70 | });
|
---|
71 |
|
---|
72 | // 繝「繝シ繝繝ォ蜀��繧ウ繝ウ繝�Φ繝�Κ蛻��繧ッ繝ェ繝�け繧、繝吶Φ繝� |
---|
73 | $('.SBModalContents').click(function(event){
|
---|
74 | // 繝励Ο繝代ご繝シ繧キ繝ァ繝ウ繧呈ュ「繧√さ繝ウ繝�Φ繝�Κ蛻��繧ッ繝ェ繝�け縺ァ縺ッ繝輔ぉ繝シ繝峨い繧ヲ繝医@縺ェ縺�h縺�↓縺吶k
|
---|
75 | event.stopPropagation();
|
---|
76 | });
|
---|
77 |
|
---|
78 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医Μ繧ケ繝医�蜿門セ� |
---|
79 | loadEndPointList();
|
---|
80 |
|
---|
81 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医′螟画峩縺輔l縺溘i
|
---|
82 | $(".SBEndPointSelect").change(function() {
|
---|
83 | // 繝�ヵ繧ゥ繝ォ繝医〒縺ェ縺代l縺ー
|
---|
84 | if($(".SBEndPointSelect").val() != "SBDefault"){
|
---|
85 | // 驕ク謚槭&繧後※縺�k繧ィ繝ウ繝峨�繧、繝ウ繝医�URL繧貞叙蠕� |
---|
86 | endpoint = $(".SBEndPointSelect").val();
|
---|
87 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繧貞�隱ュ縺ソ霎シ縺ソ
|
---|
88 | loadStartClassList();
|
---|
89 | }
|
---|
90 | });
|
---|
91 |
|
---|
92 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺悟、画峩縺輔l縺溘i
|
---|
93 | $(".SBStartClassSelect").change(function() {
|
---|
94 | // 繝�ヵ繧ゥ繝ォ繝医〒縺ェ縺代l縺ー
|
---|
95 | if($(".SBStartClassSelect").val() != "SBDefault"){
|
---|
96 | // 驕ク謚槭&繧後※縺�k繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョURI繧貞叙蠕� |
---|
97 | startClass = $(".SBStartClassSelect").val();
|
---|
98 | // 繧ィ繝ウ繝峨け繝ゥ繧ケ繧貞�隱ュ縺ソ霎シ縺ソ
|
---|
99 | loadEndClassList();
|
---|
100 | }
|
---|
101 | });
|
---|
102 |
|
---|
103 | // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺悟、画峩縺輔l縺溘i
|
---|
104 | $(".SBEndClassSelect").change(function() {
|
---|
105 | // 繝�ヵ繧ゥ繝ォ繝医〒縺ェ縺代l縺ー
|
---|
106 | if($(".SBEndClassSelect").val() != "SBDefault"){
|
---|
107 | // 驕ク謚槭&繧後※縺�k繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョURI繧貞叙蠕� |
---|
108 | endClass = $(".SBEndClassSelect").val();
|
---|
109 | // 蜿門セ励@縺滓ュ蝣ア繧帝√j繝代せ繧貞�隱ュ縺ソ霎シ縺ソ
|
---|
110 | loadPathList();
|
---|
111 | }
|
---|
112 | });
|
---|
113 |
|
---|
114 | }
|
---|
115 |
|
---|
116 | // GET繝。繧ス繝�ラ縺ァ騾√i繧後◆繝代Λ繝。繝シ繧ソ縺ョ繝√ぉ繝�け
|
---|
117 | function getParameter(){
|
---|
118 | if( 1 < window.location.search.length ){
|
---|
119 | var query = window.location.search.substring( 1 );
|
---|
120 | var parameters = query.split( '&' );
|
---|
121 |
|
---|
122 | for( var i = 0; i < parameters.length; i++ ){
|
---|
123 | var element = parameters[ i ].split( '=' );
|
---|
124 | if(decodeURIComponent( element[ 0 ] ) == "ep"){
|
---|
125 | defendpoint = decodeURIComponent( element[ 1 ] )
|
---|
126 | }else if(decodeURIComponent( element[ 0 ] ) == "st"){
|
---|
127 | defstartclass = decodeURIComponent( element[ 1 ] )
|
---|
128 | }else if(decodeURIComponent( element[ 0 ] ) == "en"){
|
---|
129 | defendclass = decodeURIComponent( element[ 1 ] )
|
---|
130 | }
|
---|
131 | }
|
---|
132 | }
|
---|
133 | }
|
---|
134 |
|
---|
135 |
|
---|
136 | function openSPARQLBuilder(){
|
---|
137 |
|
---|
138 | $('.SBModalView').css('top', $(window).scrollTop()).css('height', window.innerHeight).fadeIn();
|
---|
139 |
|
---|
140 | resizeModalView();
|
---|
141 |
|
---|
142 | $(".SBEndPointSelect").select2();
|
---|
143 | $(".SBStartClassSelect").select2();
|
---|
144 | $(".SBEndClassSelect").select2();
|
---|
145 |
|
---|
146 | if(defendpoint != "" && defstartclass != "" && defendclass != ""){
|
---|
147 |
|
---|
148 | $('.SBStartClassSelect').on('lsccomplete', function(){
|
---|
149 | $('.SBStartClassSelect').val(defstartclass);
|
---|
150 | defstartclass = "";
|
---|
151 |
|
---|
152 | $(".SBEndPointSelect").select2();
|
---|
153 | $(".SBStartClassSelect").select2();
|
---|
154 | $(".SBEndClassSelect").select2();
|
---|
155 |
|
---|
156 | $('.SBStartClassSelect').unbind('lsccomplete');
|
---|
157 | loadEndClassList();
|
---|
158 | });
|
---|
159 |
|
---|
160 | $('.SBEndClassSelect').on('leccomplete', function(){
|
---|
161 | $('.SBEndClassSelect').val(defendclass);
|
---|
162 | defendclass = "";
|
---|
163 |
|
---|
164 | $(".SBEndPointSelect").select2();
|
---|
165 | $(".SBStartClassSelect").select2();
|
---|
166 | $(".SBEndClassSelect").select2();
|
---|
167 |
|
---|
168 | $('.SBEndClassSelect').unbind('leccomplete');
|
---|
169 | });
|
---|
170 |
|
---|
171 | loadPathList();
|
---|
172 |
|
---|
173 | var eplist = $('.SBEndPointSelect option');
|
---|
174 |
|
---|
175 | if(eplist.length == 0){
|
---|
176 | $('.SBEndPointSelect').on('epcomplete', function(){
|
---|
177 | $('.SBEndPointSelect option').each(function(){
|
---|
178 | if($(this).text() == defendpoint){
|
---|
179 | $(this).attr('selected', 'selected');
|
---|
180 | }
|
---|
181 | });
|
---|
182 | defendpoint = "";
|
---|
183 | loadStartClassList();
|
---|
184 | $('.SBEndPointSelect').unbind('epcomplete');
|
---|
185 | });
|
---|
186 | }else{
|
---|
187 | $('.SBEndPointSelect option').each(function(){
|
---|
188 | if($(this).text() == defendpoint){
|
---|
189 | $(this).attr('selected', 'selected');
|
---|
190 | }
|
---|
191 | });
|
---|
192 | defendpoint = "";
|
---|
193 | loadStartClassList();
|
---|
194 | }
|
---|
195 | }
|
---|
196 | }
|
---|
197 |
|
---|
198 | function resizeModalView(){
|
---|
199 |
|
---|
200 | if($('.SBModalView').css('display') == 'block'){
|
---|
201 | var mvw = $('.SBModalContents').width();
|
---|
202 | var mvh = $('.SBModalContents').height();
|
---|
203 | $('.SBModalContents .SBForms').css('width', (mvw - 201) + 'px').css('height', 56 + 'px');
|
---|
204 | $('.SBModalContents .SBMessage').css('width', 200 + 'px').css('height', 56 + 'px');
|
---|
205 | $('.SBModalContents .SBGraph').css('width', (mvw - 201) + 'px').css('height', (mvh - 57) + 'px');
|
---|
206 | $('.SBModalContents .SBPath').css('width', 180 + 'px').css('height', (mvh - 77 - 26) + 'px');
|
---|
207 | $('.SBModalContents .SBModalButtons').css('width', 200 + 'px').css('height', '26px');
|
---|
208 |
|
---|
209 | var formw = $('.SBModalContents .SBForms').width();
|
---|
210 | var selw = Math.floor(formw - 120);
|
---|
211 |
|
---|
212 | if(selw % 2 == 1){
|
---|
213 | selw--;
|
---|
214 | }
|
---|
215 | $('.SBModalContents .SBSelects').css('width', selw);
|
---|
216 | $('.SBModalContents .SBPermaLink').css('width', Math.floor(formw - selw));
|
---|
217 | }
|
---|
218 | }
|
---|
219 |
|
---|
220 | function openSample(ep, st, en){
|
---|
221 | defendpoint = ep;
|
---|
222 | defstartclass = st;
|
---|
223 | defendclass = en;
|
---|
224 |
|
---|
225 | openSPARQLBuilder();
|
---|
226 | }
|
---|
227 |
|
---|
228 | function openPermalink(){
|
---|
229 | var baseurl = location.href;
|
---|
230 | var spliturl = baseurl.split('?');
|
---|
231 | var url = spliturl[0] + "?ep=" + encodeURIComponent(endpoint) + "&st=" + encodeURIComponent(startclass) + "&en=" + encodeURIComponent(endclass);
|
---|
232 |
|
---|
233 | window.open(url);
|
---|
234 | }
|
---|
235 |
|
---|
236 | function closeSPARQLBuilder(){
|
---|
237 | $('.SBModalView').fadeOut();
|
---|
238 | }
|
---|
239 |
|
---|
240 | function switchLoadIcon(mode) {
|
---|
241 | if(mode == "view"){
|
---|
242 | $('.SBAjaxLoad').show();
|
---|
243 | }else{
|
---|
244 | $('.SBAjaxLoad').hide();
|
---|
245 | }
|
---|
246 | };
|
---|
247 |
|
---|
248 |
|
---|
249 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医Μ繧ケ繝医�蜿門セ� |
---|
250 | function loadEndPointList(){
|
---|
251 | // 繝代�繝槭Μ繝ウ繧ッ繝懊ち繝ウ繧堤┌蜉ケ蛹� |
---|
252 | $('.SBPermaLinkButton').attr('disabled', true);
|
---|
253 | // 諠�ア蜿門セ礼畑API縺ョURL繧剃ス懈��医�繝ャ繝輔ぅ繝�け繧ケ�菊plist�� |
---|
254 | // ds=true縺ォ繧医▲縺ヲ繝��繧ソ繧サ繝�ヨ繝「繝シ繝峨↓縺ェ繧翫お繝ウ繝峨�繧、繝ウ繝医�繧ソ繧、繝医Ν縺ィURL縺檎オ�〒蜿門セ励&繧後k
|
---|
255 | var url = prefix + '/eplist?ds=true';
|
---|
256 |
|
---|
257 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医�繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繝サ繧ィ繝ウ繝峨け繝ゥ繧ケ繧偵◎繧後◇繧檎ゥコ縺ォ縺礼┌蜉ケ蛹� |
---|
258 | $(".SBEndPointSelect").empty();
|
---|
259 | $(".SBEndPointSelect").attr("disabled", "disabled");
|
---|
260 | $(".SBStartClassSelect").empty();
|
---|
261 | $(".SBStartClassSelect").attr("disabled", "disabled");
|
---|
262 | $(".SBEndClassSelect").empty();
|
---|
263 | $(".SBEndClassSelect").attr("disabled", "disabled");
|
---|
264 |
|
---|
265 | // ajax縺ァ諠�ア蜿門セ� |
---|
266 | $.ajax({
|
---|
267 | // url繧偵そ繝�ヨ
|
---|
268 | url: url,
|
---|
269 | // 諠�ア縺悟叙蠕励〒縺阪◆繧� |
---|
270 | success: function(data) {
|
---|
271 | // 蜿門セ励@縺殍son縺ョ繝�く繧ケ繝医r繧ェ繝悶ず繧ァ繧ッ繝医↓螟画鋤
|
---|
272 | var list = eval(data);
|
---|
273 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医Μ繧ケ繝医r遨コ縺ォ
|
---|
274 | $(".SBEndPointSelect").empty();
|
---|
275 | // 繝�ヵ繧ゥ繝ォ繝医r霑ス蜉
|
---|
276 | $(".SBEndPointSelect").append('<option value="SBDefault">SELECT Endpoint</option>');
|
---|
277 | // 蜿門セ励@縺溘Μ繧ケ繝医�謨ー縺縺醍ケー繧願ソ斐@
|
---|
278 | for (var i = 0; i < list.length; ++i) {
|
---|
279 | // 蜿門セ励@縺殷rl縺ィ繝ゥ繝吶Ν繧偵そ繝�ヨ縺熔ption隕∫エ繧定ソス蜉
|
---|
280 | $(".SBEndPointSelect").append('<option value="' + list[i]['uri'] + '">' + list[i]['label'] + '</option>');
|
---|
281 | }
|
---|
282 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医′謖�ョ壽ク医∩縺ァ縺ェ縺代l縺ー
|
---|
283 | if(defendpoint == ''){
|
---|
284 | // 繝ュ繝シ繝峨い繧、繧ウ繝ウ繧帝撼陦ィ遉コ
|
---|
285 | switchLoadIcon("hide");
|
---|
286 | }
|
---|
287 | // 繝「繝シ繝繝ォ繝薙Η繝シ縺瑚。ィ遉コ迥カ諷九↑繧� |
---|
288 | if($('.SBModalView').attr('display') == 'block'){
|
---|
289 | // 蜷�そ繝ャ繧ッ繝医�繝�け繧ケ繧呈、懃エ「蜿ッ閭ス縺ォ
|
---|
290 | $(".SBEndPointSelect").select2();
|
---|
291 | $(".SBStartClassSelect").select2();
|
---|
292 | $(".SBEndClassSelect").select2();
|
---|
293 | }
|
---|
294 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医�驕ク謚槭r譛牙柑蛹� |
---|
295 | $(".SBEndPointSelect").removeAttr("disabled");
|
---|
296 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医�隱ュ縺ソ霎シ縺ソ螳御コ�r騾夂衍
|
---|
297 | $(".SBEndPointSelect").trigger(new $.Event('epcomplete'));
|
---|
298 | },
|
---|
299 | });
|
---|
300 | }
|
---|
301 |
|
---|
302 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ蜿門セ� |
---|
303 | function loadStartClassList() {
|
---|
304 | // 繝代�繝槭Μ繝ウ繧ッ繝懊ち繝ウ繧堤┌蜉ケ蛹� |
---|
305 | $('.SBPermaLinkButton').attr('disabled', true);
|
---|
306 | // 諠�ア蜿門セ礼畑API縺ョURL繧剃ス懈��医�繝ャ繝輔ぅ繝�け繧ケ�議list�矩∈謚槭&繧後◆繧ィ繝ウ繝峨�繧、繝ウ繝�RL�� |
---|
307 | var url = prefix + "/clist?ep=" + encodeURIComponent(endpoint);
|
---|
308 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繝サ繧ィ繝ウ繝峨け繝ゥ繧ケ繧偵◎繧後◇繧檎ゥコ縺ォ縺礼┌蜉ケ蛹� |
---|
309 | $(".SBStartClassSelect").empty();
|
---|
310 | $(".SBStartClassSelect").attr("disabled", "disabled");
|
---|
311 | $(".SBEndClassSelect").empty();
|
---|
312 | $(".SBEndClassSelect").attr("disabled", "disabled");
|
---|
313 | // ajax縺ァ諠�ア蜿門セ� |
---|
314 | $.ajax({
|
---|
315 | // 繝。繧ス繝�ラ繧ソ繧、繝玲欠螳� |
---|
316 | type : "GET",
|
---|
317 | // url繧偵そ繝�ヨ
|
---|
318 | url : url,
|
---|
319 | // 諠�ア縺悟叙蠕励〒縺阪◆繧� |
---|
320 | success : function(data) {
|
---|
321 | // 蜿門セ励@縺殍son縺ョ繝�く繧ケ繝医r繧ェ繝悶ず繧ァ繧ッ繝医↓螟画鋤
|
---|
322 | var list = eval(data);
|
---|
323 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繧堤ゥコ縺ォ
|
---|
324 | $(".SBStartClassSelect").empty();
|
---|
325 | // 繝�ヵ繧ゥ繝ォ繝医r霑ス蜉
|
---|
326 | $(".SBStartClassSelect").append('<option value="SBDefault">SELECT StartClass (From ' + list.length + ' classes below)</option>');
|
---|
327 | // 蜿門セ励@縺溘Μ繧ケ繝医�謨ー縺縺醍ケー繧願ソ斐@
|
---|
328 | for (var i = 0; i < list.length; ++i) {
|
---|
329 | // 蜿門セ励@縺殷ri繝サ繝ゥ繝吶Ν繝サ繧ッ繝ゥ繧ケ謨ー繧偵そ繝�ヨ縺熔ption隕∫エ繧定ソス蜉
|
---|
330 | $(".SBStartClassSelect").append('<option value="' + list[i]['uri'] + '">' + list[i]['label'] + ' (' + list[i]['number'] + ')' + '</option>');
|
---|
331 | }
|
---|
332 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ驕ク謚槭r譛牙柑蛹� |
---|
333 | $(".SBStartClassSelect").removeAttr("disabled");
|
---|
334 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繝サ繧ィ繝ウ繝峨け繝ゥ繧ケ繧呈、懃エ「蜿ッ閭ス縺ォ
|
---|
335 | $(".SBStartClassSelect").select2();
|
---|
336 | $(".SBEndClassSelect").select2();
|
---|
337 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ隱ュ縺ソ霎シ縺ソ螳御コ�r騾夂衍
|
---|
338 | $(".SBStartClassSelect").trigger(new $.Event('lsccomplete'));
|
---|
339 | }
|
---|
340 | });
|
---|
341 | };
|
---|
342 |
|
---|
343 | // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ蜿門セ� |
---|
344 | function loadEndClassList() {
|
---|
345 | // 繝代�繝槭Μ繝ウ繧ッ繝懊ち繝ウ繧堤┌蜉ケ蛹� |
---|
346 | $('.SBPermaLinkButton').attr('disabled', true);
|
---|
347 | // 諠�ア蜿門セ礼畑API縺ョURL繧剃ス懈��医�繝ャ繝輔ぅ繝�け繧ケ�議list�矩∈謚槭&繧後◆繧ィ繝ウ繝峨�繧、繝ウ繝茨シ矩∈謚槭&繧後◆繧ケ繧ソ繝シ繝医け繝ゥ繧ケ�� |
---|
348 | var url = prefix + "/clist?ep=" + encodeURIComponent(endpoint) + '&class=' + encodeURIComponent(startClass);
|
---|
349 | // ajax縺ァ諠�ア蜿門セ� |
---|
350 | $.ajax({
|
---|
351 | // 繝。繧ス繝�ラ繧ソ繧、繝玲欠螳� |
---|
352 | type : "GET",
|
---|
353 | // url繧偵そ繝�ヨ
|
---|
354 | url : url,
|
---|
355 | // 諠�ア縺悟叙蠕怜�譚・縺溘i
|
---|
356 | success : function(data) {
|
---|
357 | // 蜿門セ励@縺殍son縺ョ繝�く繧ケ繝医r繧ェ繝悶ず繧ァ繧ッ繝医↓螟画鋤
|
---|
358 | var list = eval(data);
|
---|
359 | // 繧ィ繝ウ繝峨�繧、繝ウ繝医r遨コ縺ォ
|
---|
360 | $(".SBEndClassSelect").empty();
|
---|
361 | // 繝�ヵ繧ゥ繝ォ繝医r霑ス蜉
|
---|
362 | $(".SBEndClassSelect").append('<option value="SBDefault">SELECT EndClass (From ' + list.length + ' classes below)</option>');
|
---|
363 | // 蜿門セ励@縺溘Μ繧ケ繝医�謨ー縺縺醍ケー繧願ソ斐@
|
---|
364 | for (var i = 0; i < list.length; ++i) {
|
---|
365 | // 蜿門セ励@縺殷ri繝サ繝ゥ繝吶Ν繝サ繧ッ繝ゥ繧ケ謨ー繧偵そ繝�ヨ縺熔ption隕∫エ繧定ソス蜉
|
---|
366 | $(".SBEndClassSelect").append('<option value="' + list[i]['uri'] + '">' + list[i]['label'] + ' (' + list[i]['number'] + ')' + '</option>');
|
---|
367 | }
|
---|
368 | // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ驕ク謚槭r譛牙柑蛹� |
---|
369 | $(".SBEndClassSelect").removeAttr("disabled");
|
---|
370 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繝サ繧ィ繝ウ繝峨け繝ゥ繧ケ繧呈、懃エ「蜿ッ閭ス縺ォ
|
---|
371 | $(".SBStartClassSelect").select2();
|
---|
372 | $(".SBEndClassSelect").select2();
|
---|
373 | // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ隱ュ縺ソ霎シ縺ソ螳御コ�r騾夂衍
|
---|
374 | $(".SBEndClassSelect").trigger(new $.Event('leccomplete'));
|
---|
375 | }
|
---|
376 | });
|
---|
377 | };
|
---|
378 |
|
---|
379 | // 繝代せ繝ェ繧ケ繝医�蜿門セ� |
---|
380 | function loadPathList() {
|
---|
381 | // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繝サ繧ィ繝ウ繝峨け繝ゥ繧ケ繧貞叙蠕� |
---|
382 | startclass = $(".SBStartClassSelect").val();
|
---|
383 | endclass = $(".SBEndClassSelect").val();
|
---|
384 |
|
---|
385 | // GET繝。繧ス繝�ラ縺ァ縺昴l縺槭l謖�ョ壹&繧後※縺�l縺ー荳頑嶌縺� |
---|
386 | if(defendpoint != "" && defstartclass != "" && defendclass != ""){
|
---|
387 | endpoint = defendpoint;
|
---|
388 | startclass = defstartclass;
|
---|
389 | endclass = defendclass;
|
---|
390 | }
|
---|
391 |
|
---|
392 | // 繝代�繝槭Μ繝ウ繧ッ繝懊ち繝ウ繧堤┌蜉ケ蛹� |
---|
393 | $('.SBPermaLinkButton').attr('disabled', true);
|
---|
394 | // URI縺檎ゥコ繧�ョ繝輔か繝ォ繝医↑繧臥オゆコ� |
---|
395 | if (startclass == null || endclass == null || startclass == "SBDefault" || endclass == "SBDefault"){
|
---|
396 | return;
|
---|
397 | }
|
---|
398 |
|
---|
399 | // 隕∝�讀懆ィ� |
---|
400 | // 繝代せ謨ー荳企剞繧偵Μ繧サ繝�ヨ
|
---|
401 | pathlimit = 10;
|
---|
402 |
|
---|
403 | // 蜷�ィョ蛻晄悄蛹� |
---|
404 | $('.SBResult').hide();
|
---|
405 | $('.SBViewAll').hide();
|
---|
406 | $('.SBSelectedPath').html('<h1>Please <span style="color: hsl(150, 50%, 75%);">select a leaf node</span> and click to generate a SPARQL</h1><img src=\"images/pathline.png\" style="display:none;">');
|
---|
407 |
|
---|
408 | // 諠�ア蜿門セ礼畑API縺ョURL繧剃ス懈��医�繝ャ繝輔ぅ繝�け繧ケ�却list�句推遞ョ驕ク謚樒オ先棡�� |
---|
409 | var url = prefix + "/plist?ep=" + encodeURIComponent(endpoint)
|
---|
410 | + "&startclass=" + encodeURIComponent(startclass)
|
---|
411 | + "&endclass=" + encodeURIComponent(endclass);
|
---|
412 |
|
---|
413 | // 隱ュ縺ソ霎シ縺ソ繧「繧、繧ウ繝ウ繧定。ィ遉コ
|
---|
414 | switchLoadIcon("view");
|
---|
415 | // GET繝。繧ス繝�ラ縺ァ謖�ョ壹&繧後◆蝣エ蜷郁。ィ遉コ縺ォ蝠城。後′襍キ縺阪k縺ョ縺ァ荳迸ャ蠕�▲縺ヲ縺九i螳溯。� |
---|
416 | setTimeout(function(){
|
---|
417 | // ajax縺ァ諠�ア蜿門セ� |
---|
418 | $.ajax({
|
---|
419 | // 繝。繧ス繝�ラ繧ソ繧、繝玲欠螳� |
---|
420 | type : "GET",
|
---|
421 | // url繧偵そ繝�ヨ
|
---|
422 | url : url,
|
---|
423 | // 繧ソ繧、繝繧「繧ヲ繝医r繧サ繝�ヨ
|
---|
424 | timeout : 1000000,
|
---|
425 | // 諠�ア縺悟叙蠕励〒縺阪◆繧� |
---|
426 | success : function(data) {
|
---|
427 | // 邨先棡繝�く繧ケ繝医r繧サ繝�ヨ
|
---|
428 | jsontext = data;
|
---|
429 | // 繝代せ縺ョ謠冗判
|
---|
430 | view_map();
|
---|
431 | // 隱ュ縺ソ霎シ縺ソ繧「繧、繧ウ繝ウ繧帝撼陦ィ遉コ
|
---|
432 | switchLoadIcon("hide");
|
---|
433 | // 繝代�繝槭Μ繝ウ繧ッ繝懊ち繝ウ繧呈怏蜉ケ蛹� |
---|
434 | $('.SBPermaLinkButton').attr('disabled', false);
|
---|
435 | },
|
---|
436 | // 蜿門セ励↓螟ア謨励@縺溘i
|
---|
437 | error: function(data){
|
---|
438 | // 隱ュ縺ソ霎シ縺ソ繧「繧、繧ウ繝ウ繧帝撼陦ィ遉コ
|
---|
439 | switchLoadIcon("hide");
|
---|
440 | // 繧ィ繝ゥ繝シ蜀�ョケ繧偵い繝ゥ繝シ繝� |
---|
441 | alert("error: ", data);
|
---|
442 | }
|
---|
443 | });
|
---|
444 | }, 100);
|
---|
445 | };
|
---|
446 |
|
---|
447 | // 隕九▽縺九▲縺溘ヱ繧ケ繧貞�縺ヲ謠冗判
|
---|
448 | function viewAll(){
|
---|
449 | // 繝代せ謨ー荳企剞繧�縺ォ
|
---|
450 | pathlimit = 0;
|
---|
451 | // 蜀肴緒逕サ
|
---|
452 | view_map();
|
---|
453 | }
|
---|
454 |
|
---|
455 | // SPARQL縺ョ逕滓�
|
---|
456 | generateSPARQL = function() {
|
---|
457 | // 驕ク謚槭&繧後◆繝代せ縺ョ繧ェ繝悶ず繧ァ繧ッ繝医rjson譁�ュ怜�縺ォ
|
---|
458 | var path = JSON.stringify(pathobj);
|
---|
459 | // 諠�ア蜿門セ礼畑API縺ョURL繧剃ス懈��医�繝ャ繝輔ぅ繝�け繧ケ�虐parql�九ヱ繧ケ諠�ア�� |
---|
460 | var url = prefix + '/sparql?path=' + encodeURIComponent(path);
|
---|
461 | // ajax縺ァ諠�ア蜿門セ� |
---|
462 | $.ajax({
|
---|
463 | // 繝。繧ス繝�ラ繧ソ繧、繝玲欠螳� |
---|
464 | type: "GET",
|
---|
465 | // url繧偵そ繝�ヨ
|
---|
466 | url : url,
|
---|
467 | // 繝��繧ソ繧ソ繧、繝励r謖�ョ� |
---|
468 | dataType: 'text',
|
---|
469 | // 諠�ア縺悟叙蠕励〒縺阪◆繧� |
---|
470 | success : function(data) {
|
---|
471 | // 邨先棡繧担PARQL陦ィ遉コ逕ィ繧ィ繝ェ繧「縺ォ謖ソ蜈・
|
---|
472 | $(".SBSparqlArea").val(data);
|
---|
473 | // SPARQLbuilder繧帝哩縺倥k
|
---|
474 | closeSPARQLBuilder();
|
---|
475 | }
|
---|
476 | });
|
---|
477 | };
|
---|
478 |
|
---|
479 | function sendSPARQL(){
|
---|
480 | var sendep = $(".SBEndPointSelect").val();
|
---|
481 |
|
---|
482 | var query = $(".SBSparqlArea").val();
|
---|
483 |
|
---|
484 | if(sendep == "SBDefault" || query == ""){
|
---|
485 | return;
|
---|
486 | }
|
---|
487 |
|
---|
488 | query = encodeURIComponent(query);
|
---|
489 |
|
---|
490 | openpage = sendep + "?format=text%2Fhtml&query=" + query;
|
---|
491 |
|
---|
492 | window.open(openpage);
|
---|
493 | }
|
---|
494 |
|
---|
495 | function downloadResult(){
|
---|
496 |
|
---|
497 | var sendep = $(".SBEndPointSelect").val();
|
---|
498 |
|
---|
499 | var query = $(".SBSparqlArea").val();
|
---|
500 |
|
---|
501 | if(sendep == "SBDefault" || query == ""){
|
---|
502 | return;
|
---|
503 | }
|
---|
504 |
|
---|
505 | qr = sendQuery(sendep,query);
|
---|
506 |
|
---|
507 | qr.fail(
|
---|
508 | function (xhr, textStatus, thrownError) {
|
---|
509 | alert("Error: A '" + textStatus+ "' occurred.");
|
---|
510 | }
|
---|
511 | );
|
---|
512 | qr.done(
|
---|
513 | function (d) {
|
---|
514 | downloadCSV(d.results.bindings);
|
---|
515 | }
|
---|
516 | );
|
---|
517 | }
|
---|
518 |
|
---|
519 | function downloadCSV(data){
|
---|
520 |
|
---|
521 | if (data instanceof Array) {
|
---|
522 | var result_txt ="";
|
---|
523 |
|
---|
524 | var i=0;
|
---|
525 | for ( var key in data[0]) {
|
---|
526 | if(i>0){result_txt +=",";}
|
---|
527 | result_txt += key;
|
---|
528 | i++;
|
---|
529 | }
|
---|
530 |
|
---|
531 | result_txt += "\n";
|
---|
532 |
|
---|
533 | for (var d = 0; d < data.length; d++) {
|
---|
534 | var i = 0;
|
---|
535 | for ( var key in data[d]) {
|
---|
536 | if(i>0){result_txt +=",";}
|
---|
537 | result_txt += data[d][key].value;
|
---|
538 | i++;
|
---|
539 | }
|
---|
540 | result_txt += '\n';
|
---|
541 | }
|
---|
542 |
|
---|
543 | var blob = new Blob( [result_txt], {type: 'text/plain'} )
|
---|
544 |
|
---|
545 | var link = document.createElement('a')
|
---|
546 | link.href = URL.createObjectURL(blob)
|
---|
547 | link.download = 'result' + '.csv'
|
---|
548 |
|
---|
549 | document.body.appendChild(link) // for Firefox
|
---|
550 | link.click()
|
---|
551 | document.body.removeChild(link) // for Firefox
|
---|
552 | }
|
---|
553 | };
|
---|
554 |
|
---|
555 |
|
---|
556 | // 繧ー繝ゥ繝墓緒逕サ驛ィ蛻� |
---|
557 | view_map = function(){
|
---|
558 |
|
---|
559 | // make_data繝。繧ス繝�ラ縺ョ邨先棡繧貞叙蠕� |
---|
560 | var json = make_data();
|
---|
561 |
|
---|
562 | // 繝代せ謨ー縺�縺ァ縺ェ縺代l縺ー
|
---|
563 | if(json['nodes'].length != 0){
|
---|
564 |
|
---|
565 | // 蜃コ譚・荳翫′縺」縺溽オ先棡繧呈ク。縺励※繝槭ャ繝嶺ク翫�蠎ァ讓吶r繧サ繝�ヨ
|
---|
566 | set_map_location(0, json['nodes'], json['links']);
|
---|
567 |
|
---|
568 | // SVG縺ョ蟷�→鬮倥&逕ィ縺ォ謠冗判鬆伜沺縺ョ繧オ繧、繧コ繧貞叙蠕� |
---|
569 | var width = $('.SBGraph').width();
|
---|
570 | var height = $('.SBGraph').height();
|
---|
571 | // SVG蜀��繧ー繝ゥ繝暮Κ蛻�ォ倥&�医ヱ繧ケ謨ー縺ォ蠢懊§繧具シ峨r繧サ繝�ヨ
|
---|
572 | var graphheight = ((NODEHEIGHT * 1.5) * PATHNUM) + (NODEHEIGHT / 2);
|
---|
573 |
|
---|
574 | // 繧ケ繧ウ繧「陦ィ遉コ縺ョ繝槭�繧ク繝ウ
|
---|
575 | var scoreleftmargin = NODEHEIGHT * 1.5;
|
---|
576 |
|
---|
577 | var scrollsvg = function(delta){
|
---|
578 | // 迴セ蝨ィ縺ョ繝薙Η繝シ繝懊ャ繧ッ繧ケ縺ョ迥カ諷九r蜿門セ� |
---|
579 | var vb = svg.attr("viewBox");
|
---|
580 | // 繧ケ繝壹�繧ケ縺ァ蛹コ蛻�j蜷�、縺ォ蛻�ァ」
|
---|
581 | var spvb = vb.split(" ");
|
---|
582 |
|
---|
583 | // 繝薙Η繝シ繝懊ャ繧ッ繧ケ縺ョy縺ョ蛟、縺九i莉雁屓縺ョ繝帙う繝シ繝ォ繧、繝吶Φ繝医�蟾ョ蛻�r蠑輔¥
|
---|
584 | var vby = (parseInt(spvb[1]) - parseInt(delta));
|
---|
585 |
|
---|
586 | // 0繧貞牡縺」縺ヲ縺�◆繧�縺ォ
|
---|
587 | if(vby < 0){
|
---|
588 | vby = 0;
|
---|
589 | // 繧ケ繧ッ繝ュ繝シ繝ォ荳企剞�医げ繝ゥ繝輔し繧、繧コ蠑輔¥陦ィ遉コ鬆伜沺繧オ繧、繧コ�峨r雜�∴縺ヲ縺�◆繧芽」懈ュ」
|
---|
590 | }else if(vby > (graphheight - height)){
|
---|
591 | vby = (graphheight - height);
|
---|
592 | // 陬懈ュ」縺励◆邨先棡0繧貞牡縺」縺ヲ縺�◆繧�縺ォ
|
---|
593 | if(vby < 0){
|
---|
594 | vby = 0;
|
---|
595 | }
|
---|
596 | }
|
---|
597 |
|
---|
598 | // 縺薙%縺セ縺ァ縺ァ縺ァ縺阪◆y繧偵そ繝�ヨ縺励ン繝・繝シ繝懊ャ繧ッ繧ケ繧呈峩譁ー
|
---|
599 | svg.attr("viewBox", "0 " + vby + " " + width + " " + height);
|
---|
600 | }
|
---|
601 |
|
---|
602 | // SVG縺ョ蜑企勁
|
---|
603 | d3.select(".SBGraph svg").remove();
|
---|
604 | // 逕サ髱「繧オ繧、繧コ縺ォ蜷医o縺婀VG縺ョ霑ス蜉
|
---|
605 | var svg = d3.select(".SBGraph").append("svg")
|
---|
606 | .attr("width", width)
|
---|
607 | .attr("height", height)
|
---|
608 | // 繝薙Η繝シ繝懊ャ繧ッ繧ケ縺ョ繧サ繝�ヨ
|
---|
609 | .attr("viewBox", "0 0 " + width + " " + height);
|
---|
610 |
|
---|
611 | // SVG縺後せ繧ッ繝ュ繝シ繝ォ縺輔l縺滓凾縺ョ繧、繝吶Φ繝医r繝悶Λ繧ヲ繧カ縺ォ蠢懊§縺ヲ繧サ繝�ヨ
|
---|
612 | var mousewheelevent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
|
---|
613 | $(".SBGraph svg").on(mousewheelevent,function(e){
|
---|
614 | // 繝悶Λ繧ヲ繧カ縺ォ蠢懊§縺ヲ繧ケ繧ッ繝ュ繝シ繝ォ縺ョ蛟、繧貞叙蠕� |
---|
615 | var delta = e.originalEvent.deltaY ? -(e.originalEvent.deltaY) : e.originalEvent.wheelDelta ? e.originalEvent.wheelDelta : -(e.originalEvent.detail);
|
---|
616 | // FireFox縺縺ィ繧ケ繧ッ繝ュ繝シ繝ォ騾溷コヲ縺碁撼蟶ク縺ォ驕�>蝣エ蜷医′縺ゅk縺ョ縺ァ陬懈ュ」
|
---|
617 | if(delta < 0 && delta > -100){
|
---|
618 | delta = -100;
|
---|
619 | }else if(0 < delta && delta < 100){
|
---|
620 | delta = 100;
|
---|
621 | }
|
---|
622 |
|
---|
623 | // 繧ケ繧ッ繝ュ繝シ繝ォ縺ョ繝�ヵ繧ゥ繝ォ繝医�蜍穂ス懊→繝舌ヶ繝ェ繝ウ繧ー繧偵く繝」繝ウ繧サ繝ォ
|
---|
624 | e.preventDefault();
|
---|
625 | e.stopPropagation();
|
---|
626 | // 蛟、繧呈ク。縺励※繧ケ繧ッ繝ュ繝シ繝ォ
|
---|
627 | scrollsvg(delta);
|
---|
628 | });
|
---|
629 |
|
---|
630 | // 閭梧勹縺ョ霑ス蜉�磯ォ倥&莉・螟悶�謠冗判鬆伜沺縺昴�縺セ縺セ�� |
---|
631 | var bg = svg
|
---|
632 | .append("rect")
|
---|
633 | .attr("x", 0)
|
---|
634 | .attr("y", 0)
|
---|
635 | .attr("width", width)
|
---|
636 | .attr("height", function(){
|
---|
637 | // 繧ー繝ゥ繝暮Κ蛻��鬮倥&縺梧緒逕サ鬆伜沺縺ョ鬮倥&繧貞牡縺」縺ヲ縺�◆繧会シ医ヱ繧ケ縺悟ー代↑縺代l縺ー�画緒逕サ鬆伜沺縺ョ鬮倥&繧定ソ斐☆
|
---|
638 | if(graphheight < height){
|
---|
639 | return height;
|
---|
640 | }else{
|
---|
641 | return graphheight;
|
---|
642 | }
|
---|
643 | })
|
---|
644 | // 閭梧勹繧定埋縺�げ繝ャ繝シ縺ォ
|
---|
645 | .attr("fill", "#fafafa");
|
---|
646 |
|
---|
647 | // links驟榊�繧呈ク。縺励Μ繝ウ繧ッ縺ョ菴懈�
|
---|
648 | var link = svg.selectAll(".link")
|
---|
649 | .data(json.links)
|
---|
650 | .enter().append("line")
|
---|
651 | .attr("class", "link")
|
---|
652 | .style("stroke", "#999")
|
---|
653 | .style("stroke-opacity", 0.6)
|
---|
654 | .style("stroke-width", 2);
|
---|
655 |
|
---|
656 | // nodes驟榊�繧呈ク。縺励ヮ繝シ繝峨�菴懈�
|
---|
657 | var node = svg.selectAll(".node")
|
---|
658 | .data(json.nodes)
|
---|
659 | .enter().append("circle")
|
---|
660 | .attr("class", "node")
|
---|
661 | .attr("r", (NODEHEIGHT / 2))
|
---|
662 | .attr("cx", function(d) { return d.x;} )
|
---|
663 | .attr("cy", function(d) { return d.y; })
|
---|
664 | .style("fill", function(d) { return d.nodecolor; })
|
---|
665 | .style("stroke", '#fafafa')
|
---|
666 | .style("stroke-width", '1.5px')
|
---|
667 | // 譛ォ遶ッ繝弱�繝峨�縺ソ繝槭え繧ケ繧「繧、繧ウ繝ウ繧偵�繧、繝ウ繧ソ繝シ縺ォ
|
---|
668 | .style("cursor", function(d){
|
---|
669 | if(d.path == "notend"){
|
---|
670 | return 'normal';
|
---|
671 | }else{
|
---|
672 | return 'pointer';
|
---|
673 | }
|
---|
674 | });
|
---|
675 |
|
---|
676 | // nodes驟榊�繧呈ク。縺励ヮ繝シ繝峨ユ繧ュ繧ケ繝医�菴懈�
|
---|
677 | var tnode = svg.selectAll("text.node")
|
---|
678 | .data(json.nodes)
|
---|
679 | .enter().append("svg:text")
|
---|
680 | .attr("class", "tnode")
|
---|
681 | .attr("x", function(d) { return d.x; })
|
---|
682 | .attr("y", function(d) { return d.y; })
|
---|
683 | .text(function(d) { return d.name; })
|
---|
684 | .style("fill", '#000000')
|
---|
685 | .style("text-anchor", 'middle')
|
---|
686 | .style("pointer-events", "none");
|
---|
687 |
|
---|
688 | // 繝ェ繝ウ繧ッ繝�く繧ケ繝医�菴懈�
|
---|
689 | var tlink = svg.selectAll("text.link")
|
---|
690 | .data(json.links)
|
---|
691 | .enter().append("svg:text")
|
---|
692 | .attr("class", "tlink")
|
---|
693 | .attr("x", function(d) { return (json.nodes[d.source].x + json.nodes[d.target].x) / 2; })
|
---|
694 | .attr("y", function(d) { return (json.nodes[d.source].y + json.nodes[d.target].y) / 2; })
|
---|
695 | .style("fill", '#000000')
|
---|
696 | .style("text-anchor", 'middle');
|
---|
697 |
|
---|
698 | // 繧ケ繧ウ繧「繝�く繧ケ繝医�菴懈�
|
---|
699 | var tscore = svg.selectAll("text.score")
|
---|
700 | .data(json.nodes)
|
---|
701 | .enter().append("svg:text")
|
---|
702 | .attr("class", "tscore")
|
---|
703 | .attr("x", function(d) { return (d.x + scoreleftmargin); })
|
---|
704 | .attr("y", function(d) { return d.y + 4; })
|
---|
705 | .text(function(d) { return d.score; })
|
---|
706 | .style("fill", 'hsl(0, 50%, 75%)')
|
---|
707 | .style("text-anchor", 'middle')
|
---|
708 | .style("pointer-events", "none");
|
---|
709 |
|
---|
710 | // 繝弱�繝峨∈縺ョ繧ェ繝ウ繝槭え繧ケ縺ァ繝代せ謗「邏「縲√ヱ繧ケ荳ュ縺ョ繝ェ繝ウ繧ッ譁�ュ励r陦ィ遉コ
|
---|
711 | node.on("mouseover", function(d){
|
---|
712 |
|
---|
713 | // 陦ィ遉コ縺吶k繝代せ菫晏ュ倡畑驟榊�
|
---|
714 | var path = [];
|
---|
715 | // 繝代せ陦ィ遉コ諠�ア菫晏ュ倡畑驟榊�
|
---|
716 | var pathname = [];
|
---|
717 |
|
---|
718 | // 縺セ縺壹が繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨�id縺ィ蜷榊燕繧偵◎繧後◇繧瑚ソス蜉
|
---|
719 | path.push(d.nodeid);
|
---|
720 | pathname.push(d.name);
|
---|
721 |
|
---|
722 | // 繝代せ謗「邏「
|
---|
723 | do{
|
---|
724 | // 繝ェ繝ウ繧ッ縺ョ謨ー縺縺醍ケー繧願ソ斐@
|
---|
725 | for(var i = 0; i < link.data().length; i++){
|
---|
726 | // 迴セ蝨ィ縺ョ譛蠕悟ーセ縺ォ郢九′繧九Μ繝ウ繧ッ縺後≠繧後�
|
---|
727 | if(path[(path.length-1)] == link.data()[i].target){
|
---|
728 | // 縺昴�繝ェ繝ウ繧ッ縺ョ繧ス繝シ繧ケ蛛エ繝弱�繝峨�id繧定ソス蜉
|
---|
729 | path.push(link.data()[i].source);
|
---|
730 | // 縺昴�繝ェ繝ウ繧ッ縺ョ蜷榊燕縺ィ繧ス繝シ繧ケ蛛エ繝弱�繝峨�蜷榊燕繧定ソス蜉
|
---|
731 | pathname.push(link.data()[i].property);
|
---|
732 | pathname.push(node.data()[link.data()[i].source].name);
|
---|
733 | }
|
---|
734 | }
|
---|
735 | // 繝ォ繝シ繝医ヮ繝シ繝峨↓霎ソ繧顔捩縺上∪縺ァ郢ー繧願ソ斐☆
|
---|
736 | }while(path[(path.length-1)] != 0);
|
---|
737 |
|
---|
738 | // 繝ォ繝シ繝医ヮ繝シ繝峨∪縺溘�騾比クュ繝弱�繝峨↑繧� |
---|
739 | if(d.nodeid == 0 || d.path == "notend"){
|
---|
740 | // 繝代せ陦ィ遉コ鬆伜沺繧偵ョ繝輔か繝ォ繝医↓
|
---|
741 | $('.SBSelectedPath').html('<h1>Please <span style="color: hsl(150, 50%, 75%);">select a leaf node</span> and click to generate a SPARQL</h1>');
|
---|
742 | // 譛ォ遶ッ繝弱�繝峨↑繧� |
---|
743 | }else{
|
---|
744 |
|
---|
745 | // 繝代せ陦ィ遉コ鬆伜沺逕ィ譁�ュ怜�
|
---|
746 | var resultText = '';
|
---|
747 | // 繝代せ縺ョ蜷榊燕驟榊�蛻�セ後m縺九i郢ー繧願ソ斐@縺ェ縺後i
|
---|
748 | for (var i = pathname.length;i > 0; i--){
|
---|
749 | // 螂�焚逡ェ逶ョ�医ヮ繝シ繝会シ峨↑繧� |
---|
750 | if(i % 2 == 1){
|
---|
751 | // 繝ォ繝シ繝医°騾比クュ縺区忰遶ッ縺九↓蠢懊§縺ヲ繧ッ繝ゥ繧ケ繧呈欠螳壹@霑ス險� |
---|
752 | if(i == 1){
|
---|
753 | resultText = resultText + "<div class=\"SBLeafNode\">" + pathname[i - 1] + "</div>";
|
---|
754 | }else if(i == pathname.length){
|
---|
755 | resultText = resultText + "<div class=\"SBRootNode\">" + pathname[i - 1] + "</div>";
|
---|
756 | }else{
|
---|
757 | resultText = resultText + "<div class=\"SBPathNode\">" + pathname[i - 1] + "</div>";
|
---|
758 | }
|
---|
759 | // 蛛カ謨ー逡ェ逶ョ�医Μ繝ウ繧ッ�峨�繝ェ繝ウ繧ッ逕サ蜒上r蜑榊セ後↓縺、縺題ソス險� |
---|
760 | }else{
|
---|
761 | resultText = resultText + "<img src=\"images/pathline.png\"><div class=\"SBPathProperty\">" + pathname[i - 1] + "</div><img src=\"images/pathline.png\">";
|
---|
762 | }
|
---|
763 | }
|
---|
764 |
|
---|
765 | // 繝代せ陦ィ遉コ鬆伜沺縺ョ蜀�ョケ繧呈嶌縺肴鋤縺� |
---|
766 | $('.SBSelectedPath').html(resultText);
|
---|
767 |
|
---|
768 | // 繧オ繝シ繝悶Ξ繝�ヨ縺ォ騾√j霑斐☆繝代せ繧ェ繝悶ず繧ァ繧ッ繝医r菫晏ュ� |
---|
769 | pathobj = d.path;
|
---|
770 |
|
---|
771 | // 繝代せ陦ィ遉コ鬆伜沺縺ョ陦ィ遉コ險ュ螳壹rvisivle縺ォ
|
---|
772 | $('.SBPath').css('overflow-y', 'visible');
|
---|
773 |
|
---|
774 | // 繝代せ蜀�ョケ縺ョ鬮倥&縺後ヱ繧ケ陦ィ遉コ鬆伜沺繧定カ�∴縺ヲ縺�◆繧� |
---|
775 | if($('.SBPath').height() < $('.SBSelectedPath').innerHeight()){
|
---|
776 | // 繝代せ陦ィ遉コ鬆伜沺縺ョ陦ィ遉コ險ュ螳壹r繧ケ繧ッ繝ュ繝シ繝ォ縺ォ
|
---|
777 | $('.SBPath').css('overflow-y', 'scroll');
|
---|
778 | }
|
---|
779 | }
|
---|
780 |
|
---|
781 | // 繧ェ繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨�鬮倥&縺ォ隕ェ繧貞粋繧上○繧九◆繧√↓蜷医o縺帙k鬮倥&繧剃ソ晏ュ� |
---|
782 | var movey = d.y;
|
---|
783 |
|
---|
784 | // 蜷�ヮ繝シ繝峨↓蟇セ縺� |
---|
785 | node
|
---|
786 | // 霈ェ驛ュ邱壹�濶イ繧定ィュ螳� |
---|
787 | .style("stroke", function(d){
|
---|
788 | // 縺セ縺壹�閭梧勹濶イ�医ョ繝輔か繝ォ繝茨シ峨r謖�ョ� |
---|
789 | var strokecolor = "#fafafa";
|
---|
790 |
|
---|
791 | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
792 | for(var n = 0; n < path.length; n++){
|
---|
793 | // 繝代せ蜀�↓蜷ォ縺セ繧後k繝弱�繝峨□縺」縺溘i
|
---|
794 | if(path[n] == d.nodeid){
|
---|
795 | // 霈ェ驛ュ邱壹r襍、縺ォ
|
---|
796 | strokecolor = "#ffaaaa";
|
---|
797 | }
|
---|
798 | }
|
---|
799 |
|
---|
800 | // 縺薙%縺セ縺ァ縺ァ蠕励i繧後◆霈ェ驛ュ邱壹�濶イ繧定ソ斐☆
|
---|
801 | return strokecolor;
|
---|
802 | })
|
---|
803 | // 鬮倥&縺ョ蛟、
|
---|
804 | .attr("cy", function(d){
|
---|
805 |
|
---|
806 | // 迴セ蝨ィ縺ョ鬮倥&繧貞叙蠕� |
---|
807 | var currenty = d.y
|
---|
808 |
|
---|
809 | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
810 | for(var n = 0; n < path.length; n++){
|
---|
811 | // 繝代せ蜀�↓蜷ォ縺セ繧後k繝弱�繝峨□縺」縺溘i
|
---|
812 | if(path[n] == d.nodeid){
|
---|
813 | // 蜀�Κ縺ァ謖√▽鬮倥&繧偵が繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨→蜷後§縺ォ�亥�謠冗判譎ゅ↓蜿肴丐�� |
---|
814 | d.y = movey;
|
---|
815 | }
|
---|
816 | }
|
---|
817 |
|
---|
818 | // 莉翫�迴セ譎らせ縺ョ鬮倥&繧定ソ斐☆
|
---|
819 | return currenty;
|
---|
820 | });
|
---|
821 |
|
---|
822 | // 蜷�Μ繝ウ繧ッ繝�く繧ケ繝医↓蟇セ縺� |
---|
823 | tlink
|
---|
824 | // 繝�く繧ケ繝郁。ィ遉コ蛻、螳� |
---|
825 | .text(function(d) {
|
---|
826 | // 繝�ヵ繧ゥ繝ォ繝医〒遨コ繧偵そ繝�ヨ
|
---|
827 | var linktext = "";
|
---|
828 |
|
---|
829 | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
830 | for(var t = 0; t < path.length; t++){
|
---|
831 | // 閾ェ霄ォ縺後◎縺ョ繝弱�繝峨∈謗・邯壹@縺ヲ縺�k繝ェ繝ウ繧ッ縺ェ繧峨�
|
---|
832 | if(path[t] == d.target){
|
---|
833 | // 繝ェ繝ウ繧ッ繝�く繧ケ繝医↓繝励Ο繝代ユ繧」縺ョ蛟、繧偵そ繝�ヨ
|
---|
834 | linktext = d.property
|
---|
835 | }
|
---|
836 | }
|
---|
837 |
|
---|
838 | // 縺薙%縺セ縺ァ縺ァ縺ァ縺阪◆繝ェ繝ウ繧ッ繝�く繧ケ繝医r霑斐☆
|
---|
839 | return linktext;
|
---|
840 | });
|
---|
841 |
|
---|
842 | // 蜷�Μ繝ウ繧ッ縺ォ蟇セ縺� |
---|
843 | link
|
---|
844 | // 邱壹�濶イ蛻、螳� |
---|
845 | .style("stroke", function(d){
|
---|
846 |
|
---|
847 | var strokecolor = "#999";
|
---|
848 |
|
---|
849 | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
850 | for(var t = 0; t < path.length; t++){
|
---|
851 | // 閾ェ霄ォ縺後◎縺ョ繝弱�繝峨∈謗・邯壹@縺ヲ縺�k繝ェ繝ウ繧ッ縺ェ繧峨�
|
---|
852 | if(path[t] == d.target){
|
---|
853 | // 繝ェ繝ウ繧ッ縺ョ濶イ縺ォ襍、繧偵そ繝�ヨ
|
---|
854 | strokecolor = "#ffaaaa"
|
---|
855 | }
|
---|
856 | }
|
---|
857 |
|
---|
858 | // 邱壹�濶イ繧定ソ斐☆
|
---|
859 | return strokecolor;
|
---|
860 | });
|
---|
861 |
|
---|
862 | // 縺薙%縺セ縺ァ縺ョ險ュ螳壹r蜈�↓蜀肴緒逕サ
|
---|
863 | redraw();
|
---|
864 |
|
---|
865 | // 繧ッ繝ェ繝�け縺輔l縺溘→縺� |
---|
866 | }).on("click", function(d){
|
---|
867 | // 譛ォ遶ッ繝弱�繝峨↑繧峨せ繝代�繧ッ繝ォ逋コ陦� |
---|
868 | if(d.path != "notend"){
|
---|
869 | generateSPARQL();
|
---|
870 | }
|
---|
871 | });
|
---|
872 |
|
---|
873 | // 蜀肴緒逕サ髢「謨ー
|
---|
874 | var redraw = function (duration){
|
---|
875 |
|
---|
876 | // 縺九¢繧区凾髢薙′譛ェ謖�ョ壹↑繧峨�
|
---|
877 | if(duration == undefined){
|
---|
878 | // 0.5遘偵°縺代※繧「繝九Γ繝シ繧キ繝ァ繝ウ
|
---|
879 | duration = 500;
|
---|
880 | }
|
---|
881 |
|
---|
882 | // 蜷�Μ繝ウ繧ッ縺ォ縺、縺�※險ュ螳壹&繧後◆菴咲スョ縺ォ蜀肴緒逕サ
|
---|
883 | link
|
---|
884 | .transition()
|
---|
885 | .duration(duration)
|
---|
886 | .attr("x1", function(d) {return node.data()[d.source].x;})
|
---|
887 | .attr("y1", function(d) {return node.data()[d.source].y;})
|
---|
888 | .attr("x2", function(d) {return node.data()[d.target].x;})
|
---|
889 | .attr("y2", function(d) {return node.data()[d.target].y;});
|
---|
890 |
|
---|
891 | // 蜷�ヮ繝シ繝峨↓縺、縺�※險ュ螳壹&繧後◆菴咲スョ縺ォ蜀肴緒逕サ
|
---|
892 | node
|
---|
893 | .transition()
|
---|
894 | .duration(duration)
|
---|
895 | .attr("cx", function(d) {return d.x;})
|
---|
896 | .attr("cy", function(d) {return d.y;});
|
---|
897 |
|
---|
898 | // 蜷�ヮ繝シ繝峨ユ繧ュ繧ケ繝医↓縺、縺�※險ュ螳壹&繧後◆菴咲スョ縺ォ蜀肴緒逕サ縲√ユ繧ュ繧ケ繝域緒逕サ菴咲スョ繧剃ク贋ク九↓謖ッ繧� |
---|
899 | tnode
|
---|
900 | .transition()
|
---|
901 | .duration(duration)
|
---|
902 | .attr("x", function(d) {return d.x;})
|
---|
903 | .attr("y", function(d) {
|
---|
904 | // 繝�ヵ繧ゥ繝ォ繝医〒蟆代@荳九£繧� |
---|
905 | var updown = (NODEHEIGHT * 0.4);
|
---|
906 | // 螂�焚逡ェ逶ョ縺ョ豺ア縺輔↑繧牙ー代@荳翫£繧� |
---|
907 | if(d.group % 2 == 1){
|
---|
908 | updown = -(NODEHEIGHT * 0.2);
|
---|
909 | }
|
---|
910 | // 縺昴�蛟、繧帝ォ倥&縺ォ霑斐☆縺薙→縺ァ繝�く繧ケ繝域緒逕サ菴咲スョ縺御コ偵>驕輔>縺ォ縺ェ繧� |
---|
911 | return d.y + updown;
|
---|
912 | });
|
---|
913 |
|
---|
914 | // 蜷�Μ繝ウ繧ッ繝�く繧ケ繝医↓縺、縺�※險ュ螳壹&繧後◆菴咲スョ縺ォ蜀肴緒逕サ
|
---|
915 | tlink
|
---|
916 | .transition()
|
---|
917 | .duration(duration)
|
---|
918 | .attr("x", function(d) {return (node.data()[d.source].x + node.data()[d.target].x) / 2;})
|
---|
919 | .attr("y", function(d) {return ((node.data()[d.source].y + node.data()[d.target].y) / 2) + 4;});
|
---|
920 |
|
---|
921 | };
|
---|
922 |
|
---|
923 | // 蛻晏屓縺ョ縺ソduration繧�縺ィ謖�ョ壹@蜀肴緒逕サ�医い繝九Γ繝シ繧キ繝ァ繝ウ縺ェ縺暦シ� |
---|
924 | redraw(0);
|
---|
925 |
|
---|
926 | }else{
|
---|
927 | // SVG縺ョ蜑企勁
|
---|
928 | d3.select(".SBGraph svg").remove();
|
---|
929 | }
|
---|
930 | };
|
---|
931 |
|
---|
932 |
|
---|
933 | // 繝��繧ソ菴懈�繝。繧ス繝�ラ
|
---|
934 | make_data = function(){
|
---|
935 |
|
---|
936 | // 邨先棡逕ィ繧ェ繝悶ず繧ァ繧ッ繝医r蛻晄悄蛹� |
---|
937 | ret = new Object();
|
---|
938 | ret['nodes'] = new Array();
|
---|
939 | ret['links'] = new Array();
|
---|
940 |
|
---|
941 | // 蜷�ィョ螟画焚縺ョ蛻晄悄蛹� |
---|
942 | PATHNUM = 0;
|
---|
943 | MAXDEPTH = 0;
|
---|
944 | TREESPACE = 0;
|
---|
945 | DRAWHEIGHT = NODEHEIGHT;
|
---|
946 |
|
---|
947 | // 陦ィ遉コ縺吶k繝代せ謨ー
|
---|
948 | var viewnum;
|
---|
949 |
|
---|
950 | // jsontext繧貞叙蠕� |
---|
951 | var obj = jsontext;
|
---|
952 |
|
---|
953 | // 邨先棡繝代せ謨ー縺ョ繧ケ繧ソ繧、繝ォ繧偵Μ繧サ繝�ヨ
|
---|
954 | $('.SBResult').css('color', 'black').css('font-weight', 'normal').css('margin-top', '4px');
|
---|
955 |
|
---|
956 | // 隍�焚蠖「縺ョs繧偵▽縺代k
|
---|
957 | $('.SBPlural').text('s');
|
---|
958 |
|
---|
959 | // 繝代せ縺ョ謨ー縺�縺縺」縺溘i
|
---|
960 | if(obj.length == 0){
|
---|
961 | // 邨先棡繝代せ謨ー縺ョ繧ケ繧ソ繧、繝ォ繧定オ、縺ョ螟ェ蟄励↓縺鈴伜沺蜀�ク贋ク倶クュ螟ョ縺ォ
|
---|
962 | $('.SBResult').css('color', 'red').css('font-weight', 'bold').css('margin-top', '20px');
|
---|
963 | // 隍�焚蠖「縺ョs繧貞炎髯、
|
---|
964 | $('.SBPlural').text('');
|
---|
965 | // 繝代せ謨ー縺�縺ェ繧� |
---|
966 | }else if(obj.length == 1){
|
---|
967 | // 隍�焚蠖「縺ョs繧貞炎髯、
|
---|
968 | $('.SBPlural').text('');
|
---|
969 | }
|
---|
970 |
|
---|
971 | // 繝代せ縺ョ謨ー縺悟香莉・荳九↑繧� |
---|
972 | if(obj.length <= 10){
|
---|
973 | // 陦ィ遉コ謨ー繧偵ヱ繧ケ謨ー縺ォ
|
---|
974 | viewnum = obj.length;
|
---|
975 | // 邨先棡繝代せ謨ー縺ョ繧ケ繧ソ繧、繝ォ繧帝伜沺蜀�ク贋ク倶クュ螟ョ縺ォ
|
---|
976 | $('.SBResult').css('margin-top', '20px');
|
---|
977 | // 蜈ィ陦ィ遉コ繝懊ち繝ウ繧帝國縺� |
---|
978 | $('.SBViewAll').hide();
|
---|
979 | // 繝ェ繝溘ャ繝医′10縺ェ繧峨�
|
---|
980 | }else if(pathlimit == 10){
|
---|
981 | // 陦ィ遉コ繝代せ謨ー繧�0縺ォ
|
---|
982 | viewnum = 10;
|
---|
983 | // 蜈ィ陦ィ遉コ繝懊ち繝ウ繧貞�縺� |
---|
984 | $('.SBViewAll').show();
|
---|
985 | // 繝ェ繝溘ャ繝医′縺ェ縺代l縺ー
|
---|
986 | }else{
|
---|
987 | // 陦ィ遉コ繝代せ謨ー繧貞�繝代せ謨ー縺ォ
|
---|
988 | viewnum = obj.length;
|
---|
989 | // 邨先棡繝代せ謨ー縺ョ繧ケ繧ソ繧、繝ォ繧帝伜沺蜀�ク贋ク倶クュ螟ョ縺ォ
|
---|
990 | $('.SBResult').css('margin-top', '20px');
|
---|
991 | // 蜈ィ陦ィ遉コ繝懊ち繝ウ繧帝國縺� |
---|
992 | $('.SBViewAll').hide();
|
---|
993 | }
|
---|
994 |
|
---|
995 | // 邨先棡繝代せ謨ー縺ョ蛟、繧呈峩譁ー
|
---|
996 | $('.SBPathnum').text(obj.length);
|
---|
997 | // 邨先棡繝代せ謨ー繧定。ィ遉コ
|
---|
998 | $('.SBResult').show();
|
---|
999 |
|
---|
1000 | // obj繝医ャ繝鈴嚴螻、縺ョ謨ー縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
1001 | for(var i = 0; i < viewnum; i++){
|
---|
1002 | if(i == 0){
|
---|
1003 | // 蛻晏屓縺縺代Ν繝シ繝医ヮ繝シ繝峨r繝励ャ繧キ繝・
|
---|
1004 | ret['nodes'].push({'name': obj[0]['label'], 'uri': obj[0]['startClass'], 'group': 0, 'x':50, 'y':50, 'nodeid':ret['nodes'].length, 'path': 'notend', 'nodecolor': 'hsl(40, 50%, 75%)'});
|
---|
1005 | }
|
---|
1006 | // 蜈医↓source縺ォ0�医Ν繝シ繝茨シ峨r莉」蜈・
|
---|
1007 | var source = 0;
|
---|
1008 | // 蜈ア騾壹Ν繝シ繝亥愛螳壹rtrue縺ォ
|
---|
1009 | var isCommon = true;
|
---|
1010 |
|
---|
1011 | // 縺薙�繝代せ縺ョ繧ケ繧ウ繧「繧貞叙蠕� |
---|
1012 | var score = obj[i]['score'];
|
---|
1013 |
|
---|
1014 | // classLinks縺ョ謨ー縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
1015 | for(var j = 0;j < obj[i]['classLinks'].length; j++){
|
---|
1016 |
|
---|
1017 | // 繝ェ繝ウ繧ッ縺ョ蜷榊燕繧旦RL譛ォ蟆セ縺九i蜿門セ� |
---|
1018 | var propertytext = obj[i]['classLinks'][j]['predicate'];
|
---|
1019 | var propertysplit1 = propertytext.split("/");
|
---|
1020 | var propertysplit2 = propertysplit1[propertysplit1.length - 1];
|
---|
1021 | var propertysplit3 = propertysplit2.split("#");
|
---|
1022 | propertytext = propertysplit3[propertysplit3.length - 1];
|
---|
1023 |
|
---|
1024 | // 豺ア縺輔′譛螟ァ繧医j螟ァ縺阪¢繧後�譖エ譁ー
|
---|
1025 | if(MAXDEPTH < j+1){
|
---|
1026 | MAXDEPTH = j+1;
|
---|
1027 | }
|
---|
1028 | // 縺薙%縺セ縺ァ蜈ア騾壹Ν繝シ繝医↑繧� |
---|
1029 | if(isCommon){
|
---|
1030 | // 莉雁屓繧ょ�騾壹°遒コ隱阪☆繧九◆繧√�繝輔Λ繧ー
|
---|
1031 | var isCommonNow = false;
|
---|
1032 | // nodes驟榊�縺ォ蜷後§linkedClass縺梧里縺ォ縺ゅk縺狗「コ隱� |
---|
1033 | var targets = [];
|
---|
1034 | for(var k = 0; k < ret['nodes'].length; k++){
|
---|
1035 | // 蜷碁嚴螻、縺九▽蜷後§蜷榊燕縺ョ繧ゅ�縺後≠縺」縺溘itargets驟榊�縺ォ逡ェ蜿キ繧定ソス蜉
|
---|
1036 | if(ret['nodes'][k]['group'] == (j+1) && obj[i]['classLinks'][j]['linkedClass'] == ret['nodes'][k]['uri']){
|
---|
1037 | targets.push(k);
|
---|
1038 | }
|
---|
1039 | }
|
---|
1040 |
|
---|
1041 | // 譌「縺ォ縺ゅ▲縺溷エ蜷医�links驟榊�縺ォ蜷後§link縺悟ュ伜惠縺吶k縺狗「コ隱� |
---|
1042 | if(targets.length != 0){
|
---|
1043 | // 蜈医⊇縺ゥ隕九▽縺代◆targets縺ョ謨ー縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
1044 | for(var l = 0; l <targets.length; l++){
|
---|
1045 | // links驟榊�縺ォ蜈ィ縺丞酔縺俶擅莉カ縺ョ繧ゅ�縺後≠繧九°遒コ隱� |
---|
1046 | for(var m = 0; m < ret['links'].length; m++){
|
---|
1047 | // 縺ゅ▲縺溷エ蜷井サ雁屓縺ョ繧ゅ�縺ッ霑ス蜉縺帙★source繧呈峩譁ー縺励※谺。縺ク
|
---|
1048 | if(ret['links'][m]['source'] == source && ret['links'][m]['target'] == targets[l] && ret['links'][m]['uri'] == obj[i]['classLinks'][j]['predicate'] && !isCommonNow){
|
---|
1049 | // 蜈ア騾壹Ν繝シ繝医ヵ繝ゥ繧ー繧偵が繝ウ
|
---|
1050 | isCommonNow = true;
|
---|
1051 | source = targets[l];
|
---|
1052 | }
|
---|
1053 | }
|
---|
1054 | }
|
---|
1055 |
|
---|
1056 | // 蜷дarget繧堤「コ隱阪@縺ヲ蜈ア騾壹Ν繝シ繝医〒縺ッ縺ェ縺九▲縺溷エ蜷域眠隕剰ソス蜉
|
---|
1057 | if(!isCommonNow){
|
---|
1058 | isCommon = false;
|
---|
1059 | ret['nodes'].push({'name': obj[i]['classLinks'][j]['label'], 'uri': obj[i]['classLinks'][j]['linkedClass'], 'group': (j+1), 'x':0, 'y':0, 'nodeid':ret['nodes'].length, 'path': 'notend', 'nodecolor': '#cccccc'});
|
---|
1060 | ret['links'].push({'source':source, 'target':ret['nodes'].length - 1, 'property': propertytext, 'uri': obj[i]['classLinks'][j]['predicate']});
|
---|
1061 | source = ret['nodes'].length - 1;
|
---|
1062 | }
|
---|
1063 |
|
---|
1064 | // 縺ェ縺九▲縺溷エ蜷医�蛻・譚。莉カ縺ェ縺ョ縺ァ譁ー隕剰ソス蜉縺励※谺。縺ク
|
---|
1065 | }else{
|
---|
1066 |
|
---|
1067 | isCommon = false;
|
---|
1068 | ret['nodes'].push({'name': obj[i]['classLinks'][j]['label'], 'uri': obj[i]['classLinks'][j]['linkedClass'], 'group': (j+1), 'x':0, 'y':0, 'nodeid':ret['nodes'].length, 'path': 'notend', 'nodecolor': '#cccccc'});
|
---|
1069 | ret['links'].push({'source':source, 'target':ret['nodes'].length - 1, 'property': propertytext, 'uri': obj[i]['classLinks'][j]['predicate']});
|
---|
1070 | source = ret['nodes'].length - 1;
|
---|
1071 | }
|
---|
1072 | // 譌「縺ォ蜈ア騾壹Ν繝シ繝医〒縺ェ縺�↑繧画眠隕剰ソス蜉縺励※谺。縺ク
|
---|
1073 | }else{
|
---|
1074 | ret['nodes'].push({'name': obj[i]['classLinks'][j]['label'], 'uri': obj[i]['classLinks'][j]['linkedClass'], 'group': (j+1), 'x':0, 'y':0, 'nodeid':ret['nodes'].length, 'path': 'notend', 'nodecolor': '#cccccc'});
|
---|
1075 | ret['links'].push({'source':source, 'target':ret['nodes'].length - 1, 'property': propertytext, 'uri': obj[i]['classLinks'][j]['predicate']});
|
---|
1076 | source = ret['nodes'].length - 1;
|
---|
1077 | }
|
---|
1078 |
|
---|
1079 | }
|
---|
1080 | // 譛蠕鯉シ域忰遶ッ繝弱�繝会シ峨↓蜷�ィョ蛟、繧定ソス蜉
|
---|
1081 | ret['nodes'][ret['nodes'].length - 1]['path'] = obj[i];
|
---|
1082 | ret['nodes'][ret['nodes'].length - 1]['score'] = score;
|
---|
1083 | ret['nodes'][ret['nodes'].length - 1]['nodecolor'] = 'hsl(150, 50%, 75%)';
|
---|
1084 | // 繝代せ謨ー繧定ソス蜉
|
---|
1085 | PATHNUM++;
|
---|
1086 | }
|
---|
1087 | // 繝弱�繝蛾俣縺ョ繧ケ繝壹�繧ケ繧定ィ育ョ� |
---|
1088 | TREESPACE = $('.SBGraph').width() / (MAXDEPTH + 1);
|
---|
1089 |
|
---|
1090 | // 縺ァ縺阪◆邨先棡繧定ソ斐☆
|
---|
1091 | return ret;
|
---|
1092 | };
|
---|
1093 |
|
---|
1094 | set_map_location = function(myNodeIndex, nodes, links, depth, fromAngle, toAngle){
|
---|
1095 |
|
---|
1096 | // depth縺梧悴螳夂セゥ縺ェ繧峨�0繧偵そ繝�ヨ
|
---|
1097 | if (depth == undefined){
|
---|
1098 | depth = 0;
|
---|
1099 | }
|
---|
1100 |
|
---|
1101 | // 蜷�ィョ蛻晄悄蛹� |
---|
1102 | var children = undefined;
|
---|
1103 | var parent = undefined;
|
---|
1104 | var parentsChildren = undefined;
|
---|
1105 |
|
---|
1106 | // links驟榊�縺ョ謨ー縺縺醍ケー繧願ソ斐@縺ェ縺後i
|
---|
1107 | for (var i=0; i<links.length; i++){
|
---|
1108 | // 縺昴�links縺ョtarget縺稽yNodeIndex縺ェ繧英arent繧偵そ繝�ヨ
|
---|
1109 | if (links[i].target == myNodeIndex){
|
---|
1110 | parent = links[i].source;
|
---|
1111 | }
|
---|
1112 | }
|
---|
1113 |
|
---|
1114 | // parent縺瑚ヲ九▽縺九▲縺ヲ縺�◆縺ェ繧峨�
|
---|
1115 | if (parent != undefined){
|
---|
1116 | // parent縺ィlinks繧呈ク。縺揚et_children繝。繧ス繝�ラ繧貞ョ溯。� |
---|
1117 | parentsChildren = get_children(parent, links);
|
---|
1118 | }
|
---|
1119 |
|
---|
1120 | if(myNodeIndex != 0){
|
---|
1121 | DRAWHEIGHT += (NODEHEIGHT * 1.5);
|
---|
1122 | var x = (depth * TREESPACE) + (TREESPACE / 3);
|
---|
1123 | var y = DRAWHEIGHT;
|
---|
1124 | nodes[myNodeIndex].x = x;
|
---|
1125 | nodes[myNodeIndex].y = y;
|
---|
1126 | }else{
|
---|
1127 | var x = TREESPACE / 3;
|
---|
1128 | var y = (NODEHEIGHT * 1.5) * ((PATHNUM - 1) / 2) + NODEHEIGHT;
|
---|
1129 | nodes[myNodeIndex].x = x;
|
---|
1130 | nodes[myNodeIndex].y = y;
|
---|
1131 | }
|
---|
1132 |
|
---|
1133 | children = get_children(myNodeIndex, links);
|
---|
1134 |
|
---|
1135 | for (var i=0; i<children.length; i++){
|
---|
1136 | if(i == 0){
|
---|
1137 | DRAWHEIGHT -= (NODEHEIGHT * 1.5);
|
---|
1138 | }
|
---|
1139 | var child = children[i];
|
---|
1140 | set_map_location(child, nodes, links, depth+1, fromAngle + ((toAngle - fromAngle) / children.length) * i, fromAngle + ((toAngle - fromAngle) / children.length) * (i+1));
|
---|
1141 | }
|
---|
1142 |
|
---|
1143 | };
|
---|
1144 |
|
---|
1145 | // 謖�ョ壹&繧後◆隕ェ縺梧戟縺、蟄舌r霑斐☆
|
---|
1146 | get_children = function(index, links){
|
---|
1147 | var children = new Array();
|
---|
1148 | // links縺ョ謨ー縺縺醍「コ隱阪@縺ェ縺後i
|
---|
1149 | for (var i=0; i<links.length; i++){
|
---|
1150 | // 隕ェ縺梧ク。縺輔l縺溯ヲェ縺ィ荳閾エ縺吶k譎ゅ�蟄舌r霑ス蜉
|
---|
1151 | if (links[i].source == index){
|
---|
1152 | children.push(links[i].target);
|
---|
1153 | }
|
---|
1154 | }
|
---|
1155 | return children;
|
---|
1156 | };
|
---|