* fix: eslint operator-linebreak issue * fix: eslint quotes issue * fix: react jsx indent and props issues * fix: eslint trailing spaces issues * fix: eslint line around directives issue * fix: eslint semi rule * fix: eslint newline per chain rule * fix: eslint space infix ops rule * fix: eslint space-in-parens issue * fix: eslint space before function paren issue * fix: eslint space before blocks issue * fix: eslint arrow body style issue * fix: eslint dot-location issue * fix: eslint quotes issue * fix: eslint quote props issue * fix: eslint operator assignment issue * fix: eslint new line after import issue * fix: indent issues * fix: operator assignment issue * fix: all autofixable eslint issues * fix: all react related fixable issues * fix: autofixable eslint issues * chore: remove all template literals * fix: remaining autofixable issues * chore: apply amnesty on all existing issues * fix: failing xss-lint issues * refactor: apply amnesty on remaining issues * refactor: apply amnesty on new issues * fix: remove file level suppressions * refactor: apply amnesty on new issues
62 lines
2.6 KiB
JavaScript
62 lines
2.6 KiB
JavaScript
// eslint-disable-next-line no-shadow-restricted-names
|
|
(function(define, undefined) {
|
|
'use strict';
|
|
|
|
define([
|
|
'gettext', 'underscore', 'js/edxnotes/views/note_group', 'js/edxnotes/views/tab_panel',
|
|
'js/edxnotes/views/tab_view', 'edx-ui-toolkit/js/utils/html-utils'
|
|
], function(gettext, _, NoteGroupView, TabPanelView, TabView, HtmlUtils) {
|
|
var view = 'Location in Course';
|
|
var CourseStructureView = TabView.extend({
|
|
PanelConstructor: TabPanelView.extend({
|
|
id: 'structure-panel',
|
|
title: view,
|
|
|
|
renderContent: function() {
|
|
var courseStructure = this.collection.getCourseStructure(),
|
|
container = document.createDocumentFragment();
|
|
|
|
_.each(courseStructure.chapters, function(chapterInfo) {
|
|
var chapterView = this.getChapterGroupView(chapterInfo);
|
|
_.each(chapterInfo.children, function(location) {
|
|
var sectionInfo = courseStructure.sections[location],
|
|
sectionView;
|
|
if (sectionInfo) {
|
|
sectionView = chapterView.addChild(sectionInfo);
|
|
// eslint-disable-next-line no-shadow
|
|
_.each(sectionInfo.children, function(location) {
|
|
var notes = courseStructure.units[location];
|
|
if (notes) {
|
|
sectionView.addChild(this.getNotes(notes));
|
|
}
|
|
}, this);
|
|
}
|
|
}, this);
|
|
container.appendChild(chapterView.render().el);
|
|
}, this);
|
|
this.$el.append(HtmlUtils.HTML(container).toString());
|
|
return this;
|
|
},
|
|
|
|
getChapterGroupView: function(chapter, section) {
|
|
var group = new NoteGroupView.ChapterView({
|
|
chapter: chapter,
|
|
section: section
|
|
});
|
|
this.children.push(group);
|
|
return group;
|
|
}
|
|
}),
|
|
|
|
tabInfo: {
|
|
name: gettext('Location in Course'),
|
|
identifier: 'view-course-structure',
|
|
icon: 'fa fa-list-ul',
|
|
view: view
|
|
}
|
|
});
|
|
|
|
return CourseStructureView;
|
|
});
|
|
}).call(this, define || RequireJS.define);
|