From d6135641c563cd8b08632ecbaeb6595263e7eccf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Sun, 22 Aug 2021 00:50:37 +0200 Subject: [PATCH] add a list of suggested persons on activity --- .../Activity/components/ConcernedGroups.vue | 77 +++-- .../Resources/public/vuejs/Activity/store.js | 312 +++++++++--------- 2 files changed, 207 insertions(+), 182 deletions(-) diff --git a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue index 05b7dd218..1cbd299dc 100644 --- a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue +++ b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue @@ -2,7 +2,7 @@
-
- +
    +
  • + {{ p.text }} +
  • +
+ + + - -
+ + diff --git a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js index c87573797..952cb5b25 100644 --- a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js +++ b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js @@ -5,165 +5,175 @@ const debug = process.env.NODE_ENV !== 'production'; //console.log('window.activity', window.activity); const addIdToValue = (string, id) => { - let array = string ? string.split(',') : []; - array.push(id.toString()); - let str = array.join(); - return str; + let array = string ? string.split(',') : []; + array.push(id.toString()); + let str = array.join(); + return str; }; const removeIdFromValue = (string, id) => { - let array = string.split(','); - array = array.filter(el => el !== id.toString()); - let str = array.join(); - return str; + let array = string.split(','); + array = array.filter(el => el !== id.toString()); + let str = array.join(); + return str; }; const store = createStore({ - strict: debug, - state: { - activity: window.activity, - socialIssuesOther: [], - socialActionsList: [], - }, - mutations: { - - // SocialIssueAcc - addIssueInList(state, issue) { - //console.log('add issue list', issue.id); - state.activity.accompanyingPeriod.socialIssues.push(issue); - }, - addIssueSelected(state, issue) { - //console.log('add issue selected', issue.id); - state.activity.socialIssues.push(issue); - }, - updateIssuesSelected(state, issues) { - //console.log('update issues selected', issues); - state.activity.socialIssues = issues; - }, - updateIssuesOther(state, payload) { - //console.log('update issues other'); - state.socialIssuesOther = payload; - }, - removeIssueInOther(state, issue) { - //console.log('remove issue other', issue.id); - state.socialIssuesOther = state.socialIssuesOther.filter(i => i.id !== issue.id); - }, - resetActionsList(state) { - //console.log('reset list actions'); - state.socialActionsList = []; - }, - addActionInList(state, action) { - //console.log('add action list', action.id); - state.socialActionsList.push(action); - }, - updateActionsSelected(state, actions) { - //console.log('update actions selected', actions); - state.activity.socialActions = actions; - }, - filterList(state, list) { - const filterList = (list) => { - // remove duplicates entries - list = list.filter((value, index) => list.findIndex(array => array.id === value.id) === index); - // alpha sort - list.sort((a,b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0)); - return list; - }; - if (list === 'issues') { - state.activity.accompanyingPeriod.socialIssues = filterList(state.activity.accompanyingPeriod.socialIssues); - } - if (list === 'actions') { - state.socialActionsList = filterList(state.socialActionsList); - } - }, - - // ConcernedGroups - addPersonsInvolved(state, payload) { - //console.log('### mutation addPersonsInvolved', payload.result.type); - switch (payload.result.type) { - case 'person': - state.activity.persons.push(payload.result); - break; - case 'thirdparty': - state.activity.thirdParties.push(payload.result); - break; - case 'user': - state.activity.users.push(payload.result); - break; - }; - }, - removePersonInvolved(state, payload) { - //console.log('### mutation removePersonInvolved', payload.type); - switch (payload.type) { - case 'person': - state.activity.persons = state.activity.persons.filter(person => person !== payload); - break; - case 'thirdparty': - state.activity.thirdParties = state.activity.thirdParties.filter(thirdparty => thirdparty !== payload); - break; - case 'user': - state.activity.users = state.activity.users.filter(user => user !== payload); - break; - }; + strict: debug, + state: { + activity: window.activity, + socialIssuesOther: [], + socialActionsList: [], + }, + getters: { + filterSuggestedPersons(state) { + if (typeof(state.activity.accompanyingPeriod) === 'undefined') { + return []; } - }, - actions: { - addIssueSelected({ commit }, issue) { - let aSocialIssues = document.getElementById("chill_activitybundle_activity_socialIssues"); - aSocialIssues.value = addIdToValue(aSocialIssues.value, issue.id); - commit('addIssueSelected', issue); - }, - updateIssuesSelected({ commit }, payload) { - let aSocialIssues = document.getElementById("chill_activitybundle_activity_socialIssues"); - aSocialIssues.value = ''; - payload.forEach(item => { - aSocialIssues.value = addIdToValue(aSocialIssues.value, item.id); - }); - commit('updateIssuesSelected', payload); - }, - updateActionsSelected({ commit }, payload) { - let aSocialActions = document.getElementById("chill_activitybundle_activity_socialActions"); - aSocialActions.value = ''; - payload.forEach(item => { - aSocialActions.value = addIdToValue(aSocialActions.value, item.id); - }); - commit('updateActionsSelected', payload); - }, - addPersonsInvolved({ commit }, payload) { - //console.log('### action addPersonsInvolved', payload.result.type); - switch (payload.result.type) { - case 'person': - let aPersons = document.getElementById("chill_activitybundle_activity_persons"); - aPersons.value = addIdToValue(aPersons.value, payload.result.id); - break; - case 'thirdparty': - let aThirdParties = document.getElementById("chill_activitybundle_activity_thirdParties"); - aThirdParties.value = addIdToValue(aThirdParties.value, payload.result.id); - break; - case 'user': - let aUsers = document.getElementById("chill_activitybundle_activity_users"); - aUsers.value = addIdToValue(aUsers.value, payload.result.id); - break; - }; - commit('addPersonsInvolved', payload); - }, - removePersonInvolved({ commit }, payload) { - //console.log('### action removePersonInvolved', payload); - switch (payload.type) { - case 'person': - let aPersons = document.getElementById("chill_activitybundle_activity_persons"); - aPersons.value = removeIdFromValue(aPersons.value, payload.id); - break; - case 'thirdparty': - let aThirdParties = document.getElementById("chill_activitybundle_activity_thirdParties"); - aThirdParties.value = removeIdFromValue(aThirdParties.value, payload.id); - break; - case 'user': - let aUsers = document.getElementById("chill_activitybundle_activity_users"); - aUsers.value = removeIdFromValue(aUsers.value, payload.id); - break; - }; - commit('removePersonInvolved', payload); + let existingPersonIds = state.activity.persons.map(p => p.id); + return state.activity.accompanyingPeriod.participations.filter(p => p.endDate === null) + .map(p => p.person) + .filter(p => !existingPersonIds.includes(p.id)) + } + }, + mutations: { + // SocialIssueAcc + addIssueInList(state, issue) { + //console.log('add issue list', issue.id); + state.activity.accompanyingPeriod.socialIssues.push(issue); + }, + addIssueSelected(state, issue) { + //console.log('add issue selected', issue.id); + state.activity.socialIssues.push(issue); + }, + updateIssuesSelected(state, issues) { + //console.log('update issues selected', issues); + state.activity.socialIssues = issues; + }, + updateIssuesOther(state, payload) { + //console.log('update issues other'); + state.socialIssuesOther = payload; + }, + removeIssueInOther(state, issue) { + //console.log('remove issue other', issue.id); + state.socialIssuesOther = state.socialIssuesOther.filter(i => i.id !== issue.id); + }, + resetActionsList(state) { + //console.log('reset list actions'); + state.socialActionsList = []; + }, + addActionInList(state, action) { + //console.log('add action list', action.id); + state.socialActionsList.push(action); + }, + updateActionsSelected(state, actions) { + //console.log('update actions selected', actions); + state.activity.socialActions = actions; + }, + filterList(state, list) { + const filterList = (list) => { + // remove duplicates entries + list = list.filter((value, index) => list.findIndex(array => array.id === value.id) === index); + // alpha sort + list.sort((a,b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0)); + return list; + }; + if (list === 'issues') { + state.activity.accompanyingPeriod.socialIssues = filterList(state.activity.accompanyingPeriod.socialIssues); } + if (list === 'actions') { + state.socialActionsList = filterList(state.socialActionsList); + } + }, + + // ConcernedGroups + addPersonsInvolved(state, payload) { + //console.log('### mutation addPersonsInvolved', payload.result.type); + switch (payload.result.type) { + case 'person': + state.activity.persons.push(payload.result); + break; + case 'thirdparty': + state.activity.thirdParties.push(payload.result); + break; + case 'user': + state.activity.users.push(payload.result); + break; + }; + }, + removePersonInvolved(state, payload) { + //console.log('### mutation removePersonInvolved', payload.type); + switch (payload.type) { + case 'person': + state.activity.persons = state.activity.persons.filter(person => person !== payload); + break; + case 'thirdparty': + state.activity.thirdParties = state.activity.thirdParties.filter(thirdparty => thirdparty !== payload); + break; + case 'user': + state.activity.users = state.activity.users.filter(user => user !== payload); + break; + }; + } + }, + actions: { + addIssueSelected({ commit }, issue) { + let aSocialIssues = document.getElementById("chill_activitybundle_activity_socialIssues"); + aSocialIssues.value = addIdToValue(aSocialIssues.value, issue.id); + commit('addIssueSelected', issue); + }, + updateIssuesSelected({ commit }, payload) { + let aSocialIssues = document.getElementById("chill_activitybundle_activity_socialIssues"); + aSocialIssues.value = ''; + payload.forEach(item => { + aSocialIssues.value = addIdToValue(aSocialIssues.value, item.id); + }); + commit('updateIssuesSelected', payload); + }, + updateActionsSelected({ commit }, payload) { + let aSocialActions = document.getElementById("chill_activitybundle_activity_socialActions"); + aSocialActions.value = ''; + payload.forEach(item => { + aSocialActions.value = addIdToValue(aSocialActions.value, item.id); + }); + commit('updateActionsSelected', payload); + }, + addPersonsInvolved({ commit }, payload) { + //console.log('### action addPersonsInvolved', payload.result.type); + switch (payload.result.type) { + case 'person': + let aPersons = document.getElementById("chill_activitybundle_activity_persons"); + aPersons.value = addIdToValue(aPersons.value, payload.result.id); + break; + case 'thirdparty': + let aThirdParties = document.getElementById("chill_activitybundle_activity_thirdParties"); + aThirdParties.value = addIdToValue(aThirdParties.value, payload.result.id); + break; + case 'user': + let aUsers = document.getElementById("chill_activitybundle_activity_users"); + aUsers.value = addIdToValue(aUsers.value, payload.result.id); + break; + }; + commit('addPersonsInvolved', payload); + }, + removePersonInvolved({ commit }, payload) { + //console.log('### action removePersonInvolved', payload); + switch (payload.type) { + case 'person': + let aPersons = document.getElementById("chill_activitybundle_activity_persons"); + aPersons.value = removeIdFromValue(aPersons.value, payload.id); + break; + case 'thirdparty': + let aThirdParties = document.getElementById("chill_activitybundle_activity_thirdParties"); + aThirdParties.value = removeIdFromValue(aThirdParties.value, payload.id); + break; + case 'user': + let aUsers = document.getElementById("chill_activitybundle_activity_users"); + aUsers.value = removeIdFromValue(aUsers.value, payload.id); + break; + }; + commit('removePersonInvolved', payload); + } } });