From 140256d348464fa2bec72340693c80dc886e3e09 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 16 Jul 2021 11:51:00 +0200 Subject: [PATCH] Pools Report Implemented --- .../UI/Spaces/Design-Space/Workspace.js | 15 +++ .../UI/Spaces/Reports-Space/Pools.js | 91 +++++++++++++++++++ .../UI/Spaces/Reports-Space/ReportsPage.js | 6 ++ .../UI/Spaces/Reports-Space/ReportsSpace.js | 7 ++ 4 files changed, 119 insertions(+) create mode 100644 Projects/Governance/UI/Spaces/Reports-Space/Pools.js diff --git a/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js b/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js index ccde486e1..d8c7db23d 100644 --- a/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js +++ b/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js @@ -16,6 +16,7 @@ function newWorkspace() { save: saveWorkspace, backup: backupWorkspace, share: shareWorkspace, + getNodesByTypeAndHierarchyHeadsType: getNodesByTypeAndHierarchyHeadsType, getProjectsHeads: getProjectsHeads, getHierarchyHeads: getHierarchyHeads, getHierarchyHeadsById: getHierarchyHeadsById, @@ -583,6 +584,20 @@ function newWorkspace() { return resultArray } + function getNodesByTypeAndHierarchyHeadsType(nodeType, hierarchyHeadsType) { + let hierarchyHeads = getHierarchyHeads() + let resultArray = [] + if (hierarchyHeads === undefined) { return } + for (let i = 0; i < hierarchyHeads.length; i++) { + let hierarchyHead = hierarchyHeads[i] + if (hierarchyHead.type === hierarchyHeadsType) { + + let nodeArray = UI.projects.foundations.utilities.branches.nodeBranchToArray(hierarchyHead, nodeType) + resultArray = resultArray.concat(nodeArray) + } + } + return resultArray + } function replaceWorkspaceByLoadingOne(project, name) { diff --git a/Projects/Governance/UI/Spaces/Reports-Space/Pools.js b/Projects/Governance/UI/Spaces/Reports-Space/Pools.js new file mode 100644 index 000000000..f4e3d82fb --- /dev/null +++ b/Projects/Governance/UI/Spaces/Reports-Space/Pools.js @@ -0,0 +1,91 @@ +function newGovernanceReportsPools() { + let thisObject = { + addHTML: addHTML, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function initialize() { + + } + + function finalize() { + + } + + function addHTML(tabIndex) { + + let tableRecords = [] + let table = 'pools' + let tableRecordDefinition = { + "properties": [ + { + "name": "name", + "label": "Name", + "type": "string", + "order": "ascending" + }, + { + "name": "tokensReward", + "label": "Tokens Reward", + "type": "number", + "order": "descending" + }, + { + "name": "weight", + "label": "Weight", + "type": "number", + "order": "descending" + }, + { + "name": "weightPower", + "label": "Weight Power", + "type": "number", + "order": "descending" + } + ] + } + /* + Here we get from the workspace all User Profiles. + */ + let pools = UI.projects.foundations.spaces.designSpace.workspace.getNodesByTypeAndHierarchyHeadsType('Pool', 'Pools') + /* + Transform the result array into table records. + */ + for (let j = 0; j < pools.length; j++) { + let pool = pools[j] + + let tableRecord = { + "name": pool.name, + "tokensReward": pool.payload.tokens | 0, + "weight": pool.payload.weight , + "weightPower": pool.payload.votingProgram.votes + } + + tableRecords.push(tableRecord) + } + /* + Get the sorting order for this table. + */ + let sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] + /* + Set the default sorting order for this table. + */ + if (sortingOrder === undefined) { + UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] = { + property: 'tokensReward', + order: 'descending' + } + sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] + } + return UI.projects.governance.utilities.tables.addHTML( + table, + tableRecords, + tableRecordDefinition, + sortingOrder, + tabIndex + ) + } +} \ No newline at end of file diff --git a/Projects/Governance/UI/Spaces/Reports-Space/ReportsPage.js b/Projects/Governance/UI/Spaces/Reports-Space/ReportsPage.js index de101467f..cf8eccb74 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/ReportsPage.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/ReportsPage.js @@ -72,6 +72,12 @@ function newGovernanceReportsReportsPage() { resultCounter = response.resultCounter break } + case 'Pools': { + let response = UI.projects.governance.spaces.reportsSpace.pools.addHTML(5) + HTML = HTML + response.HTML + resultCounter = response.resultCounter + break + } } HTML = HTML + '' diff --git a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js index e7b98c10b..7c99b1261 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js @@ -9,6 +9,8 @@ function newGobernanceReportsSpace() { userProfiles: undefined, referrals: undefined, supports: undefined, + mentors: undefined, + pools: undefined, tablesSortingOrders: undefined, changeTableSortingOrder, physics: physics, @@ -59,6 +61,9 @@ function newGobernanceReportsSpace() { thisObject.mentors.finalize() thisObject.mentors = undefined + thisObject.pools.finalize() + thisObject.pools = undefined + isInitialized = false } @@ -82,12 +87,14 @@ function newGobernanceReportsSpace() { thisObject.referrals = newGovernanceReportsReferrals() thisObject.supports = newGovernanceReportsSupports() thisObject.mentors = newGovernanceReportsMentors() + thisObject.pools = newGovernanceReportsPools() thisObject.reportsPage.initialize() thisObject.footer.initialize() thisObject.userProfiles.initialize() thisObject.referrals.initialize() thisObject.mentors.initialize() + thisObject.pools.initialize() setupSidePanelTab()