From bc0ca2455fc1541999813f3be178020617647fd5 Mon Sep 17 00:00:00 2001 From: Santiago Siri Date: Fri, 13 Dec 2019 17:15:29 +0100 Subject: [PATCH 01/14] cleanup --- .meteor/packages | 1 - .meteor/versions | 4 ---- 2 files changed, 5 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index 46e09153c..727f59a23 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -74,7 +74,6 @@ meteorhacks:ssr # miscellaneous check@1.3.1 ejson@1.1.0 -houston:admin # meteortoys:allthings edgee:slingshot http@1.4.2 diff --git a/.meteor/versions b/.meteor/versions index 9829198d4..75da26eb4 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -28,7 +28,6 @@ check@1.3.1 coffeescript@1.0.17 dburles:collection-helpers@1.1.0 dburles:factory@1.1.0 -dburles:mongo-collection-instances@0.3.5 ddp@1.4.0 ddp-client@2.3.3 ddp-common@1.4.0 @@ -54,7 +53,6 @@ flowkey:raven@1.1.0 geojson-utils@1.0.10 harrison:papa-parse@1.1.7 hot-code-push@1.0.4 -houston:admin@2.0.7 html-tools@1.0.11 htmljs@1.0.11 http@1.4.2 @@ -71,7 +69,6 @@ iron:url@1.1.0 jquery@1.11.11 kadira:dochead@1.5.0 konecty:nrr@2.0.2 -lai:collection-extensions@0.2.1_1 launch-screen@1.1.1 less@2.8.0 lh84:medium-editor@5.4.0 @@ -142,7 +139,6 @@ templating-compiler@1.3.3 templating-runtime@1.3.2 templating-tools@1.1.2 tmeasday:check-npm-versions@0.3.2 -tmeasday:paginated-subscription@0.2.4 tmeasday:publish-counts@0.8.0 tmeasday:test-reporter-helpers@0.2.1 tracker@1.2.0 From a06208fe1cdc88c9c98a04437521dd96986ba4aa Mon Sep 17 00:00:00 2001 From: Santiago Siri Date: Fri, 13 Dec 2019 17:54:58 +0100 Subject: [PATCH 02/14] ragequit parsing --- lib/web3.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/web3.js b/lib/web3.js index 74e2f964b..9385a3b0d 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -560,6 +560,12 @@ const _mirrorCollectiveEvent = (event, map, collectiveId, block) => { } }; +const _mirrorUserEvent = (event, map, collectiveId, block) => { + console.log('RAGE QUIT'); + console.log(event); + console.log(map); +} + const _getEventBlock = async (blockNumber) => { let block; log(`[web3] Getting data for block: ${blockNumber}`); @@ -663,6 +669,11 @@ const _writeEvents = async (event, smartContract, state, collectiveId) => { _mirrorCollectiveEvent(event[i], map[k], collectiveId, block); } } + if (event[i].event === 'Ragequit') { + if (eventTimestamp >= lastEventBlockTimestamp) { + _mirrorUserEvent(event[i], map[k], collectiveId, block); + } + } } } } From 0da0ff46036732f96f98bd22ef81d6b62fd345d3 Mon Sep 17 00:00:00 2001 From: Santiago Siri Date: Mon, 16 Dec 2019 19:13:05 +0100 Subject: [PATCH 03/14] first sniff at ragequits --- i18n/en.i18n.json | 9 ++++---- lib/web3.js | 54 +++++++++++++++++++++++++++++++++++++++++++- private/lib/dao.json | 11 ++++++++- 3 files changed, 68 insertions(+), 6 deletions(-) diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index c8a2df23c..909386d16 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -714,10 +714,10 @@ "duration": "Duration", "blockchain-time-closing-criteria": "Poll ends when {{blockchain}} reaches a cycle of {{height}} cycles estimated on {{date}}.", "blockchain-time-always-on": "This poll never ends and tallies an ongoing result.", - "countdown-expiration": "Poll ends in {{days}} {{hours}} {{minutes}} {{seconds}} (in {{blocks}})", - "countdown-queue": "Poll will begin in {{days}} {{hours}} {{minutes}} {{seconds}} (in {{blocks}})", - "countdown-grace": "Grace period ends in {{days}} {{hours}} {{minutes}} {{seconds}} (in {{blocks}})", - "countdown-process": "Poll and grace period ended. Proposal is ready to be processed.", + "countdown-expiration": "Poll ends in {{days}} {{hours}} (in {{blocks}})", + "countdown-queue": "Poll will begin in {{days}} {{hours}} (in {{blocks}})", + "countdown-grace": "Grace period ends in {{days}} {{hours}} (in {{blocks}})", + "countdown-process": "Proposal is ready to be processed.", "periods-compressed": "cycles", "periods-singular": "cycle", "blocks-compressed": "blocks", @@ -767,6 +767,7 @@ "moloch-period": "Period", "moloch-results": "Results", "moloch-map-submit-proposal": " ", + "moloch-map-rage-quit": " ", "moloch-yes": "Yes", "moloch-no": "No", "moloch-tribute": "Tribute to DAO", diff --git a/lib/web3.js b/lib/web3.js index 9385a3b0d..e22b35dac 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -564,7 +564,59 @@ const _mirrorUserEvent = (event, map, collectiveId, block) => { console.log('RAGE QUIT'); console.log(event); console.log(map); -} + console.log(`event.returnValues.memberAddress ${event.returnValues.memberAddress}`); + + const authorUsername = event.returnValues.memberAddress.toLowerCase(); + const member = Meteor.users.findOne({ username: authorUsername }); + + let reserves; + console.log(`shares: ${parseInt(parseInt(_checkPrecedent(authorUsername, precedentCache) - new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), 10)}`); + const shares = parseInt(parseInt(_checkPrecedent(authorUsername, precedentCache) - new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), 10); + const sharesToBurn = parseInt(0 - parseInt(new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), 10); + + console.log(`sharesToBurn: ${sharesToBurn}`); + + precedentCache.push({ + username: authorUsername, + shares: sharesToBurn, + }); + + if (member && member.profile.wallet) { + reserves = member.profile.wallet.reserves; + if (reserves) { + for (let i = 0; i < reserves.length; i += 1) { + if (reserves[i].token === defaults.TOKEN && reserves[i].publicAddress === authorUsername) { + reserves[i].balance = shares; + reserves[i].available = reserves[i].balance; + } + } + } + } else { + reserves = [{ + publicAddress: authorUsername, + token: defaults.TOKEN, + balance: shares, + available: shares, + placed: 0, + }]; + } + const settings = { + profile: { + wallet: { + available: shares, + balance: shares, + address: [{ + hash: authorUsername, + }], + ledger: [], + placed: 0, + reserves, + }, + }, + }; + log(`[web3] Updating user with Ragequit consequences: ${JSON.stringify(reserves)}...`); + migrateAddress(authorUsername, settings); +}; const _getEventBlock = async (blockNumber) => { let block; diff --git a/private/lib/dao.json b/private/lib/dao.json index d9b531d9c..b843c59a8 100644 --- a/private/lib/dao.json +++ b/private/lib/dao.json @@ -214,7 +214,16 @@ }, { "eventName": "Ragequit", - "collectionType": "Contract" + "collectionType": "Contract", + "contract": { + "title": "moloch-map-rage-quit", + "rules": { + "alwaysOn": false, + "quadraticVoting": false, + "balanceVoting": false, + "pollVoting": false + } + } } ] }, From 5730e720b71c12a723c55f1f62c4238c0ad14690 Mon Sep 17 00:00:00 2001 From: Santiago Siri Date: Tue, 17 Dec 2019 16:12:32 +0100 Subject: [PATCH 04/14] creates contracts with ragequit event --- i18n/en.i18n.json | 2 +- imports/api/contracts/Contracts.js | 6 +++- lib/web3.js | 47 +++++++++++++++++++++++++----- 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 909386d16..70b2cded7 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -767,7 +767,7 @@ "moloch-period": "Period", "moloch-results": "Results", "moloch-map-submit-proposal": " ", - "moloch-map-rage-quit": " ", + "moloch-map-rage-quit": "", "moloch-yes": "Yes", "moloch-no": "No", "moloch-tribute": "Tribute to DAO", diff --git a/imports/api/contracts/Contracts.js b/imports/api/contracts/Contracts.js index 29110b408..2fc200c5e 100644 --- a/imports/api/contracts/Contracts.js +++ b/imports/api/contracts/Contracts.js @@ -174,6 +174,10 @@ Schema.Decision = new SimpleSchema({ type: String, optional: true, }, + sharesToBurn: { + type: Number, + optional: true, + }, }); Schema.Contract = new SimpleSchema({ @@ -625,7 +629,7 @@ Schema.Contract = new SimpleSchema({ }, period: { type: String, - allowedValues: ['PROCESS', 'QUEUE', 'VOTING', 'GRACE', 'ABORT', 'COMPLETE', 'PASSED', 'REJECTED', 'ABORTED'], + allowedValues: ['PROCESS', 'QUEUE', 'VOTING', 'GRACE', 'ABORT', 'COMPLETE', 'PASSED', 'REJECTED', 'ABORTED', 'RAGEQUIT'], optional: true, }, }); diff --git a/lib/web3.js b/lib/web3.js index e22b35dac..afbef2ba7 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -8,6 +8,7 @@ import { BigNumber } from 'bignumber.js'; import { migrateAddress, getContractObject, getTransactionObject, parseContent, getFinality } from '/lib/interpreter'; import { log, defaults } from '/lib/const'; +import { Math } from 'core-js'; const Web3 = require('web3'); @@ -561,21 +562,13 @@ const _mirrorCollectiveEvent = (event, map, collectiveId, block) => { }; const _mirrorUserEvent = (event, map, collectiveId, block) => { - console.log('RAGE QUIT'); - console.log(event); - console.log(map); - console.log(`event.returnValues.memberAddress ${event.returnValues.memberAddress}`); - const authorUsername = event.returnValues.memberAddress.toLowerCase(); const member = Meteor.users.findOne({ username: authorUsername }); let reserves; - console.log(`shares: ${parseInt(parseInt(_checkPrecedent(authorUsername, precedentCache) - new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), 10)}`); const shares = parseInt(parseInt(_checkPrecedent(authorUsername, precedentCache) - new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), 10); const sharesToBurn = parseInt(0 - parseInt(new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), 10); - console.log(`sharesToBurn: ${sharesToBurn}`); - precedentCache.push({ username: authorUsername, shares: sharesToBurn, @@ -616,6 +609,44 @@ const _mirrorUserEvent = (event, map, collectiveId, block) => { }; log(`[web3] Updating user with Ragequit consequences: ${JSON.stringify(reserves)}...`); migrateAddress(authorUsername, settings); + + // now create a ragequit contract + const contractDate = new Date(block.timestamp * 1000); + const contract = { + title: parseContent(TAPi18n.__('moloch-map-rage-quit'), event.returnValues), + keyword: `${event.transactionHash}`, + url: `/tx/${event.transactionHash}`, + createdAt: contractDate, + lastUpdate: contractDate, + timestamp: contractDate, + publicAddress: authorUsername, + height: 0, + calendar: contractDate, + importId: `ragequit-${event.logIndex}`, + pollChoiceId: '', + pollId: '', + collectiveId, + poll: [], + decision: { + sharesToBurn: parseInt(new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), + }, + period: 'RAGEQUIT', + signatures: [ + { + _id: member._id, + role: 'AUTHOR', + username: member.username, + status: 'CONFIRMED', + }, + ], + }; + + log(`[web3] Creating a ragequit contract for with importID: ragequit-${event.logIndex} ...`); + + const contractObject = getContractObject(member, contract); + _setContract(contractObject.importId, contractObject); + + // and create a ragequit transaction }; const _getEventBlock = async (blockNumber) => { From 14f2d9522c443fec981681611a9dffe3e6a36dfd Mon Sep 17 00:00:00 2001 From: Santiago Siri Date: Tue, 17 Dec 2019 18:30:18 +0100 Subject: [PATCH 05/14] rage quit transactions persisted across the board --- imports/api/transactions/Transactions.js | 4 ++ lib/web3.js | 57 +++++++++++++++++++++++- private/lib/dao.json | 11 +++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/imports/api/transactions/Transactions.js b/imports/api/transactions/Transactions.js index da172d5c5..2786baae7 100644 --- a/imports/api/transactions/Transactions.js +++ b/imports/api/transactions/Transactions.js @@ -155,6 +155,10 @@ Schema.Transaction = new SimpleSchema({ type: String, optional: true, }, + isRagequit: { + type: Boolean, + optional: true, + }, }); Transactions.attachSchema(Schema.Transaction); diff --git a/lib/web3.js b/lib/web3.js index afbef2ba7..7b3fbedb2 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -561,6 +561,13 @@ const _mirrorCollectiveEvent = (event, map, collectiveId, block) => { } }; +/** +* @summary rage quit mirror persisting in local instance +* @param {object} event with event descriptions from the blockchain +* @param {object} map with info how to write these eventos on the blockchain +* @param {string} collectiveId this is being subscribed to +* @param {object} block with data from chain of this event +*/ const _mirrorUserEvent = (event, map, collectiveId, block) => { const authorUsername = event.returnValues.memberAddress.toLowerCase(); const member = Meteor.users.findOne({ username: authorUsername }); @@ -616,6 +623,7 @@ const _mirrorUserEvent = (event, map, collectiveId, block) => { title: parseContent(TAPi18n.__('moloch-map-rage-quit'), event.returnValues), keyword: `${event.transactionHash}`, url: `/tx/${event.transactionHash}`, + date: contractDate, createdAt: contractDate, lastUpdate: contractDate, timestamp: contractDate, @@ -644,9 +652,56 @@ const _mirrorUserEvent = (event, map, collectiveId, block) => { log(`[web3] Creating a ragequit contract for with importID: ragequit-${event.logIndex} ...`); const contractObject = getContractObject(member, contract); - _setContract(contractObject.importId, contractObject); + const newContractId = _setContract(contractObject.importId, contractObject); // and create a ragequit transaction + const quantity = parseInt(new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10); + const collective = Collectives.findOne({ _id: collectiveId }); + const transactionObject = { + input: { + entityId: member._id, + address: member.username.toLowerCase(), + entityType: 'INDIVIDUAL', + quantity, + currency: defaults.TOKEN, + }, + output: { + entityId: collectiveId, + address: collective.profile.blockchain.publicAddress.toLowerCase(), + entityType: 'COLLECTIVE', + quantity, + currency: defaults.TOKEN, + }, + kind: 'CRYPTO', + contractId: newContractId, + timestamp: new Date(block.timestamp * 1000), + status: 'CONFIRMED', + blockchain: { + tickets: [ + { + hash: block.blockHash, + status: 'CONFIRMED', + value: sharesToBurn.toNumber(), + }, + ], + coin: { + code: defaults.TOKEN, + }, + publicAddress: event.returnValues.memberAddress.toLowerCase(), + score: { + totalConfirmed: sharesToBurn.toString(), + totalPending: '0', + totalFail: '0', + finalConfirmed: sharesToBurn.toNumber(), + finalPending: 0, + finalFail: 0, + value: 0, + }, + }, + isRagequit: true, + }; + const txId = _setTransaction(event.returnValues.memberAddress.toLowerCase(), collectiveId, transactionObject); + log(`[web3] Created a ragequit transaction with txId ${txId} ...`); }; const _getEventBlock = async (blockNumber) => { diff --git a/private/lib/dao.json b/private/lib/dao.json index b843c59a8..811e52434 100644 --- a/private/lib/dao.json +++ b/private/lib/dao.json @@ -93,6 +93,17 @@ "url": "/?period=rejected", "displayToken": false, "displayCount": true + }, + { + "label": "moloch-ragequit", + "icon": "images/decision-ragequit.png", + "iconActivated": "images/decision-ragequit-active.png", + "feed": "user", + "value": true, + "separator": false, + "url": "/?period=ragequit", + "displayToken": false, + "displayCount": true } ], "blockchain" : { From a4cd1667847be82016139b4e96b6043c7b281788 Mon Sep 17 00:00:00 2001 From: Santiago Siri Date: Wed, 18 Dec 2019 17:26:21 +0100 Subject: [PATCH 06/14] first gui for ragequits --- i18n/en.i18n.json | 6 +- .../ui/templates/widgets/feed/feedItem.html | 185 ++++++++++-------- imports/ui/templates/widgets/feed/feedItem.js | 25 +++ public/images/decision-ragequit-active.png | Bin 0 -> 31445 bytes public/images/decision-ragequit.png | Bin 0 -> 32699 bytes public/templates/moloch/css/extra.css | 4 + .../templates/moloch/images/ragequit-icon.png | Bin 0 -> 32680 bytes public/templates/moloch/moloch.json | 3 +- 8 files changed, 138 insertions(+), 85 deletions(-) create mode 100644 public/images/decision-ragequit-active.png create mode 100644 public/images/decision-ragequit.png create mode 100644 public/templates/moloch/images/ragequit-icon.png diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 70b2cded7..ffc0a32ad 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -806,5 +806,9 @@ "moloch-valid-voter": "You can vote", "moloch-invalid-voter": "You are not a member", "moloch-alert-not-member": "The address being used to vote is not a valid member of this DAO.", - "moloch-not-member": "Not a Member" + "moloch-not-member": "Not a Member", + "moloch-period-ragequit": "Ragequit", + "moloch-ragequit": "Ragequits", + "moloch-ragequit-shares-burn": "Burnt shares by Member", + "moloch-ragequit-funds-withdraw": "Withdrawn Funds" } diff --git a/imports/ui/templates/widgets/feed/feedItem.html b/imports/ui/templates/widgets/feed/feedItem.html index 45dac9bd6..719d91ee4 100644 --- a/imports/ui/templates/widgets/feed/feedItem.html +++ b/imports/ui/templates/widgets/feed/feedItem.html @@ -57,15 +57,22 @@
- {{#if electionData}} - - - {{voters}} - + {{#if ragequit}} + + + {{_ 'moloch-period-ragequit'}} + {{else}} -
-
-
+ {{#if electionData}} + + + {{voters}} + + {{else}} +
+
+
+ {{/if}} {{/if}}
@@ -74,104 +81,116 @@ {{#unless ragequit}} - {{#unless onChainVote}} - {{#if quadraticEnabled}} -
- {{{_ 'election-rule-quadratic'}}} - {{> help tooltip='voting-editor-quadratic-tooltip'}} -
- {{/if}} - {{#if balanceEnabled}} +
+ {{#unless onChainVote}} + {{#if quadraticEnabled}} +
+ {{{_ 'election-rule-quadratic'}}} + {{> help tooltip='voting-editor-quadratic-tooltip'}} +
+ {{/if}} + {{#if balanceEnabled}} +
+ {{{_ 'election-rule-balance'}}} + {{> help tooltip='voting-editor-balance-tooltip'}} +
+ {{/if}} + {{else}}
- {{{_ 'election-rule-balance'}}} - {{> help tooltip='voting-editor-balance-tooltip'}} + {{{_ 'election-rule-onchain'}}} + {{> help tooltip='voting-editor-onchain-tooltip'}}
- {{/if}} - {{else}} -
- {{{_ 'election-rule-onchain'}}} - {{> help tooltip='voting-editor-onchain-tooltip'}} -
- {{/unless}} + {{/unless}} +
{{#if requiresClosing}} {{#with closingData}} {{> countdown}} diff --git a/imports/ui/templates/widgets/preview/preview.html b/imports/ui/templates/widgets/preview/preview.html index 5da3a3395..4d3c4c897 100644 --- a/imports/ui/templates/widgets/preview/preview.html +++ b/imports/ui/templates/widgets/preview/preview.html @@ -1,17 +1,36 @@ diff --git a/imports/ui/templates/widgets/preview/preview.js b/imports/ui/templates/widgets/preview/preview.js index 22a4f10a7..6576b7913 100644 --- a/imports/ui/templates/widgets/preview/preview.js +++ b/imports/ui/templates/widgets/preview/preview.js @@ -5,6 +5,7 @@ import { $ } from 'meteor/jquery'; import { stripHTMLfromText } from '/imports/ui/modules/utils'; import { Contracts } from '/imports/api/contracts/Contracts'; +import { templetize, getImage } from '/imports/ui/templates/layout/templater'; import '/imports/ui/templates/widgets/preview/preview.html'; @@ -39,12 +40,23 @@ Template.preview.onCreated(function () { instance.contract.set(contract); } } + + Template.instance().imageTemplate = new ReactiveVar(); + templetize(Template.instance()); }); Template.preview.helpers({ ready() { + console.log(`ready: ${(Template.instance().contract.get() !== undefined)}`); return (Template.instance().contract.get() !== undefined); }, + ragequit() { + return this.ragequit; + }, + passed() { + const thumbUp = Template.instance().contract.get().importId.toUpperCase().match('YES'); + return (thumbUp && thumbUp.length > 0); + }, displayTitle() { const contract = Template.instance().contract.get(); const title = stripHTMLfromText(contract.title); @@ -63,4 +75,7 @@ Template.preview.helpers({ url() { return Template.instance().contract.get().url; }, + getImage(pic) { + return getImage(Template.instance().imageTemplate.get(), pic); + }, }); diff --git a/imports/ui/templates/widgets/tally/tally.js b/imports/ui/templates/widgets/tally/tally.js index 97fcdf0a0..1feb366f9 100644 --- a/imports/ui/templates/widgets/tally/tally.js +++ b/imports/ui/templates/widgets/tally/tally.js @@ -21,10 +21,11 @@ const _voteToContract = (post, contract, hidePost, winningBallot, openFeed) => { senderId: post.input.entityId, receiverId: post.output.entityId, isVote: true, - hidePost: (post.isRagequit) ? true : hidePost, + hidePost: (post.isRagequit) ? false : hidePost, winningBallot, isRevoke: (post.input.entityType !== 'INDIVIDUAL'), isRagequit: post.isRagequit, + contractId: post.contractId, }; if (openFeed) { // for a feed in a general context (home page) diff --git a/imports/ui/templates/widgets/transaction/transaction.html b/imports/ui/templates/widgets/transaction/transaction.html index 006828c22..ee4271c2e 100644 --- a/imports/ui/templates/widgets/transaction/transaction.html +++ b/imports/ui/templates/widgets/transaction/transaction.html @@ -77,57 +77,51 @@ {{/if}} {{#if ragequit}} - -
- - {{_ 'moloch-period-ragequit'}} -
- - {{else}} - -
- - - - {{/if}} - {{#if isRevoke}} - -
- {{#with receiver}} - {{> avatar size=24 profile=this._id includeName=true includeNation=true editable=false microFont=true disabled=false includeRole=false flex=true}} - {{/with}} -
- + {{#unless hidePost}} + {{#with ragequitPost}} + {{> preview}} + {{/with}} + {{/unless}} {{else}} - {{#if isCrypto}} - {{#unless hidePost}} - {{> preview contractId=this.receiverId}} - {{/unless}} + {{#if isRevoke}} + +
+ {{#with receiver}} + {{> avatar size=24 profile=this._id includeName=true includeNation=true editable=false microFont=true disabled=false includeRole=false flex=true}} + {{/with}} +
+ {{else}} - {{#unless isSubsidy}} - -
-
-
-
-
-
-
-
-
+ {{#if isCrypto}} + {{#unless hidePost}} + {{> preview contractId=this.receiverId}} + {{/unless}} + {{else}} + {{#unless isSubsidy}} + +
+
+
+
+
+
+
+
+
+
+ {{ballotOption}}
- {{ballotOption}}
-
- - {{#unless hidePost}} - {{> preview contractId=this.receiverId}} + + {{#unless hidePost}} + {{> preview contractId=this.receiverId}} + {{/unless}} {{/unless}} - {{/unless}} + {{/if}} {{/if}} {{/if}} diff --git a/imports/ui/templates/widgets/transaction/transaction.js b/imports/ui/templates/widgets/transaction/transaction.js index d7458e5ea..86255ace5 100644 --- a/imports/ui/templates/widgets/transaction/transaction.js +++ b/imports/ui/templates/widgets/transaction/transaction.js @@ -293,6 +293,14 @@ Template.transaction.helpers({ } return getImage(Template.instance().imageTemplate.get(), 'arrow-right'); }, + ragequitPost() { + const post = { + contractId: this.contractId, + ragequit: true, + }; + console.log(post); + return post; + }, getImage(pic) { return getImage(Template.instance().imageTemplate.get(), pic); }, diff --git a/public/templates/moloch/css/extra.css b/public/templates/moloch/css/extra.css index 420edd617..f2a3f65e4 100644 --- a/public/templates/moloch/css/extra.css +++ b/public/templates/moloch/css/extra.css @@ -1062,20 +1062,43 @@ h4 { margin-top: 0px; } -.transaction-ragequit { -float: right; - font-size: 0.45em; - /* background: black; */ - padding: 0px 4px; - color: #7d849f; - text-transform: uppercase; - line-height: 12px; - border-radius: 3px; - margin-top: -2px; - margin: 1px -6px 0px 5px; +.transaction-action { + float: right; + font-size: 0.5em; + font-weight: 400; + padding: 4px 4px; + color: #7d849f; + text-transform: uppercase; + line-height: 12px; + border-radius: 3px; + margin-top: -2px; + margin: 2px -4px 0px 6px; + cursor:pointer; } + +.transaction-action:hover { + text-decoration: underline; +} + +.transaction-action-ragequit { + color: #ff9a00; +} + +.transaction-action-passed { + color: #01c190; +} + +.transaction-action-rejected { + color: #ff3d67; +} + .transaction-signal { width: 16px; height: 16px; + margin: 0px 2px 1px; +} + +.title-ballot { + margin-top: 0px; } diff --git a/public/templates/moloch/images/passed.png b/public/templates/moloch/images/passed.png new file mode 100644 index 0000000000000000000000000000000000000000..074b74b8fcf251a47904443fd7b90131667d27b7 GIT binary patch literal 29079 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 diff --git a/public/templates/moloch/images/rejected.png b/public/templates/moloch/images/rejected.png new file mode 100644 index 0000000000000000000000000000000000000000..e2fb90602c4eda2e8bea89ebbb7a22013838dd94 GIT binary patch literal 20854 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 Date: Thu, 19 Dec 2019 16:19:19 +0100 Subject: [PATCH 14/14] burns are negtives --- lib/web3.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web3.js b/lib/web3.js index 7b3fbedb2..4cc5998f5 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -636,7 +636,7 @@ const _mirrorUserEvent = (event, map, collectiveId, block) => { collectiveId, poll: [], decision: { - sharesToBurn: parseInt(new BigNumber(event.returnValues.sharesToBurn).toNumber(), 10), + sharesToBurn, }, period: 'RAGEQUIT', signatures: [