You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2021/07/01 17:03:06 UTC

[airavata-django-portal] 02/05: AIRAVATA-3453 Adding post-save/launch navigation

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git

commit 72486c672990b1bd55db7e9799aa5557a4f9d750
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Thu Jun 24 16:59:08 2021 -0400

    AIRAVATA-3453 Adding post-save/launch navigation
    
    The default behavior is overrideable via custom events.
---
 .../js/web-components/ExperimentEditor.vue         | 39 +++++++++++++++++++---
 1 file changed, 35 insertions(+), 4 deletions(-)

diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/web-components/ExperimentEditor.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/web-components/ExperimentEditor.vue
index 291bb29..22c1fbe 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/web-components/ExperimentEditor.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/web-components/ExperimentEditor.vue
@@ -62,6 +62,7 @@ import {
 
 import Vue from "vue";
 import { BootstrapVue } from "bootstrap-vue";
+import urls from "../utils/urls";
 Vue.use(BootstrapVue);
 
 export default {
@@ -145,15 +146,45 @@ export default {
         return;
       }
       if (event.submitter.name === "save-experiment-button") {
-        this.saveExperiment();
+        await saveExperiment(this.experiment);
+        this.postSave();
+        return;
       } else {
         // Default submit button handling is save and launch
-        const experiment = await this.saveExperiment();
+        const experiment = await saveExperiment(this.experiment);
         await launchExperiment(experiment.experimentId);
+        this.postSaveAndLaunch(experiment);
+        return;
       }
     },
-    async saveExperiment() {
-      return await saveExperiment(this.experiment);
+    postSave() {
+      // client code can listen for 'saved' and preventDefault() on it to handle
+      // it differently. Default action is to navigate to experiments list.
+      const savedEvent = new CustomEvent("saved", {
+        detail: [this.experiment],
+        cancelable: true,
+        composed: true,
+      });
+      this.$el.dispatchEvent(savedEvent);
+      if (savedEvent.defaultPrevented) {
+        return;
+      }
+      urls.navigateToExperimentsList();
+    },
+    postSaveAndLaunch(experiment) {
+      // client code can listen for 'saved-and-launched' and preventDefault() on
+      // it to handle it differently. Default action is to navigate to
+      // the experiment summary page.
+      const savedAndLaunchedEvent = new CustomEvent("saved-and-launched", {
+        detail: [this.experiment],
+        cancelable: true,
+        composed: true,
+      });
+      this.$el.dispatchEvent(savedAndLaunchedEvent);
+      if (savedAndLaunchedEvent.defaultPrevented) {
+        return;
+      }
+      urls.navigateToViewExperiment(experiment, { launching: true });
     },
     async loadExperiment() {
       if (this.experimentId) {