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 2018/01/11 16:18:50 UTC

[airavata-django-portal] 03/04: AIRAVATA-2598 Disable save when app inputs are invalid

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 26dc27f1b81830d09fd8de935622d54f71f56c44
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Jan 11 11:03:28 2018 -0500

    AIRAVATA-2598 Disable save when app inputs are invalid
---
 .../static/django_airavata_api/js/models/Experiment.js | 18 ++++++++++++++++++
 .../js/components/experiment/ExperimentEditor.vue      | 11 +++++++----
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js b/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js
index 89404c8..d635a5f 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js
@@ -74,4 +74,22 @@ export default class Experiment extends BaseModel {
     constructor(data = {}) {
         super(FIELDS, data);
     }
+
+    validate() {
+        let validationResults = {};
+        let experimentInputsValidation = this.experimentInputs
+            .map(experimentInput => {
+                const validation = experimentInput.validate();
+                if (validation && 'value' in validation) {
+                    return {[experimentInput.name]: validation};
+                } else {
+                    return null;
+                }
+            })
+            .reduce((accumulator, currentValue) => Object.assign(accumulator, currentValue), {});
+        if (Object.keys(experimentInputsValidation).length > 0) {
+            validationResults['experimentInputs'] = experimentInputsValidation;
+        }
+        return validationResults;
+    }
 }
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentEditor.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentEditor.vue
index 77cbc00..e2f5581 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentEditor.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentEditor.vue
@@ -69,10 +69,10 @@
         </div>
         <div class="row">
             <div id="col-exp-buttons" class="col">
-                <b-button variant="success" @click="saveAndLaunchExperiment">
+                <b-button variant="success" @click="saveAndLaunchExperiment" :disabled="isSaveDisabled">
                     Save and Launch
                 </b-button>
-                <b-button variant="primary" @click="saveExperiment">
+                <b-button variant="primary" @click="saveExperiment" :disabled="isSaveDisabled">
                     Save
                 </b-button>
             </div>
@@ -87,7 +87,6 @@ import {models, services} from 'django-airavata-api'
 
 export default {
     name: 'edit-experiment',
-    // TODO: clone experiment instead of editing it directly
     props: {
         experiment: {
             type: models.Experiment,
@@ -123,6 +122,10 @@ export default {
                 text: project.name,
             }));
         },
+        isSaveDisabled: function() {
+            const validation = this.localExperiment.validate();
+            return Object.keys(validation).length > 0;
+        },
     },
     methods: {
         saveExperiment: function() {
@@ -160,7 +163,7 @@ export default {
         },
         getApplicationInputFeedback: function(applicationInput) {
             const validation = this.getApplicationInputValidation(applicationInput);
-            return validation !== null ? validation : null;
+            return validation !== null ? validation['value'] : null;
         },
         getApplicationInputValidation: function(applicationInput) {
             const validationResults = applicationInput.validate();

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.