Skip to content
Snippets Groups Projects

Draft: Resolve "[TCC planning] Frontend is incredibly slow with large amounts of entries"

4 unresolved threads
Compare and
4 files
+ 51
14
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -55,6 +55,18 @@ import SubjectChip from "aleksis.apps.cursus/components/SubjectChip.vue";
/>
</v-col>
<v-col
cols="6"
lg="2"
class="d-flex justify-space-between flex-wrap align-center"
>
<v-switch
v-model="includeChildGroups"
inset
:label="$t('lesrooster.timebound_course_config.filters.include_child_groups')"
></v-switch>
</v-col>
<v-spacer />
<v-col
@@ -234,6 +246,7 @@ export default {
currentCourse: null,
currentSubject: null,
loading: false,
includeChildGroups: true,
};
},
methods: {
@@ -435,16 +448,25 @@ export default {
let groupCombinations = {};
subject.courses.forEach((course) => {
let groupIds = JSON.stringify(
course.groups.map((group) => group.id).sort(),
);
const ownGroupIDs = course.groups.map((group) => group.id);
let groupIDs;
if (this.includeChildGroups && ownGroupIDs.some((groupID) => !this.groupIDList.includes(groupID))) {
groupIDs = JSON.stringify(
course.groups.map((group) => group.parentGroups.map((parentGroup) => parentGroup.id)).flat().sort()
);
} else {
groupIDs = JSON.stringify(
ownGroupIDs.sort()
);
}
if (!groupCombinations[groupIds]) {
groupCombinations[groupIds] = [];
if (!groupCombinations[groupIDs]) {
groupCombinations[groupIDs] = [];
}
if (!groupCombinations[groupIds].find((c) => c.id === course.id)) {
groupCombinations[groupIds].push({
if (!groupCombinations[groupIDs].find((c) => c.id === course.id)) {
groupCombinations[groupIDs].push({
...course,
});
}
@@ -505,6 +527,7 @@ export default {
variables() {
return {
groups: this.groupIDList,
includeChildGroups: this.includeChildGroups,
};
},
},
Loading