init
This commit is contained in:
commit
97f9a95415
21 changed files with 2963 additions and 0 deletions
21
public/calculators/bandwidth.js
Normal file
21
public/calculators/bandwidth.js
Normal file
|
@ -0,0 +1,21 @@
|
|||
import {fmt, revive, persist, labelInput, labelSelect} from '/js/util.js';
|
||||
export default {
|
||||
id:'bandwidth', name:'Bandwidth / Bytes Converter', about:'Convert bits↔bytes and SI↔IEC units',
|
||||
render(root){
|
||||
const key='calc_bandwidth_v1';
|
||||
const s = revive(key,{value:100, unit:'Mbps'});
|
||||
const units = ['bps','Kbps','Mbps','Gbps','Tbps','B/s','KB/s','MB/s','GB/s','TB/s','KiB/s','MiB/s','GiB/s','TiB/s'];
|
||||
const factors = {'bps':1,'Kbps':1e3,'Mbps':1e6,'Gbps':1e9,'Tbps':1e12,'B/s':8,'KB/s':8e3,'MB/s':8e6,'GB/s':8e9,'TB/s':8e12,'KiB/s':8*1024,'MiB/s':8*1024**2,'GiB/s':8*1024**3,'TiB/s':8*1024**4};
|
||||
const ui = document.createElement('div');
|
||||
ui.append(labelInput('Value','number','value', s.value,{step:'0.000001',min:'0'}), labelSelect('Unit','unit', s.unit, units.map(u=>[u,u])));
|
||||
const out = document.createElement('div'); out.className='result'; ui.append(out);
|
||||
function calc(){
|
||||
const v = +ui.querySelector('[name=value]').value||0;
|
||||
const unit = ui.querySelector('[name=unit]').value;
|
||||
const bps = v * factors[unit];
|
||||
out.innerHTML = units.map(u=>`<div><strong>${u}</strong>: ${fmt.format(bps / factors[u])}</div>`).join('');
|
||||
persist(key,{value:v, unit});
|
||||
}
|
||||
ui.addEventListener('input', calc); calc(); root.append(ui);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue