From c8d0221247b83ae5e09f025efb9964a54f795376 Mon Sep 17 00:00:00 2001 From: Anthony Correa Date: Sun, 10 Mar 2024 14:16:31 -0500 Subject: [PATCH 1/4] dockerizing --- .dockerignore | 4 ++++ Dockerfile | 14 ++++++++++++++ bin/www | 24 ++++++++++++------------ caddy/Caddyfile | 3 +++ docker-compose.yml | 24 ++++++++++++++++++++++++ src/app.js | 2 ++ 6 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 caddy/Caddyfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..edd83c0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +node_modules +npm-debug.log +Dockerfile +.dockerignore \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e8caf97 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM node:21 + +RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app +RUN mkdir -p /home/node/app/var/db && chown -R node:node /home/node/app +WORKDIR /home/node/app + +USER node +COPY --chown=node:node package*.json ./ +RUN npm install +COPY --chown=node:node src src +COPY --chown=node:node bin bin + +EXPOSE 3000 +CMD [ "npm", "start" ] diff --git a/bin/www b/bin/www index 36e14e1..13e2e8b 100755 --- a/bin/www +++ b/bin/www @@ -20,20 +20,18 @@ const path = require("path"); var port = normalizePort(process.env.PORT || "3000"); app.set("port", port); -/** - * Create HTTPS server. - */ -const https_options = { - key: fs.readFileSync("certs/key.pem"), - cert: fs.readFileSync("certs/cert.pem"), -}; if (process.env.NODE_ENV === "development") { - // console.log(`starting livereload, watching ${path.join(__dirname, "../src/views")}`) + /** + * Create HTTPS server. + */ + const https_options = { + key: fs.readFileSync("certs/key.pem"), + cert: fs.readFileSync("certs/cert.pem"), + }; var livereload = require("livereload"); - var connectLiveReload = require("connect-livereload"); - const liveReloadServer = livereload.createServer({https: https_options, extraExts: ['pug']}); + const liveReloadServer = livereload.createServer({https: https_options}); liveReloadServer.watch(path.join(__dirname, "../src/views")); liveReloadServer.server.once("connection", () => { setTimeout(() => { @@ -41,9 +39,11 @@ if (process.env.NODE_ENV === "development") { }, 100); }); + var server = https.createServer(https_options, app); +} +else { + var server = http.createServer(app); } - -var server = https.createServer(https_options, app); /** * Listen on provided port, on all network interfaces. diff --git a/caddy/Caddyfile b/caddy/Caddyfile new file mode 100644 index 0000000..b186387 --- /dev/null +++ b/caddy/Caddyfile @@ -0,0 +1,3 @@ +localhost { + reverse_proxy app:3000 +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ef60eeb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.3" + +services: + app: + env_file: + - .env + build: . + networks: + - web + expose: + - 3000 + + caddy: + image: caddy + ports: + - 80:80 + - 443:443 + volumes: + - ./caddy/Caddyfile:/etc/caddy/Caddyfile + networks: + - web + +networks: + web: \ No newline at end of file diff --git a/src/app.js b/src/app.js index e9db2b9..0f1dbe5 100644 --- a/src/app.js +++ b/src/app.js @@ -163,4 +163,6 @@ app.use(function (err, req, res, next) { // next(createError(404)); // }); +app.set('trust proxy') + module.exports = {app}; \ No newline at end of file From 05c948fd16d69bf0efbaa68bb083a202d5b16762 Mon Sep 17 00:00:00 2001 From: Anthony Correa Date: Tue, 12 Mar 2024 08:03:42 -0500 Subject: [PATCH 2/4] add domain to caddy file via env variable --- caddy/Caddyfile | 2 +- docker-compose.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/caddy/Caddyfile b/caddy/Caddyfile index b186387..d39c8ff 100644 --- a/caddy/Caddyfile +++ b/caddy/Caddyfile @@ -1,3 +1,3 @@ -localhost { +{$DOMAIN} { reverse_proxy app:3000 } \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ef60eeb..ad431c0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,8 @@ services: - ./caddy/Caddyfile:/etc/caddy/Caddyfile networks: - web + env_file: + - .env networks: web: \ No newline at end of file From dd48aeca8d420011dd23e692b13b5d5a60253398 Mon Sep 17 00:00:00 2001 From: Anthony Correa Date: Fri, 3 May 2024 07:41:29 -0500 Subject: [PATCH 3/4] eventsheet styling fixes --- src/public/css/eventsheet.css | 34 +++-- src/public/css/eventsheet.css.map | 2 +- src/scss/eventsheet.scss | 35 ++++-- .../partials/roster_and_history.hbs | 4 +- src/views/eventsheet/sheet.hbs | 116 +++++++++++------- 5 files changed, 122 insertions(+), 69 deletions(-) diff --git a/src/public/css/eventsheet.css b/src/public/css/eventsheet.css index df24bd5..3b9ad70 100644 --- a/src/public/css/eventsheet.css +++ b/src/public/css/eventsheet.css @@ -15,15 +15,18 @@ } /** For Print **/ @media print { + body { + margin: 0; + } body .sheet { size: B5; - padding: 0.2in; + padding: 0.175in; } } /** For screen preview **/ @media screen { body .sheet { - padding: 0.2in; + padding: 0.175in; } body { background: #e0e0e0; @@ -137,8 +140,8 @@ table tr th:empty::after, table tr td:empty::after { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; - column-gap: 0.2in; - row-gap: 0.2in; + column-gap: 0.35in; + row-gap: 0.35in; background-size: 100%; } @@ -256,6 +259,16 @@ td.substitution { border-left: 1px solid black; } +section.blank { + filter: opacity(0.4); +} +section.blank img, section.blank header { + filter: grayscale(1); +} +section.blank td.substitution { + border-width: 0.5; +} + #lineup-card-exchange td.player-name { font-stretch: 100%; } @@ -370,8 +383,7 @@ td.substitution { grid-area: defense; padding: 4px 4px 0px 4px; /* top right bottom left */ display: flex; - border-right: 0.5px solid grey; - border-bottom: 0.5px solid grey; + border: 0.5px solid grey; } #defense-pane .field-container { display: grid; @@ -590,16 +602,11 @@ header { background-color: inherit; } -.past.available-status-code-1 { +.past.available-status-code-1.Y { color: inherit; background-color: var(--color-warning); } -.past.available-status-code-1.started { - color: inherit; - background-color: inherit; -} - .available-status-code-2 { color: blue; background-color: #acc9fe; @@ -613,6 +620,9 @@ header { font-weight: bold; } +#roster-and-history thead { + border: black solid 1px; +} #roster-and-history > div > table { /* font-size: 10.5px; */ padding: 0; diff --git a/src/public/css/eventsheet.css.map b/src/public/css/eventsheet.css.map index d7b275e..7815e04 100644 --- a/src/public/css/eventsheet.css.map +++ b/src/public/css/eventsheet.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../scss/eventsheet.scss"],"names":[],"mappings":";AAAQ;AACA;AACA;AACA;AACA;AAER;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AACA;EACE;IACE;IACA;;;AAIJ;AACA;EACE;IACE;;EAEF;IACE;;EAEF;IACE;IACA;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;AACA;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAKA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAQR;EACE;;;AAGF;EACE;;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;AACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA;EACA;EACA,qBACE;;;AAIJ;AAAA;EAEE;EACA;EACA;EACA,qBACE;;;AAIJ;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;AAEA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;;AAGF;AACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAKA;EACE;EACA;EACA;EACA,qBACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;AACE;EACA;EACA;EACA;AACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;AACA;EACE;;AAQJ;EACE;EACA;EACA;;AAEF;EACE;;;AAON;EACE;;AAGF;EACE;;AAIA;EACE;EACA;;AAMF;EACE;;AAGF;EAOE;EACA;EACA;EACA;;AATA;EACE;;AACA;EACE;;;AAeV;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAMI;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAUZ;EACE;EAEA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EAIE;EACA;EACA;;AALA;EACE;;AAKF;EACI;;;AASV;EACE;AACA;EACA;EAEA;EACA;AACA;;AAEA;EACE;EACA;;AAGF;EACE;;AACA;EACE;;;AAON;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;AACA;AACA;AACA;EACA;EAEA;EACA;EACA;EACA;EACA;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AASA;AACE;EACA;EACA;AACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAEE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAMN;EACE;EACA;EACA;;AAEF;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAQJ;EACE;;AAGF;EACE;;AAGF;EACE;;;AAOJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;AACA;AAAA;;;AAIF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACI;EACA;EACA;EACA;;AAGJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE","file":"eventsheet.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../scss/eventsheet.scss"],"names":[],"mappings":";AAAQ;AACA;AACA;AACA;AACA;AAER;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AACA;EACE;IACE;;EAEF;IACE;IACA;;;AAIJ;AACA;EACE;IACE;;EAEF;IACE;;EAEF;IACE;IACA;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;AACA;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAKA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAQR;EACE;;;AAGF;EACE;;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;AACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA;EACA;EACA,qBACE;;;AAIJ;AAAA;EAEE;EACA;EACA;EACA,qBACE;;;AAIJ;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;AAEA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;;AAGF;AACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;;;AAGF;EACE;;;AAGF;EACE;;AACA;EACE;;AAEF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAKA;EACE;EACA;EACA;EACA,qBACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;AACE;EACA;EACA;EACA;AACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;AACA;EACE;;AAQJ;EACE;EACA;EACA;;AAEF;EACE;;;AAON;EACE;;AAGF;EACE;;AAIA;EACE;EACA;;AAMF;EACE;;AAGF;EAOE;EACA;EACA;EACA;;AATA;EACE;;AACA;EACE;;;AAeV;EACE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAMI;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAIR;EACE,SALM;;AAUZ;EACE;EAEA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EAIE;EACA;EACA;;AALA;EACE;;AAKF;EACI;;;AASV;EACE;AACA;EACA;EAEA;EACA;AACA;;AAEA;EACE;EACA;;AAGF;EACE;;AACA;EACE;;;AAON;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;AACA;AACA;AACA;EACA;EAEA;EACA;EACA;EACA;EACA;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AASA;EACE;;AAEF;AACE;EACA;EACA;AACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAEE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAMN;EACE;EACA;EACA;;AAEF;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAQJ;EACE;;AAGF;EACE;;AAGF;EACE;;;AAOJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;AACA;AAAA;;;AAIF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACI;EACA;EACA;EACA;;AAGJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE","file":"eventsheet.css"} \ No newline at end of file diff --git a/src/scss/eventsheet.scss b/src/scss/eventsheet.scss index 591669a..5e2bd0a 100644 --- a/src/scss/eventsheet.scss +++ b/src/scss/eventsheet.scss @@ -17,16 +17,19 @@ /** For Print **/ @media print { + body { + margin:0; + } body .sheet { size: B5; - padding: 0.2in; + padding: 0.175in; } } /** For screen preview **/ @media screen { body .sheet { - padding: 0.2in; + padding: 0.175in; } body { background: #e0e0e0; @@ -158,8 +161,8 @@ table { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; - column-gap: 0.2in; - row-gap: 0.2in; + column-gap: 0.35in; + row-gap: 0.35in; background-size: 100%; } @@ -288,6 +291,16 @@ td.substitution { border-left: 1px solid black; } +section.blank { + filter: opacity(0.4); + img, header { + filter: grayscale(1); + } + td.substitution { + border-width: 0.5; +} +} + #lineup-card-exchange td.player-name { font-stretch: 100%; } @@ -435,8 +448,8 @@ td.substitution { grid-area: defense; padding: 4px 4px 0px 4px; /* top right bottom left */ display: flex; - border-right: 0.5px solid grey; - border-bottom: 0.5px solid grey; + border: 0.5px solid grey; + // border-bottom: 0.5px solid grey; .field-container { display: grid; @@ -661,16 +674,11 @@ header { background-color: inherit; } -.past.available-status-code-1 { +.past.available-status-code-1.Y { color: inherit; background-color: var(--color-warning); } -.past.available-status-code-1.started { - color: inherit; - background-color: inherit; -} - .available-status-code-2 { color: blue; background-color: #acc9fe; @@ -690,6 +698,9 @@ header { // text-transform: uppercase; // font-size: 0.8em; // } + thead { + border: black solid 1px; + } > div > table { /* font-size: 10.5px; */ padding: 0; diff --git a/src/views/eventsheet/partials/roster_and_history.hbs b/src/views/eventsheet/partials/roster_and_history.hbs index 3da3658..640b6a7 100644 --- a/src/views/eventsheet/partials/roster_and_history.hbs +++ b/src/views/eventsheet/partials/roster_and_history.hbs @@ -62,14 +62,14 @@
| + Starting + | ++ Substitution + | +|||
|---|---|---|---|---|
| + | ++ | ++ | ++ | ++ | +
| - Starting - | -- Substitution - | -|||
|---|---|---|---|---|
| - | -- | -- | -- | -- | -