Youtube music and video downloader

OptionsAll.jsx 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React, {Component, PropTypes} from 'react';
  2. import Video from './Video';
  3. export default class OptionsAll extends Component {
  4. renderCount() {
  5. return (this.props.count || 0) + ' link' + (this.props.count > 1 ? 's' : '' );
  6. }
  7. isDisabled(type) {
  8. const prop = (type === 'MP3' ? 'audio' : 'video');
  9. return !_.every(this.props.links, (e) => {
  10. const converted = _.find(this.props.converted, i => e.id === i.id);
  11. return converted ? converted[prop] : true;
  12. });
  13. }
  14. render() {
  15. if (!this.props.count) return null;
  16. return (
  17. <div className="options-all">
  18. <div className="label">ALL: {this.renderCount()}</div>
  19. <div>
  20. { _.map(this.props.handlers, (h) => (
  21. <button key={h.type} className="option" onClick={() => h.handler()} disabled={this.isDisabled(h.type)}>
  22. <i className="fa fa-download"/> {h.type}
  23. </button>
  24. )) }
  25. </div>
  26. </div>
  27. );
  28. }
  29. }
  30. OptionsAll.propTypes = {
  31. count: PropTypes.number.isRequired,
  32. links: PropTypes.arrayOf(PropTypes.instanceOf(Video)),
  33. converted: PropTypes.arrayOf(PropTypes.object),
  34. handlers: PropTypes.arrayOf(PropTypes.shape({
  35. type: PropTypes.string,
  36. handler: PropTypes.func,
  37. })).isRequired,
  38. };