Merge branch 'core' of github.com:poanetwork/poa-dapps-voting into core

This commit is contained in:
Roman Storm 2017-12-30 16:00:14 -08:00
commit bce23f8573
13 changed files with 92 additions and 38 deletions

View File

@ -34,8 +34,7 @@ Path: `./src/contracts/addresses.js`
```
module.exports = {
KEYS_MANAGER_ADDRESS: '0xfc90125492e58dbfe80c0bfb6a2a759c4f703ca8',
VOTING_TO_CHANGE_KEYS_ADDRESS: '0x49df4ec19243263e5db22da5865b4f482b8323a0',
VOTING_TO_CHANGE_KEYS_ADDRESS: '0x49df4ec19243263e5db22da5865b4f482b8323a0',
VOTING_TO_CHANGE_MIN_THRESHOLD: '0x8829ebe113535826e8af17ed51f83755f675789a',
VOTING_TO_CHANGE_PROXY: '0x6b728399b41a38d4109f7af2213d4cc31ca87812',
METADATA_ADDRESS: '0xcBB2912666c7e8023B7ec78B6842702eB26336aC',

44
package-lock.json generated
View File

@ -4588,13 +4588,6 @@
}
}
},
"string_decoder": {
"version": "1.0.1",
"bundled": true,
"requires": {
"safe-buffer": "5.0.1"
}
},
"string-width": {
"version": "1.0.2",
"bundled": true,
@ -4604,6 +4597,13 @@
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.0.1",
"bundled": true,
"requires": {
"safe-buffer": "5.0.1"
}
},
"stringstream": {
"version": "0.0.5",
"bundled": true,
@ -6561,6 +6561,11 @@
"resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
"integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU="
},
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
},
"lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
@ -9301,6 +9306,15 @@
"prop-types": "15.6.0"
}
},
"react-places-autocomplete": {
"version": "5.4.3",
"resolved": "https://registry.npmjs.org/react-places-autocomplete/-/react-places-autocomplete-5.4.3.tgz",
"integrity": "sha512-NXTYVLyYESsW5LgYlOP3+7Bs+mWeXK8KAqrht2X48+cPYFHmT/S8BNnIRUxpmZyS036s1wuItuwpCJ53nYR/zQ==",
"requires": {
"lodash.debounce": "4.0.8",
"prop-types": "15.6.0"
}
},
"react-router": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz",
@ -10279,14 +10293,6 @@
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
"integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM="
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
},
"string-length": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
@ -10329,6 +10335,14 @@
"function-bind": "1.1.1"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",

View File

@ -48,6 +48,7 @@
"react": "^16.2.0",
"react-dev-utils": "^4.2.1",
"react-dom": "^16.2.0",
"react-places-autocomplete": "^5.4.3",
"react-router-dom": "^4.2.2",
"react-select": "^1.1.0",
"style-loader": "0.19.0",

View File

@ -19,7 +19,8 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>PoA governance dApp</title>
<title>POA Network Governance DApp</title>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD97qDOBYZ2fH86Wq1vzhDOiSUsZGVqbVQ&libraries=places"></script>
</head>
<body>
<noscript>

View File

@ -36,7 +36,7 @@ export class BallotKeysMetadata extends React.Component {
<div className="left">
<div className="form-el">
<label htmlFor="key">Ballot End</label>
<input type="date" id="key"
<input type="datetime-local" id="key"
value={ballotStore.endTime}
onChange={e => ballotStore.changeBallotMetadata(e, "endTime")}
/>

View File

@ -215,7 +215,7 @@ export class BallotMinThresholdCard extends React.Component {
}
render () {
let { commonStore, contractsStore } = this.props;
let { contractsStore } = this.props;
let ballotClass = this.hideCard() ? "ballots-i display-none" : "ballots-i";
return (
<div className={ballotClass}>

View File

@ -24,7 +24,7 @@ export class BallotMinThresholdMetadata extends React.Component {
<div className="right">
<div className="form-el">
<label htmlFor="key">Ballot End</label>
<input type="date" id="key"
<input type="datetime-local" id="key"
value={ballotStore.endTime}
onChange={e => ballotStore.changeBallotMetadata(e, "endTime")}
/>

View File

@ -225,7 +225,7 @@ export class BallotProxyCard extends React.Component {
}
render () {
const { commonStore, contractsStore, ballotStore } = this.props;
const { contractsStore, ballotStore } = this.props;
let ballotClass = this.hideCard() ? "ballots-i display-none" : "ballots-i";
return (
<div className={ballotClass}>

View File

@ -46,7 +46,7 @@ export class BallotProxyMetadata extends React.Component {
<div className="left">
<div className="form-el">
<label htmlFor="key">Ballot End</label>
<input type="date" id="key"
<input type="datetime-local" id="key"
value={ballotStore.endTime}
onChange={e => ballotStore.changeBallotMetadata(e, "endTime")}
/>

View File

@ -1,12 +1,61 @@
import React from 'react';
import { inject, observer } from "mobx-react";
import Select from 'react-select';
import PlacesAutocomplete, { geocodeByAddress } from 'react-places-autocomplete';
@inject("validatorStore")
@observer
export class Validator extends React.Component {
onSelectAutocomplete = async (data) => {
const { validatorStore } = this.props;
let place = await geocodeByAddress(data)
console.log(place);
let address_components = {
postal_code: "",
street_number: "",
route: "",
locality: "",
administrative_area_level_1: ""
};
for (let i = 0; i < place[0].address_components.length; i++) {
let address_component = place[0].address_components[i];
let addressType = address_component.types[0];
switch(addressType) {
case "postal_code":
address_components.postal_code = Number(address_component.short_name);
break;
case "street_number":
address_components.street_number = address_component.short_name;
break;
case "route":
address_components.route = address_component.short_name;
break;
case "locality":
address_components.locality = address_component.short_name;
break;
case "administrative_area_level_1":
address_components.administrative_area_level_1 = address_component.long_name;
break;
}
validatorStore.address = `${address_components.street_number} ${address_components.route} ${address_components.locality}`;
validatorStore.state = address_components.administrative_area_level_1;
validatorStore.zipCode = address_components.postal_code;
}
}
render() {
const { validatorStore } = this.props;
const inputProps = {
value: validatorStore.address,
onChange: (e) => validatorStore.changeValidatorMetadata(e, "address"),
id: 'address'
}
const AutocompleteItem = ({ formattedSuggestion }) => (
<div className="custom-container">
<strong>{ formattedSuggestion.mainText }</strong>{' '}
<small>{ formattedSuggestion.secondaryText }</small>
</div>
)
return (
<div>
<div className="hidden">
@ -25,9 +74,8 @@ export class Validator extends React.Component {
<div className="right">
<div className="form-el">
<label htmlFor="address">Address</label>
<input type="text" id="address"
value={validatorStore.address}
onChange={e => validatorStore.changeValidatorMetadata(e, "address")}
<PlacesAutocomplete
onSelect={this.onSelectAutocomplete} inputProps={inputProps} autocompleteItem={AutocompleteItem}
/>
<p className="hint">
Proposed validator's registration address. Example: 110 Wall St., New York.
@ -91,7 +139,7 @@ export class Validator extends React.Component {
{ value: "Washington", label: "Washington" },
{ value: "West Virginia", label: "West Virginia" },
{ value: "Wisconsin", label: "Wisconsin" },
{ value: "Wyomi", label: "Wyomi" }
{ value: "Wyoming", label: "Wyoming" }
]}
>
</Select>

View File

@ -1,6 +1,5 @@
module.exports = {
KEYS_MANAGER_ADDRESS: '0xfc90125492e58dbfe80c0bfb6a2a759c4f703ca8',
VOTING_TO_CHANGE_KEYS_ADDRESS: '0x49df4ec19243263e5db22da5865b4f482b8323a0',
VOTING_TO_CHANGE_KEYS_ADDRESS: '0x49df4ec19243263e5db22da5865b4f482b8323a0',
VOTING_TO_CHANGE_MIN_THRESHOLD: '0x8829ebe113535826e8af17ed51f83755f675789a',
VOTING_TO_CHANGE_PROXY: '0x6b728399b41a38d4109f7af2213d4cc31ca87812',
METADATA_ADDRESS: '0xcBB2912666c7e8023B7ec78B6842702eB26336aC',

View File

@ -20,14 +20,6 @@ const routingStore = new RouterStore();
const stores = { commonStore, contractsStore, ballotStore, ballotsStore, validatorStore, routing: routingStore };
const history = syncHistoryWithStore(browserHistory, routingStore);
function generateElement(msg){
let errorNode = document.createElement("div");
errorNode.innerHTML = `<div>
${msg}
</div>`;
return errorNode;
}
class AppMainRouter extends Component {
constructor(props) {

View File

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