import * as React from "react"; import { connect } from "react-redux"; import * as Selectors from "../../selectors"; import * as Utils from "../../utils"; import * as FileUtils from "../../fileUtils"; import { AppState, PlaylistTrack } from "../../types"; interface StateProps { tracks: PlaylistTrack[]; filterTracks: (query: string) => PlaylistTrack[]; } interface State { filter: string; } class TracksTable extends React.Component { constructor(props: StateProps) { super(props); this.state = { filter: "" }; } render() { const cellStyle: React.CSSProperties = { whiteSpace: "nowrap" }; return (
Search: this.setState({ filter: e.target.value })} />
Artist
Title
Album
Length
Track #
Genere
Year
Filename
{this.props.filterTracks(this.state.filter).map(track => { return (
{track.artist}
{track.title}
{track.album}
{Utils.getTimeStr(track.duration)}
1
Primus
2001
{track.url == null ? track.defaultName : FileUtils.filenameFromUrl(track.url)}
); })}
{/*
*/}
1 item [3:25]
); } } const mapStateToProps = (state: AppState): StateProps => { return { tracks: Object.values(Selectors.getTracks(state)), filterTracks: Selectors.getTracksMatchingFilter(state) }; }; export default connect(mapStateToProps)(TracksTable);