add toggle button to show/add remote and ranges for each user in calendar

This commit is contained in:
Julien Fastré 2022-05-20 20:40:24 +02:00
parent 2b770036a5
commit 461fc1c41f
5 changed files with 75 additions and 20 deletions

View File

@ -1,5 +1,15 @@
<template> <template>
<span class="badge" :style="style">{{ user.text }}</span> <span class="badge" :style="style">
{{ user.text }}
<span class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="flexSwitchCheckDefault" v-model="rangeShow">
<label class="form-check-label" for="flexSwitchCheckDefault">Disponibilité</label>
</span>
<span class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="flexSwitchCheckDefault" v-model="remoteShow">
<label class="form-check-label" for="flexSwitchCheckDefault">Agenda</label>
</span>
</span>
</template> </template>
<script> <script>
@ -14,17 +24,22 @@ export default {
backgroundColor: this.$store.getters.getUserData(this.user).mainColor, backgroundColor: this.$store.getters.getUserData(this.user).mainColor,
}; };
}, },
mainColor() { rangeShow: {
return 'blue'; set (value) {
console.log('mainColor userId', this.userId); this.$store.commit('showUserOnCalendar', {user: this.user, ranges: value});
console.log(this.$store.state.usersData); },
get() {
if (!this.$store.getters.hasUserDataById(this.userId)) { return this.$store.getters.isRangeShownOnCalendarForUser(this.user);
return 'blue';
} }
},
return this.$store.getters.getUserDataById(this.userId).mainColor; remoteShow: {
set (value) {
this.$store.commit('showUserOnCalendar', {user: this.user, remote: value});
},
get() {
return this.$store.getters.isRemoteShownOnCalendarForUser(this.user);
} }
},
} }
} }
</script> </script>

View File

@ -37,7 +37,7 @@ export default {
}); });
} }
}, },
addPersonsInvolved({ commit }, payload) { addPersonsInvolved({ commit, dispatch }, payload) {
console.log('### action addPersonsInvolved', payload.result.type); console.log('### action addPersonsInvolved', payload.result.type);
switch (payload.result.type) { switch (payload.result.type) {
case 'person': case 'person':
@ -49,8 +49,10 @@ export default {
aThirdParties.value = addIdToValue(aThirdParties.value, payload.result.id); aThirdParties.value = addIdToValue(aThirdParties.value, payload.result.id);
break; break;
case 'user': case 'user':
let aUsers = document.getElementById("chill_activitybundle_activity_invites"); let aUsers = document.getElementById("chill_activitybundle_activity_users");
aUsers.value = addIdToValue(aUsers.value, payload.result.id); aUsers.value = addIdToValue(aUsers.value, payload.result.id);
commit('showUserOnCalendar', {user: payload.result, ranges: false, remote: true});
dispatch('fetchCalendarEvents');
break; break;
}; };
commit('addPersonsInvolved', payload); commit('addPersonsInvolved', payload);

View File

@ -45,10 +45,10 @@ export default {
console.log('userData', userData); console.log('userData', userData);
if (kinds.includes(USER_CALENDAR_SHOW_RANGES) && userData.calendarRanges.length > 0) { if (kinds.ranges && userData.calendarRanges.length > 0) {
console.log('adding ranges for user', userId); console.log('adding ranges for user', userId);
const s = { const s = {
//'id': `ranges_${userId}`, 'id': `ranges_${userId}`,
events: userData.calendarRanges, events: userData.calendarRanges,
color: userData.mainColor, color: userData.mainColor,
backgroundColor: 'white', backgroundColor: 'white',
@ -113,7 +113,38 @@ export default {
return false; return false;
}, },
/**
* return true if the user ranges are shown on calendar
*
* @param state
* @returns boolean
*/
isRangeShownOnCalendarForUser: (state) => (user) => {
console.log(user);
const k = state.currentView.users.get(user.id);
if (typeof k === 'undefined') {
console.error('try to determinate if calendar range is shown and user is not in currentView');
return false;
}
console.log('k', k);
return k.ranges;
},
/**
* return true if the user remote is shown on calendar
* @param state
* @returns boolean
*/
isRemoteShownOnCalendarForUser: (state) => (user) => {
const k = state.currentView.users.get(user.id);
if (typeof k === 'undefined') {
console.error('try to determinate if calendar range is shown and user is not in currentView');
return false;
}
return k.remote;
},
suggestedEntities(state, getters) { suggestedEntities(state, getters) {

View File

@ -55,7 +55,7 @@ whoami().then(me => {
}); });
if (null !== store.getters.getMainUser) { if (null !== store.getters.getMainUser) {
store.commit('showUserOnCalendar', {what: [USER_CALENDAR_SHOW_RANGES], user: store.getters.getMainUser}); store.commit('showUserOnCalendar', {ranges: true, remote: true, user: store.getters.getMainUser});
} }
export default store; export default store;

View File

@ -8,13 +8,20 @@ export default {
state.currentView.start = start; state.currentView.start = start;
state.currentView.end = end; state.currentView.end = end;
}, },
showUserOnCalendar(state, {user, what}) { showUserOnCalendar(state, {user, ranges, remote}) {
console.log('showUserOnCalendar', {user: user.id, what});
if (!state.usersData.has(user.id)) { if (!state.usersData.has(user.id)) {
state.usersData.set(user.id, createUserData(user, state.usersData.size)); state.usersData.set(user.id, createUserData(user, state.usersData.size));
} }
state.currentView.users.set(user.id, what);
console.log('state at end', state); const cur = state.currentView.users.get(user.id);
state.currentView.users.set(
user.id,
{
ranges: typeof ranges !== 'undefined' ? ranges : cur.ranges,
remote: typeof remote !== 'undefined' ? remote : cur.remote,
}
);
}, },
// ConcernedGroups // ConcernedGroups