Refactoring, search fix

This commit is contained in:
viktor 2017-06-28 18:20:29 +03:00
parent af1e70081e
commit 1901915259
9 changed files with 175 additions and 194 deletions

4
.gitignore vendored
View File

@ -1,2 +1,4 @@
node_modules/
.DS_Store
.DS_Store
assets/javascripts/application.js
assets/stylesheets/index.css

View File

@ -77,6 +77,41 @@ function getContractIntDataFromAddressKey(web3, func, inputVal, i, contractAddr,
});
});
}
//check current network page is connected to. Alerts, if not Oracles network
function checkNetworkVersion(web3, cb) {
var msgNotOracles = "You aren't connected to Oracles network. Please, switch on Parity or MetaMask client and choose Oracles network. Check Oracles network <a href='https://github.com/oraclesorg/oracles-wiki' target='blank'>wiki</a> for more info.";
web3.version.getNetwork(function(err, netId) {
if (err)
console.log(err);
console.log("netId: " + netId);
switch (netId) {
case "1": {
console.log('This is mainnet');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "2": {
console.log('This is the deprecated Morden test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "3": {
console.log('This is the ropsten test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "12648430": {
console.log('This is Oracles from Metamask');
cb(true);
} break;
default: {
console.log('This is an unknown network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
}
})
}
function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
@ -253,13 +288,45 @@ function formatDate(date, format, utc) {
return format;
};
function getValidators(web3, func, addr, contractAddress, disabled, cb) {
function filterValidators(searchInput, validators) {
return validators.map(function(validator, i) {
if (validator) {
var searchValidated = validateSearch(validator, searchInput.toLowerCase());
if (!searchValidated) return null;
else return validator;
} else return null;
})
}
function validateSearch(validator, searchInput) {
var validatorAddress = Object.keys(validator)[0];
if (validatorAddress.indexOf(searchInput) > -1) return true;
var validatorPropsObj = validator[validatorAddress];
if (validatorPropsObj["fullName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["streetName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["zip"].toString().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["licenseID"].toString().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["state"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (formatDate(new Date(parseInt(validatorPropsObj["licenseExpiredAt"])*1000), "MM/dd/yyyy h:mmTT").toLowerCase().indexOf(searchInput) > -1)
return true;
return false;
}
//gets config file with address of Oracles contract
function getConfig(cb) {
$.getJSON("./assets/javascripts/config.json", function(config) {
var contractAddress = config.Ethereum[config.environment].contractAddress;
cb(contractAddress);
});
}
function getValidators(web3, func, contractAddress, disabled, cb) {
SHA3Encrypt(web3, func, function(funcEncode) {
var funcEncodePart = funcEncode.substring(0,10);
var data = funcEncodePart;
call(web3, addr, contractAddress, data, function(validatorsResp) {
call(web3, null, contractAddress, data, function(validatorsResp) {
validatorsResp = validatorsResp.substring(2, validatorsResp.length);
var validatorsArray = [];
var item = "";
@ -445,15 +512,16 @@ function getValidatorView(validatorAddress, validatorPropsObj) {
</div>
</div>`;
}
//gets web3 object from MetaMask or Parity
function getWeb3(callback) {
if (typeof window.web3 === 'undefined') {
// no web3, use fallback
// no web3, use fallback
console.error("Please use a web3 browser");
var msgNotEthereum = "You aren't connected to Ethereum. Please, switch on Parity or MetaMask client and refresh the page. Check Oracles network <a href='https://github.com/oraclesorg/oracles-wiki' target='blank'>wiki</a> for more info.";
swal("Warning", msgNotEthereum, "warning");
callback(myWeb3, false);
} else {
// window.web3 == web3 most of the time. Don't override the provided,
// window.web3 == web3 most of the time. Don't override the provided,
// web3, just wrap it in your Web3.
var myWeb3 = new Web3(window.web3.currentProvider);
@ -462,61 +530,18 @@ function getWeb3(callback) {
myWeb3.eth.defaultAccount = window.web3.eth.defaultAccount;
checkNetworkVersion(myWeb3, function(isOraclesNetwork) {
callback(myWeb3, isOraclesNetwork);
callback(myWeb3, isOraclesNetwork);
});
}
}
function checkNetworkVersion(web3, cb) {
var msgNotOracles = "You aren't connected to Oracles network. Please, switch on Parity or MetaMask client and choose Oracles network. Check Oracles network <a href='https://github.com/oraclesorg/oracles-wiki' target='blank'>wiki</a> for more info.";
web3.version.getNetwork(function(err, netId) {
if (err)
console.log(err);
console.log("netId: " + netId);
switch (netId) {
case "1": {
console.log('This is mainnet');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "2": {
console.log('This is the deprecated Morden test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "3": {
console.log('This is the ropsten test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "12648430": {
console.log('This is Oracles from Metamask');
cb(true);
} break;
default: {
console.log('This is an unknown network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
}
})
}
//launches main application
function startDapp(web3, isOraclesNetwork) {
if (!isOraclesNetwork) return
$(function() {
var config;
var validators;
$.getJSON("./assets/javascripts/config.json", function(_config) {
config = _config;
getValidators(web3,
"getValidators()",
config.Ethereum[config.environment].account,
config.Ethereum[config.environment].contractAddress,
false,
function(_validatorsArray) {
getConfig(function(contractAddress) {
getValidators(web3, "getValidators()", contractAddress, false, function(_validatorsArray) {
validators = _validatorsArray;
for(var i = 0; i < _validatorsArray.length; i++) {
var validator = _validatorsArray[i];
@ -530,7 +555,7 @@ function startDapp(web3, isOraclesNetwork) {
$(".search-input").on("keyup", function() {
var searchInput = $(this).val();
var filteredValidators = filterValidators(searchInput);
var filteredValidators = filterValidators(searchInput, validators);
$(".validators").empty();
for(var i = 0; i < filteredValidators.length; i++) {
var validator = filteredValidators[i];
@ -541,41 +566,6 @@ function startDapp(web3, isOraclesNetwork) {
}
}
});
function filterValidators(searchInput) {
return validators.map(function(validator, i) {
if (validator) {
var searchValidated = validateSearch(validator, searchInput.toLowerCase());
if (!searchValidated) return null;
else return validator;
} else return null;
})
}
function validateSearch(validator, searchInput) {
var validatorAddress = Object.keys(validator)[0];
if (validatorAddress.indexOf(searchInput) > -1) return true;
var validatorPropsObj = validator[validatorAddress];
if (validatorPropsObj["fullName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["streetName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["zip"].toString().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["licenseID"].toString().indexOf(searchInput) > -1) return true;
else if (formatDate(new Date(parseInt(validatorPropsObj["licenseExpiredAt"])*1000), "MM/dd/yyyy h:mmTT").toLowerCase().indexOf(searchInput) > -1)
return true;
var stateCode = validatorPropsObj["state"].toString();
if (stateCode) {
var statesList = List.getStatesList();
if (statesList[stateCode]) {
if (statesList[stateCode].toLowerCase().indexOf(searchInput) > -1)
return true;
}
}
return false;
}
});
}

View File

@ -0,0 +1,35 @@
//check current network page is connected to. Alerts, if not Oracles network
function checkNetworkVersion(web3, cb) {
var msgNotOracles = "You aren't connected to Oracles network. Please, switch on Parity or MetaMask client and choose Oracles network. Check Oracles network <a href='https://github.com/oraclesorg/oracles-wiki' target='blank'>wiki</a> for more info.";
web3.version.getNetwork(function(err, netId) {
if (err)
console.log(err);
console.log("netId: " + netId);
switch (netId) {
case "1": {
console.log('This is mainnet');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "2": {
console.log('This is the deprecated Morden test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "3": {
console.log('This is the ropsten test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "12648430": {
console.log('This is Oracles from Metamask');
cb(true);
} break;
default: {
console.log('This is an unknown network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
}
})
}

View File

@ -0,0 +1,25 @@
function filterValidators(searchInput, validators) {
return validators.map(function(validator, i) {
if (validator) {
var searchValidated = validateSearch(validator, searchInput.toLowerCase());
if (!searchValidated) return null;
else return validator;
} else return null;
})
}
function validateSearch(validator, searchInput) {
var validatorAddress = Object.keys(validator)[0];
if (validatorAddress.indexOf(searchInput) > -1) return true;
var validatorPropsObj = validator[validatorAddress];
if (validatorPropsObj["fullName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["streetName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["zip"].toString().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["licenseID"].toString().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["state"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (formatDate(new Date(parseInt(validatorPropsObj["licenseExpiredAt"])*1000), "MM/dd/yyyy h:mmTT").toLowerCase().indexOf(searchInput) > -1)
return true;
return false;
}

View File

@ -0,0 +1,7 @@
//gets config file with address of Oracles contract
function getConfig(cb) {
$.getJSON("./assets/javascripts/config.json", function(config) {
var contractAddress = config.Ethereum[config.environment].contractAddress;
cb(contractAddress);
});
}

View File

@ -1,10 +1,10 @@
function getValidators(web3, func, addr, contractAddress, disabled, cb) {
function getValidators(web3, func, contractAddress, disabled, cb) {
SHA3Encrypt(web3, func, function(funcEncode) {
var funcEncodePart = funcEncode.substring(0,10);
var data = funcEncodePart;
call(web3, addr, contractAddress, data, function(validatorsResp) {
call(web3, null, contractAddress, data, function(validatorsResp) {
validatorsResp = validatorsResp.substring(2, validatorsResp.length);
var validatorsArray = [];
var item = "";

View File

@ -0,0 +1,22 @@
//gets web3 object from MetaMask or Parity
function getWeb3(callback) {
if (typeof window.web3 === 'undefined') {
// no web3, use fallback
console.error("Please use a web3 browser");
var msgNotEthereum = "You aren't connected to Ethereum. Please, switch on Parity or MetaMask client and refresh the page. Check Oracles network <a href='https://github.com/oraclesorg/oracles-wiki' target='blank'>wiki</a> for more info.";
swal("Warning", msgNotEthereum, "warning");
callback(myWeb3, false);
} else {
// window.web3 == web3 most of the time. Don't override the provided,
// web3, just wrap it in your Web3.
var myWeb3 = new Web3(window.web3.currentProvider);
// the default account doesn't seem to be persisted, copy it to our
// new instance
myWeb3.eth.defaultAccount = window.web3.eth.defaultAccount;
checkNetworkVersion(myWeb3, function(isOraclesNetwork) {
callback(myWeb3, isOraclesNetwork);
});
}
}

View File

@ -1,75 +1,11 @@
function getWeb3(callback) {
if (typeof window.web3 === 'undefined') {
// no web3, use fallback
console.error("Please use a web3 browser");
var msgNotEthereum = "You aren't connected to Ethereum. Please, switch on Parity or MetaMask client and refresh the page. Check Oracles network <a href='https://github.com/oraclesorg/oracles-wiki' target='blank'>wiki</a> for more info.";
swal("Warning", msgNotEthereum, "warning");
callback(myWeb3, false);
} else {
// window.web3 == web3 most of the time. Don't override the provided,
// web3, just wrap it in your Web3.
var myWeb3 = new Web3(window.web3.currentProvider);
// the default account doesn't seem to be persisted, copy it to our
// new instance
myWeb3.eth.defaultAccount = window.web3.eth.defaultAccount;
checkNetworkVersion(myWeb3, function(isOraclesNetwork) {
callback(myWeb3, isOraclesNetwork);
});
}
}
function checkNetworkVersion(web3, cb) {
var msgNotOracles = "You aren't connected to Oracles network. Please, switch on Parity or MetaMask client and choose Oracles network. Check Oracles network <a href='https://github.com/oraclesorg/oracles-wiki' target='blank'>wiki</a> for more info.";
web3.version.getNetwork(function(err, netId) {
if (err)
console.log(err);
console.log("netId: " + netId);
switch (netId) {
case "1": {
console.log('This is mainnet');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "2": {
console.log('This is the deprecated Morden test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "3": {
console.log('This is the ropsten test network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
case "12648430": {
console.log('This is Oracles from Metamask');
cb(true);
} break;
default: {
console.log('This is an unknown network.');
swal("Warning", msgNotOracles, "warning");
cb(false);
} break;
}
})
}
//launches main application
function startDapp(web3, isOraclesNetwork) {
if (!isOraclesNetwork) return
$(function() {
var config;
var validators;
$.getJSON("./assets/javascripts/config.json", function(_config) {
config = _config;
getValidators(web3,
"getValidators()",
config.Ethereum[config.environment].account,
config.Ethereum[config.environment].contractAddress,
false,
function(_validatorsArray) {
getConfig(function(contractAddress) {
getValidators(web3, "getValidators()", contractAddress, false, function(_validatorsArray) {
validators = _validatorsArray;
for(var i = 0; i < _validatorsArray.length; i++) {
var validator = _validatorsArray[i];
@ -83,7 +19,7 @@ function startDapp(web3, isOraclesNetwork) {
$(".search-input").on("keyup", function() {
var searchInput = $(this).val();
var filteredValidators = filterValidators(searchInput);
var filteredValidators = filterValidators(searchInput, validators);
$(".validators").empty();
for(var i = 0; i < filteredValidators.length; i++) {
var validator = filteredValidators[i];
@ -94,41 +30,6 @@ function startDapp(web3, isOraclesNetwork) {
}
}
});
function filterValidators(searchInput) {
return validators.map(function(validator, i) {
if (validator) {
var searchValidated = validateSearch(validator, searchInput.toLowerCase());
if (!searchValidated) return null;
else return validator;
} else return null;
})
}
function validateSearch(validator, searchInput) {
var validatorAddress = Object.keys(validator)[0];
if (validatorAddress.indexOf(searchInput) > -1) return true;
var validatorPropsObj = validator[validatorAddress];
if (validatorPropsObj["fullName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["streetName"].toLowerCase().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["zip"].toString().indexOf(searchInput) > -1) return true;
else if (validatorPropsObj["licenseID"].toString().indexOf(searchInput) > -1) return true;
else if (formatDate(new Date(parseInt(validatorPropsObj["licenseExpiredAt"])*1000), "MM/dd/yyyy h:mmTT").toLowerCase().indexOf(searchInput) > -1)
return true;
var stateCode = validatorPropsObj["state"].toString();
if (stateCode) {
var statesList = List.getStatesList();
if (statesList[stateCode]) {
if (statesList[stateCode].toLowerCase().indexOf(searchInput) > -1)
return true;
}
}
return false;
}
});
}

View File

@ -2,7 +2,6 @@
"environment": "live",
"Ethereum": {
"live": {
"account": "0xDd0BB0e2a1594240fED0c2f2c17C1E9AB4F87126",
"contractAddress": "0xf472e0e43570b9afaab67089615080cf7c20018d"
}
}