| 389 | | // make_data繝。繧ス繝�ラ縺ョ邨先棡繧貞叙蠕� |
| 390 | | var json = make_data(0); |
| 391 | | |
| 392 | | if(json['nodes'].length != 0){ |
| 393 | | |
| 394 | | // 蜃コ譚・荳翫′縺」縺溽オ先棡繧呈ク。縺励※繝槭ャ繝嶺ク翫�繝ュ繧ア繝シ繧キ繝ァ繝ウ繧偵そ繝�ヨ |
| 395 | | set_map_location(0, json['nodes'], json['links']); |
| 396 | | |
| 397 | | // SVG縺ョ蟷�→鬮倥&繧定ィュ螳夲シ亥ケ�シ夂判髱「縺�▲縺ア縺�鬮倥&�壹ヱ繧ケ縺ョ謨ー縺ォ蠢懊§險ュ螳夲シ� |
| 398 | | var width = $('.SBGraph').width(); |
| 399 | | var height = $('.SBGraph').height(); |
| 400 | | var graphheight = ((NODEHEIGHT * 1.5) * PATHNUM) + (NODEHEIGHT / 2); |
| 401 | | |
| 402 | | var scoreleftmargin = NODEHEIGHT * 1.5; |
| 403 | | |
| 404 | | // SVG縺ョ蜑企勁 |
| 405 | | d3.select(".SBGraph svg").remove(); |
| 406 | | // 逕サ髱「繧オ繧、繧コ縺ォ蜷医o縺婀VG縺ョ霑ス蜉 |
| 407 | | var svg = d3.select(".SBGraph").append("svg") |
| 408 | | .attr("width", width) |
| 409 | | .attr("height", height) |
| 410 | | .attr("viewBox", "0 0 " + width + " " + height) |
| 411 | | .on("mousewheel", function(){ |
| 412 | | var vb = svg.attr("viewBox"); |
| 413 | | var spvb = vb.split(" "); |
| 414 | | |
| 415 | | var vby = (parseInt(spvb[1]) - event.wheelDelta); |
| 416 | | |
| 417 | | if(vby < 0){ |
| 418 | | vby = 0; |
| 419 | | }else if(vby > (graphheight - height)){ |
| 420 | | vby = (graphheight - height); |
| 421 | | if(vby < 0){ |
| 422 | | vby = 0; |
| 423 | | } |
| 424 | | }else{ |
| 425 | | event.preventDefault(); |
| 426 | | } |
| 427 | | |
| 428 | | svg.attr("viewBox", "0 " + vby + " " + width + " " + height); |
| 429 | | }); |
| 430 | | |
| 431 | | // 閭梧勹縺ョ霑ス蜉 |
| 432 | | var bg = svg |
| 433 | | .append("rect") |
| 434 | | .attr("x", 0) |
| 435 | | .attr("y", 0) |
| 436 | | .attr("width", width) |
| 437 | | .attr("height", function(){ |
| 438 | | if(graphheight < height){ |
| 439 | | return height; |
| 440 | | }else{ |
| 441 | | return graphheight; |
| 442 | | } |
| 443 | | }) |
| 444 | | .attr("fill", "#fafafa"); |
| 445 | | |
| 446 | | // links驟榊�繧呈ク。縺励Μ繝ウ繧ッ縺ョ菴懈� |
| 447 | | var link = svg.selectAll(".link") |
| 448 | | .data(json.links) |
| 449 | | .enter().append("line") |
| 450 | | .attr("class", "link") |
| 451 | | .style("stroke", "#999") |
| 452 | | .style("stroke-opacity", 0.6) |
| 453 | | .style("stroke-width", function(d) { return Math.sqrt(d.value);}); |
| 454 | | |
| 455 | | // nodes驟榊�繧呈ク。縺励ヮ繝シ繝峨�菴懈� |
| 456 | | var node = svg.selectAll(".node") |
| 457 | | .data(json.nodes) |
| 458 | | .enter().append("circle") |
| 459 | | .attr("class", "node") |
| 460 | | .attr("r", (NODEHEIGHT / 2)) |
| 461 | | .attr("cx", function(d) { return d.x;} ) |
| 462 | | .attr("cy", function(d) { return d.y; }) |
| 463 | | .style("stroke", function(d) { return '#fafafa'; }) |
| 464 | | .style("stroke-width", function(d) { return '1.5px'; }) |
| 465 | | .style("fill", function(d) { return d.nodecolor; }) |
| 466 | | .style("cursor", function(d) { return 'pointer'; }); |
| 467 | | |
| 468 | | // nodes驟榊�繧呈ク。縺励ヮ繝シ繝峨ユ繧ュ繧ケ繝医�菴懈� |
| 469 | | var tnode = svg.selectAll("text.node") |
| 470 | | .data(json.nodes) |
| 471 | | .enter().append("svg:text") |
| 472 | | .attr("class", "tnode") |
| 473 | | .attr("x", function(d) { return d.x; }) |
| 474 | | .attr("y", function(d) { return d.y; }) |
| 475 | | .text(function(d) { return d.name; }) |
| 476 | | .style("fill", function(d) { return '#000000'; }) |
| 477 | | .style("text-anchor", function(d) { return 'middle'; }) |
| 478 | | .style("pointer-events", "none"); |
| 479 | | |
| 480 | | // 繝ェ繝ウ繧ッ繝�く繧ケ繝医�菴懈� |
| 481 | | var tlink = svg.selectAll("text.link") |
| 482 | | .data(json.links) |
| 483 | | .enter().append("svg:text") |
| 484 | | .attr("class", "tlink") |
| 485 | | .attr("x", function(d) { return (json.nodes[d.source].x + json.nodes[d.target].x) / 2; }) |
| 486 | | .attr("y", function(d) { return (json.nodes[d.source].y + json.nodes[d.target].y) / 2; }) |
| 487 | | .style("fill", function(d) { return '#000000'; }) |
| 488 | | .style("text-anchor", function(d) { return 'middle'; }); |
| 489 | | |
| 490 | | // nodes驟榊�繧呈ク。縺励ヮ繝シ繝峨ユ繧ュ繧ケ繝医�菴懈� |
| 491 | | var tscore = svg.selectAll("text.score") |
| 492 | | .data(json.nodes) |
| 493 | | .enter().append("svg:text") |
| 494 | | .attr("class", "tscore") |
| 495 | | .attr("x", function(d) { return (d.x + scoreleftmargin); }) |
| 496 | | .attr("y", function(d) { return d.y; }) |
| 497 | | .text(function(d) { return d.score; |
| 498 | | }) |
| 499 | | .style("fill", function(d) { return '#FF0000'; }) |
| 500 | | .style("text-anchor", function(d) { return 'middle'; }) |
| 501 | | .style("pointer-events", "none"); |
| 502 | | |
| 503 | | // 繝槭え繧ケ縺ョ蜍輔″繧ォ繧ヲ繝ウ繝医r繝ォ繝シ繝医↓謖√◆縺帙k |
| 504 | | MOUSEMOVED = 0; |
| 505 | | |
| 506 | | // 繝弱�繝峨∈縺ョ繧ェ繝ウ繝槭え繧ケ縺ァ繝代せ謗「邏「縲√ヱ繧ケ荳ュ縺ョ繝ェ繝ウ繧ッ譁�ュ励r陦ィ遉コ |
| 507 | | node.on("mouseover", function(d){ |
| 508 | | |
| 509 | | // 繝槭え繧ケ縺ョ蜍輔″繧ォ繧ヲ繝ウ繝医r繝ェ繧サ繝�ヨ |
| 510 | | node.data()[0].mousemoved = 0; |
| 511 | | |
| 512 | | // 陦ィ遉コ縺吶k繝代せ菫晏ュ倡畑驟榊� |
| 513 | | var path = []; |
| 514 | | // 繝��繝ォ繝√ャ繝励∈縺ョ蜷榊燕陦ィ遉コ逕ィ驟榊� |
| 515 | | var pathname = []; |
| 516 | | |
| 517 | | // 繝ォ繝シ繝医ヮ繝シ繝我サ・螟悶↑繧� |
| 518 | | if(d.nodeid != 0){ |
| 519 | | // 縺セ縺壹が繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨�id縺ィ蜷榊燕繧偵◎繧後◇繧瑚ソス蜉 |
| 520 | | path.push(d.nodeid); |
| 521 | | pathname.push(d.name); |
| 522 | | |
| 523 | | // 繝代せ謗「邏「 |
| 524 | | do{ |
| 525 | | // 繝ェ繝ウ繧ッ縺ョ謨ー縺縺醍ケー繧願ソ斐@ |
| 526 | | for(var i = 0; i < link.data().length; i++){ |
| 527 | | // 迴セ蝨ィ縺ョ譛蠕悟ーセ縺ォ郢九′繧九Μ繝ウ繧ッ縺後≠繧後� |
| 528 | | if(path[(path.length-1)] == link.data()[i].target){ |
| 529 | | // 縺昴�繝ェ繝ウ繧ッ縺ョ繧ス繝シ繧ケ蛛エ繝弱�繝峨�id繧定ソス蜉 |
| 530 | | path.push(link.data()[i].source); |
| 531 | | // 縺昴�繝ェ繝ウ繧ッ縺ョ蜷榊燕縺ィ繧ス繝シ繧ケ蛛エ繝弱�繝峨�蜷榊燕繧定ソス蜉 |
| 532 | | pathname.push(link.data()[i].property); |
| 533 | | pathname.push(node.data()[link.data()[i].source].name); |
| 534 | | } |
| 535 | | } |
| 536 | | // 繝ォ繝シ繝医ヮ繝シ繝峨↓霎ソ繧顔捩縺上∪縺ァ郢ー繧願ソ斐☆ |
| 537 | | }while(path[(path.length-1)] != 0); |
| 538 | | |
| 539 | | // 譛ォ遶ッ繝弱�繝峨〒縺ェ縺�↑繧� |
| 540 | | if(d.path == "notend"){ |
| 541 | | // 繝��繝ォ繝√ャ繝励r髱櫁。ィ遉コ縺ォ |
| 542 | | $('.SBSelectedPath').html('<h1>Please <span style="color: hsl(150, 50%, 75%);">select a leaf node</span> and <span style=\"color: hsl(200, 50%, 75%);\">push button</span> to generate a SPARQL</h1>'); |
| 543 | | }else{ |
| 544 | | // 譛ォ遶ッ繝弱�繝峨↑繧峨ヤ繝シ繝ォ繝√ャ繝励�諠�ア繧呈峩譁ー |
| 545 | | var resultText = '<div class="SBGenButton" onclick="generateSPARQL()">Generate<br />SPARQL</div>'; |
| 546 | | // 繝代せ縺ョ蜷榊燕驟榊�蛻�セ後m縺九i郢ー繧願ソ斐@縺ェ縺後i |
| 547 | | for (var i = pathname.length;i > 0; i--){ |
| 548 | | // 螂�焚逡ェ逶ョ�医ヮ繝シ繝峨�蜷榊燕�峨�螟ェ蟄励↓ |
| 549 | | if(i % 2 == 1){ |
| 550 | | if(i == 1){ |
| 551 | | resultText = resultText + "<div class=\"SBLeafNode\">" + pathname[i - 1] + "</div>"; |
| 552 | | }else if(i == pathname.length){ |
| 553 | | resultText = resultText + "<div class=\"SBRootNode\">" + pathname[i - 1] + "</div>"; |
| 554 | | }else{ |
| 555 | | resultText = resultText + "<div class=\"SBPathNode\">" + pathname[i - 1] + "</div>"; |
| 556 | | } |
| 557 | | // 蛛カ謨ー逡ェ逶ョ�医Μ繝ウ繧ッ縺ョ蜷榊燕�峨�縺昴�縺セ縺セ縺ァ陦ィ遉コ |
| 558 | | }else{ |
| 559 | | resultText = resultText + "<img src=\"images/pathline.png\"><div class=\"SBPathProperty\">" + pathname[i - 1] + "</div><img src=\"images/pathline.png\">"; |
| 560 | | } |
| 561 | | } |
| 562 | | |
| 563 | | // 繝��繝ォ繝√ャ繝励�蜀�ョケ繧呈嶌縺肴鋤縺� |
| 564 | | $('.SBSelectedPath').html(resultText); |
| 565 | | |
| 566 | | // 繧オ繝シ繝悶Ξ繝�ヨ縺ォ騾√j霑斐☆繝代せ繧ェ繝悶ず繧ァ繧ッ繝医r菫晏ュ� |
| 567 | | pathobj = d.path; |
| 568 | | } |
| 569 | | |
| 570 | | $('.SBPath').css('overflow-y', 'visible'); |
| 571 | | |
| 572 | | if($('.SBPath').height() < $('.SBSelectedPath').innerHeight()){ |
| 573 | | $('.SBPath').css('overflow-y', 'scroll'); |
| 574 | | } |
| 575 | | } |
| 576 | | |
| 577 | | // 繧ェ繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨�鬮倥&縺ォ隕ェ繧貞粋繧上○繧九◆繧√↓蜷医o縺帙k鬮倥&繧剃ソ晏ュ� |
| 578 | | var movey = d.y; |
| 579 | | |
| 580 | | // 蜷�ヮ繝シ繝峨↓蟇セ縺� |
| 581 | | node |
| 582 | | // 霈ェ驛ュ邱壹�濶イ繧定ィュ螳� |
| 583 | | .style("stroke", function(d){ |
| 584 | | // 縺セ縺壹�閭梧勹濶イ�医ョ繝輔か繝ォ繝茨シ峨r謖�ョ� |
| 585 | | var strokecolor = "#fafafa"; |
| 586 | | |
| 587 | | // 繝代せ蛻、螳壹�蜑榊�逅� |
| 588 | | // 陦ィ遉コ繝輔Λ繧ー縺系ow�亥燕蝗槭が繝ウ繝槭え繧ケ縺ァ蜍輔>縺ヲ縺�◆繝弱�繝会シ峨↑繧� |
| 589 | | if(d.view == "now"){ |
| 590 | | // 繝弱�繝峨�陦ィ遉コ繝輔Λ繧ー繧地o縺ォ |
| 591 | | d.view = "no"; |
| 592 | | } |
| 593 | | // 陦ィ遉コ繝輔Λ繧ー縺稽oved�医け繝ェ繝�け縺輔l蝗コ螳壽ク医∩縺縺悟燕蝗槫虚縺�※縺�◆繝弱�繝会シ峨↑繧� |
| 594 | | if(d.view == "moved"){ |
| 595 | | // 陦ィ遉コ繝輔Λ繧ー繧団licked縺ォ謌サ縺� |
| 596 | | d.view = "clicked"; |
| 597 | | } |
| 598 | | |
| 599 | | // 陦ィ遉コ繝輔Λ繧ー縺系o縺ョ繧ゅ�縺九i遒コ隱� |
| 600 | | if(d.view == "no"){ |
| 601 | | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i |
| 602 | | for(var n = 0; n < path.length; n++){ |
| 603 | | // 繝代せ蜀�↓蜷ォ縺セ繧後k繝弱�繝峨□縺」縺溘i |
| 604 | | if(path[n] == d.nodeid){ |
| 605 | | // 霈ェ驛ュ邱壹r襍、縺ォ |
| 606 | | strokecolor = "#ffaaaa"; |
| 607 | | // 陦ィ遉コ繝輔Λ繧ー繧地ow�井サ雁屓蜍輔>縺溘ヮ繝シ繝会シ峨↓ |
| 608 | | d.view = "now"; |
| 609 | | } |
| 610 | | } |
| 611 | | // 蝗コ螳壽ク医∩繝弱�繝峨□縺」縺溘i |
| 612 | | }else if(d.view == "clicked"){ |
| 613 | | // 縺セ縺壹�霈ェ驛ュ邱壹r襍、縺ォ |
| 614 | | strokecolor = "#ffaaaa"; |
| 615 | | // 繝代せ蜀�↓蜷ォ縺セ繧後k繝弱�繝峨°繝√ぉ繝�け |
| 616 | | for(var n = 0; n < path.length; n++){ |
| 617 | | if(path[n] == d.nodeid){ |
| 618 | | // 蜷ォ縺セ繧後※縺�◆縺ェ繧我サ雁屓蜍輔°縺吶◆繧√ヵ繝ゥ繧ー繧知oved縺ォ |
| 619 | | d.view = "moved"; |
| 620 | | } |
| 621 | | } |
| 622 | | } |
| 623 | | |
| 624 | | // 縺薙%縺セ縺ァ縺ァ蠕励i繧後◆霈ェ驛ュ邱壹�濶イ繧定ソ斐☆ |
| 625 | | return strokecolor; |
| 626 | | }) |
| 627 | | // 鬮倥&縺ョ蛟、 |
| 628 | | .attr("cy", function(d){ |
| 629 | | // 繝弱�繝峨′莉雁屓繧ェ繝ウ繝槭え繧ケ縺輔l縺溘�縺セ縺溘�蝗コ螳壽ク医∩縺縺檎ァサ蜍輔ヵ繝ゥ繧ー繧偵▽縺代i繧後※縺�l縺ー |
| 630 | | if(d.view == "now" || d.view == "moved"){ |
| 631 | | // 迴セ蝨ィ縺ョ鬮倥&繧貞叙蠕� |
| 632 | | var curty = d.y; |
| 633 | | // d.y縺ォ蟄舌ヮ繝シ繝峨�鬮倥&繧偵そ繝�ヨ |
| 634 | | d.y = movey; |
| 635 | | // 迴セ蝨ィ縺ョ鬮倥&繧定ソ斐☆�医%縺ョ譎らせ縺ァ縺ッ迴セ蝨ィ菴咲スョ縺ォ謠冗判縺輔l縲〉edraw髢「謨ー縺ァd.y縺ォ繧「繝九Γ繝シ繧キ繝ァ繝ウ縺輔l繧具シ� |
| 636 | | return curty; |
| 637 | | // 遘サ蜍募ッセ雎。縺ァ縺ェ縺�↑繧� |
| 638 | | }else{ |
| 639 | | // 迴セ蝨ィ菴咲スョ繧偵◎縺ョ縺セ縺セ霑斐☆ |
| 640 | | return d.y; |
| 641 | | } |
| 642 | | }); |
| 643 | | |
| 644 | | // 蜷�Μ繝ウ繧ッ繝�く繧ケ繝医↓蟇セ縺� |
| 645 | | tlink |
| 646 | | // 繝�く繧ケ繝郁。ィ遉コ蛻、螳� |
| 647 | | .text(function(d) { |
| 648 | | // 繝�ヵ繧ゥ繝ォ繝医〒遨コ繧偵そ繝�ヨ |
| 649 | | var linktext = ""; |
| 650 | | // 陦ィ遉コ繝輔Λ繧ー縺系ow�亥燕蝗櫁。ィ遉コ縺輔l縺ヲ縺�◆繝ェ繝ウ繧ッ�峨↑繧� |
| 651 | | if(d.view == "now"){ |
| 652 | | // 陦ィ遉コ繝輔Λ繧ー繧定ァ」髯、 |
| 653 | | d.view = "no"; |
| 654 | | } |
| 655 | | |
| 656 | | // 陦ィ遉コ繝輔Λ繧ー縺系o縺ェ繧� |
| 657 | | if(d.view == "no"){ |
| 658 | | // 繝代せ縺ョ繝弱�繝画焚蛻�ケー繧願ソ斐@ |
| 659 | | for(var t = 0; t < path.length; t++){ |
| 660 | | // 閾ェ霄ォ縺後◎縺ョ繝弱�繝峨∈謗・邯壹@縺ヲ縺�k繝ェ繝ウ繧ッ�医°縺、縺昴�繝弱�繝峨′謚倥j縺溘◆縺セ繧後※縺�↑縺代l縺ー�� |
| 661 | | if(path[t] == d.target && node.data()[d.target].view != "hide"){ |
| 662 | | // 繝ェ繝ウ繧ッ繝�く繧ケ繝医↓繝励Ο繝代ユ繧」縺ョ蛟、繧偵そ繝�ヨ |
| 663 | | linktext = d.property |
| 664 | | // 陦ィ遉コ繝輔Λ繧ー縺ォnow繧偵そ繝�ヨ |
| 665 | | d.view = "now"; |
| 666 | | } |
| 667 | | } |
| 668 | | // 陦ィ遉コ繝輔Λ繧ー縺掲ix�医け繝ェ繝�け縺輔l縺溘ヱ繧ケ縺ョ繝ェ繝ウ繧ッ�峨↑繧峨��医°縺、郢九′繧句�縺ョ繝弱�繝峨′謚倥j縺溘◆縺セ繧後※縺�↑縺代l縺ー�� |
| 669 | | }else if(d.view == "fix" && node.data()[d.target].view != "hide"){ |
| 670 | | // 繝ェ繝ウ繧ッ繝�く繧ケ繝医↓繝励Ο繝代ユ繧」縺ョ蛟、繧偵そ繝�ヨ |
| 671 | | linktext = d.property |
| 672 | | } |
| 673 | | // 縺薙%縺セ縺ァ縺ァ縺ァ縺阪◆繝ェ繝ウ繧ッ繝�く繧ケ繝医r霑斐☆ |
| 674 | | return linktext; |
| 675 | | }); |
| | 390 | // make_data繝。繧ス繝�ラ縺ョ邨先棡繧貞叙蠕� |
| | 391 | var json = make_data(0); |
| | 392 | |
| | 393 | // 繝代せ謨ー縺�縺ァ縺ェ縺代l縺ー |
| | 394 | if(json['nodes'].length != 0){ |
| | 395 | |
| | 396 | // 蜃コ譚・荳翫′縺」縺溽オ先棡繧呈ク。縺励※繝槭ャ繝嶺ク翫�蠎ァ讓吶r繧サ繝�ヨ |
| | 397 | set_map_location(0, json['nodes'], json['links']); |
| | 398 | |
| | 399 | // SVG縺ョ蟷�→鬮倥&逕ィ縺ォ謠冗判鬆伜沺縺ョ繧オ繧、繧コ繧貞叙蠕� |
| | 400 | var width = $('.SBGraph').width(); |
| | 401 | var height = $('.SBGraph').height(); |
| | 402 | // SVG蜀��繧ー繝ゥ繝暮Κ蛻�ォ倥&�医ヱ繧ケ謨ー縺ォ蠢懊§繧具シ峨r繧サ繝�ヨ |
| | 403 | var graphheight = ((NODEHEIGHT * 1.5) * PATHNUM) + (NODEHEIGHT / 2); |
| | 404 | |
| | 405 | // 繧ケ繧ウ繧「陦ィ遉コ縺ョ繝槭�繧ク繝ウ |
| | 406 | var scoreleftmargin = NODEHEIGHT * 1.5; |
| | 407 | |
| | 408 | // SVG縺ョ蜑企勁 |
| | 409 | d3.select(".SBGraph svg").remove(); |
| | 410 | // 逕サ髱「繧オ繧、繧コ縺ォ蜷医o縺婀VG縺ョ霑ス蜉 |
| | 411 | var svg = d3.select(".SBGraph").append("svg") |
| | 412 | .attr("width", width) |
| | 413 | .attr("height", height) |
| | 414 | // 繝薙Η繝シ繝懊ャ繧ッ繧ケ縺ョ繧サ繝�ヨ |
| | 415 | .attr("viewBox", "0 0 " + width + " " + height) |
| | 416 | // 繧ケ繧ッ繝ュ繝シ繝ォ縺輔l縺溘i |
| | 417 | .on("mousewheel", function(){ |
| | 418 | // 迴セ蝨ィ縺ョ繝薙Η繝シ繝懊ャ繧ッ繧ケ縺ョ迥カ諷九r蜿門セ� |
| | 419 | var vb = svg.attr("viewBox"); |
| | 420 | // 繧ケ繝壹�繧ケ縺ァ蛹コ蛻�j蜷�、縺ォ蛻�ァ」 |
| | 421 | var spvb = vb.split(" "); |
| | 422 | |
| | 423 | // 繝薙Η繝シ繝懊ャ繧ッ繧ケ縺ョy縺ョ蛟、縺九i莉雁屓縺ョ繝帙う繝シ繝ォ繧、繝吶Φ繝医�蟾ョ蛻�r蠑輔¥ |
| | 424 | var vby = (parseInt(spvb[1]) - event.wheelDelta); |
| | 425 | |
| | 426 | // 0繧貞牡縺」縺ヲ縺�◆繧�縺ォ |
| | 427 | if(vby < 0){ |
| | 428 | vby = 0; |
| | 429 | // 繧ケ繧ッ繝ュ繝シ繝ォ荳企剞�医げ繝ゥ繝輔し繧、繧コ蠑輔¥陦ィ遉コ鬆伜沺繧オ繧、繧コ�峨r雜�∴縺ヲ縺�◆繧芽」懈ュ」 |
| | 430 | }else if(vby > (graphheight - height)){ |
| | 431 | vby = (graphheight - height); |
| | 432 | // 陬懈ュ」縺励◆邨先棡0繧貞牡縺」縺ヲ縺�◆繧�縺ォ |
| | 433 | if(vby < 0){ |
| | 434 | vby = 0; |
| | 435 | } |
| | 436 | } |
| | 437 | |
| | 438 | // 縺薙%縺セ縺ァ縺ァ縺ァ縺阪◆y繧偵そ繝�ヨ縺励ン繝・繝シ繝懊ャ繧ッ繧ケ繧呈峩譁ー |
| | 439 | svg.attr("viewBox", "0 " + vby + " " + width + " " + height); |
| | 440 | }); |
| | 441 | |
| | 442 | // 閭梧勹縺ョ霑ス蜉�磯ォ倥&莉・螟悶�謠冗判鬆伜沺縺昴�縺セ縺セ�� |
| | 443 | var bg = svg |
| | 444 | .append("rect") |
| | 445 | .attr("x", 0) |
| | 446 | .attr("y", 0) |
| | 447 | .attr("width", width) |
| | 448 | .attr("height", function(){ |
| | 449 | // 繧ー繝ゥ繝暮Κ蛻��鬮倥&縺梧緒逕サ鬆伜沺縺ョ鬮倥&繧貞牡縺」縺ヲ縺�◆繧会シ医ヱ繧ケ縺悟ー代↑縺代l縺ー�画緒逕サ鬆伜沺縺ョ鬮倥&繧定ソ斐☆ |
| | 450 | if(graphheight < height){ |
| | 451 | return height; |
| | 452 | }else{ |
| | 453 | return graphheight; |
| | 454 | } |
| | 455 | }) |
| | 456 | // 閭梧勹繧定埋縺�げ繝ャ繝シ縺ォ |
| | 457 | .attr("fill", "#fafafa"); |
| | 458 | |
| | 459 | // links驟榊�繧呈ク。縺励Μ繝ウ繧ッ縺ョ菴懈� |
| | 460 | var link = svg.selectAll(".link") |
| | 461 | .data(json.links) |
| | 462 | .enter().append("line") |
| | 463 | .attr("class", "link") |
| | 464 | .style("stroke", "#999") |
| | 465 | .style("stroke-opacity", 0.6) |
| | 466 | .style("stroke-width", 2); |
| | 467 | |
| | 468 | // nodes驟榊�繧呈ク。縺励ヮ繝シ繝峨�菴懈� |
| | 469 | var node = svg.selectAll(".node") |
| | 470 | .data(json.nodes) |
| | 471 | .enter().append("circle") |
| | 472 | .attr("class", "node") |
| | 473 | .attr("r", (NODEHEIGHT / 2)) |
| | 474 | .attr("cx", function(d) { return d.x;} ) |
| | 475 | .attr("cy", function(d) { return d.y; }) |
| | 476 | .style("fill", function(d) { return d.nodecolor; }) |
| | 477 | .style("stroke", '#fafafa') |
| | 478 | .style("stroke-width", '1.5px') |
| | 479 | .style("cursor", 'pointer'); |
| | 480 | |
| | 481 | // nodes驟榊�繧呈ク。縺励ヮ繝シ繝峨ユ繧ュ繧ケ繝医�菴懈� |
| | 482 | var tnode = svg.selectAll("text.node") |
| | 483 | .data(json.nodes) |
| | 484 | .enter().append("svg:text") |
| | 485 | .attr("class", "tnode") |
| | 486 | .attr("x", function(d) { return d.x; }) |
| | 487 | .attr("y", function(d) { return d.y; }) |
| | 488 | .text(function(d) { return d.name; }) |
| | 489 | .style("fill", '#000000') |
| | 490 | .style("text-anchor", 'middle') |
| | 491 | .style("pointer-events", "none"); |
| | 492 | |
| | 493 | // 繝ェ繝ウ繧ッ繝�く繧ケ繝医�菴懈� |
| | 494 | var tlink = svg.selectAll("text.link") |
| | 495 | .data(json.links) |
| | 496 | .enter().append("svg:text") |
| | 497 | .attr("class", "tlink") |
| | 498 | .attr("x", function(d) { return (json.nodes[d.source].x + json.nodes[d.target].x) / 2; }) |
| | 499 | .attr("y", function(d) { return (json.nodes[d.source].y + json.nodes[d.target].y) / 2; }) |
| | 500 | .style("fill", '#000000') |
| | 501 | .style("text-anchor", 'middle'); |
| | 502 | |
| | 503 | // 繧ケ繧ウ繧「繝�く繧ケ繝医�菴懈� |
| | 504 | var tscore = svg.selectAll("text.score") |
| | 505 | .data(json.nodes) |
| | 506 | .enter().append("svg:text") |
| | 507 | .attr("class", "tscore") |
| | 508 | .attr("x", function(d) { return (d.x + scoreleftmargin); }) |
| | 509 | .attr("y", function(d) { return d.y; }) |
| | 510 | .text(function(d) { return d.score; }) |
| | 511 | .style("fill", '#ff0000') |
| | 512 | .style("text-anchor", 'middle') |
| | 513 | .style("pointer-events", "none"); |
| | 514 | |
| | 515 | // 繝弱�繝峨∈縺ョ繧ェ繝ウ繝槭え繧ケ縺ァ繝代せ謗「邏「縲√ヱ繧ケ荳ュ縺ョ繝ェ繝ウ繧ッ譁�ュ励r陦ィ遉コ |
| | 516 | node.on("mouseover", function(d){ |
| | 517 | |
| | 518 | // 陦ィ遉コ縺吶k繝代せ菫晏ュ倡畑驟榊� |
| | 519 | var path = []; |
| | 520 | // 繝代せ陦ィ遉コ諠�ア菫晏ュ倡畑驟榊� |
| | 521 | var pathname = []; |
| | 522 | |
| | 523 | // 縺セ縺壹が繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨�id縺ィ蜷榊燕繧偵◎繧後◇繧瑚ソス蜉 |
| | 524 | path.push(d.nodeid); |
| | 525 | pathname.push(d.name); |
| | 526 | |
| | 527 | // 繝代せ謗「邏「 |
| | 528 | do{ |
| | 529 | // 繝ェ繝ウ繧ッ縺ョ謨ー縺縺醍ケー繧願ソ斐@ |
| | 530 | for(var i = 0; i < link.data().length; i++){ |
| | 531 | // 迴セ蝨ィ縺ョ譛蠕悟ーセ縺ォ郢九′繧九Μ繝ウ繧ッ縺後≠繧後� |
| | 532 | if(path[(path.length-1)] == link.data()[i].target){ |
| | 533 | // 縺昴�繝ェ繝ウ繧ッ縺ョ繧ス繝シ繧ケ蛛エ繝弱�繝峨�id繧定ソス蜉 |
| | 534 | path.push(link.data()[i].source); |
| | 535 | // 縺昴�繝ェ繝ウ繧ッ縺ョ蜷榊燕縺ィ繧ス繝シ繧ケ蛛エ繝弱�繝峨�蜷榊燕繧定ソス蜉 |
| | 536 | pathname.push(link.data()[i].property); |
| | 537 | pathname.push(node.data()[link.data()[i].source].name); |
| | 538 | } |
| | 539 | } |
| | 540 | // 繝ォ繝シ繝医ヮ繝シ繝峨↓霎ソ繧顔捩縺上∪縺ァ郢ー繧願ソ斐☆ |
| | 541 | }while(path[(path.length-1)] != 0); |
| | 542 | |
| | 543 | // 繝ォ繝シ繝医ヮ繝シ繝峨∪縺溘�騾比クュ繝弱�繝峨↑繧� |
| | 544 | if(d.nodeid == 0 || d.path == "notend"){ |
| | 545 | // 繝代せ陦ィ遉コ鬆伜沺繧偵ョ繝輔か繝ォ繝医↓ |
| | 546 | $('.SBSelectedPath').html('<h1>Please <span style="color: hsl(150, 50%, 75%);">select a leaf node</span> and <span style=\"color: hsl(200, 50%, 75%);\">push button</span> to generate a SPARQL</h1>'); |
| | 547 | // 譛ォ遶ッ繝弱�繝峨↑繧� |
| | 548 | }else{ |
| | 549 | |
| | 550 | // 繝代せ陦ィ遉コ鬆伜沺逕ィ譁�ュ怜��医ず繧ァ繝阪Ξ繝シ繝医�繧ソ繝ウ繧偵∪縺夊ソス蜉�� |
| | 551 | var resultText = '<div class="SBGenButton" onclick="generateSPARQL()">Generate<br />SPARQL</div>'; |
| | 552 | // 繝代せ縺ョ蜷榊燕驟榊�蛻�セ後m縺九i郢ー繧願ソ斐@縺ェ縺後i |
| | 553 | for (var i = pathname.length;i > 0; i--){ |
| | 554 | // 螂�焚逡ェ逶ョ�医ヮ繝シ繝会シ峨↑繧� |
| | 555 | if(i % 2 == 1){ |
| | 556 | // 繝ォ繝シ繝医°騾比クュ縺区忰遶ッ縺九↓蠢懊§縺ヲ繧ッ繝ゥ繧ケ繧呈欠螳壹@霑ス險� |
| | 557 | if(i == 1){ |
| | 558 | resultText = resultText + "<div class=\"SBLeafNode\">" + pathname[i - 1] + "</div>"; |
| | 559 | }else if(i == pathname.length){ |
| | 560 | resultText = resultText + "<div class=\"SBRootNode\">" + pathname[i - 1] + "</div>"; |
| | 561 | }else{ |
| | 562 | resultText = resultText + "<div class=\"SBPathNode\">" + pathname[i - 1] + "</div>"; |
| | 563 | } |
| | 564 | // 蛛カ謨ー逡ェ逶ョ�医Μ繝ウ繧ッ�峨�繝ェ繝ウ繧ッ逕サ蜒上r蜑榊セ後↓縺、縺題ソス險� |
| | 565 | }else{ |
| | 566 | resultText = resultText + "<img src=\"images/pathline.png\"><div class=\"SBPathProperty\">" + pathname[i - 1] + "</div><img src=\"images/pathline.png\">"; |
| | 567 | } |
| | 568 | } |
| | 569 | |
| | 570 | // 繝代せ陦ィ遉コ鬆伜沺縺ョ蜀�ョケ繧呈嶌縺肴鋤縺� |
| | 571 | $('.SBSelectedPath').html(resultText); |
| | 572 | |
| | 573 | // 繧オ繝シ繝悶Ξ繝�ヨ縺ォ騾√j霑斐☆繝代せ繧ェ繝悶ず繧ァ繧ッ繝医r菫晏ュ� |
| | 574 | pathobj = d.path; |
| | 575 | |
| | 576 | // 繝代せ陦ィ遉コ鬆伜沺縺ョ陦ィ遉コ險ュ螳壹rvisivle縺ォ |
| | 577 | $('.SBPath').css('overflow-y', 'visible'); |
| | 578 | |
| | 579 | // 繝代せ蜀�ョケ縺ョ鬮倥&縺後ヱ繧ケ陦ィ遉コ鬆伜沺繧定カ�∴縺ヲ縺�◆繧� |
| | 580 | if($('.SBPath').height() < $('.SBSelectedPath').innerHeight()){ |
| | 581 | // 繝代せ陦ィ遉コ鬆伜沺縺ョ陦ィ遉コ險ュ螳壹r繧ケ繧ッ繝ュ繝シ繝ォ縺ォ |
| | 582 | $('.SBPath').css('overflow-y', 'scroll'); |
| | 583 | } |
| | 584 | } |
| | 585 | |
| | 586 | // 繧ェ繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨�鬮倥&縺ォ隕ェ繧貞粋繧上○繧九◆繧√↓蜷医o縺帙k鬮倥&繧剃ソ晏ュ� |
| | 587 | var movey = d.y; |
| | 588 | |
| | 589 | // 蜷�ヮ繝シ繝峨↓蟇セ縺� |
| | 590 | node |
| | 591 | // 霈ェ驛ュ邱壹�濶イ繧定ィュ螳� |
| | 592 | .style("stroke", function(d){ |
| | 593 | // 縺セ縺壹�閭梧勹濶イ�医ョ繝輔か繝ォ繝茨シ峨r謖�ョ� |
| | 594 | var strokecolor = "#fafafa"; |
| | 595 | |
| | 596 | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i |
| | 597 | for(var n = 0; n < path.length; n++){ |
| | 598 | // 繝代せ蜀�↓蜷ォ縺セ繧後k繝弱�繝峨□縺」縺溘i |
| | 599 | if(path[n] == d.nodeid){ |
| | 600 | // 霈ェ驛ュ邱壹r襍、縺ォ |
| | 601 | strokecolor = "#ffaaaa"; |
| | 602 | } |
| | 603 | } |
| | 604 | |
| | 605 | // 縺薙%縺セ縺ァ縺ァ蠕励i繧後◆霈ェ驛ュ邱壹�濶イ繧定ソ斐☆ |
| | 606 | return strokecolor; |
| | 607 | }) |
| | 608 | // 鬮倥&縺ョ蛟、 |
| | 609 | .attr("cy", function(d){ |
| | 610 | |
| | 611 | // 迴セ蝨ィ縺ョ鬮倥&繧貞叙蠕� |
| | 612 | var currenty = d.y |
| | 613 | |
| | 614 | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i |
| | 615 | for(var n = 0; n < path.length; n++){ |
| | 616 | // 繝代せ蜀�↓蜷ォ縺セ繧後k繝弱�繝峨□縺」縺溘i |
| | 617 | if(path[n] == d.nodeid){ |
| | 618 | // 蜀�Κ縺ァ謖√▽鬮倥&繧偵が繝ウ繝槭え繧ケ縺輔l縺溘ヮ繝シ繝峨→蜷後§縺ォ�亥�謠冗判譎ゅ↓蜿肴丐�� |
| | 619 | d.y = movey; |
| | 620 | } |
| | 621 | } |
| | 622 | |
| | 623 | // 莉翫�迴セ譎らせ縺ョ鬮倥&繧定ソ斐☆ |
| | 624 | return currenty; |
| | 625 | }); |
| | 626 | |
| | 627 | // 蜷�Μ繝ウ繧ッ繝�く繧ケ繝医↓蟇セ縺� |
| | 628 | tlink |
| | 629 | // 繝�く繧ケ繝郁。ィ遉コ蛻、螳� |
| | 630 | .text(function(d) { |
| | 631 | // 繝�ヵ繧ゥ繝ォ繝医〒遨コ繧偵そ繝�ヨ |
| | 632 | var linktext = ""; |
| | 633 | |
| | 634 | // 繝代せ縺ョ繝弱�繝画焚縺縺醍ケー繧願ソ斐@縺ェ縺後i |
| | 635 | for(var t = 0; t < path.length; t++){ |
| | 636 | // 閾ェ霄ォ縺後◎縺ョ繝弱�繝峨∈謗・邯壹@縺ヲ縺�k繝ェ繝ウ繧ッ縺ェ繧峨� |
| | 637 | if(path[t] == d.target){ |
| | 638 | // 繝ェ繝ウ繧ッ繝�く繧ケ繝医↓繝励Ο繝代ユ繧」縺ョ蛟、繧偵そ繝�ヨ |
| | 639 | linktext = d.property |
| | 640 | } |
| | 641 | } |
| | 642 | |
| | 643 | // 縺薙%縺セ縺ァ縺ァ縺ァ縺阪◆繝ェ繝ウ繧ッ繝�く繧ケ繝医r霑斐☆ |
| | 644 | return linktext; |
| | 645 | }); |