From 7348cad232299cfe5b458ea4db7e167b16deb70f Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 19 Jul 2021 13:32:42 +0200 Subject: [PATCH] Tokens Mined Implemented --- Projects/Governance/Icons/tokens-mined.png | Bin 0 -> 23771 bytes .../Plugins/User-Profiles/Julian-Molina.json | 27 ++++ .../User-Profiles/Luis-Fernando-Molina.json | 27 ++++ .../Plugins/User-Profiles/harrellbm.json | 105 +++++++----- .../Schemas/App-Schema/tokens-mined.json | 21 +++ .../Schemas/App-Schema/user-profile.json | 15 ++ .../Function-Libraries/DistributionProcess.js | 7 + .../UI/Function-Libraries/TokenMining.js | 150 ++++++++++++++++++ .../UI/Function-Libraries/TokenPower.js | 4 + Projects/ProjectsSchema.json | 7 +- 10 files changed, 323 insertions(+), 40 deletions(-) create mode 100644 Projects/Governance/Icons/tokens-mined.png create mode 100644 Projects/Governance/Schemas/App-Schema/tokens-mined.json create mode 100644 Projects/Governance/UI/Function-Libraries/TokenMining.js diff --git a/Projects/Governance/Icons/tokens-mined.png b/Projects/Governance/Icons/tokens-mined.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd381b2babf264f192c8c6f29234dd94faab8b3 GIT binary patch literal 23771 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 literal 0 HcmV?d00001 diff --git a/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json b/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json index 18311fa52..72a7a2e99 100644 --- a/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json @@ -1223,6 +1223,33 @@ } } }, + "tokensMined": { + "type": "Tokens Mined", + "name": "New Tokens Mined", + "project": "Governance", + "id": "02c80886-9f64-451a-a8a6-e23fadb26d97", + "savedPayload": { + "position": { + "x": 24663.166666666664, + "y": 23058.100619195047 + }, + "targetPosition": { + "x": 24963.166666666664, + "y": 23058.100619195047 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "1fd95e41-4b22-48d5-be3a-904c37afcb11", "savedPayload": { "position": { diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index ad2afd49c..6387faa0f 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -4142,6 +4142,33 @@ } } }, + "tokensMined": { + "type": "Tokens Mined", + "name": "New Tokens Mined", + "project": "Governance", + "id": "ab419614-d76c-4820-ace3-970c8282daa6", + "savedPayload": { + "position": { + "x": 30016, + "y": 23099.999999999996 + }, + "targetPosition": { + "x": 30316, + "y": 23099.999999999996 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "148911b3-b2f3-44fb-8cb4-017991789132", "savedPayload": { "position": { diff --git a/Projects/Governance/Plugins/User-Profiles/harrellbm.json b/Projects/Governance/Plugins/User-Profiles/harrellbm.json index afb6d09de..b0b65e424 100644 --- a/Projects/Governance/Plugins/User-Profiles/harrellbm.json +++ b/Projects/Governance/Plugins/User-Profiles/harrellbm.json @@ -534,12 +534,12 @@ "id": "c2ad753c-49b6-4675-9fdd-02b6967aaab2", "savedPayload": { "position": { - "x": 14643.944089716459, - "y": 23180.59258456338 + "x": 14844.076124072424, + "y": 23593.280114692785 }, "targetPosition": { - "x": 14566.298376185703, - "y": 23470.3703324501 + "x": 14554.298376185703, + "y": 23515.634401162028 }, "floatingObject": { "isPinned": false, @@ -572,12 +572,12 @@ "id": "578d894c-20a7-4a79-b90e-ba383740d29d", "savedPayload": { "position": { - "x": 15068.208158428388, - "y": 23180.59258456338 + "x": 14844.076124072422, + "y": 24017.544183404712 }, "targetPosition": { - "x": 14856.076124072424, - "y": 23392.724618919343 + "x": 14631.944089716459, + "y": 23805.41214904875 }, "floatingObject": { "isPinned": false, @@ -600,12 +600,12 @@ "id": "0cfaa435-6615-4df8-9d31-1fe5f21e0e61", "savedPayload": { "position": { - "x": 15145.853871959145, - "y": 23470.3703324501 + "x": 14554.298376185703, + "y": 24095.18989693547 }, "targetPosition": { - "x": 14856.076124072424, - "y": 23392.724618919343 + "x": 14631.944089716459, + "y": 23805.41214904875 }, "floatingObject": { "isPinned": false, @@ -623,12 +623,12 @@ "id": "4ac11744-6d87-413d-813e-f0963b156d8c", "savedPayload": { "position": { - "x": 14856.076124072424, - "y": 23392.724618919343 + "x": 14631.944089716459, + "y": 23805.41214904875 }, "targetPosition": { - "x": 14566.298376185703, - "y": 23470.3703324501 + "x": 14554.298376185703, + "y": 23515.634401162028 }, "floatingObject": { "isPinned": false, @@ -646,12 +646,12 @@ "id": "fcceb17d-2c2a-4e24-ab5d-e2a8a2798f90", "savedPayload": { "position": { - "x": 14566.298376185703, - "y": 23470.3703324501 + "x": 14554.298376185703, + "y": 23515.634401162028 }, "targetPosition": { - "x": 14354.16634182974, - "y": 23682.502366806064 + "x": 14342.16634182974, + "y": 23303.502366806064 }, "floatingObject": { "isPinned": false, @@ -802,12 +802,12 @@ "id": "055d1919-2b4b-40f2-8793-9cc5eb765a88", "savedPayload": { "position": { - "x": 14954.16634182974, - "y": 23682.502366806064 + "x": 14342.16634182974, + "y": 23903.502366806064 }, "targetPosition": { - "x": 14654.16634182974, - "y": 23682.502366806064 + "x": 14342.16634182974, + "y": 23603.502366806064 }, "floatingObject": { "isPinned": false, @@ -825,12 +825,12 @@ "id": "450eb600-3080-4d37-b8a2-12f71120573c", "savedPayload": { "position": { - "x": 14654.16634182974, - "y": 23682.502366806064 + "x": 14342.16634182974, + "y": 23603.502366806064 }, "targetPosition": { - "x": 14354.16634182974, - "y": 23682.502366806064 + "x": 14342.16634182974, + "y": 23303.502366806064 }, "floatingObject": { "isPinned": false, @@ -886,12 +886,12 @@ "id": "02e75b99-0944-44dd-a434-9e307bdc7935", "savedPayload": { "position": { - "x": 14778.430410541667, - "y": 24106.76643551799 + "x": 13917.902273117812, + "y": 23727.76643551799 }, "targetPosition": { - "x": 14566.298376185703, - "y": 23894.634401162028 + "x": 14130.034307473776, + "y": 23515.634401162028 }, "floatingObject": { "isPinned": false, @@ -909,12 +909,12 @@ "id": "8f44d9ab-8ce6-4336-8b0e-0323d7440e75", "savedPayload": { "position": { - "x": 14566.298376185703, - "y": 23894.634401162028 + "x": 14130.034307473776, + "y": 23515.634401162028 }, "targetPosition": { - "x": 14354.16634182974, - "y": 23682.502366806064 + "x": 14342.16634182974, + "y": 23303.502366806064 }, "floatingObject": { "isPinned": false, @@ -933,15 +933,42 @@ "id": "d5ad1e6a-c6ea-465e-ae14-99fb54534baa", "savedPayload": { "position": { - "x": 14354.16634182974, - "y": 23682.502366806064 + "x": 14342.16634182974, + "y": 23303.502366806064 }, "targetPosition": { "x": 14342.16634182974, "y": 23003.502366806064 }, "floatingObject": { - "isPinned": true, + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensMined": { + "type": "Tokens Mined", + "name": "New Tokens Mined", + "project": "Governance", + "id": "9f832420-03f7-4e4b-8973-c3520bd6f263", + "savedPayload": { + "position": { + "x": 14042.16634182974, + "y": 23003.502366806064 + }, + "targetPosition": { + "x": 14342.16634182974, + "y": 23003.502366806064 + }, + "floatingObject": { + "isPinned": false, "isFrozen": false, "isCollapsed": false, "angleToParent": 1, diff --git a/Projects/Governance/Schemas/App-Schema/tokens-mined.json b/Projects/Governance/Schemas/App-Schema/tokens-mined.json new file mode 100644 index 000000000..a3432d4b5 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/tokens-mined.json @@ -0,0 +1,21 @@ +{ + "type": "Tokens Mined", + "menuItems": [ + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->User Profile->" + }, + "propertyNameAtParent": "tokensMined" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/user-profile.json b/Projects/Governance/Schemas/App-Schema/user-profile.json index e77884227..d7185c344 100644 --- a/Projects/Governance/Schemas/App-Schema/user-profile.json +++ b/Projects/Governance/Schemas/App-Schema/user-profile.json @@ -17,6 +17,15 @@ "label": "Add Token Power Switch", "relatedUiObject": "Token Power Switch" }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "tokensMined", + "actionFunction": "payload.executeAction", + "label": "Add Tokens Mined", + "relatedUiObject": "Tokens Mined" + }, { "action": "Delete UI Object", "actionProject": "Foundations", @@ -44,6 +53,12 @@ "type": "node", "childType": "Token Power Switch", "autoAdd": true + }, + { + "name": "tokensMined", + "type": "node", + "childType": "Tokens Mined", + "autoAdd": true } ] } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js index c62ad5a76..a48a320bc 100644 --- a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js +++ b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js @@ -97,5 +97,12 @@ function newGovernanceFunctionLibraryDistributionProcess() { positions, userProfiles ) + /* + After all the programs were ran, we can calculate the tokens mining + calculation each profile. + */ + UI.projects.governance.functionLibraries.tokenMining.calculate( + userProfiles + ) } } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/TokenMining.js b/Projects/Governance/UI/Function-Libraries/TokenMining.js new file mode 100644 index 000000000..e5511662c --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/TokenMining.js @@ -0,0 +1,150 @@ +function newGovernanceFunctionLibraryTokenMining() { + let thisObject = { + calculate: calculate + } + + return thisObject + + function calculate( + userProfiles + ) { + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + if (userProfile.tokenPowerSwitch === undefined) { continue } + resetTokensMined(userProfile) + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + 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 } + + calculateProgram(userProfile, program, "referralProgram") + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Support Program") + if (program === undefined) { continue } + if (program.payload === undefined) { continue } + + calculateProgram(userProfile, program, "supportProgram") + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Mentorship Program") + if (program === undefined) { continue } + if (program.payload === undefined) { continue } + + calculateProgram(userProfile, program, "mentorshipProgram") + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Claims Program") + if (program === undefined) { continue } + if (program.payload === undefined) { continue } + + calculateProgram(userProfile, program, "claimsProgram") + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Voting Program") + if (program === undefined) { continue } + if (program.payload === undefined) { continue } + + calculateProgram(userProfile, program, "votingProgram") + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Staking Program") + if (program === undefined) { continue } + if (program.payload === undefined) { continue } + + calculateProgram(userProfile, program, "stakingProgram") + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Delegation Program") + if (program === undefined) { continue } + if (program.payload === undefined) { continue } + + calculateProgram(userProfile, program, "delegationProgram") + } + + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + + if (userProfile.tokenPowerSwitch === undefined) { continue } + + drawTokensMined(userProfile) + } + + function resetTokensMined(userProfile) { + if (userProfile === undefined) { return } + if (userProfile.payload === undefined) { return } + if (userProfile.tokensMined === undefined) { return } + if (userProfile.tokensMined.payload.tokensMined === undefined) { + userProfile.tokensMined.payload.tokensMined = { + awarded: 0, + bonus: 0, + total: 0 + } + } else { + userProfile.tokensMined.payload.tokensMined.awarded = 0 + userProfile.tokensMined.payload.tokensMined.bonus = 0 + userProfile.tokensMined.payload.tokensMined.total = 0 + } + } + + function calculateProgram(userProfile, programNode, programPropertyName) { + /* + Here we will look into the program node and add their token awarded and token bonus + to the subtotals at the Tokens Mined node. + */ + if (userProfile === undefined) { return } + if (userProfile.payload === undefined) { return } + if (userProfile.tokensMined === undefined) { return } + if (programNode.payload === undefined) { return } + if (programNode.payload[programPropertyName] === undefined) { return } + + if (programNode.tokensAwarded !== undefined && programNode.payload[programPropertyName].awarded !== undefined) { + let awarded = programNode.payload[programPropertyName].awarded.tokens | 0 + userProfile.tokensMined.payload.tokensMined.awarded = userProfile.tokensMined.payload.tokensMined.awarded + awarded + } + if (programNode.tokensBonus !== undefined && programNode.payload[programPropertyName].bonus !== undefined) { + let bonus = programNode.payload[programPropertyName].bonus.tokens | 0 + userProfile.tokensMined.payload.tokensMined.bonus = userProfile.tokensMined.payload.tokensMined.bonus + bonus + } + userProfile.tokensMined.payload.tokensMined.total = userProfile.tokensMined.payload.tokensMined.awarded + userProfile.tokensMined.payload.tokensMined.bonus + } + + function drawTokensMined(userProfile) { + if (userProfile === undefined) { return } + if (userProfile.payload === undefined) { return } + if (userProfile.tokensMined === undefined) { return } + + const awarded = parseFloat(userProfile.tokensMined.payload.tokensMined.awarded.toFixed(2)).toLocaleString('en') + const bonus = parseFloat(userProfile.tokensMined.payload.tokensMined.bonus.toFixed(2)).toLocaleString('en') + const total = parseFloat(userProfile.tokensMined.payload.tokensMined.total.toFixed(2)).toLocaleString('en') + + userProfile.tokensMined.payload.uiObject.valueAngleOffset = 0 + userProfile.tokensMined.payload.uiObject.valueAtAngle = true + + userProfile.tokensMined.payload.uiObject.setStatus(awarded + ' Awarded + ' + bonus + ' Bonus') + userProfile.tokensMined.payload.uiObject.setValue(total + ' SA Tokens') + } + } +} \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/TokenPower.js b/Projects/Governance/UI/Function-Libraries/TokenPower.js index 0a987cbf3..0f43e7a5a 100644 --- a/Projects/Governance/UI/Function-Libraries/TokenPower.js +++ b/Projects/Governance/UI/Function-Libraries/TokenPower.js @@ -174,6 +174,7 @@ function newGovernanceFunctionLibraryTokenPower() { let childNode = node[property.name] if (childNode === undefined) { continue } if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue } + if (childNode.type === "Tokens Mined") { continue } let percentage = getPercentage(childNode) @@ -191,6 +192,7 @@ function newGovernanceFunctionLibraryTokenPower() { let childNode = propertyArray[m] if (childNode === undefined) { continue } if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue } + if (childNode.type === "Tokens Mined") { continue } let percentage = getPercentage(childNode) if (percentage !== undefined && isNaN(percentage) !== true) { @@ -223,6 +225,7 @@ function newGovernanceFunctionLibraryTokenPower() { let childNode = node[property.name] if (childNode === undefined) { continue } if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue } + if (childNode.type === "Tokens Mined") { continue } let percentage = getPercentage(childNode) if (percentage === undefined || isNaN(percentage) === true) { @@ -243,6 +246,7 @@ function newGovernanceFunctionLibraryTokenPower() { let childNode = propertyArray[m] if (childNode === undefined) { continue } if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue } + if (childNode.type === "Tokens Mined") { continue } let percentage = getPercentage(childNode) if (percentage === undefined || isNaN(percentage) === true) { diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index dde7bf381..18b8a465a 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -983,10 +983,15 @@ "functionName": "newGovernanceFunctionLibraryAssets" }, { - "name": "TokenPower", + "name": "Token Power", "propertyName": "tokenPower", "functionName": "newGovernanceFunctionLibraryTokenPower" }, + { + "name": "Token Mining", + "propertyName": "tokenMining", + "functionName": "newGovernanceFunctionLibraryTokenMining" + }, { "name": "Voting Program", "propertyName": "votingProgram",