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 2017/11/17 22:24:23 UTC

[airavata-django-portal] 01/02: AIRAVATA-2538 client side validation (WIP)

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 6b5ade60684c2cc72873a28c786cfc279fd8462b
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Nov 17 13:54:54 2017 -0500

    AIRAVATA-2538 client side validation (WIP)
---
 .../api/static/django_airavata_api/js/models/Project.js   | 10 ++++++++++
 .../js/views/ProjectListContainer.vue                     | 15 ++++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js b/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js
index f5d1608..2180806 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js
@@ -13,6 +13,16 @@ export default class Project extends BaseModel {
         this.copyData(data);
     }
 
+    validateForCreate() {
+        console.log("validateForCreate", this.name);
+        if (this.name === null || this.name.trim() === "") {
+            return {
+                name: ["Please provide a name."]
+            }
+        }
+        return null;
+    }
+
     toJSONForCreate() {
         // Remaining fields just get defaulted
         return JSON.stringify(this, ["name", "description"]);
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue
index 1684f98..d1347b2 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue
@@ -10,16 +10,16 @@
                 <!-- TODO: factor modal out into separate, reusable component -->
                 <b-modal id="modal-new-project" ref="modalNewProject" title="Create New Project" v-on:ok="onCreateProject">
                     <b-form @submit="onCreateProject" novalidate>
-                        <b-form-group label="Project Name" label-for="new-project-name" v-bind:feedback="newProjectFields.name.feedback" v-bind:state="newProjectFields.name.state">
+                        <b-form-group label="Project Name" label-for="new-project-name" v-bind:feedback="newProjectNameFeedback" v-bind:state="newProjectNameState">
                             <b-form-input id="new-project-name"
                                 type="text" v-model="newProject.name" required
                                 placeholder="Project name"
-                                v-bind:state="newProjectFields.name.state"></b-form-input>
+                                v-bind:state="newProjectNameState"></b-form-input>
                         </b-form-group>
                         <b-form-group label="Project Description" label-for="new-project-description">
                             <b-form-textarea id="new-project-description"
                                 type="text" v-model="newProject.description"
-                                placeholder="Project description"
+                                placeholder="(Optional) Project description"
                                 :rows="3"></b-form-textarea>
                         </b-form-group>
                     </b-form>
@@ -99,6 +99,15 @@ export default {
         projects: function() {
             return this.projectsPaginator ? this.projectsPaginator.results : null;
         },
+        newProjectValidationData: function() {
+            return this.newProject.validateForCreate();
+        },
+        newProjectNameState: function() {
+            return (this.newProjectValidationData && 'name' in this.newProjectValidationData) ? 'invalid' : null;
+        },
+        newProjectNameFeedback: function() {
+            return (this.newProjectValidationData && 'name' in this.newProjectValidationData) ? this.newProjectValidationData.name.join('; ') : null;
+        },
     },
     beforeMount: function () {
         services.ProjectService.list(this.initialProjectsData)

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