diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index 5fec52fb6..97e3664af 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -667,12 +667,12 @@ "id": "4381f059-44c8-4843-9cac-8a7cf41fa14c", "savedPayload": { "position": { - "x": 29953.867965644036, - "y": 24471.939655491293 + "x": 30109.15939270555, + "y": 24451.495151264735 }, "targetPosition": { - "x": 29953.867965644036, - "y": 24171.939655491293 + "x": 30031.513679174794, + "y": 24161.717403378014 }, "floatingObject": { "isPinned": false, @@ -694,8 +694,8 @@ "id": "d69739f9-958e-480e-95e3-a72bb5f6ceab", "savedPayload": { "position": { - "x": 29953.867965644036, - "y": 24171.939655491293 + "x": 30031.513679174794, + "y": 24161.717403378014 }, "targetPosition": { "x": 29953.867965644036, @@ -2344,12 +2344,12 @@ "id": "e059f5c4-9132-4d76-9f3e-1060658fa704", "savedPayload": { "position": { - "x": 29544.060344508704, - "y": 24281.747276626626 + "x": 29803.867965644036, + "y": 24431.747276626626 }, "targetPosition": { - "x": 29694.060344508704, - "y": 24021.939655491293 + "x": 29803.867965644036, + "y": 24131.747276626626 }, "floatingObject": { "isPinned": false, @@ -2381,12 +2381,12 @@ "id": "7607658c-f3ad-42de-a316-35dd052e0477", "savedPayload": { "position": { - "x": 29394.060344508704, - "y": 24021.939655491293 + "x": 29544.060344508704, + "y": 24281.747276626626 }, "targetPosition": { - "x": 29694.060344508704, - "y": 24021.939655491293 + "x": 29803.867965644036, + "y": 24131.747276626626 }, "floatingObject": { "isPinned": false, @@ -2409,8 +2409,72 @@ "id": "1d398124-3f36-40a1-8b3b-6c77ad489b92", "savedPayload": { "position": { - "x": 29694.060344508704, - "y": 24021.939655491293 + "x": 29803.867965644036, + "y": 24131.747276626626 + }, + "targetPosition": { + "x": 29953.867965644036, + "y": 23871.939655491293 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "userProfileVotesSwitch": [ + { + "type": "User Profile Votes Switch", + "name": "New User Profile Votes Switch", + "config": "{}", + "project": "Governance", + "userProfileVotesSwitch": [], + "userProfileVote": [ + { + "type": "User Profile Vote", + "name": "Julian-Molina", + "config": "{}", + "project": "Governance", + "id": "cb86dfcf-6af1-4c53-afbe-442848706b9c", + "savedPayload": { + "position": { + "x": 29374.312469870594, + "y": 24027.231082552807 + }, + "targetPosition": { + "x": 29664.090217757315, + "y": 23949.58536902205 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "User Profile", + "name": "Julian-Molina", + "id": "1fd95e41-4b22-48d5-be3a-904c37afcb11" + } + } + } + ], + "id": "67805814-d2e1-4f8e-bdeb-6a46cc29ceff", + "savedPayload": { + "position": { + "x": 29664.090217757315, + "y": 23949.58536902205 }, "targetPosition": { "x": 29953.867965644036, @@ -2430,7 +2494,6 @@ } } ], - "userProfileVotesSwitch": [], "id": "2b8d3ce7-515c-44ad-8d80-3c2be6d7736f", "savedPayload": { "position": { diff --git a/Projects/Governance/UI/Function-Libraries/DelegationProgram.js b/Projects/Governance/UI/Function-Libraries/DelegationProgram.js index 30c288612..18041afe4 100644 --- a/Projects/Governance/UI/Function-Libraries/DelegationProgram.js +++ b/Projects/Governance/UI/Function-Libraries/DelegationProgram.js @@ -41,13 +41,43 @@ function newGovernanceFunctionLibraryDelegationProgram() { distributeProgram(userProfile.tokenPowerSwitch.delegationProgram) } - function resetProgram(programNode) { - if (programNode === undefined) { return } - if (programNode.payload === undefined) { return } - programNode.payload.delegationProgram = { + function resetProgram(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.delegationProgram = { programPower: 0, ownPower: 0 } + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + if (node.type === 'User Profile' && property.name !== "votingProgram") { continue } + + switch (property.type) { + case 'node': { + if (node.type === 'User Profile' && property.name === "votingProgram") { + let childNode = node[property.name] + resetProgram(childNode) + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + resetProgram(childNode) + } + } + break + } + } + } + } } function distributeProgram(programNode) { @@ -68,7 +98,7 @@ function newGovernanceFunctionLibraryDelegationProgram() { function distributeProgramPower(node, programPower, percentage) { if (node === undefined) { return } if (node.payload === undefined) { return } - if (node.payload.delegationProgram === undefined) {return} + if (node.payload.delegationProgram === undefined) { return } node.payload.delegationProgram.programPower = node.payload.delegationProgram.programPower + programPower drawPower(node, node.payload.delegationProgram.programPower, percentage) @@ -199,17 +229,47 @@ function newGovernanceFunctionLibraryDelegationProgram() { } return } - node.payload.uiObject.valueAngleOffset = 180 - node.payload.uiObject.valueAtAngle = true - node.payload.uiObject.percentageAngleOffset = 180 - node.payload.uiObject.percentageAtAngle = true - let voteType = 'Delegate Power' + if (node.type === 'User Delegate') { + drawUserNode(node, programPower, percentage) + return + } + if (node.type === 'Delegate Power Switch') { + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true + node.payload.uiObject.percentageAngleOffset = 180 + node.payload.uiObject.percentageAtAngle = true + let powerType = 'Delegate Power' - const programPowerText = parseFloat(programPower.toFixed(2)).toLocaleString('en') + ' ' + voteType - node.payload.uiObject.setValue(programPowerText) + const programPowerText = parseFloat(programPower.toFixed(2)).toLocaleString('en') + ' ' + powerType + node.payload.uiObject.setValue(programPowerText) - if (percentage !== undefined) { - node.payload.uiObject.setPercentage(percentage.toFixed(2)) + if (percentage !== undefined) { + node.payload.uiObject.setPercentage(percentage.toFixed(2)) + } + } + } + + function drawUserNode(node, programPower, percentage) { + if (node.payload !== undefined) { + + const outgoingPowerText = parseFloat(programPower.toFixed(2)).toLocaleString('en') + + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true + + node.payload.uiObject.setValue(outgoingPowerText + ' Delegate Power') + + node.payload.uiObject.percentageAngleOffset = 180 + node.payload.uiObject.percentageAtAngle = true + + node.payload.uiObject.setPercentage(percentage) + + if (node.payload.referenceParent !== undefined) { + node.payload.uiObject.statusAngleOffset = 0 + node.payload.uiObject.statusAtAngle = true + + node.payload.uiObject.setStatus(outgoingPowerText + ' ' + ' Outgoing Power') + } } } diff --git a/Projects/Governance/UI/Function-Libraries/TokenPower.js b/Projects/Governance/UI/Function-Libraries/TokenPower.js index f5c56b997..d9ce44578 100644 --- a/Projects/Governance/UI/Function-Libraries/TokenPower.js +++ b/Projects/Governance/UI/Function-Libraries/TokenPower.js @@ -113,7 +113,8 @@ function newGovernanceFunctionLibraryTokenPower() { node.type === 'Support Program' || node.type === 'Voting Program' || node.type === 'Claims Program' || - node.type === 'Staking Program' + node.type === 'Staking Program' || + node.type === 'Delegation Program' ) { return } /* We will redistribute token power among children. diff --git a/Projects/Governance/UI/Function-Libraries/VotingProgram.js b/Projects/Governance/UI/Function-Libraries/VotingProgram.js index 73d3f52da..359d8949a 100644 --- a/Projects/Governance/UI/Function-Libraries/VotingProgram.js +++ b/Projects/Governance/UI/Function-Libraries/VotingProgram.js @@ -288,6 +288,10 @@ function newGovernanceFunctionLibraryVotingProgram() { } return } + if (node.type === 'User Profile Vote') { + drawUserNode(node, votes, percentage) + return + } if ( node.type === 'Position' || node.type === 'Position Class' || @@ -334,6 +338,30 @@ function newGovernanceFunctionLibraryVotingProgram() { } } + function drawUserNode(node, votes, percentage) { + if (node.payload !== undefined) { + + const outgoingPowerText = parseFloat(votes.toFixed(2)).toLocaleString('en') + + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true + + node.payload.uiObject.setValue(outgoingPowerText + ' Voting Power') + + node.payload.uiObject.percentageAngleOffset = 180 + node.payload.uiObject.percentageAtAngle = true + + node.payload.uiObject.setPercentage(percentage) + + if (node.payload.referenceParent !== undefined) { + node.payload.uiObject.statusAngleOffset = 0 + node.payload.uiObject.statusAtAngle = true + + node.payload.uiObject.setStatus(outgoingPowerText + ' ' + ' Outgoing Power') + } + } + } + function drawProgram(node) { if (node.payload !== undefined) {