From 612b9f30ee0e3e793fc621bbc3caf216d7205ab7 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 2 Jun 2021 22:26:18 +0200 Subject: [PATCH 01/11] Governance Implementation --- .../Features.js} | 4 +- .../Spaces/User-Profile-Space/UserProfile.js | 44 +++++++++++++++++++ Projects/ProjectsSchema.json | 37 +++++++++++----- 3 files changed, 71 insertions(+), 14 deletions(-) rename Projects/Governance/UI/Spaces/{User-Contributions-Space/UserContributions.js => Features-Space/Features.js} (88%) create mode 100644 Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js diff --git a/Projects/Governance/UI/Spaces/User-Contributions-Space/UserContributions.js b/Projects/Governance/UI/Spaces/Features-Space/Features.js similarity index 88% rename from Projects/Governance/UI/Spaces/User-Contributions-Space/UserContributions.js rename to Projects/Governance/UI/Spaces/Features-Space/Features.js index 456b300c0..2f67fa2e5 100644 --- a/Projects/Governance/UI/Spaces/User-Contributions-Space/UserContributions.js +++ b/Projects/Governance/UI/Spaces/Features-Space/Features.js @@ -1,5 +1,5 @@ -function newGovernanceUserContributionsSpace() { - const MODULE_NAME = 'User Contributions Space' +function newGovernanceUserFeaturesSpace() { + const MODULE_NAME = 'Features Space' let thisObject = { container: undefined, diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js new file mode 100644 index 000000000..bfd8a9f6a --- /dev/null +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -0,0 +1,44 @@ +function newGovernanceUserProfileSpace() { + const MODULE_NAME = 'User Profile Space' + + let thisObject = { + container: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + finalize: finalize, + initialize: initialize + } + + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + + return thisObject + + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + } + + function initialize() { + + } + + function physics() { + + } + + function getContainer(point) { + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + thisObject.container.space = MODULE_NAME + return thisObject.container + } else { + return undefined + } + } + + function draw() { + + } +} diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index d10fbe1d7..fdd264d2c 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1010,10 +1010,10 @@ ], "spaces": [ { - "name": "Assets Space", - "folderName": "Assets-Space", - "propertyName": "assetsSpace", - "functionName": "newGobernanceAssetsSpace", + "name": "User Profile Space", + "folderName": "User-Profile-Space", + "propertyName": "userProfileSpace", + "functionName": "newGovernanceUserProfileSpace", "initializationIndex": 0, "animationPhysicsIndex": 0, "animationDrawIndex": 0, @@ -1023,10 +1023,10 @@ "onMouseDownIndex": 0 }, { - "name": "Ranking Space", - "folderName": "Ranking-Space", - "propertyName": "rankingSpace", - "functionName": "newGovernanceRankingSpace", + "name": "Assets Space", + "folderName": "Assets-Space", + "propertyName": "assetsSpace", + "functionName": "newGobernanceAssetsSpace", "initializationIndex": 1, "animationPhysicsIndex": 1, "animationDrawIndex": 1, @@ -1036,10 +1036,10 @@ "onMouseDownIndex": 1 }, { - "name": "User Contributions Space", - "folderName": "User-Contributions-Space", - "propertyName": "userContributionsSpace", - "functionName": "newGovernanceUserContributionsSpace", + "name": "User Features Space", + "folderName": "User-Features-Space", + "propertyName": "userFeaturesSpace", + "functionName": "newGovernanceUserFeaturesSpace", "initializationIndex": 2, "animationPhysicsIndex": 2, "animationDrawIndex": 2, @@ -1047,6 +1047,19 @@ "onMouseOverIndex": 2, "onMouseClickIndex": 2, "onMouseDownIndex": 2 + }, + { + "name": "Ranking Space", + "folderName": "Ranking-Space", + "propertyName": "rankingSpace", + "functionName": "newGovernanceRankingSpace", + "initializationIndex": 3, + "animationPhysicsIndex": 3, + "animationDrawIndex": 3, + "onMouseWheelIndex": 3, + "onMouseOverIndex": 3, + "onMouseClickIndex": 3, + "onMouseDownIndex": 3 } ] }, From dd8176d34e3dddc1a8b116442317633f2d134ca5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 2 Jun 2021 23:26:09 +0200 Subject: [PATCH 02/11] setValue of Tokens implemented --- Projects/Governance/Icons/referrer.png | Bin 0 -> 19960 bytes .../Schemas/App-Schema/Referrer.json | 40 ++++++++++++++++++ .../Schemas/App-Schema/user-profile.json | 14 ++++++ .../Spaces/User-Profile-Space/UserProfile.js | 30 ++++++++++--- 4 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 Projects/Governance/Icons/referrer.png create mode 100644 Projects/Governance/Schemas/App-Schema/Referrer.json diff --git a/Projects/Governance/Icons/referrer.png b/Projects/Governance/Icons/referrer.png new file mode 100644 index 0000000000000000000000000000000000000000..c42733847461a6534b578dbaff71764c922655ea GIT binary patch literal 19960 zcmd>m_dnJDAL#p>W0sXYLz1#bWRop*jO-EFGqPozQ;I@VN{M5Zk*v%JM|NanCLGx_ zjy;ZZ?#t(U?_Y8Ir967SUa#lgPtS~yy0m9F&p;4FtFNbJ0zq)_PdG$H0sh(v9Xf&_ zK1g5dx@lVuBFAyPXS%HkV7Q}F`PT6{S*eSzpOz6fg|S} z|Gzs@fM^N~I6~AiWA8w!@sVz!o>ou;v_nz$mH1VEP3hyCM5vz$+YQ|rP{YAD8!T+D zJF_FuVkU$Q$}(2xmh2O7L^aVX7FX)@E-1if`y2YToa ze2IOtx_!lfb}$4{%Z5!D3(+H&H6w66h~dxj|F=H;u?rPqXBWBb1{GjNm`SZ(4@BPc zXDQdM{$UOGFpP}rP>vLj6hhZSH)lia<=U7@k9TlmZ}_taanukuWtQBHE5!a@x1_Q` ztF%CJKNz|O_Kj}Zk(G40iznkc)DAnK!lGd5WDak}LT++ZT{-2>pNd}+#v;s9?lMP2>Z8X?%{(slq4IXLZ}B- zRUHVi!>vcGD3ilX>{;qfDHr)Yk>L$8ewfDVe)X#P3$=7VMgIH96AjCHQ0*nzX{aDc zR=X0YW?$MDSUO6=dE2w)ToR>qK&?y4n`zFqKPL?r{O{gR39u~1S2IoCsU$BN*sckL z9LRRe91nE1yL)37y8 zW(i_BKa$V!qo}9tcx)W{1M7NpCWS^fjK+66+0C5X?;QFH6h-M!1vO$l*?_32 zKaqr9TNKBmzArMoNMDm!6|q#->2gzp`@K)pmO=^%Zw(yD3IlmZpP5ebI;4>_Auu&Q zK^JrOj8%)^CiAg@a6eIW2t;VB;J7q8x=-->4+58V$ml#`2U`g~SAC2Y3(8_y9%zcM zczsz^nmk;G*XOy6k*SU2$5XEV0F++;%u0GZ%ux2M_xs)>x~dz@$%zkir|mG&SVz4Y z^HZE$zC-WftkRmm#4VIX!w%h8 zG{74Mmfoj&kvbezRHLfv@6VFc7C2HvF*Trs;PI>t|I9|xvX4Pm--Rwe_ia-%j%VOg zbM9Cz?j1Z-lMV02(wfA1u`WppliNC98>5KjE)8(cKcrnbG4- zjfD|%6PVU3TWe-A9jGp!L#VHMZ-n6uO%=&H>AQH25Y^8rUO$bi;zeHzVqZ&SneeKL z>T4=yhu^?LM&H(VgJf~>s2oOq^{6ZzSSSy6s@LR#aGSp(%^nv-Vc|f3sSQQz_RJnA z$TL`$d^QV7O94P2Mqt}gP&3x{&LaPZbKy3Ye0}=5J2?e9*g>FJ+KGY

Iy=jS<*jhnTm12LQQm;M1vW!`+=Bx#h@3!o#NFq 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 RMiqj?%l#;=(KX_){{}lLZkzxB literal 0 HcmV?d00001 diff --git a/Projects/Governance/Schemas/App-Schema/Referrer.json b/Projects/Governance/Schemas/App-Schema/Referrer.json new file mode 100644 index 000000000..39fb7fc32 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/Referrer.json @@ -0,0 +1,40 @@ +{ + "type": "Referrer", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "title": [ + "Use Reference Parent" + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"description\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->User Profile->" + }, + "referencingRules": { + "compatibleTypes": "->User Profile->" + }, + "propertyNameAtParent": "referrer", + "icon": "github-api" +} \ 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 91d3cac6c..937d36785 100644 --- a/Projects/Governance/Schemas/App-Schema/user-profile.json +++ b/Projects/Governance/Schemas/App-Schema/user-profile.json @@ -38,6 +38,14 @@ "label": "Add Civic Contributions", "relatedUiObject": "Civic Contributions" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "referrer", + "actionFunction": "payload.executeAction", + "label": "Add Referrer", + "relatedUiObject": "Referrer" + }, { "action": "Delete UI Object", "askConfirmation": true, @@ -88,6 +96,12 @@ "type": "array", "childType": "Civic Contributions", "autoAdd": false + }, + { + "name": "referrer", + "type": "node", + "childType": "Referrer", + "autoAdd": false } ] } \ No newline at end of file diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index bfd8a9f6a..cf05724e0 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -15,17 +15,13 @@ function newGovernanceUserProfileSpace() { return thisObject - function finalize() { - thisObject.container.finalize() - thisObject.container = undefined - } - function initialize() { } - function physics() { - + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined } function getContainer(point) { @@ -38,6 +34,26 @@ function newGovernanceUserProfileSpace() { } } + function physics() { + if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) {return} + + let userProfiles = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + userProfilePhysics(userProfile) + } + } + + function userProfilePhysics(userProfile) { + let tokens = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(userProfile.payload, 'tokens') + tokens = new Intl.NumberFormat().format(tokens) + ' ' + 'SA' + if ( userProfile.payload !== undefined) { + userProfile.payload.uiObject.valueAtAngle = false + userProfile.payload.uiObject.setValue(tokens) + } + } + function draw() { } From 537da88983528555d253b73d2d4a76dbd76560fb Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 16:11:27 +0200 Subject: [PATCH 03/11] Governance: Users Votes Distribution Implemented --- .../Spaces/User-Profile-Space/UserProfile.js | 140 ++++++++++++++++-- 1 file changed, 130 insertions(+), 10 deletions(-) diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index cf05724e0..e3c73abc6 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -35,23 +35,143 @@ function newGovernanceUserProfileSpace() { } function physics() { - if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) {return} + if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } let userProfiles = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') - + + /* + We will first reset all the voting power, and then distribute it. + */ for (let i = 0; i < userProfiles.length; i++) { let userProfile = userProfiles[i] - userProfilePhysics(userProfile) + userProfileReset(userProfile) + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + userProfileDistribute(userProfile) } } - function userProfilePhysics(userProfile) { - let tokens = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(userProfile.payload, 'tokens') - tokens = new Intl.NumberFormat().format(tokens) + ' ' + 'SA' - if ( userProfile.payload !== undefined) { - userProfile.payload.uiObject.valueAtAngle = false - userProfile.payload.uiObject.setValue(tokens) - } + function userProfileReset(userProfile) { + resetVotingPower(userProfile) + } + + function userProfileDistribute(userProfile) { + let votingPower = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(userProfile.payload, 'tokens') + distributeVotingPower(userProfile, votingPower) + } + + function resetVotingPower(node) { + if (node.payload === undefined) { return } + node.payload.votingPower = 0 + /* + If there is a reference parent defined, this means that the voting power is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + resetVotingPower(node.payload.referenceParent) + return + } + /* + When we reach certain node types, we will halt the distribution, because thse are targets for + voting power. + */ + if ( + node.type === 'Ranking Position' || + node.type === 'Asset' || + node.type === 'Feature' + ) { return } + /* + If there is no reference parent we will redistribute voting power among children. + */ + 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 !== "civicContributions") { continue } + + switch (property.type) { + case 'node': { + // We will not follow this path. + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + childNde = propertyArray[m] + resetVotingPower(childNde) + } + } + break + } + } + } + } + } + + function distributeVotingPower(node, votingPower) { + if (node.payload === undefined) { return } + node.payload.votingPower = node.payload.votingPower + votingPower + drawVotingPower(node, node.payload.votingPower) + /* + If there is a reference parent defined, this means that the voting power is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + distributeVotingPower(node.payload.referenceParent, votingPower) + return + } + /* + When we reach certain node types, we will halt the distribution, because thse are targets for + voting power. + */ + if ( + node.type === 'Ranking Position' || + node.type === 'Asset' || + node.type === 'Feature' + ) { return } + /* + If there is no reference parent we will redistribute voting power among children. + */ + 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 !== "civicContributions") { continue } + + switch (property.type) { + case 'node': { + // We will not follow this path. + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + childNde = propertyArray[m] + distributeVotingPower(childNde, votingPower / propertyArray.length) + } + } + break + } + } + } + } + } + + function drawVotingPower(node, votingPower) { + votingPower = new Intl.NumberFormat().format(votingPower) + ' ' + 'SA' + if (node.payload !== undefined) { + node.payload.uiObject.valueAtAngle = false + node.payload.uiObject.setValue(votingPower) + } } function draw() { From 41dce9819156e19efeadd7b3a282011c5f9d240e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 18:50:12 +0200 Subject: [PATCH 04/11] Votes Distribution and Contribution Claims --- .../App-Schema/civic-contributions.json | 2 +- .../App-Schema/community-contributions.json | 2 +- .../App-Schema/contribution-claims.json | 82 +++++++++++++++++++ .../App-Schema/marketing-contributions.json | 2 +- .../App-Schema/software-contributions.json | 2 +- ...ributions.json => time-contributions.json} | 2 +- .../Schemas/App-Schema/time-vote.json | 2 +- .../Schemas/App-Schema/user-profile.json | 62 ++++---------- .../App-Schema/votes-distribution.json | 55 +++++++++++++ .../Spaces/User-Profile-Space/UserProfile.js | 22 +++-- .../UI/Spaces/Floating-Space/UiObjectTitle.js | 8 +- 11 files changed, 176 insertions(+), 65 deletions(-) create mode 100644 Projects/Governance/Schemas/App-Schema/contribution-claims.json rename Projects/Governance/Schemas/App-Schema/{governance-contributions.json => time-contributions.json} (95%) create mode 100644 Projects/Governance/Schemas/App-Schema/votes-distribution.json diff --git a/Projects/Governance/Schemas/App-Schema/civic-contributions.json b/Projects/Governance/Schemas/App-Schema/civic-contributions.json index e73c1cdda..d368147f5 100644 --- a/Projects/Governance/Schemas/App-Schema/civic-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/civic-contributions.json @@ -63,7 +63,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->User Profile->Civic Contributions->" + "compatibleTypes": "->Votes Distribution->Civic Contributions->" }, "propertyNameAtParent": "civicContributions", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/community-contributions.json b/Projects/Governance/Schemas/App-Schema/community-contributions.json index b34bfa6f0..36c8ec2d6 100644 --- a/Projects/Governance/Schemas/App-Schema/community-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/community-contributions.json @@ -39,7 +39,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->User Profile->Community Contributions->" + "compatibleTypes": "->Contribution Claims->Community Contributions->" }, "propertyNameAtParent": "communityContributions", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/contribution-claims.json b/Projects/Governance/Schemas/App-Schema/contribution-claims.json new file mode 100644 index 000000000..9d27188c4 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/contribution-claims.json @@ -0,0 +1,82 @@ +{ + "type": "Contribution Claims", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "label": "Add Software Contributions", + "relatedUiObject": "Software Contributions", + "actionFunction": "payload.executeAction" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Marketing Contributions", + "relatedUiObject": "Marketing Contributions" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Community Contributions", + "relatedUiObject": "Community Contributions" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Time Contributions", + "relatedUiObject": "Time Contributions" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"codeName\": \"\"\n}" + }, + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "contributionClaims", + "childrenNodesProperties": [ + { + "name": "softwareContributions", + "type": "array", + "childType": "Software Contributions", + "autoAdd": false + }, + { + "name": "marketingContributions", + "type": "array", + "childType": "Marketing Contributions", + "autoAdd": false + }, + { + "name": "communityContributions", + "type": "array", + "childType": "Community Contributions", + "autoAdd": false + }, + { + "name": "timeContributions", + "type": "array", + "childType": "Time Contributions", + "autoAdd": false + } + ], + "icon": "bitcoin" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/marketing-contributions.json b/Projects/Governance/Schemas/App-Schema/marketing-contributions.json index af618182b..76b3030c7 100644 --- a/Projects/Governance/Schemas/App-Schema/marketing-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/marketing-contributions.json @@ -39,7 +39,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->User Profile->Marketing Contributions->" + "compatibleTypes": "->Contribution Claims->Marketing Contributions->" }, "propertyNameAtParent": "marketingContributions", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/software-contributions.json b/Projects/Governance/Schemas/App-Schema/software-contributions.json index 4d849c93b..86083a8ed 100644 --- a/Projects/Governance/Schemas/App-Schema/software-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/software-contributions.json @@ -39,7 +39,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->User Profile->Software Contributions->" + "compatibleTypes": "->Contribution Claims->Software Contributions->" }, "propertyNameAtParent": "softwareContributions", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/governance-contributions.json b/Projects/Governance/Schemas/App-Schema/time-contributions.json similarity index 95% rename from Projects/Governance/Schemas/App-Schema/governance-contributions.json rename to Projects/Governance/Schemas/App-Schema/time-contributions.json index 6971afbe7..a6a362501 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/time-contributions.json @@ -39,7 +39,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->User Profile->Time Contributions->" + "compatibleTypes": "->Contribution Claims->Time Contributions->" }, "propertyNameAtParent": "timeContributions", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/time-vote.json b/Projects/Governance/Schemas/App-Schema/time-vote.json index 45984f061..dd017b283 100644 --- a/Projects/Governance/Schemas/App-Schema/time-vote.json +++ b/Projects/Governance/Schemas/App-Schema/time-vote.json @@ -19,7 +19,7 @@ } ], "title": [ - "Reference Parent Find Node Type->User Profile", + "Reference Parent Find In Parents Node Type->User Profile", "Use Reference Parent" ], "editors": { diff --git a/Projects/Governance/Schemas/App-Schema/user-profile.json b/Projects/Governance/Schemas/App-Schema/user-profile.json index 937d36785..e23848ce0 100644 --- a/Projects/Governance/Schemas/App-Schema/user-profile.json +++ b/Projects/Governance/Schemas/App-Schema/user-profile.json @@ -10,33 +10,19 @@ }, { "action": "Add UI Object", - "label": "Add Software Contributions", - "relatedUiObject": "Software Contributions", - "actionFunction": "payload.executeAction" + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "contributionClaims", + "actionFunction": "payload.executeAction", + "label": "Add Contribution Claims", + "relatedUiObject": "Contribution Claims" }, { "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "votesDistribution", "actionFunction": "payload.executeAction", - "label": "Add Marketing Contributions", - "relatedUiObject": "Marketing Contributions" - }, - { - "action": "Add UI Object", - "actionFunction": "payload.executeAction", - "label": "Add Community Contributions", - "relatedUiObject": "Community Contributions" - }, - { - "action": "Add UI Object", - "actionFunction": "payload.executeAction", - "label": "Add Time Contributions", - "relatedUiObject": "Time Contributions" - }, - { - "action": "Add UI Object", - "actionFunction": "payload.executeAction", - "label": "Add Civic Contributions", - "relatedUiObject": "Civic Contributions" + "label": "Add Votes Distribution", + "relatedUiObject": "Votes Distribution" }, { "action": "Add UI Object", @@ -68,33 +54,15 @@ "level": 0, "childrenNodesProperties": [ { - "name": "softwareContributions", - "type": "array", - "childType": "Software Contributions", + "name": "contributionClaims", + "type": "node", + "childType": "Contribution Claims", "autoAdd": false }, { - "name": "marketingContributions", - "type": "array", - "childType": "Marketing Contributions", - "autoAdd": false - }, - { - "name": "communityContributions", - "type": "array", - "childType": "Community Contributions", - "autoAdd": false - }, - { - "name": "timeContributions", - "type": "array", - "childType": "Time Contributions", - "autoAdd": false - }, - { - "name": "civicContributions", - "type": "array", - "childType": "Civic Contributions", + "name": "votesDistribution", + "type": "node", + "childType": "Votes Distribution", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/votes-distribution.json b/Projects/Governance/Schemas/App-Schema/votes-distribution.json new file mode 100644 index 000000000..33209a758 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/votes-distribution.json @@ -0,0 +1,55 @@ +{ + "type": "Votes Distribution", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Civic Contributions", + "relatedUiObject": "Civic Contributions" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "referrer", + "actionFunction": "payload.executeAction", + "label": "Add Referrer", + "relatedUiObject": "Referrer" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"codeName\": \"\"\n}" + }, + "isTitleAllwaysVisible": false, + "isHierarchyHead": false, + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "votesDistribution", + "childrenNodesProperties": [ + { + "name": "civicContributions", + "type": "array", + "childType": "Civic Contributions", + "autoAdd": false + } + ], + "icon": "bitcoin" +} \ No newline at end of file diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index e3c73abc6..adb6ce26f 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -91,19 +91,22 @@ function newGovernanceUserProfileSpace() { for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { let property = schemaDocument.childrenNodesProperties[i] - if (node.type === 'User Profile' && property.name !== "civicContributions") { continue } + if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } switch (property.type) { case 'node': { - // We will not follow this path. + if (node.type === 'User Profile' && property.name === "votesDistribution") { + let childNode = node[property.name] + resetVotingPower(childNode) + } } break case 'array': { let propertyArray = node[property.name] if (propertyArray !== undefined) { for (let m = 0; m < propertyArray.length; m++) { - childNde = propertyArray[m] - resetVotingPower(childNde) + let childNode = propertyArray[m] + resetVotingPower(childNode) } } break @@ -144,19 +147,22 @@ function newGovernanceUserProfileSpace() { for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { let property = schemaDocument.childrenNodesProperties[i] - if (node.type === 'User Profile' && property.name !== "civicContributions") { continue } + if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } switch (property.type) { case 'node': { - // We will not follow this path. + if (node.type === 'User Profile' && property.name === "votesDistribution") { + let childNode = node[property.name] + distributeVotingPower(childNode, votingPower) + } } break case 'array': { let propertyArray = node[property.name] if (propertyArray !== undefined) { for (let m = 0; m < propertyArray.length; m++) { - childNde = propertyArray[m] - distributeVotingPower(childNde, votingPower / propertyArray.length) + let childNode = propertyArray[m] + distributeVotingPower(childNode, votingPower / propertyArray.length) } } break diff --git a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js index 5c3b91cda..3b39944a8 100644 --- a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js +++ b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js @@ -189,14 +189,14 @@ function newUiObjectTitle() { thisObject.payload.title = thisObject.payload.title + separator + childNode.name thisObject.payload.node.name = thisObject.payload.node.name + separator + childNode.name } - if (titleReference.indexOf('Find Node Type->') === 0) { + if (titleReference.indexOf('Find In Parents Node Type->') === 0) { let nodeType = titleReference.substring(titleReference.indexOf('->') + 2, titleReference.length) let nodeToUse = UI.projects.superalgos.utilities.meshes.findNodeInNodeMesh( thisObject.payload.node, nodeType, undefined, true, - true, + false, true, false ) @@ -204,14 +204,14 @@ function newUiObjectTitle() { thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.name thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.name } - if (titleReference.indexOf('Reference Parent Find Node Type->') === 0) { + if (titleReference.indexOf('Reference Parent Find In Parents Node Type->') === 0) { let nodeType = titleReference.substring(titleReference.indexOf('->') + 2, titleReference.length) let nodeToUse = UI.projects.superalgos.utilities.meshes.findNodeInNodeMesh( thisObject.payload.referenceParent, nodeType, undefined, true, - true, + false, true, false ) From 58552862f26d5411a933f781d941c3ecaa8ffb41 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 19:28:25 +0200 Subject: [PATCH 05/11] Claims Implemented --- ...set.json => asset-contribution-claim.json} | 6 +- ...s.json => asset-contributions-folder.json} | 22 +++---- .../Schemas/App-Schema/asset-vote.json | 2 +- .../App-Schema/contributed-youtube-video.json | 2 +- .../App-Schema/contribution-claims.json | 36 ++++------- .../feature-contribution-claim.json | 41 +++++++++++++ ...json => feature-contributions-folder.json} | 22 +++---- .../Schemas/App-Schema/feature-vote.json | 2 +- .../Schemas/App-Schema/ranking-vote.json | 2 +- .../App-Schema/software-contributions.json | 60 ------------------- ...time.json => time-contribution-claim.json} | 6 +- ...ns.json => time-contributions-folder.json} | 22 +++---- .../Schemas/App-Schema/time-vote.json | 4 +- .../Schemas/App-Schema/user-vote.json | 2 +- .../App-Schema/votes-distribution.json | 8 +-- ...c-contributions.json => votes-switch.json} | 14 ++--- 16 files changed, 110 insertions(+), 141 deletions(-) rename Projects/Governance/Schemas/App-Schema/{contributed-asset.json => asset-contribution-claim.json} (86%) rename Projects/Governance/Schemas/App-Schema/{marketing-contributions.json => asset-contributions-folder.json} (67%) create mode 100644 Projects/Governance/Schemas/App-Schema/feature-contribution-claim.json rename Projects/Governance/Schemas/App-Schema/{community-contributions.json => feature-contributions-folder.json} (66%) delete mode 100644 Projects/Governance/Schemas/App-Schema/software-contributions.json rename Projects/Governance/Schemas/App-Schema/{contributed-time.json => time-contribution-claim.json} (86%) rename Projects/Governance/Schemas/App-Schema/{time-contributions.json => time-contributions-folder.json} (71%) rename Projects/Governance/Schemas/App-Schema/{civic-contributions.json => votes-switch.json} (88%) diff --git a/Projects/Governance/Schemas/App-Schema/contributed-asset.json b/Projects/Governance/Schemas/App-Schema/asset-contribution-claim.json similarity index 86% rename from Projects/Governance/Schemas/App-Schema/contributed-asset.json rename to Projects/Governance/Schemas/App-Schema/asset-contribution-claim.json index f75d6d45c..536d946db 100644 --- a/Projects/Governance/Schemas/App-Schema/contributed-asset.json +++ b/Projects/Governance/Schemas/App-Schema/asset-contribution-claim.json @@ -1,5 +1,5 @@ { - "type": "Contributed Asset", + "type": "Asset Contribution Claim", "menuItems": [ { "action": "Configure", @@ -31,11 +31,11 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Software Contributions->" + "compatibleTypes": "->Asset Contributions Folder->" }, "referencingRules": { "compatibleTypes": "->Asset->" }, - "propertyNameAtParent": "contributedAssets", + "propertyNameAtParent": "assetContributionClaims", "icon": "tron" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/marketing-contributions.json b/Projects/Governance/Schemas/App-Schema/asset-contributions-folder.json similarity index 67% rename from Projects/Governance/Schemas/App-Schema/marketing-contributions.json rename to Projects/Governance/Schemas/App-Schema/asset-contributions-folder.json index 76b3030c7..ef08212b5 100644 --- a/Projects/Governance/Schemas/App-Schema/marketing-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/asset-contributions-folder.json @@ -1,5 +1,5 @@ { - "type": "Marketing Contributions", + "type": "Asset Contributions Folder", "menuItems": [ { "action": "Configure", @@ -11,14 +11,14 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Marketing Contributions", - "relatedUiObject": "Marketing Contributions" + "label": "Add Asset Contributions Folder", + "relatedUiObject": "Asset Contributions Folder" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Contributed Asset", - "relatedUiObject": "Contributed Asset" + "label": "Add Asset Contribution Claim", + "relatedUiObject": "Asset Contribution Claim" }, { "action": "Delete UI Object", @@ -39,20 +39,20 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Contribution Claims->Marketing Contributions->" + "compatibleTypes": "->Contribution Claims->Asset Contributions Folder->" }, - "propertyNameAtParent": "marketingContributions", + "propertyNameAtParent": "assetContributionsFolder", "childrenNodesProperties": [ { - "name": "marketingContributions", + "name": "assetContributionsFolder", "type": "array", - "childType": "Marketing Contributions", + "childType": "Asset Contributions Folder", "autoAdd": false }, { - "name": "contributedAssets", + "name": "assetContributionClaims", "type": "array", - "childType": "Contributed Asset", + "childType": "Asset Contribution Claim", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/asset-vote.json b/Projects/Governance/Schemas/App-Schema/asset-vote.json index b6c4275ca..6b2828f77 100644 --- a/Projects/Governance/Schemas/App-Schema/asset-vote.json +++ b/Projects/Governance/Schemas/App-Schema/asset-vote.json @@ -33,7 +33,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Civic Contributions->" + "compatibleTypes": "->Votes Switch->" }, "referencingRules": { "compatibleTypes": "->Asset Class->Asset->" diff --git a/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json b/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json index 089b52a8c..fe07c5c9c 100644 --- a/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json +++ b/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json @@ -35,7 +35,7 @@ "attachingRules": { "compatibleTypes": "->Assets->Asset->" }, - "propertyNameAtParent": "softwareContributions", + "propertyNameAtParent": "assetContributionsFolder", "childrenNodesProperties": [ { "name": "assetClass", diff --git a/Projects/Governance/Schemas/App-Schema/contribution-claims.json b/Projects/Governance/Schemas/App-Schema/contribution-claims.json index 9d27188c4..34d781a96 100644 --- a/Projects/Governance/Schemas/App-Schema/contribution-claims.json +++ b/Projects/Governance/Schemas/App-Schema/contribution-claims.json @@ -10,27 +10,21 @@ }, { "action": "Add UI Object", - "label": "Add Software Contributions", - "relatedUiObject": "Software Contributions", + "label": "Add Asset Contributions Folder", + "relatedUiObject": "Asset Contributions Folder", "actionFunction": "payload.executeAction" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Marketing Contributions", - "relatedUiObject": "Marketing Contributions" + "label": "Add Feature Contributions Folder", + "relatedUiObject": "Feature Contributions Folder" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Community Contributions", - "relatedUiObject": "Community Contributions" - }, - { - "action": "Add UI Object", - "actionFunction": "payload.executeAction", - "label": "Add Time Contributions", - "relatedUiObject": "Time Contributions" + "label": "Add Time Contributions Folder", + "relatedUiObject": "Time Contributions Folder" }, { "action": "Delete UI Object", @@ -54,27 +48,21 @@ "propertyNameAtParent": "contributionClaims", "childrenNodesProperties": [ { - "name": "softwareContributions", + "name": "assetContributionsFolder", "type": "array", - "childType": "Software Contributions", + "childType": "Asset Contributions Folder", "autoAdd": false }, { - "name": "marketingContributions", + "name": "featureContributionsFolder", "type": "array", - "childType": "Marketing Contributions", + "childType": "Feature Contributions Folder", "autoAdd": false }, { - "name": "communityContributions", + "name": "timeContributionsFolder", "type": "array", - "childType": "Community Contributions", - "autoAdd": false - }, - { - "name": "timeContributions", - "type": "array", - "childType": "Time Contributions", + "childType": "Time Contributions Folder", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/feature-contribution-claim.json b/Projects/Governance/Schemas/App-Schema/feature-contribution-claim.json new file mode 100644 index 000000000..2d8769949 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/feature-contribution-claim.json @@ -0,0 +1,41 @@ +{ + "type": "Feature Contribution Claim", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "title": [ + "Use Reference Parent", + "Use Reference Parent Parent" + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"description\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Feature Contributions Folder->" + }, + "referencingRules": { + "compatibleTypes": "->Feature->" + }, + "propertyNameAtParent": "featureContributionClaims", + "icon": "tron" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/community-contributions.json b/Projects/Governance/Schemas/App-Schema/feature-contributions-folder.json similarity index 66% rename from Projects/Governance/Schemas/App-Schema/community-contributions.json rename to Projects/Governance/Schemas/App-Schema/feature-contributions-folder.json index 36c8ec2d6..04c3c5037 100644 --- a/Projects/Governance/Schemas/App-Schema/community-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/feature-contributions-folder.json @@ -1,5 +1,5 @@ { - "type": "Community Contributions", + "type": "Feature Contributions Folder", "menuItems": [ { "action": "Configure", @@ -11,14 +11,14 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Community Contributions", - "relatedUiObject": "Community Contributions" + "label": "Add Feature Contributions Folder", + "relatedUiObject": "Feature Contributions Folder" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Contributed Asset", - "relatedUiObject": "Contributed Asset" + "label": "Add Feature Contribution Claim", + "relatedUiObject": "Feature Contribution Claim" }, { "action": "Delete UI Object", @@ -39,20 +39,20 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Contribution Claims->Community Contributions->" + "compatibleTypes": "->Contribution Claims->Feature Contributions Folder->" }, - "propertyNameAtParent": "communityContributions", + "propertyNameAtParent": "featureContributionsFolder", "childrenNodesProperties": [ { - "name": "communityContributions", + "name": "featureContributionsFolder", "type": "array", - "childType": "Community Contributions", + "childType": "Feature Contributions Folder", "autoAdd": false }, { - "name": "contributedAssets", + "name": "featureContributionClaims", "type": "array", - "childType": "Contributed Asset", + "childType": "Feature Contribution Claim", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/feature-vote.json b/Projects/Governance/Schemas/App-Schema/feature-vote.json index 72fc22580..35322a435 100644 --- a/Projects/Governance/Schemas/App-Schema/feature-vote.json +++ b/Projects/Governance/Schemas/App-Schema/feature-vote.json @@ -32,7 +32,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Civic Contributions->" + "compatibleTypes": "->Votes Switch->" }, "referencingRules": { "compatibleTypes": "->Feature Class->Feature->" diff --git a/Projects/Governance/Schemas/App-Schema/ranking-vote.json b/Projects/Governance/Schemas/App-Schema/ranking-vote.json index 079065718..5d75af150 100644 --- a/Projects/Governance/Schemas/App-Schema/ranking-vote.json +++ b/Projects/Governance/Schemas/App-Schema/ranking-vote.json @@ -31,7 +31,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Civic Contributions->" + "compatibleTypes": "->Votes Switch->" }, "referencingRules": { "compatibleTypes": "->Team->Ranking Position->" diff --git a/Projects/Governance/Schemas/App-Schema/software-contributions.json b/Projects/Governance/Schemas/App-Schema/software-contributions.json deleted file mode 100644 index 86083a8ed..000000000 --- a/Projects/Governance/Schemas/App-Schema/software-contributions.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "type": "Software Contributions", - "menuItems": [ - { - "action": "Configure", - "actionFunction": "uiObject.configEditor.activate", - "label": "Configure", - "iconPathOn": "configuration", - "iconPathOff": "configuration" - }, - { - "action": "Add UI Object", - "actionFunction": "payload.executeAction", - "label": "Add Software Contributions", - "relatedUiObject": "Software Contributions" - }, - { - "action": "Add UI Object", - "actionFunction": "payload.executeAction", - "label": "Add Contributed Asset", - "relatedUiObject": "Contributed Asset" - }, - { - "action": "Delete UI Object", - "askConfirmation": true, - "confirmationLabel": "Confirm to Delete", - "label": "Delete", - "iconPathOn": "delete-entity", - "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" - } - ], - "editors": { - "config": true - }, - "initialValues": { - "config": "{\n \"description\": \"\"\n}" - }, - "addLeftIcons": true, - "level": 2, - "attachingRules": { - "compatibleTypes": "->Contribution Claims->Software Contributions->" - }, - "propertyNameAtParent": "softwareContributions", - "childrenNodesProperties": [ - { - "name": "softwareContributions", - "type": "array", - "childType": "Software Contributions", - "autoAdd": false - }, - { - "name": "contributedAssets", - "type": "array", - "childType": "Contributed Asset", - "autoAdd": false - } - ], - "icon": "bitcoin" -} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/contributed-time.json b/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json similarity index 86% rename from Projects/Governance/Schemas/App-Schema/contributed-time.json rename to Projects/Governance/Schemas/App-Schema/time-contribution-claim.json index 9895ec408..d607c01df 100644 --- a/Projects/Governance/Schemas/App-Schema/contributed-time.json +++ b/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json @@ -1,5 +1,5 @@ { - "type": "Contributed Time", + "type": "Time Contribution Claim", "menuItems": [ { "action": "Configure", @@ -31,11 +31,11 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Time Contributions->" + "compatibleTypes": "->Time Contributions Folder->" }, "referencingRules": { "compatibleTypes": "->Ranking Position->" }, - "propertyNameAtParent": "contributedTimes", + "propertyNameAtParent": "timeContributionClaims", "icon": "dogecoin" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/time-contributions.json b/Projects/Governance/Schemas/App-Schema/time-contributions-folder.json similarity index 71% rename from Projects/Governance/Schemas/App-Schema/time-contributions.json rename to Projects/Governance/Schemas/App-Schema/time-contributions-folder.json index a6a362501..47ec677ce 100644 --- a/Projects/Governance/Schemas/App-Schema/time-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/time-contributions-folder.json @@ -1,5 +1,5 @@ { - "type": "Time Contributions", + "type": "Time Contributions Folder", "menuItems": [ { "action": "Configure", @@ -11,14 +11,14 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Time Contributions", - "relatedUiObject": "Time Contributions" + "label": "Add Time Contributions Folder", + "relatedUiObject": "Time Contributions Folder" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Contributed Time", - "relatedUiObject": "Contributed Time" + "label": "Add Time Contribution Claim", + "relatedUiObject": "Time Contribution Claim" }, { "action": "Delete UI Object", @@ -39,20 +39,20 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Contribution Claims->Time Contributions->" + "compatibleTypes": "->Contribution Claims->Time Contributions Folder->" }, - "propertyNameAtParent": "timeContributions", + "propertyNameAtParent": "timeContributionsFolder", "childrenNodesProperties": [ { - "name": "timeContributions", + "name": "timeContributionsFolder", "type": "array", - "childType": "Time Contributions", + "childType": "Time Contributions Folder", "autoAdd": false }, { - "name": "contributedTimes", + "name": "timeContributionClaims", "type": "array", - "childType": "Contributed Time", + "childType": "Time Contribution Claim", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/time-vote.json b/Projects/Governance/Schemas/App-Schema/time-vote.json index dd017b283..a085523bd 100644 --- a/Projects/Governance/Schemas/App-Schema/time-vote.json +++ b/Projects/Governance/Schemas/App-Schema/time-vote.json @@ -31,10 +31,10 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Civic Contributions->" + "compatibleTypes": "->Votes Switch->" }, "referencingRules": { - "compatibleTypes": "->Contributed Time->" + "compatibleTypes": "->Time Contribution Claim->" }, "propertyNameAtParent": "timeVotes", "icon": "dogecoin" diff --git a/Projects/Governance/Schemas/App-Schema/user-vote.json b/Projects/Governance/Schemas/App-Schema/user-vote.json index f74d785b8..df86346f5 100644 --- a/Projects/Governance/Schemas/App-Schema/user-vote.json +++ b/Projects/Governance/Schemas/App-Schema/user-vote.json @@ -30,7 +30,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Civic Contributions->" + "compatibleTypes": "->Votes Switch->" }, "referencingRules": { "compatibleTypes": "->User Profile->" diff --git a/Projects/Governance/Schemas/App-Schema/votes-distribution.json b/Projects/Governance/Schemas/App-Schema/votes-distribution.json index 33209a758..ddc718adf 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-distribution.json +++ b/Projects/Governance/Schemas/App-Schema/votes-distribution.json @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Civic Contributions", - "relatedUiObject": "Civic Contributions" + "label": "Add Votes Switch", + "relatedUiObject": "Votes Switch" }, { "action": "Add UI Object", @@ -45,9 +45,9 @@ "propertyNameAtParent": "votesDistribution", "childrenNodesProperties": [ { - "name": "civicContributions", + "name": "votesSwitch", "type": "array", - "childType": "Civic Contributions", + "childType": "Votes Switch", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/civic-contributions.json b/Projects/Governance/Schemas/App-Schema/votes-switch.json similarity index 88% rename from Projects/Governance/Schemas/App-Schema/civic-contributions.json rename to Projects/Governance/Schemas/App-Schema/votes-switch.json index d368147f5..d04dfe7d4 100644 --- a/Projects/Governance/Schemas/App-Schema/civic-contributions.json +++ b/Projects/Governance/Schemas/App-Schema/votes-switch.json @@ -1,5 +1,5 @@ { - "type": "Civic Contributions", + "type": "Votes Switch", "menuItems": [ { "action": "Configure", @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Civic Contributions", - "relatedUiObject": "Civic Contributions" + "label": "Add Votes Switch", + "relatedUiObject": "Votes Switch" }, { "action": "Add UI Object", @@ -63,14 +63,14 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Votes Distribution->Civic Contributions->" + "compatibleTypes": "->Votes Distribution->Votes Switch->" }, - "propertyNameAtParent": "civicContributions", + "propertyNameAtParent": "votesSwitch", "childrenNodesProperties": [ { - "name": "civicContributions", + "name": "votesSwitch", "type": "array", - "childType": "Civic Contributions", + "childType": "Votes Switch", "autoAdd": false }, { From 135c795ed71db70ea8cc761f5d40dcfd6b353482 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 19:38:43 +0200 Subject: [PATCH 06/11] Organization Chart implemented --- .../Governance/Schemas/App-Schema/asset-class.json | 2 +- Projects/Governance/Schemas/App-Schema/asset.json | 2 +- .../Schemas/App-Schema/feature-class.json | 2 +- .../Governance/Schemas/App-Schema/feature.json | 2 +- .../Schemas/App-Schema/governance-project.json | 4 ++-- .../Schemas/App-Schema/governance-structure.json | 10 +++++----- .../Schemas/App-Schema/ranking-position.json | 14 +++++++------- .../Schemas/App-Schema/ranking-vote.json | 6 +++--- Projects/Governance/Schemas/App-Schema/team.json | 10 +++++----- .../App-Schema/time-contribution-claim.json | 2 +- .../Schemas/App-Schema/votes-switch.json | 8 ++++---- 11 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Projects/Governance/Schemas/App-Schema/asset-class.json b/Projects/Governance/Schemas/App-Schema/asset-class.json index 938beef44..e8886ceb7 100644 --- a/Projects/Governance/Schemas/App-Schema/asset-class.json +++ b/Projects/Governance/Schemas/App-Schema/asset-class.json @@ -42,7 +42,7 @@ "compatibleTypes": "->Assets->Asset Class->" }, "referencingRules": { - "compatibleTypes": "->Team->Ranking Position->" + "compatibleTypes": "->Team->Position->" }, "propertyNameAtParent": "assetClasses", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/asset.json b/Projects/Governance/Schemas/App-Schema/asset.json index 43e6cf0fc..4a982e0b2 100644 --- a/Projects/Governance/Schemas/App-Schema/asset.json +++ b/Projects/Governance/Schemas/App-Schema/asset.json @@ -42,7 +42,7 @@ "compatibleTypes": "->Asset Class->Asset->" }, "referencingRules": { - "compatibleTypes": "->Team->Ranking Position->" + "compatibleTypes": "->Team->Position->" }, "propertyNameAtParent": "assets", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/feature-class.json b/Projects/Governance/Schemas/App-Schema/feature-class.json index 61f5ca07d..3e0b3d793 100644 --- a/Projects/Governance/Schemas/App-Schema/feature-class.json +++ b/Projects/Governance/Schemas/App-Schema/feature-class.json @@ -42,7 +42,7 @@ "compatibleTypes": "->Features->Feature Class->" }, "referencingRules": { - "compatibleTypes": "->Team->Ranking Position->" + "compatibleTypes": "->Team->Position->" }, "propertyNameAtParent": "featureClasses", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/feature.json b/Projects/Governance/Schemas/App-Schema/feature.json index ad2f8a448..20f539b60 100644 --- a/Projects/Governance/Schemas/App-Schema/feature.json +++ b/Projects/Governance/Schemas/App-Schema/feature.json @@ -42,7 +42,7 @@ "compatibleTypes": "->Feature Class->Feature->" }, "referencingRules": { - "compatibleTypes": "->Team->Ranking Position->" + "compatibleTypes": "->Team->Position->" }, "propertyNameAtParent": "features", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/governance-project.json b/Projects/Governance/Schemas/App-Schema/governance-project.json index eb838db37..6d16e914d 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-project.json +++ b/Projects/Governance/Schemas/App-Schema/governance-project.json @@ -15,8 +15,8 @@ }, { "action": "Add UI Object", - "label": "Add Ranking", - "relatedUiObject": "Ranking", + "label": "Add Oranization Chart", + "relatedUiObject": "Oranization Chart", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Governance/Schemas/App-Schema/governance-structure.json b/Projects/Governance/Schemas/App-Schema/governance-structure.json index 79c5de3d3..90faa2fac 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-structure.json +++ b/Projects/Governance/Schemas/App-Schema/governance-structure.json @@ -1,10 +1,10 @@ { - "type": "Ranking", + "type": "Oranization Chart", "menuItems": [ { "action": "Add UI Object", - "label": "Add Ranking Position", - "relatedUiObject": "Ranking Position", + "label": "Add Position", + "relatedUiObject": "Position", "actionFunction": "payload.executeAction" }, { @@ -23,9 +23,9 @@ "level": 0, "childrenNodesProperties": [ { - "name": "rankingPositions", + "name": "positions", "type": "array", - "childType": "Ranking Position", + "childType": "Position", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/ranking-position.json b/Projects/Governance/Schemas/App-Schema/ranking-position.json index 7c77d314a..a76d6f507 100644 --- a/Projects/Governance/Schemas/App-Schema/ranking-position.json +++ b/Projects/Governance/Schemas/App-Schema/ranking-position.json @@ -1,5 +1,5 @@ { - "type": "Ranking Position", + "type": "Position", "menuItems": [ { "action": "Configure", @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Ranking Position", - "relatedUiObject": "Ranking Position" + "label": "Add Position", + "relatedUiObject": "Position" }, { "action": "Add UI Object", @@ -39,14 +39,14 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Ranking->Ranking Position->Team->" + "compatibleTypes": "->Oranization Chart->Position->Team->" }, - "propertyNameAtParent": "rankingPositions", + "propertyNameAtParent": "positions", "childrenNodesProperties": [ { - "name": "rankingPositions", + "name": "positions", "type": "array", - "childType": "Ranking Position", + "childType": "Position", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/ranking-vote.json b/Projects/Governance/Schemas/App-Schema/ranking-vote.json index 5d75af150..c6f6cde4d 100644 --- a/Projects/Governance/Schemas/App-Schema/ranking-vote.json +++ b/Projects/Governance/Schemas/App-Schema/ranking-vote.json @@ -1,5 +1,5 @@ { - "type": "Ranking Vote", + "type": "Position Vote", "menuItems": [ { "action": "Configure", @@ -34,8 +34,8 @@ "compatibleTypes": "->Votes Switch->" }, "referencingRules": { - "compatibleTypes": "->Team->Ranking Position->" + "compatibleTypes": "->Team->Position->" }, - "propertyNameAtParent": "rankingVotes", + "propertyNameAtParent": "positionVotes", "icon": "bitfinex" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/team.json b/Projects/Governance/Schemas/App-Schema/team.json index af27c192c..ba78b6814 100644 --- a/Projects/Governance/Schemas/App-Schema/team.json +++ b/Projects/Governance/Schemas/App-Schema/team.json @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Ranking Position", - "relatedUiObject": "Ranking Position" + "label": "Add Position", + "relatedUiObject": "Position" }, { "action": "Add UI Object", @@ -39,14 +39,14 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Ranking Position->Team->" + "compatibleTypes": "->Position->Team->" }, "propertyNameAtParent": "teams", "childrenNodesProperties": [ { - "name": "rankingPositions", + "name": "positions", "type": "array", - "childType": "Ranking Position", + "childType": "Position", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json b/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json index d607c01df..38560df9f 100644 --- a/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json +++ b/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json @@ -34,7 +34,7 @@ "compatibleTypes": "->Time Contributions Folder->" }, "referencingRules": { - "compatibleTypes": "->Ranking Position->" + "compatibleTypes": "->Position->" }, "propertyNameAtParent": "timeContributionClaims", "icon": "dogecoin" diff --git a/Projects/Governance/Schemas/App-Schema/votes-switch.json b/Projects/Governance/Schemas/App-Schema/votes-switch.json index d04dfe7d4..7d6687db2 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-switch.json +++ b/Projects/Governance/Schemas/App-Schema/votes-switch.json @@ -17,8 +17,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Ranking Vote", - "relatedUiObject": "Ranking Vote" + "label": "Add Position Vote", + "relatedUiObject": "Position Vote" }, { "action": "Add UI Object", @@ -92,9 +92,9 @@ "autoAdd": false }, { - "name": "rankingVotes", + "name": "positionVotes", "type": "array", - "childType": "Ranking Vote", + "childType": "Position Vote", "autoAdd": false }, { From 60fdf78534edc1feb915e5c4e3fdcfbe70efaec8 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 19:52:09 +0200 Subject: [PATCH 07/11] Position bug fixed --- .../Governance/UI/Spaces/User-Profile-Space/UserProfile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index adb6ce26f..e1d2a174d 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -77,7 +77,7 @@ function newGovernanceUserProfileSpace() { voting power. */ if ( - node.type === 'Ranking Position' || + node.type === 'Position' || node.type === 'Asset' || node.type === 'Feature' ) { return } @@ -133,7 +133,7 @@ function newGovernanceUserProfileSpace() { voting power. */ if ( - node.type === 'Ranking Position' || + node.type === 'Position' || node.type === 'Asset' || node.type === 'Feature' ) { return } From 8f50c4295bc5f3565bcc72e466ba8a592ff3b8ee Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 20:59:53 +0200 Subject: [PATCH 08/11] Value at Angle Improvement --- .../Schemas/App-Schema/asset-vote.json | 4 +-- .../App-Schema/contribution-claims.json | 4 ++- .../Schemas/App-Schema/feature-vote.json | 4 +-- .../Schemas/App-Schema/ranking-vote.json | 4 +-- .../Schemas/App-Schema/user-vote.json | 4 +-- .../App-Schema/votes-distribution.json | 5 +-- .../Schemas/App-Schema/votes-switch.json | 32 +++++++++---------- .../Spaces/User-Profile-Space/UserProfile.js | 8 ++++- .../UI/Spaces/Floating-Space/UiObject.js | 5 +-- 9 files changed, 40 insertions(+), 30 deletions(-) diff --git a/Projects/Governance/Schemas/App-Schema/asset-vote.json b/Projects/Governance/Schemas/App-Schema/asset-vote.json index 6b2828f77..bc254bfb3 100644 --- a/Projects/Governance/Schemas/App-Schema/asset-vote.json +++ b/Projects/Governance/Schemas/App-Schema/asset-vote.json @@ -1,5 +1,5 @@ { - "type": "Asset Vote", + "type": "Asset Weight Vote", "menuItems": [ { "action": "Configure", @@ -38,6 +38,6 @@ "referencingRules": { "compatibleTypes": "->Asset Class->Asset->" }, - "propertyNameAtParent": "assetVotes", + "propertyNameAtParent": "assetWeightVotes", "icon": "EN" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/contribution-claims.json b/Projects/Governance/Schemas/App-Schema/contribution-claims.json index 34d781a96..2b98dcc43 100644 --- a/Projects/Governance/Schemas/App-Schema/contribution-claims.json +++ b/Projects/Governance/Schemas/App-Schema/contribution-claims.json @@ -42,7 +42,9 @@ "initialValues": { "config": "{\n\"codeName\": \"\"\n}" }, - "isTitleAllwaysVisible": false, + "attachingRules": { + "compatibleTypes": "->User Profile->" + }, "addLeftIcons": true, "level": 1, "propertyNameAtParent": "contributionClaims", diff --git a/Projects/Governance/Schemas/App-Schema/feature-vote.json b/Projects/Governance/Schemas/App-Schema/feature-vote.json index 35322a435..a919051b5 100644 --- a/Projects/Governance/Schemas/App-Schema/feature-vote.json +++ b/Projects/Governance/Schemas/App-Schema/feature-vote.json @@ -1,5 +1,5 @@ { - "type": "Feature Vote", + "type": "Feature Weight Vote", "menuItems": [ { "action": "Configure", @@ -37,6 +37,6 @@ "referencingRules": { "compatibleTypes": "->Feature Class->Feature->" }, - "propertyNameAtParent": "featureVotes", + "propertyNameAtParent": "featureWeightVotes", "icon": "github-api" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/ranking-vote.json b/Projects/Governance/Schemas/App-Schema/ranking-vote.json index c6f6cde4d..0a3cc724c 100644 --- a/Projects/Governance/Schemas/App-Schema/ranking-vote.json +++ b/Projects/Governance/Schemas/App-Schema/ranking-vote.json @@ -1,5 +1,5 @@ { - "type": "Position Vote", + "type": "Position Weight Vote", "menuItems": [ { "action": "Configure", @@ -36,6 +36,6 @@ "referencingRules": { "compatibleTypes": "->Team->Position->" }, - "propertyNameAtParent": "positionVotes", + "propertyNameAtParent": "positionWeightVotes", "icon": "bitfinex" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/user-vote.json b/Projects/Governance/Schemas/App-Schema/user-vote.json index df86346f5..90bc622b7 100644 --- a/Projects/Governance/Schemas/App-Schema/user-vote.json +++ b/Projects/Governance/Schemas/App-Schema/user-vote.json @@ -1,5 +1,5 @@ { - "type": "User Vote", + "type": "User Vote Transfer", "menuItems": [ { "action": "Configure", @@ -35,6 +35,6 @@ "referencingRules": { "compatibleTypes": "->User Profile->" }, - "propertyNameAtParent": "userVotes", + "propertyNameAtParent": "userVoteTransfers", "icon": "user-profile" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/votes-distribution.json b/Projects/Governance/Schemas/App-Schema/votes-distribution.json index ddc718adf..cc428a388 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-distribution.json +++ b/Projects/Governance/Schemas/App-Schema/votes-distribution.json @@ -38,8 +38,9 @@ "initialValues": { "config": "{\n\"codeName\": \"\"\n}" }, - "isTitleAllwaysVisible": false, - "isHierarchyHead": false, + "attachingRules": { + "compatibleTypes": "->User Profile->" + }, "addLeftIcons": true, "level": 1, "propertyNameAtParent": "votesDistribution", diff --git a/Projects/Governance/Schemas/App-Schema/votes-switch.json b/Projects/Governance/Schemas/App-Schema/votes-switch.json index 7d6687db2..24157b4d9 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-switch.json +++ b/Projects/Governance/Schemas/App-Schema/votes-switch.json @@ -17,20 +17,20 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Position Vote", - "relatedUiObject": "Position Vote" + "label": "Add Position Weight Vote", + "relatedUiObject": "Position Weight Vote" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Asset Vote", - "relatedUiObject": "Asset Vote" + "label": "Add Asset Weight Vote", + "relatedUiObject": "Asset Weight Vote" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Feature Vote", - "relatedUiObject": "Feature Vote" + "label": "Add Feature Weight Vote", + "relatedUiObject": "Feature Weight Vote" }, { "action": "Add UI Object", @@ -41,8 +41,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add User Vote", - "relatedUiObject": "User Vote" + "label": "Add User Vote Transfer", + "relatedUiObject": "User Vote Transfer" }, { "action": "Delete UI Object", @@ -74,15 +74,15 @@ "autoAdd": false }, { - "name": "assetVotes", + "name": "assetWeightVotes", "type": "array", - "childType": "Asset Vote", + "childType": "Asset Weight Vote", "autoAdd": false }, { - "name": "featureVotes", + "name": "featureWeightVotes", "type": "array", - "childType": "Feature Vote", + "childType": "Feature Weight Vote", "autoAdd": false }, { @@ -92,15 +92,15 @@ "autoAdd": false }, { - "name": "positionVotes", + "name": "positionWeightVotes", "type": "array", - "childType": "Position Vote", + "childType": "Position Weight Vote", "autoAdd": false }, { - "name": "userVotes", + "name": "userVoteTransfers", "type": "array", - "childType": "User Vote", + "childType": "User Vote Transfer", "autoAdd": false } ], diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index e1d2a174d..c25dce817 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -62,6 +62,7 @@ function newGovernanceUserProfileSpace() { } function resetVotingPower(node) { + if (node === undefined) { return } if (node.payload === undefined) { return } node.payload.votingPower = 0 /* @@ -117,6 +118,7 @@ function newGovernanceUserProfileSpace() { } function distributeVotingPower(node, votingPower) { + if (node === undefined) { return } if (node.payload === undefined) { return } node.payload.votingPower = node.payload.votingPower + votingPower drawVotingPower(node, node.payload.votingPower) @@ -175,7 +177,11 @@ function newGovernanceUserProfileSpace() { function drawVotingPower(node, votingPower) { votingPower = new Intl.NumberFormat().format(votingPower) + ' ' + 'SA' if (node.payload !== undefined) { - node.payload.uiObject.valueAtAngle = false + if (node.type === 'User Profile') { + return + } + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true node.payload.uiObject.setValue(votingPower) } } diff --git a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js index c17d83b09..b239412ae 100644 --- a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js +++ b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js @@ -29,6 +29,7 @@ function newUiObject() { hasWarning: undefined, hasInfo: undefined, valueAtAngle: true, + valueAngleOffset: 0, run: run, stop: stop, heartBeat: heartBeat, @@ -1827,8 +1828,8 @@ function newUiObject() { x: position.x - getTextWidth(label) / 2, y: position.y } - labelPoint.x = labelPoint.x + radius * 7 / 3 * Math.cos(toRadians(thisObject.payload.angle)) - labelPoint.y = labelPoint.y + radius * 7 / 3 * Math.sin(toRadians(thisObject.payload.angle)) + labelPoint.x = labelPoint.x + radius * 7 / 3 * Math.cos(toRadians(thisObject.payload.angle + thisObject.valueAngleOffset)) + labelPoint.y = labelPoint.y + radius * 7 / 3 * Math.sin(toRadians(thisObject.payload.angle + thisObject.valueAngleOffset)) } else { if (thisObject.isOnFocus === true) { labelPoint = { From 6c14a20679786cda6c8f071024e4cb11a8fb9070 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 21:27:00 +0200 Subject: [PATCH 09/11] All vote types implemented --- .../Schemas/App-Schema/asset-claim-vote.json | 41 +++++++++++++++++++ .../App-Schema/feature-claim-vote.json | 41 +++++++++++++++++++ .../{time-vote.json => time-claim-vote.json} | 4 +- .../Schemas/App-Schema/votes-switch.json | 32 +++++++++++++-- 4 files changed, 112 insertions(+), 6 deletions(-) create mode 100644 Projects/Governance/Schemas/App-Schema/asset-claim-vote.json create mode 100644 Projects/Governance/Schemas/App-Schema/feature-claim-vote.json rename Projects/Governance/Schemas/App-Schema/{time-vote.json => time-claim-vote.json} (93%) diff --git a/Projects/Governance/Schemas/App-Schema/asset-claim-vote.json b/Projects/Governance/Schemas/App-Schema/asset-claim-vote.json new file mode 100644 index 000000000..97fd65724 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/asset-claim-vote.json @@ -0,0 +1,41 @@ +{ + "type": "Asset Claim Vote", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "title": [ + "Reference Parent Find In Parents Node Type->User Profile", + "Use Reference Parent" + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"description\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Votes Switch->" + }, + "referencingRules": { + "compatibleTypes": "->Asset Contribution Claim->" + }, + "propertyNameAtParent": "assetClaimVotes", + "icon": "EN" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/feature-claim-vote.json b/Projects/Governance/Schemas/App-Schema/feature-claim-vote.json new file mode 100644 index 000000000..a5123d218 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/feature-claim-vote.json @@ -0,0 +1,41 @@ +{ + "type": "Feature Claim Vote", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "title": [ + "Reference Parent Find In Parents Node Type->User Profile", + "Use Reference Parent" + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"description\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Votes Switch->" + }, + "referencingRules": { + "compatibleTypes": "->Feature Contribution Claim->" + }, + "propertyNameAtParent": "featureClaimVotes", + "icon": "github-api" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/time-vote.json b/Projects/Governance/Schemas/App-Schema/time-claim-vote.json similarity index 93% rename from Projects/Governance/Schemas/App-Schema/time-vote.json rename to Projects/Governance/Schemas/App-Schema/time-claim-vote.json index a085523bd..98e88627e 100644 --- a/Projects/Governance/Schemas/App-Schema/time-vote.json +++ b/Projects/Governance/Schemas/App-Schema/time-claim-vote.json @@ -1,5 +1,5 @@ { - "type": "Time Vote", + "type": "Time Claim Vote", "menuItems": [ { "action": "Configure", @@ -36,6 +36,6 @@ "referencingRules": { "compatibleTypes": "->Time Contribution Claim->" }, - "propertyNameAtParent": "timeVotes", + "propertyNameAtParent": "timeClaimVotes", "icon": "dogecoin" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/votes-switch.json b/Projects/Governance/Schemas/App-Schema/votes-switch.json index 24157b4d9..316420ac6 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-switch.json +++ b/Projects/Governance/Schemas/App-Schema/votes-switch.json @@ -35,8 +35,20 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Time Vote", - "relatedUiObject": "Time Vote" + "label": "Add Time Claim Vote", + "relatedUiObject": "Time Claim Vote" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Asset Claim Vote", + "relatedUiObject": "Asset Claim Vote" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Feature Claim Vote", + "relatedUiObject": "Feature Claim Vote" }, { "action": "Add UI Object", @@ -86,9 +98,21 @@ "autoAdd": false }, { - "name": "timeVotes", + "name": "timeClaimVotes", "type": "array", - "childType": "Time Vote", + "childType": "Time Claim Vote", + "autoAdd": false + }, + { + "name": "assetClaimVotes", + "type": "array", + "childType": "Asset Claim Vote", + "autoAdd": false + }, + { + "name": "featureClaimVotes", + "type": "array", + "childType": "Feature Claim Vote", "autoAdd": false }, { From 4994f03ff4e33b7335a18df8f2155cc09313d051 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Jun 2021 22:57:02 +0200 Subject: [PATCH 10/11] Pool Concept Introduced --- Projects/Governance/Icons/pool-class.png | Bin 0 -> 9747 bytes .../Governance/Icons/pool-weight-vote.png | Bin 0 -> 13511 bytes Projects/Governance/Icons/pool.png | Bin 0 -> 16716 bytes Projects/Governance/Icons/pools.png | Bin 0 -> 5719 bytes ...asset-vote.json => asset-weight-vote.json} | 0 .../Governance/Schemas/App-Schema/asset.json | 5 +- .../Governance/Schemas/App-Schema/assets.json | 5 +- ...ure-vote.json => feature-weight-vote.json} | 0 .../Schemas/App-Schema/feature.json | 5 +- .../Schemas/App-Schema/features.json | 5 +- .../App-Schema/governance-project.json | 10 ++- ...structure.json => organization-chart.json} | 15 ++++- .../Schemas/App-Schema/pool-class.json | 62 ++++++++++++++++++ .../Schemas/App-Schema/pool-weight-vote.json | 42 ++++++++++++ .../Governance/Schemas/App-Schema/pool.json | 62 ++++++++++++++++++ .../Governance/Schemas/App-Schema/pools.json | 56 ++++++++++++++++ ...ng-vote.json => position-weight-vote.json} | 0 .../{ranking-position.json => position.json} | 4 +- ...user-vote.json => user-vote-transfer.json} | 0 .../UI/Spaces/Floating-Space/UiObjectTitle.js | 2 +- 20 files changed, 250 insertions(+), 23 deletions(-) create mode 100644 Projects/Governance/Icons/pool-class.png create mode 100644 Projects/Governance/Icons/pool-weight-vote.png create mode 100644 Projects/Governance/Icons/pool.png create mode 100644 Projects/Governance/Icons/pools.png rename Projects/Governance/Schemas/App-Schema/{asset-vote.json => asset-weight-vote.json} (100%) rename Projects/Governance/Schemas/App-Schema/{feature-vote.json => feature-weight-vote.json} (100%) rename Projects/Governance/Schemas/App-Schema/{governance-structure.json => organization-chart.json} (69%) create mode 100644 Projects/Governance/Schemas/App-Schema/pool-class.json create mode 100644 Projects/Governance/Schemas/App-Schema/pool-weight-vote.json create mode 100644 Projects/Governance/Schemas/App-Schema/pool.json create mode 100644 Projects/Governance/Schemas/App-Schema/pools.json rename Projects/Governance/Schemas/App-Schema/{ranking-vote.json => position-weight-vote.json} (100%) rename Projects/Governance/Schemas/App-Schema/{ranking-position.json => position.json} (91%) rename Projects/Governance/Schemas/App-Schema/{user-vote.json => user-vote-transfer.json} (100%) diff --git a/Projects/Governance/Icons/pool-class.png b/Projects/Governance/Icons/pool-class.png new file mode 100644 index 0000000000000000000000000000000000000000..d573c891d1743fd44958275553e6efe196ff402a GIT binary patch literal 9747 zcmdUVc|6oz^zfZA#!^VutffTu77{U|NJ#cI%%tplRF;_O@sx_tf=ZaOlO?;vj7L%= zB3t$?WM>%6@_oO0-{0TwzwbMrkI%UGoO|xM=brt}L-WgqJlta30017Ni~5!TAmM+J zfD;XWQA2<3z+YT}7af8D*dws}hXAi$i^7wLU`xYup!mDQ96UgI=$YyP@IGM=<0?A< zvUx`Ode)(c#o@&Sm)l`-EAvCNxOG%Wm7sN!^`$IJdK?)yoCwwy7pljdI6 zeCRo;ZqZ@&PZwE;n=+^*1%*@*=PuN9{la9+b0+r&uDY zB4nZD?l7du5>$!DJdB-N7HXbLm^pKtMOS8ZM2&8cc{Sw+{{FB4C2A5S?7bAr5Qpfp~UIhvjAtNGD`F`T_xeJ`(H zbFYNS)iLKj!uB{IKH>s1MrQPq4>tnMEUrt(it#dUzMBdQ3Jp=fMJ=1QDI$Q-KJfN9 z2XxQ2?49Q3_tUz!Gy&;)Js*HpsEc%T^a5VrtDaeAs(>T}HeG8$0^_bhuyQXqS$L*I zLh7+=*JMC+j9L9DEs`?89zg#%pTJtzUVce--Lj75g|6G}=;S^!02Gal0;Jm92JX0~ z{im$HQAdaCw1)K^Lp~JnwFp3B6}CH^kJHSBo4?QgyRem?V!PbAAK(?k`N2^pOYwe! zVK4`?%6s~!N#@|c0B97hBS=j#(DQwOl5_9H?6^Y3V)lqAdQ9020I13pBr zG1Z;mExAd`Nm}QmnXRtT#bSri+cD9HI z%!OZh(%gVQZ^?d8+71a0dieoSo*0wH``H?l^S=^Vmde7ABa6NW!Es62m5>vV5x|<1AiNQPa;xGLxUK-MWU<5B?DQen zK&l)7SUxTQI?osF1rDE#OJ$oD{s16EOn)i<@hBi=rve*LE>oj?RoA2P z;E|69D4T3d{^o-K`}}x7;Q+k0?;B1UbhZLDiO0#&%C$HAj{{N?Vyr4P*{p`UCM=(U z3FO&F^juY^$f!zjX-vP84A=`FsgC1dM{=}j*mQg<8+h7_CUysd=7;#Ey#T4!^9v;Y z1~S$N4e#+*C=cSJI25_CJH?gJ|KYJzQr8KuSsugsYt_LclU595A=o zYmHEuRPSS0z!z8MS=*A~=qT!Zd~0M2<95jY{QDaUZ2=L>;wkX`eD{oGKgh#YfP7aX zKXH0**%1WhR&t2ijNB@#-2H@_gqhW#L&dvK^hM_C@ZpLpUP#yXGSK0cWj$0Ve`jZaSHnIcA^XAFZx7Fo1l!in`J2>Fo(B9KiY#sELb7 zcXSM$4y*~$+ACO{Y;!=AFkyFrKVh%!wQZ5iA7#0b;Lj1@Ysrl&d67DJAo`9M<7-6Z z^?`}47?ICrtFa<3ikD*U?AT`|7`(TJ zdqoKyeed0aW~JD^Tyjdw7TrQAj+~{OMOOJNZ3blaO z+4bWrmOSL(GNm|K60dmti`l2I&lH33&_iN8KOkNRqZil5ZmW&H^k{0nYCB}F|GxY| zC zt0`G&gF3T)C zhEU%Jh^8;88@HXpb|bpa&Kp9*Zw_L)?PuHzJ|BK_bp+^7{MsEQDE+0pu|Y$UVWrFs zW)9e~UryIj;xuPRfSRn36%PjqU+(}y=C1?bvPn6z*>j_G6S%?WRKGbrmf;-?G&|-t zDZ>%*?7q(c_;{(0mz5unA|BHt`UwEy!(u6hmE;~E@T?abv_|xc_PqyyPId6|Nb|OZ z#NwYuOiwcijK8XdJENol$(t%IdhB zbiYU`S_sV6{G89oAg{eC=G%6@3@LyaE1oe|1<-jlzYl{U^w4&qwlc*i%_uONmr5H7 zyPnuQ8Tn$x+Dq)cpWwqqO#whMafj)UJ}O@75EkUQ zlFyNVs=tN?j^BjHk594%dOZ`_Q%`Nvo}jP<^i=cU0A_lh`Mcy!>$us0vbXkP3pKy< zHP;53Ng^oV`KJ3BYc-VWnS!a*)RB-!QU3uzd2%J!^&HlW6LiY(61-(lR3bb%zLM*H z4%-4Vgybc->vPVkA%NKT@s2nygrqFMMxSALaULQ?!!+|Mre>%nkrJ#^|G8FO+cK9p zP0O#b?ASp29eZJ1m1w4aDTHkNVxDNNFhW;=T2b*?Aj;U(#=c5|_6m0=O$} zFw5ns7GCA|79O1`A|~?#{QaXe<_2?)_)b2#0{P1T5D&b3&KjoWnp7Yi|Bj^ZJw4`} zDby*01m7s_b+n~6nPjBa(Msg~j5~N-XDAZ<^etOd{ZHklR^bCpS3UD}E?{0R88#$@ zhGwhoHO3e6pfp|spnhV@kZ_$Q%IT|t0Nx?)!>ZKA8g8{^h=vvbq@#0lqaScPvZJ}& zolY>xPu-ZvDMx%TOpDD7qS|~A&g1U91Oq5Az+IU15(V;Jx8^#?x}GQmP$;|BGlg;TT1uRoj*R%$`VY8ne6C~)B?wTygWixG zcD-a|`zyE{OqH(P;Yd08g6xe`vx0Ga_ce1MYbtyLul*gq!n>n@yj3xSPuym2Fu}$BA|USPLEmdU+E0>MV0$48BTp?7 zN`qd8y?nVJkdAnu!QICvIW^A*BYX$`C-!u&jB1*WI-*JsM5kPcSuXQ#S#5m9IDmQ)qQDOX0h6ScFpY# zNeco-q@6MtU0eum`8S2Q|G9&Zh%LD{lwg zR2fWiYvwq?7MUgkLJW`dvN`C6AHmq1mEc%%;;PaIBwE*-jO7P)pA!zy&l!=+QAB^O zE0UpJ8@gBV!6*q>!Yen*on%2eATh+#Lp3f>DtR( z^BnF+Y}nGpqSo$4{y2^VkCTLVhCa@GKWrh`qC`cwd%k&~skQYp+VJi93gDS#y*7GW zL8@y$SIH4P&pN4$5CUQzC#ErvS|nLmw(MleyiO3xIPX4!5dA6IHV z*v>^~e1NX~aE14HQoJ=sV=J=Q8(*4$gP)EhwLhA;7Ht-_AMD6Pso==q;4(2l#SD(3UO!s>s33i?TLOtkdMD} z>$n)KnU?FB7tL6)h|Yl60ioc>1^;pbYxfhY((eU_x#m?d+KD65)v*o z#(L>*AOz&wv#1%#E+8{lgrIYOvaQqgYomv z6umPkB7Ykm#SI)sI~3+-Pmi9SxfYL)lnYtx&2); zNf??wFC8a7vT|R(jY*)*2SKAzhkpGbLo=B8s_nD6>2pTLLBQ4*enhsh<-+9&_Ldcxg$OqA2)l*E`P=|hSrj+ zE3`nxK&2h-%yx2mPOfFrSRqE2AIIp+_+&??>knbP^g5q(jEKPQzjnut{2_xSppE!2 z+4+4m$e?titF5=-5GXxV%xeGqj@K229ICe)>n0P|cE; z*;#_Z7f`eDrREv zEwf7GY!2>-0oD`&<2-QnW%`#AX@W_>Hod8jc|rN^L8dnEN3Y|$tj7diN3TP_i-*pz zY9wU4kYi=P(b0UUO7H*nrKf?Oi#_+Kr_y;RFc>8d1 zTQF8;xsA!|QObe(T;;Hp>5;5vBhjtSwbf8OhCqRrCTWI*}QwFCtr z`w#p)D#`y1dCwJr`obq==~Sak5fnv%-cyy6gT86zHu8 z?ki?zLg7gcEW%FR=;N03EyuIae|s#1ciD9WIA&1(AWp8!*!9;jaYC4i4=)zrO@nj$ zE?YjcW~r7VSNa8T80KmrF1D_RJFYkE`uHPj?a-VFXJ2^oyg|K zu2lv^Dz-l5g>sbS|2(VEs^OlS*01O$W&L>vD6j4>L45_^*21+I1nQ7k#~tXU$RB#mtvpR*opxklXdTZ7cPX9imV*k4 zS+aalPz+)hB^>fIvB+sphB{cmvek$MRDXKK-12T5B81YeC`PPhSh74?|MAM()uLxG zUaqA$>6_x6?ljuo(g` z7>RtvzJ*IrH5AFRyz|nfa+0bGQRi8kTU?k(#;&hhRNX$awwOdbwyP~q(!Tt6f>f5I z!>I0Ag9ZpuLumPO?%jB~bP0r({>Q~|SfzH{`vwA^td5r$*_Tm6hMvQ>ylrxK0p(dB zeHMC~3oSW3gfEYTuKqaPZjrP299CPgj^`ug)dHlK@pn9$yD=hgs%-xTX`Vx!!fiIz z48vRDa;FA?8+kl&kxnI_)jkGwD;p#iebV3pPDk3RaE=qN%Oaq!x7r{pw`xR}`5O&v za8?(Tk&wZ=97ldFP2dFTRAc0213kqGi~>xRV+Ob&vO>q2}TanP=47U zc<4YJ2->3QS1}!wVQF1|d5BVGy*iOmwyRR@3jS=*Bj)cuHu8xYUC)LijZUJ-w(+is zid|@l_Jd8*D;&0*k}G=R6g7N(R|T|GGP_OtOxX*BG;jX-XCrERe{WGe(b7@ zRQ?n>!f6ddZTI*`>P*-T*(xL0z*?lEG%JDaKgxv@O9UaJu%`#>&t*$#9 z`|Asz&qVv-j?a~AT!Q*m=LfmW(>=N^r8zK9R6tzA0ofG|Y_EnnqQAhJWk!SAsP!Hh zkF8U}77KBbHrqeUpwTQI^WS3=A#&J(>b*NMk~;(_0P|3lHE;HO`;4M${y9asfC>@7 zi~70@q(V>Ui|aL5YaP57#IqfU#UGE>c+XKF%w#l6TQ2I%8LIQlHNRSbz1grj7Tpps z5;^lw>CrvBRlzJ&?eL4MvkD~gP84M2Gp!q-fvqb$w5;>Gl3U%RXsx1sj{TZx`L zVa5Mm(AQq*HZI4F0*xH1 zK1ev(!tB+-QP>@UpI`H>kdTEvUseU*!H=S|WoMZIaaZ=2svBsqw4Az_5KOU6;f5d4 z#3+Vb2Z^5?<^sN#ZKtvclCTR@>O-iuuZ;d4TB$3LEp>2nfl^^o@8mGIp&OoT?~HH} z>jj}!G9d$54Cse;O6GMqr?dLx@lR}jV09SG_V4Qk7GL{t2qMp!+MS8|MuX>2_2!4wY6e{B);Ci7j0$%KpF)Xh&!S_w7m zxcMlYpxZE63n*f&HH(@7i{~p|h1Y=3<|d8&6?PZ}zu>S&Y3o`23p2tMg6faiuX@O) zsxZ+W^olOKW?^zJqz~|ImO`X})5robN1yO*LP5c($1g7MllFI=LjjWNrHZwIHQ1b$ zVeCg#I7dtaiGnfn;X7t<&5>;ufhZ7T`Iu}I{>%}=juznMKxA?i%O-LeI)?;o#vD?S*9jqQI$B#_idv zfh1Ng%t~MO6@-mH%g1L|lp0ve=K16|$3AC6ljTZGGcI5)BmSACqQqHH0F7?KCxyca z%tfZx%440<%v}o+nf{vzU*?9|?oJ=Iiom=-brko<=ZP20i>b zKAQN3ya!f`qsm;~^magetg!Y&(o}~bfFL^RY}e9LTJmdx>eYxR+~($o440ka;f`$H z@M)=!(2IQ_#72u@czgMbFpnHi6F7znnM*?e0fQ(KPYgi@sGWp|3J9!SmK?+&FV>%S zJO}VO6>LNmPm=-Y4icP9Ifr%mMB$XPU8zO90qwS#Ek7Xry1@t)@}<-Nev@3!F0MM#!1fhdvYGM3^SIELb^hFicHd z*2?)^I4)faOHy-N)55p@cxSicAHxmzv0P-&wysxbg~|eVPxvJ&sR_dmJSzwc1{+^) zEiowH`wVa=$(K#Ls(r{WYKofwfh4I{p!#{0K~>flz6!6}4);9JDV8s*R*ZHMaYSO9 zA1TGp@Snc9v0?^y(`0*q2HZ{KX^U;zHmvKO$0fjRw~%5n^NLMgl}@Gnz6`z#eH-I{ zaqHoB*6?YT^cfpAVYc2k@UwE)zXbkFwjf$s%UeU3SUpwc?$ep)OVAzlt~(TG#Eb=EYCmjH=OSgCU#i?**y%L8tVyp8DoLokaq}4ajOSmI!Mu&fhKw-~G zx_ebny7TBPFM`B8O52QG2<6W-bhSV0OA3fU!Ee2P+q4Idvi)2Ad-4xfxcOYC77|Op z#K(B|g?u8cmCzj9l0<7e3@AslZ|S9%sC+l5I^{1iq*=UQ>HdL#J_~?XMVidyj!B29 z(GJ7r)fWkFW?MaQE{S@kpeLNb@mLm|vP)0!?{4DwzdQiH8iUwI-^Uqte->KbMKv@{D z77nN>p`X2gA1BZcjhD9N69DK~{{6wgyAPbuOV|^WTh~E(KhG-kK<=V(TLXZq7`oGY z6aZYZ(Yc{R)8zdMP&D+aYq*OF|9(ZoOl3oevl4WAdHuJr2YAAImEBiz?1k*B zykw!5t6AYD zIdRc4#GGHZCp7+TyMhAMm_fz^8fcW*Rj@s*?O;)?;PCy1f3rWgyqELvE7gXBu3Mty z0L|0m2nL_4pL^v${%iBVYUZ%O>2=!6f`Y9A2>?2C^eNChQl}hx5!lI$qsdS>K)iLl z06zPy@#cK*4%4Z}Z0Ys9TF(I_g45y$LtOq|6$jMmoCl+L+k)J+6t5H z?c^iJor*USOwjGfMhR?c(db)D&Fb5WFd*=i(gda*M5qm@U>jSL6%$%QsIW9XL_E=j zhE4rJhPCNZ59{1Wxs`il<>&0IAPobEpSkCN-MQoKmqlh%bD2FF7`wBOWu+xp0d02D z!^HrDw};1yPI)b9ZqH%BGOn9xR?~lo0W( zg#1x1GXR`5S!`&>S;HQp#jFIZ139txTb>>P2l7%DAQdxPP^wDm8S=ww%D$Ph;{bqC zSep(paNOLE>>>KLG56-CM=3rr1i+pt;ttr0=fC$C16P(O1;T-V?~Eh}VkpOFMN;(K z7aIR`@b?xYH2~r}=K%W&ah=$F(aFVG@v$)z5V&n;4UEffuVR9~=HJb^4+q*w^&l$` z6?!fsi{nj-N2|jf0JNj(!E6u>ea(K`jcTN!;lHuAnSovFqPZC1utG-j)ALXjc_3hY z!UuQU9w-r4HXX-K1ArbpDF-)3E%?1mIgaG?*`QT;(MpEC?598brplS)(|;7S;M%e5 zIx&#5A6XM_Qnf&U&Qx!yigATRSI;9Vrak(P9j}d*uhu+RyzQwv+8Nlml-s?mh<~m zAtInk0fd$eGy;r&FhMX;s4Gj)hQ7opNiN+PGw`8mF5#l-cdHhUrbV^w++fo2uZg7- z-?a-OS_K0ixT5ylqH4!({rp*WQE1cYSIgG^`BMLK>#@V6WyD!u0;49LbW=iC;m{CTIi#IMn- z%9?{9-1n$S+_t!g;@d-6QF!%f3B}knj{Cs)AYqtLU0x`wv zyXdx(W?A+~l+RM{z3Fk;{il2Qu+zC{yyQ3 zw@3zY@FVA=AOq~Z(*y1E4sS=+sCM$|qtO82XrYNNp{0#hk5z}@kifa5uO4e?vq}aK zG-n}f6#HlgN9e`oCj&6c#fI)xFogrO%QPd*O1aAy>-vfYJcvU2cGV>V>hd*U|0Xca z#Vx<%r7Ml@M*7-Mccy{8xeT$l+{{}4VVK43sQJiwv4`czdJhwjn;l7uSeF1pXEY@4 zy9Kh!eSVL8u)m0UJE%+3}2T!}PBYM*)xCH=`MLUGTJesCgR;ELPAS(r&a zozHsE?%aDx{HG(b@gY-CdEYX1n5pA7jMAQ96V)o7VG&2uO+?h~-GvqYd`t61;f|Hu z755l3^ePh@1qfX|)+YVPS2my-C}!-?b~}o?)sjh~Z2CK|;PO_FbV$A;{ej) z`^zdABfxoh9BP5qP{`lHM0z*(jnN7`Jqct-m@*kSC5MSq_V@N5OmDvb?M4x+6FU7z z*|&$cWBS$uY88cquZF~pn=pB7Ev$5}Es4~q%F~(EnnC$MBwwEw%@%9~`EDVm12*vU z!i|dkXX-bt+%iLauK#;m0V@5fuR2LLn`KUIW`>IcgcrdK{CH#*Ia&xmn)M?w_ZdJ? z6~504py!-sQmv>#4HSv6Clx@f48F3-)-p0fV!`o1=xQ=60))-bb-DXef3H{HZIECC zvFFs;fXl{64BwN>>-kx3HytCoPyq4nGX-!eNlO2Mu=lrFRWI+Y#8ZLXZZ}{NoIPHx z=zMW4BALi_N(OTK+<=i==1DV|;?f=Lq zFNai5Cg0VGvCutE9^xeI-f3i+^+{0wi$hwpt^viJ?BFZs8psa=tA=`)YWptiG6Qrt zH8c1zrGmio-4olsZ`w6yh~o!xh&DLd3cpZ)p{z!Uj(uhMX*=}tfd(1+9UZLNRNy3V za3B%@Ir}y;^stV9{qD5bqC1uTYG!5>B-mXjDBUrkDZHbY>>+1FMXXsL=;sHqf<+V{ ziJtOiQePeo?7RL2GL#e%pkM1;28F`p`sRx4gld77g^u#KoJVB9(Ihn*U5?nI@v89q z7jtzS94oA)*Gza!gLtcFUW!2x`pzFVG@Z!T@NyA*t<9A4m36L?3fz{bQ0!ESrNut4 z5t+4n1BGOT`cbswpy5Gj=+66&f9V6~1B%(}Rt%hBb3+V2Cql2DWBxFVtFW~lZ#am$ z^{;DJ{jq>+n+z=2Es-H2Wxh$GysZ{EwC2X%)R2ni{N~vXuQ5+mf1v{@cVohg^@cvH=3M zDTj^m;^4?l05q6@$`!n|(Eh8ao08wB7LrLfRowp=7u4O~ps27I0AL&eR)%^#-(1Sp z-S?>ayYk+DPihCC*M)#jSJ(-1^G*A@pXZqY_chCH7&z7hEAiH+9Z-7mVV?E>oeIz* zWmb(QCyVnAU^@m%>2%B)8TBwTVSS@;fnZ37$u-1@dOb{e%hEYmtSY3#=;7g(7+Q1~ zJwHDc8u{-!S`=P)AMVr3^4zx#|j%j zfb0uFk1CdKB6Ccz<&x+=Zp(^(tLeb%nD~Tb9;S9#1PtGTY*D*s+nf<|8)E-5nR0dk zhRU7h0XT}xB=oj~S=t5eo55nwz(K6{dr!>m5Ucd6l0ey3(b@ec%ijv-Mfo^D3S_EW zDYX>JHPwW`aE*J^O#e6LyZ6Z1@2>MS9r{!dfR!j2qUZ&TbW9`1b?{$iV7n$o4Dya? zeL%e(8pe;XfR@R2=s9tyAR}y~EcE1n2BMR+Ay1T07WrQDt=my*=kbnOtWbdgNjvP< zLusoW^)+^qXOq3xd^4%B6mwt&i*+YQ55BfuFAMzDpX#8AI$6jCS96u|TPnMU<{@4& zb(F2?rwu6yRP^2@{IRy=XhdmTzWe*oTJ^AEafHEY#LVMnBFX>6$NXtn0qSIAVX3h+&pI%d z81KhDtyK>Sst2%;vg4Pm#>;1*7}ll=LWiqS8%)vaKmb_?_S)-emSq80fRbo6i?~pF z2#$ANg2CpfKOad7ka8Ac<9HsRPMjsV6nN{E{zc3MHa0Zh$}IoC5eBG1OXWcrv_I>( zLNWL>?TQDj$v%{5$d6IN(HcR^O}?SEe~Tce3#}6sCy{}jw_q^uO7ikQSNrFSH~paP ze&lVax-@BaDTxqlK`)llDlCOY+AD6VPj$yVm!o%#7? zT$Q}j8+{Q^?vZz-@8Uw68-AycAI&Foy6UhRcJ2A-9jt#~&a#I`fcUqUQaLq=&?QCk|gF2Bz;&;dkw4l5~uIX33+wjZM7I8)AZ)Lqg-qnM* zHc@_ITuSD4gPJ2)dv~EgW%-;ZEhD>a*ymAQ4ZP~-KmE;JAD>|spn~`_$)O`Y8h!nz zUyWU%IJ#wXvh3n6{tza+H+_wt{+zL+Ur%fa=ahf$;sjknTvFtuyn;>=u!Lr2dVR1F zDWS>W(3|cN$3JQp>f)llZ5w*UH{H++b?sYO^iD>t4#qVo~%rhw|%k7c||z@m-tnk&eMnj%-}mfYUQWr2w3a&7Q3| z#=A8Uxs!)FJ0V{=A@8*jv3qZ}*5M9itRe)O8Phva?r&bj@lFh2j(+i$uZM72Jh9je z_B#L8Wiw^qktb~|93m?h4kdg{YA(Ip+!qpv!4ghcUEgQP=PQtvzp9R5hg}zfP&wJL zUiM(~*A0jJzCoE<>P)->Dm)^hv^Hk;LC*XdKoHuu+9b=Ie($u~*qD_1&?U=e&c<2% zdbJeoKCqdi3NoP;W%vF4MV3=6olVX-uWFF5!GG-;2!-G^fQ6l?|K5#p%HL5|0}!A$ z+LhbOy3FLgA9IvT(`UZAKV6}K(v`+I_sKuCb=LY8M^8ju8MHTqzecQR2?Jf7nBD0n z-^m%P$q$Zy2bvu%w(soSx^+lfsZS229W_(xcdP?VN?$(-Hw^#gr_!|5S=1eR>pOV^ z+zKF~9yFrF6!Gm7#u~!wx?u9XD@`IdGzKC*9&_d->fYau#UHgI0>~3xO(QFa zeF2~D%y{)CqnPY&Z!7pBWM8xhJmJDyM(ROncN(5+O-Q3_y#QRT^ZGV0@dC6|`_*6d z@%h&J_m66|%W`5CYa!H_M2{c6`#47Z^B@x!L)levJjR405e@^L9~*U0S2t%$>1GF} zyaWWZSRvl~E02Wat|N4yK*w|M?=4+wmTsb;nX;&%W%htpB?3>IZbcI7f*<6eApxa(cffXD7)6H85%3{ zeR24~inI;44HG#KcH?|Ck~bFujZT|c+vMtq73~3 ziWOvu9}Ww)V&HN=6(3M6(7^y_Z0_DbAc~cy3~lqT-NcPf#FUkx49)ZJsnWHl?xN5z zQZ&|KZA&SBH4X7)2li%sP6haYd!TutUU8BRc0834%vgB~c_<#)^46BAJRpic% zI~=i%!LUNOBMl5tYj2%$co4{bc;z)U33k%M0aGlVs!kIK&*|3a#d1MPiaq{~c>%PA zZ^1FAqiYmtkX69B-Z|~?H(2a_UpLUW09lL?{UU1C z*e?FE$#0S0y|&R85f14`tv!(xzF3`gpPfee?Z08EPiDVhulfU4YFyu9V34}E!wPh3w7Btg^JmLa|v%pM10^fy!aU=Ndj zaV<9j0I39-gV8^_^*u^LY!069WDm!baRYOVdyZ1CdQ<6!&O=x}~OXnEZ9O$^;mmo!M&#NAWy z=!ofDU%L$t=f4BcbW>_gWop)!bH4v-?mI>BD+k+GPGQ>5R{4E1qxBOti_pCF{(^@( z&%iH-YL{TWK^8dBHRK=!X!|uJg-Q8|5MGM#ch)SpMqGG!L$exbO{wEM`)2&$jg<$oC8N+AN<|g`HPUv(gwVomL=g; z(<8)Q(HNaBCJ^f;G+8(5=6+Sh-<2`t5`4vK`sUI{Z9@kAfpy7|zZzDcv+Q=}>5pp~tnYEMLpycItr+m@`GFPD~MH>_9UXgPRoW8uv*vCKtO&+R`W8N7Cinqvc{p;$dAyawPVPFqkEfu*A961PGIye?~)m? z|LqijfwVl1lSfeSz*s1^rG){qOCNZ+RD66etkh6jt_bPl#H;!56HqbQa<-LkmEw9e zNzzvwK!tkIv>neLZ%P7ijIASo+Y^e)z*iWO14rHAEsiyIR1qC;G*ykC=vo;hYb-Zn z2C-a0-(tel(NmQ}L=}EEVIaV=#E#&ij$eQ}& ztaaHm$p{W2bS@CJ&OuP-;4Y-sK}G|pBR;AFi)VaKiNogS;vu{VCj~YB$j&_dxTZJmpRV4#`$K30s*E-UJaDDRH75W3+k_w-?CJT_t zqOzaE40hHvNslakR#=LwrC(7RQHr9Y!_1?G zkXhBOvq-+99%L+4>w$T^Iq4Wjc(E|*TK}tM_6znf-!5sZIc2L4v(WbQq_(=fbEY%ZUu=9xUC#frX zGhewzcl%eg>CQesL7z`@>up2GUPKlFc~va9u3lJ#9PDXPk>p1*#bLN;%y9A-s+nDn z0`pOx?izFKMfbPOA?jmO@_h|hxbu%g4C?3MRyK$b*Z79J0G4UpJ?hkwo$Ju)^rs4 zKo*Okdy2g~pc%mV`BDjh1o-wcH`(N(=pLL<)x62N5J?GhXIP;dMc>ycp@r;xtmY8< zhGd#2a$>YdI>W$O1KYV(0<0KT=o!wFhKu1$V6gVpy~E79Nwp)r_!lwLqf84icgcwB zDeAGklv$j^h5ty{R1ZD1&PDuK=~pik4{c!q$9bP%&(Qa^bN7YGJ5bY4rsKmoicE)e?8VvM&AHwYAwcyRCXpDH~g|?Pn+HbCY{rN=z*jrvX zQQ~}R^|FyAi*v6LjwCKJQa^UT@ocU3*)4f-EwD{fV=wyXaVmXJwW8YksFpvW$T%_@;Lo7>p+rsHrc zc6;I|Owjb@B62w4^1){eWDYxA8Zr!ezKbt|r&(hjz-C_+8~fA?m|1dunKwYo)ih-_ zd)vMy_2E=Rf~VF-#MgWGZ=hc=E|{{KeXhSp0~*dtljuw?zg#7?dx;_}Am>YY7H)V+ z6dI3rB6;m9d#b|><_rt)vb;txJXW{0A{ye?NhS>}0=(zQYtGB59e;RM! z-~vrnncJ=3JC|9lkx4+lnxR4aZ1|d?&7DtYvh5l4v@8#me&!jB(e4=8>4g` zaZ5Z8ekEwyhkIt19IReS&Sc-%?9Cumd7UfGB>(5|ALQ4}m0S{Q$ zs;I|Y*wekgkl>BX23R-TKNAzC(O73%N(nPuAheWSCW)6_Q^pta1d zkTNAQ7kzC{2To7Lu8Iob~&9?$?_H&mYvF;aTkmp#9ah{&`InNuN-xTRVTYP9z9vFS!;WjP_no+&qfg9lsxy{;GX(A&* zfkfiboR)dX8hCW=Ho)dV<+;HS!y#nR|K{|@R;mR%*j^U^3z1wr%!@(eEy3OuE<#nGZmx4b@$9*jM*SPo zYDKa&acfW!JuuU9_Y&XH1TwHpDltulh&uSqNFHpJDMO?O*B2E)0|l*V`Ij{rW@>Kk}WVA{-J^tf3`)vNQo&Cz#TeVSDr0>gnmI z&RhF@p~M1s;c2OdN0pMBi*V4GWmMST52+;u)8-j|htZ^@m5wL;=IUWJ#1Ht|{(geh zs0BJK^wAT|kUw>h$h#{4M9xwV8o{~XkSQcWg(pqZkz_Y%rPGH3`*tjH`ry8PfBO5$ zRmSV1uL36@?VK;aZLf~{ntGh>a)Ep$e(Mvdcyb37xuu9$HUJY~dPpdY-%3debDXhX zGZtL>XYO1zk{JM(GT0R3o!L||`5+1$^9VWm%-9mTG#&OFjSYoWX}0q=N%WT?CY zLWa{ZThFU-5ZfJpL(X9jSUoU$>d%dcq;(~8j7%ny1~-V|?YVp)p843U|8eBAhW~t*LNW6QUx-uKQG>8SJ(;8k{NavIWr)`A6Lz|LOS1xA*GjLN7Q?V% z#P4UNMCmF_olmQg;?6L1m4QUEKEvBD788c7OCB5|l?EdOU2^ad_}3$~EWWc2c|?Vc=mNGg#;F z{3RHtYS|D*+F{VUqnZ}N_ZZ9h0)*21o#jVD{>`uO%@tq@_$pO``nGNnm&Dmg%rD)i z;?*b^L03Q0v+wE3vLJsF`XD#U^JF%&GzH?$1FZmUR#D zifl38KoE6mTAC}($rAn#a@%wllR0epp#Q5-XlrR zag_L1lOnam#Wrl0Lq`q8AoHHow{a5FKlbofxA@;*MOXS1kRowzA|j*?yIePOdDCha z7eyBkuS`g2$2gLqdM+z*9vLNX(a7C*CEF8(dP51|EXt6w&X4;*Gs|_Cvqr_U_0LGQW2~PKh#D%Ttp&Wl{x$#JYf4 zf-Ab~a)TCTp@V~as}31}+g*C1enr5N#Td4dluX(`#TXVCWU`m_ls2C{q*?4$Z%wR$ zg`AP`+a%u(?aq?&86vImlk{7OIhn>w9TC4wpZ|0NsoWVKXKU>S`$^* zSPtt39Y(H2=tRRYH~h!2dXS4mT5ym(54Y^o3r=4c0;1;)0G1I+hVIq_l_)PVQxai# z0Jr`}pTW?|LBTAp^V;z25Idkg_X{_+*h+?-damfKKdA2D?^Hx9rySg03j*Y4 z9}nS?=ltOyqoJZ_PKU&X794Ne#J&G5Wd_^3iG4{Io-F-s6r%;Dy9iY2#oPQ!z%Sqd ztP+1H;Q$@qxXegbuH8er17r+iYzlXkpx;VW-0Z?07q?2>p@ zsnEv-!Yqc1X?;anJzmqSM+qoJ0I^a(m)w}E5_Qrd)%^Y(&QHVH^MH2L- z;FSw>Mh$;__*(9iBNcx-A=|nY)I}?KNGH?A;6Dwmcb4+^2>~Q3xCEp=)MUy?3Kka1 zcNuWnifiXW9AlKGXn+)wr=5iv5d%YPvgSg(eoTRL#pT<>Tu8wk=>WSUoI*P7*pQ~l z>L`G{d*NYt*5Z4_&qqA`r8kTZC@;zNV52_RMRaSOSCf4eUY}V1gEYK?NsU5j2S?@ogLDpBZ|WI2kUh^YgT8>rJrw zpF)3VqlL~B`HIS%Q4Vi-Yf-#&N0~C!E@8x&cr9G$L8AahX_FizUpo8ns3Hds?1hzGMtZRCYU3{^y_4RL zL)e~b>Q}nd{$JpQotrCcF@&#ugxhlhJyYSdVo=D!s4^(A+m3LOB>6u(Awbi6Ma?#& zM)fGr07Mnb%ZRZ4Sw|)Jka#~%07!t(mgk_>uS^08ps0Igxw#aIr)r!_e{c|_DqpXK z1!TZ01(K#Qe+c&wVyb2E#Elz>!jHB8wG!0!4FFi(AhN-L>WBm)ZIgo9_duNy+T*&D zJ)?#}!;3Y`mQ7>MgDhF6CJuog+eo`^5-*PM`w27LAD-2__Y*U?Oq9I|5Xe0{bm#Y? zq*6-pA5T#`Cd93y@AJfE!1|A@)V-hyZ{G3&{(xpU;pxEPJR`9^JX>AdDDp?Q9h9Eo zJYNn%E+{`l>nA5yT*1gA`?OsH;+kukR)n;=9=j0s{9s9%B&OzbV3B{ zxD7d4G=?~!bLgKFTZV=X;Wzt?@Co_1NM~MvPcr@Hv%`1MRdsT^fcqzs!|}*)@t<0&8L~3{vwl&UpKPtDfnEy< z;41$~x-0E`IxThJF4FFQYLoajpB!H5l}GB*NG2*bodN&SEuF4%6mORJuJXW=yjR+* zb*V2D8Xr$cfwClja^-)aPE2eA-#m=EV3nuJM^b?pcmIs2x5fi+89GyFb~0Z>}~+!-9+ddc!Dt zHhZqGVsh$fv8AdPs0aELMV2!HwqYEA9)$#n@7S&;=d~mESwZ|&U_kb4Q4JHgK|($X zI$1XmpCtfL$)kfq?Yk+9I0Rv6uhbpVeW}{1WWBM2&3d&GIF<~3lIvw8xF@G8D=4u} z4}1deBD|a*l?RhJ^j^S4nhK<1&QJpLgG^m^(rbExZRs+wS3A^C7y%zsyBg<{+p|;1 z7YU9~AwK2Jk;h1`|z0 zTm~0(ke_?2>+4(v1lWaty2h#@?6n4%k$R5sr0 zA}tQ~L^NDvLhwmVZToNioU$9=lm^1iH7R;r^^z0U(&9|Eh_bnY_CZTiH~9p}1xohX z)ci)>xIcw-4Lsi4yE5BTg*@VDZoi=-5zu(QIboVK7mz3yGUtum7P5}n+la)`qF313 zP!+cXuCP_AP+6X))<;{rk5mp!{YvQezzKU>8Y9o@=2PyoVyaXrfP>mr)$0@XU`U)lA#eDUb-+ zBIvL|IKuGJXHmlxypNDR1y+Z>zOFIyBQ_d3^lAThE2@s%=Cb|ML1w^|dRd+;`jOP1 zxrzugaBY3rlP9h-gS9uR@8+&Du0VBIv>3L+&IY8cA04)5iW^j*#M>kQZ`XYe>+&G8 zu5aqm7{=uiSn_})lH_K4tI1l*t?3SQ4POxei7Ck^w;wTn9}S3jPWl{936g5ai%%#fSZC>K z-2afpi5)(`|7;R~Fx&SdEJ0&L*S3?6CnxyYAsty_7I^;+OH7MN=W;DZVFW;mXq} z+*ys^OyE_A^oex+3XWfI%CR2TqE88(=`0KHTsb36hD@}L!M%%Ito_6yb=p2!M1SYo z%-@M`1@jEt8f1mq#%g_UkeID=j{Ed63O=F$l z&v_0<=`HK&)gB>vx0s7VG10Eg0&iW`%)C*DuN%9}X#RYm*H}6Ws{8s?7oQAkpN34; zC72{!P(H1E%mri=N#EL~AmJ^3~IF5R`Uv({-oqyn1V$*%goUpnj| yd*_RoIYWO^RKEhTw%$`S`i%VG|J~)-Mxu%ZtV=Psp<`XprK4qVqx`yk#Qy=AR)anO literal 0 HcmV?d00001 diff --git a/Projects/Governance/Icons/pool.png b/Projects/Governance/Icons/pool.png new file mode 100644 index 0000000000000000000000000000000000000000..14bfad9d7f605ba7ef0186f4895e8f2fc20eab59 GIT binary patch literal 16716 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 literal 0 HcmV?d00001 diff --git a/Projects/Governance/Icons/pools.png b/Projects/Governance/Icons/pools.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e46d9a4afbe1e71cfeb1114faf9ac69e5d86e9 GIT binary patch literal 5719 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 Mo18c1+i(*87xDWJng9R* literal 0 HcmV?d00001 diff --git a/Projects/Governance/Schemas/App-Schema/asset-vote.json b/Projects/Governance/Schemas/App-Schema/asset-weight-vote.json similarity index 100% rename from Projects/Governance/Schemas/App-Schema/asset-vote.json rename to Projects/Governance/Schemas/App-Schema/asset-weight-vote.json diff --git a/Projects/Governance/Schemas/App-Schema/asset.json b/Projects/Governance/Schemas/App-Schema/asset.json index 4a982e0b2..5209c2fb0 100644 --- a/Projects/Governance/Schemas/App-Schema/asset.json +++ b/Projects/Governance/Schemas/App-Schema/asset.json @@ -34,16 +34,13 @@ "config": true }, "initialValues": { - "config": "{\n \"description\": \"\", \"relativeWeight\": 0 \n}" + "config": "{\n \"description\": \"\" \n}" }, "addLeftIcons": true, "level": 2, "attachingRules": { "compatibleTypes": "->Asset Class->Asset->" }, - "referencingRules": { - "compatibleTypes": "->Team->Position->" - }, "propertyNameAtParent": "assets", "childrenNodesProperties": [ { diff --git a/Projects/Governance/Schemas/App-Schema/assets.json b/Projects/Governance/Schemas/App-Schema/assets.json index 1f986969d..899e739a1 100644 --- a/Projects/Governance/Schemas/App-Schema/assets.json +++ b/Projects/Governance/Schemas/App-Schema/assets.json @@ -25,10 +25,7 @@ ], "isHierarchyHead": true, "addLeftIcons": true, - "level": 1, - "attachingRules": { - "compatibleTypes": "->Superalgos Release->" - }, + "level": 0, "childrenNodesProperties": [ { "name": "assetClasses", diff --git a/Projects/Governance/Schemas/App-Schema/feature-vote.json b/Projects/Governance/Schemas/App-Schema/feature-weight-vote.json similarity index 100% rename from Projects/Governance/Schemas/App-Schema/feature-vote.json rename to Projects/Governance/Schemas/App-Schema/feature-weight-vote.json diff --git a/Projects/Governance/Schemas/App-Schema/feature.json b/Projects/Governance/Schemas/App-Schema/feature.json index 20f539b60..f2e4fdf4e 100644 --- a/Projects/Governance/Schemas/App-Schema/feature.json +++ b/Projects/Governance/Schemas/App-Schema/feature.json @@ -34,16 +34,13 @@ "config": true }, "initialValues": { - "config": "{\n \"description\": \"\", \"relativeWeight\": 0 \n}" + "config": "{\n \"description\": \"\" \n}" }, "addLeftIcons": true, "level": 2, "attachingRules": { "compatibleTypes": "->Feature Class->Feature->" }, - "referencingRules": { - "compatibleTypes": "->Team->Position->" - }, "propertyNameAtParent": "features", "childrenNodesProperties": [ { diff --git a/Projects/Governance/Schemas/App-Schema/features.json b/Projects/Governance/Schemas/App-Schema/features.json index 4c627c4db..fe2ae1110 100644 --- a/Projects/Governance/Schemas/App-Schema/features.json +++ b/Projects/Governance/Schemas/App-Schema/features.json @@ -25,10 +25,7 @@ ], "isHierarchyHead": true, "addLeftIcons": true, - "level": 1, - "attachingRules": { - "compatibleTypes": "->Superalgos Release->" - }, + "level": 0, "childrenNodesProperties": [ { "name": "featureClasses", diff --git a/Projects/Governance/Schemas/App-Schema/governance-project.json b/Projects/Governance/Schemas/App-Schema/governance-project.json index 6d16e914d..18228bc6c 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-project.json +++ b/Projects/Governance/Schemas/App-Schema/governance-project.json @@ -1,6 +1,12 @@ { "type": "Governance Project", "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Pools", + "relatedUiObject": "Pools", + "actionFunction": "payload.executeAction" + }, { "action": "Add UI Object", "label": "Add Assets", @@ -15,8 +21,8 @@ }, { "action": "Add UI Object", - "label": "Add Oranization Chart", - "relatedUiObject": "Oranization Chart", + "label": "Add Organization Chart", + "relatedUiObject": "Organization Chart", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Governance/Schemas/App-Schema/governance-structure.json b/Projects/Governance/Schemas/App-Schema/organization-chart.json similarity index 69% rename from Projects/Governance/Schemas/App-Schema/governance-structure.json rename to Projects/Governance/Schemas/App-Schema/organization-chart.json index 90faa2fac..7b4146af4 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-structure.json +++ b/Projects/Governance/Schemas/App-Schema/organization-chart.json @@ -1,6 +1,12 @@ { - "type": "Oranization Chart", + "type": "Organization Chart", "menuItems": [ + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Team", + "relatedUiObject": "Team" + }, { "action": "Add UI Object", "label": "Add Position", @@ -17,11 +23,16 @@ "actionFunction": "payload.executeAction" } ], - "isTitleAllwaysVisible": false, "isHierarchyHead": true, "addLeftIcons": true, "level": 0, "childrenNodesProperties": [ + { + "name": "teams", + "type": "array", + "childType": "Team", + "autoAdd": false + }, { "name": "positions", "type": "array", diff --git a/Projects/Governance/Schemas/App-Schema/pool-class.json b/Projects/Governance/Schemas/App-Schema/pool-class.json new file mode 100644 index 000000000..8d525e812 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/pool-class.json @@ -0,0 +1,62 @@ +{ + "type": "Pool Class", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Pool Class", + "relatedUiObject": "Pool Class" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Pool", + "relatedUiObject": "Pool" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"description\": \"\", \"relativeWeight\": 0 \n}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Pools->Pool Class->" + }, + "referencingRules": { + "compatibleTypes": "->Team->Position->" + }, + "propertyNameAtParent": "poolClasses", + "childrenNodesProperties": [ + { + "name": "poolClasses", + "type": "array", + "childType": "Pool Class", + "autoAdd": false + }, + { + "name": "pools", + "type": "array", + "childType": "Pool", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/pool-weight-vote.json b/Projects/Governance/Schemas/App-Schema/pool-weight-vote.json new file mode 100644 index 000000000..d10f0e9a2 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/pool-weight-vote.json @@ -0,0 +1,42 @@ +{ + "type": "Pool Weight Vote", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "title": [ + "Use Reference Parent Parent Parent Parent", + "Use Reference Parent Parent Parent", + "Use Reference Parent Parent", + "Use Reference Parent" + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"description\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Votes Switch->" + }, + "referencingRules": { + "compatibleTypes": "->Pool Class->Pool->" + }, + "propertyNameAtParent": "poolWeightVotes" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/pool.json b/Projects/Governance/Schemas/App-Schema/pool.json new file mode 100644 index 000000000..8d8919fb9 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/pool.json @@ -0,0 +1,62 @@ +{ + "type": "Pool", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Pool Class", + "relatedUiObject": "Pool Class" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Pool", + "relatedUiObject": "Pool" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"description\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Pool Class->Pool->" + }, + "referencingRules": { + "compatibleTypes": "->Organization Chart->Assets->Features->" + }, + "propertyNameAtParent": "pools", + "childrenNodesProperties": [ + { + "name": "poolClasses", + "type": "array", + "childType": "Pool Class", + "autoAdd": false + }, + { + "name": "pools", + "type": "array", + "childType": "Pool", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/pools.json b/Projects/Governance/Schemas/App-Schema/pools.json new file mode 100644 index 000000000..bdecce6f7 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/pools.json @@ -0,0 +1,56 @@ +{ + "type": "Pools", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Pool Class", + "relatedUiObject": "Pool Class" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Pool", + "relatedUiObject": "Pool" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n \"token\": \"\"\n}" + }, + "isHierarchyHead": true, + "addLeftIcons": true, + "level": 0, + "childrenNodesProperties": [ + { + "name": "poolClasses", + "type": "array", + "childType": "Pool Class", + "autoAdd": false + }, + { + "name": "pools", + "type": "array", + "childType": "Pool", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/ranking-vote.json b/Projects/Governance/Schemas/App-Schema/position-weight-vote.json similarity index 100% rename from Projects/Governance/Schemas/App-Schema/ranking-vote.json rename to Projects/Governance/Schemas/App-Schema/position-weight-vote.json diff --git a/Projects/Governance/Schemas/App-Schema/ranking-position.json b/Projects/Governance/Schemas/App-Schema/position.json similarity index 91% rename from Projects/Governance/Schemas/App-Schema/ranking-position.json rename to Projects/Governance/Schemas/App-Schema/position.json index a76d6f507..e1bdf712b 100644 --- a/Projects/Governance/Schemas/App-Schema/ranking-position.json +++ b/Projects/Governance/Schemas/App-Schema/position.json @@ -34,12 +34,12 @@ "config": true }, "initialValues": { - "config": "{\n \"description\": \"\", \"relativeWeight\": 0 \n}" + "config": "{\n \"description\": \"\" \n}" }, "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Oranization Chart->Position->Team->" + "compatibleTypes": "->Organization Chart->Position->Team->" }, "propertyNameAtParent": "positions", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/user-vote.json b/Projects/Governance/Schemas/App-Schema/user-vote-transfer.json similarity index 100% rename from Projects/Governance/Schemas/App-Schema/user-vote.json rename to Projects/Governance/Schemas/App-Schema/user-vote-transfer.json diff --git a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js index 3b39944a8..89c2a3161 100644 --- a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js +++ b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObjectTitle.js @@ -122,7 +122,7 @@ function newUiObjectTitle() { } case 'Use Reference Parent Type': { let nodeToUse = thisObject.payload.node.payload.referenceParent - if (nodeToUse !== undefined && nodeToUse.payload !== undefined && nodeToUse.payload.node.name !== "New " + nodeToUse.payload.node.type && nodeToUse.payload.node.name !== "My " + nodeToUse.payload.node.type) { + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.type thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.type } From 4186fac70695d16fc39d5a4d47108384a3c4bcc7 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 4 Jun 2021 00:21:27 +0200 Subject: [PATCH 11/11] Pools Implemented --- .../{pool-class.png => tokens-switch.png} | Bin .../Schemas/App-Schema/asset-class.json | 2 +- .../App-Schema/contribution-claims.json | 8 +- .../Schemas/App-Schema/feature-class.json | 2 +- .../App-Schema/governance-project.json | 4 +- .../Schemas/App-Schema/pool-class.json | 16 +- .../Schemas/App-Schema/pool-weight-vote.json | 8 +- .../Governance/Schemas/App-Schema/pool.json | 12 +- .../Governance/Schemas/App-Schema/pools.json | 8 +- ...aim-vote.json => position-claim-vote.json} | 6 +- .../{team.json => position-class.json} | 14 +- ....json => position-contribution-claim.json} | 6 +- ...son => position-contributions-folder.json} | 22 +-- .../App-Schema/position-weight-vote.json | 2 +- .../Schemas/App-Schema/position.json | 10 +- ...organization-chart.json => positions.json} | 10 +- .../Schemas/App-Schema/votes-switch.json | 20 +- .../UI/Spaces/Features-Space/Features.js | 2 +- .../Governance/UI/Spaces/Pools-Space/Pools.js | 185 ++++++++++++++++++ .../Positions.js} | 6 +- .../Spaces/User-Profile-Space/UserProfile.js | 21 +- Projects/ProjectsSchema.json | 29 ++- 22 files changed, 308 insertions(+), 85 deletions(-) rename Projects/Governance/Icons/{pool-class.png => tokens-switch.png} (100%) rename Projects/Governance/Schemas/App-Schema/{time-claim-vote.json => position-claim-vote.json} (87%) rename Projects/Governance/Schemas/App-Schema/{team.json => position-class.json} (82%) rename Projects/Governance/Schemas/App-Schema/{time-contribution-claim.json => position-contribution-claim.json} (85%) rename Projects/Governance/Schemas/App-Schema/{time-contributions-folder.json => position-contributions-folder.json} (65%) rename Projects/Governance/Schemas/App-Schema/{organization-chart.json => positions.json} (83%) create mode 100644 Projects/Governance/UI/Spaces/Pools-Space/Pools.js rename Projects/Governance/UI/Spaces/{Ranking-Space/Ranking.js => Positions-Space/Positions.js} (90%) diff --git a/Projects/Governance/Icons/pool-class.png b/Projects/Governance/Icons/tokens-switch.png similarity index 100% rename from Projects/Governance/Icons/pool-class.png rename to Projects/Governance/Icons/tokens-switch.png diff --git a/Projects/Governance/Schemas/App-Schema/asset-class.json b/Projects/Governance/Schemas/App-Schema/asset-class.json index e8886ceb7..b81dc371e 100644 --- a/Projects/Governance/Schemas/App-Schema/asset-class.json +++ b/Projects/Governance/Schemas/App-Schema/asset-class.json @@ -42,7 +42,7 @@ "compatibleTypes": "->Assets->Asset Class->" }, "referencingRules": { - "compatibleTypes": "->Team->Position->" + "compatibleTypes": "->Position Class->Position->" }, "propertyNameAtParent": "assetClasses", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/contribution-claims.json b/Projects/Governance/Schemas/App-Schema/contribution-claims.json index 2b98dcc43..93b8bcf82 100644 --- a/Projects/Governance/Schemas/App-Schema/contribution-claims.json +++ b/Projects/Governance/Schemas/App-Schema/contribution-claims.json @@ -23,8 +23,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Time Contributions Folder", - "relatedUiObject": "Time Contributions Folder" + "label": "Add Position Contributions Folder", + "relatedUiObject": "Position Contributions Folder" }, { "action": "Delete UI Object", @@ -62,9 +62,9 @@ "autoAdd": false }, { - "name": "timeContributionsFolder", + "name": "positionContributionsFolder", "type": "array", - "childType": "Time Contributions Folder", + "childType": "Position Contributions Folder", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/feature-class.json b/Projects/Governance/Schemas/App-Schema/feature-class.json index 3e0b3d793..109110a9d 100644 --- a/Projects/Governance/Schemas/App-Schema/feature-class.json +++ b/Projects/Governance/Schemas/App-Schema/feature-class.json @@ -42,7 +42,7 @@ "compatibleTypes": "->Features->Feature Class->" }, "referencingRules": { - "compatibleTypes": "->Team->Position->" + "compatibleTypes": "->Position Class->Position->" }, "propertyNameAtParent": "featureClasses", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/governance-project.json b/Projects/Governance/Schemas/App-Schema/governance-project.json index 18228bc6c..cb0f41e9c 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-project.json +++ b/Projects/Governance/Schemas/App-Schema/governance-project.json @@ -21,8 +21,8 @@ }, { "action": "Add UI Object", - "label": "Add Organization Chart", - "relatedUiObject": "Organization Chart", + "label": "Add Positions", + "relatedUiObject": "Positions", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Governance/Schemas/App-Schema/pool-class.json b/Projects/Governance/Schemas/App-Schema/pool-class.json index 8d525e812..84e4ff7b1 100644 --- a/Projects/Governance/Schemas/App-Schema/pool-class.json +++ b/Projects/Governance/Schemas/App-Schema/pool-class.json @@ -1,5 +1,5 @@ { - "type": "Pool Class", + "type": "Tokens Switch", "menuItems": [ { "action": "Configure", @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Pool Class", - "relatedUiObject": "Pool Class" + "label": "Add Tokens Switch", + "relatedUiObject": "Tokens Switch" }, { "action": "Add UI Object", @@ -39,17 +39,17 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Pools->Pool Class->" + "compatibleTypes": "->Pools->Tokens Switch->" }, "referencingRules": { - "compatibleTypes": "->Team->Position->" + "compatibleTypes": "->Position Class->Position->" }, - "propertyNameAtParent": "poolClasses", + "propertyNameAtParent": "tokensSwitches", "childrenNodesProperties": [ { - "name": "poolClasses", + "name": "tokensSwitches", "type": "array", - "childType": "Pool Class", + "childType": "Tokens Switch", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/pool-weight-vote.json b/Projects/Governance/Schemas/App-Schema/pool-weight-vote.json index d10f0e9a2..05a8deeeb 100644 --- a/Projects/Governance/Schemas/App-Schema/pool-weight-vote.json +++ b/Projects/Governance/Schemas/App-Schema/pool-weight-vote.json @@ -19,10 +19,8 @@ } ], "title": [ - "Use Reference Parent Parent Parent Parent", - "Use Reference Parent Parent Parent", - "Use Reference Parent Parent", - "Use Reference Parent" + "Use Reference Parent", + "Use Reference Parent Type" ], "editors": { "config": true @@ -36,7 +34,7 @@ "compatibleTypes": "->Votes Switch->" }, "referencingRules": { - "compatibleTypes": "->Pool Class->Pool->" + "compatibleTypes": "->Tokens Switch->Pool->" }, "propertyNameAtParent": "poolWeightVotes" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/pool.json b/Projects/Governance/Schemas/App-Schema/pool.json index 8d8919fb9..8eb58308d 100644 --- a/Projects/Governance/Schemas/App-Schema/pool.json +++ b/Projects/Governance/Schemas/App-Schema/pool.json @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Pool Class", - "relatedUiObject": "Pool Class" + "label": "Add Tokens Switch", + "relatedUiObject": "Tokens Switch" }, { "action": "Add UI Object", @@ -39,17 +39,17 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Pool Class->Pool->" + "compatibleTypes": "->Tokens Switch->Pool->" }, "referencingRules": { - "compatibleTypes": "->Organization Chart->Assets->Features->" + "compatibleTypes": "->Positions->Assets->Features->" }, "propertyNameAtParent": "pools", "childrenNodesProperties": [ { - "name": "poolClasses", + "name": "tokensSwitches", "type": "array", - "childType": "Pool Class", + "childType": "Tokens Switch", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/pools.json b/Projects/Governance/Schemas/App-Schema/pools.json index bdecce6f7..6f0c78625 100644 --- a/Projects/Governance/Schemas/App-Schema/pools.json +++ b/Projects/Governance/Schemas/App-Schema/pools.json @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Pool Class", - "relatedUiObject": "Pool Class" + "label": "Add Tokens Switch", + "relatedUiObject": "Tokens Switch" }, { "action": "Add UI Object", @@ -41,9 +41,9 @@ "level": 0, "childrenNodesProperties": [ { - "name": "poolClasses", + "name": "tokensSwitches", "type": "array", - "childType": "Pool Class", + "childType": "Tokens Switch", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/time-claim-vote.json b/Projects/Governance/Schemas/App-Schema/position-claim-vote.json similarity index 87% rename from Projects/Governance/Schemas/App-Schema/time-claim-vote.json rename to Projects/Governance/Schemas/App-Schema/position-claim-vote.json index 98e88627e..b77163f27 100644 --- a/Projects/Governance/Schemas/App-Schema/time-claim-vote.json +++ b/Projects/Governance/Schemas/App-Schema/position-claim-vote.json @@ -1,5 +1,5 @@ { - "type": "Time Claim Vote", + "type": "Position Claim Vote", "menuItems": [ { "action": "Configure", @@ -34,8 +34,8 @@ "compatibleTypes": "->Votes Switch->" }, "referencingRules": { - "compatibleTypes": "->Time Contribution Claim->" + "compatibleTypes": "->Position Contribution Claim->" }, - "propertyNameAtParent": "timeClaimVotes", + "propertyNameAtParent": "positionClaimVotes", "icon": "dogecoin" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/team.json b/Projects/Governance/Schemas/App-Schema/position-class.json similarity index 82% rename from Projects/Governance/Schemas/App-Schema/team.json rename to Projects/Governance/Schemas/App-Schema/position-class.json index ba78b6814..78c6c07d9 100644 --- a/Projects/Governance/Schemas/App-Schema/team.json +++ b/Projects/Governance/Schemas/App-Schema/position-class.json @@ -1,5 +1,5 @@ { - "type": "Team", + "type": "Position Class", "menuItems": [ { "action": "Configure", @@ -17,8 +17,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Team", - "relatedUiObject": "Team" + "label": "Add Position Class", + "relatedUiObject": "Position Class" }, { "action": "Delete UI Object", @@ -39,9 +39,9 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Position->Team->" + "compatibleTypes": "->Position->Position Class->" }, - "propertyNameAtParent": "teams", + "propertyNameAtParent": "positionClasss", "childrenNodesProperties": [ { "name": "positions", @@ -50,9 +50,9 @@ "autoAdd": false }, { - "name": "teams", + "name": "positionClasss", "type": "array", - "childType": "Team", + "childType": "Position Class", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json b/Projects/Governance/Schemas/App-Schema/position-contribution-claim.json similarity index 85% rename from Projects/Governance/Schemas/App-Schema/time-contribution-claim.json rename to Projects/Governance/Schemas/App-Schema/position-contribution-claim.json index 38560df9f..b6010510f 100644 --- a/Projects/Governance/Schemas/App-Schema/time-contribution-claim.json +++ b/Projects/Governance/Schemas/App-Schema/position-contribution-claim.json @@ -1,5 +1,5 @@ { - "type": "Time Contribution Claim", + "type": "Position Contribution Claim", "menuItems": [ { "action": "Configure", @@ -31,11 +31,11 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Time Contributions Folder->" + "compatibleTypes": "->Position Contributions Folder->" }, "referencingRules": { "compatibleTypes": "->Position->" }, - "propertyNameAtParent": "timeContributionClaims", + "propertyNameAtParent": "positionContributionClaims", "icon": "dogecoin" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/time-contributions-folder.json b/Projects/Governance/Schemas/App-Schema/position-contributions-folder.json similarity index 65% rename from Projects/Governance/Schemas/App-Schema/time-contributions-folder.json rename to Projects/Governance/Schemas/App-Schema/position-contributions-folder.json index 47ec677ce..8f449997c 100644 --- a/Projects/Governance/Schemas/App-Schema/time-contributions-folder.json +++ b/Projects/Governance/Schemas/App-Schema/position-contributions-folder.json @@ -1,5 +1,5 @@ { - "type": "Time Contributions Folder", + "type": "Position Contributions Folder", "menuItems": [ { "action": "Configure", @@ -11,14 +11,14 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Time Contributions Folder", - "relatedUiObject": "Time Contributions Folder" + "label": "Add Position Contributions Folder", + "relatedUiObject": "Position Contributions Folder" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Time Contribution Claim", - "relatedUiObject": "Time Contribution Claim" + "label": "Add Position Contribution Claim", + "relatedUiObject": "Position Contribution Claim" }, { "action": "Delete UI Object", @@ -39,20 +39,20 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Contribution Claims->Time Contributions Folder->" + "compatibleTypes": "->Contribution Claims->Position Contributions Folder->" }, - "propertyNameAtParent": "timeContributionsFolder", + "propertyNameAtParent": "positionContributionsFolder", "childrenNodesProperties": [ { - "name": "timeContributionsFolder", + "name": "positionContributionsFolder", "type": "array", - "childType": "Time Contributions Folder", + "childType": "Position Contributions Folder", "autoAdd": false }, { - "name": "timeContributionClaims", + "name": "positionContributionClaims", "type": "array", - "childType": "Time Contribution Claim", + "childType": "Position Contribution Claim", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/position-weight-vote.json b/Projects/Governance/Schemas/App-Schema/position-weight-vote.json index 0a3cc724c..c1cb72fc8 100644 --- a/Projects/Governance/Schemas/App-Schema/position-weight-vote.json +++ b/Projects/Governance/Schemas/App-Schema/position-weight-vote.json @@ -34,7 +34,7 @@ "compatibleTypes": "->Votes Switch->" }, "referencingRules": { - "compatibleTypes": "->Team->Position->" + "compatibleTypes": "->Position Class->Position->" }, "propertyNameAtParent": "positionWeightVotes", "icon": "bitfinex" diff --git a/Projects/Governance/Schemas/App-Schema/position.json b/Projects/Governance/Schemas/App-Schema/position.json index e1bdf712b..36a2bcac5 100644 --- a/Projects/Governance/Schemas/App-Schema/position.json +++ b/Projects/Governance/Schemas/App-Schema/position.json @@ -17,8 +17,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Team", - "relatedUiObject": "Team" + "label": "Add Position Class", + "relatedUiObject": "Position Class" }, { "action": "Delete UI Object", @@ -39,7 +39,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Organization Chart->Position->Team->" + "compatibleTypes": "->Positions->Position->Position Class->" }, "propertyNameAtParent": "positions", "childrenNodesProperties": [ @@ -50,9 +50,9 @@ "autoAdd": false }, { - "name": "teams", + "name": "positionClasss", "type": "array", - "childType": "Team", + "childType": "Position Class", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/organization-chart.json b/Projects/Governance/Schemas/App-Schema/positions.json similarity index 83% rename from Projects/Governance/Schemas/App-Schema/organization-chart.json rename to Projects/Governance/Schemas/App-Schema/positions.json index 7b4146af4..f8b062da9 100644 --- a/Projects/Governance/Schemas/App-Schema/organization-chart.json +++ b/Projects/Governance/Schemas/App-Schema/positions.json @@ -1,11 +1,11 @@ { - "type": "Organization Chart", + "type": "Positions", "menuItems": [ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Team", - "relatedUiObject": "Team" + "label": "Add Position Class", + "relatedUiObject": "Position Class" }, { "action": "Add UI Object", @@ -28,9 +28,9 @@ "level": 0, "childrenNodesProperties": [ { - "name": "teams", + "name": "positionClasss", "type": "array", - "childType": "Team", + "childType": "Position Class", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/votes-switch.json b/Projects/Governance/Schemas/App-Schema/votes-switch.json index 316420ac6..4f4c0fd66 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-switch.json +++ b/Projects/Governance/Schemas/App-Schema/votes-switch.json @@ -14,6 +14,12 @@ "label": "Add Votes Switch", "relatedUiObject": "Votes Switch" }, + { + "action": "Add UI Object", + "actionFunction": "payload.executeAction", + "label": "Add Pool Weight Vote", + "relatedUiObject": "Pool Weight Vote" + }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", @@ -35,8 +41,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Time Claim Vote", - "relatedUiObject": "Time Claim Vote" + "label": "Add Position Claim Vote", + "relatedUiObject": "Position Claim Vote" }, { "action": "Add UI Object", @@ -85,6 +91,12 @@ "childType": "Votes Switch", "autoAdd": false }, + { + "name": "poolWeightVotes", + "type": "array", + "childType": "Pool Weight Vote", + "autoAdd": false + }, { "name": "assetWeightVotes", "type": "array", @@ -98,9 +110,9 @@ "autoAdd": false }, { - "name": "timeClaimVotes", + "name": "positionClaimVotes", "type": "array", - "childType": "Time Claim Vote", + "childType": "Position Claim Vote", "autoAdd": false }, { diff --git a/Projects/Governance/UI/Spaces/Features-Space/Features.js b/Projects/Governance/UI/Spaces/Features-Space/Features.js index 2f67fa2e5..3573a4dca 100644 --- a/Projects/Governance/UI/Spaces/Features-Space/Features.js +++ b/Projects/Governance/UI/Spaces/Features-Space/Features.js @@ -1,4 +1,4 @@ -function newGovernanceUserFeaturesSpace() { +function newGovernanceFeaturesSpace() { const MODULE_NAME = 'Features Space' let thisObject = { diff --git a/Projects/Governance/UI/Spaces/Pools-Space/Pools.js b/Projects/Governance/UI/Spaces/Pools-Space/Pools.js new file mode 100644 index 000000000..d4fc6b3ae --- /dev/null +++ b/Projects/Governance/UI/Spaces/Pools-Space/Pools.js @@ -0,0 +1,185 @@ +function newGovernancePoolsSpace() { + const MODULE_NAME = 'Pool Space' + + let thisObject = { + container: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + finalize: finalize, + initialize: initialize + } + + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + + return thisObject + + function initialize() { + + } + + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + } + + function getContainer(point) { + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + thisObject.container.space = MODULE_NAME + return thisObject.container + } else { + return undefined + } + } + + function physics() { + if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } + + let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') + + /* + We will first reset all the token flows, and then distribute it. + */ + for (let i = 0; i < pools.length; i++) { + let poolsNode = pools[i] + poolsReset(poolsNode) + } + for (let i = 0; i < pools.length; i++) { + let poolsNode = pools[i] + poolsDistribute(poolsNode) + } + } + + function poolsReset(pools) { + resetTokenFlow(pools) + } + + function poolsDistribute(pools) { + let tokenFlow = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(pools.payload, 'tokens') + distributeTokenFlow(pools, tokenFlow) + } + + function resetTokenFlow(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.tokenFlow = 0 + /* + If there is a reference parent defined, this means that the token flow is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + resetTokenFlow(node.payload.referenceParent) + return + } + /* + When we reach certain node types, we will halt the distribution, because thse are targets for + token flow. + */ + if ( + node.type === 'Position' || + node.type === 'Asset' || + node.type === 'Feature' + ) { return } + /* + If there is no reference parent we will redistribute token flow among children. + */ + 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] + + switch (property.type) { + case 'node': { + if (node.type === 'Pools' && property.name === "votesDistribution") { + let childNode = node[property.name] + resetTokenFlow(childNode) + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + resetTokenFlow(childNode) + } + } + break + } + } + } + } + } + + function distributeTokenFlow(node, tokenFlow) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.tokenFlow = node.payload.tokenFlow + tokenFlow + drawTokenFlow(node, node.payload.tokenFlow) + /* + If there is a reference parent defined, this means that the token flow is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + distributeTokenFlow(node.payload.referenceParent, tokenFlow) + return + } + /* + When we reach certain node types, we will halt the distribution, because thse are targets for + token flow. + */ + if ( + node.type === 'Asset' || + node.type === 'Feature' + ) { return } + /* + If there is no reference parent we will redistribute token flow among children. + */ + 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] + + switch (property.type) { + case 'node': { + if (node.type === 'Pools' && property.name === "votesDistribution") { + let childNode = node[property.name] + distributeTokenFlow(childNode, tokenFlow) + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + distributeTokenFlow(childNode, tokenFlow / propertyArray.length) + } + } + break + } + } + } + } + } + + function drawTokenFlow(node, tokenFlow) { + tokenFlow = new Intl.NumberFormat().format(tokenFlow) + ' ' + 'SA Tokens' + if (node.payload !== undefined) { + if (node.type === 'Pools') { + return + } + node.payload.uiObject.setStatus(tokenFlow) + } + } + + function draw() { + + } +} diff --git a/Projects/Governance/UI/Spaces/Ranking-Space/Ranking.js b/Projects/Governance/UI/Spaces/Positions-Space/Positions.js similarity index 90% rename from Projects/Governance/UI/Spaces/Ranking-Space/Ranking.js rename to Projects/Governance/UI/Spaces/Positions-Space/Positions.js index f797e8ac4..f6407b32c 100644 --- a/Projects/Governance/UI/Spaces/Ranking-Space/Ranking.js +++ b/Projects/Governance/UI/Spaces/Positions-Space/Positions.js @@ -1,5 +1,5 @@ -function newGovernanceRankingSpace() { - const MODULE_NAME = 'Ranking Space' +function newGovernancePositionsSpace() { + const MODULE_NAME = 'Positions Space' let thisObject = { container: undefined, @@ -27,7 +27,7 @@ function newGovernanceRankingSpace() { } function physics() { - + } function getContainer(point) { diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index c25dce817..8fe109aa6 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -175,13 +175,28 @@ function newGovernanceUserProfileSpace() { } function drawVotingPower(node, votingPower) { - votingPower = new Intl.NumberFormat().format(votingPower) + ' ' + 'SA' + votingPower = new Intl.NumberFormat().format(votingPower) + ' ' + 'Votes' if (node.payload !== undefined) { if (node.type === 'User Profile') { return } - node.payload.uiObject.valueAngleOffset = 180 - node.payload.uiObject.valueAtAngle = true + if ( + node.type === 'Position' || + node.type === 'Position Class' || + node.type === 'Pool' || + node.type === 'Tokens Switch' || + node.type === 'Asset' || + node.type === 'Asset Class' || + node.type === 'Feature' || + node.type === 'Feature Class' + ) { + node.payload.uiObject.valueAngleOffset = 0 + node.payload.uiObject.valueAtAngle = false + } else{ + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true + } + node.payload.uiObject.setValue(votingPower) } } diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index fdd264d2c..36299a81c 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1036,10 +1036,10 @@ "onMouseDownIndex": 1 }, { - "name": "User Features Space", - "folderName": "User-Features-Space", - "propertyName": "userFeaturesSpace", - "functionName": "newGovernanceUserFeaturesSpace", + "name": "Features Space", + "folderName": "Features-Space", + "propertyName": "featuresSpace", + "functionName": "newGovernanceFeaturesSpace", "initializationIndex": 2, "animationPhysicsIndex": 2, "animationDrawIndex": 2, @@ -1049,10 +1049,10 @@ "onMouseDownIndex": 2 }, { - "name": "Ranking Space", - "folderName": "Ranking-Space", - "propertyName": "rankingSpace", - "functionName": "newGovernanceRankingSpace", + "name": "Positions Space", + "folderName": "Positions-Space", + "propertyName": "positionsSpace", + "functionName": "newGovernancePositionsSpace", "initializationIndex": 3, "animationPhysicsIndex": 3, "animationDrawIndex": 3, @@ -1060,6 +1060,19 @@ "onMouseOverIndex": 3, "onMouseClickIndex": 3, "onMouseDownIndex": 3 + }, + { + "name": "Pools Space", + "folderName": "Pools-Space", + "propertyName": "poolsSpace", + "functionName": "newGovernancePoolsSpace", + "initializationIndex": 4, + "animationPhysicsIndex": 4, + "animationDrawIndex": 4, + "onMouseWheelIndex": 4, + "onMouseOverIndex": 4, + "onMouseClickIndex": 4, + "onMouseDownIndex": 4 } ] },