Recently I posted a more detailed question about "Triggered and progress bar" and I
am still waiting for some help.
In addition to that, if I add a triggered to a component but remove the _pageLevelProgress or
set it to false, this component would not be a part of the progress bar on the page, which
make sense, but when it shows I am done on the page, the progress bar on the menu shows
there is still more to do. So the progress bar on the page doesn't match with the
corresponding one on the menu.
Thank you,
Asa
I have just found this issue from a different angle. I noticed that while running an adapt course on an LMS the getCompleteComponentsAsPercentage() method used by the menu showed different results after closing and reopening the course.
As i understand it, these are the three kinds of progress tracking in adapt:
Page level progress shows the amount of completed components, excluding those without pageLevelProgress enabled.
The main menu shows progress as percentage of components complete, regardless of their pageLevelProgress flag
and the cmi.suspend_data SCORM string records the completion of blocks, regardless of pageLevelProgress
Perhaps the solution would be to have a plugin like PageLevelProgress but with a more global scope, so components could be flagged with a completionTracking flag and then all completion based things would use this to determine if they should track. (on very large courses, this might make the suspend_data string too long, if every component was flagged.)
Gavin
Hey Asa,
This seems like there might be a plugin problem here. The boxMenu plugin controls the visibility of the completed components - whilst pageLevelProgress controls the completion status for components on the visible page.
I wonder if pageLevelProgress should handle both of these and we remove it out of the menu? This way it will be consistent and doesn't rely on a coupled architecture of plugins.
I have put this as an issue on Github here.
Hope this helps.
Daryl
Coming here as I have a course where the SCORM reporting does not work as I want it to.
I figured that any components that had _pageLevelProgress set to false would not be required for the course to be completed and reported to the LMS. Well this is not the case.
My problem now is that I have components that do not show up on mobile (display: none) yet the user is required to complete them before the course is set to completed.
Now, if anyone could come up with a quick solution to solve this problem I would be very grateful.
/ Martin
Ok,
So in the course I'm working with I needed the _pageLevelProgress._isEnabled: false to not be stopping the SCORM completion.
I have modified the initialize function on the components to set _isCompleted to true if _pageLevelProgress._isEnabled: false.
Adding the function to the js file in the components in question:
For example the adapt-contrib-graphic.js
--------------------
var Graphic = ComponentView.extend({
initialize: function() {
this.listenTo(Adapt, 'remove', this.remove);
this.listenTo(this.model, 'change:_isVisible', this.toggleVisibility);
this.preRender();
this.render();
// added by MSA at XTRACTOR
// if _pageLevelProgress is false, set to completed
var model = this.model;
if (model.attributes._pageLevelProgress) {
if (model.attributes._pageLevelProgress._isEnabled === false) {
this.model.set('_isComplete', true);
}
}
},
--------------
or in the case of adapt-contrib-hotgrapic.js to edit the initialize function:
---------------
var HotGraphic = ComponentView.extend({
initialize: function() {
this.listenTo(Adapt, 'remove', this.remove);
this.listenTo(this.model, 'change:_isVisible', this.toggleVisibility);
this.preRender();
if (Adapt.device.screenSize == 'large') {
this.render();
} else {
this.reRender();
}
// added by MSA at XTRACTOR
// if _pageLevelProgress is false, set to completed
var model = this.model;
if (model.attributes._pageLevelProgress) {
if (model.attributes._pageLevelProgress._isEnabled === false) {
this.model.set('_isComplete', true);
}
}
},
------------------------
Now, the progressbar in the menu gets filled even if I do not complete the Hotgrapic and the course gets completed as well.
There is probably a better way to handle this but it works for me in my current course and can hopefully help others as well.
Best regards,
Martin