New contract definition: mining-payout keys pair storage is added; affected key and its type fields are added for voting dapp; It's closes #1
This commit is contained in:
parent
e668d26736
commit
ec3ecccec7
|
@ -514,7 +514,7 @@ function getBallots(api, func, acc, contractAddress, cb) {
|
|||
|
||||
var ballotsArrayOut = [];
|
||||
var iasync = [];
|
||||
var ballotDataCount = 10;
|
||||
var ballotDataCount = 12;
|
||||
for (var i = 0; i < ballotsArray.length; i++) {
|
||||
iasync.push(0);
|
||||
getBallotMemo(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
|
@ -562,6 +562,16 @@ function getBallots(api, func, acc, contractAddress, cb) {
|
|||
ballotsArrayOut = getBallotsPropertyCallback("miningKey", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKey(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
iasync[_i]++;
|
||||
ballotsArrayOut = getBallotsPropertyCallback("affectedKey", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKeyType(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
iasync[_i]++;
|
||||
ballotsArrayOut = getBallotsPropertyCallback("affectedKeyType", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
});
|
||||
|
||||
getBallotOwner(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
iasync[_i]++;
|
||||
ballotsArrayOut = getBallotsPropertyCallback("owner", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
|
@ -642,6 +652,16 @@ function getBallotMiningKey(api, acc, ballotID, i, contractAddr, cb) {
|
|||
getContractAddressDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
}
|
||||
|
||||
function getBallotAffectedKey(api, acc, ballotID, i, contractAddr, cb) {
|
||||
var func = "getBallotAffectedKey(uint256)";
|
||||
getContractAddressDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
}
|
||||
|
||||
function getBallotAffectedKeyType(api, acc, ballotID, i, contractAddr, cb) {
|
||||
var func = "getBallotAffectedKeyType(uint256)";
|
||||
getContractIntDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
}
|
||||
|
||||
function getBallotOwner(api, acc, ballotID, i, contractAddr, cb) {
|
||||
var func = "getBallotOwner(uint256)";
|
||||
getContractStringDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
|
@ -649,7 +669,7 @@ function getBallotOwner(api, acc, ballotID, i, contractAddr, cb) {
|
|||
|
||||
function getBallotData(api, acc, ballotID, contractAddress, cb) {
|
||||
var iasync = 0;
|
||||
var ballotDataCount = 10;
|
||||
var ballotDataCount = 12;
|
||||
var ballot = {};
|
||||
getBallotMemo(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
|
@ -696,6 +716,16 @@ function getBallotData(api, acc, ballotID, contractAddress, cb) {
|
|||
ballot = getBallotPropertyCallback("miningKey", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKey(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
ballot = getBallotPropertyCallback("affectedKey", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKeyType(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
ballot = getBallotPropertyCallback("affectedKeyType", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
});
|
||||
|
||||
getBallotOwner(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
ballot = getBallotPropertyCallback("owner", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
|
@ -747,6 +777,22 @@ function ballotViewObject(ballotID, ballotPropsObj, isVotingEnabled) {
|
|||
//miningKey
|
||||
var miningKey = ballotPropsObj["miningKey"];
|
||||
if (miningKey.length > 40) miningKey = "0x" + miningKey.substr(miningKey.length - 40);
|
||||
//affectedKey
|
||||
var affectedKey = ballotPropsObj["affectedKey"];
|
||||
if (affectedKey.length > 40) affectedKey = "0x" + affectedKey.substr(affectedKey.length - 40);
|
||||
//affectedKeyType
|
||||
var affectedKeyType;
|
||||
switch(ballotPropsObj["affectedKeyType"]) {
|
||||
case 0:
|
||||
affectedKeyType = "mining key";
|
||||
break;
|
||||
case 1:
|
||||
affectedKeyType = "voting key";
|
||||
break;
|
||||
case 2:
|
||||
affectedKeyType = "payout key";
|
||||
break;
|
||||
}
|
||||
//time to start/end
|
||||
var timeToVotingStart = getDateDiff(Math.floor(Date.now() / 1000), parseInt(ballotPropsObj["votingStart"]));
|
||||
var timeToVotingEnd = getDateDiff(Math.floor(Date.now() / 1000), parseInt(ballotPropsObj["votingEnd"]));
|
||||
|
@ -798,6 +844,10 @@ function ballotViewObject(ballotID, ballotPropsObj, isVotingEnabled) {
|
|||
<p class="vote-body-description">
|
||||
` + miningKey + `
|
||||
</p>
|
||||
<p class="vote-body-title-secondary">Affected key (` + affectedKeyType + `)</p>
|
||||
<p class="vote-body-description">
|
||||
` + affectedKey + `
|
||||
</p>
|
||||
</div>
|
||||
<div class="vote-body-i">
|
||||
<p class="vote-body-title">Title</p>
|
||||
|
@ -937,14 +987,14 @@ $(function() {
|
|||
var ballotViewObj = {
|
||||
ballotID: generateBallotID(),
|
||||
memo: $("#memo").val(),
|
||||
miningKey: $("#key").val(),
|
||||
affectedKey: $("#key").val(),
|
||||
affectedKeyType: 0,
|
||||
miningKey: $("#mining-key").val(),
|
||||
affectedKey: $("#affected-key").val(),
|
||||
affectedKeyType: parseInt($("#affected-key-type").val()),
|
||||
owner: votingKey,
|
||||
addAction: $("input[name=type]:checked").val()
|
||||
};
|
||||
var validatorViewObj = {
|
||||
miningKey: $("#key").val(),
|
||||
miningKey: $("#mining-key").val(),
|
||||
fullName: $("#full-name").val(),
|
||||
streetName: $("#address").val(),
|
||||
state: $("#state").val(),
|
||||
|
@ -952,10 +1002,11 @@ $(function() {
|
|||
licenseID: $("#license-id").val(),
|
||||
licenseExpiredAt: new Date($("#license-expiration").val()).getTime() / 1000,
|
||||
};
|
||||
var isAddress = web3.isAddress($("#key").val());
|
||||
if (!isAddress) {
|
||||
var isAddress1 = web3.isAddress($("#mining-key").val());
|
||||
var isAddress2 = web3.isAddress($("#affected-key").val());
|
||||
if (!isAddress1 || !isAddress2) {
|
||||
$(".loading-container").hide();
|
||||
showAlert(null, "Incorrect mining key");
|
||||
showAlert(null, "One or both keys are incorrect");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ function getBallots(api, func, acc, contractAddress, cb) {
|
|||
|
||||
var ballotsArrayOut = [];
|
||||
var iasync = [];
|
||||
var ballotDataCount = 10;
|
||||
var ballotDataCount = 12;
|
||||
for (var i = 0; i < ballotsArray.length; i++) {
|
||||
iasync.push(0);
|
||||
getBallotMemo(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
|
@ -76,6 +76,16 @@ function getBallots(api, func, acc, contractAddress, cb) {
|
|||
ballotsArrayOut = getBallotsPropertyCallback("miningKey", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKey(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
iasync[_i]++;
|
||||
ballotsArrayOut = getBallotsPropertyCallback("affectedKey", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKeyType(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
iasync[_i]++;
|
||||
ballotsArrayOut = getBallotsPropertyCallback("affectedKeyType", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
});
|
||||
|
||||
getBallotOwner(api, acc, ballotsArray[i], i, contractAddress, function(_i, resp) {
|
||||
iasync[_i]++;
|
||||
ballotsArrayOut = getBallotsPropertyCallback("owner", api, contractAddress, resp, _i, iasync, ballotsArray, ballotDataCount, ballotsArrayOut, cb);
|
||||
|
|
|
@ -43,6 +43,16 @@ function getBallotMiningKey(api, acc, ballotID, i, contractAddr, cb) {
|
|||
getContractAddressDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
}
|
||||
|
||||
function getBallotAffectedKey(api, acc, ballotID, i, contractAddr, cb) {
|
||||
var func = "getBallotAffectedKey(uint256)";
|
||||
getContractAddressDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
}
|
||||
|
||||
function getBallotAffectedKeyType(api, acc, ballotID, i, contractAddr, cb) {
|
||||
var func = "getBallotAffectedKeyType(uint256)";
|
||||
getContractIntDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
}
|
||||
|
||||
function getBallotOwner(api, acc, ballotID, i, contractAddr, cb) {
|
||||
var func = "getBallotOwner(uint256)";
|
||||
getContractStringDataFromAddressKey(api, acc, func, ballotID, i, contractAddr, cb);
|
||||
|
@ -50,7 +60,7 @@ function getBallotOwner(api, acc, ballotID, i, contractAddr, cb) {
|
|||
|
||||
function getBallotData(api, acc, ballotID, contractAddress, cb) {
|
||||
var iasync = 0;
|
||||
var ballotDataCount = 10;
|
||||
var ballotDataCount = 12;
|
||||
var ballot = {};
|
||||
getBallotMemo(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
|
@ -97,6 +107,16 @@ function getBallotData(api, acc, ballotID, contractAddress, cb) {
|
|||
ballot = getBallotPropertyCallback("miningKey", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKey(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
ballot = getBallotPropertyCallback("affectedKey", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
});
|
||||
|
||||
getBallotAffectedKeyType(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
ballot = getBallotPropertyCallback("affectedKeyType", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
});
|
||||
|
||||
getBallotOwner(api, acc, ballotID, null, contractAddress, function(_i, resp) {
|
||||
iasync++;
|
||||
ballot = getBallotPropertyCallback("owner", api, contractAddress, ballotID, resp, iasync, ballot, ballotDataCount, cb);
|
||||
|
|
|
@ -32,6 +32,22 @@ function ballotViewObject(ballotID, ballotPropsObj, isVotingEnabled) {
|
|||
//miningKey
|
||||
var miningKey = ballotPropsObj["miningKey"];
|
||||
if (miningKey.length > 40) miningKey = "0x" + miningKey.substr(miningKey.length - 40);
|
||||
//affectedKey
|
||||
var affectedKey = ballotPropsObj["affectedKey"];
|
||||
if (affectedKey.length > 40) affectedKey = "0x" + affectedKey.substr(affectedKey.length - 40);
|
||||
//affectedKeyType
|
||||
var affectedKeyType;
|
||||
switch(ballotPropsObj["affectedKeyType"]) {
|
||||
case 0:
|
||||
affectedKeyType = "mining key";
|
||||
break;
|
||||
case 1:
|
||||
affectedKeyType = "voting key";
|
||||
break;
|
||||
case 2:
|
||||
affectedKeyType = "payout key";
|
||||
break;
|
||||
}
|
||||
//time to start/end
|
||||
var timeToVotingStart = getDateDiff(Math.floor(Date.now() / 1000), parseInt(ballotPropsObj["votingStart"]));
|
||||
var timeToVotingEnd = getDateDiff(Math.floor(Date.now() / 1000), parseInt(ballotPropsObj["votingEnd"]));
|
||||
|
@ -83,6 +99,10 @@ function ballotViewObject(ballotID, ballotPropsObj, isVotingEnabled) {
|
|||
<p class="vote-body-description">
|
||||
` + miningKey + `
|
||||
</p>
|
||||
<p class="vote-body-title-secondary">Affected key (` + affectedKeyType + `)</p>
|
||||
<p class="vote-body-description">
|
||||
` + affectedKey + `
|
||||
</p>
|
||||
</div>
|
||||
<div class="vote-body-i">
|
||||
<p class="vote-body-title">Title</p>
|
||||
|
|
|
@ -103,14 +103,14 @@ $(function() {
|
|||
var ballotViewObj = {
|
||||
ballotID: generateBallotID(),
|
||||
memo: $("#memo").val(),
|
||||
miningKey: $("#key").val(),
|
||||
affectedKey: $("#key").val(),
|
||||
affectedKeyType: 0,
|
||||
miningKey: $("#mining-key").val(),
|
||||
affectedKey: $("#affected-key").val(),
|
||||
affectedKeyType: parseInt($("#affected-key-type").val()),
|
||||
owner: votingKey,
|
||||
addAction: $("input[name=type]:checked").val()
|
||||
};
|
||||
var validatorViewObj = {
|
||||
miningKey: $("#key").val(),
|
||||
miningKey: $("#mining-key").val(),
|
||||
fullName: $("#full-name").val(),
|
||||
streetName: $("#address").val(),
|
||||
state: $("#state").val(),
|
||||
|
@ -118,10 +118,11 @@ $(function() {
|
|||
licenseID: $("#license-id").val(),
|
||||
licenseExpiredAt: new Date($("#license-expiration").val()).getTime() / 1000,
|
||||
};
|
||||
var isAddress = web3.isAddress($("#key").val());
|
||||
if (!isAddress) {
|
||||
var isAddress1 = web3.isAddress($("#mining-key").val());
|
||||
var isAddress2 = web3.isAddress($("#affected-key").val());
|
||||
if (!isAddress1 || !isAddress2) {
|
||||
$(".loading-container").hide();
|
||||
showAlert(null, "Incorrect mining key");
|
||||
showAlert(null, "One or both keys are incorrect");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -37,28 +37,31 @@
|
|||
}
|
||||
|
||||
select {
|
||||
outline: none;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
}
|
||||
|
||||
select {
|
||||
transition: 0.3s border-color;
|
||||
width: 100%;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #eee;
|
||||
|
||||
&:focus {
|
||||
border-color: #08b3f2;
|
||||
}
|
||||
}
|
||||
|
||||
select {
|
||||
padding: 0 15px;
|
||||
height: 36px;
|
||||
width: 380px;
|
||||
font-size: 14px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
select {
|
||||
outline: none;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
}
|
||||
|
||||
select {
|
||||
transition: 0.3s border-color;
|
||||
width: 100%;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #eee;
|
||||
|
||||
&:focus {
|
||||
border-color: #08b3f2;
|
||||
}
|
||||
}
|
||||
|
||||
select {
|
||||
padding: 0 15px;
|
||||
height: 36px;
|
||||
width: 380px;
|
||||
font-size: 11px;
|
||||
background: #fff;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
&-title {
|
||||
%title {
|
||||
position: relative;
|
||||
margin-bottom: 20px;
|
||||
color: #8197a2;
|
||||
|
@ -37,6 +37,15 @@
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
&-title {
|
||||
@extend %title;
|
||||
|
||||
&-secondary {
|
||||
@extend %title;
|
||||
margin-top: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
&-description {
|
||||
color: #444;
|
||||
line-height: 24px;
|
||||
|
|
BIN
ballot.png
BIN
ballot.png
Binary file not shown.
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 144 KiB |
BIN
ballots.png
BIN
ballots.png
Binary file not shown.
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 187 KiB |
|
@ -22,10 +22,15 @@
|
|||
and a reason.
|
||||
</div>
|
||||
<label for="key">Mining key</label>
|
||||
<input type="text" id="key">
|
||||
<div class="new-ballot-description">
|
||||
Affected mining key
|
||||
</div>
|
||||
<input type="text" id="mining-key">
|
||||
<label for="affected-key-type">Affected key type</label>
|
||||
<select type="text" id="affected-key-type" class="key-select">
|
||||
<option name="affected-key-type-select" value="0">mining key</option>
|
||||
<option name="affected-key-type-select" value="1">voting key</option>
|
||||
<option name="affected-key-type-select" value="2" selected>payout key</option>
|
||||
</select>
|
||||
<label for="affected-key">Affected key</label>
|
||||
<input type="text" id="affected-key">
|
||||
<input type="radio" name="type" id="type_add" value=1 checked>
|
||||
<label class="radio" for="type_add">Add</label>
|
||||
<input type="radio" name="type" id="type_remove" value=0>
|
||||
|
|
BIN
new_ballot.png
BIN
new_ballot.png
Binary file not shown.
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 60 KiB |
Loading…
Reference in New Issue