Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,21 @@ <h2 id="header">typings</h2>
<input id="input-field" type="text" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off" tabindex="1"/>
<button id="redo-button" onclick="setText()" tabindex="2">redo</button>
</div>
<span id="error-message" class="wrong hidden"></span>
</div>
</div>
<div id="theme-center" class="hidden">
<div id="left-wing" onClick="hideThemeCenter();">< back</div>
<div id="theme-area"></div>
</div>
<div id="language-center" class="hidden">
<div id="left-wing" onClick="hideLanguageCenter();">< back</div>
<div id="language-area"></div>
</div>
<div id="footer">
<a href="https://github.com/briano1905/typings#typings" target="_blank" tabindex="3">user guide</a>/
<div id="show-themes"class="button" onClick="showThemeCenter();" tabindex="4">themes</div>
<div id="show-themes"class="button" onClick="showThemeCenter();" tabindex="4">themes</div>/
<div id="show-languages"class="button" onClick="showLanguageCenter();" tabindex="4">Languages</div>
</div>
<script src="main.js"></script>
</body>
Expand Down
79 changes: 77 additions & 2 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,11 @@ document.addEventListener('keydown', e => {
if (e.key === 'p') {
setPunctuation(inputField.value);
}
} else if (!document.querySelector('#theme-center').classList.contains('hidden')) {
} else if (!document.querySelector('#theme-center').classList.contains('hidden')
|| !document.querySelector('#language-center').classList.contains('hidden')) {
if (e.key === 'Escape'){
hideThemeCenter();
hideLanguageCenter();
inputField.focus();
}
}
Expand Down Expand Up @@ -280,6 +282,11 @@ function setTheme(_theme) {

function setLanguage(_lang) {
const lang = _lang.toLowerCase();

if(!lang) {
showErrorMessage("please type the language code for example german in the text box");
}

fetch('texts/random.json')
.then(response => response.json())
.then(json => {
Expand All @@ -297,7 +304,7 @@ function setLanguage(_lang) {

setText();
} else {
console.error(`language ${lang} is undefine`);
console.error(`language ${lang} is undefined`);
}
})
.catch(err => console.error(err));
Expand Down Expand Up @@ -381,6 +388,7 @@ function getCookie(cname) {
}

showAllThemes();

function showAllThemes(){
fetch(`themes/theme-list.json`)
.then(response => {
Expand Down Expand Up @@ -438,11 +446,78 @@ document.getElementById('show-themes').addEventListener('keydown', (e) => {
function showThemeCenter() {
document.getElementById('theme-center').classList.remove('hidden');
document.getElementById('command-center').classList.add('hidden');
document.getElementById('language-center').classList.add('hidden');
}

function hideThemeCenter() {
document.getElementById('theme-center').classList.add('hidden');
document.getElementById('command-center').classList.remove('hidden');
}

//Language change functions
showAllLanguages();

function showAllLanguages() {
fetch("texts/random.json")
.then(response => {
debugger;
if (response.status === 200) {
response
.text()
.then(body => {
let languages = JSON.parse(body);
let keys = Object.keys(languages);
let i;

for(i = 0;i < keys.length; i ++){

let language = document.createElement('div');
language.setAttribute('class', 'theme-button');
language.setAttribute('onClick', `setLanguage('${keys[i]}')`);
language.setAttribute('id', keys[i]);

language.setAttribute('tabindex', i + 5);
language.addEventListener('keydown', e => {
if (e.key === 'Enter') {
setTheme(language.id);
inputField.focus();
}
})

language.textContent = keys[i];
language.style.background = "rgb(250, 250, 250)";
language.style.color = languages[keys[i]]['color'];
debugger
document.getElementById('language-area').appendChild(language);
}
})
.catch(err => console.error(err));
} else {
console.log(`Cant find languages`);
}
})
.catch(err => console.error(err));
}

function showLanguageCenter() {
document.getElementById('language-center').classList.remove('hidden');
document.getElementById('theme-center').classList.add('hidden');
document.getElementById('command-center').classList.add('hidden');
}

function hideLanguageCenter() {
document.getElementById('language-center').classList.add('hidden');
document.getElementById('command-center').classList.remove('hidden');
}

function showErrorMessage(message) {
if(!message)
return;

let element = document.querySelector('#error-message');

if (element.classList.contains('hidden'))
element.classList.remove('hidden');

element.appendChild(document.createTextNode(message));
}
10 changes: 5 additions & 5 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ body {
transform: translateY(-2vh);
}

#theme-area{
#theme-area, #language-area {
margin-top: 1rem;
padding: 1.4rem 1rem;
border-radius: 0.4rem;
Expand All @@ -46,7 +46,7 @@ body {
grid-template-columns: 1fr 1fr 1fr 1fr;
}

#theme-center{
#theme-center, #language-center {
margin: 0 0.4rem;
width: 100%;
max-width: 40rem;
Expand All @@ -56,15 +56,15 @@ body {
transform: translateY(-2vh);
}

.theme-button{
.theme-button {
padding: 1rem 0;
background: gray;
border-radius: 0.4rem;
text-align: center;
font-size: .8rem;
}

.theme-button:hover{
.theme-button:hover {
cursor: pointer;
box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);
}
Expand Down Expand Up @@ -127,7 +127,7 @@ body {
display: none !important;
}

body, #header, #left-wing, #right-wing, #typing-area, #theme-area, #theme-center,
body, #header, #left-wing, #right-wing, #typing-area, #theme-area, #theme-center, #language-area
#text-display, #redo-button, #footer, #highlight {
transition: all .4s ease-in-out 0s;

Expand Down