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>.