Skip to content

Commit d176709

Browse files
authored
Merge pull request #2936 from IntersectMBO/staging
GovTool - v2.0.11-patch2
2 parents 197b0eb + fae9ff1 commit d176709

File tree

10 files changed

+70
-12
lines changed

10 files changed

+70
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ changes.
1313
### Added
1414

1515
- Add metadata url and hash to drep details [Issue 2911](https://github.com/IntersectMBO/govtool/issues/2911)
16+
- Add CC votes percentages, not voted and Ratification threshold
1617

1718
### Fixed
1819

govtool/backend/sql/get-network-metrics.sql

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,24 @@ AlwaysNoConfidenceVotingPower AS (
186186
),
187187
TotalDRepDistr AS (
188188
SELECT SUM(COALESCE(amount, 0))::bigint total_drep_distr FROM drep_distr where epoch_no = (SELECT no from CurrentEpoch)
189+
),
190+
CommitteeMembersCount AS (
191+
SELECT COUNT(*) AS no_of_committee_members FROM committee_member
192+
),
193+
LatestGovAction AS (
194+
SELECT gap.id, gap.enacted_epoch
195+
FROM gov_action_proposal gap
196+
JOIN CurrentEpoch ce ON gap.enacted_epoch < ce.no
197+
ORDER BY gap.id DESC
198+
LIMIT 1
199+
),
200+
CommitteeThreshold AS (
201+
SELECT
202+
c.*
203+
FROM committee c
204+
LEFT JOIN LatestGovAction lga ON c.gov_action_proposal_id = lga.id
205+
WHERE (c.gov_action_proposal_id IS NOT NULL AND lga.id IS NOT NULL)
206+
OR (c.gov_action_proposal_id IS NULL)
189207
)
190208
SELECT
191209
CurrentEpoch.no AS epoch_no,
@@ -204,7 +222,10 @@ SELECT
204222
TotalRegisteredDirectVoters.unique_direct_voters AS total_registered_direct_voters,
205223
AlwaysAbstainVotingPower.amount AS always_abstain_voting_power,
206224
AlwaysNoConfidenceVotingPower.amount AS always_no_confidence_voting_power,
207-
meta.network_name
225+
meta.network_name,
226+
CommitteeMembersCount.no_of_committee_members,
227+
CommitteeThreshold.quorum_numerator,
228+
CommitteeThreshold.quorum_denominator
208229
FROM CurrentEpoch
209230
CROSS JOIN CurrentBlock
210231
CROSS JOIN UniqueDelegators
@@ -221,4 +242,6 @@ CROSS JOIN TotalActiveCIP119CompliantDReps
221242
CROSS JOIN TotalRegisteredDirectVoters
222243
CROSS JOIN AlwaysAbstainVotingPower
223244
CROSS JOIN AlwaysNoConfidenceVotingPower
245+
CROSS JOIN CommitteeMembersCount
246+
CROSS JOIN CommitteeThreshold
224247
CROSS JOIN meta;

govtool/backend/src/VVA/API.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,4 +451,7 @@ getNetworkMetrics = do
451451
, getNetworkMetricsResponseAlwaysAbstainVotingPower = networkMetricsAlwaysAbstainVotingPower
452452
, getNetworkMetricsResponseAlwaysNoConfidenceVotingPower = networkMetricsAlwaysNoConfidenceVotingPower
453453
, getNetworkMetricsResponseNetworkName = networkMetricsNetworkName
454+
, getNetworkMetricsResponseNoOfCommitteeMembers = networkMetricsNoOfCommitteeMembers
455+
, getNetworkMetricsResponseQuorumNumerator = networkMetricsQuorumNumerator
456+
, getNetworkMetricsResponseQuorumDenominator = networkMetricsQuorumDenominator
454457
}

govtool/backend/src/VVA/API/Types.hs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -894,6 +894,9 @@ data GetNetworkMetricsResponse
894894
, getNetworkMetricsResponseAlwaysAbstainVotingPower :: Integer
895895
, getNetworkMetricsResponseAlwaysNoConfidenceVotingPower :: Integer
896896
, getNetworkMetricsResponseNetworkName :: Text
897+
, getNetworkMetricsResponseNoOfCommitteeMembers :: Integer
898+
, getNetworkMetricsResponseQuorumNumerator :: Integer
899+
, getNetworkMetricsResponseQuorumDenominator :: Integer
897900
}
898901

899902
deriveJSON (jsonOptions "getNetworkMetricsResponse") ''GetNetworkMetricsResponse
@@ -917,7 +920,10 @@ exampleGetNetworkMetricsResponse =
917920
<> "\"totalRegisteredDirectVoters\": 0,"
918921
<> "\"alwaysAbstainVotingPower\": 0,"
919922
<> "\"alwaysNoConfidenceVotingPower\": 0,"
920-
<> "\"networkName\": \"Mainnet\"}"
923+
<> "\"networkName\": \"Mainnet\","
924+
<> "\"noOfCommitteeMembers\": 7,"
925+
<> "\"quorumNumerator\": 2,"
926+
<> "\"quorumDenominator\": 3}"
921927

922928
instance ToSchema GetNetworkMetricsResponse where
923929
declareNamedSchema _ = pure $ NamedSchema (Just "GetNetworkMetricsResponse") $ mempty

govtool/backend/src/VVA/Network.hs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ networkMetrics = withPool $ \conn -> do
5252
, always_abstain_voting_power
5353
, always_no_confidence_voting_power
5454
, network_name
55+
, no_of_committee_members
56+
, quorum_numerator
57+
, quorum_denominator
5558
)] -> return $ NetworkMetrics
5659
current_time
5760
epoch_no
@@ -71,4 +74,7 @@ networkMetrics = withPool $ \conn -> do
7174
always_abstain_voting_power
7275
always_no_confidence_voting_power
7376
network_name
77+
no_of_committee_members
78+
quorum_numerator
79+
quorum_denominator
7480
_ -> throwError $ CriticalError "Could not query the network metrics. This should never happen."

govtool/backend/src/VVA/Types.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,9 @@ data NetworkMetrics
235235
, networkMetricsAlwaysAbstainVotingPower :: Integer
236236
, networkMetricsAlwaysNoConfidenceVotingPower :: Integer
237237
, networkMetricsNetworkName :: Text
238+
, networkMetricsNoOfCommitteeMembers :: Integer
239+
, networkMetricsQuorumNumerator :: Integer
240+
, networkMetricsQuorumDenominator :: Integer
238241
}
239242

240243
data Delegation

govtool/frontend/src/components/atoms/VotePill.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const ccVoteLabelKey: Record<string, string> = {
2828
yes: "votes.constitutional",
2929
no: "votes.unconstitutional",
3030
abstain: "votes.abstain",
31-
notvoted: "",
31+
notvoted: "votes.notVoted",
3232
};
3333

3434
type VoteExtended = Vote | "notVoted";

govtool/frontend/src/components/molecules/VotesSubmitted.tsx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ export const VotesSubmitted = ({
5050
const { t } = useTranslation();
5151
const { epochParams, networkMetrics } = useAppContext();
5252

53+
const noOfCommitteeMembers = networkMetrics?.noOfCommitteeMembers ?? 0;
54+
const ccThreshold = (
55+
networkMetrics?.quorumDenominator
56+
? networkMetrics.quorumNumerator / networkMetrics.quorumDenominator
57+
: 0
58+
).toPrecision(2);
59+
5360
// Coming from be
5461
// Equal to: total active drep stake + auto no-confidence stake
5562
const totalStakeControlledByDReps =
@@ -96,15 +103,16 @@ export const VotesSubmitted = ({
96103
? 100
97104
: undefined;
98105

99-
const ccYesVotesPercentage =
100-
ccYesVotes + ccNoVotes
101-
? (ccYesVotes / (ccYesVotes + ccNoVotes)) * 100
102-
: undefined;
103-
const ccNoVotesPercentage = ccYesVotesPercentage
104-
? 100 - ccYesVotesPercentage
105-
: ccNoVotes
106-
? 100
106+
const ccYesVotesPercentage = noOfCommitteeMembers
107+
? (ccYesVotes / noOfCommitteeMembers) * 100
108+
: undefined;
109+
const ccNoVotesPercentage = noOfCommitteeMembers
110+
? (ccNoVotes / noOfCommitteeMembers) * 100
107111
: undefined;
112+
const ccNotVotedVotes =
113+
noOfCommitteeMembers - ccYesVotes - ccNoVotes - ccAbstainVotes;
114+
const ccNotVotedVotesPercentage =
115+
100 - (ccYesVotesPercentage ?? 0) - (ccNoVotesPercentage ?? 0);
108116

109117
return (
110118
<Box
@@ -193,6 +201,9 @@ export const VotesSubmitted = ({
193201
abstainVotes={ccAbstainVotes}
194202
yesVotesPercentage={ccYesVotesPercentage}
195203
noVotesPercentage={ccNoVotesPercentage}
204+
notVotedVotes={ccNotVotedVotes}
205+
notVotedPercentage={ccNotVotedVotesPercentage}
206+
threshold={Number(ccThreshold)}
196207
/>
197208
)}
198209
</Box>

govtool/frontend/src/models/api.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ export type NetworkMetrics = {
9797
alwaysAbstainVotingPower: number;
9898
alwaysNoConfidenceVotingPower: number;
9999
networkName: string;
100+
noOfCommitteeMembers: number;
101+
quorumNumerator: number;
102+
quorumDenominator: number;
100103
};
101104

102105
export type VoterInfo = {

govtool/frontend/src/stories/GovernanceActionDetailsCard.stories.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,9 @@ export const GovernanceActionDetailsCardComponent: Story = {
148148

149149
await expect(canvas.getAllByText(/yes/i)).toHaveLength(2);
150150
await expect(canvas.getAllByText(/abstain/i)).toHaveLength(3);
151-
await expect(canvas.getAllByText(/no/i)).toHaveLength(2);
151+
await expect(canvas.getAllByText(/no/i)).toHaveLength(4);
152+
await expect(canvas.getAllByText(/constitutional/i)).toHaveLength(3);
153+
await expect(canvas.getAllByText(/not voted/i)).toHaveLength(2);
152154
},
153155
};
154156

0 commit comments

Comments
 (0)