diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue
index b06d51518..472bb525b 100644
--- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue
+++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue
@@ -105,6 +105,7 @@
{{ arg.event.title}}
{{ arg.timeText }} {{ arg.event.extendedProps.locationName }} {{ arg.event.extendedProps.userLabel }}
{{ arg.timeText }} {{ $t('current_selected')}}
+ {{ arg.event.title}}
{{ arg.timeText }} {{ $t('current_selected')}}
diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/actions.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/actions.js
index fc3d6547a..1568944db 100644
--- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/actions.js
+++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/actions.js
@@ -5,6 +5,7 @@ import {
import {
fetchCalendarRangeForUser,
fetchCalendarRemoteForUser,
+ fetchCalendarLocalForUser,
} from './../api';
import {datetimeToISO} from 'ChillMainAssets/chill/js/date';
import {postLocation} from 'ChillActivityAssets/vuejs/Activity/api';
@@ -56,6 +57,12 @@ export default {
{user: state.usersData.get(uid).user, start: state.currentView.start, end: state.currentView.end}
)
);
+ promises.push(
+ dispatch(
+ 'fetchCalendarLocalsForUser',
+ {user: state.usersData.get(uid).user, start: state.currentView.start, end: state.currentView.end}
+ )
+ );
}
return Promise.all(promises);
@@ -78,6 +85,15 @@ export default {
});
}
},
+ fetchCalendarLocalsForUser({commit, getters}, {user, start, end}) {
+ if (!getters.isCalendarRemoteLoadedForUser({user, start, end})) {
+ return fetchCalendarLocalForUser(user, start, end).then((locals) => {
+ commit('addCalendarLocalsForUser', {user, locals, start, end});
+
+ return Promise.resolve();
+ });
+ }
+ },
addPersonsInvolved({commit, dispatch}, payload) {
console.log('### action addPersonsInvolved', payload.result.type);
console.log('### action addPersonsInvolved payload result', payload.result);
diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/getters.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/getters.js
index b2b38e2ab..b9d9b6a82 100644
--- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/getters.js
+++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/getters.js
@@ -1,5 +1,3 @@
-import {calendarRangeToFullCalendarEvent} from './utils';
-
export default {
/**
* get the main user of the event/Calendar
@@ -85,6 +83,19 @@ export default {
sources.push(s);
}
+
+ // if remotes is checked, we display also the locals calendars
+ if (kinds.remotes && userData.locals.length > 0) {
+ const s = {
+ 'id': `local_${userId}`,
+ events: userData.locals.filter(l => l.originId !== state.activity.id),
+ color: userData.mainColor,
+ textColor: 'black',
+ editable: false,
+ };
+
+ sources.push(s);
+ }
}
return sources;
diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/mutations.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/mutations.js
index 8fd73d1d0..c956b0d87 100644
--- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/mutations.js
+++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/mutations.js
@@ -2,6 +2,7 @@ import {
createUserData,
calendarRangeToFullCalendarEvent,
remoteToFullCalendarEvent,
+ localsToFullCalendarEvent,
} from './utils';
export default {
@@ -162,6 +163,27 @@ export default {
userData.remotes = userData.remotes.concat(eventRemotes);
userData.remotesLoaded.push({start, end});
},
+ addCalendarLocalsForUser(state, {user, locals, start, end}) {
+ let userData;
+ if (state.usersData.has(user.id)) {
+ userData = state.usersData.get(user.id);
+ } else {
+ userData = createUserData(user, state.usersData.size);
+ state.usersData.set(user.id, userData);
+ }
+
+ const eventRemotes = locals
+ .filter(r => !state.existingEvents.has(`locals_${r.id}`))
+ .map(r => {
+ // add to existing ids
+ state.existingEvents.add(`locals_${r.id}`);
+ return r;
+ })
+ .map(r => localsToFullCalendarEvent(r));
+
+ userData.locals = userData.locals.concat(eventRemotes);
+ userData.localsLoaded.push({start, end});
+ },
// Location
updateLocation(state, value) {
console.log('### mutation: updateLocation', value);
diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.ts b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.ts
index a446a7ebd..61259a984 100644
--- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.ts
+++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store/utils.ts
@@ -11,6 +11,8 @@ export interface UserData {
calendarRangesLoaded: {}[],
remotes: CalendarRemote[],
remotesLoaded: {}[],
+ locals: CalendarRemote[],
+ localsLoaded: {}[],
mainColor: string,
}
@@ -59,6 +61,8 @@ export const createUserData = (user: User, colorIndex: number): UserData => {
calendarRangesLoaded: [],
remotes: [],
remotesLoaded: [],
+ locals: [],
+ localsLoaded: [],
mainColor: COLORS[colorId],
}
}
@@ -91,10 +95,11 @@ export const remoteToFullCalendarEvent = (entity: CalendarRemote): EventInput &
};
}
-export const localsToFullCalendarEvent = (entity: CalendarLight): EventInput & {id: string} => {
+export const localsToFullCalendarEvent = (entity: CalendarLight): EventInput & {id: string; originId: number;} => {
return {
id: `local_${entity.id}`,
title: entity.persons.map(p => p.text).join(', '),
+ originId: entity.id,
start: entity.startDate.datetime8601,
end: entity.endDate.datetime8601,
allDay: false,