From bd5c6d5b779159692171ebd1c1c5dc1c64ebb682 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 25 May 2019 10:50:58 -0400 Subject: [PATCH] Bug fix --- music_graph/src/MusicGraph.js | 40 +++++++++++++------------------- music_graph/src/MusicGraphApi.js | 4 +--- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/music_graph/src/MusicGraph.js b/music_graph/src/MusicGraph.js index 948cccd..8fe6d5b 100644 --- a/music_graph/src/MusicGraph.js +++ b/music_graph/src/MusicGraph.js @@ -113,10 +113,9 @@ export function MusicGraph(data) { } this.nodeHover = (d) => { - this._data.hoverArtist = d - let srcLinks = this.links.filter(link => link.source.id === d.id) let targetLinks = this.links.filter(link => link.target.id === d.id) + this._data.hoverLinks = srcLinks.map(l => { return { match: (l.weight * 100).toFixed(2) + '%', @@ -144,6 +143,10 @@ export function MusicGraph(data) { n.id === d.id) this.node.classed('hover', n => n.id === d.id) + + if (d.type === 'Group' && d.type === 'Artist') { + this._data.hoverArtist = d + } } this.nodeOut = () => { @@ -155,11 +158,11 @@ export function MusicGraph(data) { } this.makeMenu = function (d) { - // Todo global const? - const items = [] + let items = [] + let i = 0 if (!d.membersExpanded) { items.push({ - idx: 3, + idx: i++, icon: icons.guitar, title: 'Members', fn: (d) => { @@ -173,7 +176,7 @@ export function MusicGraph(data) { } if (!d.relatedExpanded) { items.push({ - idx: 0, + idx: i++, icon: icons.expand, title: 'Related', fn: (d) => { @@ -191,7 +194,7 @@ export function MusicGraph(data) { } if (!d.releasesExpanded) { items.push({ - idx: 1, + idx: i++, icon: icons.release, title: 'Releases', fn: (d) => { @@ -208,7 +211,7 @@ export function MusicGraph(data) { } if (!d.tagsExpanded) { items.push({ - idx: 2, + idx: i++, icon: icons.hash, title: 'Tags', fn: (d) => { @@ -224,7 +227,7 @@ export function MusicGraph(data) { }) } items.push({ - idx: 4, + idx: i, icon: icons.delete, title: 'Remove from graph', fn: (d) => { @@ -415,8 +418,8 @@ export function MusicGraph(data) { this.link = this.link .enter() .append('line') - .classed('link', true) .merge(this.link) + .classed('link', true) // Add new nodes this.node = this.container.select('#nodes') @@ -427,6 +430,7 @@ export function MusicGraph(data) { this.node = this.node .enter() .append('circle') + .merge(this.node) .classed('node', true) .attr('r', d => d.radius) .attr('stroke', d => this._getNodeColor(d)) @@ -438,19 +442,18 @@ export function MusicGraph(data) { .on('mouseout', this.nodeOut) .on('dblclick', this.nodeDbClick) .on('contextmenu', this.nodeDbClick) - .merge(this.node) // Add new labels this.label = this.container.select('#labels') .selectAll('.label') .data(this.nodes) - this.label.exit().remove(0) + this.label.exit().remove() this.label = this.label .enter() .append('text') + .merge(this.label) .text(d => d.name) .classed('label', true) - .merge(this.label) } this.setupKeyBindings = function () { @@ -487,17 +490,6 @@ export function MusicGraph(data) { return null } - this._getNodeRadius = function (node) { - // Unused - } - - this.expandArtist = function (mbid) { - this.api.getRelatedByMbid(mbid) - .then(data => { - this.addNodes(data.newNodes, data.relations, data.node.id) - }) - } - this.addArtistByName = function (name) { this.api.getRelatedByName(name) .then(data => { diff --git a/music_graph/src/MusicGraphApi.js b/music_graph/src/MusicGraphApi.js index b14d71e..8176327 100644 --- a/music_graph/src/MusicGraphApi.js +++ b/music_graph/src/MusicGraphApi.js @@ -59,8 +59,6 @@ const nodeUtils = { export function MusicGraphApi() { this.url = window.location.protocol + '//' + window.location.hostname + '/api' - // TODO: rmv - this.url = 'http://localhost:3030' this.resolveCoverUrl = function (mbid) { return this.url + '/cover/' + mbid @@ -71,7 +69,7 @@ export function MusicGraphApi() { } this.getRelatedByName = function (name) { - return d3.json(this.url + '/artist/related_by_name/' + name) + return d3.json(this.url + '/artist/related_by_name/' + name.replace(/ /g, '+')) .then((r) => { return { node: nodeUtils.fromRawDict(r.artists.find(a => a.name === name)),