diff options
Diffstat (limited to 'amino-acid.mjs')
-rw-r--r-- | amino-acid.mjs | 132 |
1 files changed, 67 insertions, 65 deletions
diff --git a/amino-acid.mjs b/amino-acid.mjs index 7df50d4..cce1e0e 100644 --- a/amino-acid.mjs +++ b/amino-acid.mjs @@ -1,76 +1,78 @@ class AminoAcid { // Create a protein from three nucleotides. constructor(n1, n2, n3) { - this.codon = n1+n2+n3 - this.value = AminoAcid.codonMap[this.codon] + this.value = AminoAcid.codonMap[n1+n2+n3] + this._boundClickHandler = this.clickHandler.bind(this) + } + + get elt() { + if (this._elt === undefined) { + this._elt = document.createElement('div') + this._elt.classList.add('amino-acid') + } + return this._elt + } + + get value() { + return this.elt.innerText + } + + set value(val) { + this.elt.innerText = val + } + + lock() { + this.elt.removeEventListener('click', this._boundClickHandler) + } + + unlock() { + this.elt.addEventListener('click', this._boundClickHandler) + } + + get onClick() { + if (this._onClick !== undefined) { + return this._onClick + } + return () => {} + } + + set onClick(fn) { + this._onClick = fn + } + + clickHandler(evt) { + this.onClick(this) } } +AminoAcid.list = [ + 'Ala', 'Arg', 'Asn', 'Asp', 'Cys', 'Gln', 'Glu', 'Gly', 'His', 'Ile', + 'Leu', 'Lys', 'Met', 'Phe', 'Pro', 'Ser', 'Thr', 'Trp', 'Tyr', 'Val', + 'STOP' +] + AminoAcid.codonMap = { - 'TAA': 'STOP', - 'TGA': 'STOP', - 'TAG': 'STOP', - 'GTT': 'Val', - 'GTC': 'Val', - 'GTA': 'Val', - 'GTG': 'Val', - 'TAT': 'Tyr', - 'TAC': 'Tyr', - 'TGG': 'Trp', - 'ACT': 'Thr', - 'ACC': 'Thr', - 'ACA': 'Thr', - 'ACG': 'Thr', - 'TCT': 'Ser', - 'TCC': 'Ser', - 'TCA': 'Ser', - 'TCG': 'Ser', - 'AGT': 'Ser', - 'AGC': 'Ser', - 'CCT': 'Pro', - 'CCC': 'Pro', - 'CCA': 'Pro', - 'CCG': 'Pro', - 'TTT': 'Phe', - 'TTC': 'Phe', + 'GCT': 'Ala', 'GCC': 'Ala', 'GCA': 'Ala', 'GCG': 'Ala', + 'CGT': 'Arg', 'CGC': 'Arg', 'CGA': 'Arg', 'CGG': 'Arg', 'AGA': 'Arg', 'AGG': 'Arg', + 'AAT': 'Asn', 'AAC': 'Asn', + 'GAT': 'Asp', 'GAC': 'Asp', + 'TGT': 'Cys', 'TGC': 'Cys', + 'CAA': 'Gln', 'CAG': 'Gln', + 'GAA': 'Glu', 'GAG': 'Glu', + 'GGT': 'Gly', 'GGC': 'Gly', 'GGA': 'Gly', 'GGG': 'Gly', + 'CAT': 'His', 'CAC': 'His', + 'ATT': 'Ile', 'ATC': 'Ile', 'ATA': 'Ile', + 'CTT': 'Leu', 'CTC': 'Leu', 'CTA': 'Leu', 'CTG': 'Leu', 'TTA': 'Leu', 'TTG': 'Leu', + 'AAA': 'Lys', 'AAG': 'Lys', 'ATG': 'Met', - 'AAA': 'Lys', - 'AAG': 'Lys', - 'CTT': 'Leu', - 'CTC': 'Leu', - 'CTA': 'Leu', - 'CTG': 'Leu', - 'TTA': 'Leu', - 'TTG': 'Leu', - 'ATT': 'Ile', - 'ATC': 'Ile', - 'ATA': 'Ile', - 'CAT': 'His', - 'CAC': 'His', - 'GGT': 'Gly', - 'GGC': 'Gly', - 'GGA': 'Gly', - 'GGG': 'Gly', - 'GAA': 'Glu', - 'GAG': 'Glu', - 'CAA': 'Gln', - 'CAG': 'Gln', - 'TGT': 'Cys', - 'TGC': 'Cys', - 'GAT': 'Asp', - 'GAC': 'Asp', - 'AAT': 'Asn', - 'AAC': 'Asn', - 'CGT': 'Arg', - 'CGC': 'Arg', - 'CGA': 'Arg', - 'CGG': 'Arg', - 'AGA': 'Arg', - 'AGG': 'Arg', - 'GCT': 'Ala', - 'GCC': 'Ala', - 'GCA': 'Ala', - 'GCG': 'Ala', + 'TTT': 'Phe', 'TTC': 'Phe', + 'CCT': 'Pro', 'CCC': 'Pro', 'CCA': 'Pro', 'CCG': 'Pro', + 'TCT': 'Ser', 'TCC': 'Ser', 'TCA': 'Ser', 'TCG': 'Ser', 'AGT': 'Ser', 'AGC': 'Ser', + 'ACT': 'Thr', 'ACC': 'Thr', 'ACA': 'Thr', 'ACG': 'Thr', + 'TGG': 'Trp', + 'TAT': 'Tyr', 'TAC': 'Tyr', + 'GTT': 'Val', 'GTC': 'Val', 'GTA': 'Val', 'GTG': 'Val', + 'TAA': 'STOP', 'TGA': 'STOP', 'TAG': 'STOP', } export default AminoAcid |