ui/app/authenticated/project/help/route.js

78 lines
2.3 KiB
JavaScript

import { hash } from 'rsvp';
import $ from 'jquery';
import Route from '@ember/routing/route';
import C from 'ui/utils/constants';
export default Route.extend({
actions: {
didTransition: function() {
$.getJSON(`${C.EXT_REFERENCES.FORUM}/categories.json`).then((response) => {
let modelOut = {
resolved: true,
};
let promises = {};
response.category_list.categories.forEach((item) => {
switch (item.name) {
case 'Announcements':
modelOut.announcements = item;
promises['announcements'] = $.getJSON(`${C.EXT_REFERENCES.FORUM}/c/${item.id}/l/latest.json`);
break;
case 'General':
modelOut.general = item;
promises['general'] = $.getJSON(`${C.EXT_REFERENCES.FORUM}/c/${item.id}/l/latest.json`);
break;
case 'Rancher':
modelOut.rancher = item;
promises['rancher'] = $.getJSON(`${C.EXT_REFERENCES.FORUM}/c/${item.id}/l/latest.json`);
break;
case 'RancherOS':
modelOut.rancherOS = item;
promises['rancherOS'] = $.getJSON(`${C.EXT_REFERENCES.FORUM}/c/${item.id}/l/latest.json`);
break;
default:
break;
}
});
hash(promises).then((hash) => {
Object.keys(hash).forEach((key) => {
let topics = hash[key].topic_list.topics.filterBy('pinned',false);
topics.length = 5;
modelOut[key].topics = topics;
});
this.controller.set('model', modelOut);
}).catch(fail);
}, fail);
return true; //bubble the transition event
function fail(/*error*/) {
let modelOut = {
resolved: true,
error: true
};
this.controller.set('model', modelOut);
}
},
},
beforeModel: function() {
this._super(...arguments);
this.get('store').findAll('host').then((hosts) => {
this.controllerFor('authenticated.project.help').set('hasHosts', hosts.get('length') > 0);
});
},
resetController: function (controller, isExisting/*, transition*/) {
if (isExisting)
{
controller.set('modelResolved', false);
controller.set('modelError', false);
}
}
});