Skip to content
Snippets Groups Projects
Commit fb01f1eb authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

use interval to check for visibility of elements, fixes #538

parent b97297c6
No related branches found
No related tags found
No related merge requests found
import { $gettext } from '../lib/gettext.js'; import { $gettext } from '../lib/gettext.js';
const Questionnaire = { const Questionnaire = {
delayedQueue: [],
delayedInterval: null,
lastUpdate: null, lastUpdate: null,
initialize() { initialize() {
STUDIP.JSUpdater.register( STUDIP.JSUpdater.register(
...@@ -198,7 +200,42 @@ const Questionnaire = { ...@@ -198,7 +200,42 @@ const Questionnaire = {
downer.hide().fadeIn(); downer.hide().fadeIn();
thisquestion.hide().fadeIn(); thisquestion.hide().fadeIn();
}, },
addDelayedInit(el, data, isAjax, isMultiple) {
this.delayedQueue.push({
el,
data,
isAjax,
isMultiple,
$el: $(el), // jQueried element (for performance reasons
visible: false
});
if (this.delayedInterval === null) {
this.delayedInterval = setInterval(() => {
this.delayedQueue.forEach(item => {
if (item.$el.is(':visible')) {
this.initVoteEvaluation(item.el, item.data, item.isAjax, item.isMultiple);
item.visible = true;
}
});
this.delayedQueue = this.delayedQueue.filter(item => !item.visible);
if (this.delayedQueue.length === 0) {
clearInterval(this.delayedInterval);
}
}, 100);
}
},
initVoteEvaluation: async function (el, data, isAjax, isMultiple) { initVoteEvaluation: async function (el, data, isAjax, isMultiple) {
if ($(el).is(':not(:visible)')) {
if (!$(el).data('vote-evaluation-delayed')) {
this.addDelayedInit(el, data, isAjax, isMultiple);
$(el).data('vote-evaluation-delayed', true);
}
return;
}
const Chartist = await STUDIP.loadChunk('chartist'); const Chartist = await STUDIP.loadChunk('chartist');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment