Lidarr/frontend/src/AlbumStudio/AlbumStudioAlbum.js

102 lines
2.2 KiB
JavaScript
Raw Normal View History

2020-09-07 01:33:10 +00:00
import classNames from 'classnames';
2017-09-04 02:20:56 +00:00
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import MonitorToggleButton from 'Components/MonitorToggleButton';
import styles from './AlbumStudioAlbum.css';
2017-09-04 02:20:56 +00:00
class AlbumStudioAlbum extends Component {
2017-09-04 02:20:56 +00:00
//
// Listeners
onAlbumMonitoredPress = () => {
2017-09-04 02:20:56 +00:00
const {
id,
2017-09-04 02:20:56 +00:00
monitored
} = this.props;
this.props.onAlbumMonitoredPress(id, !monitored);
2017-09-04 02:20:56 +00:00
}
//
// Render
render() {
const {
title,
disambiguation,
albumType,
2017-09-04 02:20:56 +00:00
monitored,
statistics,
2017-09-04 02:20:56 +00:00
isSaving
} = this.props;
const {
trackFileCount,
totalTrackCount,
percentOfTracks
2017-09-04 02:20:56 +00:00
} = statistics;
return (
<div className={styles.album}>
2017-09-04 02:20:56 +00:00
<div className={styles.info}>
<MonitorToggleButton
monitored={monitored}
isSaving={isSaving}
onPress={this.onAlbumMonitoredPress}
2017-09-04 02:20:56 +00:00
/>
<span>
{
disambiguation ? `${title} (${disambiguation})` : `${title}`
}
</span>
</div>
<div className={styles.albumType}>
<span>
{
`${albumType}`
2017-09-04 02:20:56 +00:00
}
</span>
</div>
<div
className={classNames(
styles.tracks,
percentOfTracks < 100 && monitored && styles.missingWanted,
percentOfTracks === 100 && styles.allTracks
2017-09-04 02:20:56 +00:00
)}
title={`${trackFileCount}/${totalTrackCount} tracks downloaded`}
2017-09-04 02:20:56 +00:00
>
{
totalTrackCount === 0 ? '0/0' : `${trackFileCount}/${totalTrackCount}`
2017-09-04 02:20:56 +00:00
}
</div>
</div>
);
}
}
AlbumStudioAlbum.propTypes = {
id: PropTypes.number.isRequired,
title: PropTypes.string.isRequired,
disambiguation: PropTypes.string,
albumType: PropTypes.string.isRequired,
2017-09-04 02:20:56 +00:00
monitored: PropTypes.bool.isRequired,
statistics: PropTypes.object.isRequired,
isSaving: PropTypes.bool.isRequired,
onAlbumMonitoredPress: PropTypes.func.isRequired
2017-09-04 02:20:56 +00:00
};
AlbumStudioAlbum.defaultProps = {
2017-09-04 02:20:56 +00:00
isSaving: false,
statistics: {
trackFileCount: 0,
totalTrackCount: 0,
percentOfTracks: 0
2017-09-04 02:20:56 +00:00
}
};
export default AlbumStudioAlbum;