60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
(function(define) {
|
|
'use strict';
|
|
define([
|
|
'underscore', 'edx-ui-toolkit/js/pagination/paging-collection', 'js/edxnotes/models/note'
|
|
], function(_, PagingCollection, NoteModel) {
|
|
return PagingCollection.extend({
|
|
model: NoteModel,
|
|
|
|
state: {
|
|
pageSize: 10
|
|
},
|
|
|
|
queryParams: {},
|
|
|
|
constructor: function(models, options) {
|
|
this.url = options.url;
|
|
this.state.pageSize = options.perPage;
|
|
|
|
if (options.text) {
|
|
this.queryParams.text = options.text;
|
|
}
|
|
|
|
PagingCollection.prototype.constructor.call(this, models, options);
|
|
},
|
|
|
|
/**
|
|
* Returns course structure from the list of notes.
|
|
* @return {Object}
|
|
*/
|
|
getCourseStructure: (function() {
|
|
var courseStructure = null;
|
|
return function() {
|
|
var chapters = {},
|
|
sections = {},
|
|
units = {};
|
|
|
|
this.each(function(note) {
|
|
var chapter = note.get('chapter'),
|
|
section = note.get('section'),
|
|
unit = note.get('unit');
|
|
|
|
chapters[chapter.location] = chapter;
|
|
sections[section.location] = section;
|
|
units[unit.location] = units[unit.location] || [];
|
|
units[unit.location].push(note);
|
|
});
|
|
|
|
courseStructure = {
|
|
chapters: _.sortBy(_.toArray(chapters), function(c) { return c.index; }),
|
|
sections: sections,
|
|
units: units
|
|
};
|
|
|
|
return courseStructure;
|
|
};
|
|
}())
|
|
});
|
|
});
|
|
}).call(this, define || RequireJS.define);
|