diff --git a/js/commands.js b/js/commands.js index 8420d38..917a9dc 100644 --- a/js/commands.js +++ b/js/commands.js @@ -3,6 +3,7 @@ function cmd_help() { return "Commands list:
" + " -about Information about this website
"+ " -clear Clear terminal screen
" + + " -history Displays the command history of this session
" + " -exec Execute arbitrary math and logic equations"; } @@ -18,6 +19,10 @@ function cmd_clear() { return ""; } +function cmd_history() { + return ""; +} + function cmd_exec(input) { // No input was given if (input === undefined) diff --git a/js/main.js b/js/main.js index 98aa1f9..4698dd7 100644 --- a/js/main.js +++ b/js/main.js @@ -5,6 +5,7 @@ const length = pretext.length+1; let startPosition = length; let cursorPosition = 0; let cursorYOffset = 7; +let history = {index: 0, list: []}; // Initiating constants const tbDiv = document.getElementById("textbox"); @@ -87,6 +88,14 @@ document.addEventListener("keydown", e => { tbDiv.removeChild(textIn); tbDiv.removeChild(textCur); + const inputSet = new Set(text.split('')); + if (text !== "" || inputSet.has(" ") && inputSet.size === 1) { + history.list.push(text); + history.index = history.list.length; + console.log(history); + } + + // Fix current input to page tbDiv.appendChild(createText(text)); tbDiv.innerHTML += `
`; @@ -112,10 +121,25 @@ document.addEventListener("keydown", e => { break; case "ArrowUp": // Einen Befehl zurück in der History - + if (history.index > 0) { + history.index--; + textCur.textContent = history.list[history.index]; + cursorPosition = textCur.textContent.length; + } + updateCursor(); break; case "ArrowDown": // Einen Befehl nach vorne in der History + if (history.index < history.list.length-1) { + history.index++; + textCur.textContent = history.list[history.index]; + cursorPosition = textCur.textContent.length; + } else { + history.index++; + textCur.textContent = ""; + cursorPosition = 0; + } + updateCursor(); break; case "Tab": // Autocomplete