blob: 7cc5ea1abc9f0239138170954b84ddd60157b437 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import AminoAcid from './amino-acid.mjs'
import Nucleotide from './nucleotide.mjs'
class Codon {
constructor(n1, n2, n3) {
this.bases = [n1, n2, n3]
this.aminoAcid = new AminoAcid(n1, n2, n3)
const nucleotideList = document.createElement('ol')
this.bases = [n1, n2, n3].map(base => {
const n = new Nucleotide(base)
n.onClick = this._boundNucleotideClickedHandler
nucleotideList.appendChild(n.elt)
return n
})
this.elt.appendChild(nucleotideList)
this.elt.appendChild(this.aminoAcid.elt)
}
get elt() {
if (this._elt === undefined) {
this._elt = document.createElement('li')
this._elt.classList.add('codon')
}
return this._elt
}
get aaElt() {
if (this._aaElt === undefined) {
this._aaElt = document.createElement('div')
this._aaElt.classList.add('amino-acid')
}
return this._aaElt
}
lock() {
this.bases.forEach(n => n.lock())
this.aminoAcid.lock()
}
unlock() {
this.bases.forEach(n => n.unlock())
this.aminoAcid.unlock()
}
}
export default Codon
|