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/04/09 20:38:00 UTC

[airavata-django-portal] branch develop updated: AIRAVATA-3362 Restoring unintentional code deletes

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


The following commit(s) were added to refs/heads/develop by this push:
     new 033a994  AIRAVATA-3362 Restoring unintentional code deletes
033a994 is described below

commit 033a994e667610a5833551460465543e1e4a4eda
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri Apr 9 16:37:47 2021 -0400

    AIRAVATA-3362 Restoring unintentional code deletes
---
 .../components/storage/UserStorageCreateView.vue   | 84 ++++++++++++++++++++++
 .../storage/UserStorageFileSelectionContainer.vue  |  6 +-
 .../components/storage/UserStoragePathViewer.vue   | 12 ++++
 3 files changed, 101 insertions(+), 1 deletion(-)

diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStorageCreateView.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStorageCreateView.vue
new file mode 100644
index 0000000..6844f3e
--- /dev/null
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStorageCreateView.vue
@@ -0,0 +1,84 @@
+<template>
+  <div>
+    <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>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col">
+        <uppy
+          class="mb-1"
+          ref="file-upload"
+          :xhr-upload-endpoint="uploadEndpoint"
+          :tus-upload-finish-endpoint="uploadEndpoint"
+          @upload-success="uploadSuccess"
+          multiple
+        />
+      </div>
+      <div class="col">
+        <b-input-group>
+          <b-form-input
+            v-model="dirName"
+            placeholder="New directory name"
+            @keydown.native.enter="addDirectory"
+          ></b-form-input>
+          <b-input-group-append>
+            <b-button @click="addDirectory" :disabled="!this.dirName"
+              >Add directory
+            </b-button>
+          </b-input-group-append>
+        </b-input-group>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { components } from "django-airavata-common-ui";
+import { session } from "django-airavata-api";
+
+export default {
+  name: "user-storage-create-view",
+  components: {
+    uppy: components.Uppy,
+  },
+  computed: {
+    uploadEndpoint() {
+      // This endpoint can handle XHR upload or a TUS uploadURL
+      return "/api/user-storage/" + this.storagePath;
+    },
+    username() {
+      return session.Session.username;
+    },
+  },
+  data() {
+    return {
+      dirName: null,
+    };
+  },
+  props: {
+    userStoragePath: {
+      required: true,
+    },
+    storagePath: {
+      required: true,
+    },
+  },
+  methods: {
+    uploadSuccess() {
+      this.$refs["file-upload"].reset();
+      this.$emit("upload-success");
+    },
+    addDirectory() {
+      this.$emit("add-directory", this.dirName);
+      this.dirName = null;
+    },
+  },
+};
+</script>
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStorageFileSelectionContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStorageFileSelectionContainer.vue
index 44e4771..19bb3e7 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStorageFileSelectionContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/UserStorageFileSelectionContainer.vue
@@ -30,7 +30,11 @@ let mostRecentPath = "~";
 
 export default {
   name: "user-storage-file-selection-container",
-  computed: {},
+  computed: {
+    storagePath() {
+      return ["~"].concat(this.userStoragePath.parts).join("/") + "/";
+    },
+  },
   props: {
     selectedDataProductUris: {
       type: Array,
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 d1aa85c..975af26 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
@@ -1,5 +1,12 @@
 <template>
   <div>
+    <user-storage-create-view
+      v-if="includeCreateFileAction && userStoragePath && isDir"
+      :user-storage-path="userStoragePath"
+      :storage-path="storagePath"
+      @upload-success="$emit('upload-success')"
+      @add-directory="(dirName) => $emit('add-directory', dirName)"
+    />
     <user-storage-path-breadcrumb
       v-if="userStoragePath && isDir"
       :parts="userStoragePath.parts"
@@ -63,6 +70,7 @@
 <script>
 import UserStoragePathBreadcrumb from "./StoragePathBreadcrumb.vue";
 import { components } from "django-airavata-common-ui";
+import UserStorageCreateView from "./UserStorageCreateView";
 import UserStorageEditViewer from "./storage-edit/UserStorageEditViewer";
 import UserStorageLink from "./storage-edit/UserStorageLink";
 
@@ -76,6 +84,9 @@ export default {
     userStoragePath: {
       required: true,
     },
+    storagePath: {
+      required: true,
+    },
     includeDeleteAction: {
       type: Boolean,
       default: true,
@@ -102,6 +113,7 @@ export default {
     "delete-button": components.DeleteButton,
     "human-date": components.HumanDate,
     UserStoragePathBreadcrumb,
+    UserStorageCreateView,
     UserStorageEditViewer,
   },
   computed: {