Samatekst - samatekstide (palindroomide) veebiredaktor ja pilves hoitav tekstikogu
Koodirepo - Funktsioonikataloog - Koodimeetrikad - Näppimisest, konfimisest ja tööriistade isetegemisest
(UI raamistik)
GitHub (koodihoidla)Visual Studio Code (koodiredaktor)Google Apps
Google Apps Script (programmeerimiskeel)Google Apps Script Editor (koodiredaktor)Google SheetGoogle Sign-In (OpenID Connect standardile vastav)GitHub Pages (github.io, Jekyll)Backspace ja Delete ühe tärgi kaupa).=)>) ja järglased (<)Suur osa funktsionaalsusest on seotud samatekstide teisendamisega ühest esitusest (kujust) teise. Samatekst võib olla mitmes erinevas esituses:
#Tekst) Esitus teksti- (1)
sisestusalal +-------> Siseesitus
^ +
| + |
| (2) | |
+ (2) | | (3)
HTML <---------------+ |
|
v
HTML <------------+ Pilveesitus
+ (4)
|
| (4)
v
Tekstikogu
esitus
(1) kasutaja sisestab tekstisisestusalal; klahvivajutused püütakse sündmuste keydown ja keypress abil kinni, filtreeritakse (lubatud tähed ja kirjavahemärgid), tehakse kindlaks kursori (ingl caret) asukoht. Sisestatavat teksti hoitakse sisekujul.
(2) Tähe lisamisel lisab programm automaatselt peegeltähe ja uuendab tekstisisestusalal olevat teksti.
(3) Kasutaja saab teksti salvestada. Programm teisendab salvestatava teksti pilveesitusse.
(4) Salvestatud tekste saab sirvida ja otsida. Salvestatud tekstid esitatakse kuval HTML abil.
kuvaKeskelementYhekordselt.|)./.IT//|Säh, hästi! Samma|s tähendab Samas, kui kuvaKeskelementYhekordselt = trueIT//|Säh, hästi! | - tühitekst/.span-elemendi vahel (võivad olla tühjad): A, K1, Kt, K2, B.span-elementi (A) 0-pikkusega tühik (​), seda selleks, et tekstisisestusala div-element ei kollapseeruks.<span id='A'>IT//Sä</span><span id='K1' class='kesk'>h</span><span id='Kt' class='kesk'>, </span><span id='K2'>h</span><span id='B'>ästi!</span><span id='A'>​</span><span id='K1'></span><span id='Kt'></span><span id='K2'></span><span id='B'></span> - tühiteksti esitamine 0-pikkusega tühiku abil
IT
Säh, hästi!
<br>-elemendi abil.Kuvatakse HTML-esituse abil. Näide:
<span id='A'>IT<br><br>Sä</span><span id='K1' class='kesk'>h</span><span id='Kt' class='kesk'>, </span><span id='K2'>h</span><span id='B'>ästi!</span>
/. Näide: IT//Säh, hästi! Tekst)
0 - ei logita midagi1 - logitakse tekstisisestus ja -väljastus2 - lisaks eelmisele logitakse keydown ja keypress sündmused jmlogimistase = 2; sirvija konsoolilaud OK, aud NOT OK) ja saadetud tekstSamasTest.html; testid pannakse kirja failis SamasTest.js.Tekst) püütakse kinni sündmuste keydown, keypress ja paste jälgimisega ja töötlemisega. #Tekst
(tekstisisestusväli)
↓
keydown keypress paste
(sündmusekäsitlejad)
↓ ↓
tootleEriklahv(keyCode) lisaTahtVoiPunktuatsioon(charCode)
↓ ↓
tootleBackspace()
tootleDelete()
kuvaKesktahtYhekordselt = true
kuvaKesktahtYhekordselt = false
suurtaheks()
vaiketaheks()
↓ ↓
kuvaTekst()
keydown käsitleja püüab kinni eriklahvivajutused, mida redaktoris tavapärasest eriliselt töödeldakse: 8 (Backspace), 46 (Delete), 33 (PgUp), 34 (PgDn), 38 (Up), 40 (Down). Nende vaikimisi toiming tühistatakse ja vajutusi käsitletakse tavapärasest erinevalt. Suunab eriklahvivajutuste töötlemiseks funktsiooni tootleEriklahv.keypress käsitleja suunab kasutaja sisestatud tärgi töötlemiseks funktsiooni lisaTahtVoiPunktuatsioon.paste käsitleja puhastab asetatava teksti kõrvalistest tärkidest ja kontrollib, kas asetamise tulemusena tekkinud tekst on samatekst. Kui ei ole, siis annab veateate ja sisendit ei aktsepteeri.Kasutaja sisendi töötlemiseks on vaja tuvastada ka kursori (caret) positsioon. Seda teeb funktsioon tuvastaCaretJaSeaSisekursor.
markeeriTekst ja markeeriTekstikoguTekst.seaCaret.Node objekt: https://www.w3schools.com/xml/dom_node.aspjQuery-ga tippudele ligipääsemine: https://api.jquery.com/get/
keypress parem kui keydown, sest keypress näitab, milline tärk sisestati (eristab suur- ja väiketähti). keydown näitab millist klahvi vajutati.Väga hea seletus: http://stackoverflow.com/questions/1367700/whats-the-difference-between-keydown-and-keypress-in-net
peidetud (style='display: none;'); parem kui JQuery show, hide ja toggle.Nuppude mitteaktiivseks tegemine klassiga disabled.
Input elemendis vt: setSelectionRange() HTML veebi-APIs HTMLInputElement - https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRangeoninput võimalust, vt
http://stackoverflow.com/questions/11189136/fire-oninput-event-with-jqueryVt ka http://stackoverflow.com/questions/9906885/detect-backspace-and-del-on-input-event
metakey-ga: http://stackoverflow.com/questions/2903991/how-to-detect-ctrlv-ctrlc-using-javascriptbreak lause ei tööta Javascript forEach-ga.Tärgi asetamine stringi - vt http://stackoverflow.com/questions/4313841/javascript-how-can-i-insert-a-string-at-a-specific-index
Ctrl+V (Paste) käsitlemine
- Vt https://www.w3.org/TR/clipboard-apis/
- Vt onpaste sündmus https://www.w3schools.com/jsref/event_onpaste.asp
- Kasutatud on: http://stackoverflow.com/questions/6902455/how-do-i-capture-the-input-value-on-a-paste-event
Range - The Range interface represents a fragment of a document that can contain nodes and parts of text nodes. Vt https://developer.mozilla.org/en-US/docs/Web/API/Rangedocument.createRange() vt: https://developer.mozilla.org/en-US/docs/Web/API/Document/createRangeRange objekt vt: https://developer.mozilla.org/en-US/docs/Web/API/RangeSelection objekt vt: https://developer.mozilla.org/en-US/docs/Web/API/Selection