import * as React from "react"; import { connect } from "react-redux"; import { cursorSelectors } from "../../skinSelectors"; 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() { return (
Search: this.setState({ filter: e.target.value })} />
{this.props.filterTracks(this.state.filter).map(track => { return ( ); })}
Artist Title Album Length Track # Genere Year Filename
{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);