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/04/05 14:35:51 UTC

[airavata-django-portal] branch master updated (6e3d9ad -> 07c2a28)

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

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


    from 6e3d9ad  GroupResourceProfileSelector component
     new 18fead6  AIRAVATA-2614 Color coded experiment status badge
     new a2ba6a0  AIRAVATA-2614 Add View link
     new 07c2a28  AIRAVATA-2614 Add Application name to experiment list

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../api/static/django_airavata_api/js/index.js     |  2 ++
 .../django_airavata_api/js/models/Experiment.js    |  6 +---
 .../js/models/ExperimentState.js                   |  7 +++++
 .../js/services/ApplicationInterfaceService.js     |  3 +-
 .../experiment/ExperimentStatusBadge.vue           | 33 +++++++++++++++++++++
 .../js/containers/ExperimentListContainer.vue      | 34 +++++++++++++++++-----
 6 files changed, 72 insertions(+), 13 deletions(-)
 create mode 100644 django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentStatusBadge.vue

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.

[airavata-django-portal] 01/03: AIRAVATA-2614 Color coded experiment status badge

Posted by ma...@apache.org.
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 18fead63cf8352f4a962d9163473b49a3c68caf5
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Apr 5 09:48:48 2018 -0400

    AIRAVATA-2614 Color coded experiment status badge
---
 .../api/static/django_airavata_api/js/index.js     |  2 ++
 .../django_airavata_api/js/models/Experiment.js    |  6 +---
 .../js/models/ExperimentState.js                   |  7 +++++
 .../experiment/ExperimentStatusBadge.vue           | 33 ++++++++++++++++++++++
 .../js/containers/ExperimentListContainer.vue      |  5 +++-
 5 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/django_airavata/apps/api/static/django_airavata_api/js/index.js b/django_airavata/apps/api/static/django_airavata_api/js/index.js
index 36b9725..afe7afb 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/index.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/index.js
@@ -3,6 +3,7 @@ import ApplicationInterfaceDefinition from './models/ApplicationInterfaceDefinit
 import ApplicationModule from './models/ApplicationModule'
 import DataType from './models/DataType'
 import Experiment from './models/Experiment'
+import ExperimentState from './models/ExperimentState'
 import InputDataObjectType from './models/InputDataObjectType'
 import OutputDataObjectType from './models/OutputDataObjectType'
 import Project from './models/Project'
@@ -29,6 +30,7 @@ exports.models = {
     ApplicationModule,
     DataType,
     Experiment,
+    ExperimentState,
     FullExperiment,
     InputDataObjectType,
     OutputDataObjectType,
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 6f5ad6d..90e6637 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
@@ -101,13 +101,9 @@ export default class Experiment extends BaseModel {
     }
 
     get isProgressing() {
-        const progressingStates = [ExperimentState.SCHEDULED,
-                                   ExperimentState.LAUNCHED,
-                                   ExperimentState.EXECUTING,
-                                   ExperimentState.CANCELING];
         return this.experimentStatus
             && this.experimentStatus.length > 0
-            && progressingStates.indexOf(this.experimentStatus[0].state) >= 0;
+            && this.experimentStatus[0].state.isProgressing;
     }
 
     get hasLaunched() {
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/ExperimentState.js b/django_airavata/apps/api/static/django_airavata_api/js/models/ExperimentState.js
index ab3a626..3181b87 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/models/ExperimentState.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/models/ExperimentState.js
@@ -1,6 +1,13 @@
 import BaseEnum from './BaseEnum'
 
 export default class ExperimentState extends BaseEnum {
+    get isProgressing() {
+        const progressingStates = [ExperimentState.SCHEDULED,
+                                   ExperimentState.LAUNCHED,
+                                   ExperimentState.EXECUTING,
+                                   ExperimentState.CANCELING];
+        return progressingStates.indexOf(this) >= 0;
+    }
 }
 ExperimentState.init([
     'CREATED',
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentStatusBadge.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentStatusBadge.vue
new file mode 100644
index 0000000..b8bfcdd
--- /dev/null
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentStatusBadge.vue
@@ -0,0 +1,33 @@
+<template>
+    <b-badge :variant="badgeVariant">{{ statusName }}</b-badge>
+</template>
+
+<script>
+import { models, services } from 'django-airavata-api'
+
+export default {
+    name: 'experiment-status-badge',
+    props: {
+        statusName: {
+            type: String,
+            required: true
+        }
+    },
+    computed: {
+        experimentState: function() {
+            return models.ExperimentState.byName(this.statusName);
+        },
+        badgeVariant: function() {
+            if (this.experimentState.isProgressing) {
+                return "secondary";
+            } else if (this.experimentState === models.ExperimentState.COMPLETED) {
+                return "success";
+            } else if (this.experimentState === models.ExperimentState.FAILED) {
+                return "danger";
+            } else {
+                return "info";
+            }
+        }
+    }
+}
+</script>
\ No newline at end of file
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
index 854f0f4..8879781 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
@@ -22,7 +22,7 @@
                                 <tr v-for="experiment in experiments" :key="experiment.experimentId">
                                     <td><a :href="'/workspace/experiments/' + encodeURIComponent(experiment.experimentId) + '/'">{{experiment.name}}</a></td>
                                     <td><span :title="experiment.creationTime">{{ fromNow(experiment.creationTime) }}</span></td>
-                                    <td>{{experiment.experimentStatus}}</td>
+                                    <td><experiment-status-badge :statusName="experiment.experimentStatus" /></td>
                                     <td></td>
                                 </tr>
                             </tbody>
@@ -41,6 +41,8 @@
 import { models, services } from 'django-airavata-api'
 import { components as comps } from 'django-airavata-common-ui'
 
+import ExperimentStatusBadge from '../components/experiment/ExperimentStatusBadge.vue'
+
 import moment from 'moment';
 
 export default {
@@ -53,6 +55,7 @@ export default {
     },
     components: {
         'pager': comps.Pager,
+        'experiment-status-badge': ExperimentStatusBadge,
     },
     methods: {
         nextExperiments: function(event) {

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.

[airavata-django-portal] 02/03: AIRAVATA-2614 Add View link

Posted by ma...@apache.org.
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 a2ba6a0af0b76a1083d66b26ef933cd948dba434
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Apr 5 10:09:31 2018 -0400

    AIRAVATA-2614 Add View link
---
 .../js/containers/ExperimentListContainer.vue                    | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
index 8879781..efaa360 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
@@ -20,10 +20,12 @@
                             </thead>
                             <tbody>
                                 <tr v-for="experiment in experiments" :key="experiment.experimentId">
-                                    <td><a :href="'/workspace/experiments/' + encodeURIComponent(experiment.experimentId) + '/'">{{experiment.name}}</a></td>
+                                    <td>{{experiment.name}}</td>
                                     <td><span :title="experiment.creationTime">{{ fromNow(experiment.creationTime) }}</span></td>
                                     <td><experiment-status-badge :statusName="experiment.experimentStatus" /></td>
-                                    <td></td>
+                                    <td>
+                                        <a :href="viewLink(experiment)">View <i class="fa fa-bar-chart" aria-hidden="true"></i></a>
+                                    </td>
                                 </tr>
                             </tbody>
                         </table>
@@ -66,6 +68,9 @@ export default {
         },
         fromNow: function(date) {
             return moment(date).fromNow();
+        },
+        viewLink: function(experiment) {
+            return '/workspace/experiments/' + encodeURIComponent(experiment.experimentId) + '/';
         }
     },
     computed: {

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.

[airavata-django-portal] 03/03: AIRAVATA-2614 Add Application name to experiment list

Posted by ma...@apache.org.
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 07c2a280fa614c942ecf7179f6a0a0aa2d5992dd
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Apr 5 10:35:10 2018 -0400

    AIRAVATA-2614 Add Application name to experiment list
---
 .../js/services/ApplicationInterfaceService.js       |  3 ++-
 .../js/containers/ExperimentListContainer.vue        | 20 ++++++++++++++++----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/django_airavata/apps/api/static/django_airavata_api/js/services/ApplicationInterfaceService.js b/django_airavata/apps/api/static/django_airavata_api/js/services/ApplicationInterfaceService.js
index 796c666..ce693b7 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/services/ApplicationInterfaceService.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/services/ApplicationInterfaceService.js
@@ -16,7 +16,8 @@ class ApplicationIterfaceService {
     }
 
     get(appInterfaceId) {
-        // TODO
+        return FetchUtils.get('/api/application-interfaces/' + encodeURIComponent(appInterfaceId) + '/')
+            .then(json => new ApplicationInterfaceDefinition(json))
     }
 
     getForAppModuleId(appModuleId) {
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
index efaa360..9966940 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ExperimentListContainer.vue
@@ -13,6 +13,7 @@
                             <thead>
                                 <tr>
                                     <th>Name</th>
+                                    <th>Application</th>
                                     <th>Creation Time</th>
                                     <th>Status</th>
                                     <th>Actions</th>
@@ -21,6 +22,7 @@
                             <tbody>
                                 <tr v-for="experiment in experiments" :key="experiment.experimentId">
                                     <td>{{experiment.name}}</td>
+                                    <td>{{applicationName(experiment)}}</td>
                                     <td><span :title="experiment.creationTime">{{ fromNow(experiment.creationTime) }}</span></td>
                                     <td><experiment-status-badge :statusName="experiment.experimentStatus" /></td>
                                     <td>
@@ -53,6 +55,7 @@ export default {
     data () {
         return {
             experimentsPaginator: null,
+            applicationInterfaces: {},
         }
     },
     components: {
@@ -71,6 +74,18 @@ export default {
         },
         viewLink: function(experiment) {
             return '/workspace/experiments/' + encodeURIComponent(experiment.experimentId) + '/';
+        },
+        applicationName: function(experiment) {
+            if (experiment.executionId in this.applicationInterfaces){
+                if (this.applicationInterfaces[experiment.executionId] instanceof models.ApplicationInterfaceDefinition) {
+                    return this.applicationInterfaces[experiment.executionId].applicationName;
+                }
+            } else {
+                const request = services.ApplicationInterfaceService.get(experiment.executionId)
+                    .then(result => this.$set(this.applicationInterfaces, experiment.executionId, result));
+                this.$set(this.applicationInterfaces, experiment.executionId, request);
+            }
+            return "...";
         }
     },
     computed: {
@@ -80,10 +95,7 @@ export default {
     },
     beforeMount: function () {
         services.ExperimentSearchService.list(this.initialExperimentsData)
-            .then(result => {
-                this.experimentsPaginator = result
-                console.log("experiments", result.results);
-            });
+            .then(result => this.experimentsPaginator = result);
     }
 }
 </script>

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.