import React, { Component } from "react"; import { Table } from "react-bootstrap"; import ProposalOverlay from "../Proposals/ProposalOverlay"; import VoteDiv from "./VoteDiv"; import { Member, ProposalDetail, Seat } from "../../types"; interface IProps { block: number; round: number; council: Seat[]; members: Member[]; proposals: ProposalDetail[]; expand?: boolean; } interface IState { expand: boolean; } class CouncilVotes extends Component { constructor(props: IProps) { super(props); this.state = { expand: false }; this.toggleExpand = this.toggleExpand.bind(this); } componentDidMount() { const { expand } = this.props; if (expand) this.setState({ expand }); } toggleExpand() { this.setState({ expand: !this.state.expand }); } render() { const { block, council, members, proposals, round } = this.props; const { expand } = this.state; let councilMembers: Member[] = []; council.forEach((seat) => { const member = members.find((m) => m.account === seat.member); if (!member) return; councilMembers.push(member); }); const fail = "btn btn-outline-danger"; const styles: { [key: string]: string } = { Approved: "btn btn-success", Rejected: fail, Canceled: fail, Expired: fail, Pending: "btn btn-warning", }; return ( {councilMembers.map((member) => ( ))} {expand && proposals .sort((a, b) => a.createdAt - b.createdAt) .map((p) => ( {p.votesByAccount && council.map((seat) => ( m.account === seat.member)} /> ))} ))}
Round {round} {member.handle}
); } } export default CouncilVotes;