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 2021/06/23 21:20:16 UTC

[airavata-django-portal] branch develop updated (0590d3b -> a9bb658)

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

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


    from 0590d3b  AIRAVATA-3322 Fix Pager display for results that don't return counts
     new 9bddc7a  Revert "AIRAVATA-3322 Fix Pager display for results that don't return counts"
     new a9bb658  Revert "AIRAVATA-3322 Paginated experiment statistics view"

The 2 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:
 .../statistics/ExperimentStatisticsContainer.vue   | 43 ++++++----------------
 django_airavata/apps/api/serializers.py            | 17 ++++-----
 .../django_airavata_api/js/service_config.js       |  3 --
 .../js/utils/PaginationIterator.js                 | 11 ++----
 django_airavata/apps/api/views.py                  | 22 +++--------
 .../static/common/js/components/Pager.vue          |  9 +----
 6 files changed, 27 insertions(+), 78 deletions(-)

[airavata-django-portal] 02/02: Revert "AIRAVATA-3322 Paginated experiment statistics view"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit a9bb65897fbfcf81032d6a51391de25594c3934d
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Wed Jun 23 17:19:45 2021 -0400

    Revert "AIRAVATA-3322 Paginated experiment statistics view"
    
    This reverts commit bd2474661441528c425a4a5e049400a1baf29d27.
---
 .../statistics/ExperimentStatisticsContainer.vue   | 43 ++++++----------------
 django_airavata/apps/api/serializers.py            | 17 ++++-----
 .../django_airavata_api/js/service_config.js       |  3 --
 .../js/utils/PaginationIterator.js                 | 11 ++----
 django_airavata/apps/api/views.py                  | 22 +++--------
 .../static/common/js/components/Pager.vue          |  6 ---
 6 files changed, 26 insertions(+), 76 deletions(-)

diff --git a/django_airavata/apps/admin/static/django_airavata_admin/src/components/statistics/ExperimentStatisticsContainer.vue b/django_airavata/apps/admin/static/django_airavata_admin/src/components/statistics/ExperimentStatisticsContainer.vue
index 8561d3c..c15d0f1 100644
--- a/django_airavata/apps/admin/static/django_airavata_admin/src/components/statistics/ExperimentStatisticsContainer.vue
+++ b/django_airavata/apps/admin/static/django_airavata_admin/src/components/statistics/ExperimentStatisticsContainer.vue
@@ -151,7 +151,7 @@
                 header-text-variant="white"
                 :count="experimentStatistics.allExperimentCount || 0"
                 title="Total Experiments"
-                @click="selectExperiments('allExperiments')"
+                @click="selectedExperimentSummariesKey = 'allExperiments'"
               >
                 <span slot="link-text">All</span>
               </experiment-statistics-card>
@@ -162,7 +162,7 @@
                 :count="experimentStatistics.createdExperimentCount || 0"
                 :states="createdStates"
                 title="Created Experiments"
-                @click="selectExperiments('createdExperiments')"
+                @click="selectedExperimentSummariesKey = 'createdExperiments'"
               >
               </experiment-statistics-card>
             </div>
@@ -173,7 +173,7 @@
                 :count="experimentStatistics.runningExperimentCount || 0"
                 :states="runningStates"
                 title="Running Experiments"
-                @click="selectExperiments('runningExperiments')"
+                @click="selectedExperimentSummariesKey = 'runningExperiments'"
               >
               </experiment-statistics-card>
             </div>
@@ -185,7 +185,7 @@
                 :count="experimentStatistics.completedExperimentCount || 0"
                 :states="completedStates"
                 title="Completed Experiments"
-                @click="selectExperiments('completedExperiments')"
+                @click="selectedExperimentSummariesKey = 'completedExperiments'"
               >
               </experiment-statistics-card>
             </div>
@@ -197,7 +197,7 @@
                 :count="experimentStatistics.cancelledExperimentCount || 0"
                 :states="canceledStates"
                 title="Cancelled Experiments"
-                @click="selectExperiments('cancelledExperiments')"
+                @click="selectedExperimentSummariesKey = 'cancelledExperiments'"
               >
               </experiment-statistics-card>
             </div>
@@ -209,7 +209,7 @@
                 :count="experimentStatistics.failedExperimentCount || 0"
                 :states="failedStates"
                 title="Failed Experiments"
-                @click="selectExperiments('failedExperiments')"
+                @click="selectedExperimentSummariesKey = 'failedExperiments'"
               >
               </experiment-statistics-card>
             </div>
@@ -240,12 +240,6 @@
                   </template>
                 </b-table>
               </b-card>
-              <pager
-                v-if="experimentStatistics.allExperimentCount > 0"
-                :paginator="experimentStatisticsPaginator"
-                @next="experimentStatisticsPaginator.next()"
-                @previous="experimentStatisticsPaginator.previous()"
-              ></pager>
             </div>
           </div>
         </b-tab>
@@ -285,7 +279,7 @@ export default {
     const fromTime = new Date().fp_incr(0);
     const toTime = new Date().fp_incr(1);
     return {
-      experimentStatisticsPaginator: null,
+      experimentStatistics: {},
       selectedExperimentSummariesKey: null,
       fromTime: fromTime,
       toTime: toTime,
@@ -321,14 +315,8 @@ export default {
     "compute-resource-name": components.ComputeResourceName,
     "human-date": components.HumanDate,
     "experiment-status-badge": components.ExperimentStatusBadge,
-    pager: components.Pager,
   },
   computed: {
-    experimentStatistics() {
-      return this.experimentStatisticsPaginator
-        ? this.experimentStatisticsPaginator.results
-        : {};
-    },
     createdStates() {
       // TODO: moved to ExperimentStatistics model
       return [models.ExperimentState.CREATED, models.ExperimentState.VALIDATED];
@@ -487,10 +475,8 @@ export default {
       if (this.hostnameFilterEnabled && this.hostnameFilter) {
         requestData["resourceHostName"] = this.hostnameFilter;
       }
-      return services.ExperimentStatisticsService.get(requestData).then(
-        (stats) => {
-          this.experimentStatisticsPaginator = stats;
-        }
+      services.ExperimentStatisticsService.get(requestData).then(
+        (stats) => (this.experimentStatistics = stats)
       );
     },
     getPast24Hours() {
@@ -498,11 +484,13 @@ export default {
       //this.fromTime = new Date(this.fromTime.setHours(0,0,0));
       this.toTime = new Date().fp_incr(1);
       this.updateDateRange();
+      this.loadStatistics();
     },
     getPastWeek() {
       this.fromTime = new Date().fp_incr(-7);
       this.toTime = new Date().fp_incr(1);
       this.updateDateRange();
+      this.loadStatistics();
     },
     updateDateRange() {
       this.dateRange = [
@@ -564,15 +552,6 @@ export default {
     scrollTabsIntoView() {
       this.$refs.tabs.$el.scrollIntoView({ behavior: "smooth" });
     },
-    selectExperiments(experimentSummariesKey) {
-      if (
-        this.experimentStatisticsPaginator &&
-        this.experimentStatisticsPaginator.offset > 0
-      ) {
-        this.loadStatistics();
-      }
-      this.selectedExperimentSummariesKey = experimentSummariesKey;
-    },
   },
 };
 </script>
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 700bbf6..ec68e11 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -531,7 +531,7 @@ class FullExperimentSerializer(serializers.Serializer):
         raise Exception("Not implemented")
 
 
-class BaseExperimentSummarySerializer(
+class ExperimentSummarySerializer(
         thrift_utils.create_serializer_class(ExperimentSummaryModel)):
     creationTime = UTCPosixTimestampDateTimeField()
     statusUpdateTime = UTCPosixTimestampDateTimeField()
@@ -543,9 +543,6 @@ class BaseExperimentSummarySerializer(
         view_name='django_airavata_api:project-detail',
         lookup_field='projectId',
         lookup_url_kwarg='project_id')
-
-
-class ExperimentSummarySerializer(BaseExperimentSummarySerializer):
     userHasWriteAccess = serializers.SerializerMethodField()
 
     def get_userHasWriteAccess(self, experiment):
@@ -992,12 +989,12 @@ class NotificationSerializer(
 
 class ExperimentStatisticsSerializer(
         thrift_utils.create_serializer_class(ExperimentStatistics)):
-    allExperiments = BaseExperimentSummarySerializer(many=True)
-    completedExperiments = BaseExperimentSummarySerializer(many=True)
-    failedExperiments = BaseExperimentSummarySerializer(many=True)
-    cancelledExperiments = BaseExperimentSummarySerializer(many=True)
-    createdExperiments = BaseExperimentSummarySerializer(many=True)
-    runningExperiments = BaseExperimentSummarySerializer(many=True)
+    allExperiments = ExperimentSummarySerializer(many=True)
+    completedExperiments = ExperimentSummarySerializer(many=True)
+    failedExperiments = ExperimentSummarySerializer(many=True)
+    cancelledExperiments = ExperimentSummarySerializer(many=True)
+    createdExperiments = ExperimentSummarySerializer(many=True)
+    runningExperiments = ExperimentSummarySerializer(many=True)
 
 
 class UnverifiedEmailUserProfile(serializers.Serializer):
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 64ad6b1..4d5d39b 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
@@ -218,10 +218,7 @@ export default {
           "userName",
           "applicationName",
           "resourceHostName",
-          "limit",
-          "offset",
         ],
-        pagination: true,
         modelClass: ExperimentStatistics,
       },
     },
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/utils/PaginationIterator.js b/django_airavata/apps/api/static/django_airavata_api/js/utils/PaginationIterator.js
index e98a653..5ea87e0 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/utils/PaginationIterator.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/utils/PaginationIterator.js
@@ -30,19 +30,14 @@ export default class PaginationIterator {
     this._next = pagedResponse.next;
     this._previous = pagedResponse.previous;
     if (this.resultType) {
-      if (Array.isArray(pagedResponse.results)) {
-        this.results = pagedResponse.results.map(
-          (result) => new this.resultType(result)
-        );
-      } else {
-        this.results = new this.resultType(pagedResponse.results);
-      }
+      this.results = pagedResponse.results.map(
+        (result) => new this.resultType(result)
+      );
     } else {
       this.results = pagedResponse.results;
     }
     this.offset = pagedResponse.offset;
     this.limit = pagedResponse.limit;
-    this.count = pagedResponse.count;
     return this;
   }
 
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index a33f7a9..675236c 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -30,7 +30,7 @@ from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
 from django.http import FileResponse, Http404, HttpResponse, JsonResponse
 from django.urls import reverse
 from django.views.decorators.gzip import gzip_page
-from rest_framework import mixins, pagination, status
+from rest_framework import mixins, status
 from rest_framework.decorators import action, api_view
 from rest_framework.exceptions import ParseError
 from rest_framework.renderers import JSONRenderer
@@ -1832,24 +1832,12 @@ class ExperimentStatisticsView(APIView):
         username = request.GET.get('userName', None)
         application_name = request.GET.get('applicationName', None)
         resource_hostname = request.GET.get('resourceHostName', None)
-        limit = int(request.GET.get('limit', '50'))
-        offset = int(request.GET.get('offset', '0'))
-
         statistics = request.airavata_client.getExperimentStatistics(
             request.authz_token, settings.GATEWAY_ID, from_time, to_time,
-            username, application_name, resource_hostname, limit, offset)
-        serializer = self.serializer_class(statistics, context={'request': request})
-
-        paginator = pagination.LimitOffsetPagination()
-        paginator.count = statistics.allExperimentCount
-        paginator.limit = limit
-        paginator.offset = offset
-        paginator.request = request
-        response = paginator.get_paginated_response(serializer.data)
-        # Also add limit and offset to the response
-        response.data['limit'] = limit
-        response.data['offset'] = offset
-        return response
+            username, application_name, resource_hostname)
+        serializer = self.serializer_class(
+            statistics, context={'request': request})
+        return Response(serializer.data)
 
 
 class UnverifiedEmailUserViewSet(mixins.ListModelMixin,
diff --git a/django_airavata/static/common/js/components/Pager.vue b/django_airavata/static/common/js/components/Pager.vue
index 69005e4..4d49aaf 100644
--- a/django_airavata/static/common/js/components/Pager.vue
+++ b/django_airavata/static/common/js/components/Pager.vue
@@ -42,12 +42,6 @@ export default {
     },
     last: function () {
       if (this.paginator) {
-        if (this.paginator.hasOwnProperty("count")) {
-          return Math.min(
-            this.paginator.offset + this.paginator.limit,
-            this.paginator.count
-          );
-        }
         return this.paginator.offset + this.paginator.results.length;
       } else {
         return null;

[airavata-django-portal] 01/02: Revert "AIRAVATA-3322 Fix Pager display for results that don't return counts"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 9bddc7a4d802b89cee63af8f4b7c7a6ab008852c
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Wed Jun 23 17:19:42 2021 -0400

    Revert "AIRAVATA-3322 Fix Pager display for results that don't return counts"
    
    This reverts commit 0590d3ba289b8bd131bfb2bde1690be270bd6d31.
---
 django_airavata/static/common/js/components/Pager.vue | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/django_airavata/static/common/js/components/Pager.vue b/django_airavata/static/common/js/components/Pager.vue
index 06c0316..69005e4 100644
--- a/django_airavata/static/common/js/components/Pager.vue
+++ b/django_airavata/static/common/js/components/Pager.vue
@@ -42,14 +42,13 @@ export default {
     },
     last: function () {
       if (this.paginator) {
-        if (this.paginator.count) {
+        if (this.paginator.hasOwnProperty("count")) {
           return Math.min(
             this.paginator.offset + this.paginator.limit,
             this.paginator.count
           );
-        } else {
-          return this.paginator.offset + this.paginator.results.length;
         }
+        return this.paginator.offset + this.paginator.results.length;
       } else {
         return null;
       }