Creation ballots of all types

This commit is contained in:
viktor 2017-12-20 17:30:54 +03:00
parent c7ebedd1a8
commit d084e9dec2
9 changed files with 166 additions and 36 deletions

View File

@ -11,7 +11,6 @@ import { inject, observer } from 'mobx-react';
class App extends Component {
render() {
const { commonStore } = this.props;
console.log(commonStore.loading)
const loading = commonStore.loading ? <Loading /> : ''
return (
<div>

View File

@ -13,7 +13,7 @@ export class BallotKeysMetadata extends React.Component {
<div className="form-el">
<label for="key">Affected Key</label>
<input type="text" id="key"
value={ballotStore.affectedKey}
value={ballotStore.ballotKeys.affectedKey}
onChange={e => ballotStore.changeBallotMetadata(e, "affectedKey", "ballotKeys")}
/>
<p className="hint">
@ -25,7 +25,7 @@ export class BallotKeysMetadata extends React.Component {
<div className="form-el">
<label for="key">Mining Key</label>
<input type="text" id="key"
value={ballotStore.miningKey}
value={ballotStore.ballotKeys.miningKey}
onChange={e => ballotStore.changeBallotMetadata(e, "miningKey", "ballotKeys")}
/>
<p className="hint">
@ -37,7 +37,7 @@ export class BallotKeysMetadata extends React.Component {
<div className="form-el">
<label for="memo">Memo</label>
<input type="text" id="memo"
value={ballotStore.memo}
value={ballotStore.ballotKeys.memo}
onChange={e => ballotStore.changeBallotMetadata(e, "memo", "ballotKeys")}
/>
<p className="hint">

View File

@ -13,8 +13,8 @@ export class BallotMinThresholdMetadata extends React.Component {
<div className="form-el">
<label for="key">Proposed Value</label>
<input type="number" id="key"
value={ballotStore.affectedKey}
onChange={e => ballotStore.changeBallotMetadata(e, "proposedValue")}
value={ballotStore.ballotMinThreshold.proposedValue}
onChange={e => ballotStore.changeBallotMetadata(e, "proposedValue", "ballotMinThreshold")}
/>
<p className="hint">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod

View File

@ -1,5 +1,6 @@
import React from 'react';
import { inject, observer } from "mobx-react";
import Select from 'react-select';
@inject("ballotStore")
@observer
@ -13,8 +14,8 @@ export class BallotProxyMetadata extends React.Component {
<div className="form-el">
<label for="key">Proposed Address</label>
<input type="text" id="key"
value={ballotStore.affectedKey}
onChange={e => ballotStore.changeBallotMetadata(e, "proposedAddress")}
value={ballotStore.ballotProxy.proposedAddress}
onChange={e => ballotStore.changeBallotMetadata(e, "proposedAddress", "ballotProxy")}
/>
<p className="hint">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
@ -22,6 +23,27 @@ export class BallotProxyMetadata extends React.Component {
</div>
</div>
<div className="right">
<div className="form-el">
<label for="us-state">Contract Type</label>
<Select id="us-state"
value={ballotStore.ballotProxy.contractType}
onChange={e => ballotStore.changeBallotMetadata(e, "contractType", "ballotProxy")}
options={[
{ value: '', label: '' },
{ value: '1', label: 'KeysManager' },
{ value: '2', label: 'VotingToChangeKeys' },
{ value: '3', label: 'VotingToChangeMinThreshold' },
{ value: '4', label: 'VotingToChangeProxy' },
{ value: '5', label: 'BallotsStorage' },
]}
>
</Select>
<p className="hint">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
</p>
</div>
</div>
<div className="left">
<div className="form-el">
<label for="key">Ballot End</label>
<input type="date" id="key"

View File

@ -80,16 +80,21 @@ export class NewBallot extends React.Component {
return false;
}
}
let isAddress = contractsStore.web3Instance.isAddress(ballotStore.ballotProxy.proposedAddress);
if (!isAddress) {
swal("Warning!", `Ballot proposedAddress isn't address`, "warning");
commonStore.hideLoading();
return false;
}
}
return true;
}
onClick() {
const { commonStore, contractsStore, ballotStore } = this.props;
commonStore.showLoading();
const isFormValid = this.checkValidation();
if (isFormValid) {
createBallotForKeys = () => {
const { ballotStore, contractsStore } = this.props;
const curDate = new Date();
const curDateInSeconds = moment(curDate).unix();
const inputToMethod = [
@ -101,10 +106,64 @@ export class NewBallot extends React.Component {
ballotStore.ballotType
];
console.log(inputToMethod)
contractsStore.votingToChangeKeys.votingToChangeKeysInstance.methods.createVotingForKeys(
let method = contractsStore.votingToChangeKeys.votingToChangeKeysInstance.methods.createVotingForKeys(
...inputToMethod
)
.send({from: contractsStore.votingKey})
).send({from: contractsStore.votingKey});
return method;
}
createBallotForMinThreshold = () => {
const { ballotStore, contractsStore } = this.props;
const curDate = new Date();
const curDateInSeconds = moment(curDate).unix();
const inputToMethod = [
curDateInSeconds,
ballotStore.endTimeUnix,
ballotStore.ballotMinThreshold.proposedValue,
];
console.log(inputToMethod)
let method = contractsStore.votingToChangeMinThreshold.votingToChangeMinThresholdInstance.methods.createBallotToChangeThreshold(
...inputToMethod
).send({from: contractsStore.votingKey});
return method;
}
createBallotForProxy = () => {
const { ballotStore, contractsStore } = this.props;
const curDate = new Date();
const curDateInSeconds = moment(curDate).unix();
const inputToMethod = [
curDateInSeconds,
ballotStore.endTimeUnix,
ballotStore.ballotProxy.proposedAddress,
ballotStore.ballotProxy.contractType,
];
console.log(inputToMethod)
console.log(contractsStore.votingToChangeProxy)
let method = contractsStore.votingToChangeProxy.votingToChangeProxyInstance.methods.createBallotToChangeProxyAddress(
...inputToMethod
).send({from: contractsStore.votingKey})
return method;
}
onClick = async () => {
const { commonStore, contractsStore, ballotStore } = this.props;
commonStore.showLoading();
const isFormValid = this.checkValidation();
if (isFormValid) {
let methodToCreateBallot;
switch (ballotStore.ballotType) {
case ballotStore.BallotType.keys:
methodToCreateBallot = this.createBallotForKeys;
break;
case ballotStore.BallotType.minThreshold:
methodToCreateBallot = this.createBallotForMinThreshold;
break;
case ballotStore.BallotType.proxy:
methodToCreateBallot = this.createBallotForProxy;
break;
}
methodToCreateBallot()
.on("error", (e) => {
commonStore.hideLoading();
swal("Error!", e.message, "error");

View File

@ -42,8 +42,56 @@ export class Validator extends React.Component {
onChange={e => validatorStore.changeValidatorMetadata(e, "state")}
options={[
{ value: '', label: '' },
{ value: 'Alabama', label: 'Alabama' },
{ value: 'Florida', label: 'Florida' },
{ value: "Alabama", label: "Alabama" },
{ value: "Alaska", label: "Alaska" },
{ value: "Arizona", label: "Arizona" },
{ value: "Arkanzas", label: "Arkanzas" },
{ value: "California", label: "California" },
{ value: "Colorado", label: "Colorado" },
{ value: "Connecticut", label: "Connecticut" },
{ value: "Delaware", label: "Delaware" },
{ value: "Florida", label: "Florida" },
{ value: "Georgia", label: "Georgia" },
{ value: "Hawaii", label: "Hawaii" },
{ value: "Idaho", label: "Idaho" },
{ value: "Illinois", label: "Illinois" },
{ value: "Indiana", label: "Indiana" },
{ value: "Iowa", label: "Iowa" },
{ value: "Kansas", label: "Kansas" },
{ value: "Kentucky", label: "Kentucky" },
{ value: "Louisianna", label: "Louisianna" },
{ value: "Maine", label: "Maine" },
{ value: "Maryland", label: "Maryland" },
{ value: "Massachusetts", label: "Massachusetts" },
{ value: "Michigan", label: "Michigan" },
{ value: "Minnesota", label: "Minnesota" },
{ value: "Mississippi", label: "Mississippi" },
{ value: "Missouri", label: "Missouri" },
{ value: "Montana", label: "Montana" },
{ value: "Nebraska", label: "Nebraska" },
{ value: "Nevada", label: "Nevada" },
{ value: "New Hampshire", label: "New Hampshire" },
{ value: "New Jersey", label: "New Jersey" },
{ value: "New Mexico", label: "New Mexico" },
{ value: "New York", label: "New York" },
{ value: "North Carolina", label: "North Carolina" },
{ value: "North Dakota", label: "North Dakota" },
{ value: "Ohio", label: "Ohio" },
{ value: "Oklahoma", label: "Oklahoma" },
{ value: "Oregon", label: "Oregon" },
{ value: "Pennsylvania", label: "Pennsylvania" },
{ value: "Rhode Island", label: "Rhode Island" },
{ value: "South California", label: "South California" },
{ value: "South Dakota", label: "South Dakota" },
{ value: "Tennessee", label: "Tennessee" },
{ value: "Texas", label: "Texas" },
{ value: "Utah", label: "Utah" },
{ value: "Vermont", label: "Vermont" },
{ value: "Virginia", label: "Virginia" },
{ value: "Washington", label: "Washington" },
{ value: "West Virginia", label: "West Virginia" },
{ value: "Wisconsin", label: "Wisconsin" },
{ value: "Wyomi", label: "Wyomi" }
]}
>
</Select>

View File

@ -7,19 +7,19 @@ export default class VotingToChangeProxy {
constructor(){
if(window.web3.currentProvider){
let web3_10 = new Web3(window.web3.currentProvider);
this.votingToChangeKeysInstance = new web3_10.eth.Contract(votingToChangeProxyABI, VOTING_TO_CHANGE_PROXY);
this.votingToChangeProxyInstance = new web3_10.eth.Contract(votingToChangeProxyABI, VOTING_TO_CHANGE_PROXY);
}
}
createBallotToChangeProxyAddress({startTime, endTime, proposedValue, sender}){
return this.votingToChangeKeysInstance.methods.createVotingForKeys(startTime, endTime, proposedValue).send({from: sender})
createBallotToChangeProxyAddress({startTime, endTime, proposedValue, contractType, sender}){
return this.votingToChangeProxyInstance.methods.createBallotToChangeProxyAddress(startTime, endTime, proposedValue, contractType).send({from: sender})
}
vote({id, choice, sender}){
return this.votingToChangeKeysInstance.methods.vote(id, choice).send({from: sender})
return this.votingToChangeProxyInstance.methods.vote(id, choice).send({from: sender})
}
finalize({id, sender}){
return this.votingToChangeKeysInstance.methods.finalize(id, id).send({from: sender})
return this.votingToChangeProxyInstance.methods.finalize(id, id).send({from: sender})
}
}

View File

@ -42,7 +42,8 @@ class BallotStore {
};
this.ballotProxy = {
proposedAddress: ""
proposedAddress: "",
contractType: ""
};
}
@ -113,11 +114,12 @@ class BallotStore {
@action("change ballot metadata")
changeBallotMetadata = (e, field, parent) => {
let newVal = e?(e.target?e.target.value:e.value):"";
if (parent)
this[parent][field] = e.target.value;
this[parent][field] = newVal;
else
this[field] = e.target.value;
console.log("ballot metadata", field, this[field])
this[field] = newVal;
console.log("ballot metadata", field, parent?this[parent][field]:this[field])
}
}

View File

@ -20,7 +20,7 @@ class ValidatorStore {
@action("change validator metadata")
changeValidatorMetadata = (e, field) => {
this[field] = e?(e.target?e.target.value:e.label):"";
this[field] = e?(e.target?e.target.value:e.value):"";
console.log("validator metadata", field, this[field])
}
}