Update index.html

- bug fixed: BTC value not parsed correctly
- added submit event for fund create form
This commit is contained in:
sairajzero 2021-05-09 17:19:29 +05:30
parent f87352236a
commit 57504e810c

View File

@ -99,7 +99,7 @@
<sm-tab>Create Term</sm-tab> <sm-tab>Create Term</sm-tab>
</sm-tab-header> </sm-tab-header>
<sm-tab-panels id="admin_options"> <sm-tab-panels id="admin_options">
<form id="create_fund_form" class="grid gap-1-5" onsubmit="return false"> <form id="create_fund_form" class="grid gap-1-5">
<sm-switch id="fund_creation_toggle"> <sm-switch id="fund_creation_toggle">
<div class="flex" slot="left"> <div class="flex" slot="left">
Add investors to existing fund Add investors to existing fund
@ -116,7 +116,7 @@
</label> </label>
<label class="grid gap-0-5"> <label class="grid gap-0-5">
Base BTC value ($) Base BTC value ($)
<input type="number" step="0.00000001" name="base" pattern="^[\d,]+.?\d$"> <input type="text" name="btc_base" pattern="[\d,]+.?\d">
</label> </label>
<label class="grid gap-0-5"> <label class="grid gap-0-5">
Base USD rate (₹) Base USD rate (₹)
@ -138,7 +138,7 @@
</button> </button>
</li> </li>
</ul> </ul>
<button class="margin-bottom-1r justify-self-start" style="margin-top: -1rem;" onclick="renderInvestor()"> <button type="button" class="margin-bottom-1r justify-self-start" style="margin-top: -1rem;" onclick="renderInvestor()">
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></svg> <svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></svg>
Add new Add new
</button> </button>
@ -10437,11 +10437,11 @@ Bitcoin.Util = {
function getAddedInvestors(){ function getAddedInvestors(){
const allInvestorsInput = getRef('investors_input_list').querySelectorAll('.investor-input') const allInvestorsInput = getRef('investors_input_list').querySelectorAll('.investor-input')
const addedInvestors = {} const addedInvestors = []
allInvestorsInput.forEach(investor => { allInvestorsInput.forEach(investor => {
const floId = investor.children[0].value const floId = investor.children[0].value
const amount = investor.children[1].value const amount = investor.children[1].value
addedInvestors[floId] = amount addedInvestors.push([floId, amount])
}) })
return addedInvestors return addedInvestors
} }
@ -10478,6 +10478,7 @@ Bitcoin.Util = {
</script> </script>
<script> <script>
renderfundPlaceholder() renderfundPlaceholder()
function onLoadStartUp() { function onLoadStartUp() {
compactIDB.initDB(floGlobals.application, { compactIDB.initDB(floGlobals.application, {
terms: {}, terms: {},
@ -10498,9 +10499,9 @@ Bitcoin.Util = {
getRef("btc-usd-rate").textContent = `BTC: $${rates.BTC_USD.toFixed(2)}`; getRef("btc-usd-rate").textContent = `BTC: $${rates.BTC_USD.toFixed(2)}`;
getRef('fund_list').innerHTML = ''; getRef('fund_list').innerHTML = '';
getRef('fund_selector').innerHTML = '' getRef('fund_selector').innerHTML = ''
const termsFrag = document.createDocumentFragment() const termsFrag = document.createDocumentFragment()
compactIDB.readAllData("terms").then(terms => { compactIDB.readAllData("terms").then(terms => {
for (let floID in terms) { for (let floID in terms) {
let term = parseTerm(terms[floID]) let term = parseTerm(terms[floID])
@ -10520,11 +10521,11 @@ Bitcoin.Util = {
termsFrag.append(smOption) termsFrag.append(smOption)
compactIDB.searchData("funds", { compactIDB.searchData("funds", {
lowerKey: floID + "|", lowerKey: floID + "|",
upperKey: floID + "||" upperKey: floID + "||"
}) })
.then(funds => renderFunds(term, funds)) .then(funds => renderFunds(term, funds))
.catch(error => console.error(error)) .catch(error => console.error(error))
getFundsFromBlockchain(floID) getFundsFromBlockchain(floID)
.then(funds => renderFunds(term, funds)) .then(funds => renderFunds(term, funds))
.catch(error => console.error(error)) .catch(error => console.error(error))
@ -10536,8 +10537,8 @@ Bitcoin.Util = {
for (let floID in terms) { for (let floID in terms) {
let term = parseTerm(terms[floID]) let term = parseTerm(terms[floID])
getFundsFromBlockchain(floID) getFundsFromBlockchain(floID)
.then(funds => renderFunds(term, funds)) .then(funds => renderFunds(term, funds))
.catch(error => console.error(error)) .catch(error => console.error(error))
} }
}).catch(error => console.error(error)) }).catch(error => console.error(error))
}).catch(error => console.error(error)) }).catch(error => console.error(error))
@ -10778,7 +10779,7 @@ Bitcoin.Util = {
getRef('fund_list').append(fundBlock); getRef('fund_list').append(fundBlock);
} }
allInvestors = document.querySelectorAll('fund-investor') allInvestors = document.querySelectorAll('fund-investor')
const fundGroup = document.createElement('section') const fundGroup = document.createElement('section')
fundGroup.dataset.floId = term.floID fundGroup.dataset.floId = term.floID
fundGroup.classList.add('hide-completely', 'term-fund__option-group') fundGroup.classList.add('hide-completely', 'term-fund__option-group')
@ -10814,7 +10815,7 @@ Bitcoin.Util = {
cont ? null : funds["start_date"] = d[1]; cont ? null : funds["start_date"] = d[1];
break; break;
case "base value": case "base value":
cont ? null : funds["BTC_base"] = parseFloat(d[1].slice(0, -4)); cont ? null : funds["BTC_base"] = parseNumber(d[1].slice(0, -4));
break; break;
case "usd inr rate at start": case "usd inr rate at start":
cont ? null : funds["USD_base"] = parseFloat(d[1]); cont ? null : funds["USD_base"] = parseFloat(d[1]);
@ -10875,28 +10876,20 @@ Bitcoin.Util = {
} }
function createFundString(BTC_base, USD_base, start_date, funds) { function createFundString(BTC_base, USD_base, start_date, funds) {
funds = funds.map(f => {
f = f.replace(":=", ":").split(":");
return `{${f[0].trim()}:=${f[1].trim()}}`
});
return [ return [
floGlobals.productStr, floGlobals.productStr,
`Base Value: ${BTC_base} USD`, `Base Value: ${BTC_base} USD`,
`USD INR rate at start: ${USD_base}`, `USD INR rate at start: ${USD_base}`,
`Fund Start date: ${dateFormat(start_date)}`, `Fund Start date: ${dateFormat(start_date)}`,
`Fund invesments (INR): [${funds.join(",")}]` `Fund invesments (INR): [${funds.map(f => `{${f[0].trim()}:=${f[1].trim()}}`).join(",")}]`
].join("|"); ].join("|");
} }
function continueFund(fundID, funds) { function continueFund(fundID, funds) {
funds = funds.map(f => {
f = f.replace(":=", ":").split(":");
return `{${f[0].trim()}:=${f[1].trim()}}`
})
return [ return [
floGlobals.productStr, floGlobals.productStr,
"Continue: " + fundID, "Continue: " + fundID,
`Fund invesments (INR): [${funds.join(",")}]` `Fund invesments (INR): [${funds.map(f => `{${f[0].trim()}:=${f[1].trim()}}`).join(",")}]`
].join("|"); ].join("|");
} }
@ -10930,16 +10923,12 @@ Bitcoin.Util = {
getRef('term_details').innerHTML = termStr.replace(/\|/g, "<br>") getRef('term_details').innerHTML = termStr.replace(/\|/g, "<br>")
getRef('admin_id').innerHTML = `Enter Private key of adminID <h5 class="weight-400">${floGlobals.adminID}</h5>` getRef('admin_id').innerHTML = `Enter Private key of adminID <h5 class="weight-400">${floGlobals.adminID}</h5>`
showPage('confirm_term_page') showPage('confirm_term_page')
// bond_details = prompt(bondStr + `\n\nEnter Private key of adminID (${floGlobals.adminID})`);
getRef('create_term_button').onclick = () => { getRef('create_term_button').onclick = () => {
const privKey = getRef('get_private_key').value const privKey = getRef('get_private_key').value
if (!floCrypto.verifyPrivKey(privKey, floGlobals.adminID)){ if (!floCrypto.verifyPrivKey(privKey, floGlobals.adminID)) {
notify("Access Denied! incorrect private key", 'error'); notify("Access Denied! incorrect private key", 'error');
return return
} }
console.log(bondStr);
floBlockchainAPI.writeData(floGlobals.adminID, termStr, privKey, f["floid"].value).then(result => { floBlockchainAPI.writeData(floGlobals.adminID, termStr, privKey, f["floid"].value).then(result => {
console.log(result); console.log(result);
showPage('admin_page') showPage('admin_page')
@ -10948,6 +10937,26 @@ Bitcoin.Util = {
}).catch(error => console.error(error)) }).catch(error => console.error(error))
} }
}) })
getRef("create_fund_form").addEventListener("submit", evt => {
evt.preventDefault();
let f = evt.target,
fStr;
let termId = getRef("term_selector").value
let investments = getAddedInvestors()
let createMod = !getRef("fund_creation_toggle").checked;
console.info(investments, termId)
if (createMod) //create new fund
fStr = createFundString(f["btc_base"].value, f["usd_rate"].value, f["start_date"].value, investments)
else //add investments to existing fund
fStr = continueFund(getRef("fund_selector").value, investments)
console.log(fStr);
let privKey = prompt(fStr + `\n\nEnter privateKey of ${termId}`);
floBlockchainAPI.writeData(termId, fStr, privKey, termId).then(result => {
console.info(result);
alert(createMod ? "New Fund created" : "Invesments added to fund")
}).catch(error => reject(error))
})
</script> </script>
</body> </body>