From c18e0a8f564b9262eddccc83abdd059d6d3934e3 Mon Sep 17 00:00:00 2001 From: Vivek Teega Date: Sun, 15 May 2022 19:13:24 +0530 Subject: [PATCH] 1.0.1 Added switch to decide for each miner Added a switch on the subadmin page to decide if the miner is part of token distribution system or not --- index.html | 69 +++++++++++++++++++++++++++++++++++++------- js/components.min.js | 4 ++- 2 files changed, 62 insertions(+), 11 deletions(-) diff --git a/index.html b/index.html index 23c1b1b..f1b7e5c 100644 --- a/index.html +++ b/index.html @@ -347,8 +347,8 @@

Approve new Users

-
-
+

Release updated shares

@@ -379,6 +379,12 @@

+ @@ -528,8 +534,14 @@ break; } return clone - } + }, + minerStatusInfo({ coin_address, is_admin }) { + const clone = getRef('miner-status-entry').content.cloneNode(true).firstElementChild; + clone.querySelector('.miner-status-entry-floid').textContent = coin_address; + clone.querySelector('sm-switch').setAttribute('checked', is_admin); + return clone; + } } function update_element(id, value) { @@ -541,11 +553,11 @@ rates = await floExchangeAPI.getRates(); update_element( "flobnb-price", - formatAmount(parseFloat(rates['mining'])) + formatAmount(parseFloat(rates.rates['mining'])) ); update_element( "flobnb-price-userpage", - formatAmount(parseFloat(rates['mining'])) + formatAmount(parseFloat(rates.rates['mining'])) ); update_element( "total-amount-issued", @@ -634,7 +646,6 @@ let transactionsLazyLoader function render_user_transactions(transaction_dictionary) { - const frag = document.createDocumentFragment(); let arrayOfTransactions = [] for (let vectorClock in transaction_dictionary) { // do something for each key in the object @@ -658,7 +669,7 @@ blockchain_data["balance"] = 0; update_element("blockchain-flobnb-balance", `${parseFloat(blockchain_data["balance"])} mining#`); update_element("total-flobnb-balance", `${parseFloat(blockchain_data["balance"]) + parseFloat(results[0].balance)} mining#`); - update_element("total-flobnb-valuation", formatAmount((parseFloat(blockchain_data["balance"]) + parseFloat(results[0].balance)) * parseFloat(results[2].mining))); + update_element("total-flobnb-valuation", formatAmount((parseFloat(blockchain_data["balance"]) + parseFloat(results[0].balance)) * parseFloat(results[2].rates.mining))); }); }); @@ -704,8 +715,8 @@ update_overview_ui_data(); }, }); - - Promise.all([promise1, promise2]) + let promise3 = floCloudAPI.requestObjectData("mining_base") + Promise.all([promise1, promise2, promise3]) .then((r) => resolve(r)) .catch((e) => reject(e)); }); @@ -1140,6 +1151,41 @@ return await user_shares_details.json() } + function render_miner_status(miner_data){ + const frag = document.createDocumentFragment(); + var miner_floIDs = Object.keys(floGlobals.appObjects.mining_base.miners) + miner_data.forEach(element => { + frag.append(render.minerStatusInfo(element)) + // check if part of the global object, otherwise add it + if(!miner_floIDs.includes(element.coin_address)){ + floGlobals.appObjects.mining_base.miners[element.coin_address] = { + 'id': element.coin_id, + 'shares': 0, + 'username': element.username, + 'token_distribution_permission': element.is_admin + } + } + }); + document.getElementById("approve-newuser-section").append(frag); + } + + function process_mining_shares(miner_shares){ + var userinfo = await fetch('https://miningapitest.duckdns.org/getUsers') + userinfo = await userinfo.json() + + miner_shares.forEach((share) => { + debugger + // floGlobals.appObjects.mining_base[userinfo['users'][]] + }); + } + + async function calculate_share_difference(){ + // for each line of share api's response + var miner_shares = await fetch(`https://miningapitest.duckdns.org/getShares`) + miner_shares = await miner_shares.json() + process_mining_shares(miner_shares['shares']) + } + async function onLoadStartUp() { //floDapps.addStartUpFunction('Sample', Promised Function) //floDapps.setAppObjectStores({sampleObs1:{}, sampleObs2:{options{autoIncrement:true, keyPath:'SampleKey'}, Indexes:{sampleIndex:{}}}}) @@ -1192,7 +1238,10 @@ console.log('user data') console.log(data) let unregistered_floids = find_unregistered_floids(data['users']) - debugger + render_miner_status(unregistered_floids) + + // Write a function which will calculate the number of shares required + var share_diff = calculate_share_difference() }) .catch(error => console.error('Error:', error)) diff --git a/js/components.min.js b/js/components.min.js index 6efcb63..5623bf8 100644 --- a/js/components.min.js +++ b/js/components.min.js @@ -1173,4 +1173,6 @@ customElements.define('sm-popup', class extends HTMLElement { } } } -}); \ No newline at end of file +}); + +const smSwitch=document.createElement("template");smSwitch.innerHTML='\t\n\n',customElements.define("sm-switch",class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}).append(smSwitch.content.cloneNode(!0)),this.switch=this.shadowRoot.querySelector(".switch"),this.input=this.shadowRoot.querySelector("input"),this.isChecked=!1,this.isDisabled=!1,this.dispatch=this.dispatch.bind(this)}static get observedAttributes(){return["disabled","checked"]}get disabled(){return this.isDisabled}set disabled(n){n?this.setAttribute("disabled",""):this.removeAttribute("disabled")}get checked(){return this.isChecked}set checked(n){n?this.setAttribute("checked",""):this.removeAttribute("checked")}reset(){}dispatch(){this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:this.isChecked}}))}connectedCallback(){this.addEventListener("keydown",n=>{" "!==n.key||this.isDisabled||(n.preventDefault(),this.input.click())}),this.input.addEventListener("click",n=>{this.input.checked?this.checked=!0:this.checked=!1,this.dispatch()})}attributeChangedCallback(n,t,e){t!==e&&("disabled"===n?this.hasAttribute("disabled")?this.disabled=!0:this.disabled=!1:"checked"===n&&(this.hasAttribute("checked")?(this.isChecked=!0,this.input.checked=!0):(this.isChecked=!1,this.input.checked=!1)))}}); \ No newline at end of file