Explorar o código

Add membership info

Ricardo Maltez %!s(int64=4) %!d(string=hai) anos
pai
achega
bbca2573bd

+ 1 - 1
council/report-generator/report-template.md

@@ -69,7 +69,7 @@ This is a report which explains the current state of the Joystream network in nu
 ### 5.1 Membership Information
 | Property          | Start Block | End Block | % Change |
 |-------------------|--------------|--------------|----------|
-| Number of members |              |              |          |
+| Number of members | {startMembers}|  {endMembers} | {percNewMembers} |
 
 ### 5.2 Media & Uploads
 | Property                | Start Block | End Block | % Change |

+ 2 - 1
council/report-generator/src/StatisticsData.ts

@@ -25,8 +25,9 @@ export class StatisticsData {
     totalIssuance: number = 0;
     percNewIssuance: number = 0;
 
+    startMembers: number = 0;
+    endMembers: number = 0;
     newMembers: number = 0;
-    totalMembers: number = 0;
     percNewMembers: number = 0;
 
     newBlocks: number = 0;

+ 12 - 7
council/report-generator/src/statistics.ts

@@ -31,6 +31,7 @@ import {
     Finalized,
     IProposalStatus, Approved
 } from "@joystream/types/proposals";
+import {MemberId} from "@joystream/types/members";
 
 const fsSync = require('fs');
 const fs = fsSync.promises;
@@ -67,7 +68,8 @@ export class StatisticsCollector {
         await this.fillBasicInfo(startHash, endHash);
         await this.fillMintsInfo(startHash, endHash);
         await this.fillCouncilInfo(startHash, endHash);
-        await this.fillCouncilElectionInfo(startBlock, endBlock);
+        await this.fillCouncilElectionInfo(startBlock);
+        await this.fillMembershipInfo(startHash, endHash);
         await this.fillForumInfo(startHash, endHash);
         this.api.disconnect();
         return this.statistics;
@@ -91,11 +93,7 @@ export class StatisticsCollector {
         // statistics.totalIssuance = endIssuance.toNumber();
         // statistics.percNewIssuance = this.convertToPercentage(statistics.newIssuance, statistics.totalIssuance);
         //
-        // let startNrMembers = await this.api.query.members.membersCreated.at(startHash) as unknown as MemberId;
-        // let endNrNumber = await this.api.query.members.membersCreated.at(endHash) as unknown as MemberId;
-        // statistics.newMembers = endNrNumber.toNumber() - startNrMembers.toNumber();
-        // statistics.totalMembers = endNrNumber.toNumber();
-        // statistics.percNewMembers = this.convertToPercentage(statistics.newMembers, statistics.totalMembers);
+
         //
         //
         // let startNrStakes = await this.api.query.stake.stakesCreated.at(startHash) as StakeId;
@@ -356,7 +354,7 @@ export class StatisticsCollector {
         this.statistics.newApprovedProposals = approvedProposals.size;
     }
 
-    async fillCouncilElectionInfo(startBlock: number, endBlock: number) {
+    async fillCouncilElectionInfo(startBlock: number) {
 
         let startBlockHash = await this.api.rpc.chain.getBlockHash(startBlock);
         let events = await this.api.query.system.events.at(startBlockHash) as Vec<EventRecord>;
@@ -382,6 +380,13 @@ export class StatisticsCollector {
         this.statistics.electionVotes = seats.map((seat) => seat.backers.length).reduce((a, b) => a + b);
     }
 
+    async fillMembershipInfo(startHash: Hash, endHash: Hash){
+        this.statistics.startMembers = (await this.api.query.members.nextMemberId.at(startHash) as MemberId).toNumber();
+        this.statistics.endMembers = (await this.api.query.members.nextMemberId.at(endHash) as MemberId).toNumber() + 1;
+        this.statistics.newMembers = this.statistics.endMembers - this.statistics.startMembers;
+        this.statistics.percNewMembers = StatisticsCollector.convertToPercentage(this.statistics.newMembers, this.statistics.endMembers);
+    }
+
     async fillForumInfo(startHash: Hash, endHash: Hash) {
         let startPostId = await this.api.query.forum.nextPostId.at(startHash) as PostId;
         let endPostId = await this.api.query.forum.nextPostId.at(endHash) as PostId;