diff --git a/ui-admin/src/js/components/database/DatabaseComponent.jsx b/ui-admin/src/js/components/database/DatabaseComponent.jsx index 3aad31dd2f06934478a79661dfb6459fecf17d22..66acdac7eecca70ed9666cf509baecc64d3a6fdb 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 664db7a7363518f9d3530ed134f0262e421a9831..cbb8c988c80b3e91c9eac032bd7fd79a5a56366b 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 707328c1ee6952439eca89358d935ed3318fb6df..f7301638b9937ea3b561a1c7e1dc8a03876fcdd1 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 2766993fcae28d03eb8418012a22015f1709d829..3e1239cafcca36b37e7d83da0f6ce7268282919c 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 a5dcc66a1c7630c4e4cf91bf34033e924f7218d3..a4332823449188aec55c2f2fe1aad3570a212c35 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 59fa31a0203f0f5d163ba6f738afad02f6710967..bb80165417814fb5f8077bf25bd1417515bac1eb 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} />