From 4ec8e2a011d989fc17568793847224a68384a6c0 Mon Sep 17 00:00:00 2001 From: Jake Rosenberg Date: Thu, 3 Aug 2023 13:13:58 -0500 Subject: [PATCH 1/4] Add My Data (Work) to listings --- .../data-depot-nav.component.js | 6 ++++ .../data-depot-toolbar.component.js | 1 + designsafe/static/scripts/data-depot/index.js | 33 +++++++++++++++++++ .../services/file-operation-service.js | 2 +- .../workspace-data-browser.component.js | 12 +++++++ 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js index e541c66c9..687cff2ff 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js @@ -45,6 +45,12 @@ class DataDepotNavCtrl { state: 'myData', description: 'Private directory for your data' }, + { + name: 'My Data (Work)', + collapsible: false, + state: 'myDataWork', + description: 'Working directory for use with JupyterHub' + }, { name: 'My Projects', collapsible: false, diff --git a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js index 7b08279d9..36e23cfc7 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js @@ -16,6 +16,7 @@ class DataDepotToolbarCtrl { placeholder() { var stateNames = { 'myData': 'My Data', + 'myDataWork': 'My Data (Work)', 'projects.list': 'My Projects', 'sharedData': 'Shared Data', 'boxData': 'Box', diff --git a/designsafe/static/scripts/data-depot/index.js b/designsafe/static/scripts/data-depot/index.js index dec411eed..82f2d2b39 100644 --- a/designsafe/static/scripts/data-depot/index.js +++ b/designsafe/static/scripts/data-depot/index.js @@ -83,6 +83,39 @@ function config( }, }, }) + .state('myDataWork', { + url: '/agave/{systemId}/{filePath:any}/?query_string&offset&limit', + component: 'dataDepotBrowser', + params: { + systemId: 'designsafe.storage.working', + filePath: Django.user, + }, + resolve: { + apiParams: ()=> { + return { + fileMgr: 'agave', + }; + }, + path: ($stateParams, Django) => { + 'ngInject'; + if ($stateParams.filePath.replace(/^\/+/, '') === '') { + return Django.user; + } + return $stateParams.filePath; + }, + auth: ($q, Django) => { + 'ngInject'; + if (Django.context.authenticated) { + return true; + } + + return $q.reject({ + type: 'authn', + context: Django.context, + }); + }, + }, + }) .state('sharedData', { url: '/shared/{systemId}/{filePath:any}?query_string', component: 'dataDepotBrowser', diff --git a/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js b/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js index c0b54338f..6a5345521 100644 --- a/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js +++ b/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js @@ -49,7 +49,7 @@ export class FileOperationService { getTests(files) { const externalDataStates = ['boxData', 'dropboxData', 'googledriveData']; - const agaveDataStates = ['myData', 'projects.view', 'projects.curation']; + const agaveDataStates = ['myData', 'myDataWork', 'projects.view', 'projects.curation']; let isHazmapper = files.length > 0 ? files.some((e) => e.name.endsWith('hazmapper')) : false; const tests = { copy: this.Django.context.authenticated && !isHazmapper && files.length > 0, diff --git a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js index 4a7811708..4e05db93b 100644 --- a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js +++ b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js @@ -17,6 +17,7 @@ class WorkspaceDataBrowserCtrl { this.options = [ { name: 'myData', label: 'My Data' }, + { name: 'myDataWork', label: 'My Data (Work)' }, { name: 'myProjects', label: 'My Projects' }, { name: 'publications', label: 'Published' }, { name: 'nees', label: 'Published (NEES)' }, @@ -58,6 +59,17 @@ class WorkspaceDataBrowserCtrl { }); this.breadcrumbParams = this.FileListingService.fileMgrMappings.agave.breadcrumbParams; break; + case 'myDataWork': + this.listingType = 'files'; + this.FileListingService.browse({ + section: 'main', + api: 'agave', + scheme: 'private', + system: 'designsafe.storage.working', + path: this.Django.user, + }); + this.breadcrumbParams = this.FileListingService.fileMgrMappings.agave.breadcrumbParams; + break; case 'myProjects': this.listingType = 'projects'; this.ProjectService.listProjects({ section: 'main' }); From 1eec7b972ff7c3bb82f4869a4d53377166d3eeec Mon Sep 17 00:00:00 2001 From: Jake Rosenberg Date: Thu, 3 Aug 2023 13:21:27 -0500 Subject: [PATCH 2/4] update name to My Working Data --- .../components/data-depot-nav/data-depot-nav.component.js | 2 +- .../data-depot-toolbar/data-depot-toolbar.component.js | 2 +- .../workspace-data-browser/workspace-data-browser.component.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js index 687cff2ff..19fbc7dad 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js @@ -46,7 +46,7 @@ class DataDepotNavCtrl { description: 'Private directory for your data' }, { - name: 'My Data (Work)', + name: 'My Working Data', collapsible: false, state: 'myDataWork', description: 'Working directory for use with JupyterHub' diff --git a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js index 36e23cfc7..22dd0b250 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js @@ -16,7 +16,7 @@ class DataDepotToolbarCtrl { placeholder() { var stateNames = { 'myData': 'My Data', - 'myDataWork': 'My Data (Work)', + 'myDataWork': 'My Working Data', 'projects.list': 'My Projects', 'sharedData': 'Shared Data', 'boxData': 'Box', diff --git a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js index 4e05db93b..07c08e69b 100644 --- a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js +++ b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js @@ -17,7 +17,7 @@ class WorkspaceDataBrowserCtrl { this.options = [ { name: 'myData', label: 'My Data' }, - { name: 'myDataWork', label: 'My Data (Work)' }, + { name: 'myDataWork', label: 'My Working Data' }, { name: 'myProjects', label: 'My Projects' }, { name: 'publications', label: 'Published' }, { name: 'nees', label: 'Published (NEES)' }, From b09c247994575162f124513f6ea46504a877dcaf Mon Sep 17 00:00:00 2001 From: Jake Rosenberg Date: Thu, 3 Aug 2023 13:30:01 -0500 Subject: [PATCH 3/4] update name to My Working Files --- .../components/data-depot-nav/data-depot-nav.component.js | 2 +- .../data-depot-toolbar/data-depot-toolbar.component.js | 2 +- .../workspace-data-browser/workspace-data-browser.component.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js index 19fbc7dad..08926ef3a 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js @@ -46,7 +46,7 @@ class DataDepotNavCtrl { description: 'Private directory for your data' }, { - name: 'My Working Data', + name: 'My Working Files', collapsible: false, state: 'myDataWork', description: 'Working directory for use with JupyterHub' diff --git a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js index 22dd0b250..eebf979ef 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js @@ -16,7 +16,7 @@ class DataDepotToolbarCtrl { placeholder() { var stateNames = { 'myData': 'My Data', - 'myDataWork': 'My Working Data', + 'myDataWork': 'My Working Files', 'projects.list': 'My Projects', 'sharedData': 'Shared Data', 'boxData': 'Box', diff --git a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js index 07c08e69b..b97b5dfc5 100644 --- a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js +++ b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js @@ -17,7 +17,7 @@ class WorkspaceDataBrowserCtrl { this.options = [ { name: 'myData', label: 'My Data' }, - { name: 'myDataWork', label: 'My Working Data' }, + { name: 'myDataWork', label: 'My Working Files' }, { name: 'myProjects', label: 'My Projects' }, { name: 'publications', label: 'Published' }, { name: 'nees', label: 'Published (NEES)' }, From 1e3b03b1a6cbe5a4400f165bf72de74e6a9bf675 Mon Sep 17 00:00:00 2001 From: Jake Rosenberg Date: Wed, 23 Aug 2023 10:41:57 -0500 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: Sal Tijerina --- .../components/data-depot-nav/data-depot-nav.component.js | 6 +++--- .../data-depot-toolbar/data-depot-toolbar.component.js | 2 +- designsafe/static/scripts/data-depot/index.js | 4 ++-- .../ng-designsafe/services/file-operation-service.js | 2 +- .../workspace-data-browser.component.js | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js index 08926ef3a..60d0b70f5 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-nav/data-depot-nav.component.js @@ -46,10 +46,10 @@ class DataDepotNavCtrl { description: 'Private directory for your data' }, { - name: 'My Working Files', + name: 'Scratch (Frontera)', collapsible: false, - state: 'myDataWork', - description: 'Working directory for use with JupyterHub' + state: 'myDataScratch', + description: 'Scratch directory on Frontera for use with JupyterHub' }, { name: 'My Projects', diff --git a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js index eebf979ef..aa2d8c41e 100644 --- a/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js +++ b/designsafe/static/scripts/data-depot/components/data-depot-toolbar/data-depot-toolbar.component.js @@ -16,7 +16,7 @@ class DataDepotToolbarCtrl { placeholder() { var stateNames = { 'myData': 'My Data', - 'myDataWork': 'My Working Files', + 'myDataScratch': 'Scratch (Frontera)', 'projects.list': 'My Projects', 'sharedData': 'Shared Data', 'boxData': 'Box', diff --git a/designsafe/static/scripts/data-depot/index.js b/designsafe/static/scripts/data-depot/index.js index 82f2d2b39..30255a151 100644 --- a/designsafe/static/scripts/data-depot/index.js +++ b/designsafe/static/scripts/data-depot/index.js @@ -83,11 +83,11 @@ function config( }, }, }) - .state('myDataWork', { + .state('myDataScratch', { url: '/agave/{systemId}/{filePath:any}/?query_string&offset&limit', component: 'dataDepotBrowser', params: { - systemId: 'designsafe.storage.working', + systemId: 'designsafe.storage.frontera.scratch', filePath: Django.user, }, resolve: { diff --git a/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js b/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js index 6a5345521..5f9863a40 100644 --- a/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js +++ b/designsafe/static/scripts/ng-designsafe/services/file-operation-service.js @@ -49,7 +49,7 @@ export class FileOperationService { getTests(files) { const externalDataStates = ['boxData', 'dropboxData', 'googledriveData']; - const agaveDataStates = ['myData', 'myDataWork', 'projects.view', 'projects.curation']; + const agaveDataStates = ['myData', 'myDataScratch', 'projects.view', 'projects.curation']; let isHazmapper = files.length > 0 ? files.some((e) => e.name.endsWith('hazmapper')) : false; const tests = { copy: this.Django.context.authenticated && !isHazmapper && files.length > 0, diff --git a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js index b97b5dfc5..2f4399b7b 100644 --- a/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js +++ b/designsafe/static/scripts/workspace/components/workspace-data-browser/workspace-data-browser.component.js @@ -17,7 +17,7 @@ class WorkspaceDataBrowserCtrl { this.options = [ { name: 'myData', label: 'My Data' }, - { name: 'myDataWork', label: 'My Working Files' }, + { name: 'myDataScratch', label: 'Scratch (Frontera)' }, { name: 'myProjects', label: 'My Projects' }, { name: 'publications', label: 'Published' }, { name: 'nees', label: 'Published (NEES)' }, @@ -59,13 +59,13 @@ class WorkspaceDataBrowserCtrl { }); this.breadcrumbParams = this.FileListingService.fileMgrMappings.agave.breadcrumbParams; break; - case 'myDataWork': + case 'myDataScratch': this.listingType = 'files'; this.FileListingService.browse({ section: 'main', api: 'agave', scheme: 'private', - system: 'designsafe.storage.working', + system: 'designsafe.storage.frontera.scratch', path: this.Django.user, }); this.breadcrumbParams = this.FileListingService.fileMgrMappings.agave.breadcrumbParams;