diff options
| author | Brian Cully <bjc@spork.org> | 2025-07-16 18:48:48 -0400 |
|---|---|---|
| committer | Brian Cully <bjc@spork.org> | 2025-07-16 18:48:48 -0400 |
| commit | e1a9e10902de4d927f4c2c87b6c27e6303fa1ead (patch) | |
| tree | 516d92bd5bf204308919d57698277b7bb9e08078 /worker.js | |
| parent | 5da918119bb2e352f10060a36d9c7e580fa8695e (diff) | |
| download | pnit-e1a9e10902de4d927f4c2c87b6c27e6303fa1ead.tar.gz pnit-e1a9e10902de4d927f4c2c87b6c27e6303fa1ead.zip | |
add js version rendering. still needs download
Diffstat (limited to 'worker.js')
| -rw-r--r-- | worker.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/worker.js b/worker.js new file mode 100644 index 0000000..77a861b --- /dev/null +++ b/worker.js @@ -0,0 +1,53 @@ +import CSVParse from './csv.mjs'; + +let ignoreLines = 0; +let sequenceNames = []; + +function process(threshold, row) { + const name = row[0]; + if (name === undefined || /^\s*$/.test(name)) { + return; + } + if (ignoreLines > 0) { + ignoreLines--; + return; + } + sequenceNames.push(name); + + let i = 0; + for (const col of row) { + const val = Number(col); + if (isNaN(val)) { + continue; + } + if (val >= threshold && name !== sequenceNames[i]) { + postMessage([name, sequenceNames[i], val]); + } + i++; + } +} + +onmessage = e => { + console.debug('got message', e); + console.debug('reading file'); + + console.debug('e.data', e.data); + const { ignoreHeader, threshold, file } = e.data; + console.debug('threshold', threshold, 'file', file); + + const reader = new FileReader(); + reader.onload = e => { + const parser = new CSVParse(); + for (const c of e.target.result) { + parser.push(c); + } + if (ignoreHeader) { + ignoreLines = 1; + } + parser.results.forEach(row => process(threshold, row)); + } + reader.progress = e => { + console.debug('reader.progress', e); + } + reader.readAsText(file); +} |
