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'}
- this.refreshDiscInfo() }>
-
+ this.refreshDiscInfo()}>
+ Refresh 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,