3
1

index.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React from "react";
  2. import { Link } from "react-router-dom";
  3. import ElectionStatus from "./ElectionStatus";
  4. import MemberBox from "../Members/MemberBox";
  5. import Loading from "../Loading";
  6. import { Handles, Member, Post, ProposalDetail, Seat } from "../../types";
  7. const Council = (props: {
  8. councils: Seat[][];
  9. councilElection?: any;
  10. block: number;
  11. members: Member[];
  12. stage: any;
  13. termEndsAt: number;
  14. proposals: ProposalDetail[];
  15. posts: Post[];
  16. now: number;
  17. validators: string[];
  18. handles: Handles;
  19. round: number;
  20. }) => {
  21. const { councilElection, members, handles, round, termEndsAt } = props;
  22. const council = props.councils[props.councils.length - 1];
  23. const show = round && council;
  24. const half = show ? Math.floor(council.length / 2) : 0;
  25. const startTime = props.now - props.block * 6000;
  26. return (
  27. <div className="box">
  28. <ElectionStatus
  29. show={show}
  30. stage={props.stage}
  31. termEndsAt={termEndsAt}
  32. block={props.block}
  33. {...councilElection}
  34. />
  35. <h3>Council</h3>
  36. {(show && (
  37. <div className="d-flex flex-column">
  38. <div className="d-flex flex-row justify-content-between">
  39. {council.slice(0, half).map((m) => (
  40. <div key={m.member} className="box">
  41. <MemberBox
  42. id={m.id || 0}
  43. account={m.member}
  44. handle={m.handle || handles[m.member]}
  45. members={members}
  46. councils={props.councils}
  47. proposals={props.proposals}
  48. placement={"top"}
  49. posts={props.posts}
  50. startTime={startTime}
  51. validators={props.validators}
  52. />
  53. </div>
  54. ))}
  55. </div>
  56. <div className="d-flex flex-row justify-content-between">
  57. {council.slice(half).map((m) => (
  58. <div key={m.member} className="box">
  59. <MemberBox
  60. key={m.member}
  61. id={m.id || 0}
  62. account={m.member}
  63. handle={m.handle || handles[m.member]}
  64. members={members}
  65. councils={props.councils}
  66. proposals={props.proposals}
  67. placement={"top"}
  68. posts={props.posts}
  69. startTime={startTime}
  70. validators={props.validators}
  71. />
  72. </div>
  73. ))}
  74. </div>
  75. </div>
  76. )) || <Loading />}
  77. <hr />
  78. <Link to={`/tokenomics`}>Reports</Link>
  79. </div>
  80. );
  81. };
  82. export default Council;