From f62f2a76a54d4ed19e807f1656c8448108c148e1 Mon Sep 17 00:00:00 2001 From: vkovtun <viktor.kovtun@id.ethz.ch> Date: Fri, 1 Mar 2024 18:33:01 +0100 Subject: [PATCH] BIS-753: Working on attaching the DSS widget to a concrete collection/object. --- .../js/components/database/DatabaseComponent.jsx | 2 +- .../database/data-browser/DataBrowser.jsx | 14 ++++++++------ .../database/data-browser/DataBrowserController.js | 11 ++++++++--- .../database/data-browser/LeftToolbar.jsx | 4 +++- .../database/data-browser/LocationDialog.jsx | 4 ++-- .../components/database/data-browser/Toolbar.jsx | 2 ++ 6 files changed, 24 insertions(+), 13 deletions(-) diff --git a/ui-admin/src/js/components/database/DatabaseComponent.jsx b/ui-admin/src/js/components/database/DatabaseComponent.jsx index 3aad31dd2f0..66acdac7eec 100644 --- a/ui-admin/src/js/components/database/DatabaseComponent.jsx +++ b/ui-admin/src/js/components/database/DatabaseComponent.jsx @@ -79,7 +79,7 @@ class DatabaseComponent extends React.PureComponent { return this.state.showDataBrowser ? ( <DataBrowser - id={object.id} + id={object.type + '-' + object.id} viewType='list' sessionToken={AppController.getInstance().getSessionToken()} /> diff --git a/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx b/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx index 664db7a7363..cbb8c988c80 100644 --- a/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx +++ b/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx @@ -123,9 +123,9 @@ class DataBrowser extends React.Component { super(props, context) autoBind(this) - const { sessionToken, controller } = this.props + const { sessionToken, controller, id } = this.props - this.controller = controller || new DataBrowserController() + this.controller = controller || new DataBrowserController(id) this.controller.attach(this) this.datastoreServer = new DataStoreServer( 'http://localhost:8085', @@ -142,6 +142,7 @@ class DataBrowser extends React.Component { path: '/' } } + handleViewTypeChange(viewType) { this.setState({ viewType }) } @@ -212,13 +213,13 @@ class DataBrowser extends React.Component { const gbytes = mbytes / 1024.0 if (gbytes > 1.0) { size = gbytes - unit = "Gb" + unit = "GB" } else if (mbytes > 1.0) { size = mbytes - unit = "Mb" + unit = "MB" } else if (kbytes > 1.0) { size = kbytes - unit = "kb" + unit = "kB" } else { size = bytes unit = "bytes" @@ -227,7 +228,7 @@ class DataBrowser extends React.Component { } render() { - const { classes, sessionToken } = this.props + const { classes, sessionToken, id } = this.props const { viewType, files, @@ -249,6 +250,7 @@ class DataBrowser extends React.Component { multiselectedFiles={multiselectedFiles} datastoreServer={this.datastoreServer} sessionToken={sessionToken} + owner={id} path={path} /> <NavigationBar diff --git a/ui-admin/src/js/components/database/data-browser/DataBrowserController.js b/ui-admin/src/js/components/database/data-browser/DataBrowserController.js index 707328c1ee6..f7301638b99 100644 --- a/ui-admin/src/js/components/database/data-browser/DataBrowserController.js +++ b/ui-admin/src/js/components/database/data-browser/DataBrowserController.js @@ -21,12 +21,11 @@ const MAX_READ_SIZE_IN_BYTES = 1024 * 1024 export default class DataBrowserController extends ComponentController { - constructor() { + constructor(owner) { super() autoBind(this) - // TODO: change it to sample permId - this.owner = 'demo-sample' + this.owner = owner this.gridController = null this.path = '' this.fileNames = [] @@ -37,6 +36,12 @@ export default class DataBrowserController extends ComponentController { } async listFiles() { + // TODO: resolve this problematic issue of having to create a folder just in case + try { + await this.component.datastoreServer.create(this.owner, this.path, true); + } catch (e) { + } + const data = await this.component.datastoreServer.list(this.owner, this.path, false) if (!data.error) { const results = data.result[1] diff --git a/ui-admin/src/js/components/database/data-browser/LeftToolbar.jsx b/ui-admin/src/js/components/database/data-browser/LeftToolbar.jsx index 2766993fcae..3e1239cafcc 100644 --- a/ui-admin/src/js/components/database/data-browser/LeftToolbar.jsx +++ b/ui-admin/src/js/components/database/data-browser/LeftToolbar.jsx @@ -234,6 +234,7 @@ class LeftToolbar extends React.Component { multiselectedFiles, datastoreServer, sessionToken, + owner, path } = this.props const { @@ -372,6 +373,7 @@ class LeftToolbar extends React.Component { content={messages.get(messages.FILE_OR_FILES, multiselectedFiles.size)} datastoreServer={datastoreServer} sessionToken={sessionToken} + owner={owner} path={path} multiselectedFiles={multiselectedFiles} onCancel={this.handleLocationCancel} @@ -411,7 +413,7 @@ class LeftToolbar extends React.Component { render() { logger.log(logger.DEBUG, 'LeftToolbar.render') - const { multiselectedFiles, classes } = this.props + const { multiselectedFiles, classes, owner } = this.props const { loading } = this.state return ([ diff --git a/ui-admin/src/js/components/database/data-browser/LocationDialog.jsx b/ui-admin/src/js/components/database/data-browser/LocationDialog.jsx index a5dcc66a1c7..a4332823449 100644 --- a/ui-admin/src/js/components/database/data-browser/LocationDialog.jsx +++ b/ui-admin/src/js/components/database/data-browser/LocationDialog.jsx @@ -45,9 +45,9 @@ class LocationDialog extends React.Component { super(props) autoBind(this) - const { path, sessionToken, datastoreServer } = this.props + const { path, sessionToken, datastoreServer, owner } = this.props - this.controller = new DataBrowserController() + this.controller = new DataBrowserController(owner) this.controller.attach(this) this.datastoreServer = datastoreServer this.controller.setSessionToken(sessionToken) diff --git a/ui-admin/src/js/components/database/data-browser/Toolbar.jsx b/ui-admin/src/js/components/database/data-browser/Toolbar.jsx index 59fa31a0203..bb801654178 100644 --- a/ui-admin/src/js/components/database/data-browser/Toolbar.jsx +++ b/ui-admin/src/js/components/database/data-browser/Toolbar.jsx @@ -59,6 +59,7 @@ class Toolbar extends React.Component { multiselectedFiles, datastoreServer, sessionToken, + owner, path } = this.props return ( @@ -68,6 +69,7 @@ class Toolbar extends React.Component { multiselectedFiles={multiselectedFiles} datastoreServer={datastoreServer} sessionToken={sessionToken} + owner={owner} path={path} controller={this.controller} /> -- GitLab