Merge pull request #12810 from OlegZharkov/wf-bookmark-fix

refactor workflow bookmark
This commit is contained in:
Björn Grüning
2021-10-30 16:14:21 +02:00
committed by GitHub
+27 -19
View File
@@ -59,10 +59,12 @@
<font-awesome-icon v-if="row.item.shared" v-b-tooltip.hover title="Shared" icon="share-alt" />
</template>
<template v-slot:cell(show_in_tool_panel)="row">
<b-form-checkbox
:checked="row.item.show_in_tool_panel"
@change="(checked) => bookmarkWorkflow(row.item, checked)"
/>
<b-link @click="bookmarkWorkflow(row.item, true)" v-if="row.item.show_in_tool_panel">
<font-awesome-icon :icon="['fas', 'star']" />
</b-link>
<b-link @click="bookmarkWorkflow(row.item, false)" v-else>
<font-awesome-icon :icon="['far', 'star']" />
</b-link>
</template>
<template v-slot:cell(update_time)="data">
<UtcDate :date="data.value" mode="elapsed" />
@@ -89,23 +91,17 @@
import _l from "utils/localization";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { library } from "@fortawesome/fontawesome-svg-core";
import { faPlus } from "@fortawesome/free-solid-svg-icons";
import { faSpinner } from "@fortawesome/free-solid-svg-icons";
import { faUpload } from "@fortawesome/free-solid-svg-icons";
import { faGlobe } from "@fortawesome/free-solid-svg-icons";
import { faShareAlt } from "@fortawesome/free-solid-svg-icons";
import { faPlus, faShareAlt, faGlobe, faUpload, faSpinner, faStar } from "@fortawesome/free-solid-svg-icons";
import { faStar as farStar } from "@fortawesome/free-regular-svg-icons";
import { getAppRoot } from "onload/loadConfig";
import { Services } from "./services";
import Tags from "components/Common/Tags";
import WorkflowDropdown from "./WorkflowDropdown";
import UtcDate from "components/UtcDate";
import { getGalaxyInstance } from "app";
library.add(faPlus, faUpload, faSpinner, faGlobe, faShareAlt, farStar, faStar);
library.add(faPlus);
library.add(faUpload);
library.add(faSpinner);
library.add(faGlobe);
library.add(faShareAlt);
export default {
components: {
FontAwesomeIcon,
@@ -203,8 +199,6 @@ export default {
window.location = `${this.root}workflows/run?id=${workflow.id}`;
},
bookmarkWorkflow: function (workflow, checked) {
// This reloads the whole page, so that the workflow appears in the tool panel.
// Ideally we would notify only the tool panel of a change
const id = workflow.id;
const tags = workflow.tags;
const data = {
@@ -213,8 +207,22 @@ export default {
};
this.services
.updateWorkflow(id, data)
.then(() => {
window.location = `${getAppRoot()}workflows/list`;
.then(({ id, name }) => {
if (checked) {
const indexToRemove = getGalaxyInstance().config.stored_workflow_menu_entries.findIndex(
(workflow) => workflow.id === id
);
getGalaxyInstance().config.stored_workflow_menu_entries.splice(indexToRemove, 1);
} else {
getGalaxyInstance().config.stored_workflow_menu_entries.push({ id: id, name: name });
}
this.workflows.find((workflow) => {
if (workflow.id === id) {
workflow.show_in_tool_panel = !checked;
return true;
}
});
})
.catch((error) => {
this.onError(error);