Version 2.1.0 release

This commit is contained in:
Maciej Pędzich 2020-12-13 18:01:59 +01:00
parent 121373f114
commit 761638ebb0
4 changed files with 118 additions and 92 deletions

View File

@ -1,5 +1,11 @@
# Changelog # Changelog
## v2.1.0
- Remove unnecessary "exit" command
- Remove native webstie scrollbar
- Add command retyping using up and down arrows
## v2.0.1 ## v2.0.1
- Fix "unkown" typo - Fix "unkown" typo
@ -7,4 +13,4 @@
## v2.0.0 ## v2.0.0
- Initial version 2.x.x release - Initial version 2.x.y release

View File

@ -1,62 +1,72 @@
@font-face { @font-face {
font-family: "VGA 437"; font-family: 'VGA 437';
src: url("../fonts/vga437.ttf"); src: url('../fonts/vga437.ttf');
} }
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
body, #cmd { body,
color: whitesmoke; #cmd {
} color: whitesmoke;
}
body { body {
background-color: black; background-color: black;
} }
} }
@media (prefers-color-scheme: light) { @media (prefers-color-scheme: light) {
body, #cmd { body,
color: black; #cmd {
} color: black;
}
body { body {
background-color: whitesmoke; background-color: whitesmoke;
} }
} }
body, #cmd { body {
font-family: "VGA 437"; overflow: hidden;
font-size: 1.5rem; }
body,
#cmd {
font-family: 'VGA 437';
font-size: 1.5rem;
} }
#cmd-history > p { #cmd-history > p {
line-height: 2rem; line-height: 2rem;
} }
#header > p { #header > p {
margin: 0.5rem auto; margin: 0.5rem auto;
} }
#header > #hint, #input-container, #cmd-history { #header > #hint,
margin-top: 1.8rem; #input-container,
#cmd-history {
margin-top: 1.8rem;
} }
#input-container { #input-container {
display: flex; display: flex;
} }
#bracket { #bracket {
padding-right: 0.75rem; padding-right: 0.75rem;
text-align: center; text-align: center;
vertical-align: middle; vertical-align: middle;
line-height: 1.7rem; line-height: 1.7rem;
} }
#cmd { #cmd {
border: none; border: none;
background: none; background: none;
flex: 1 flex: 1;
} }
#cmd:active, #cmd:focus { #cmd:active,
outline: none; #cmd:focus {
outline: none;
} }

View File

@ -10,56 +10,65 @@ input.focus();
input.addEventListener('blur', (evt) => input.focus()); input.addEventListener('blur', (evt) => input.focus());
window.addEventListener('keypress', (evt) => { window.addEventListener('keypress', (evt) => {
const command = input.value.trim(); const command = input.value.trim();
if (evt.key === 'Enter' && command.length > 0) { if (evt.key === 'Enter' && command.length > 0) {
const cmdToSave = document.createElement('p'); const cmdToSave = document.createElement('p');
const output = document.createElement('p'); const output = document.createElement('p');
cmdToSave.textContent = `> ${command}`; cmdToSave.textContent = `> ${command}`;
cmdHistoryElement.append(cmdToSave); cmdHistoryElement.append(cmdToSave);
switch (command) { switch (command.toLowerCase()) {
default: default:
output.style.color = 'red'; output.style.color = 'red';
output.textContent = `ERROR: Unknown command '${command}'`; output.textContent = `ERROR: Unknown command '${command}'`;
break; break;
case 'about': case 'about':
const age = today.getFullYear() - new Date('2005-05-08').getFullYear() const age = today.getFullYear() - new Date('2005-05-08').getFullYear();
output.textContent = `Maciej Pedzich is a ${age}-year-old high school student from Kielce, Poland. output.textContent = `Maciej Pedzich is a ${age}-year-old high school student from Kielce, Poland.
He makes web applications using Vue.js, Node.js, Express and MongoDB/PostgreSQL, but he likes experimenting with other solutions too. He makes web applications using Vue.js, Node.js, Express and MongoDB/PostgreSQL, but he likes experimenting with other solutions too.
He believes that by being creative and cooperating with others, you can achieve success. He believes that by being creative and cooperating with others, you can achieve success.
When not coding he is probably watching an F1 race or playing retro video games.`; When not coding he is probably watching an F1 race or playing retro video games.`;
break; break;
case 'contact': case 'contact':
output.innerHTML = `Email address: output.innerHTML = `Email address:
<a href="mailto:contact@maciejpedzi.ch">contact@maciejpedzi.ch</a>`; <a href="mailto:contact@maciejpedzi.ch">contact@maciejpedzi.ch</a>`;
break; break;
case 'exit': case 'github':
window.close(); window.open('https://github.com/maciejpedzich');
break; break;
case 'github': case 'help':
window.open('https://github.com/maciejpedzich'); output.innerHTML = `<p>about - shows everything you need to know about Maciej</p>
break;
case 'help':
output.innerHTML = `<p>about - shows everything you need to know about Maciej</p>
<p>contact - displays contact information</p> <p>contact - displays contact information</p>
<p>exit - closes this page</p>
<p>github - shows Maciej's Github profile</p> <p>github - shows Maciej's Github profile</p>
<p>help - displays a list of available commands</p> <p>help - displays a list of available commands</p>
<p>skills - presents a set of current skills</p>`; <p>skills - presents a set of current skills</p>
break; <p>Use up and down arrows to retype previous commands</p>`;
case 'skills': break;
output.innerHTML = `<p>Frontend: HTML, CSS, JavaScript, TypeScript, Vue.js</p> case 'skills':
output.innerHTML = `<p>Frontend: HTML, CSS, JavaScript, TypeScript, Vue.js</p>
<p>Backend: JavaScript, TypeScript, Node.js, Express</p> <p>Backend: JavaScript, TypeScript, Node.js, Express</p>
<p>Database: MongoDB, PostgreSQL</p> <p>Database: MongoDB, PostgreSQL</p>
<p>Tooling: Git, Visual Studio Code, Linux Bash, Windows PowerShell</p> <p>Tooling: Git, Visual Studio Code, Linux Bash, Windows PowerShell</p>
<p>Hosting/Deployment: Netlify, Amazon Web Services, MongoDB Atlas</p>`; <p>Hosting/Deployment: Netlify, Amazon Web Services, MongoDB Atlas</p>`;
break; break;
} }
cmdHistory.push(command); cmdHistory.push(command);
cmdHistoryElement.append(output); cmdHistoryElement.append(output);
input.value = ''; input.value = '';
input.scrollIntoView(); input.scrollIntoView();
} }
});
window.addEventListener('keydown', (evt) => {
if (cmdHistory.length > 0) {
if (evt.key === 'ArrowUp') {
cmdIndex - 1 >= 0 ? cmdIndex-- : (cmdIndex = cmdHistory.length - 1);
input.value = cmdHistory[cmdIndex];
} else if (evt.key === 'ArrowDown') {
cmdIndex + 1 < cmdHistory.length ? cmdIndex++ : (cmdIndex = 0);
input.value = cmdHistory[cmdIndex];
}
}
}); });

View File

@ -1,25 +1,26 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta name="description" content="Maciej Pędzich - full-stack web developer, high school student, retro video games and F1 fan. All in one person."> <meta
<meta name="viewport" content="width=device-width, initial-scale=1.0"> name="description"
<title>Maciej Pędzich</title> content="Maciej Pędzich - full-stack web developer, high school student, retro video games and F1 fan. All in one person."
<link rel="stylesheet" href="./assets/css/style.css"> />
</head> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<body> <title>Maciej Pędzich</title>
<div id="header"> <link rel="stylesheet" href="./assets/css/style.css" />
<p>maciejpedzi.ch [Version 2.0.1]</p> </head>
<p> <body>
(c) Maciej Pedzich, 2020-<span id="currentYear"></span> <div id="header">
</p> <p>maciejpedzi.ch [Version 2.1.0]</p>
<p id="hint">Welcome! Type 'help' for more information</p> <p>(c) Maciej Pedzich, 2020-<span id="currentYear"></span></p>
</div> <p id="hint">Welcome! Type 'help' for more information</p>
<div id="cmd-history"></div> </div>
<div id="input-container"> <div id="cmd-history"></div>
<div id="bracket">></div> <div id="input-container">
<input type="text" id="cmd"> <div id="bracket">></div>
</div> <input type="text" id="cmd" />
<script src="./assets/js/script.js"></script> </div>
</body> <script src="./assets/js/script.js"></script>
</body>
</html> </html>