overview.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import WorkingGroupsCommandBase from '../../base/WorkingGroupsCommandBase';
  2. import { displayHeader, displayNameValueTable, displayTable } from '../../helpers/display';
  3. import { formatBalance } from '@polkadot/util';
  4. import { shortAddress } from '../../helpers/display';
  5. import chalk from 'chalk';
  6. export default class WorkingGroupsOverview extends WorkingGroupsCommandBase {
  7. static description = 'Shows an overview of given working group (current lead and workers)';
  8. static flags = {
  9. ...WorkingGroupsCommandBase.flags,
  10. };
  11. async run() {
  12. const lead = await this.getApi().groupLead(this.group);
  13. const members = await this.getApi().groupMembers(this.group);
  14. displayHeader('Group lead');
  15. if (lead) {
  16. displayNameValueTable([
  17. { name: 'Member id:', value: lead.memberId.toString() },
  18. { name: 'Member handle:', value: lead.profile.handle.toString() },
  19. { name: 'Role account:', value: lead.roleAccount.toString() },
  20. ]);
  21. }
  22. else {
  23. this.log(chalk.yellow('No lead assigned!'));
  24. }
  25. displayHeader('Members');
  26. const membersRows = members.map(m => ({
  27. '': lead?.workerId.eq(m.workerId) ? "\u{2B50}" : '', // A nice star for the lead
  28. 'Worker id': m.workerId.toString(),
  29. 'Member id': m.memberId.toString(),
  30. 'Member handle': m.profile.handle.toString(),
  31. 'Stake': formatBalance(m.stake),
  32. 'Earned': formatBalance(m.reward?.totalRecieved),
  33. 'Role account': shortAddress(m.roleAccount)
  34. }));
  35. displayTable(membersRows, 5);
  36. }
  37. }