From 56664553161285e500636e91aee23511c5d73579 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 2 Jun 2021 16:45:00 +0200 Subject: [PATCH 1/2] Governance Project setup --- Projects/Governance/Icons/DE.png | Bin 0 -> 7190 bytes Projects/Governance/Icons/EN.png | Bin 0 -> 9889 bytes Projects/Governance/Icons/bitcoin.png | Bin 0 -> 15217 bytes Projects/Governance/Icons/bitfinex.png | Bin 0 -> 10215 bytes Projects/Governance/Icons/dogecoin.png | Bin 0 -> 18748 bytes Projects/Governance/Icons/ethereum.png | Bin 0 -> 13075 bytes Projects/Governance/Icons/kraken.png | Bin 0 -> 6749 bytes Projects/Governance/Icons/tron.png | Bin 0 -> 18369 bytes .../Schemas/App-Schema/assets-structure.json | 0 .../App-Schema/civic-contributions.json | 0 .../App-Schema/community-contributions.json | 0 .../Schemas/App-Schema/contributed-asset.json | 0 .../Schemas/App-Schema/contributed-time.json | 0 .../Schemas/App-Schema/contributed-vote.json | 0 .../App-Schema/contributed-youtube-video.json | 0 .../App-Schema/features-structure.json | 0 .../App-Schema/governance-contributions.json | 0 .../App-Schema/governance-project.json | 47 +++++ .../App-Schema/governance-structure.json | 0 .../App-Schema/marketing-contributions.json | 0 .../App-Schema/project-asset-class.json | 0 .../Schemas/App-Schema/project-asset.json | 0 .../Schemas/App-Schema/project-feature.json | 0 .../Schemas/App-Schema/project-rank.json | 0 .../App-Schema/software-contributions.json | 0 .../Schemas/App-Schema/team.json | 0 .../App-Schema/user-contributions.json | 0 .../UI/Function-Libraries/Accounts.js | 53 ++++++ .../UI/Function-Libraries/ActionSwitch.js | 28 +++ Projects/Governance/UI/Globals/ChainIds.js | 18 ++ .../UI/Spaces/Blockchain-Space/Blockchain.js | 180 ++++++++++++++++++ .../UI/Spaces/Wallet-Space/Wallet.js | 163 ++++++++++++++++ .../Governance/UI/Utilities/RouteToClient.js | 53 ++++++ Projects/ProjectsSchema.json | 57 ++++++ .../Schemas/App-Schema/other-hierarchies.json | 18 -- 35 files changed, 599 insertions(+), 18 deletions(-) create mode 100644 Projects/Governance/Icons/DE.png create mode 100644 Projects/Governance/Icons/EN.png create mode 100644 Projects/Governance/Icons/bitcoin.png create mode 100644 Projects/Governance/Icons/bitfinex.png create mode 100644 Projects/Governance/Icons/dogecoin.png create mode 100644 Projects/Governance/Icons/ethereum.png create mode 100644 Projects/Governance/Icons/kraken.png create mode 100644 Projects/Governance/Icons/tron.png rename Projects/{Superalgos => Governance}/Schemas/App-Schema/assets-structure.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/civic-contributions.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/community-contributions.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/contributed-asset.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/contributed-time.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/contributed-vote.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/contributed-youtube-video.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/features-structure.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/governance-contributions.json (100%) create mode 100644 Projects/Governance/Schemas/App-Schema/governance-project.json rename Projects/{Superalgos => Governance}/Schemas/App-Schema/governance-structure.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/marketing-contributions.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/project-asset-class.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/project-asset.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/project-feature.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/project-rank.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/software-contributions.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/team.json (100%) rename Projects/{Superalgos => Governance}/Schemas/App-Schema/user-contributions.json (100%) create mode 100644 Projects/Governance/UI/Function-Libraries/Accounts.js create mode 100644 Projects/Governance/UI/Function-Libraries/ActionSwitch.js create mode 100644 Projects/Governance/UI/Globals/ChainIds.js create mode 100644 Projects/Governance/UI/Spaces/Blockchain-Space/Blockchain.js create mode 100644 Projects/Governance/UI/Spaces/Wallet-Space/Wallet.js create mode 100644 Projects/Governance/UI/Utilities/RouteToClient.js diff --git a/Projects/Governance/Icons/DE.png b/Projects/Governance/Icons/DE.png new file mode 100644 index 0000000000000000000000000000000000000000..49a0eedb96bbc2f3848d30143d9f2d688e8eaef3 GIT binary patch literal 7190 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 C+0qmM literal 0 HcmV?d00001 diff --git a/Projects/Governance/Icons/bitcoin.png b/Projects/Governance/Icons/bitcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ee2a209ae5922e1d49d3686dfabf910a979d02 GIT binary patch literal 15217 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} zk~?Jo7l$6cpqVNOSHaTX#0(6OBq)I)ho<)5NdQcqW4X*uSLW-Y08%)zKy8wTwcTgc zaldh6DNk1$yFk6#OS-=_=iq9W&}%7NiwmjbAj~lRFv#RzCBGqTCGL>5+xL%*U!SXBiPb|1Gjec@*Hqf3Sg2| z+YNTQ168O%HsP@j<3$9vTL~g9VgaR)aLH}=^szzBDR{jEArD_9Xe5}zX=P!?xm@_g zS%}q=H~=OtVV4%l5`%LbIY(<~*S!GH$62Pv3y_#N4h57cn3H13s!4*&dVJENHNb`X*<9Yb`8EIUK3#oAp(-IPY^Eb}{ zPrvjBKv_}v*Wy$*2CLhGv&p3#xsoLW0hPE)*gRAk2j3IM1ueaXWN2XV+_9CU#(DU* zJx9mjsySW+w%oBPCqB(3Bv5;;C;;$F;g7<;xGb751?U!B_gi^9-u4X23uw6t`}7M8 z!&<@~Rs!siOJ#~dLm>DDwMCctZkpjqsDdHaJ^jm^zndrxfG?xMP8u|jp*;I+0Z!-j zOg`Y=R+wf2h=Eqbjj({U!O)t0eK$KFWQ7PVo-m$3D6pq6S|BpcB(C$1k3ORTM=6_*;;MNxS6G`? s;XgsX@9Cd?db;7@<_==sOO{@*4K=h$Vw8{= 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 YxYHKFWtYDB&r`N}?E0f*Q&7_X0GoDUDF6Tf literal 0 HcmV?d00001 diff --git a/Projects/Governance/Icons/dogecoin.png b/Projects/Governance/Icons/dogecoin.png new file mode 100644 index 0000000000000000000000000000000000000000..0c3efe978f3761683789fab64e16dbd14206fcb3 GIT binary patch literal 18748 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 Z{U64go#Ndv@K-LtV(%f-r+Zwl{69GIzQX_j literal 0 HcmV?d00001 diff --git a/Projects/Governance/Icons/kraken.png b/Projects/Governance/Icons/kraken.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7e2d59ee5f775ab7f78245441ee03ef7d322c2 GIT binary patch literal 6749 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 literal 0 HcmV?d00001 diff --git a/Projects/Governance/Icons/tron.png b/Projects/Governance/Icons/tron.png new file mode 100644 index 0000000000000000000000000000000000000000..65ebcbd982301df1087efad2f85a3924cb537fcf GIT binary patch literal 18369 zcmXtgcRbba`~Uqq=ipdbWshSNl@Ntw9A&1^L>Z^dN=Di1ywH$@N=Q~o8s26_8Rsa8 z2t`KLDT?ep&-mS^&-eEi9{20Mulu_0Ydr7kx^6dZtlW(Yp|c z+nr8di)*JupwfFuJ;3?U&d>l&S%aw5+RhP*Ygn+1)NlvZFHJTTEmJc&aAn3ZoAFim>7pEcu`06nuhncpQ4+wfUrv%$z+@A4LWZ7g__$oy zI9SMu$-SQNJg68rAaD;=kwlQZ1rPzzKALRdBtC@2fdFM0Wog�D+vj5;NnQQ_E# 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%0Dns8nF_w0MGW9mBpGn|4 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 literal 0 HcmV?d00001 diff --git a/Projects/Superalgos/Schemas/App-Schema/assets-structure.json b/Projects/Governance/Schemas/App-Schema/assets-structure.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/assets-structure.json rename to Projects/Governance/Schemas/App-Schema/assets-structure.json diff --git a/Projects/Superalgos/Schemas/App-Schema/civic-contributions.json b/Projects/Governance/Schemas/App-Schema/civic-contributions.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/civic-contributions.json rename to Projects/Governance/Schemas/App-Schema/civic-contributions.json diff --git a/Projects/Superalgos/Schemas/App-Schema/community-contributions.json b/Projects/Governance/Schemas/App-Schema/community-contributions.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/community-contributions.json rename to Projects/Governance/Schemas/App-Schema/community-contributions.json diff --git a/Projects/Superalgos/Schemas/App-Schema/contributed-asset.json b/Projects/Governance/Schemas/App-Schema/contributed-asset.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/contributed-asset.json rename to Projects/Governance/Schemas/App-Schema/contributed-asset.json diff --git a/Projects/Superalgos/Schemas/App-Schema/contributed-time.json b/Projects/Governance/Schemas/App-Schema/contributed-time.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/contributed-time.json rename to Projects/Governance/Schemas/App-Schema/contributed-time.json diff --git a/Projects/Superalgos/Schemas/App-Schema/contributed-vote.json b/Projects/Governance/Schemas/App-Schema/contributed-vote.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/contributed-vote.json rename to Projects/Governance/Schemas/App-Schema/contributed-vote.json diff --git a/Projects/Superalgos/Schemas/App-Schema/contributed-youtube-video.json b/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/contributed-youtube-video.json rename to Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json diff --git a/Projects/Superalgos/Schemas/App-Schema/features-structure.json b/Projects/Governance/Schemas/App-Schema/features-structure.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/features-structure.json rename to Projects/Governance/Schemas/App-Schema/features-structure.json diff --git a/Projects/Superalgos/Schemas/App-Schema/governance-contributions.json b/Projects/Governance/Schemas/App-Schema/governance-contributions.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/governance-contributions.json rename to Projects/Governance/Schemas/App-Schema/governance-contributions.json diff --git a/Projects/Governance/Schemas/App-Schema/governance-project.json b/Projects/Governance/Schemas/App-Schema/governance-project.json new file mode 100644 index 000000000..409a981f6 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/governance-project.json @@ -0,0 +1,47 @@ +{ + "type": "Governance Project", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Assets Structure", + "relatedUiObject": "Assets Structure", + "actionFunction": "payload.executeAction" + }, + { + "action": "Add UI Object", + "label": "Add Governance Structure", + "relatedUiObject": "Governance Structure", + "actionFunction": "payload.executeAction" + }, + { + "action": "Add UI Object", + "label": "Add User Contributions", + "relatedUiObject": "User Contributions", + "actionFunction": "payload.executeAction" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.executeAction", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity" + } + ], + "isProjectHead": true, + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "isPinned": true, + "positionLocked": true, + "icon": "bitcoin", + "childrenNodesProperties": [ + { + "name": "projectDefinition", + "type": "node", + "childType": "Project Definition", + "project": "Superalgos", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Superalgos/Schemas/App-Schema/governance-structure.json b/Projects/Governance/Schemas/App-Schema/governance-structure.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/governance-structure.json rename to Projects/Governance/Schemas/App-Schema/governance-structure.json diff --git a/Projects/Superalgos/Schemas/App-Schema/marketing-contributions.json b/Projects/Governance/Schemas/App-Schema/marketing-contributions.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/marketing-contributions.json rename to Projects/Governance/Schemas/App-Schema/marketing-contributions.json diff --git a/Projects/Superalgos/Schemas/App-Schema/project-asset-class.json b/Projects/Governance/Schemas/App-Schema/project-asset-class.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/project-asset-class.json rename to Projects/Governance/Schemas/App-Schema/project-asset-class.json diff --git a/Projects/Superalgos/Schemas/App-Schema/project-asset.json b/Projects/Governance/Schemas/App-Schema/project-asset.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/project-asset.json rename to Projects/Governance/Schemas/App-Schema/project-asset.json diff --git a/Projects/Superalgos/Schemas/App-Schema/project-feature.json b/Projects/Governance/Schemas/App-Schema/project-feature.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/project-feature.json rename to Projects/Governance/Schemas/App-Schema/project-feature.json diff --git a/Projects/Superalgos/Schemas/App-Schema/project-rank.json b/Projects/Governance/Schemas/App-Schema/project-rank.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/project-rank.json rename to Projects/Governance/Schemas/App-Schema/project-rank.json diff --git a/Projects/Superalgos/Schemas/App-Schema/software-contributions.json b/Projects/Governance/Schemas/App-Schema/software-contributions.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/software-contributions.json rename to Projects/Governance/Schemas/App-Schema/software-contributions.json diff --git a/Projects/Superalgos/Schemas/App-Schema/team.json b/Projects/Governance/Schemas/App-Schema/team.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/team.json rename to Projects/Governance/Schemas/App-Schema/team.json diff --git a/Projects/Superalgos/Schemas/App-Schema/user-contributions.json b/Projects/Governance/Schemas/App-Schema/user-contributions.json similarity index 100% rename from Projects/Superalgos/Schemas/App-Schema/user-contributions.json rename to Projects/Governance/Schemas/App-Schema/user-contributions.json diff --git a/Projects/Governance/UI/Function-Libraries/Accounts.js b/Projects/Governance/UI/Function-Libraries/Accounts.js new file mode 100644 index 000000000..d84df1548 --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/Accounts.js @@ -0,0 +1,53 @@ +function newEthereumFunctionLibraryAccounts() { + let thisObject = { + createWalletAccount: createWalletAccount + } + + return thisObject + + function createWalletAccount(node) { + + let walletAccountNode = UI.projects.superalgos.functionLibraries.uiObjectsFromNodes.addUIObject(node, 'Wallet Account') + + let params = { + method: 'createWalletAccount', + entropy: walletAccountNode.id + } + + let url = 'WEB3' // we don't need to ask this to any specific superalgos node. + + httpRequest(JSON.stringify(params), url, onResponse) + + function onResponse(err, data) { + /* Lets check the result of the call through the http interface */ + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Call via HTTP Interface failed.') + walletAccountNode.payload.uiObject.menu.internalClick('Delete UI Object') + walletAccountNode.payload.uiObject.menu.internalClick('Delete UI Object') + return + } + + let response = JSON.parse(data) + + /* Lets check the result of the method call */ + if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Call to WEB3 Server failed. ' + response.error) + walletAccountNode.payload.uiObject.menu.internalClick('Delete UI Object') + walletAccountNode.payload.uiObject.menu.internalClick('Delete UI Object') + return + } + + let config = { + address: response.address, + privateKey: response.privateKey + } + + walletAccountNode.config = JSON.stringify(config, null, 4) + walletAccountNode.name = + response.address[response.address.length - 4] + + response.address[response.address.length - 3] + + response.address[response.address.length - 2] + + response.address[response.address.length - 1] + } + } +} diff --git a/Projects/Governance/UI/Function-Libraries/ActionSwitch.js b/Projects/Governance/UI/Function-Libraries/ActionSwitch.js new file mode 100644 index 000000000..201d3a795 --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,28 @@ +function newGovernanceActionSwitch() { + + let thisObject = { + executeAction: executeAction, + initialize: initialize, + finalize: finalize + } + + + return thisObject + + function finalize() { + + } + + function initialize() { + /* Nothing to initialize since a Function Library does not hold any state. */ + } + + async function executeAction(action) { + switch (action.name) { + case 'Create Wallet Account': { + UI.projects.ethereum.functionLibraries.accounts.createWalletAccount(action.node) + break + } + } + } +} diff --git a/Projects/Governance/UI/Globals/ChainIds.js b/Projects/Governance/UI/Globals/ChainIds.js new file mode 100644 index 000000000..e17cf4226 --- /dev/null +++ b/Projects/Governance/UI/Globals/ChainIds.js @@ -0,0 +1,18 @@ +function newEthereumGlobalsChainIds() { + let thisObject = { + chainNameById: chainNameById + } + return thisObject + + function chainNameById(chainId) { + switch(chainId) { + case 1: return 'Ethereum Mainnet' + case 3: return 'Ethereum Ropsten' + case 4: return 'Ethereum Rinkeby' + case 42: return 'Ethereum Kovan' + case 61: return 'Ethereum Classic Mainnet' + case 62: return 'Ethereum Classic Morden' + default: return 'Unknown Network' + } + } +} \ No newline at end of file diff --git a/Projects/Governance/UI/Spaces/Blockchain-Space/Blockchain.js b/Projects/Governance/UI/Spaces/Blockchain-Space/Blockchain.js new file mode 100644 index 000000000..37f63d57e --- /dev/null +++ b/Projects/Governance/UI/Spaces/Blockchain-Space/Blockchain.js @@ -0,0 +1,180 @@ +function newEthereumBlockchainSpace() { + const MODULE_NAME = 'Blockchain Space' + + let thisObject = { + container: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + finalize: finalize, + initialize: initialize + } + + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + + let lastTryToReconnectDatetime + + return thisObject + + function finalize() { + + thisObject.container.finalize() + thisObject.container = undefined + clientMap = undefined + } + + function initialize() { + + } + + function physics() { + networkClientStatusPhysics() + } + + async function networkClientStatusPhysics() { + + /* We will query the node only every 3 seconds */ + if (lastTryToReconnectDatetime === undefined) { + checkStatus() + lastTryToReconnectDatetime = (new Date()).valueOf() + } else { + let now = (new Date()).valueOf() + if (now - lastTryToReconnectDatetime > 3000) { + checkStatus() + lastTryToReconnectDatetime = now + } + } + + async function checkStatus() { + try { + if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } + + let blockchain = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadByNodeType('Ethereum Blockchain') + if (blockchain === undefined) { return } + for (let i = 0; i < blockchain.blockchainNetworks.length; i++) { + let blockchainNetwork = blockchain.blockchainNetworks[i] + for (let j = 0; j < blockchainNetwork.networkClients.length; j++) { + let networkClient = blockchainNetwork.networkClients[j] + + let route = UI.projects.ethereum.utilities.routeToClient.buildRouteToClient(networkClient) + + if (route === undefined) { continue } // something went wrong building the route. + + route.params.method = 'getNetworkClientStatus' + + httpRequest(JSON.stringify(route.params), route.url, onResponse) + + function onResponse(err, data) { + /* Lets check the result of the call through the http interface */ + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + networkClient.payload.uiObject.setErrorMessage('Call via HTTP Interface failed.') + return + } + + let status = JSON.parse(data) + + /* Lets check the result of the method call */ + if (status.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + networkClient.payload.uiObject.setErrorMessage('Call to WEB3 Server failed. ' + status.error) + return + } + + showStatus(status) + } + + async function showStatus(status) { + const ANNIMATION_CYCLES_TO_LAST = 300 + + networkClient.payload.uiObject.resetErrorMessage() + + if (status.isSyncing === false && status.chainId === 0) { + networkClient.payload.uiObject.setStatus('Client is looking for peers...', ANNIMATION_CYCLES_TO_LAST) + return + } + + if (status.chainId > 0) { + let networkName = UI.projects.ethereum.globals.chainIds.chainNameById(status.chainId) + networkClient.payload.uiObject.setStatus('Connected to ' + networkName + ' via the ' + route.params.interface + ' interface, through ' + networkClient.payload.referenceParent.name + ' Network Node.', ANNIMATION_CYCLES_TO_LAST) + + networkClient.payload.uiObject.valueAtAngle = false + networkClient.payload.uiObject.setValue( + 'Current Block Number ' + splitLargeNumber(status.currentBlockNumber) + , 200) + networkClient.payload.uiObject.setPercentage('100.00', ANNIMATION_CYCLES_TO_LAST) + return + } + + /* If it is not syncing, then we have the current block and the highets block too */ + let percentage = (status.isSyncing.currentBlock * 100 / status.isSyncing.highestBlock).toFixed(4) + let extraStatus = '' + if (status.isSyncing.highestBlock - status.isSyncing.currentBlock < 300) { + extraStatus = 'Block Download Phase Finished. Downloading Trie Data Structure.' + } else { + extraStatus = 'Block Download Phase.' + networkClient.payload.uiObject.setPercentage(percentage, ANNIMATION_CYCLES_TO_LAST) + } + + networkClient.payload.uiObject.valueAtAngle = false + networkClient.payload.uiObject.setValue( + 'Block ' + splitLargeNumber(status.isSyncing.currentBlock) + + ' from ' + splitLargeNumber(status.isSyncing.highestBlock) + + '. State ' + splitLargeNumber(status.isSyncing.pulledStates) + + ' from ' + splitLargeNumber(status.isSyncing.knownStates) + , 200) + + if (status.isSyncing.currentBlock !== status.isSyncing.highestBlock) { + networkClient.payload.uiObject.setStatus('Connected via http. Client is Syncing... ' + extraStatus, ANNIMATION_CYCLES_TO_LAST) + } + + function splitLargeNumber(number) { + let label = number.toString() + let result = label + switch (label.length) { + case 4: { + return label[0] + ',' + label[1] + label[2] + label[3] + } + case 5: { + return label[0] + label[1] + ',' + label[2] + label[3] + label[4] + } + case 6: { + return label[0] + label[1] + label[2] + ',' + label[3] + label[4] + label[5] + } + case 7: { + return label[0] + ',' + label[1] + label[2] + label[3] + ',' + label[4] + label[5] + label[6] + } + case 8: { + return label[0] + label[1] + ',' + label[2] + label[3] + label[4] + ',' + label[5] + label[6] + label[7] + } + case 9: { + return label[0] + label[1] + label[2] + ',' + label[3] + label[4] + label[5] + ',' + label[6] + label[7] + label[8] + } + case 10: { + return label[0] + ',' + label[1] + label[2] + label[3] + ',' + label[4] + label[5] + label[6] + ',' + label[7] + label[8] + label[9] + } + } + return result + } + } + } + } + } catch (err) { + console.log('[ERROR] checkStatus -> err = ' + err.stack) + } + } + } + + 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/Governance/UI/Spaces/Wallet-Space/Wallet.js b/Projects/Governance/UI/Spaces/Wallet-Space/Wallet.js new file mode 100644 index 000000000..66bdb9de4 --- /dev/null +++ b/Projects/Governance/UI/Spaces/Wallet-Space/Wallet.js @@ -0,0 +1,163 @@ +function newEthereumWalletSpace() { + const MODULE_NAME = 'Wallet Space' + + let thisObject = { + container: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + finalize: finalize, + initialize: initialize + } + + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + + let lastTryToReconnectDatetime + + return thisObject + + function finalize() { + + thisObject.container.finalize() + thisObject.container = undefined + } + + function initialize() { + + } + + function physics() { + walletBalancesPhysics() + } + + async function walletBalancesPhysics() { + + /* We will query the node only every 3 seconds */ + if (lastTryToReconnectDatetime === undefined) { + checkBalances() + lastTryToReconnectDatetime = (new Date()).valueOf() + } else { + let now = (new Date()).valueOf() + if (now - lastTryToReconnectDatetime > 3000) { + checkBalances() + lastTryToReconnectDatetime = now + } + } + + async function checkBalances() { + try { + if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } + + let wallets = [] + let hierarchyHeads = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeads() + for (let i = 0; i < hierarchyHeads.length; i++) { + let hierarchyHead = hierarchyHeads[i] + if (hierarchyHead.type === 'Ethereum Wallet') { + wallets.push(hierarchyHead) + } + } + + for (let i = 0; i < wallets.length; i++) { + let wallet = wallets[i] + + if (wallet.networkClientReference === undefined) { + wallet.payload.uiObject.setWarningMessage('A Network Client Reference is needed in order to fetch Account Balances from a Network Client.') + continue + } + + if (wallet.networkClientReference.payload === undefined) { + // node exists without payload, probably has been deleted. + continue + } + + if (wallet.networkClientReference.payload.referenceParent === undefined) { + wallet.networkClientReference.payload.uiObject.setWarningMessage('A reference to a Network Client is needed in order to fetch Account Balances from a Network Client.') + continue + } + + let networkClient = wallet.networkClientReference.payload.referenceParent + + let route = UI.projects.ethereum.utilities.routeToClient.buildRouteToClient(networkClient) + + if (route === undefined) { continue } // something went wrong building the route. + + route.params.method = 'getWalletBalances' + + let lightingPath = '' + + 'Ethereum Wallet->' + + 'Wallet Account->' + + 'ETH Balance->' + + 'Token Balance->' + + 'Ethereum Token->Smart Contract->' + + 'ERC-20 Token Type->ERC-223 Token Type->ERC-721 Token Type->ERC-777 Token Type->' + + route.params.walletDefinition = UI.projects.superalgos.functionLibraries.protocolNode.getProtocolNode(wallet, false, true, true, false, false, lightingPath) + + httpRequest(JSON.stringify(route.params), route.url, onResponse) + + function onResponse(err, data) { + /* Lets check the result of the call through the http interface */ + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + networkClient.payload.uiObject.setErrorMessage('Call via HTTP Interface failed.') + return + } + + let response = JSON.parse(data) + + /* Lets check the result of the method call */ + if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + networkClient.payload.uiObject.setErrorMessage('Call to WEB3 Server failed. ' + response.error) + return + } + + showBalances(response.walletDefinition) + } + + function showBalances(walletDefinition) { + for (let i = 0; i < walletDefinition.walletAccounts.length; i++) { + let walletAccount = walletDefinition.walletAccounts[i] + + if (walletAccount.ethBalance !== undefined) { + + let uiObject = wallet.walletAccounts[i].ethBalance.payload.uiObject + + if (walletAccount.error !== undefined) { + uiObject.setErrorMessage(walletAccount.error) + } else { + let value = walletAccount.ethBalance.value / 1000000000000000000 + uiObject.valueAtAngle = false + uiObject.setValue(value + ' ETH') + } + } + + for (let j = 0; j < walletAccount.tokenBalances.length; j++) { + let tokenBalance = walletAccount.tokenBalances[j] + let uiObject = wallet.walletAccounts[i].tokenBalances[j].payload.uiObject + let value = tokenBalance.value / 1000000000000000000 + uiObject.valueAtAngle = false + uiObject.setValue(value + ' ' + tokenBalance.referenceParent.config.codeName) + } + } + } + } + } catch (err) { + console.log('[ERROR] checkBalances -> err = ' + err.stack) + } + } + } + + 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/Governance/UI/Utilities/RouteToClient.js b/Projects/Governance/UI/Utilities/RouteToClient.js new file mode 100644 index 000000000..a371b08b9 --- /dev/null +++ b/Projects/Governance/UI/Utilities/RouteToClient.js @@ -0,0 +1,53 @@ +function newEthereumUtilitiesRouteToClient() { + let thisObject = { + buildRouteToClient: buildRouteToClient + } + + return thisObject + + function buildRouteToClient(networkClient) { + let config = JSON.parse(networkClient.config) + if (config.host === undefined) { + networkClient.payload.uiObject.setErrorMessage('Property host not defined at node config.') + return + } + if (config.httpPort === undefined && config.webSocketsPort === undefined) { + networkClient.payload.uiObject.setErrorMessage('Property httpPort or webSocketsPort must be defined at node config.') + return + } + + /* Web Sockets would be the default protocol */ + let clientPort + let clientInterface + if (config.webSocketsPort !== undefined) { + clientInterface = 'ws' + clientPort = config.webSocketsPort + } else { + clientInterface = 'http' + clientPort = config.httpPort + } + + let params = { + host: config.host, + port: clientPort, + interface: clientInterface + } + + /* + Next, we will check which Superalgos Network Node we need as a gateway + to the Ethereum Client. We will use the current node reference parent for that. + */ + if (networkClient.payload.referenceParent === undefined) { + networkClient.payload.uiObject.setErrorMessage('You need to reference a Superalgos Network Node so that it acts as a gateway to the Ethereum Client.') + return + } + + let networkNodeConfig = JSON.parse(networkClient.payload.referenceParent.config) + let url = 'http://' + networkNodeConfig.host + ':' + networkNodeConfig.webPort + '/' + 'WEB3' + + return { + params: params, + url: url + } + } +} \ No newline at end of file diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index e746b67c4..4c09979b7 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -982,5 +982,62 @@ } ] } + }, + { + "name": "Governance", + "propertyName": "governance", + "UI": { + "globals": [ + { + "name": "ChainIds", + "propertyName": "chainIds", + "functionName": "newEthereumGlobalsChainIds" + } + ], + "functionLibraries": [ + { + "name": "Accounts", + "propertyName": "accounts", + "functionName": "newEthereumFunctionLibraryAccounts" + } + ], + "utilities": [ + { + "name": "Route To Client", + "propertyName": "routeToClient", + "functionName": "newEthereumUtilitiesRouteToClient" + } + ], + "spaces": [ + { + "name": "Blockchain Space", + "folderName": "Blockchain-Space", + "propertyName": "blockchainSpace", + "functionName": "newEthereumBlockchainSpace", + "initializationIndex": 0, + "animationPhysicsIndex": 0, + "animationDrawIndex": 0, + "onMouseWheelIndex": 0, + "onMouseOverIndex": 0, + "onMouseClickIndex": 0, + "onMouseDownIndex": 0 + }, + { + "name": "Wallet Space", + "folderName": "Wallet-Space", + "propertyName": "walletSpace", + "functionName": "newEthereumWalletSpace", + "initializationIndex": 1, + "animationPhysicsIndex": 1, + "animationDrawIndex": 1, + "onMouseWheelIndex": 1, + "onMouseOverIndex": 1, + "onMouseClickIndex": 1, + "onMouseDownIndex": 1 + } + ] + }, + "TS": {}, + "CL": {} } ] diff --git a/Projects/Superalgos/Schemas/App-Schema/other-hierarchies.json b/Projects/Superalgos/Schemas/App-Schema/other-hierarchies.json index 72ae1a9d1..96a182740 100644 --- a/Projects/Superalgos/Schemas/App-Schema/other-hierarchies.json +++ b/Projects/Superalgos/Schemas/App-Schema/other-hierarchies.json @@ -31,24 +31,6 @@ "relatedUiObject": "API Map", "actionFunction": "payload.executeAction" }, - { - "action": "Add UI Object", - "label": "Add Assets Structure", - "relatedUiObject": "Assets Structure", - "actionFunction": "payload.executeAction" - }, - { - "action": "Add UI Object", - "label": "Add Governance Structure", - "relatedUiObject": "Governance Structure", - "actionFunction": "payload.executeAction" - }, - { - "action": "Add UI Object", - "label": "Add User Contributions", - "relatedUiObject": "User Contributions", - "actionFunction": "payload.executeAction" - }, { "action": "Delete UI Object", "askConfirmation": true, From 9160dbe203dd127a070c84ca5028568adf6c1263 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 2 Jun 2021 17:31:10 +0200 Subject: [PATCH 2/2] Governance: finding the right names for nodes --- .../Schemas/App-Schema/assets-structure.json | 18 +++++++------- .../Schemas/App-Schema/contributed-asset.json | 2 +- .../Schemas/App-Schema/contributed-time.json | 5 ++-- .../App-Schema/contributed-youtube-video.json | 10 ++++---- .../App-Schema/governance-project.json | 8 +++---- .../App-Schema/governance-structure.json | 10 ++++---- .../App-Schema/project-asset-class.json | 24 +++++++++---------- .../Schemas/App-Schema/project-asset.json | 24 +++++++++---------- .../Schemas/App-Schema/project-rank.json | 14 +++++------ .../Governance/Schemas/App-Schema/team.json | 10 ++++---- .../Blockchain.js => Assets-Space/Assets.js} | 0 11 files changed, 63 insertions(+), 62 deletions(-) rename Projects/Governance/UI/Spaces/{Blockchain-Space/Blockchain.js => Assets-Space/Assets.js} (100%) diff --git a/Projects/Governance/Schemas/App-Schema/assets-structure.json b/Projects/Governance/Schemas/App-Schema/assets-structure.json index 1fa75ad28..1f986969d 100644 --- a/Projects/Governance/Schemas/App-Schema/assets-structure.json +++ b/Projects/Governance/Schemas/App-Schema/assets-structure.json @@ -1,17 +1,17 @@ { - "type": "Assets Structure", + "type": "Assets", "menuItems": [ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Asset Class", - "relatedUiObject": "Project Asset Class" + "label": "Add Asset Class", + "relatedUiObject": "Asset Class" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Asset", - "relatedUiObject": "Project Asset" + "label": "Add Asset", + "relatedUiObject": "Asset" }, { "action": "Delete UI Object", @@ -31,15 +31,15 @@ }, "childrenNodesProperties": [ { - "name": "projectAssetClasses", + "name": "assetClasses", "type": "array", - "childType": "Project Asset Class", + "childType": "Asset Class", "autoAdd": false }, { - "name": "projectAssets", + "name": "assets", "type": "array", - "childType": "Project Asset", + "childType": "Asset", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/contributed-asset.json b/Projects/Governance/Schemas/App-Schema/contributed-asset.json index 6d4bb4e38..f75d6d45c 100644 --- a/Projects/Governance/Schemas/App-Schema/contributed-asset.json +++ b/Projects/Governance/Schemas/App-Schema/contributed-asset.json @@ -34,7 +34,7 @@ "compatibleTypes": "->Software Contributions->" }, "referencingRules": { - "compatibleTypes": "->Project Asset->" + "compatibleTypes": "->Asset->" }, "propertyNameAtParent": "contributedAssets", "icon": "tron" diff --git a/Projects/Governance/Schemas/App-Schema/contributed-time.json b/Projects/Governance/Schemas/App-Schema/contributed-time.json index 3c171cca6..3ea1c677e 100644 --- a/Projects/Governance/Schemas/App-Schema/contributed-time.json +++ b/Projects/Governance/Schemas/App-Schema/contributed-time.json @@ -19,7 +19,8 @@ } ], "title": [ - "Use Reference Parent" + "Use Reference Parent", + "Use Reference Parent Parent" ], "editors": { "config": true @@ -33,7 +34,7 @@ "compatibleTypes": "->Governance Contributions->" }, "referencingRules": { - "compatibleTypes": "->Project Rank->" + "compatibleTypes": "->Ranking Position->" }, "propertyNameAtParent": "contributedTimes", "icon": "dogecoin" diff --git a/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json b/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json index 2e9289784..089b52a8c 100644 --- a/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json +++ b/Projects/Governance/Schemas/App-Schema/contributed-youtube-video.json @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Asset", - "relatedUiObject": "Project Asset" + "label": "Add Asset", + "relatedUiObject": "Asset" }, { "action": "Delete UI Object", @@ -33,14 +33,14 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Assets Structure->Project Asset->" + "compatibleTypes": "->Assets->Asset->" }, "propertyNameAtParent": "softwareContributions", "childrenNodesProperties": [ { - "name": "projectAssetClass", + "name": "assetClass", "type": "array", - "childType": "Project Asset", + "childType": "Asset", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/governance-project.json b/Projects/Governance/Schemas/App-Schema/governance-project.json index 409a981f6..8e259b680 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-project.json +++ b/Projects/Governance/Schemas/App-Schema/governance-project.json @@ -3,14 +3,14 @@ "menuItems": [ { "action": "Add UI Object", - "label": "Add Assets Structure", - "relatedUiObject": "Assets Structure", + "label": "Add Assets", + "relatedUiObject": "Assets", "actionFunction": "payload.executeAction" }, { "action": "Add UI Object", - "label": "Add Governance Structure", - "relatedUiObject": "Governance Structure", + "label": "Add Ranking", + "relatedUiObject": "Ranking", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Governance/Schemas/App-Schema/governance-structure.json b/Projects/Governance/Schemas/App-Schema/governance-structure.json index ea30dcd79..79c5de3d3 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-structure.json +++ b/Projects/Governance/Schemas/App-Schema/governance-structure.json @@ -1,10 +1,10 @@ { - "type": "Governance Structure", + "type": "Ranking", "menuItems": [ { "action": "Add UI Object", - "label": "Add Project Rank", - "relatedUiObject": "Project Rank", + "label": "Add Ranking Position", + "relatedUiObject": "Ranking Position", "actionFunction": "payload.executeAction" }, { @@ -23,9 +23,9 @@ "level": 0, "childrenNodesProperties": [ { - "name": "projectRanks", + "name": "rankingPositions", "type": "array", - "childType": "Project Rank", + "childType": "Ranking Position", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/project-asset-class.json b/Projects/Governance/Schemas/App-Schema/project-asset-class.json index 96263ff58..938beef44 100644 --- a/Projects/Governance/Schemas/App-Schema/project-asset-class.json +++ b/Projects/Governance/Schemas/App-Schema/project-asset-class.json @@ -1,5 +1,5 @@ { - "type": "Project Asset Class", + "type": "Asset Class", "menuItems": [ { "action": "Configure", @@ -11,14 +11,14 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Asset Class", - "relatedUiObject": "Project Asset Class" + "label": "Add Asset Class", + "relatedUiObject": "Asset Class" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Asset", - "relatedUiObject": "Project Asset" + "label": "Add Asset", + "relatedUiObject": "Asset" }, { "action": "Delete UI Object", @@ -39,23 +39,23 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Assets Structure->Project Asset Class->" + "compatibleTypes": "->Assets->Asset Class->" }, "referencingRules": { - "compatibleTypes": "->Team->Project Rank->" + "compatibleTypes": "->Team->Ranking Position->" }, - "propertyNameAtParent": "projectAssetClasses", + "propertyNameAtParent": "assetClasses", "childrenNodesProperties": [ { - "name": "projectAssetClasses", + "name": "assetClasses", "type": "array", - "childType": "Project Asset Class", + "childType": "Asset Class", "autoAdd": false }, { - "name": "projectAssets", + "name": "assets", "type": "array", - "childType": "Project Asset", + "childType": "Asset", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/project-asset.json b/Projects/Governance/Schemas/App-Schema/project-asset.json index 0aff5313c..43e6cf0fc 100644 --- a/Projects/Governance/Schemas/App-Schema/project-asset.json +++ b/Projects/Governance/Schemas/App-Schema/project-asset.json @@ -1,5 +1,5 @@ { - "type": "Project Asset", + "type": "Asset", "menuItems": [ { "action": "Configure", @@ -11,14 +11,14 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Asset Class", - "relatedUiObject": "Project Asset Class" + "label": "Add Asset Class", + "relatedUiObject": "Asset Class" }, { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Asset", - "relatedUiObject": "Project Asset" + "label": "Add Asset", + "relatedUiObject": "Asset" }, { "action": "Delete UI Object", @@ -39,23 +39,23 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Project Asset Class->Project Asset->" + "compatibleTypes": "->Asset Class->Asset->" }, "referencingRules": { - "compatibleTypes": "->Team->Project Rank->" + "compatibleTypes": "->Team->Ranking Position->" }, - "propertyNameAtParent": "projectAssets", + "propertyNameAtParent": "assets", "childrenNodesProperties": [ { - "name": "projectAssetClasses", + "name": "assetClasses", "type": "array", - "childType": "Project Asset Class", + "childType": "Asset Class", "autoAdd": false }, { - "name": "projectAssets", + "name": "assets", "type": "array", - "childType": "Project Asset", + "childType": "Asset", "autoAdd": false } ], diff --git a/Projects/Governance/Schemas/App-Schema/project-rank.json b/Projects/Governance/Schemas/App-Schema/project-rank.json index a3ff0cec4..7c77d314a 100644 --- a/Projects/Governance/Schemas/App-Schema/project-rank.json +++ b/Projects/Governance/Schemas/App-Schema/project-rank.json @@ -1,5 +1,5 @@ { - "type": "Project Rank", + "type": "Ranking Position", "menuItems": [ { "action": "Configure", @@ -11,8 +11,8 @@ { "action": "Add UI Object", "actionFunction": "payload.executeAction", - "label": "Add Project Rank", - "relatedUiObject": "Project Rank" + "label": "Add Ranking Position", + "relatedUiObject": "Ranking Position" }, { "action": "Add UI Object", @@ -39,14 +39,14 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Governance Structure->Project Rank->Team->" + "compatibleTypes": "->Ranking->Ranking Position->Team->" }, - "propertyNameAtParent": "projectRanks", + "propertyNameAtParent": "rankingPositions", "childrenNodesProperties": [ { - "name": "projectRanks", + "name": "rankingPositions", "type": "array", - "childType": "Project Rank", + "childType": "Ranking Position", "autoAdd": false }, { diff --git a/Projects/Governance/Schemas/App-Schema/team.json b/Projects/Governance/Schemas/App-Schema/team.json index c4be415c5..af27c192c 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 Project Rank", - "relatedUiObject": "Project Rank" + "label": "Add Ranking Position", + "relatedUiObject": "Ranking Position" }, { "action": "Add UI Object", @@ -39,14 +39,14 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Project Rank->Team->" + "compatibleTypes": "->Ranking Position->Team->" }, "propertyNameAtParent": "teams", "childrenNodesProperties": [ { - "name": "projectRanks", + "name": "rankingPositions", "type": "array", - "childType": "Project Rank", + "childType": "Ranking Position", "autoAdd": false }, { diff --git a/Projects/Governance/UI/Spaces/Blockchain-Space/Blockchain.js b/Projects/Governance/UI/Spaces/Assets-Space/Assets.js similarity index 100% rename from Projects/Governance/UI/Spaces/Blockchain-Space/Blockchain.js rename to Projects/Governance/UI/Spaces/Assets-Space/Assets.js