diff --git a/web/satellite/.eslintrc.js b/web/satellite/.eslintrc.js
index b41a76b86..477c19ae5 100644
--- a/web/satellite/.eslintrc.js
+++ b/web/satellite/.eslintrc.js
@@ -53,6 +53,11 @@ module.exports = {
'pattern': '@/../static/**',
'position': 'after',
},
+ {
+ 'group': 'internal',
+ 'pattern': '@poc/assets/**',
+ 'position': 'after',
+ },
],
'newlines-between': 'always',
}],
diff --git a/web/satellite/src/store/modules/bucketsStore.ts b/web/satellite/src/store/modules/bucketsStore.ts
index f6c3deca5..03adaaf23 100644
--- a/web/satellite/src/store/modules/bucketsStore.ts
+++ b/web/satellite/src/store/modules/bucketsStore.ts
@@ -46,6 +46,7 @@ export class BucketsState {
public passphrase = '';
public promptForPassphrase = true;
public fileComponentBucketName = '';
+ public fileComponentPath = '';
public leaveRoute = '';
public enterPassphraseCallback: (() => void) | null = null;
}
@@ -210,6 +211,10 @@ export const useBucketsStore = defineStore('buckets', () => {
state.fileComponentBucketName = bucketName;
}
+ function setFileComponentPath(path: string): void {
+ state.fileComponentPath = path;
+ }
+
function setEnterPassphraseCallback(fn: (() => void) | null): void {
state.enterPassphraseCallback = fn;
}
@@ -304,6 +309,7 @@ export const useBucketsStore = defineStore('buckets', () => {
setPassphrase,
setApiKey,
setFileComponentBucketName,
+ setFileComponentPath,
setEnterPassphraseCallback,
createBucket,
createBucketWithNoPassphrase,
diff --git a/web/satellite/vuetify-poc/src/components/BrowserBreadcrumbsComponent.vue b/web/satellite/vuetify-poc/src/components/BrowserBreadcrumbsComponent.vue
index 3ae7af163..fad765e88 100644
--- a/web/satellite/vuetify-poc/src/components/BrowserBreadcrumbsComponent.vue
+++ b/web/satellite/vuetify-poc/src/components/BrowserBreadcrumbsComponent.vue
@@ -2,7 +2,7 @@
// See LICENSE for copying information.
-
+
@@ -10,5 +10,52 @@
diff --git a/web/satellite/vuetify-poc/src/components/BrowserTableComponent.vue b/web/satellite/vuetify-poc/src/components/BrowserTableComponent.vue
index 9b7d60432..ddee2557b 100644
--- a/web/satellite/vuetify-poc/src/components/BrowserTableComponent.vue
+++ b/web/satellite/vuetify-poc/src/components/BrowserTableComponent.vue
@@ -17,30 +17,45 @@
class="mx-2 mt-2"
/>
-
-
-
-
-
- {{ item.raw.name }}
-
-
+
+
+
+ {{ item.raw.browserObject.Key }}
+
+
+
+
+ {{ item.raw.typeInfo.title }}
+
+
+
+ {{ getFormattedSize(item.raw.browserObject) }}
+
+
+
+ {{ getFormattedDate(item.raw.browserObject) }}
@@ -70,17 +85,17 @@
-
+
-
+
-
+
diff --git a/web/satellite/vuetify-poc/src/layouts/default/Default.vue b/web/satellite/vuetify-poc/src/layouts/default/Default.vue
index 432d079e6..d078b98fe 100644
--- a/web/satellite/vuetify-poc/src/layouts/default/Default.vue
+++ b/web/satellite/vuetify-poc/src/layouts/default/Default.vue
@@ -56,8 +56,6 @@ const isLoading = ref(true);
* all projects dashboard if no such project exists.
*/
async function selectProject(projectId: string): Promise {
- isLoading.value = true;
-
let projects: Project[];
try {
projects = await projectsStore.getProjects();
@@ -74,17 +72,22 @@ async function selectProject(projectId: string): Promise {
return;
}
projectsStore.selectProject(projectId);
-
- isLoading.value = false;
}
-watch(() => route.params.projectId, async newId => selectProject(newId as string));
+watch(() => route.params.projectId, async newId => {
+ if (newId === undefined) return;
+ isLoading.value = true;
+ await selectProject(newId as string);
+ isLoading.value = false;
+});
/**
* Lifecycle hook after initial render.
* Pre-fetches user`s and project information.
*/
onBeforeMount(async () => {
+ isLoading.value = true;
+
try {
await Promise.all([
usersStore.getUser(),
@@ -112,8 +115,10 @@ onBeforeMount(async () => {
notify.notifyError(error, AnalyticsErrorEventSource.OVERALL_APP_WRAPPER_ERROR);
}
- selectProject(route.params.projectId as string);
+ await selectProject(route.params.projectId as string);
if (!agStore.state.accessGrantsWebWorker) await agStore.startWorker();
+
+ isLoading.value = false;
});
diff --git a/web/satellite/vuetify-poc/src/plugins/vuetify.ts b/web/satellite/vuetify-poc/src/plugins/vuetify.ts
index 45b53bbdd..dc05bcef5 100644
--- a/web/satellite/vuetify-poc/src/plugins/vuetify.ts
+++ b/web/satellite/vuetify-poc/src/plugins/vuetify.ts
@@ -80,7 +80,7 @@ export default createVuetify({
VBtn: {
density: 'default',
rounded: 'lg',
- class: 'text-capitalize font-weight-bold',
+ class: 'text-none font-weight-bold',
style: 'letter-spacing:0;',
},
VTooltip: {
diff --git a/web/satellite/vuetify-poc/src/router/index.ts b/web/satellite/vuetify-poc/src/router/index.ts
index 289289298..3dfa678ec 100644
--- a/web/satellite/vuetify-poc/src/router/index.ts
+++ b/web/satellite/vuetify-poc/src/router/index.ts
@@ -58,7 +58,7 @@ const routes: RouteRecordRaw[] = [
component: () => import(/* webpackChunkName: "Buckets" */ '@poc/views/Buckets.vue'),
},
{
- path: 'buckets/:bucketName',
+ path: 'buckets/:browserPath+',
name: 'Bucket',
component: () => import(/* webpackChunkName: "Bucket" */ '@poc/views/Bucket.vue'),
},
diff --git a/web/satellite/vuetify-poc/src/views/Bucket.vue b/web/satellite/vuetify-poc/src/views/Bucket.vue
index c6f61093d..d73d207cd 100644
--- a/web/satellite/vuetify-poc/src/views/Bucket.vue
+++ b/web/satellite/vuetify-poc/src/views/Bucket.vue
@@ -2,19 +2,20 @@
// See LICENSE for copying information.
-
-
+
+
-
+
-
+
Upload
@@ -23,26 +24,36 @@
variant="outlined"
color="default"
class="mx-4"
+ :disabled="isContentDisabled"
>
-
+
New Folder
-
+
-
+
-
+