'use strict'; define( [ 'marionette', 'backgrid', 'Logs/LogTimeCell', 'Logs/LogLevelCell', 'Shared/Grid/Pager', 'Logs/Collection', 'Shared/Toolbar/ToolbarLayout' ], function (Marionette, Backgrid, LogTimeCell, LogLevelCell, GridPager, LogCollection, ToolbarLayout) { return Marionette.Layout.extend({ template: 'Logs/LayoutTemplate', regions: { grid : '#x-grid', toolbar: '#x-toolbar', pager : '#x-pager' }, attributes: { id: 'logs-screen' }, columns: [ { name : 'level', label : '', sortable: true, cell : LogLevelCell }, { name : 'logger', label : 'Component', sortable: true, cell : Backgrid.StringCell.extend({ className: 'log-logger-cell' }) }, { name : 'message', label : 'Message', sortable: false, cell : Backgrid.StringCell.extend({ className: 'log-message-cell' }) }, { name : 'time', label: 'Time', cell : LogTimeCell } ], initialize: function () { this.collection = new LogCollection(); this.collection.fetch(); }, onShow: function () { this._showToolbar(); this._showTable(); }, _showTable: function () { this.grid.show(new Backgrid.Grid({ row : Backgrid.Row, columns : this.columns, collection: this.collection, className : 'table table-hover' })); this.pager.show(new GridPager({ columns : this.columns, collection: this.collection })); }, _showToolbar: function () { var leftSideButtons = { type : 'default', storeState: false, items : [ { title : 'Refresh', icon : 'icon-refresh', ownerContext : this, callback : this._refreshLogs }, { title : 'Clear Logs', icon : 'icon-trash', command : 'clearLog', successMessage : 'Logs have been cleared', errorMessage : 'Failed to clear logs', ownerContext : this, onSuccess: this._refreshLogs }, { title: 'Files', icon : 'icon-file', route: 'logs/files' } ] }; this.toolbar.show(new ToolbarLayout({ left : [ leftSideButtons ], context: this })); }, _refreshLogs: function () { this.collection.fetch({ reset: true }); this._showTable(); } }); });