From d579a10ba169d6e95e8ea8a9d7f2821fe89bca1f Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 17 Jul 2020 18:03:08 +0200 Subject: media form tweaks. copy a media item to avoid typing in properties. --- .../components/annotations/annotation.form.js | 4 +- .../views/align/containers/timeline.container.js | 2 +- .../frontend/views/media/components/media.form.js | 55 ++++++++++++++++++++-- .../views/media/components/media.formImage.js | 18 ++++--- .../frontend/views/media/components/media.menu.js | 19 ++++++-- .../frontend/views/media/containers/media.edit.js | 4 +- .../frontend/views/media/containers/media.index.js | 5 +- .../frontend/views/media/containers/media.new.js | 35 +++++++++++++- .../frontend/views/media/media.container.js | 1 + animism-align/frontend/views/media/media.css | 4 ++ 10 files changed, 123 insertions(+), 24 deletions(-) (limited to 'animism-align/frontend/views') diff --git a/animism-align/frontend/views/align/components/annotations/annotation.form.js b/animism-align/frontend/views/align/components/annotations/annotation.form.js index 3348804..53f640f 100644 --- a/animism-align/frontend/views/align/components/annotations/annotation.form.js +++ b/animism-align/frontend/views/align/components/annotations/annotation.form.js @@ -43,14 +43,14 @@ class AnnotationForm extends Component { case 38: // up e.preventDefault() start_ts -= 0.1 - actions.align.updateAnnotationForm('start_ts', start_ts) + actions.align.updateAnnotationForm('start_ts', Math.max(0, start_ts)) actions.audio.seek(start_ts) actions.align.setCursor(start_ts) break case 40: // down e.preventDefault() start_ts += 0.1 - actions.align.updateAnnotationForm('start_ts', start_ts) + actions.align.updateAnnotationForm('start_ts', Math.max(0, start_ts)) actions.audio.seek(start_ts) actions.align.setCursor(start_ts) break diff --git a/animism-align/frontend/views/align/containers/timeline.container.js b/animism-align/frontend/views/align/containers/timeline.container.js index a0f4d3a..a924eaf 100644 --- a/animism-align/frontend/views/align/containers/timeline.container.js +++ b/animism-align/frontend/views/align/containers/timeline.container.js @@ -54,7 +54,7 @@ class Timeline extends Component { switch (e.keyCode) { case 38: // up e.preventDefault() - selectedAnnotation.start_ts -= e.shiftKey ? 1 : 0.1 + selectedAnnotation.start_ts = Math.max(selectedAnnotation.start_ts - (e.shiftKey ? 1 : 0.1), 0) actions.align.updateSelectedAnnotation(selectedAnnotation) actions.audio.seek(selectedAnnotation.start_ts) actions.align.setCursor(selectedAnnotation.start_ts) diff --git a/animism-align/frontend/views/media/components/media.form.js b/animism-align/frontend/views/media/components/media.form.js index 9b93788..1463041 100644 --- a/animism-align/frontend/views/media/components/media.form.js +++ b/animism-align/frontend/views/media/components/media.form.js @@ -16,6 +16,7 @@ const newMedia = () => ({ title: '', author: '', pre_title: '', + post_title: '', translated_title: '', date: '', source: '', @@ -38,9 +39,11 @@ export default class MediaForm extends Component { constructor(props) { super(props) + this.handleKeyDown = this.handleKeyDown.bind(this) this.handleSelect = this.handleSelect.bind(this) this.handleChange = this.handleChange.bind(this) this.handleSettingsChange = this.handleSettingsChange.bind(this) + this.handleSettingsChangeEvent = this.handleSettingsChangeEvent.bind(this) this.handleSubmit = this.handleSubmit.bind(this) } @@ -57,6 +60,21 @@ export default class MediaForm extends Component { ...data }, }) + window.addEventListener('keydown', this.handleKeyDown) + } + + componentWillUnmount() { + window.removeEventListener('keydown', this.handleKeyDown) + } + + handleKeyDown(e) { + // console.log(e, e.keyCode) + if ((e.ctrlKey || e.metaKey) && e.keyCode === 83) { + if (e) { + e.preventDefault() + } + this.handleSubmit() + } } handleChange(e) { @@ -78,7 +96,13 @@ export default class MediaForm extends Component { }) } + handleSettingsChangeEvent(e) { + const { name, value } = e.target + this.handleSettingsChange(name, value) + } + handleSettingsChange(name, value) { + console.log(name, value) if (name !== 'multiple') { value = { [name]: value } } @@ -94,11 +118,13 @@ export default class MediaForm extends Component { } handleSubmit(e) { - e.preventDefault() + if (e) { + e.preventDefault() + } const { isNew, onSubmit } = this.props const { data } = this.state const requiredKeys = "author title date".split(" ") - const validKeys = "type tag url title author pre_title translated_title date source medium start_ts settings".split(" ") + const validKeys = "type tag url title author pre_title post_title translated_title date source medium start_ts settings".split(" ") const validData = validKeys.reduce((a,b) => { a[b] = data[b]; return a }, {}) const errorFields = requiredKeys.filter(key => !validData[key]) if (errorFields.length) { @@ -167,7 +193,13 @@ export default class MediaForm extends Component { + +