film-exif/src/views/HomeView.js

137 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import * as _ from 'lodash';
import { Component } from 'inferno';
import {
Button,
Col,
Container,
Jumbotron,
Modal,
ModalBody,
ModalFooter,
ModalHeader,
Row,
} from '//components/Bootstrap';
export class HomeView extends Component {
constructor (props) {
super(props);
this.state = {
exifData: [],
showModal: false,
};
_.bindAll(this, [
'bindEvents',
'handleDrop',
'toggleErrorModal',
]);
}
componentDidMount () {
console.log(this);
this.bindEvents();
}
bindEvents () {
this.context.ws.subscribe('parsed-exif-tags', data => {
this.setState({
exifData: data,
});
});
}
handleDragOver (e) {
e.preventDefault();
e.stopPropagation();
}
handleDrop (e) {
e.preventDefault();
e.stopPropagation();
const draggedFiles = [];
for (const f of e.dataTransfer.files) {
draggedFiles.push(f.path);
}
const newTransfer = { ...e.dataTransfer };
console.info(newTransfer);
this.context.ws.sendJSON('dropped-files', draggedFiles);
}
showErrorDialog () {
this.context.ws.sendJSON(
'show-error-box',
'Looks like there was a problem. (╥﹏╥) \n (╯°□°)╯︵ ┻━┻'
);
}
showOpenDialog () {
this.context.ws.sendJSON('show-open-dialog');
}
showSaveDialog () {
this.context.ws.sendJSON('show-save-dialog');
}
toggleErrorModal () {
this.setState(prevState => ({
showModal: !prevState.showModal,
}));
}
render () {
return (
<main>
<Jumbotron onDrop={this.handleDrop} onDragover={this.handleDragOver}>
<Container className="App">
<Row>
<header className="App-header">
<h1>Welcome to Film Exif</h1>
</header>
</Row>
<Row>
<p className="App-intro">
Drop files here.
</p>
</Row>
<Row>
<Col md={3}>
<Button onClick={this.showOpenDialog}>Show Open Dialog</Button>
</Col>
<Col md={3}>
<Button onClick={this.showSaveDialog}>Show Save Dialog</Button>
</Col>
<Col md={3}>
<Button onClick={this.showErrorDialog}>Show Error Dialog</Button>
</Col>
<Col md={3}>
<Button onClick={this.toggleErrorModal}>Show Error Modal</Button>
</Col>
</Row>
<Row>
<Col md={12}>
<h3>Parsed Exif Data</h3>
<pre>{JSON.stringify(this.state.exifData, null, 2)}</pre>
</Col>
</Row>
</Container>
</Jumbotron>
<Modal fade isOpen={this.state.showModal} toggle={this.toggleErrorModal}>
<ModalHeader toggle={this.toggleErrorModal}>
Error Title
</ModalHeader>
<ModalBody>
Looks like there was a problem. ()<br />(°°
</ModalBody>
<ModalFooter>
<Button color="primary" onClick={this.toggleErrorModal}>Close</Button>
</ModalFooter>
</Modal>
</main>
);
}
}