From f947b32c718eb6438ac655514441e93254b693f4 Mon Sep 17 00:00:00 2001 From: rxf Date: Wed, 3 May 2023 20:24:05 +0200 Subject: [PATCH] Alles erst mal soweit fertig --- ...rfile_tabletten => Dockerfile_spritzschema | 0 build_and_copy.sh | 4 +- modules/mongointerface.js | 5 +- package.json | 5 +- public/javascripts/script.js | 89 ++++++++++--------- public/stylesheets/style.css | 14 +++ routes/index.js | 11 ++- views/layout.pug | 12 +++ 8 files changed, 94 insertions(+), 46 deletions(-) rename Dockerfile_tabletten => Dockerfile_spritzschema (100%) mode change 100644 => 100755 build_and_copy.sh diff --git a/Dockerfile_tabletten b/Dockerfile_spritzschema similarity index 100% rename from Dockerfile_tabletten rename to Dockerfile_spritzschema diff --git a/build_and_copy.sh b/build_and_copy.sh old mode 100644 new mode 100755 index 1f07fb5..77672ae --- a/build_and_copy.sh +++ b/build_and_copy.sh @@ -14,8 +14,8 @@ set -x port="" -orgName=sensorapi -name=sensorapi +orgName=spritzschema +name=spritzschema usage() { diff --git a/modules/mongointerface.js b/modules/mongointerface.js index b48b296..0a78f28 100644 --- a/modules/mongointerface.js +++ b/modules/mongointerface.js @@ -9,10 +9,13 @@ const MONGOUSRP = process.env.MONGOUSRP || "" const MONGOBASE = process.env.MONGOBASE || 'medizin' const MONGO_URL = MONGOAUTH ? 'mongodb://'+MONGOUSRP+'@' + MONGOHOST + ':' + MONGOPORT + '/?authSource=admin' : 'mongodb://'+MONGOHOST+':'+MONGOPORT // URL to mongo database -const COLLECTION = 'spritzschema' +let COLLECTION = 'spritzschema' const doMongo = async function(cmd, options) { let erg = {err: null} + if (options.testing) { + COLLECTION = 'spritzschema_test' + } const client = new MongoClient(MONGO_URL, { useUnifiedTopology: true }) try { await client.connect() diff --git a/package.json b/package.json index e640806..5e21463 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { - "name": "untitled", - "version": "0.0.0", + "name": "Spritzschema", + "version": "0.0.1", + "date": "2023-05-03", "private": true, "scripts": { "start": "node ./bin/www" diff --git a/public/javascripts/script.js b/public/javascripts/script.js index 7afd184..fc4f45a 100644 --- a/public/javascripts/script.js +++ b/public/javascripts/script.js @@ -1,50 +1,57 @@ document.addEventListener('DOMContentLoaded', async function () { - const DateTime = luxon.DateTime; - let curdate = '' - const dt = DateTime.now() - const dt1 = dt.plus({month:1}) - curdate = `${dt.toFormat('LLLL')}/${dt1.toFormat('LLLL_y')}` - document.querySelector('#curmon').innerHTML = curdate.replace('_',' ') + const DateTime = luxon.DateTime - - initSchema('2023-05-01') + if (sysParams.doinit) { + await initSchema('2023-05-01') + } let ret = await getData() - fillSchema(ret.data) + let schema = ret.data + fillSchema(schema) document.querySelector('#sptab').addEventListener('click', markField); - function markField (e) { + async function markField (e) { let field = e.target; - field.setAttribute('aria-label','x'); + let d = schema.data[34].day + field.setAttribute('aria-label','x'); field.setAttribute('disabled','disabled'); - let data = {curdate: curdate} - let setArray = [] - let fields = document.querySelectorAll('#sptab button') - for (i = 0; i < fields.length; i++) { - let status = { day: fields[i].innerHTML, status: false } - if (fields[i].hasAttribute('disabled')) { - status.status = true - } - setArray.push(status) - } - data.data = setArray - storeData(data) + schema.data[parseInt(field.id.slice(2))-1].status = true + await storeData(schema) if (e.srcElement.id === 'bt35') { - showNextMonth(e.srcElement.innerHTML) + let ldt = DateTime.fromISO(d) + ldt = ldt.plus({day: 1}) + await initSchema(ldt.toFormat('y-LL-dd')) } } - function fillSchema(data) { - const setArray = data.data + function fillSchema(schema) { + const setArray = schema.data + let months = '' + for (let x of schema.months) { + months += x + ' - ' + } + months = months.slice(0, -3) + months += ' ' + for (let x of schema.years) { + months += x + '/' + } + months = months.slice(0, -1) + document.querySelector('#curmon').innerHTML = months for(let i = 0; i < 35; i++) { let sel = '#bt'+(i+1) + let day = DateTime.fromISO(setArray[i].day) if (setArray[i].day !== '') { - document.querySelector(sel).innerHTML = DateTime.fromISO(setArray[i].day).toFormat('d') + let x = `${day.toFormat('d')} +
${day.setLocale('de').toFormat('ccc')}` + document.querySelector(sel).innerHTML = x if (setArray[i].status) { document.querySelector(sel).setAttribute('aria-label', 'x') document.querySelector(sel).setAttribute('disabled', 'disabled') + } else { + document.querySelector(sel).setAttribute('aria-label', '') + document.querySelector(sel).removeAttribute('disabled') } } else { document.querySelector(sel).setAttribute('disabled', 'disabled') @@ -52,12 +59,12 @@ document.addEventListener('DOMContentLoaded', async function () { } } - async function getData() { + async function getData(testing) { let erg = await fetch('data') return erg.json() } - async function storeData(data) { + async function storeData(data, testing) { const response = await fetch('/data', { method: "POST", body: JSON.stringify(data), @@ -68,17 +75,11 @@ document.addEventListener('DOMContentLoaded', async function () { return response.json() } - function showNextMonth() { - const dt = DateTime.now() - const dt1 = dt.plus({month:1}) - curdate = `${dt.toFormat('LLLL')}/${dt1.toFormat('LLLL_y')}` - document.querySelector('#curmon').innerHTML = curdate.replace('_',' ') - fillSchema(ret.data) - } - - function initSchema(startdate) { + async function initSchema(startdate) { let setArray = [] + let monthArray = [] + let yearsArray = [] let ld0 = DateTime.fromISO(startdate) let k = 0 for(let i = 0; i < 35; i++) { @@ -88,12 +89,20 @@ document.addEventListener('DOMContentLoaded', async function () { } else { let ld = ld0.plus({day: k}) elem.day = ld.toFormat('y-LL-dd') + let month = ld.setLocale('de').toFormat('LLLL') + let year = ld.toFormat('y') + if (monthArray.indexOf(month) === -1) { + monthArray.push(month) + } + if (yearsArray.indexOf(year) === -1) { + yearsArray.push(year) + } k++ } setArray.push(elem) } - let data = {curdate: startdate, data: setArray} - storeData(data) + let schema = {curdate: startdate, months: monthArray, years: yearsArray, data: setArray} + await storeData(schema) } }); diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 860ae6b..c2ca878 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -41,3 +41,17 @@ a { .spritztab [aria-label="x"] { background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3Cline%20x1%3D%220.1%22%20y1%3D%220.1%22%20x2%3D%220.9%22%20y2%3D%220.9%22%20stroke-width%3D%220.1%22%20stroke%3D%22red%22%2F%3E%3Cline%20x1%3D%220.1%22%20y1%3D%220.9%22%20x2%3D%220.9%22%20y2%3D%220.1%22%20stroke-width%3D%220.1%22%20stroke%3D%22red%22%2F%3E%3C%2Fsvg%3E'); } + +.small { + font-size: 60%; + color: gray; +} + +footer { + width: 70vmin; + margin: auto; +} +#v { + text-align: right; + margin-top: 30px; +} \ No newline at end of file diff --git a/routes/index.js b/routes/index.js index cc5c5a5..d960381 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,15 +1,23 @@ const express = require('express'); const router = express.Router(); const domongo = require('../modules/mongointerface') +const pkg = require('../package.json') /* GET home page. */ router.get('/', function(req, res, next) { - res.render('index', { title: 'Express' }); + res.render('index', { + test: req.query.test === 'true', + doinit: req.query.doinit === 'true', + version: pkg.version, + title: pkg.name, + date: pkg.date + }); }) router.get('/data', async function(req, res, next) { const options = {} options.curdate = req.query.curdate + options.testing = req.query.test let erg = await domongo.doMongo('getlastdata', options) res.json(erg) }) @@ -17,6 +25,7 @@ router.get('/data', async function(req, res, next) { router.post('/data', async function (req, res, next) { const options = {} options.data = req.body + options.testing = req.query.test let erg = await domongo.doMongo('putdata', options) res.json(erg) }) diff --git a/views/layout.pug b/views/layout.pug index 6242c74..6267b3d 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -6,5 +6,17 @@ html script(src="https://cdn.jsdelivr.net/npm/luxon@3.3.0/build/global/luxon.min.js") script(src="/javascripts/script.js") + script. + let sysParams = { + testing: '#{test}', + version: '#{version}', + date: '#{date}', + doinit: '#{doinit}' + } + + body block content + footer + #v + | Version #{version} vom #{date}