sonarr-repo-only/UI/Logs/Layout.js

128 lines
4.1 KiB
JavaScript
Raw Normal View History

2013-06-22 06:24:24 +00:00
'use strict';
2013-07-14 02:40:47 +00:00
define(
[
'marionette',
'backgrid',
'Logs/LogTimeCell',
'Logs/LogLevelCell',
'Shared/Grid/Pager',
2013-07-28 23:13:14 +00:00
'Logs/Collection',
'Shared/Toolbar/ToolbarLayout'
], function (Marionette, Backgrid, LogTimeCell, LogLevelCell, GridPager, LogCollection, ToolbarLayout) {
return Marionette.Layout.extend({
2013-06-05 00:49:53 +00:00
template: 'Logs/LayoutTemplate',
regions: {
grid : '#x-grid',
toolbar: '#x-toolbar',
pager : '#x-pager'
},
2013-07-14 02:40:47 +00:00
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
}
],
2013-06-05 00:49:53 +00:00
2013-07-28 23:13:14 +00:00
initialize: function () {
this.collection = new LogCollection();
this.collection.fetch();
},
onShow: function () {
this._showToolbar();
this._showTable();
},
_showTable: function () {
2013-06-05 00:49:53 +00:00
2013-07-14 02:40:47 +00:00
this.grid.show(new Backgrid.Grid({
row : Backgrid.Row,
columns : this.columns,
collection: this.collection,
className : 'table table-hover'
}));
2013-06-05 00:49:53 +00:00
this.pager.show(new GridPager({
2013-06-05 00:49:53 +00:00
columns : this.columns,
collection: this.collection
}));
},
2013-07-28 23:13:14 +00:00
_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'
}
]
};
2013-07-28 23:13:14 +00:00
this.toolbar.show(new ToolbarLayout({
left :
[
leftSideButtons
2013-07-28 23:13:14 +00:00
],
context: this
}));
},
_refreshLogs: function () {
this.collection.state.currentPage = 1;
this.collection.fetch({ reset: true });
this._showTable();
2013-06-05 00:49:53 +00:00
}
2013-07-14 02:40:47 +00:00
});
});