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 2019/04/10 20:32:09 UTC

[airavata-django-portal] branch master updated: AIRAVATA-2986 Disable spinner on experiment summary

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


The following commit(s) were added to refs/heads/master by this push:
     new e6b8957  AIRAVATA-2986 Disable spinner on experiment summary
e6b8957 is described below

commit e6b89576afc8e5e44b19b73e23adc7279c178639
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Wed Apr 10 15:58:50 2019 -0400

    AIRAVATA-2986 Disable spinner on experiment summary
---
 .../api/static/django_airavata_api/js/index.js     |  3 +-
 .../django_airavata_api/js/service_config.js       | 11 +++++++
 .../js/services/ServiceFactory.js                  | 11 +++----
 .../django_airavata_api/js/utils/FetchUtils.js     | 35 ++++++++++++++--------
 .../js/components/experiment/ExperimentSummary.vue |  5 ++--
 .../js/containers/ViewExperimentContainer.vue      |  2 +-
 6 files changed, 45 insertions(+), 22 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 32e53d0..1af6f66 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
@@ -31,7 +31,6 @@ import StoragePreference from "./models/StoragePreference";
 import SummaryType from "./models/SummaryType";
 import UserPermission from "./models/UserPermission";
 
-import FullExperimentService from "./services/FullExperimentService";
 import ProjectService from "./services/ProjectService";
 import UserProfileService from "./services/UserProfileService";
 import CloudJobSubmissionService from "./services/CloudJobSubmissionService";
@@ -97,7 +96,7 @@ const services = {
   DataProductService: ServiceFactory.service("DataProducts"),
   ExperimentSearchService: ServiceFactory.service("ExperimentSearch"),
   ExperimentService: ServiceFactory.service("Experiments"),
-  FullExperimentService,
+  FullExperimentService: ServiceFactory.service("FullExperiments"),
   GatewayResourceProfileService: ServiceFactory.service(
     "GatewayResourceProfiles"
   ),
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/service_config.js b/django_airavata/apps/api/static/django_airavata_api/js/service_config.js
index 987db57..2adb6f2 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/service_config.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/service_config.js
@@ -7,6 +7,7 @@ import CredentialSummary from "./models/CredentialSummary";
 import DataProduct from "./models/DataProduct";
 import Experiment from "./models/Experiment";
 import ExperimentSummary from "./models/ExperimentSummary";
+import FullExperiment from "./models/FullExperiment";
 import GatewayResourceProfile from "./models/GatewayResourceProfile";
 import Group from "./models/Group";
 import GroupResourceProfile from "./models/GroupResourceProfile";
@@ -180,6 +181,16 @@ export default {
     pagination: true,
     queryParams: ["limit", "offset"]
   },
+  FullExperiments: {
+    url: "/api/full-experiments",
+    viewSet: [
+      {
+        name: "retrieve",
+        initialDataParam: "initialFullExperimentData"
+      }
+    ],
+    modelClass: FullExperiment
+  },
   GatewayResourceProfiles: {
     url: "/api/gateway-resource-profiles/",
     viewSet: true,
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/services/ServiceFactory.js b/django_airavata/apps/api/static/django_airavata_api/js/services/ServiceFactory.js
index 702cb45..c409d33 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/services/ServiceFactory.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/services/ServiceFactory.js
@@ -198,7 +198,7 @@ class ServiceFactory {
       let queryParamsMapping = parseQueryMapping(config.queryParams);
       serviceObj[functionName] = function(
         params = {},
-        { ignoreErrors } = { ignoreErrors: false }
+        { ignoreErrors, showSpinner } = { ignoreErrors: false, showSpinner: true }
       ) {
         let url = config.url;
         let paramKeys = Object.keys(params);
@@ -258,22 +258,23 @@ class ServiceFactory {
         switch (config.requestType.toLowerCase()) {
           case postKey:
             return FetchUtils.post(url, bodyParams, queryParams, {
-              ignoreErrors
+              ignoreErrors,
+              showSpinner
             }).then(resultHandler);
           case getKey:
             if (initialData) {
               return Promise.resolve(paginationHandler(initialData));
             } else {
-              return FetchUtils.get(url, queryParams, { ignoreErrors }).then(
+              return FetchUtils.get(url, queryParams, { ignoreErrors, showSpinner }).then(
                 paginationHandler
               );
             }
           case putKey:
-            return FetchUtils.put(url, bodyParams, { ignoreErrors }).then(
+            return FetchUtils.put(url, bodyParams, { ignoreErrors, showSpinner }).then(
               resultHandler
             );
           case delKey:
-            return FetchUtils.delete(url, { ignoreErrors });
+            return FetchUtils.delete(url, { ignoreErrors, showSpinner });
         }
       };
     }
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/utils/FetchUtils.js b/django_airavata/apps/api/static/django_airavata_api/js/utils/FetchUtils.js
index ac40a4c..11efe6b 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/utils/FetchUtils.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/utils/FetchUtils.js
@@ -70,7 +70,7 @@ export default {
     url,
     body,
     queryParams = "",
-    { mediaType = "application/json", ignoreErrors = false } = {}
+    { mediaType = "application/json", ignoreErrors = false, showSpinner = true } = {}
   ) {
     var headers = this.createHeaders(mediaType);
     // Browsers automatically handle content type for FormData request bodies
@@ -86,13 +86,14 @@ export default {
           : JSON.stringify(body),
       headers: headers,
       credentials: "same-origin",
-      ignoreErrors
+      ignoreErrors,
+      showSpinner
     });
   },
   put: function(
     url,
     body,
-    { mediaType = "application/json", ignoreErrors = false } = {}
+    { mediaType = "application/json", ignoreErrors = false, showSpinner = true } = {}
   ) {
     var headers = this.createHeaders(mediaType);
     return this.processFetch(url, {
@@ -103,13 +104,14 @@ export default {
           : JSON.stringify(body),
       headers: headers,
       credentials: "same-origin",
-      ignoreErrors
+      ignoreErrors,
+      showSpinner
     });
   },
   get: function(
     url,
     queryParams = "",
-    { mediaType = "application/json", ignoreErrors = false } = {}
+    { mediaType = "application/json", ignoreErrors = false, showSpinner = true } = {}
   ) {
     if (queryParams && typeof queryParams != "string") {
       queryParams = Object.keys(queryParams)
@@ -127,16 +129,18 @@ export default {
       method: "get",
       headers: headers,
       credentials: "same-origin",
-      ignoreErrors
+      ignoreErrors,
+      showSpinner
     });
   },
-  delete: function(url, { ignoreErrors = false } = {}) {
+  delete: function(url, { ignoreErrors = false, showSpinner = true } = {}) {
     var headers = this.createHeaders();
     return this.processFetch(url, {
       method: "delete",
       headers: headers,
       credentials: "same-origin",
-      ignoreErrors
+      ignoreErrors,
+      showSpinner
     });
   },
   processFetch: function(
@@ -146,7 +150,8 @@ export default {
       headers,
       credentials = "same-origin",
       body,
-      ignoreErrors = false
+      ignoreErrors = false,
+      showSpinner = true
     }
   ) {
     const fetchConfig = {
@@ -157,11 +162,15 @@ export default {
     if (body) {
       fetchConfig.body = body;
     }
-    incrementCount();
+    if (showSpinner) {
+      incrementCount();
+    }
     return fetch(url, fetchConfig)
       .then(
         response => {
-          decrementCount();
+          if (showSpinner) {
+            decrementCount();
+          }
           if (response.ok) {
             // No response body
             if (response.status === 204) {
@@ -200,7 +209,9 @@ export default {
           }
         },
         error => {
-          decrementCount();
+          if (showSpinner) {
+            decrementCount();
+          }
           error.details = this.createErrorDetails({ url, body });
           throw error;
         }
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue
index 4ffa668..bcfbe3e 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue
@@ -212,8 +212,9 @@ export default {
   },
   methods: {
     loadExperiment: function() {
-      return services.FullExperimentService.get(
-        this.localFullExperiment.experiment.experimentId
+      return services.FullExperimentService.retrieve(
+        { lookup: this.localFullExperiment.experiment.experimentId },
+        { showSpinner: false }
       ).then(exp => (this.localFullExperiment = exp));
     },
     initPollingExperiment: function() {
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ViewExperimentContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ViewExperimentContainer.vue
index 94df0d6..a04e258 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ViewExperimentContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/ViewExperimentContainer.vue
@@ -32,7 +32,7 @@ export default {
     computed: {
     },
     beforeMount: function () {
-        services.FullExperimentService.get(this.initialFullExperimentData.experimentId, this.initialFullExperimentData)
+        services.FullExperimentService.retrieve({lookup: this.initialFullExperimentData.experimentId, initialFullExperimentData: this.initialFullExperimentData})
             .then(exp => this.fullExperiment = exp);
     }
 }