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 <[email protected]> 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 "[email protected]" <[email protected]>.
