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 2019/09/13 18:29:53 UTC

[airavata-django-portal] 01/02: Adding convenience AppInterface.createExperiment method

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

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

commit 461dbc10d219a340a50f55fcc53aa3717e255041
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri Sep 13 14:29:30 2019 -0400

    Adding convenience AppInterface.createExperiment method
---
 .../js/models/ApplicationInterfaceDefinition.js    |  8 ++++
 .../js/containers/CreateExperimentContainer.vue    | 48 +++++++++++-----------
 2 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/ApplicationInterfaceDefinition.js b/django_airavata/apps/api/static/django_airavata_api/js/models/ApplicationInterfaceDefinition.js
index 9ca07f0..8aa28e2 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/models/ApplicationInterfaceDefinition.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/models/ApplicationInterfaceDefinition.js
@@ -2,6 +2,7 @@ import BaseModel from "./BaseModel";
 import InputDataObjectType from "./InputDataObjectType";
 import OutputDataObjectType from "./OutputDataObjectType";
 import DataType from "./DataType";
+import Experiment from "./Experiment";
 
 const FIELDS = [
   "applicationInterfaceId",
@@ -60,4 +61,11 @@ export default class ApplicationInterfaceDefinition extends BaseModel {
     }
     this.applicationOutputs.push(stdout, stderr);
   }
+
+  createExperiment() {
+    const experiment = new Experiment();
+    experiment.populateInputsOutputsFromApplicationInterface(this);
+    experiment.executionId = this.applicationInterfaceId;
+    return experiment;
+  }
 }
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/CreateExperimentContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/CreateExperimentContainer.vue
index 6c93a6e..ff17345 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/CreateExperimentContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/CreateExperimentContainer.vue
@@ -11,7 +11,7 @@
 </template>
 
 <script>
-import { models, services } from "django-airavata-api";
+import { services } from "django-airavata-api";
 import { notifications } from "django-airavata-common-ui";
 import ExperimentEditor from "../components/experiment/ExperimentEditor.vue";
 import urls from "../utils/urls";
@@ -37,40 +37,40 @@ export default {
     },
     handleSavedAndLaunchedExperiment: function(experiment) {
       // Redirect to experiment view
-      urls.navigateToViewExperiment(experiment, {launching: true});
+      urls.navigateToViewExperiment(experiment, { launching: true });
     }
   },
   computed: {},
   mounted: function() {
-    const experiment = new models.Experiment();
     const loadAppModule = services.ApplicationModuleService.retrieve(
       { lookup: this.appModuleId },
       { ignoreErrors: true }
-    ).then(appModule => {
-      experiment.experimentName =
-        appModule.appModuleName + " on " + moment().format("lll");
-      this.appModule = appModule;
-    });
+    );
     const loadAppInterface = services.ApplicationModuleService.getApplicationInterface(
       { lookup: this.appModuleId },
       { ignoreErrors: true }
-    ).then(appInterface => {
-      experiment.populateInputsOutputsFromApplicationInterface(appInterface);
-      if (this.userInputFiles) {
-        Object.keys(this.userInputFiles).forEach(k => {
-          const experimentInput = experiment.experimentInputs.find(inp => inp.name === k);
-          if (experimentInput) {
-            experimentInput.value = this.userInputFiles[k];
-          }
-        })
-      }
-      experiment.executionId = appInterface.applicationInterfaceId;
-    });
-    if (this.experimentDataDir) {
-      experiment.userConfigurationData.experimentDataDir = this.experimentDataDir;
-    }
+    );
     Promise.all([loadAppModule, loadAppInterface])
-      .then(() => (this.experiment = experiment))
+      .then(([appModule, appInterface]) => {
+        const experiment = appInterface.createExperiment();
+        experiment.experimentName =
+          appModule.appModuleName + " on " + moment().format("lll");
+        this.appModule = appModule;
+        if (this.userInputFiles) {
+          Object.keys(this.userInputFiles).forEach(k => {
+            const experimentInput = experiment.experimentInputs.find(
+              inp => inp.name === k
+            );
+            if (experimentInput) {
+              experimentInput.value = this.userInputFiles[k];
+            }
+          });
+        }
+        if (this.experimentDataDir) {
+          experiment.userConfigurationData.experimentDataDir = this.experimentDataDir;
+        }
+        this.experiment = experiment;
+      })
       .catch(error => {
         notifications.NotificationList.addError(error);
       });