import React from 'react'; import { view } from 'react-easy-state'; import { Icon, Button, Popover } from 'antd'; import { RouteComponentProps, withRouter } from 'react-router'; import Showdown from 'showdown'; import moment from 'moment'; import store from 'src/store'; import { Proposal } from 'src/types'; import './index.less'; import Field from 'components/Field'; import { Link } from 'react-router-dom'; const showdownConverter = new Showdown.Converter({ simplifiedAutoLink: true, tables: true, strikethrough: true, disableForced4SpacesIndentedSublists: true, openLinksInNewWindow: true, excludeTrailingPunctuationFromURLs: true, }); type Props = RouteComponentProps; class ProposalsNaked extends React.Component { componentDidMount() { store.fetchProposals(); } render() { const id = Number(this.props.match.params.id); const { proposals, proposalsFetched } = store; if (!proposalsFetched) { return 'loading proposals...'; } if (id) { const singleProposal = proposals.find(p => p.proposalId === id); if (singleProposal) { return (
proposals {id}{' '}
); } else { return `could not find proposal: ${id}`; } } return (
{proposals.length === 0 &&
no proposals
} {proposals.length > 0 && proposals.map(p => )}
); } } // tslint:disable-next-line:max-classes-per-file class ProposalItemNaked extends React.Component { state = { showDelete: false, }; render() { const p = this.props; const body = showdownConverter.makeHtml(p.content); return (
{' '}
} title="Permanently delete proposal?" trigger="click" visible={this.state.showDelete} onVisibleChange={showDelete => this.setState({ showDelete })} >
{p.title} [{p.proposalId}]{p.proposalAddress}{' '} {p.team.map(u => (
{u.displayName} ( {u.accountAddress})
))}
} /> TODO: comments} /> } /> {p.milestones.map((ms, idx) => (
{idx}. {ms.title} (title)
{moment(ms.dateCreated).format('YYYY/MM/DD h:mm a')} (dateCreated)
{moment(ms.dateEstimated).format('YYYY/MM/DD h:mm a')} (dateEstimated)
{ms.stage} (stage)
{JSON.stringify(ms.immediatePayout)} (immediatePayout)
{ms.payoutPercent} (payoutPercent)
{ms.content} (body)
{/* content
{ms.content}
*/}
))} } /> ); } private handleDelete = () => { store.deleteProposal(this.props.proposalId); }; } const ProposalItem = view(ProposalItemNaked); const Proposals = withRouter(view(ProposalsNaked)); export default Proposals;