From 5d995115babc03b5a476b046e8117db5f0f1e935 Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Mon, 1 Nov 2021 12:40:22 +0100 Subject: [PATCH] visgraph: only addEdge for person to person --- .../Resources/public/vuejs/VisGraph/i18n.js | 2 +- .../Resources/public/vuejs/VisGraph/store.js | 4 +-- .../public/vuejs/VisGraph/vis-network.js | 31 ++++++++++++++++--- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/i18n.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/i18n.js index 5b408e209..609299cfe 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/i18n.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/i18n.js @@ -20,7 +20,7 @@ const visMessages = { editNode: 'Éditer un noeuds', editEdge: 'Éditer un lien', addDescription: 'Cliquez dans un espace vide pour créer un nouveau nœud.', - edgeDescription: 'Cliquez sur un nœud et faites glisser le lien vers un autre nœud pour les connecter.', + edgeDescription: 'Cliquez sur un usager et faites glisser le lien vers un autre usager pour les connecter.', editEdgeDescription: 'Cliquez sur les points de contrôle et faites-les glisser vers un nœud pour les relier.', createEdgeError: 'Il est impossible de relier des arêtes à un cluster.', deleteClusterError: 'Les clusters ne peuvent pas être supprimés.', diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/store.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/store.js index 066b7c1dc..772af6630 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/store.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/store.js @@ -1,6 +1,6 @@ import { createStore } from 'vuex' import { getHouseholdByPerson, getCoursesByPerson, getRelationshipsByPerson } from './api' -import { adapt2vis, getHouseholdLabel, getHouseholdWidth, getRelationshipLabel, getRelationshipTitle } from './vis-network' +import { adapt2vis, getHouseholdLabel, getHouseholdWidth, getRelationshipLabel, getRelationshipTitle, splitId } from './vis-network' const debug = process.env.NODE_ENV !== 'production' @@ -235,7 +235,7 @@ const store = createStore({ commit('addLink', { from: `${p.person.type}_${p.person.id}`, to: `${course.id}`, - id: `p${p.person.id}-c`+ course.id.split('_')[2], + id: `p${p.person.id}-c`+ splitId(course.id,'id'), arrows: 'from', color: 'orange', font: { color: 'darkorange' }, diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/vis-network.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/vis-network.js index 086608e19..b13f9ac32 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/vis-network.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/vis-network.js @@ -100,9 +100,14 @@ window.options = { callback(nodeData) }, addEdge: function(edgeData, callback) { - console.log('addEdge', edgeData) - callback(edgeData) - eventHub.emit('add-relationship-link', edgeData) + if ( + splitId(edgeData.from,'type') === 'person' + && splitId(edgeData.to,'type') === 'person' + ) { + console.log('addEdge', edgeData) + eventHub.emit('add-relationship-link', edgeData) + callback(edgeData) + } }, editEdge: function(edgeData, callback) { console.log('editNode', edgeData) @@ -309,10 +314,28 @@ const getRelationshipTitle = (relationship) => { + relationship.toPerson.text } +/** + * Split string id and return type|id substring + * @param id + * @param position + * @returns string + */ +const splitId = (id, position) => { + switch (position) { + case 'type': + return /(.+)_/.exec(id)[1] // return 'accompanying_period' + case 'id': + return id.split("_").pop() // return '124' + default: + throw 'position undefined' + } +} + export { adapt2vis, getHouseholdLabel, getHouseholdWidth, getRelationshipLabel, - getRelationshipTitle + getRelationshipTitle, + splitId }