summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-10-12 14:44:33 +0200
committerJules Laplace <julescarbon@gmail.com>2020-10-12 14:44:33 +0200
commit1e39e0d283ad06a4a8212abbe2c817eb6e3f5b91 (patch)
tree619d266f1b0103b719d0cce89c39112aea48450b
parentac03ba9a645066acfda0449a879034531bb6cee3 (diff)
toggle script
-rw-r--r--animism-align/cli/commands/peaks/parse.py8
-rw-r--r--animism-align/frontend/app/constants.js6
-rw-r--r--animism-align/frontend/app/views/align/align.css16
-rw-r--r--animism-align/frontend/app/views/align/containers/script.container.js27
-rw-r--r--animism-align/frontend/app/views/audio/audio.actions.js5
-rw-r--r--animism-align/frontend/app/views/site/site.actions.js5
-rw-r--r--animism-align/frontend/app/views/viewer/nav/eflux.chrome.js4
-rw-r--r--animism-align/frontend/app/views/viewer/nav/eflux.icons.js7
8 files changed, 66 insertions, 12 deletions
diff --git a/animism-align/cli/commands/peaks/parse.py b/animism-align/cli/commands/peaks/parse.py
index b6a9f82..f5b36a4 100644
--- a/animism-align/cli/commands/peaks/parse.py
+++ b/animism-align/cli/commands/peaks/parse.py
@@ -5,7 +5,7 @@ Extract peaks from an MP3 file.
import click
@click.command()
-@click.option('-i', '--input', 'fp_in', required=False,
+@click.option('-i', '--input', 'fp_in', required=True,
help='Input file')
@click.pass_context
def cli(ctx, fp_in):
@@ -19,6 +19,10 @@ def cli(ctx, fp_in):
from app.settings import app_cfg
+ if not os.path.exists(fp_in):
+ print(f"fp_in does not exist: {fp_in}")
+ return
+
print(f"Loading {fp_in}")
y, sr = librosa.load(fp_in, sr=None)
@@ -36,3 +40,5 @@ def cli(ctx, fp_in):
with open(os.path.join(app_cfg.DIR_DATA_STORE, 'peaks/peaks.json'), 'w') as fp_out:
json.dump(peaks.tolist(), fp_out, separators=(',', ':'))
+
+ print("Wrote peaks.json")
diff --git a/animism-align/frontend/app/constants.js b/animism-align/frontend/app/constants.js
index dfee865..a9f51ec 100644
--- a/animism-align/frontend/app/constants.js
+++ b/animism-align/frontend/app/constants.js
@@ -1,3 +1,9 @@
+export const URLS = {
+ audio: '/static/data_store/peaks/animism_episode_01_0910.mp3',
+ peaks: '/static/data_store/peaks/peaks.json',
+ text: '/static/data_store/peaks/text.txt',
+}
+
export const WAVEFORM_SIZE = 300
export const ZOOM_STEPS = [
diff --git a/animism-align/frontend/app/views/align/align.css b/animism-align/frontend/app/views/align/align.css
index 760ec4b..15ff840 100644
--- a/animism-align/frontend/app/views/align/align.css
+++ b/animism-align/frontend/app/views/align/align.css
@@ -99,9 +99,23 @@ canvas {
/* Script */
.script {
- height: calc(100vh - 3.15rem);
+ position: absolute;
+ top: 0;
+ right: 0;
+ min-width: 4rem;
z-index: 8;
}
+.script textarea {
+ height: calc(100vh - 3.15rem);
+}
+.script button {
+ position: absolute;
+ top: 0.25rem;
+ right: 0.25rem;
+ z-index: 9;
+ border: 0;
+ background: transparent;
+}
/* Annotations */
diff --git a/animism-align/frontend/app/views/align/containers/script.container.js b/animism-align/frontend/app/views/align/containers/script.container.js
index cc340c6..fe3f27b 100644
--- a/animism-align/frontend/app/views/align/containers/script.container.js
+++ b/animism-align/frontend/app/views/align/containers/script.container.js
@@ -6,17 +6,34 @@ import { connect } from 'react-redux'
import actions from 'app/actions'
class Timeline extends Component {
+ state = {
+ visible: false,
+ }
constructor(props){
super(props)
}
render() {
if (this.props.text.loading) return <div />
+ if (!this.state.visible) {
+ return (
+ <div className='script'>
+ <button onClick={() => this.setState({ visible: true })}>
+ +
+ </button>
+ </div>
+ )
+ }
return (
- <textarea
- className='script'
- onChange={e => actions.site.updateText(e.target.value)}
- value={this.props.text}
- />
+ <div className='script'>
+ <textarea
+ className='script'
+ onChange={e => actions.site.updateText(e.target.value)}
+ value={this.props.text}
+ />
+ <button onClick={() => this.setState({ visible: false })}>
+ x
+ </button>
+ </div>
)
}
}
diff --git a/animism-align/frontend/app/views/audio/audio.actions.js b/animism-align/frontend/app/views/audio/audio.actions.js
index 1a9e823..be9e7dc 100644
--- a/animism-align/frontend/app/views/audio/audio.actions.js
+++ b/animism-align/frontend/app/views/audio/audio.actions.js
@@ -1,11 +1,14 @@
import * as types from 'app/types'
import { store, history, dispatch } from 'app/store'
+
+import { URLS } from 'app/constants'
+
// import actions from 'app/actions'
// import { session } from 'app/session'
const audioPlayer = document.createElement('audio')
// audioPlayer.volume = 0.0
-audioPlayer.src = '/static/data_store/peaks/animismA080720.mp3'
+audioPlayer.src = URLS.audio
audioPlayer.addEventListener('loadedmetadata', () => {
// console.log('audio duration:', audioPlayer.duration)
dispatch({ type: types.align.set_display_setting, key: 'duration', value: audioPlayer.duration })
diff --git a/animism-align/frontend/app/views/site/site.actions.js b/animism-align/frontend/app/views/site/site.actions.js
index d1c1e66..6e8b72b 100644
--- a/animism-align/frontend/app/views/site/site.actions.js
+++ b/animism-align/frontend/app/views/site/site.actions.js
@@ -1,6 +1,7 @@
import * as types from 'app/types'
import { api } from 'app/utils'
import actions from 'app/actions'
+import { URLS } from 'app/constants'
export const loadProject = () => dispatch => {
Promise.all([
@@ -19,11 +20,11 @@ export const loadProject = () => dispatch => {
}
export const loadPeaks = (asdf) => dispatch => (
- api(dispatch, types.peaks, 'peaks', '/static/data_store/peaks/peaks.json')
+ api(dispatch, types.peaks, 'peaks', URLS.peaks)
)
export const loadText = (asdf) => dispatch => (
- api(dispatch, types.text, 'text', '/static/data_store/peaks/text.txt')
+ api(dispatch, types.text, 'text', URLS.text)
)
export const updateText = text => dispatch => (
diff --git a/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js b/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js
index a7f6d24..283f3cb 100644
--- a/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js
+++ b/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js
@@ -2,7 +2,7 @@ import React, { Component } from 'react'
import { connect } from 'react-redux'
import {
- EfluxLogo, EfluxClose, EfluxMenu
+ EfluxLogo, EfluxClose, TranscriptIcon
} from './eflux.icons'
import { PlayButton } from './viewer.icons'
import actions from 'app/actions'
@@ -75,7 +75,7 @@ class EfluxChrome extends Component {
onMouseLeave={() => this.handleMouseLeave('transcript')}
onClick={() => actions.viewer.toggleComponent('transcript')}
>
- {EfluxMenu}
+ {TranscriptIcon}
</div>
</div>
<div className={this.state.eflux ? "growl-tooltip tooltip-eflux hover" : "growl-tooltip tooltip-eflux"}>
diff --git a/animism-align/frontend/app/views/viewer/nav/eflux.icons.js b/animism-align/frontend/app/views/viewer/nav/eflux.icons.js
index 96e2b30..d983d4e 100644
--- a/animism-align/frontend/app/views/viewer/nav/eflux.icons.js
+++ b/animism-align/frontend/app/views/viewer/nav/eflux.icons.js
@@ -41,3 +41,10 @@ export const EfluxMenu = (
</g>
</svg>
)
+
+export const TranscriptIcon = (
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
+ <path d="M6.2,4.4v21.3h17.6V4.4H6.2z M22.5,24.4H7.5V5.6h15.1V24.4z M20.4,9.7H9.8V8.5h10.6V9.7z M20.4,13.6H9.8v-1.2h10.6V13.6z
+ M20.4,21.3H9.8V20h10.6V21.3z M20.4,17.4H9.8v-1.2h10.6V17.4z"/>
+ </svg>
+) \ No newline at end of file