import React, {Component} from 'react'; import styles from './Streams.css'; import {connect} from 'react-redux'; import I18n from 'coral-framework/modules/i18n/i18n'; import {fetchAssets, updateAssetState} from '../../actions/assets'; import translations from '../../translations.json'; import { RadioGroup, Radio, Icon, DataTable, TableHeader } from 'react-mdl'; import Pager from 'coral-ui/components/Pager'; const limit = 25; class Streams extends Component { state = { search: '', sort: 'desc', filter: 'all', statusMenus: {}, timer: null, page: 0 } componentDidMount () { this.props.fetchAssets(0, limit, '', this.state.sortBy); } onSettingChange = (setting) => (e) => { let options = this.state; this.setState({[setting]: e.target.value}); options[setting] = e.target.value; this.props.fetchAssets(0, limit, options.search, options.sort, options.filter); } onSearchChange = (e) => { const search = e.target.value; this.setState((prevState) => { prevState.search = search; clearTimeout(prevState.timer); const fetchAssets = this.props.fetchAssets; prevState.timer = setTimeout(() => { fetchAssets(0, limit, search, this.state.sort, this.state.filter); }, 350); return prevState; }); } renderDate = (date) => { const d = new Date(date); return `${d.getMonth() + 1}/${d.getDate()}/${d.getFullYear()}`; } onStatusClick = (closeStream, id, statusMenuOpen) => () => { if (statusMenuOpen) { this.setState(prev => { prev.statusMenus[id] = false; return prev; }); this.props.updateAssetState(id, closeStream ? Date.now() : null) .then(() => { const {search, sort, filter, page} = this.state; this.props.fetchAssets(page, limit, search, sort, filter); }); } else { this.setState(prev => { prev.statusMenus[id] = true; return prev; }); } } renderStatus = (closedAt, {id}) => { const closed = closedAt && new Date(closedAt).getTime() < Date.now(); const statusMenuOpen = this.state.statusMenus[id]; return