Files
discourse-data-explorer/assets/javascripts/discourse/routes/admin-plugins-explorer.js
T

44 lines
1.2 KiB
JavaScript
Raw Normal View History

2018-10-10 17:26:23 +05:30
import { ajax } from "discourse/lib/ajax";
import User from "discourse/models/user";
2020-05-12 14:41:26 -04:00
import DiscourseRoute from "discourse/routes/discourse";
2015-06-25 14:53:03 -07:00
2020-05-12 14:41:26 -04:00
export default DiscourseRoute.extend({
2018-10-10 17:26:23 +05:30
controllerName: "admin-plugins-explorer",
2015-06-25 13:26:31 -07:00
model() {
if (!User.currentProp("admin")) {
// display "Only available to admins" message
return { model: null, schema: null, disallow: true, groups: null };
}
const groupPromise = ajax("/admin/plugins/explorer/groups.json");
2019-09-11 10:30:39 -05:00
const schemaPromise = ajax("/admin/plugins/explorer/schema.json", {
2020-09-04 13:23:11 +02:00
cache: true,
2019-09-11 10:30:39 -05:00
});
2019-09-11 09:09:41 -05:00
const queryPromise = this.store.findAll("query");
return groupPromise.then((groups) => {
let groupNames = {};
groups.forEach((g) => {
groupNames[g.id] = g.name;
2018-10-10 17:26:23 +05:30
});
return schemaPromise.then((schema) => {
return queryPromise.then((model) => {
model.forEach((query) => {
query.markNotDirty();
query.set(
"group_names",
(query.group_ids || []).map((id) => groupNames[id])
);
});
return { model, schema, groups };
});
});
});
2015-07-08 13:45:13 -07:00
},
setupController(controller, model) {
controller.setProperties(model);
},
2018-10-10 17:26:23 +05:30
});