From d2076b2379b5d80670f0293d11aa2970a78e03de Mon Sep 17 00:00:00 2001 From: olzzon Date: Mon, 5 Oct 2020 17:09:51 +0200 Subject: [PATCH] feat: settings.tsx preparing multiple audio mixers support --- client/components/Settings.tsx | 227 +++++++++++++++++++++------------ 1 file changed, 145 insertions(+), 82 deletions(-) diff --git a/client/components/Settings.tsx b/client/components/Settings.tsx index 56ba9623..5ae6120b 100644 --- a/client/components/Settings.tsx +++ b/client/components/Settings.tsx @@ -70,51 +70,75 @@ class Settings extends React.PureComponent { } handleRemoteMidiInputPort = (selectedOption: any) => { - var settingsCopy = Object.assign({}, this.state.settings) + let settingsCopy = Object.assign({}, this.state.settings) settingsCopy.remoteFaderMidiInputPort = selectedOption.value this.setState({ settings: settingsCopy }) } handleRemoteMidiOutputPort = (selectedOption: any) => { - var settingsCopy = Object.assign({}, this.state.settings) + let settingsCopy = Object.assign({}, this.state.settings) settingsCopy.remoteFaderMidiOutputPort = selectedOption.value this.setState({ settings: settingsCopy }) } handleMixerMidiInputPort = (selectedOption: any) => { - var settingsCopy = Object.assign({}, this.state.settings) + let settingsCopy = Object.assign({}, this.state.settings) settingsCopy.mixers[0].mixerMidiInputPort = selectedOption.value this.setState({ settings: settingsCopy }) } handleMixerMidiOutputPort = (selectedOption: any) => { - var settingsCopy = Object.assign({}, this.state.settings) + let settingsCopy = Object.assign({}, this.state.settings) settingsCopy.mixers[0].mixerMidiOutputPort = selectedOption.value this.setState({ settings: settingsCopy }) } handleChange = (event: ChangeEvent) => { - var settingsCopy = Object.assign({}, this.state.settings) + let settingsCopy = Object.assign({}, this.state.settings) if (event.target.type === 'checkbox') { - ;(settingsCopy as any)[event.target.name] = !!event.target.checked + (settingsCopy as any)[event.target.name] = !!event.target.checked } else { - ;(settingsCopy as any)[event.target.name] = event.target.value + (settingsCopy as any)[event.target.name] = event.target.value } this.setState({ settings: settingsCopy }) } + handleNumberOfMixers = (event: ChangeEvent) => { + let settingsCopy = Object.assign({}, this.state.settings) + settingsCopy.numberOfMixers = parseInt(event.target.value) || 1 + settingsCopy = this.setNumberOfMixers(settingsCopy) + this.setState({ settings: settingsCopy }) + } + + setNumberOfMixers = (settings: any) => { + console.log(settings.mixers) + settings.mixers = settings.mixers.map((mixer: any, index: number) => { + if (index < settings.numberOfMixers) { + return mixer + } + }) + for (let i =0; i< settings.numberOfMixers; i++) { + if (settings.mixers[i] === undefined) { + settings.mixers.push(settings.mixers[0]) + } + } + return settings + } + handleMixerChange = (event: ChangeEvent) => { - var settingsCopy = Object.assign({}, this.state.settings) + let settingsCopy = Object.assign({}, this.state.settings) if (event.target.type === 'checkbox') { - (settingsCopy.mixers[0] as any)[event.target.name] = !!event.target.checked + (settingsCopy.mixers[0] as any)[event.target.name] = !!event.target + .checked } else { - (settingsCopy.mixers[0] as any)[event.target.name] = event.target.value + (settingsCopy.mixers[0] as any)[event.target.name] = + event.target.value } this.setState({ settings: settingsCopy }) } handleProtocolChange = (selectedOption: any) => { - var settingsCopy = Object.assign({}, this.state.settings) + let settingsCopy = Object.assign({}, this.state.settings) settingsCopy.mixers[0].mixerProtocol = selectedOption.value window.mixerProtocol = window.mixerProtocolPresets[settingsCopy.mixers[0].mixerProtocol] @@ -123,9 +147,8 @@ class Settings extends React.PureComponent { handleNumberOfChannels = (index: number, event: any) => { let settingsCopy = Object.assign({}, this.state.settings) - settingsCopy.mixers[0].numberOfChannelsInType[index] = parseInt( - event.target.value - ) || 1 + settingsCopy.mixers[0].numberOfChannelsInType[index] = + parseInt(event.target.value) || 1 this.setState({ settings: settingsCopy }) } @@ -175,7 +198,6 @@ class Settings extends React.PureComponent { renderChannelTypeSettings = () => { return (
-
NUMBER OF CHANNELTYPES:
{window.mixerProtocol.channelTypes.map( (item: any, index: number) => { return ( @@ -229,8 +251,10 @@ class Settings extends React.PureComponent { +
+ +
+ +
+ +
+ +
+ +
+ {window.mixerProtocol.protocol === 'MIDI' + ? this.renderMixerMidiSettings() + : ''} +
+ {this.renderChannelTypeSettings()} +
+ + ) + })} +
+ ) + } + render() { return (
-
MIXER SETTINGS:
+
GENERIC SETTINGS:
- { />
- -
- -

- -

-
-
@@ -442,12 +509,8 @@ class Settings extends React.PureComponent { />
- {window.mixerProtocol.protocol === 'MIDI' - ? this.renderMixerMidiSettings() - : ''} -
- {this.renderChannelTypeSettings()} -
+ + {this.renderMixerSettings()}