(function(define, undefined) { 'use strict'; define([ 'gettext', 'underscore', 'js/edxnotes/views/note_group', 'js/edxnotes/views/tab_panel', 'js/edxnotes/views/tab_view' ], function(gettext, _, NoteGroupView, TabPanelView, TabView) { 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); _.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(container); 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);