diff --git a/audino/frontend/package.json b/audino/frontend/package.json index ef3eb7eb..f46583c0 100644 --- a/audino/frontend/package.json +++ b/audino/frontend/package.json @@ -24,13 +24,14 @@ "popper.js": "^1.16.1", "prop-types": "^15.7.2", "react": "^16.13.1", - "react-bootstrap": "^1.0.1", + "react-bootstrap": "^1.6.3", "react-dom": "^16.13.1", "react-helmet": "^6.0.0", "react-redux": "^7.2.6", "react-router": "^5.2.0", "react-router-dom": "^5.3.0", "react-scripts": "3.4.1", + "resize-image-data": "^0.3.0", "redux": "^4.1.2", "uuid": "^8.3.2", "wavesurfer.js": "^5.2.0" diff --git a/audino/frontend/scripts/run-dev.sh b/audino/frontend/scripts/run-dev.sh index 97875833..f4e91f24 100644 --- a/audino/frontend/scripts/run-dev.sh +++ b/audino/frontend/scripts/run-dev.sh @@ -9,6 +9,7 @@ echo "npm install" cd "${app}" && npm install cd "${app}" && npm install jszip cd "${app}" && npm install file-saver + cd "${app}" && npm i resize-image-data } || { echo "package update broke install, deleting node_modules" cd "${app}" && rm -rf node_modules diff --git a/audino/frontend/src/components/annotate/navbutton.js b/audino/frontend/src/components/annotate/navbutton.js index a10366c2..526bb9f8 100644 --- a/audino/frontend/src/components/annotate/navbutton.js +++ b/audino/frontend/src/components/annotate/navbutton.js @@ -34,7 +34,7 @@ const NavButton = props => { previous_pages[num_of_prev] = dataId; localStorage.setItem('previous_links', JSON.stringify(previous_pages)); localStorage.setItem('count', JSON.stringify(next_page_num)); - + console.log("configed browser settings") if (noMore) { window.location.href = `${path}/projects/${projectId}/data`; } else { @@ -69,6 +69,7 @@ const NavButton = props => { }) .then(response => { const { data_id } = response.data; + console.log("successfully prepared next data point") loadNextPage(response.status === 202, data_id); }) .catch(e => { diff --git a/audino/frontend/src/components/annotate/sampleRateChanger.js b/audino/frontend/src/components/annotate/sampleRateChanger.js new file mode 100644 index 00000000..37bbfc93 --- /dev/null +++ b/audino/frontend/src/components/annotate/sampleRateChanger.js @@ -0,0 +1,58 @@ +import React from 'react'; +import { Button } from '../button'; + +const SampleRateChanger = props => { + const {annotate, state} = props + const {wavesurfer, filename, spectrogram} = state + const [text, setText] = React.useState("") + const [hz, setHz] = React.useState(0) + const [hz2, setHz2] = React.useState(Number(wavesurfer.backend.offlineAc.sampleRate/1000)) + + const handleSubmit = () => { + const int = parseInt(text, 10) + + const newState = annotate.initalState; + newState["sampleRate"] = int || 44100 + wavesurfer.load(`/audios/${filename}`, null, null, null, int ); + } + + const inputText = e => { + setText(e.target.value) + } + + const ChangeColorChange = e => { + setHz(e.target.value) + wavesurfer.empty() + wavesurfer.load(`/audios/${filename}`, null, null, null, e.target.value * 1000); + } + + return ( +
+ { + setHz(e.target.value) + spectrogram.scale(e.target.value, hz2, wavesurfer.backend.offlineAc.sampleRate/1000) + }} /> + { + setHz2(e.target.value); + spectrogram.scale(0, e.target.value, Math.ceil(wavesurfer.backend.offlineAc.sampleRate/1000)) + /*Object.values(wavesurfer.regions.list).forEach(segment => { + segment.scale(e.target.value * 1000) + })*/ + }} + /> + {hz/2 + " - " + hz2/2 + " khz"} +
+ ) +}; + +export default SampleRateChanger; diff --git a/audino/frontend/src/components/annotate/zoom.js b/audino/frontend/src/components/annotate/zoom.js new file mode 100644 index 00000000..a4f484f8 --- /dev/null +++ b/audino/frontend/src/components/annotate/zoom.js @@ -0,0 +1,39 @@ +import React from 'react'; +import StickySlider from '../stickySlider'; +const Zoom = props => { + const {annotate} = props + const {state} = annotate; + const {isRendering, wavesurfer, zoomOn} = state + + /*wavesurfer.on('zoom', pxPerSec => { + wavesurfer.spectrogram._onUpdate(pxPerSec * wavesurfer.getDuration()); + })*/ + + const handleZoom = value => { + console.log("hello", wavesurfer, state, annotate, props) + wavesurfer.zoom(value); + wavesurfer.spectrogram._onUpdate() + } + + return ( +
+ {zoomOn ? +
+ handleZoom(value)} + stickyPos={[0, 200]} + threshold={5} + /> +
+ : null} + +
+ + ); +}; + +export default Zoom; diff --git a/audino/frontend/src/components/sideMenu.js b/audino/frontend/src/components/sideMenu.js index 46b6da4e..67869c3c 100644 --- a/audino/frontend/src/components/sideMenu.js +++ b/audino/frontend/src/components/sideMenu.js @@ -6,7 +6,8 @@ import { Button, IconButton } from './button'; import SpectroChanger from './annotate/spectroChanger'; import ChangePlayback from './annotate/extraFeatures/changePlayback'; import PreviousAnnotationButton from './annotate/extraFeatures/previousAnnotationButton'; - +import SampleRateChanger from './annotate/sampleRateChanger'; +import Zoom from './annotate/zoom'; const SideMenuTab = props => { const { tab, icon, tabOpen, setTab } = props; const swapTabs = tab => { @@ -100,6 +101,8 @@ const SideMenu = props => { {toUnsavedClipOn && annotate.UnsavedButton ? annotate.UnsavedButton.render() : null} + +