import 'es6-promise/auto'; import { createStore } from 'vuex'; const debug = process.env.NODE_ENV !== 'production'; const addIdToValue = (string, id) => { 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; }; /* * Assign missing keys for the ConcernedGroups component */ const mapEntity = (entity) => { Object.assign(entity, {thirdParties: entity.professionals, users: entity.invites}); return entity; }; const store = createStore({ strict: debug, state: { activity: mapEntity(window.entity), }, mutations: { // 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: { addPersonsInvolved({ commit }, payload) { console.log('### action addPersonsInvolved', payload.result.type); switch (payload.result.type) { case 'person': let aPersons = document.getElementById("chill_calendarbundle_calendar_persons"); aPersons.value = addIdToValue(aPersons.value, payload.result.id); break; case 'thirdparty': let aThirdParties = document.getElementById("chill_calendarbundle_calendar_professionals"); aThirdParties.value = addIdToValue(aThirdParties.value, payload.result.id); break; case 'user': let aUsers = document.getElementById("chill_calendarbundle_calendar_invites"); 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_calendarbundle_calendar_persons"); aPersons.value = removeIdFromValue(aPersons.value, payload.id); break; case 'thirdparty': let aThirdParties = document.getElementById("chill_calendarbundle_calendar_professionals"); aThirdParties.value = removeIdFromValue(aThirdParties.value, payload.id); break; case 'user': let aUsers = document.getElementById("chill_calendarbundle_calendar_invites"); aUsers.value = removeIdFromValue(aUsers.value, payload.id); break; }; commit('removePersonInvolved', payload); } } }); export default store;