From d2cb17038b8537a609be06be2ed7013dbe27117e Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 8 Mar 2021 22:11:55 +0100 Subject: beginning the BIG refactor. moving editor stuff into per-episode hierarchy --- .../views/editor/media/containers/media.index.js | 160 +++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 animism-align/frontend/app/views/editor/media/containers/media.index.js (limited to 'animism-align/frontend/app/views/editor/media/containers/media.index.js') diff --git a/animism-align/frontend/app/views/editor/media/containers/media.index.js b/animism-align/frontend/app/views/editor/media/containers/media.index.js new file mode 100644 index 0000000..da94d3c --- /dev/null +++ b/animism-align/frontend/app/views/editor/media/containers/media.index.js @@ -0,0 +1,160 @@ +import React, { Component } from 'react' +import { Link } from 'react-router-dom' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import { formatDateTime } from 'app/utils' +import { MenuButton, SmallMenuButton, Loader } from 'app/common' +import actions from 'app/actions' + +import { thumbnailURL } from 'app/utils/annotation.utils' + +import MediaIndexOptions from '../components/media.indexOptions' +import MediaMenu from '../components/media.menu' + +// const { result, collectionLookup } = this.props + +class MediaIndex extends Component { + componentDidMount() { + // this.fetch(false) + } + + componentDidUpdate(prevProps) { + if (this.props.media.options.sort !== prevProps.media.options.sort) { + this.fetch(false) + } + } + + fetch(load_more) { + const { options, index } = this.props.media + const { order: index_order } = index + const [ sort, order ] = options.sort.split(' ') + actions.media.index({ + sort, order, limit: 5000, // offset: load_more ? index_order.length : 0, + }, load_more) + } + + render() { + const { mediaActions } = this.props + const { options } = this.props.media + const { loading, lookup, order } = this.props.media.index + if (loading) { + return ( +
+ +
+ {order && !!order.length && +
+ {order.map(id => )} +
+ } +
+ +
+ ) + } + if (!lookup || !order.length) { + return ( +
+ +
+ +

+ {"No media"} +

+
+
+ ) + } + return ( +
+ +
+ +
+

Images

+ {order.filter(id => lookup[id].type === 'image').map(id => )} +

Galleries

+ {order.filter(id => lookup[id].type === 'gallery').map(id => )} +

Videos

+ {order.filter(id => lookup[id].type === 'video' && !lookup[id].medium.match(/book/i)).map(id => )} +

Books

+ {order.filter(id => lookup[id].type === 'video' && lookup[id].medium.match(/book/i)).map(id => )} +

Files

+ {order.filter(id => lookup[id].type === 'file').map(id => )} +
+
+ {order.length >= 50 && } +
+ ) + } +} + +const MediaItem = ({ data }) => { + // console.log(data) + return ( +
+
+ + {data.title} + +
+
+
+ {data.title}
+ {data.author}
+ {data.date} +
+
+
+ ) +} + +const GalleryItem = ({ data }) => { + // console.log(data) + return ( +
+
+
+ + {data.title} + +
+ +
+ {data.title}
+ {data.author}
+ {data.date} +
+ +
+
+ ) +} + +const FileItem = ({ data }) => { + // console.log(data) + return ( +
+
+ +
+ {data.title}
+ {data.settings.file.url}
+
+ +
+
+ ) +} + + +const mapStateToProps = state => ({ + media: state.media, +}) + +const mapDispatchToProps = dispatch => ({ + // uploadActions: bindActionCreators({ ...uploadActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(MediaIndex) -- cgit v1.2.3-70-g09d2