Cleanup scheduler display (#3301)

This commit is contained in:
Jaco Greeff 2020-07-31 07:56:14 +02:00 committed by GitHub
parent 66fe87a8a8
commit 956cae1bc9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 35 deletions

View File

@ -16,7 +16,7 @@ interface Props {
value: ScheduledExt;
}
function Scheduled ({ className = '', value: { call, count, maybePeriodic, nextBlockNumber } }: Props): React.ReactElement<Props> {
function Scheduled ({ className = '', value: { blockNumber, call, maybePeriodic } }: Props): React.ReactElement<Props> {
const { api } = useApi();
const bestNumber = useCall<BlockNumber>(api.derive.chain.bestNumber, []);
const period = maybePeriodic.unwrapOr(null);
@ -27,8 +27,8 @@ function Scheduled ({ className = '', value: { call, count, maybePeriodic, nextB
<td className='number together'>
{bestNumber && (
<>
<BlockToTime blocks={nextBlockNumber.sub(bestNumber)} />
#{formatNumber(nextBlockNumber)}
<BlockToTime blocks={blockNumber.sub(bestNumber)} />
#{formatNumber(blockNumber)}
</>
)}
</td>
@ -39,7 +39,7 @@ function Scheduled ({ className = '', value: { call, count, maybePeriodic, nextB
</td>
<td className='number together'>
{period && (
formatNumber(count) + ' / ' + formatNumber(period[1])
formatNumber(period[1])
)}
</td>
</tr>

View File

@ -20,7 +20,6 @@ interface Props {
function Schedule ({ className = '' }: Props): React.ReactElement<Props> {
const { t } = useTranslation();
const { api } = useApi();
const bestNumber = useCall<BlockNumber>(api.derive.chain.bestNumber, []);
const items = useCall<ScheduledExt[]>(api.query.scheduler.agenda.entries as any, [], {
transform: (entries: [{ args: [BlockNumber] }, Option<Scheduled>[]][]): ScheduledExt[] =>
entries
@ -32,7 +31,7 @@ function Schedule ({ className = '' }: Props): React.ReactElement<Props> {
.filter((schedOpt) => schedOpt.isSome)
.map((schedOpt) => schedOpt.unwrap())
.reduce((items: ScheduledExt[], { call, maybeId, maybePeriodic, priority }, index) => {
items.push({ blockNumber, call, count: 0, key: `${blockNumber.toString()}-${index}`, maybeId, maybePeriodic, nextBlockNumber: blockNumber, priority });
items.push({ blockNumber, call, key: `${blockNumber.toString()}-${index}`, maybeId, maybePeriodic, priority });
return items;
}, items);
@ -46,37 +45,13 @@ function Schedule ({ className = '' }: Props): React.ReactElement<Props> {
[t('count')]
], [t]);
let scheduled: ScheduledExt[] | undefined;
if (bestNumber && items) {
scheduled = items
.map((schedule): ScheduledExt => {
if (schedule.maybePeriodic.isSome) {
const [inc, max] = schedule.maybePeriodic.unwrap();
const nextBlockNumber = schedule.blockNumber.toBn();
let count = 0;
while (max.gtn(count) && nextBlockNumber.lt(bestNumber)) {
count++;
nextBlockNumber.iadd(inc);
}
schedule.count = count;
schedule.nextBlockNumber = nextBlockNumber;
}
return schedule;
})
.filter(({ nextBlockNumber }) => nextBlockNumber.gt(bestNumber));
}
return (
<Table
className={className}
empty={scheduled?.length === 0 && t<string>('No active schedules')}
empty={items?.length === 0 && t<string>('No active schedules')}
header={header}
>
{scheduled?.map((scheduled): React.ReactNode => (
{items?.map((scheduled): React.ReactNode => (
<ScheduledView
key={scheduled.key}
value={scheduled}

View File

@ -4,16 +4,13 @@
import { BlockNumber, Call, SchedulePeriod, SchedulePriority } from '@polkadot/types/interfaces';
import BN from 'bn.js';
import { Bytes, Option } from '@polkadot/types';
export interface ScheduledExt {
blockNumber: BlockNumber;
call: Call;
count: number;
key: string;
maybeId: Option<Bytes>;
maybePeriodic: Option<SchedulePeriod>;
priority: SchedulePriority;
nextBlockNumber: BN;
}