Skip to content

Commit abb3b4c

Browse files
committed
Made event filtration faster
1 parent a37bc35 commit abb3b4c

File tree

1 file changed

+35
-11
lines changed

1 file changed

+35
-11
lines changed

client/src/components/Main.vue

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
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

Comments
 (0)