diff --git a/background.jpg b/backgrounds/background.jpg similarity index 100% rename from background.jpg rename to backgrounds/background.jpg diff --git a/background_2.jpg b/backgrounds/background_2.jpg similarity index 100% rename from background_2.jpg rename to backgrounds/background_2.jpg diff --git a/backgrounds/background_3.jpg b/backgrounds/background_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a858a84a145e3d843c64d98d1cc85def10def405 Binary files /dev/null and b/backgrounds/background_3.jpg differ diff --git a/graph.js b/graph.js index aa209743a2c5bd51e55c7348577308f4ebd54e39..dc39b0d00fb14f5944ce26e511c1b0563b7b201c 100644 --- a/graph.js +++ b/graph.js @@ -4,6 +4,10 @@ let hoverNode = null; let Graph = null; let firstTick = true; +const colorPallette = ['rgb(104, 169, 77)', 'rgb(102, 75, 154)', 'rgb(41, 171, 226)', 'rgb(224, 133, 35)', + 'rgb(214, 207, 126)', 'rgb(239, 65, 35)', 'rgb(255, 255, 255)']; +const edgeColors = {}; + loadGraph(); async function loadGraph() { @@ -19,12 +23,15 @@ async function loadGraph() { .onNodeClick(focusOnNode) .onNodeHover(nodeHover) .onLinkHover(linkHover) + .linkColor(linkColor) + .linkOpacity(0.8) .onEngineTick(loadComponents); } function loadComponents() { if (firstTick) { + mapEdgeColors(); updateLinks(); add_background(); drawOverlay(); @@ -32,6 +39,13 @@ function loadComponents() { } } +function mapEdgeColors() { + const linkClasses = getLinkClasses() + for (let i = 0; i < linkClasses.length; i++) { + edgeColors[linkClasses[i]] = colorPallette[i % colorPallette.length] + } +} + function getLinkClasses() { const linkClasses = []; @@ -47,20 +61,19 @@ function drawOverlay() { //overlayNode.innerText = 'Hello there!'; sceneNode.insertBefore(overlayNode, sceneNode.childNodes[2]) - const colorPallette = ['rgb(104, 169, 77)', 'rgb(102, 75, 154)', 'rgb(41, 171, 226)', 'rgb(224, 133, 35)', - 'rgb(214, 207, 126)', 'rgb(239, 65, 35)', 'rgb(255, 255, 255)']; const linkClasses = getLinkClasses(); + const chars = Math.max.apply(Math, linkClasses.map(function (c) { return c.length; })); for (let i=0; i<linkClasses.length; i++) { const relation = document.createElement('div'); relation.className = 'relation'; relation.innerHTML = "<p>" + linkClasses[i] + "</p>"; - overlayNode.appendChild(relation) + overlayNode.appendChild(relation); const colorStrip = document.createElement('div'); colorStrip.className = 'rel-container'; - colorStrip.style = "background-color: " + colorPallette[i] + ";" - relation.appendChild(colorStrip) + colorStrip.style = "background-color: " + edgeColors[linkClasses[i]] + "; width: " + 10 * chars + "px;"; + relation.appendChild(colorStrip); } //sceneNode.appendChild(overlayNode); @@ -73,7 +86,7 @@ function add_background() { //const planeGeometry = new THREE.PlaneGeometry(1000, 1000, 1, 1); const loader = new THREE.TextureLoader(); //const planeMaterial = new THREE.MeshLambertMaterial({color: 0xFF0000, side: THREE.DoubleSide}); //THREE.BackSide - const planeMaterial = new THREE.MeshBasicMaterial({map: loader.load(plugin_path + 'background_2.jpg'), side: THREE.DoubleSide}); //THREE.BackSide + const planeMaterial = new THREE.MeshBasicMaterial({map: loader.load(plugin_path + 'backgrounds/background_3.jpg'), side: THREE.DoubleSide}); //THREE.BackSide const mesh = new THREE.Mesh(sphereGeometry, planeMaterial); mesh.position.set(0, 0, 0); //mesh.rotation.set(0.5 * Math.PI, 0, 0); @@ -146,6 +159,13 @@ function linkHover(link) { updateHighlight(); } +function linkColor(link) { + if ('type' in link) { + return edgeColors[link.type] + } + return 'rgb(255, 255, 255)' +} + function updateHighlight() { // trigger update of highlighted objects in scene diff --git a/kg-style.css b/kg-style.css index 39eeb42867ec37decf9842edb62399d102634370..d890f6cd40454687f1863d0453c7fe315a7d6fef 100644 --- a/kg-style.css +++ b/kg-style.css @@ -7,8 +7,8 @@ bottom: 0; pointer-events: none; width: 350px; + max-width: 400px; padding-left: 10px; - text-align: center; left: 0px; display: block; background-color: rgba(0,0,0,.6); @@ -17,15 +17,13 @@ .relation { display: inline-block; - padding-right: 1px; + padding-right: 5px; color: #fff; font-size: 13px; line-height: 20px; font-family: CuratorRegular,Helvetica Neue,Helvetica,Arial,sans-serif; text-transform: uppercase; margin-bottom: 6px; - width: 24%; - float: none; height: 17px; }