4242 </toolbar >
4343 </aside >
4444 <main >
45- <feed :events =" events " :selectedEventId =" selectedEventId" ></feed >
45+ <feed :events =" displayedEvents " :selectedEventId =" selectedEventId" ></feed >
4646 <div id =" calendar" ></div >
4747 </main >
4848 </div >
@@ -67,6 +67,7 @@ export default {
6767 selectedEventId: this .$route .params .eventId ,
6868 selectedTypeIds: [],
6969 selectedCalendarIds: [],
70+ displayedEvents: [],
7071 };
7172 },
7273 methods: {
@@ -99,12 +100,6 @@ export default {
99100 return this .$store .getters .events .filter ((x ) => x .calendarId == id)
100101 .length ;
101102 },
102- eventMapFunction (ev ) {
103- return {
104- ... ev,
105- isDisplayed: this .selectedCalendarIds .includes (ev .calendarId ),
106- };
107- },
108103 color (typeName ) {
109104 return events .typeColorHSL (typeName .toLowerCase (), 0 );
110105 },
@@ -131,7 +126,7 @@ export default {
131126 return this .$store .getters .calendars ;
132127 },
133128 events () {
134- return this .$store .getters .events . map ( this . eventMapFunction ) ;
129+ return this .$store .getters .events ;
135130 },
136131 },
137132 watch: {
@@ -150,6 +145,22 @@ export default {
150145 added .map ((x ) => x .id )
151146 );
152147 },
148+ events (newValue , oldValue ) {
149+ const addedEvents = newValue .filter ((x ) => ! oldValue .includes (x));
150+ const removedEvents = oldValue .filter ((x ) => ! newValue .includes (x));
151+ addedEvents .forEach ((ev ) => {
152+ this .displayedEvents .push ({
153+ ... ev,
154+ isDisplayed: this .selectedCalendarIds .includes (ev .calendarId ),
155+ });
156+ });
157+ removedEvents .forEach ((ev ) => {
158+ const index = this .displayedEvents .findIndex (
159+ (x ) => x .objectId == ev .objectId
160+ );
161+ this .$delete (this .displayedEvents , index);
162+ });
163+ },
153164 selectedTypeIds (newValue , oldValue ) {
154165 const addedTypes = newValue .filter ((x ) => ! oldValue .includes (x));
155166 const canBeDisplayed = this .calendars
@@ -163,6 +174,16 @@ export default {
163174 ... mustBeDisplayed,
164175 ];
165176 },
177+ selectedCalendarIds (newValue , oldValue ) {
178+ const added = newValue .filter ((x ) => ! oldValue .includes (x));
179+ const removed = oldValue .filter ((x ) => ! newValue .includes (x));
180+ this .displayedEvents
181+ .filter ((x ) => added .includes (x .calendarId ))
182+ .forEach ((x ) => (x .isDisplayed = true ));
183+ this .displayedEvents
184+ .filter ((x ) => removed .includes (x .calendarId ))
185+ .forEach ((x ) => (x .isDisplayed = false ));
186+ },
166187 },
167188};
168189 </script >
@@ -181,14 +202,17 @@ export default {
181202 overflow : auto ;
182203 height : 100% ;
183204}
184- #main label .type ,#main label .calendar {
205+ #main label .type ,
206+ #main label .calendar {
185207 --hsl : var (--color-h ), var (--color-s ), var (--color-l );
186208}
187- #main label .type span , #main label .calendar span {
209+ #main label .type span ,
210+ #main label .calendar span {
188211 text-shadow : hsla (var (--hsl ), 0.4 ) 0px 0px 1px ,
189212 hsla (var (--hsl ), 0.4 ) 0px 0px 1px ;
190213}
191- #main label .type sup , #main label .calendar sup {
214+ #main label .type sup ,
215+ #main label .calendar sup {
192216 color : hsl (var (--hsl ));
193217}
194218 </style >
0 commit comments