diff --git a/ui-admin/src/js/common/messages.js b/ui-admin/src/js/common/messages.js index 7f5ffb81a33b7693b0669c7a109241b0f3f62d70..51c66c164763e86392e0e846952a4ff0d352eb24 100644 --- a/ui-admin/src/js/common/messages.js +++ b/ui-admin/src/js/common/messages.js @@ -101,6 +101,7 @@ const keys = { EXPORT_IMPORT_INCOMPATIBLE_INFO: 'EXPORT_IMPORT_INCOMPATIBLE_INFO', EXPORTS: 'EXPORTS', FAIL_IF_EXISTS: 'FAIL_IF_EXISTS', + FILE_OR_FILES: 'FILE_OR_FILES', FILE_NAME: 'FILE_NAME', FILE_UPLOAD: 'FILE_UPLOAD', FILTER: 'FILTER', @@ -424,6 +425,7 @@ const messages_en = { [keys.EXPORT_IMPORT_INCOMPATIBLE_INFO]: 'The system will export selected columns.', [keys.EXPORTS]: 'Exports', [keys.FAIL_IF_EXISTS]: 'Fail if exists', + [keys.FILE_OR_FILES]: '${0} file(s)', [keys.FILE_NAME]: 'File name', [keys.FILE_UPLOAD]: 'File upload', [keys.FILTER]: 'Filter', 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 b250b458e323314ab0f5bcffdd10a8658577f5e6..7cd102d57c7bc116ce35138b1d62c8ae54d79614 100644 --- a/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx +++ b/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx @@ -14,6 +14,7 @@ import ItemIcon from '@src/js/components/database/data-browser/ItemIcon.jsx' import InfoPanel from '@src/js/components/database/data-browser/InfoPanel.jsx' import DataBrowserController from '@src/js/components/database/data-browser/DataBrowserController.js' import NavigationBar from '@src/js/components/database/data-browser/NavigationBar.jsx' +import messages from "@src/js/common/messages.js"; const HTTP_SERVER_URI = '/data-store-server' @@ -201,7 +202,7 @@ class DataBrowser extends React.Component { columns={[ { name: 'name', - label: 'Name', + label: messages.get(messages.NAME), sortable: true, getValue: ({ row }) => row.name, renderValue: ({ row }) => ( 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 239ce2e1834ac57a3e99442b600a65181ecf243b..b158ae0fdf14ad5b44c171af552aeefcb86122c2 100644 --- a/ui-admin/src/js/components/database/data-browser/LeftToolbar.jsx +++ b/ui-admin/src/js/components/database/data-browser/LeftToolbar.jsx @@ -325,10 +325,11 @@ class LeftToolbar extends React.Component { key='location-dialog' open={!!this.state.locationDialogMode} title={this.state.locationDialogMode === moveLocationMode ? messages.get(messages.MOVE) : messages.get(messages.COPY)} - content='Files' + content={messages.get(messages.FILE_OR_FILES, multiselectedFiles.size)} datastoreServer={datastoreServer} sessionToken={sessionToken} path={path} + multiselectedFiles={multiselectedFiles} onCancel={this.handleLocationCancel} onConfirm={this.handleLocationConfirm} /> 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 267ee0e9f99609ec5eb79b935cf5bc67c1982284..3b2a8aaaa190d9d90b3f56bc5d3815f23bff93cc 100644 --- a/ui-admin/src/js/components/database/data-browser/LocationDialog.jsx +++ b/ui-admin/src/js/components/database/data-browser/LocationDialog.jsx @@ -9,6 +9,7 @@ import autoBind from 'auto-bind' import ItemIcon from '@src/js/components/database/data-browser/ItemIcon.jsx' import Grid from '@src/js/components/common/grid/Grid.jsx' import DataBrowserController from '@src/js/components/database/data-browser/DataBrowserController.js' +import NavigationBar from "@src/js/components/database/data-browser/NavigationBar.jsx"; const styles = theme => ({ button: { @@ -51,9 +52,9 @@ class LocationDialog extends React.Component { this.controller.setSessionToken(sessionToken) // this.initialPath = path - // this.state = { - // path - // } + this.state = { + path + } this.controller.setPath(path) this.handleClose = this.handleClose.bind(this) @@ -68,14 +69,14 @@ class LocationDialog extends React.Component { updateValue(event) { const path = event.target.value - // this.setState({ - // path - // }) + this.setState({ + path + }) this.controller.setPath(path) } handleConfirmClick() { - const { onConfirm } = this.props + const { onConfirm, multiselectedFiles } = this.props const { path } = this.state onConfirm(path) // @@ -92,12 +93,6 @@ class LocationDialog extends React.Component { // } } - // clearLocation() { - // this.setState({ - // path: '' - // }) - // } - async setPath(path) { if (this.state.path !== path + '/') { this.setState({ path: path + '/' }) @@ -117,17 +112,21 @@ class LocationDialog extends React.Component { this.controller.gridController = gridController } + async handlePathChange(path) { + await this.setPath(path) + } + async onError(error) { await AppController.getInstance().errorChange(error) } renderButtons() { - const { classes } = this.props + const { classes, title } = this.props return ( <div> <Button name='confirm' - label={messages.get(messages.CONFIRM)} + label={title} type={this.getButtonType()} styles={{ root: classes.button }} onClick={this.handleConfirmClick} @@ -143,19 +142,18 @@ class LocationDialog extends React.Component { } renderGrid() { - const { classes } = this.props + const { classes, multiselectedFiles } = this.props return ( <Grid id='location-grid' key='location-grid' controllerRef={this.handleGridControllerRef} filterModes={[]} - header='Folders' classes={{ container: classes.grid }} columns={[ { name: 'name', - label: 'Name', + label: messages.get(messages.NAME), sortable: true, getValue: ({ row }) => row.name, renderValue: ({ row }) => ( @@ -215,6 +213,7 @@ class LocationDialog extends React.Component { logger.log(logger.DEBUG, 'LocationDialog.render') const { open, title, content } = this.props + const { path } = this.state return ( <Dialog @@ -222,6 +221,10 @@ class LocationDialog extends React.Component { onClose={this.handleClose} title={title} content={[<DialogContentText key='dialog-content'>{content}</DialogContentText>, + <NavigationBar + path={path} + onPathChange={this.handlePathChange} + />, this.renderGrid()]} actions={this.renderButtons()} />