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