Files
Phraseanet/www/scripts/apps/admin/tasks-manager/views/refresh.js
2014-03-05 15:33:22 +01:00

71 lines
2.4 KiB
JavaScript

/*
* This file is part of Phraseanet
*
* (c) 2005-2014 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
define([
"jquery",
"underscore",
"backbone"
], function ($, _, Backbone) {
var RefreshView = Backbone.View.extend({
initialize: function(options) {
if (false === ("pingView" in options)) {
throw "You must set the ping view"
}
this.pingView = options.pingView;
if (false === ("scheduler" in options)) {
throw "You must set the scheduler model"
}
this.scheduler = options.scheduler;
if (false === ("tasksCollection" in options)) {
throw "You must set the tasks collection model"
}
this.tasksCollection = options.tasksCollection;
this.refreshUrl = this.$el.data('refresh-url');
},
events: {
"click .btn-refresh": "refreshAction"
},
refreshAction: function(event) {
var $this = this;
$.ajax({
dataType: "json",
url: $this.refreshUrl,
success: function(response) {
$this.pingView.render();
$this.scheduler.set({
"actual": response.manager["actual"],
"process-id": response.manager["process-id"],
"configuration": response.manager["configuration"]
});
_.each(response.tasks, function(data, id) {
var jobModel = $this.tasksCollection.get(id);
if ("undefined" !== typeof jobModel) {
jobModel.set({
"actual": data["actual"],
"process-id": data["process-id"],
"configuration": data["configuration"]
});
}
});
}
});
},
loadState: function(state) {
if (state) {
$("#spinner", this.$el).addClass('icon-spinner icon-spin');
} else {
$("#spinner", this.$el).removeClass('icon-spinner icon-spin');
}
}
});
return RefreshView;
});