diff --git a/Projects/Governance/UI/Spaces/Reports-Space/Referrals.js b/Projects/Governance/UI/Spaces/Reports-Space/Referrals.js new file mode 100644 index 000000000..eddf22124 --- /dev/null +++ b/Projects/Governance/UI/Spaces/Reports-Space/Referrals.js @@ -0,0 +1,104 @@ +function newGovernanceReportsReferrals() { + let thisObject = { + addHTML: addHTML, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function initialize() { + + } + + function finalize() { + + } + + function addHTML() { + + let tableRecords = [] + let table = 'referrals' + let tableRecordDefinition = { + "properties": [ + { + "name": "name", + "label": "User Profile", + "type": "string", + "order": "ascending" + }, + { + "name": "ownPower", + "label": "Own Power", + "type": "number", + "order": "descending" + }, + { + "name": "incoming", + "label": "Incoming", + "type": "number", + "order": "descending" + }, + { + "name": "tokensAwarded", + "label": "Awarded", + "type": "number", + "order": "descending" + }, + { + "name": "decendants", + "label": "Descendants", + "type": "number", + "order": "descending" + }, + { + "name": "tokensBonus", + "label": "Bonus", + "type": "number", + "order": "descending" + } + ] + } + /* + Here we get from the workspace all User Profiles. + */ + let userProfiles = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + /* + Transform the result array into table records. + */ + for (let j = 0; j < userProfiles.length; j++) { + let userProfile = userProfiles[j] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, 'Referral Program') + if (program === undefined) { continue } + if (program.payload === undefined) { continue } + + let tableRecord = { + "name": userProfile.name, + "ownPower": program.payload.referralProgram.ownPower | 0, + "incoming": program.payload.referralProgram.incomingPower | 0, + "tokensAwarded": program.payload.referralProgram.awarded.tokens | 0, + "decendants": program.payload.referralProgram.awarded.count | 0, + "tokensBonus": program.payload.referralProgram.bonus.tokens | 0 + } + + 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: 'tokensAwarded', + order: 'descending' + } + sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] + } + return UI.projects.governance.utilities.tables.addHTML(table, tableRecords, tableRecordDefinition, sortingOrder) + } +} \ 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 0700b9625..2f07a0a5c 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/ReportsPage.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/ReportsPage.js @@ -22,7 +22,7 @@ function newGovernanceReportsReportsPage() { buildHTML() function buildHTML() { - const tabs = ['Profiles', 'Referrals', 'Mentors', 'Supporters', 'Pools', 'Assets', 'Features', 'Positions'] + const tabs = ['Profiles', 'Referrals', 'Supporters', 'Mentors', 'Pools', 'Assets', 'Features', 'Positions'] let HTML = '' HTML = HTML + '
' HTML = HTML + UI.projects.education.spaces.docsSpace.mainSearchPage.addSearchHeader() @@ -49,13 +49,19 @@ function newGovernanceReportsReportsPage() { switch (tab) { case 'Profiles': { - let response = UI.projects.governance.spaces.reportsSpace.userProfiles.addHTML() + let response = UI.projects.governance.spaces.reportsSpace.userProfiles.addHTML() + HTML = HTML + response.HTML + resultCounter = response.resultCounter + break + } + case 'Referrals': { + let response = UI.projects.governance.spaces.reportsSpace.referrals.addHTML() HTML = HTML + response.HTML resultCounter = response.resultCounter break } } - + HTML = HTML + '' totalResults.set(tab, resultCounter) } diff --git a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js index 6f3e4abac..b70bc4dd8 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js @@ -7,6 +7,7 @@ function newGobernanceReportsSpace() { reportsPage: undefined, footer: undefined, userProfiles: undefined, + referrals: undefined, tablesSortingOrders: undefined, changeTableSortingOrder, physics: physics, @@ -48,6 +49,9 @@ function newGobernanceReportsSpace() { thisObject.userProfiles.finalize() thisObject.userProfiles = undefined + thisObject.referrals.finalize() + thisObject.referrals = undefined + isInitialized = false } @@ -68,10 +72,12 @@ function newGobernanceReportsSpace() { thisObject.reportsPage = newGovernanceReportsReportsPage() thisObject.footer = newGovernanceReportsFooter() thisObject.userProfiles = newGovernanceReportsUserProfiles() + thisObject.referrals = newGovernanceReportsReferrals() thisObject.reportsPage.initialize() thisObject.footer.initialize() thisObject.userProfiles.initialize() + thisObject.referrals.initialize() setupSidePanelTab() diff --git a/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js b/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js index 885c88fdf..6d3c99eaf 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js @@ -23,7 +23,7 @@ function newGovernanceReportsUserProfiles() { "properties": [ { "name": "name", - "label": "Name", + "label": "User Profile", "type": "string", "order": "ascending" }, @@ -48,24 +48,38 @@ function newGovernanceReportsUserProfiles() { ] } /* - Here we get from the workspace all the nodes representing User Profiles. + Here we get from the workspace all User Profiles. */ - let resultsArary = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + let userProfiles = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') /* Transform the result array into table records. */ - for (let j = 0; j < resultsArary.length; j++) { - let node = resultsArary[j] + for (let j = 0; j < userProfiles.length; j++) { + let userProfile = userProfiles[j] let tableRecord = { - "name": node.name, - "blockchainPower": node.payload.blockchainTokens | 0, - "delegatedPower": node.payload.tokenPower - node.payload.blockchainTokens | 0, - "tokenPower": node.payload.tokenPower | 0 + "name": userProfile.name, + "blockchainPower": userProfile.payload.blockchainTokens | 0, + "delegatedPower": userProfile.payload.tokenPower - userProfile.payload.blockchainTokens | 0, + "tokenPower": userProfile.payload.tokenPower | 0 } tableRecords.push(tableRecord) } - return UI.projects.governance.utilities.tables.addHTML(table, tableRecords, tableRecordDefinition) + /* + 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: 'name', + order: 'ascending' + } + sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] + } + return UI.projects.governance.utilities.tables.addHTML(table, tableRecords, tableRecordDefinition, sortingOrder) } } \ No newline at end of file diff --git a/Projects/Governance/UI/Utilities/BonusProgram.js b/Projects/Governance/UI/Utilities/BonusProgram.js index 16030d2a2..30424c290 100644 --- a/Projects/Governance/UI/Utilities/BonusProgram.js +++ b/Projects/Governance/UI/Utilities/BonusProgram.js @@ -73,9 +73,17 @@ function newGovernanceUtilitiesBonusProgram() { function resetProgram(node) { if (node === undefined) { return } if (node.payload === undefined) { return } - node.payload[programPropertyName] = { - bonusPower: 0, - bonus: { + if (node.payload[programPropertyName] === undefined) { + node.payload[programPropertyName] = { + bonusPower: 0, + bonus: { + tokens: 0, + percentage: 0 + } + } + } else { + node.payload[programPropertyName].bonusPower = 0 + node.payload[programPropertyName].bonus = { tokens: 0, percentage: 0 } diff --git a/Projects/Governance/UI/Utilities/DecendentProgram.js b/Projects/Governance/UI/Utilities/DecendentProgram.js index dce2a35ac..92845a712 100644 --- a/Projects/Governance/UI/Utilities/DecendentProgram.js +++ b/Projects/Governance/UI/Utilities/DecendentProgram.js @@ -84,13 +84,25 @@ function newGovernanceUtilitiesDecendentProgram() { function resetProgram(node) { if (node === undefined) { return } if (node.payload === undefined) { return } - node.payload[programPropertyName] = { - count: 0, - percentage: 0, - outgoingPower: 0, - ownPower: 0, - incomingPower: 0, - awarded: { + if (node.payload[programPropertyName] === undefined) { + node.payload[programPropertyName] = { + count: 0, + percentage: 0, + outgoingPower: 0, + ownPower: 0, + incomingPower: 0, + awarded: { + tokens: 0, + percentage: 0 + } + } + } else { + node.payload[programPropertyName].count = 0 + node.payload[programPropertyName].percentage = 0 + node.payload[programPropertyName].outgoingPower = 0 + node.payload[programPropertyName].ownPower = 0 + node.payload[programPropertyName].incomingPower = 0 + node.payload[programPropertyName].awarded = { tokens: 0, percentage: 0 } @@ -345,7 +357,7 @@ function newGovernanceUtilitiesDecendentProgram() { node.payload.uiObject.statusAngleOffset = 0 node.payload.uiObject.statusAtAngle = false - node.payload.uiObject.setStatus(ownPowerText + ' Own Power' + ' + ' + incomingPowerText + ' Incoming ' + programPowerName) + node.payload.uiObject.setStatus(ownPowerText + ' Own Power' + ' + ' + incomingPowerText + ' Incoming ' + programPowerName) } if (node.tokensAwarded !== undefined && node.tokensAwarded.payload !== undefined) { diff --git a/Projects/Governance/UI/Utilities/Tables.js b/Projects/Governance/UI/Utilities/Tables.js index af9928cbd..4cac4b916 100644 --- a/Projects/Governance/UI/Utilities/Tables.js +++ b/Projects/Governance/UI/Utilities/Tables.js @@ -5,24 +5,10 @@ function newGovernanceUtilitiesTables() { return thisObject - function addHTML(table, tableRecords, tableRecordDefinition) { + function addHTML(table, tableRecords, tableRecordDefinition, sortingOrder) { let HTML = '' let resultCounter = 0 /* - 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: 'name', - order: 'ascending' - } - sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] - } - /* Get the property type for the current sorting order. */ let propertyType