diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-08-10 18:45:26 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-08-10 18:45:26 +0200 |
| commit | ac43e33512a8e70ba34574de60cba0f5f7a03490 (patch) | |
| tree | 697c47b94bc1a9c95d148caeda81346d54e560e4 | |
| parent | 73b0e74bd668f2aad6a319a6042aed5f0a8bc80d (diff) | |
sortable
4 files changed, 56 insertions, 50 deletions
diff --git a/animism-align/frontend/app/views/media/components/media.form.js b/animism-align/frontend/app/views/media/components/media.form.js index 60b8736..2d21838 100644 --- a/animism-align/frontend/app/views/media/components/media.form.js +++ b/animism-align/frontend/app/views/media/components/media.form.js @@ -259,7 +259,7 @@ export default class MediaForm extends Component { onChange={this.handleSettingsChangeEvent} /> <Checkbox - label="Hide in list of works" + label="Hide in checklist" name="hide_in_bibliography" checked={data.settings.hide_in_bibliography} onChange={this.handleSettingsChange} diff --git a/animism-align/frontend/app/views/media/components/media.formGallery.js b/animism-align/frontend/app/views/media/components/media.formGallery.js index 2c1fa49..f5a0bf3 100644 --- a/animism-align/frontend/app/views/media/components/media.formGallery.js +++ b/animism-align/frontend/app/views/media/components/media.formGallery.js @@ -1,11 +1,12 @@ import React, { Component } from 'react' import { Link } from 'react-router-dom' +import { ReactSortable } from "react-sortablejs" import { session } from 'app/session' import actions from 'app/actions' import { capitalize, preloadImage } from 'app/utils' -import { TextInput, LabelDescription, UploadImage, Select, TextArea, Checkbox, SubmitButton, Loader } from 'app/common' +import { TextInput, LabelDescription, FileInputField, Select, TextArea, Checkbox, SubmitButton, Loader } from 'app/common' import { renderThumbnail } from 'app/common/upload.helpers' const DISPLAY_SIZE = 2000 @@ -28,14 +29,6 @@ export default class MediaGalleryForm extends Component { this.uploadTaggedSize = this.uploadTaggedSize.bind(this) } - componentDidMount() { - // this.setState({ }) - if (this.props.data.settings.fullsize) { - preloadImage(this.props.data.settings.fullsize.url) - .then(img => this.setState({ img })) - } - } - handleChange(e) { const { name, value } = e.target this.handleSelect(name, value) @@ -49,22 +42,8 @@ export default class MediaGalleryForm extends Component { this.props.onSettingsChange(name, value) } - handleUpload({ file, img, canvas, blob }) { - // sizes: fullsize, display, thumbnail - this.replaceTaggedSize(file, 'fullsize') - .then(data => { - this.setState({ img }) - this.props.onSettingsChange('multiple', { - fullsize: data, - crop: {}, - }) - return this.replaceTaggedSize(blob, 'display', file.name) - }).then(data => { - this.props.onSettingsChange('multiple', { - display: data, - }) - this.uploadThumbnail(img) - }) + handleUpload(files) { + // this.uploadThumbnail(img) } uploadThumbnail(img) { @@ -115,32 +94,42 @@ export default class MediaGalleryForm extends Component { }) } + handleOrderChanged(image_order) { + this.handleSettingsChange('image_order', image_order) + } + render() { const { data } = this.props + const { image_order, image_lookup, thumbnail_lookup } = data.settings // console.log(data) return ( - <div className='imageForm'> - {!data.url && - <label className={'text fileInput'}> - <span>{"Upload image"}</span> - <div className="row"> - <button> - {"Choose image"} - </button> - <FileInputField - title="Upload images" - mime="*/*" - onChange={this.handleUpload} - /> - </div> - </label> - } - {data.settings.fullsize && - <div> - {data.settings.fullsize.url} - </div> - } + <div className='galleryForm'> + <FileInputField + multiple + title="Upload images" + mime="*/*" + onChange={this.handleUpload} + /> + <ReactSortable + list={image_order || []} + setList={new_order => this.handleOrderChanged(new_order)} + > + {(image_order || []).map(image_id => { + <GalleryImageForm + id={image_id} + key={image_id} + image={image_lookup[image_id]} + thumbnail={image_lookup[image_id]} + /> + })} + </ReactSortable> </div> ) } } + +const GalleryImageForm =({ id, key, image, thumbnail }) => { + return ( + <div /> + ) +} diff --git a/animism-align/frontend/app/views/media/containers/media.index.js b/animism-align/frontend/app/views/media/containers/media.index.js index 7935563..2b80362 100644 --- a/animism-align/frontend/app/views/media/containers/media.index.js +++ b/animism-align/frontend/app/views/media/containers/media.index.js @@ -74,6 +74,8 @@ class MediaIndex extends Component { <div className={'results ' + options.thumbnailSize}> <h2>Images</h2> {order.filter(id => lookup[id].type === 'image').map(id => <MediaItem key={id} data={lookup[id]} />)} + <h2>Galleries</h2> + {order.filter(id => lookup[id].type === 'gallery').map(id => <GalleryItem key={id} data={lookup[id]} />)} <h2>Video</h2> {order.filter(id => lookup[id].type === 'video').map(id => <MediaItem key={id} data={lookup[id]} />)} <h2>Files</h2> @@ -106,6 +108,21 @@ const MediaItem = ({ data }) => { ) } +const GalleryItem = ({ data }) => { + // console.log(data) + return ( + <div className='cell'> + <div className='meta center'> + <Link to={"/media/" + data.id + "/edit/"}> + <div> + <i>{data.title}</i><br /> + </div> + </Link> + </div> + </div> + ) +} + const FileItem = ({ data }) => { // console.log(data) return ( diff --git a/animism-align/package-lock.json b/animism-align/package-lock.json index 4124245..3df35f4 100644 --- a/animism-align/package-lock.json +++ b/animism-align/package-lock.json @@ -3302,9 +3302,9 @@ } }, "@types/sortablejs": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.10.4.tgz", - "integrity": "sha512-iXdJUEM09Hc0RacStDvkEi5BBdHuuwdys0L5/GtsRiEht69Df4hapA3FwFIeXn2STicqJjBAkowyD1OA3jGgwA==" + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.10.5.tgz", + "integrity": "sha512-U/i9rGkCwmgmsa0UzHlGnQtL4y57tjywjp6j3GbA64MLaGO+sEBLVhBrQokWfgzeV2T6hQRYC4dZtXkl6dCMfw==" }, "@types/vimeo__player": { "version": "2.9.0", |
