| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import React, {Component, PropTypes} from 'react';
- import Video from './Video';
-
- export default class OptionsAll extends Component {
- renderCount() {
- return (this.props.count || 0) + ' link' + (this.props.count > 1 ? 's' : '' );
- }
-
- isDisabled(type) {
- const prop = (type === 'MP3' ? 'audio' : 'video');
- return !_.every(this.props.links, (e) => {
- const converted = _.find(this.props.converted, i => e.id === i.id);
- return converted ? converted[prop] : true;
- });
- }
-
- render() {
- if (!this.props.count) return null;
- return (
- <div className="options-all">
- <div className="label">ALL: {this.renderCount()}</div>
- <div>
- { _.map(this.props.handlers, (h) => (
- <button key={h.type} className="option" onClick={() => h.handler()} disabled={this.isDisabled(h.type)}>
- <i className="fa fa-download"/> {h.type}
- </button>
- )) }
- </div>
- </div>
- );
- }
- }
-
- OptionsAll.propTypes = {
- count: PropTypes.number.isRequired,
- links: PropTypes.arrayOf(PropTypes.instanceOf(Video)),
- converted: PropTypes.arrayOf(PropTypes.object),
- handlers: PropTypes.arrayOf(PropTypes.shape({
- type: PropTypes.string,
- handler: PropTypes.func,
- })).isRequired,
- };
|