1313 v-model =" selectedTypeIds"
1414 />
1515 <span >{{ type.name }}</span >
16- <badge >{{ calendarsOfType(type.id) }}</badge >
16+ <badge >{{ calendarsOfType(type.id).length }}</badge >
1717 </label >
1818 </li >
1919 </ul >
3434 :disabled =" !inArray(calendar.typeId, selectedTypeIds)"
3535 />
3636 <span >{{ calendar.name }}</span >
37- <badge >{{ eventsOfCalendar(calendar.id) }}</badge >
37+ <badge >{{ eventsOfCalendar(calendar.id).length }}</badge >
3838 </label >
3939 </li >
4040 </ul >
4141 </fieldset >
4242 </toolbar >
4343 </aside >
4444 <main >
45- <feed :events =" displayedEvents" :selectedEventId =" selectedEventId" ></feed >
45+ <feed
46+ :events =" displayedEventIds"
47+ :selectedEventId =" selectedEventId"
48+ ></feed >
4649 <div id =" calendar" ></div >
4750 </main >
4851 </div >
@@ -58,15 +61,14 @@ export default {
5861 components: {
5962 toolbar,
6063 feed,
61- badge
64+ badge,
6265 },
6366 data () {
6467 return {
6568 selectedEventId: this .$route .params .eventId ,
6669 selectedTypeIds: [],
6770 selectedCalendarIds: [],
68- selectedEventIds: [],
69- displayedEvents: [],
71+ displayedEventIds: [],
7072 };
7173 },
7274 methods: {
@@ -93,11 +95,10 @@ export default {
9395 return notIn .length == 0 ? [] : full;
9496 },
9597 calendarsOfType (id ) {
96- return this .calendars .filter ((x ) => x .typeId == id). length ;
98+ return this .calendars .filter ((x ) => x .typeId == id);
9799 },
98100 eventsOfCalendar (id ) {
99- return this .$store .getters .events .filter ((x ) => x .calendarId == id)
100- .length ;
101+ return this .$store .getters .events .filter ((x ) => x .calendarId == id);
101102 },
102103 color (typeName ) {
103104 return events .typeColorHSL (typeName .toLowerCase (), 0 );
@@ -144,17 +145,13 @@ export default {
144145 events (newValue , oldValue ) {
145146 const addedEvents = newValue .filter ((x ) => ! oldValue .includes (x));
146147 const removedEvents = oldValue .filter ((x ) => ! newValue .includes (x));
147- addedEvents .forEach ((ev ) => {
148- this .displayedEvents .push ({
149- ... ev,
150- isDisplayed: this .selectedCalendarIds .includes (ev .calendarId ),
151- });
152- });
148+ this .displayedEventIds .push (
149+ ... addedEvents
150+ .filter ((e ) => this .selectedCalendarIds .includes (e .calendarId ))
151+ .map ((e ) => e .id )
152+ );
153153 removedEvents .forEach ((ev ) => {
154- const index = this .displayedEvents .findIndex (
155- (x ) => x .objectId == ev .objectId
156- );
157- this .$delete (this .displayedEvents , index);
154+ this .$delete (this .displayedEventIds , ev .id );
158155 });
159156 },
160157 selectedTypeIds (newValue , oldValue ) {
@@ -171,14 +168,22 @@ export default {
171168 ];
172169 },
173170 selectedCalendarIds (newValue , oldValue ) {
171+ console .log (newValue, oldValue);
174172 const added = newValue .filter ((x ) => ! oldValue .includes (x));
175173 const removed = oldValue .filter ((x ) => ! newValue .includes (x));
176- this .displayedEvents
177- .filter ((x ) => added .includes (x .calendarId ))
178- .forEach ((x ) => (x .isDisplayed = true ));
179- this .displayedEvents
180- .filter ((x ) => removed .includes (x .calendarId ))
181- .forEach ((x ) => (x .isDisplayed = false ));
174+ console .log (' added' ,added);
175+ console .log (' removed' ,removed);
176+ return ;
177+ added .forEach ((cId ) => {
178+ const toAdd = this .eventsOfCalendar (cId).map ((x ) => x .id );
179+ // console.log('toAdd',toAdd)
180+ this .displayedEventIds .push (... toAdd);
181+ });
182+ removed .forEach ((cId ) => {
183+ const toDelete = this .eventsOfCalendar (cId).map ((x ) => x .id );
184+ console .log (' toDelete' ,toAdd)
185+ toDelete .forEach ((id ) => this .$delete (this .displayedEventIds , id));
186+ });
182187 },
183188 },
184189};
0 commit comments