diff --git a/src/Web.ts b/src/Web.ts index 9d0f244..a5bb4c8 100644 --- a/src/Web.ts +++ b/src/Web.ts @@ -4,11 +4,18 @@ import express from 'express'; import bodyParser from 'body-parser'; import type { Express } from 'express'; import { createEvent } from 'ics'; +import path from 'path'; +import { promises as fsp } from 'fs'; interface WebConfig { port?: number; } +interface Install { + os: 'manjaro' | 'mint' | 'chrome' | 'other', + form: 'laptop' | 'desktop' | 'aio' +} + const DATE = process.env['DATE'] || 'November 1st'; const TIME = process.env['TIME'] || '2:30PM-5:30PM'; @@ -23,6 +30,7 @@ class Web { private _webserver: http.Server | null = null; private app: Express | null = null; private port: number; + private installs: Install[] = []; // private options: WebConfig; constructor(options: WebConfig = {}) { @@ -33,6 +41,14 @@ class Web { initialize = async () => { // const options = this.options; const app: Express = this.app = express(); + try { + this.installs = JSON.parse(await fsp.readFile(process.env['config'] || process.env['CONFIG'] || path.join(process.cwd(), 'config', 'installs.json'), 'utf-8')); + } + catch(ex) { + console.error(ex); + this.installs = []; + } + app.set('trust proxy', 1); app.set('view engine', 'ejs'); @@ -70,6 +86,7 @@ class Web { description: `Windows 10 support is ending, but you may not need a brand-new PC! Sector67 in Madison, Wisconsin is hosting a Linux install party to help the community keep their current computers usable and up-to-date. Join us on ${DATE}` }, date: DATE, + installs: this.installs, time: TIME }); }); diff --git a/styles/01-layout.scss b/styles/01-layout.scss index f3e14a1..bd3721f 100644 --- a/styles/01-layout.scss +++ b/styles/01-layout.scss @@ -73,6 +73,34 @@ img { max-width: 100%; } +#installs { + h1 { + animation-iteration-count: infinite; + animation-name: zoomie; + animation-duration: 1.5s; + animation-timing-function: ease-out; + } + + span { + padding: .05em .25em; + border-radius: .15em; + } +} + +@keyframes zoomie { + 0% { + transform: perspective(800px) translate3d(0, 0, 0px); + } + + 50% { + transform: perspective(800px) translate3d(0, 0, 40px); + } + + 100% { + transform: perspective(800px) translate3d(0, 0, 0px); + } +} + @media screen and (max-width:540px) { .content { width: 95%; diff --git a/styles/02-colors.scss b/styles/02-colors.scss index 64f0cb9..c0ed691 100644 --- a/styles/02-colors.scss +++ b/styles/02-colors.scss @@ -44,4 +44,8 @@ a.btn { color: #fff; } } -} \ No newline at end of file +} + +#installs span { + background: #1A237E; +} diff --git a/views/head.ejs b/views/head.ejs index c0c8488..37a09dc 100644 --- a/views/head.ejs +++ b/views/head.ejs @@ -14,7 +14,7 @@ <% } %> - +