-
Notifications
You must be signed in to change notification settings - Fork 115
/
Copy pathoverview.ts
50 lines (43 loc) · 1.77 KB
/
overview.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import WorkingGroupsCommandBase from '../../base/WorkingGroupsCommandBase'
import { displayHeader, displayNameValueTable, displayTable, memberHandle, shortAddress } from '../../helpers/display'
import { formatBalance } from '@polkadot/util'
import chalk from 'chalk'
export default class WorkingGroupsOverview extends WorkingGroupsCommandBase {
static description = 'Shows an overview of given working group (current lead and workers)'
static flags = {
...WorkingGroupsCommandBase.flags,
}
async run(): Promise<void> {
const lead = await this.getApi().groupLead(this.group)
const members = await this.getApi().groupMembers(this.group)
displayHeader('Group lead')
if (lead) {
displayNameValueTable([
{ name: 'Member id:', value: lead.memberId.toString() },
{ name: 'Member handle:', value: memberHandle(lead.profile) },
{ name: 'Role account:', value: lead.roleAccount.toString() },
])
} else {
this.log(chalk.yellow('No lead assigned!'))
}
const pairs = this.getPairs()
displayHeader('Members')
const membersRows = members.map((m) => ({
'Worker id': m.workerId.toString(),
'Member id': m.memberId.toString(),
'Member handle': memberHandle(m.profile),
Stake: formatBalance(m.stake),
'Reward': formatBalance(m.reward?.valuePerBlock),
'Missed reward': formatBalance(m.reward?.totalMissed),
'Role account': shortAddress(m.roleAccount),
'':
(lead?.workerId.eq(m.workerId) ? '\u{2B50}' : ' ') +
' ' +
(pairs.some((p) => p.address === m.roleAccount.toString()) ? '\u{1F511}' : ' '),
}))
displayTable(membersRows, 5)
displayHeader('Legend')
this.log('\u{2B50} - Leader')
this.log('\u{1F511} - Role key available in CLI')
}
}