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/05/24 18:28:40 UTC

[airavata-django-portal] 04/08: AIRAVATA-3034 UI enhancements to storage browser

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

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

commit bbd90ce0b183cf323e88103c6c3ba390c7186a29
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri May 24 11:08:36 2019 -0400

    AIRAVATA-3034 UI enhancements to storage browser
---
 .../apps/api/static/django_airavata_api/js/index.js   |  9 ++++++++-
 .../static/django_airavata_api/js/session/Session.js  |  7 +++++++
 .../js/components/storage/UserStoragePathViewer.vue   | 10 +++++-----
 .../js/containers/UserStorageContainer.vue            | 19 +++++++++++++++++--
 django_airavata/static/common/js/entry.js             |  4 ++++
 django_airavata/templates/base.html                   |  6 ++++++
 6 files changed, 47 insertions(+), 8 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 f410066..d332d6c 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
@@ -43,6 +43,8 @@ import GridFTPDataMovementService from "./services/GridFTPDataMovementService";
 import UnicoreDataMovementService from "./services/UnicoreDataMovementService";
 import ServiceFactory from "./services/ServiceFactory";
 
+import Session from "./session/Session";
+
 import FetchUtils from "./utils/FetchUtils";
 import PaginationIterator from "./utils/PaginationIterator";
 import StringUtils from "./utils/StringUtils";
@@ -121,6 +123,10 @@ const services = {
   WorkspacePreferencesService: ServiceFactory.service("WorkspacePreferences")
 };
 
+const session = {
+  Session
+};
+
 const utils = {
   FetchUtils,
   PaginationIterator,
@@ -131,7 +137,8 @@ export default {
   errors,
   models,
   services,
+  session,
   utils
 };
 
-export { errors, models, services, utils };
+export { errors, models, services, session, utils };
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/session/Session.js b/django_airavata/apps/api/static/django_airavata_api/js/session/Session.js
new file mode 100644
index 0000000..e27c25c
--- /dev/null
+++ b/django_airavata/apps/api/static/django_airavata_api/js/session/Session.js
@@ -0,0 +1,7 @@
+class Session {
+  init({ username }) {
+    this.username = username;
+  }
+}
+
+export default new Session();
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStoragePathViewer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStoragePathViewer.vue
index b65f90a..b71cc14 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStoragePathViewer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStoragePathViewer.vue
@@ -16,11 +16,11 @@
         <router-link
           v-if="data.item.type === 'dir'"
           :to="'/~/' + data.item.path"
-        >{{ data.item.name }}</router-link>
+        > <i class="fa fa-folder-open"></i> {{ data.item.name }}</router-link>
         <b-link
           v-else
           :href="data.item.downloadURL"
-        >{{ data.item.name }}</b-link>
+        > <i class="fa fa-download"></i> {{ data.item.name }}</b-link>
       </template>
       <template
         slot="createdTimestamp"
@@ -100,11 +100,11 @@ export default {
     },
     getFormattedSize(size) {
       if (size > Math.pow(2, 30)) {
-        return Math.round(size / Math.pow(2,30)) + " GB";
+        return Math.round(size / Math.pow(2, 30)) + " GB";
       } else if (size > Math.pow(2, 20)) {
-        return Math.round(size / Math.pow(2,20)) + " MB";
+        return Math.round(size / Math.pow(2, 20)) + " MB";
       } else if (size > Math.pow(2, 10)) {
-        return Math.round(size / Math.pow(2,10)) + " KB";
+        return Math.round(size / Math.pow(2, 10)) + " KB";
       } else {
         return size + " bytes";
       }
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue
index 4ec51a2..b198dd2 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue
@@ -1,9 +1,21 @@
 <template>
-  <router-view :user-storage-path="userStoragePath"></router-view>
+  <div class="row">
+    <div class="col">
+      <h1 class="h4">
+        Storage
+      </h1>
+      <p>
+        <small class="text-muted"><i class="fa fa-folder-open"></i> {{ username }}</small>
+      </p>
+      <b-card>
+        <router-view :user-storage-path="userStoragePath"></router-view>
+      </b-card>
+    </div>
+  </div>
 </template>
 
 <script>
-import { services, utils } from "django-airavata-api";
+import { services, session, utils } from "django-airavata-api";
 import { notifications } from "django-airavata-common-ui";
 
 export default {
@@ -15,6 +27,9 @@ export default {
       } else {
         return this.$route.path;
       }
+    },
+    username() {
+      return session.Session.username;
     }
   },
   data() {
diff --git a/django_airavata/static/common/js/entry.js b/django_airavata/static/common/js/entry.js
index 6dac815..8fae546 100644
--- a/django_airavata/static/common/js/entry.js
+++ b/django_airavata/static/common/js/entry.js
@@ -1,6 +1,7 @@
 import Vue from "vue";
 import BootstrapVue from "bootstrap-vue";
 import GlobalErrorHandler from "./errors/GlobalErrorHandler";
+import { session } from "django-airavata-api";
 
 GlobalErrorHandler.init();
 
@@ -19,5 +20,8 @@ export default function entry(entryPointFunction) {
   // Common Vue configuration
   Vue.use(BootstrapVue);
 
+  // Initialize portal session object with data provided by base.html template
+  session.Session.init(window.AiravataPortalSessionData);
+
   entryPointFunction(Vue);
 }
diff --git a/django_airavata/templates/base.html b/django_airavata/templates/base.html
index bff7358..01aeb99 100644
--- a/django_airavata/templates/base.html
+++ b/django_airavata/templates/base.html
@@ -230,6 +230,12 @@
     {% endblock %}
   </div>
 
+  <script>
+    // provide data for initializing api's session.Session
+    window.AiravataPortalSessionData = {
+      username: '{{ request.user.username }}'
+    };
+  </script>
   {% render_bundle 'chunk-vendors' 'js' 'COMMON' %}
   {% render_bundle 'app' 'js' 'COMMON' %}
   {% block scripts %}