Merge branch 'core' of github.com:poanetwork/poa-dapps-voting into core
This commit is contained in:
commit
bce23f8573
|
@ -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',
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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")}
|
||||
/>
|
||||
|
|
|
@ -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}>
|
||||
|
|
|
@ -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")}
|
||||
/>
|
||||
|
|
|
@ -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}>
|
||||
|
|
|
@ -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")}
|
||||
/>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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])
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue