Import dialog improvements + cleanup

pull/1122/head
Luca Di Leo 2022-01-17 09:54:44 -08:00
rodzic 7c006f3d32
commit 48e168e317
4 zmienionych plików z 65 dodań i 38 usunięć

Wyświetl plik

@ -176,9 +176,10 @@ class VerifyUrlTaskView(TaskView):
try: try:
res = verify_url(url, username, password) org, ds, folder, count, size = verify_url(url, username, password)
return Response({'count': res, 'success': True} if res else {'success': False}, status=status.HTTP_200_OK) return Response({'count': count, 'success': True, 'ds' : ds, 'org': org, 'folder': folder or None, 'size': size}
if org else {'success': False}, status=status.HTTP_200_OK)
except Exception as e: except Exception as e:
return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST)

Wyświetl plik

@ -166,13 +166,13 @@ class DroneDB:
def verify_url(url, username=None, password=None): def verify_url(url, username=None, password=None):
try: try:
info = parse_url(url) registryUrl, orgSlug, dsSlug, folder = parse_url(url).values()
ddb = DroneDB(info['registryUrl'], username, password) ddb = DroneDB(registryUrl, username, password)
files = ddb.get_files_list(info['orgSlug'], info['dsSlug'], info['folder']) files = ddb.get_files_list(orgSlug, dsSlug, folder)
# return files count # return some info
return len(files) return orgSlug, dsSlug, folder, len(files), sum(i['size'] for i in files)
except Exception as e: except Exception as e:
logger.error(e) logger.error(e)

Wyświetl plik

@ -29,8 +29,6 @@ export default class TaskView extends Component {
} }
//onSelectPlatform = platform => this.setState({ currentPlatform: platform });
onHideDialog = () => this.setState({ ddbRes: null, taskId: null, isDialogOpen: false }); onHideDialog = () => this.setState({ ddbRes: null, taskId: null, isDialogOpen: false });
onSelectDdbRes = res => { onSelectDdbRes = res => {
console.log("Result", res); console.log("Result", res);

Wyświetl plik

@ -34,7 +34,12 @@ export default class SelectUrlDialog extends Component {
selectedDataset: null, selectedDataset: null,
selectedFolder: null, selectedFolder: null,
info: null, info: null,
images_count: 0,
verDs: null,
verCount: 0,
verSize: 0,
verFolder: null,
// verifyStatus: null (not started), 'loading', 'success', 'error' // verifyStatus: null (not started), 'loading', 'success', 'error'
verifyStatus: null verifyStatus: null
}; };
@ -91,7 +96,20 @@ export default class SelectUrlDialog extends Component {
this.setState({verifyStatus: 'loading'}); this.setState({verifyStatus: 'loading'});
$.post(`${this.props.apiURL}/verifyurl`, { url: this.state.ddbUrl }).done(result => { $.post(`${this.props.apiURL}/verifyurl`, { url: this.state.ddbUrl }).done(result => {
this.setState({verifyStatus: result != null && result.success ? 'success' : 'error', images_count: result != null ? result.count : 0});
if (result != null) {
this.setState({
verifyStatus: result.count > 0 ? 'success' : 'error',
verCount: result.count,
verDs: result.ds,
verSize: result.size,
verFolder: result.folder
});
} else {
this.setState({verifyStatus: 'error'});
}
}) })
.fail((error) => { .fail((error) => {
this.setState({verifyStatus: 'error'}); this.setState({verifyStatus: 'error'});
@ -122,7 +140,7 @@ export default class SelectUrlDialog extends Component {
var dss = result.map(ds => { var dss = result.map(ds => {
return { label: ds.name !== ds.slug ? return { label: ds.name !== ds.slug ?
`${ds.name} (${ds.slug}) - ${ds.entries} files (${this.formatBytes(ds.size)})`: `${ds.name} (${ds.slug}) - ${ds.entries} files (${this.formatBytes(ds.size)})`:
`${ds.name} - ${ds.entries} files (${this.formatBytes(ds.size)})`, value: ds.slug }; `${ds.name} - ${ds.entries} files (${this.formatBytes(ds.size)})`, name: ds.name, value: ds.slug };
}); });
if (dss.length > 0) { if (dss.length > 0) {
@ -194,8 +212,6 @@ export default class SelectUrlDialog extends Component {
.replace('http://', 'ddb+unsafe://') .replace('http://', 'ddb+unsafe://')
.replace('https://', 'ddb://'); .replace('https://', 'ddb://');
console.log("Generated url:", url);
this.setState({ddbUrl: url}); this.setState({ddbUrl: url});
} }
@ -205,8 +221,13 @@ export default class SelectUrlDialog extends Component {
}; };
handleSubmit = e => { handleSubmit = e => {
console.log("Submit");
this.props.onSubmit({name: "ddb", url: this.state.ddbUrl, images_count: this.state.images_count}); this.props.onSubmit(
{
name: this.state.verDs != null ? this.state.verDs : "DroneDB",
url: this.state.ddbUrl,
images_count: this.state.verCount
});
}; };
render() { render() {
@ -226,11 +247,11 @@ export default class SelectUrlDialog extends Component {
</Modal.Header> </Modal.Header>
<Modal.Body bsClass="my-modal"> <Modal.Body bsClass="my-modal">
<p>Import the images from your DroneDB account</p> <p>Import the images from your DroneDB account</p>
<div class="select-row"> <div className={"select-row"}>
<div class="icon-cell"> <div className={"icon-cell"}>
<i class="fas fa-sitemap"></i> <i className={"fas fa-sitemap"}></i>
</div> </div>
<div class="select-cell"> <div className={"select-cell"}>
<Select <Select
className="basic-single" className="basic-single"
classNamePrefix="select" classNamePrefix="select"
@ -245,11 +266,11 @@ export default class SelectUrlDialog extends Component {
/> />
</div> </div>
</div> </div>
<div class="select-row"> <div className={"select-row"}>
<div class="icon-cell"> <div className={"icon-cell"}>
<i class="fas fa-database"></i> <i className={"fas fa-database"}></i>
</div> </div>
<div class="select-cell"> <div className={"select-cell"}>
<Select <Select
className="basic-single" className="basic-single"
classNamePrefix="select" classNamePrefix="select"
@ -265,11 +286,11 @@ export default class SelectUrlDialog extends Component {
/> />
</div> </div>
</div> </div>
<div class="select-row"> <div className={"select-row"}>
<div class="icon-cell"> <div className={"icon-cell"}>
<i class="fas fa-folder"></i> <i className={"fas fa-folder"}></i>
</div> </div>
<div class="select-cell"> <div className={"select-cell"}>
<Select <Select
className="basic-single" className="basic-single"
classNamePrefix="select" classNamePrefix="select"
@ -285,24 +306,31 @@ export default class SelectUrlDialog extends Component {
/> />
</div> </div>
</div> </div>
<p style={{'margin-top': '20px'}}>DroneDB url</p> <p style={{'marginTop': '20px'}}>DroneDB url</p>
<div class="select-row"> <div className={"select-row"}>
<div class="icon-cell"> <div className={"icon-cell"}>
<i class="fas fa-globe"></i> <i className={"fas fa-globe"}></i>
</div> </div>
<div class="select-cell"> <div className={"select-cell"}>
<FormControl <FormControl
type="url" type="url"
placeholder={"Enter DroneDB url"} placeholder={"Enter DroneDB url"}
value={this.state.ddbUrl || ''} value={this.state.ddbUrl || ''}
onChange={this.handleChange}/> onChange={this.handleChange} />
</div> </div>
<div class="icon-cell"> <div className={"icon-cell"}>
{ this.state.verifyStatus==='loading' && <i class="fas fa-spinner fa-spin"></i> } { this.state.verifyStatus==='loading' && <i className={"fas fa-spinner fa-spin"}></i> }
{ this.state.verifyStatus==='success' && <i class="fas fa-check"></i> } { this.state.verifyStatus==='success' && <i className={"fas fa-check"}></i> }
{ this.state.verifyStatus==='error' && <i class="fas fa-times"></i> } { this.state.verifyStatus==='error' && <i className={"fas fa-times"}></i> }
</div> </div>
</div> </div>
{this.state.verifyStatus != null && this.state.verifyStatus == "success" ?
<div className={"alert alert-success"}>
<span>Found <strong>{this.state.verCount}</strong> files ({this.formatBytes(this.state.verSize)})</span>
</div>
: ""}
</Modal.Body> </Modal.Body>
<Modal.Footer> <Modal.Footer>
<Button onClick={onHide}>Close</Button> <Button onClick={onHide}>Close</Button>