;(function (define, undefined) {
'use strict';
define([
    'jquery', 'js/edxnotes/collections/notes', 'js/edxnotes/views/notes_page'
], function ($, NotesCollection, NotesPageView) {
    /**
     * Factory method for the Notes page.
     * @param {Object} params Params for the Notes page.
     * @param {List} params.disabledTabs Names of disabled tabs, these tabs will not be shown.
     * @param {Object} params.notes Paginated notes info.
     * @param {Number} params.pageSize Number of notes per page.
     * @param {Boolean} params.debugMode Enable the flag to see debug information.
     * @param {String} params.endpoint The endpoint of the store.
     * @return {Object} An instance of NotesPageView.
     */
    return function (params) {
        var collection = new NotesCollection(
            params.notes,
            {
                url: params.notesEndpoint,
                perPage: params.pageSize,
                parse: true
            }
        );

        return new NotesPageView({
            el: $('.wrapper-student-notes').get(0),
            collection: collection,
            debug: params.debugMode,
            perPage: params.pageSize,
            disabledTabs: params.disabledTabs
        });
    };
});
}).call(this, define || RequireJS.define);
