diff --git a/client/package.json b/client/package.json
index 2bc381f9237..053fc60a063 100644
--- a/client/package.json
+++ b/client/package.json
@@ -87,7 +87,8 @@
"vueisotope": "^3.1.2",
"vuex": "^3.4.0",
"vuex-cache": "^3.2.0",
- "vuex-persist": "^3.1.3"
+ "vuex-persist": "^3.1.3",
+ "vuex-persistedstate": "^4.0.0"
},
"scripts": {
"watch": "gulp && yarn run save-build-hash && yarn run webpack-watch",
diff --git a/client/src/components/Panels/Buttons/PanelViewButton.vue b/client/src/components/Panels/Buttons/PanelViewButton.vue
new file mode 100644
index 00000000000..4bb5e22a01a
--- /dev/null
+++ b/client/src/components/Panels/Buttons/PanelViewButton.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/components/Panels/Buttons/PanelViewMenuItem.vue b/client/src/components/Panels/Buttons/PanelViewMenuItem.vue
new file mode 100644
index 00000000000..7e03eb20efc
--- /dev/null
+++ b/client/src/components/Panels/Buttons/PanelViewMenuItem.vue
@@ -0,0 +1,52 @@
+
+
+
+ {{ name }}
+
+
+
+
diff --git a/client/src/components/Panels/Common/ToolSearch.vue b/client/src/components/Panels/Common/ToolSearch.vue
index 11fe95f8f77..67c12215669 100644
--- a/client/src/components/Panels/Common/ToolSearch.vue
+++ b/client/src/components/Panels/Common/ToolSearch.vue
@@ -14,6 +14,10 @@ export default {
DelayedInput,
},
props: {
+ currentPanelView: {
+ type: String,
+ required: true,
+ },
query: {
type: String,
default: "",
@@ -46,7 +50,7 @@ export default {
this.loading = true;
axios
.get(`${getAppRoot()}api/tools`, {
- params: { q },
+ params: { q, view: this.currentPanelView },
})
.then((response) => {
this.loading = false;
diff --git a/client/src/components/Panels/ProviderAwareToolBox.vue b/client/src/components/Panels/ProviderAwareToolBox.vue
new file mode 100644
index 00000000000..ad61547a267
--- /dev/null
+++ b/client/src/components/Panels/ProviderAwareToolBox.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/components/Panels/ProviderAwareToolBoxWorkflow.vue b/client/src/components/Panels/ProviderAwareToolBoxWorkflow.vue
new file mode 100644
index 00000000000..2ab248a6097
--- /dev/null
+++ b/client/src/components/Panels/ProviderAwareToolBoxWorkflow.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/components/Panels/ToolBox.vue b/client/src/components/Panels/ToolBox.vue
index fca9bd812ce..d57a03c7b64 100644
--- a/client/src/components/Panels/ToolBox.vue
+++ b/client/src/components/Panels/ToolBox.vue
@@ -4,12 +4,24 @@
-
+
@@ -52,16 +64,17 @@ import ToolSection from "./Common/ToolSection";
import ToolSearch from "./Common/ToolSearch";
import { UploadButton, openGlobalUploadModal } from "components/Upload";
import FavoritesButton from "./Buttons/FavoritesButton";
+import PanelViewButton from "./Buttons/PanelViewButton";
import { filterToolSections, filterTools } from "./utilities";
import { getGalaxyInstance } from "app";
import { getAppRoot } from "onload";
import _l from "utils/localization";
export default {
- name: "ToolBox",
components: {
UploadButton,
FavoritesButton,
+ PanelViewButton,
ToolSection,
ToolSearch,
},
@@ -81,6 +94,12 @@ export default {
type: Array,
required: true,
},
+ panelViews: {
+ type: Object,
+ },
+ currentPanelView: {
+ type: String,
+ },
storedWorkflowMenuEntries: {
type: Array,
required: true,
@@ -163,6 +182,9 @@ export default {
this.buttonText = this.showSections ? "Hide Sections" : "Show Sections";
this.buttonIcon = this.showSections ? "fa fa-eye-slash" : "fa fa-eye";
},
+ updatePanelView(panelView) {
+ this.$emit("updatePanelView", panelView);
+ },
},
};
diff --git a/client/src/components/Panels/ToolBoxWorkflow.vue b/client/src/components/Panels/ToolBoxWorkflow.vue
index 64e98721273..8847b9d1958 100644
--- a/client/src/components/Panels/ToolBoxWorkflow.vue
+++ b/client/src/components/Panels/ToolBoxWorkflow.vue
@@ -2,11 +2,24 @@