diff --git a/client/galaxy/scripts/apps/admin.js b/client/galaxy/scripts/apps/admin.js
index c52f399ba58..caa631c8daf 100644
--- a/client/galaxy/scripts/apps/admin.js
+++ b/client/galaxy/scripts/apps/admin.js
@@ -14,6 +14,7 @@ import DataTables from "components/admin/DataTables.vue";
import DataTypes from "components/admin/DataTypes.vue";
import DataManagerView from "components/admin/DataManager/DataManagerView.vue";
import DataManagerRouter from "components/admin/DataManager/DataManagerRouter.vue";
+import ErrorStack from "components/admin/ErrorStack.vue";
import Vue from "vue";
import { serverPath } from "utils/serverPath";
@@ -33,6 +34,7 @@ window.app = function app(options, bootstrapped) {
"(/)admin(/)users": "show_users",
"(/)admin(/)roles": "show_roles",
"(/)admin(/)groups": "show_groups",
+ "(/)admin(/)error_stack": "show_error_stack",
"(/)admin(/)tool_versions": "show_tool_versions",
"(/)admin(/)quotas": "show_quotas",
"(/)admin(/)repositories": "show_repositories",
@@ -120,10 +122,15 @@ window.app = function app(options, bootstrapped) {
show_data_tables: function() {
this._display_vue_helper(DataTables);
},
+
show_data_types: function() {
this._display_vue_helper(DataTypes);
},
+ show_error_stack: function() {
+ this._display_vue_helper(ErrorStack);
+ },
+
show_data_manager: function(path) {
let vueMount = document.createElement("div");
this.page.display(vueMount);
diff --git a/client/galaxy/scripts/apps/panels/admin-panel.js b/client/galaxy/scripts/apps/panels/admin-panel.js
index e77995c4e0a..0d6d6929abf 100644
--- a/client/galaxy/scripts/apps/panels/admin-panel.js
+++ b/client/galaxy/scripts/apps/panels/admin-panel.js
@@ -132,7 +132,8 @@ var AdminPanel = Backbone.View.extend({
},
{
title: _l("View error logs"),
- url: "admin/tool_errors"
+ url: "admin/error_stack",
+ target: "__use_router__"
}
]
}
diff --git a/client/galaxy/scripts/components/admin/AdminServices.js b/client/galaxy/scripts/components/admin/AdminServices.js
new file mode 100644
index 00000000000..c70276f7e55
--- /dev/null
+++ b/client/galaxy/scripts/components/admin/AdminServices.js
@@ -0,0 +1,7 @@
+import { getAppRoot } from "onload/loadConfig";
+import axios from "axios";
+
+export function getErrorStack() {
+ let url = `${getAppRoot()}api/tools/error_stack`;
+ return axios.get(url);
+}
diff --git a/client/galaxy/scripts/components/admin/ErrorStack.vue b/client/galaxy/scripts/components/admin/ErrorStack.vue
new file mode 100644
index 00000000000..c7d69e804fe
--- /dev/null
+++ b/client/galaxy/scripts/components/admin/ErrorStack.vue
@@ -0,0 +1,54 @@
+
+
+
+ {{ messageText }}
+
+
+ No errors available.
+
+
+
+
+
+
diff --git a/lib/galaxy/webapps/galaxy/buildapp.py b/lib/galaxy/webapps/galaxy/buildapp.py
index 47a08c9d31b..7d24c804f1a 100644
--- a/lib/galaxy/webapps/galaxy/buildapp.py
+++ b/lib/galaxy/webapps/galaxy/buildapp.py
@@ -102,6 +102,7 @@ def app_factory(global_conf, load_app_kwds={}, **kwargs):
webapp.add_client_route('/admin/data_tables', 'admin')
webapp.add_client_route('/admin/data_types', 'admin')
webapp.add_client_route('/admin/data_manager{path_info:.*}', 'admin')
+ webapp.add_client_route('/admin/error_stack', 'admin')
webapp.add_client_route('/admin/users', 'admin')
webapp.add_client_route('/admin/roles', 'admin')
webapp.add_client_route('/admin/forms', 'admin')