parent
879035b28a
commit
2b0ddb6131
@ -0,0 +1,38 @@
|
|||||||
|
'use strict';
|
||||||
|
define(
|
||||||
|
[
|
||||||
|
'Cells/NzbDroneCell',
|
||||||
|
'moment',
|
||||||
|
'Shared/FormatHelpers',
|
||||||
|
'Shared/UiSettingsModel'
|
||||||
|
], function (NzbDroneCell, moment, FormatHelpers, UiSettings) {
|
||||||
|
return NzbDroneCell.extend({
|
||||||
|
|
||||||
|
className: 'relative-time-cell',
|
||||||
|
|
||||||
|
render: function () {
|
||||||
|
|
||||||
|
var dateStr = this.model.get(this.column.get('name'));
|
||||||
|
|
||||||
|
if (dateStr) {
|
||||||
|
var date = moment(dateStr);
|
||||||
|
var result = '<span title="{0}">{1}</span>';
|
||||||
|
|
||||||
|
if (UiSettings.get('showRelativeDates')) {
|
||||||
|
var tooltip = date.format(UiSettings.longDateTime());
|
||||||
|
var text = date.fromNow();
|
||||||
|
|
||||||
|
this.$el.html(result.format(tooltip, text));
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
this.$el.html(date.format(UiSettings.longDateTime()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,41 @@
|
|||||||
|
'use strict';
|
||||||
|
define(
|
||||||
|
[
|
||||||
|
'Cells/NzbDroneCell',
|
||||||
|
'Commands/CommandController'
|
||||||
|
], function (NzbDroneCell, CommandController) {
|
||||||
|
return NzbDroneCell.extend({
|
||||||
|
|
||||||
|
className: 'execute-task-cell',
|
||||||
|
|
||||||
|
events: {
|
||||||
|
'click .x-execute' : '_executeTask'
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function () {
|
||||||
|
|
||||||
|
this.$el.empty();
|
||||||
|
|
||||||
|
var task = this.model.get('name');
|
||||||
|
|
||||||
|
this.$el.html(
|
||||||
|
'<i class="icon-cogs x-execute" title="Execute {0}"></i>'.format(task)
|
||||||
|
);
|
||||||
|
|
||||||
|
CommandController.bindToCommand({
|
||||||
|
element: this.$el.find('.x-execute'),
|
||||||
|
command: {
|
||||||
|
name : task
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
_executeTask: function () {
|
||||||
|
CommandController.Execute(this.model.get('name'), {
|
||||||
|
name : this.model.get('name')
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,25 @@
|
|||||||
|
'use strict';
|
||||||
|
define(
|
||||||
|
[
|
||||||
|
'Cells/NzbDroneCell',
|
||||||
|
'moment'
|
||||||
|
], function (NzbDroneCell, moment) {
|
||||||
|
return NzbDroneCell.extend({
|
||||||
|
|
||||||
|
className: 'task-interval-cell',
|
||||||
|
|
||||||
|
render: function () {
|
||||||
|
|
||||||
|
this.$el.empty();
|
||||||
|
|
||||||
|
var interval = this.model.get('interval');
|
||||||
|
var duration = moment.duration(interval, 'minutes').humanize();
|
||||||
|
|
||||||
|
this.$el.html(
|
||||||
|
duration.replace(/an?(?=\s)/, '1')
|
||||||
|
);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,73 @@
|
|||||||
|
'use strict';
|
||||||
|
define(
|
||||||
|
[
|
||||||
|
'marionette',
|
||||||
|
'backgrid',
|
||||||
|
'System/Task/TaskCollection',
|
||||||
|
'Cells/RelativeTimeCell',
|
||||||
|
'System/Task/TaskIntervalCell',
|
||||||
|
'System/Task/ExecuteTaskCell',
|
||||||
|
'Shared/LoadingView'
|
||||||
|
], function (Marionette, Backgrid, BackupCollection, RelativeTimeCell, TaskIntervalCell, ExecuteTaskCell, LoadingView) {
|
||||||
|
return Marionette.Layout.extend({
|
||||||
|
template: 'System/Task/TaskLayoutTemplate',
|
||||||
|
|
||||||
|
regions: {
|
||||||
|
tasks : '#x-tasks'
|
||||||
|
},
|
||||||
|
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
name : 'name',
|
||||||
|
label : 'Name',
|
||||||
|
sortable : true,
|
||||||
|
cell : 'string'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'interval',
|
||||||
|
label : 'Interval',
|
||||||
|
sortable : true,
|
||||||
|
cell : TaskIntervalCell
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'lastExecution',
|
||||||
|
label : 'Last Execution',
|
||||||
|
sortable : true,
|
||||||
|
cell : RelativeTimeCell
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'nextExecution',
|
||||||
|
label : 'Next Execution',
|
||||||
|
sortable : true,
|
||||||
|
cell : RelativeTimeCell
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'this',
|
||||||
|
label : '',
|
||||||
|
sortable : false,
|
||||||
|
cell : ExecuteTaskCell
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
initialize: function () {
|
||||||
|
this.taskCollection = new BackupCollection();
|
||||||
|
|
||||||
|
this.listenTo(this.taskCollection, 'sync', this._showTasks);
|
||||||
|
},
|
||||||
|
|
||||||
|
onRender: function () {
|
||||||
|
this.tasks.show(new LoadingView());
|
||||||
|
|
||||||
|
this.taskCollection.fetch();
|
||||||
|
},
|
||||||
|
|
||||||
|
_showTasks: function () {
|
||||||
|
|
||||||
|
this.tasks.show(new Backgrid.Grid({
|
||||||
|
columns : this.columns,
|
||||||
|
collection: this.taskCollection,
|
||||||
|
className : 'table table-hover'
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,5 @@
|
|||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div id="x-tasks" class="table-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
Reference in new issue