var Marionette = require('backbone.marionette'); var HeaderView = require('./header/header'); var TodosView = require('../todos/collection'); var ChartView = require('./chart/chart'); var FooterView = require('./footer/footer'); var tpl = require('./layout.hbs'); /** * @version 1.0.0 * @description Layout View - Root layout view. Requires the modules * {@link module:views/layout/header/header}, * {@link module:views/todos/collection}, * {@link module:views/layout/chart/chart},and * {@link module:views/layout/footer/footer} * @module views/layout/layout * @requires module:views/layout/header/header * @requires module:views/layout/chart/chart * @requires module:views/todos/collection * @requires module:views/layout/footer/footer * @link {http://marionettejs.com/} */ module.exports = Marionette.Layout.extend({ /** template */ template: tpl, /** * @desc UI bindings create cached attributes that * point to jQuery selected objects */ ui: { app: '#todoapp' }, /** regions */ regions: { header: '#header', main: '#main', chart: '#chart', footer: '#footer' }, /** * @func updateFilter * @param filter */ updateFilter: function(filter) { this.ui.app.attr('class', 'filter-' + filter); }, /** * @func onShow */ onShow: function() { var options = {collection: this.options.todosCollection}; this.header.show(new HeaderView(options)); this.main.show(new TodosView(options)); this.chart.show(new ChartView(options)); this.footer.show(new FooterView(options)); } });