diff options
Diffstat (limited to 'frontend/views/upload')
| -rw-r--r-- | frontend/views/upload/components/upload.form.js | 16 | ||||
| -rw-r--r-- | frontend/views/upload/components/upload.index.js | 104 | ||||
| -rw-r--r-- | frontend/views/upload/components/upload.indexOptions.js | 62 | ||||
| -rw-r--r-- | frontend/views/upload/components/upload.menu.js | 18 | ||||
| -rw-r--r-- | frontend/views/upload/components/upload.show.js | 70 | ||||
| -rw-r--r-- | frontend/views/upload/upload.actions.js | 17 | ||||
| -rw-r--r-- | frontend/views/upload/upload.container.js | 37 | ||||
| -rw-r--r-- | frontend/views/upload/upload.css | 10 | ||||
| -rw-r--r-- | frontend/views/upload/upload.reducer.js | 21 |
9 files changed, 0 insertions, 355 deletions
diff --git a/frontend/views/upload/components/upload.form.js b/frontend/views/upload/components/upload.form.js deleted file mode 100644 index 2010088..0000000 --- a/frontend/views/upload/components/upload.form.js +++ /dev/null @@ -1,16 +0,0 @@ -import React, { Component } from 'react' -import { Link } from 'react-router-dom' - -import { MenuButton, FileInput } from '../../../common' - -export default class UploadForm extends Component { - render() { - return ( - <div className='uploadForm'> - <MenuButton name="upload" label={false}> - <FileInput onChange={this.props.uploadActions.upload} /> - </MenuButton> - </div> - ) - } -} diff --git a/frontend/views/upload/components/upload.index.js b/frontend/views/upload/components/upload.index.js deleted file mode 100644 index 6123001..0000000 --- a/frontend/views/upload/components/upload.index.js +++ /dev/null @@ -1,104 +0,0 @@ -import React, { Component } from 'react' -import { Link } from 'react-router-dom' - -import { uploadUri, formatDateTime } from '../../../util' -import { MenuButton, SmallMenuButton, Loader } from '../../../common' -import actions from '../../../actions' - -import UploadIndexOptions from './upload.indexOptions' -import UploadMenu from './upload.menu' - -// const { result, collectionLookup } = this.props - -export default class UploadIndex extends Component { - componentDidMount() { - this.fetch(false) - } - - componentDidUpdate(prevProps) { - if (this.props.upload.options.sort !== prevProps.upload.options.sort) { - this.fetch(false) - } - } - - fetch(load_more) { - const { options, index } = this.props.upload - const { order: index_order } = index - const [ sort, order ] = options.sort.split('-') - actions.upload.index({ - sort, order, limit: 50, offset: load_more ? index_order.length : 0, - }, load_more) - } - - render() { - const { searchOptions, uploadActions } = this.props - const { options } = this.props.upload - const { loading, lookup, order } = this.props.upload.index - if (loading) { - return ( - <section> - <UploadIndexOptions /> - <div className="row"> - {order && !!order.length && - <div className={'results ' + searchOptions.thumbnailSize}> - {order.map(id => <UploadItem key={id} data={lookup[id]} />)} - </div> - } - </div> - <Loader /> - </section> - ) - } - if (!lookup || !order.length) { - return ( - <section> - <UploadIndexOptions /> - <div className="row"> - <UploadMenu uploadActions={uploadActions} /> - <p className='gray'> - {"No uploads"} - </p> - </div> - </section> - ) - } - return ( - <section> - <UploadIndexOptions /> - <div className="row"> - <UploadMenu uploadActions={uploadActions} /> - <div className={'results ' + searchOptions.thumbnailSize}> - {order.map(id => <UploadItem key={id} data={lookup[id]} />)} - </div> - </div> - {order.length >= 50 && <button className='loadMore' onClick={() => this.fetch(true)}>Load More</button>} - </section> - ) - } -} - -const UploadItem = ({ data }) => { - // console.log(data) - const imageUri = uploadUri(data) - return ( - <div className='cell'> - <div className='img'> - <Link to={"/upload/" + data.id + "/show/"}> - <img src={imageUri} alt={"Uploaded image"} /> - </Link> - </div> - <div className='meta center'> - <div className='row'> - <SmallMenuButton name="search" href={"/search/upload/" + data.id + "/"} /> - </div> - <div> - {data.username} - </div> - <div> - {formatDateTime(data.created_at)} - </div> - </div> - </div> - ) -} - diff --git a/frontend/views/upload/components/upload.indexOptions.js b/frontend/views/upload/components/upload.indexOptions.js deleted file mode 100644 index 22d3fdc..0000000 --- a/frontend/views/upload/components/upload.indexOptions.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { Component } from 'react' -import { Link } from 'react-router-dom' -import { bindActionCreators } from 'redux' -import { connect } from 'react-redux' - -import actions from '../../../actions' - -import { Select, Checkbox } from '../../../common' - -const thumbnailOptions = [ - { name: 'th', label: 'Thumbnails', }, - { name: 'sm', label: 'Small', }, - { name: 'md', label: 'Medium', }, - { name: 'lg', label: 'Large', }, - { name: 'orig', label: 'Original', }, -] - -const sortOptions = [ - { name: 'id-asc', label: 'Most recent' }, - { name: 'id-desc', label: 'Oldest first' }, - { name: 'username-asc', label: 'Username (A-Z)' }, - { name: 'username-desc', label: 'Username (Z-A)' }, - // { name: '-asc', label: '' }, - // { name: '-desc', label: '' }, - // { name: '-asc', label: '' }, - // { name: '-desc', label: '' }, - // { name: '-asc', label: '' }, - // { name: '-desc', label: '' }, -] - -class IndexOptions extends Component { - render() { - const { options, searchOptions } = this.props - return ( - <div className='row menubar'> - <div /> - <Select - name={'sort'} - options={sortOptions} - selected={options.sort} - onChange={actions.upload.updateOption} - /> - <Select - name={'thumbnailSize'} - options={thumbnailOptions} - selected={searchOptions.thumbnailSize} - onChange={actions.search.updateOption} - /> - </div> - ) - } -} - -const mapStateToProps = state => ({ - options: state.upload.options, - searchOptions: state.search.options, -}) - -const mapDispatchToProps = dispatch => ({ -}) - -export default connect(mapStateToProps, mapDispatchToProps)(IndexOptions) diff --git a/frontend/views/upload/components/upload.menu.js b/frontend/views/upload/components/upload.menu.js deleted file mode 100644 index 37c7f0b..0000000 --- a/frontend/views/upload/components/upload.menu.js +++ /dev/null @@ -1,18 +0,0 @@ -import React, { Component } from 'react' -import { Link } from 'react-router-dom' - -import { MenuButton, FileInput } from '../../../common' - -import actions from '../../../actions' - -export default class UploadMenu extends Component { - render() { - return ( - <div className='menuButtons'> - <MenuButton name="upload"> - <FileInput onChange={this.props.uploadActions.upload} /> - </MenuButton> - </div> - ) - } -} diff --git a/frontend/views/upload/components/upload.show.js b/frontend/views/upload/components/upload.show.js deleted file mode 100644 index 6b36269..0000000 --- a/frontend/views/upload/components/upload.show.js +++ /dev/null @@ -1,70 +0,0 @@ -import React, { Component } from 'react' -import { Link } from 'react-router-dom' -import { connect } from 'react-redux' - -import actions from '../../../actions' -import { formatDate, formatTime, formatAge, uploadUri } from '../../../util' -import { history } from '../../../store' -import { Loader, MenuButton } from '../../../common' - -class UploadShow extends Component { - componentDidMount() { - actions.upload.show(this.props.match.params.id) - } - - componentDidUpdate(prevProps) { - if (prevProps.match.params.id !== this.props.match.params.id) { - actions.upload.show(this.props.match.params.id) - } - } - - handleDestroy() { - const { res: data } = this.props.upload.show - if (confirm("Really delete this upload?")) { - actions.upload.destroy(data).then(() => { - history.push('/upload/') - }) - } - } - - render() { - const { show, destroy } = this.props.upload - if (show.loading || destroy.loading) { - return <Loader /> - } - if (!show.loading && !show.res || show.not_found) { - return <div className='gray'>Upload {this.props.match.params.id} not found</div> - } - const { res: data } = show - return ( - <section className="row uploadShow"> - <div className="menuButtons"> - <MenuButton name="delete" onClick={this.handleDestroy.bind(this)} /> - <MenuButton name="search" href={'/search/upload/' + data.id + '/'} /> - </div> - <div> - <img src={uploadUri(data)} /> - <div className='byline'> - {'Uploaded by '} - {data.username} - {' on '} - {formatDate(data.created_at)} - {' at '} - {formatTime(data.created_at)} - {'. '} - </div> - </div> - </section> - ) - } -} - -const mapStateToProps = state => ({ - upload: state.upload, -}) - -const mapDispatchToProps = dispatch => ({ - // searchActions: bindActionCreators({ ...searchActions }, dispatch), -}) - -export default connect(mapStateToProps, mapDispatchToProps)(UploadShow) diff --git a/frontend/views/upload/upload.actions.js b/frontend/views/upload/upload.actions.js deleted file mode 100644 index ba2b14b..0000000 --- a/frontend/views/upload/upload.actions.js +++ /dev/null @@ -1,17 +0,0 @@ -import * as types from '../../types' -import { store, history } from '../../store' -import { api, post, pad, preloadImage } from '../../util' -import actions from '../../actions' -import { session } from '../../session' - -export const upload = file => dispatch => { - const formData = { - 'image': file, - 'username': session('username'), - } - // console.log(formData) - return actions.upload.upload(formData).then(data => { - // console.log(data.res) - return data.res - }) -} diff --git a/frontend/views/upload/upload.container.js b/frontend/views/upload/upload.container.js deleted file mode 100644 index ea9df5a..0000000 --- a/frontend/views/upload/upload.container.js +++ /dev/null @@ -1,37 +0,0 @@ -import React, { Component } from 'react' -import { Route, Link } from 'react-router-dom' -import { bindActionCreators } from 'redux' -import { connect } from 'react-redux' - -import './upload.css' - -import actions from '../../actions' -import * as uploadActions from './upload.actions' - -import UploadMenu from './components/upload.menu' -import UploadIndex from './components/upload.index' -import UploadShow from './components/upload.show' - -class Container extends Component { - render() { - return ( - <div className='row upload'> - <div> - <Route exact path='/upload/:id/show/' component={UploadShow} /> - <UploadIndex {...this.props} /> - </div> - </div> - ) - } -} - -const mapStateToProps = state => ({ - upload: state.upload, - searchOptions: state.search.options, -}) - -const mapDispatchToProps = dispatch => ({ - uploadActions: bindActionCreators({ ...uploadActions }, dispatch), -}) - -export default connect(mapStateToProps, mapDispatchToProps)(Container) diff --git a/frontend/views/upload/upload.css b/frontend/views/upload/upload.css deleted file mode 100644 index 8d77754..0000000 --- a/frontend/views/upload/upload.css +++ /dev/null @@ -1,10 +0,0 @@ -.uploadShow img { - max-width: 30rem; - max-height: 20rem; -} -.upload { - height: 100%; -} -.upload > div:last-child { - flex: 1; -}
\ No newline at end of file diff --git a/frontend/views/upload/upload.reducer.js b/frontend/views/upload/upload.reducer.js deleted file mode 100644 index 98dc0a1..0000000 --- a/frontend/views/upload/upload.reducer.js +++ /dev/null @@ -1,21 +0,0 @@ -import * as types from '../../types' -import { session, getDefault, getDefaultInt } from '../../session' - -import { crudState, crudReducer } from '../../api/crud.reducer' - -const initialState = crudState('upload', { - options: { - sort: getDefault('upload.sort', 'id-desc'), - } -}) - -const reducer = crudReducer('upload') - -export default function uploadReducer(state = initialState, action) { - // console.log(action.type, action) - state = reducer(state, action) - switch (action.type) { - default: - return state - } -} |
