Queue.js 1.1 KB

123456789101112131415161718192021222324252627
  1. import { Link } from 'react-router5'
  2. import './Queue.css';
  3. import {slugify, formatDuration} from './utils.js';
  4. export default function Queue({queue, dispatch}) {
  5. return (
  6. <aside className="Queue">
  7. <h2>Queue</h2>
  8. <table><tbody>
  9. {queue.items.map((track, i) => (
  10. <tr key={i} className={ i === queue.pos ? "Queue-active" : "" }>
  11. <td>{i+1}</td>
  12. <td>{track.title}</td>
  13. <td><Link routeName="artist" routeParams={{artist: slugify(track.album_artist || track.artist)}}>{track.artist}</Link></td>
  14. <td>{track.year}</td>
  15. <td><Link routeName="album" routeParams={{artist: slugify(track.album_artist || track.artist), album: slugify(track.album)}}>{track.album}</Link></td>
  16. <td>{track.no}</td>
  17. <td>{track.bit_rate} kbps</td>
  18. <td>{formatDuration(track.duration)}</td>
  19. <td><button onClick={() => dispatch({type:'QUEUE_PLAY', payload: i})}>
  20. <svg viewBox="0 0 24 24"><g><path d="M8 5v14l11-7z"/></g></svg>
  21. </button></td>
  22. </tr>))}
  23. </tbody></table>
  24. </aside>
  25. );
  26. }