Skip to content

Commit c80777e

Browse files
committed
Found duplicate bug in selection values
1 parent 9ec58fc commit c80777e

File tree

3 files changed

+44
-56
lines changed

3 files changed

+44
-56
lines changed

client/src/components/Main.vue

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
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>
@@ -34,15 +34,18 @@
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
};

client/src/components/calendar.event.vue

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default {
1818
...events.all,
1919
},
2020
props: {
21-
event: Object,
21+
eventId: String,
2222
},
2323
data() {
2424
return {
@@ -49,8 +49,4 @@ export default {
4949
};
5050
</script>
5151
<style >
52-
[v-cloak]{
53-
background: red;
54-
height: 100px;width: 100px;
55-
}
5652
</style>

client/src/components/feed.vue

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<template>
22
<div id="feed">
33
<h6 class="date-label"
4-
>#no date<badge>{{ noDateEvents.length }}</badge></h6
4+
>#no date<badge>{{ noDateEventIds.length }}</badge></h6
55
>
6-
<template v-for="event in events">
6+
<template v-for="eventId in noDateEventIds">
77
<calendar-event
8-
:key="event.id"
9-
:event="event"
8+
:key="eventId"
9+
:eventId="eventId"
1010
:class="[{ selected: event.id == selectedEventId }]"
1111
>
1212
</calendar-event>
@@ -20,11 +20,8 @@ import VueScrollTo from "vue-scrollto";
2020
import Badge from "./ui/badge.vue";
2121
2222
export default {
23-
created() {
24-
this.events.forEach(this.addEvent);
25-
},
2623
props: {
27-
displayedEvents: Array,
24+
displayedEventIds: Array,
2825
selectedEventId: String,
2926
},
3027
components: {
@@ -33,28 +30,20 @@ export default {
3330
},
3431
data() {
3532
return {
36-
noDateEvents: [],
33+
noDateEventIds: [],
34+
3735
};
3836
},
3937
computed: {
40-
events() {
41-
return this.$store.getters.events;
42-
},
4338
occurencies() {
4439
return this.$store.getters["occurencies/values"];
4540
},
4641
},
4742
methods: {
4843
removeFrom(array, ev) {
49-
const index = array.findIndex((x) => x.objectId == ev.objectId);
44+
const index = array.findIndex((x) => x.objectId == ev.id);
5045
if (index >= 0) this.$delete(array, index);
51-
},
52-
addEvent(ev) {
53-
this.noDateEvents.push(ev);
54-
},
55-
removeEvent(ev) {
56-
this.removeFrom(this.noDateEvents, ev);
57-
},
46+
}
5847
},
5948
updated() {
6049
if (this.selectedEventId)
@@ -64,12 +53,10 @@ export default {
6453
});
6554
},
6655
watch: {
67-
events(newEvents, oldEvents) {
68-
const addedEvents = newEvents.filter((e) => !oldEvents.includes(e));
69-
addedEvents.forEach(this.addEvent);
70-
const removedEvents = oldEvents.filter((e) => !newEvents.includes(e));
71-
removedEvents.forEach(this.removeEvent);
72-
},
56+
displayedEventIds(newValue, oldValue) {
57+
console.log(newValue,'!!!',oldValue)
58+
59+
}
7360
},
7461
};
7562
</script>

0 commit comments

Comments
 (0)