diff --git a/client/src/DiscInfo/DiscInfo.js b/client/src/DiscInfo/DiscInfo.js index e1cfca1..ac0f8d8 100644 --- a/client/src/DiscInfo/DiscInfo.js +++ b/client/src/DiscInfo/DiscInfo.js @@ -1,71 +1,50 @@ import React, {Component} from 'react'; import PropTypes from 'prop-types'; -import $ from 'jquery'; -import { - Button, - Form, - FormGroup, - Input, - Label, - Table, -} from 'reactstrap'; - -import { - actionRipTracks, -} from '../api.js' +import {Button, Form, FormGroup, Input, Label, Table,} from 'reactstrap'; +import {actionRipTracks,} from '../api.js' class DiscInfo extends Component { - constructor(props) { super(props); - let selectedTracks = {}; - this.props.tracks && this.props.tracks.map((trackInfo, trackId) => { - selectedTracks[trackId] = trackInfo.isAutoSelected; - }); this.state = { checkAll: false, discName: false, - selectedTracks: selectedTracks, + selectedTracks: this.props.tracks.map((trackInfo) => { + return trackInfo; + }) }; } - getTrackCheckboxes($formElement) { - return $formElement - .closest('fieldset') - .find('input[name=selectTrack]'); - } - // Toggle the checkbox on all tracks. toggleAllTracks(event) { - let $target = $(event.target); - this.setState({ - checkAll: $target.prop('checked'), - }); - this.getTrackCheckboxes(event.target) - .prop('checked', this.state.checkAll); + alert('This functionality is currently disabled.'); + // let $target = $(event.target); + // this.setState({ + // checkAll: $target.prop('checked'), + // }); + // this.getTrackCheckboxes(event.target) + // .prop('checked', this.state.checkAll); } - toggleTrack(trackId) { - let changeObj = {}; - changeObj[trackId] = !this.selectedTracks[trackId]; - this.setState({ - selectedTracks: Object.assign( - this.selectedTracks, changeObj - ) - }) + toggleTrack(event) { + let trackId = event.target.name; + this.state.selectedTracks[trackId].isSelected = event.target.checked; } // Command the server to rip certain tracks for this disc. - ripTracks(event) { - let ripTrackIds = this.getTrackCheckboxes(event.target) - .find(':checked') - .data('track-id'); + ripTracks() { + let trackIds = []; + this.state.selectedTracks.forEach((selectedTrack, trackId) => { + if (selectedTrack.isSelected) { + trackIds.push(trackId); + } + }); actionRipTracks( - this.state.discName, + this.props.discName, this.props.driveId, - ripTrackIds + trackIds ); } @@ -109,14 +88,14 @@ class DiscInfo extends Component { - {this.props.tracks && this.props.tracks.map(function(trackInfo, trackId) { - return this.toggleTrack(trackId) }> + {this.props.tracks && this.props.tracks.map((trackInfo, trackId) => { + return this.toggleTrack(trackId) } - />s + name={trackId} + checked={this.state.selectedTracks[trackId].isSelected} + onChange={(event) => this.toggleTrack(event)} + /> { trackInfo.orderWeight } { trackInfo.name } @@ -130,7 +109,9 @@ class DiscInfo extends Component { - @@ -152,7 +133,7 @@ DiscInfo.propTypes = { volumeName: PropTypes.string.isRequired, tracks: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.number.isRequired, - isAutoSelected: PropTypes.bool, + isSelected: PropTypes.bool, ripStatus: PropTypes.oneOf(['none', 'busy', 'fail', 'success']), chapterCount: PropTypes.number.isRequired, diskSize: PropTypes.string.isRequired, diff --git a/client/src/DiscPanel/DiscPanel.js b/client/src/DiscPanel/DiscPanel.js index 3c237f6..fa3187a 100644 --- a/client/src/DiscPanel/DiscPanel.js +++ b/client/src/DiscPanel/DiscPanel.js @@ -21,7 +21,7 @@ class DiscPanel extends Component { constructor(props) { super(props); this.state = { - discInfo: {}, + discInfo: {} }; subscribeToDiscInfo(this.handleDiscInfo, this, this.props.driveId); } @@ -39,27 +39,34 @@ class DiscPanel extends Component { } render(){ + let discInfo = ''; + if (this.state.discInfo.tracks && this.state.discInfo.tracks.length > 0) { + discInfo = ; + } return(
- { this.props.driveId } + {this.props.driveId}  -  - { this.props.discName || 'No Disc' } + {this.props.discName || 'No Disc'} - - + {discInfo}
diff --git a/makemkv.js b/makemkv.js index ea51fe4..a86ff4a 100644 --- a/makemkv.js +++ b/makemkv.js @@ -213,7 +213,7 @@ class MakeMkv { trackIds.map((trackId) => this.ripQueue.driveId.add(trackId)); } - if (!this.ripQueue.driveId.length) { + if (!this.ripQueue.driveId.size) { // @TODO: What to do here? return; } @@ -224,7 +224,7 @@ class MakeMkv { }; this.ripTrack( - saveDirectory, driveId, this.ripQueue.driveId.pop(), newCallback + saveDirectory, driveId, Array.from(this.ripQueue.driveId).pop(), newCallback ); } diff --git a/server.js b/server.js index 29162ac..5c9e18a 100644 --- a/server.js +++ b/server.js @@ -204,7 +204,7 @@ class MakeMkvServer { // Actions client.on('doDiscInfo', (data) => { this.doDiscInfo(data) }); - client.on('doRipTrack', (data) => { this.doRipTrack(data) }); + client.on('doRipTracks', (data) => { this.doRipTracks(data) }); } @@ -225,7 +225,7 @@ class MakeMkvServer { this.makeMkv.getDiscInfo(driveId, callback); } - doRipTrack(data) { + doRipTracks(data) { let driveId = data.driveId, discName = data.discName,