docker_manager/manager-client/app/routes/upgrade.js

57 lines
1.5 KiB
JavaScript

import Repo from 'manager-client/models/repo';
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
if (params.id === "all") {
return Repo.findAll();
}
return Repo.find(params.id);
},
afterModel: function(model) {
if (Array.isArray(model)) {
return Repo.findLatestAll().then(response => {
JSON.parse(response).repos.forEach(_repo => {
const repo = model.find(repo => repo.get("path") === _repo.path);
if (!repo) { return; }
delete _repo.path;
repo.set("latest", Ember.Object.create(_repo));
});
return Repo.findAllProgress(model.filter(repo => !repo.get("upToDate"))).then(progress => {
this.set("progress", JSON.parse(progress).progress);
});
});
}
return Repo.findUpgrading().then(u => {
if (u && u !== model) {
return Ember.RSVP.Promise.reject("wat");
}
return model.findLatest().then(() => {
return model.findProgress().then(progress => {
this.set("progress", progress);
});
});
});
},
setupController: function(controller, model) {
controller.reset();
controller.setProperties({
model: Array.isArray(model) ? model : [model],
output: this.get('progress.logs'),
percent: this.get('progress.percentage')
});
controller.startBus();
},
deactivate: function() {
this.controllerFor('upgrade').stopBus();
}
});