From a97ca717d0b54bb407a8c563e2119770a855f0ab Mon Sep 17 00:00:00 2001 From: ssyyhhrr <44934807+ssyyhhrr@users.noreply.github.com> Date: Sat, 18 Jun 2022 19:15:46 +0100 Subject: [PATCH] Credits, Logs, Autocomplete by Last Name & Favicon --- app.js | 4 ++ assets/css/main.css | 28 +++++++++ assets/favicon.ico | Bin 0 -> 4286 bytes assets/js/main.js | 17 +++++- package-lock.json | 143 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 + views/index.ejs | 7 +++ 7 files changed, 198 insertions(+), 3 deletions(-) create mode 100644 assets/favicon.ico diff --git a/app.js b/app.js index 6bf9643..d8d3648 100644 --- a/app.js +++ b/app.js @@ -3,6 +3,8 @@ const _ = require("lodash") const fs = require("fs") const schedule = require("node-schedule") const express = require("express") +const favicon = require("serve-favicon") +const morgan = require("morgan") const flag = { "British": "gb", @@ -147,6 +149,8 @@ function server() { app.use(express.urlencoded({ extended: true })) app.use(express.static("assets")) + app.use(favicon('assets/favicon.ico')) + app.use(morgan("combined")) app.set("views", "views") app.set("view engine", "ejs") diff --git a/assets/css/main.css b/assets/css/main.css index 2d535db..c65d061 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -156,6 +156,34 @@ input[type=text] { font-family: "FormulaOne"; } +.credits { + color: white; + position: absolute; + text-align: center; + bottom: 1em; + font-family: "FormulaOne"; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +.credits p { + margin-bottom: 0.5em; +} + +a { + color: #fff; +} + +p a { + text-decoration: none; + color: #fd1706; +} + +p a:hover { + text-decoration: underline; +} + .row { display: flex; flex-direction: row; diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4e99bf4e12987d1ad0e39efdc815ddc458649ecf GIT binary patch literal 4286 zcmeH~*>2lb5QdoqmLT>yukH8i1Ku50~ z=5JrqjiI*n#!Y{60ZcZQ`tUvSg8HCpMX=?gbt5xA6yd>~~E?k(CSe7lFG@8KF-3RP@gTS8g zS1`XH1oPPtn0o_o(#S%Su}SH`IUv8#gPs{!Lq&gld>q!+*5sX?oho*Bcjc9pm3)-v z^K3r{k=x4s9`m=ZfhX*%=ub~iL!nTB zTF2hrUOAbF%dB4j@zFDgfA{BM9^*A4K70x-ei0mfcDVB8^_qUB`p+x%SBJiGE|K_0 zA2s5S|IkI%5B&T3`}_N)R5F=Y$KOc(K_0{hzv_;i=HwX1Urwh|1rx46@xc={*Lpb+ zA3X(2C_(EF^I!XS@@?~v^REo0&lgSo;Wy|%14|h7dplqIJAG7tVqyZewzeRj&+D?W zu|eaPOnqUs?qc8m4pn^f8$_`VEulEpdsfKRc-JNVRCX(4uwL1dlof@ z_7z9TWHR7zILQC#n^*n*bi3VvZDDS1u8NtN8KteQt!%T|fNE7QhVISI&MJ1hy^MYa pG^Z4M6uR$nxk&r@fwuMy{3Bk|x3TI;$9SeaH)+wgFKIXQcnOpcN+JLN literal 0 HcmV?d00001 diff --git a/assets/js/main.js b/assets/js/main.js index fc2c120..9cb3a4d 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -17,13 +17,24 @@ function autocomplete(inp, arr) { this.parentNode.appendChild(a); /*for each item in the array...*/ for (i = 0; i < arr.length; i++) { + let s1 = arr[i].split(" ")[0] + let s2 = arr[i].split(" ")[1] /*check if the item starts with the same letters as the text field value:*/ - if (arr[i].substr(0, val.length).toUpperCase() == val.toUpperCase()) { + if (s1.substr(0, val.length).toUpperCase() == val.toUpperCase() || s2.substr(0, val.length).toUpperCase() == val.toUpperCase() || arr[i].substr(0, val.length).toUpperCase() == val.toUpperCase()) { + let first = s1.substr(0, val.length).toUpperCase() == val.toUpperCase() + let second = s2.substr(0, val.length).toUpperCase() == val.toUpperCase() /*create a DIV element for each matching element:*/ b = document.createElement("DIV"); /*make the matching letters bold:*/ - b.innerHTML = "" + arr[i].substr(0, val.length) + ""; - b.innerHTML += arr[i].substr(val.length); + if (first) { + b.innerHTML = "" + s1.substr(0, val.length) + "" + s1.substr(val.length) + " " + s2; + } else if (second) { + b.innerHTML = s1 + " " + s2.substr(0, val.length) + ""; + b.innerHTML += s2.substr(val.length); + } else { + b.innerHTML = "" + arr[i].substr(0, val.length) + ""; + b.innerHTML += arr[i].substr(val.length); + } /*insert a input field that will hold the current array item's value:*/ b.innerHTML += ""; /*execute a function when someone clicks on the item value (DIV element):*/ diff --git a/package-lock.json b/package-lock.json index 6b1807b..d9f6694 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,9 @@ "ejs": "^3.1.8", "express": "^4.18.1", "lodash": "^4.17.21", + "morgan": "^1.10.0", "node-schedule": "^2.1.0", + "serve-favicon": "^2.5.0", "xml-js": "^1.6.11" } }, @@ -72,6 +74,22 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -646,6 +664,32 @@ "node": "*" } }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -699,6 +743,14 @@ "node": ">= 0.8" } }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -817,6 +869,31 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==", + "dependencies": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-favicon/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "node_modules/serve-favicon/node_modules/safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -976,6 +1053,21 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -1395,6 +1487,28 @@ "brace-expansion": "^1.1.7" } }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "requires": { + "ee-first": "1.1.1" + } + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1433,6 +1547,11 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1518,6 +1637,30 @@ } } }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==", + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, "serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", diff --git a/package.json b/package.json index 017e319..7b1e609 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "ejs": "^3.1.8", "express": "^4.18.1", "lodash": "^4.17.21", + "morgan": "^1.10.0", "node-schedule": "^2.1.0", + "serve-favicon": "^2.5.0", "xml-js": "^1.6.11" } } diff --git a/views/index.ejs b/views/index.ejs index 3591875..5a328a0 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -5,7 +5,9 @@ + Stewardle +

Stewardle

@@ -79,6 +81,11 @@ +
+

Inspired by Wordle

+

Created by syhr

+ +
\ No newline at end of file