aboutsummaryrefslogtreecommitdiff
path: root/resources/vue/mixins/TreeMixin.js
diff options
context:
space:
mode:
Diffstat (limited to 'resources/vue/mixins/TreeMixin.js')
-rw-r--r--resources/vue/mixins/TreeMixin.js51
1 files changed, 28 insertions, 23 deletions
diff --git a/resources/vue/mixins/TreeMixin.js b/resources/vue/mixins/TreeMixin.js
index e8ec5c9..385ce84 100644
--- a/resources/vue/mixins/TreeMixin.js
+++ b/resources/vue/mixins/TreeMixin.js
@@ -61,13 +61,7 @@ export const TreeMixin = {
{params: parameters}
);
},
- getCachedNodeCourseInfo(node, semesterId, semClass) {
- return {
- courses: cache.get(['course-count', node.id, semesterId, semClass].join('/')) ?? null,
- allCourses: cache.get(['course-count-all', node.id, semesterId, semClass].join('/')) ?? null
- };
- },
- getNodeCourseInfo(node, semesterId, semClass = 0) {
+ getNodeCourseInfo(node, semesterId, semClass = 0, forceLive = false) {
let parameters = {};
if (semesterId !== 'all' && semesterId !== '0') {
@@ -78,22 +72,33 @@ export const TreeMixin = {
parameters['filter[semclass]'] = semClass;
}
- return requester.addRequest(
- STUDIP.URLHelper.getURL('jsonapi.php/v1/tree-node/' + node.id + '/courseinfo'),
- parameters
- ).then(courseinfo => {
- cache.set(
- ['course-count', node.id, semesterId, semClass].join('/'),
- courseinfo.data.courses ?? 0,
- 3 * 60 * 60
- );
- cache.set(
- ['course-count-all', node.id, semesterId, semClass].join('/'),
- courseinfo.data.allcourses ?? 0,
- 3 * 60 * 60
- );
- return courseinfo;
- });
+ const cachedCourseCount = cache.get(['course-count', node.id, semesterId, semClass].join('/')) ?? -1;
+ const cachedAllCoursesCount = cache.get(['course-count-all', node.id, semesterId, semClass].join('/')) ?? -1;
+ if (!forceLive && cachedCourseCount !== -1 && cachedAllCoursesCount !== -1) {
+ return Promise.resolve({
+ data: {
+ courses: cache.get(['course-count', node.id, semesterId, semClass].join('/')),
+ allcourses: cache.get(['course-count-all', node.id, semesterId, semClass].join('/'))
+ }
+ });
+ } else {
+ return requester.addRequest(
+ STUDIP.URLHelper.getURL('jsonapi.php/v1/tree-node/' + node.id + '/courseinfo'),
+ parameters
+ ).then(courseinfo => {
+ cache.set(
+ ['course-count', node.id, semesterId, semClass].join('/'),
+ courseinfo.data.courses,
+ 3 * 60 * 60
+ );
+ cache.set(
+ ['course-count-all', node.id, semesterId, semClass].join('/'),
+ courseinfo.data.allcourses,
+ 3 * 60 * 60
+ );
+ return courseinfo;
+ });
+ }
},
nodeUrl(node_id, semester = null ) {
return STUDIP.URLHelper.getURL('', { node_id, semester })