mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-12 20:41:24 +00:00
add char support (#206)
* add char support * add char test * remove __wbindgen_char fns * re-order travis script * update serve script * remove binds to unused char functions * add more wide character items to chars list * remove unused code * add char to readme * remove built file
This commit is contained in:
committed by
Alex Crichton
parent
17861a45ab
commit
4ddd93d75d
73
examples/char/index.js
Normal file
73
examples/char/index.js
Normal file
@ -0,0 +1,73 @@
|
||||
import {chars} from './chars.js'
|
||||
let imp = import('./char.js')
|
||||
let mod;
|
||||
|
||||
let counters = [];
|
||||
imp.then(wasm => {
|
||||
mod = wasm;
|
||||
addCounter();
|
||||
let b = document.getElementById('add-counter');
|
||||
if (!b) throw new Error('Unable to find #add-counter');
|
||||
b.addEventListener('click', ev => addCounter())
|
||||
});
|
||||
|
||||
function addCounter() {
|
||||
let ctr = mod.Counter.new(randomChar(), 0);
|
||||
counters.push(ctr);
|
||||
update();
|
||||
}
|
||||
|
||||
function update() {
|
||||
let container = document.getElementById('container');
|
||||
if (!container) throw new Error('Unable to find #container in dom');
|
||||
while (container.hasChildNodes()) {
|
||||
if (container.lastChild.id == "add-counter") break;
|
||||
container.removeChild(container.lastChild);
|
||||
}
|
||||
for (var i = 0; i < counters.length; i++) {
|
||||
let counter = counters[i];
|
||||
container.appendChild(newCounter(counter.key(), counter.count(), ev => {
|
||||
counter.increment();
|
||||
update();
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
function randomChar() {
|
||||
console.log('randomChar');
|
||||
let idx = Math.floor(Math.random() * (chars.length - 1));
|
||||
console.log('index', idx);
|
||||
let ret = chars.splice(idx, 1)[0];
|
||||
console.log('char', ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
function newCounter(key, value, cb) {
|
||||
let container = document.createElement('div');
|
||||
container.setAttribute('class', 'counter');
|
||||
let title = document.createElement('h1');
|
||||
title.appendChild(document.createTextNode('Counter ' + key));
|
||||
container.appendChild(title);
|
||||
container.appendChild(newField('Count', value));
|
||||
let plus = document.createElement('button');
|
||||
plus.setAttribute('type', 'button');
|
||||
plus.setAttribute('class', 'plus-button');
|
||||
plus.appendChild(document.createTextNode('+'));
|
||||
plus.addEventListener('click', cb);
|
||||
container.appendChild(plus);
|
||||
return container;
|
||||
}
|
||||
|
||||
function newField(key, value) {
|
||||
let ret = document.createElement('div');
|
||||
ret.setAttribute('class', 'field');
|
||||
let name = document.createElement('span');
|
||||
name.setAttribute('class', 'name');
|
||||
name.appendChild(document.createTextNode(key));
|
||||
ret.appendChild(name);
|
||||
let val = document.createElement('span');
|
||||
val.setAttribute('class', 'value');
|
||||
val.appendChild(document.createTextNode(value));
|
||||
ret.appendChild(val);
|
||||
return ret;
|
||||
}
|
Reference in New Issue
Block a user