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:
viktor 2017-06-19 15:27:49 +03:00
parent e668d26736
commit ec3ecccec7
13 changed files with 184 additions and 47 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -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>

View File

@ -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

View File

@ -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;
}

View File

@ -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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 187 KiB

View File

@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 60 KiB