Some errors fixed, works for api.js

This commit is contained in:
rxf
2023-03-24 15:30:41 +01:00
parent c4c90b4455
commit 26e4b75a6f
7 changed files with 134 additions and 76 deletions
+4 -2
View File
@@ -5,7 +5,8 @@ import cookieParser from 'cookie-parser'
import cors from 'cors'
import indexRouter from './routes/index.js'
import apiRouter from './routes/index.js'
import { apiRouter } from './routes/api.js'
import chartRouter from './routes/chartapi.js'
const app = express()
@@ -15,8 +16,9 @@ app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(cookieParser())
app.use('/api', apiRouter)
app.use('/', indexRouter)
app.use('/api', apiRouter)
app.use('/chart', chartRouter)
// catch 404 and forward to error handler
+30
View File
@@ -0,0 +1,30 @@
import express from 'express'
import {getData4map} from "../actions/data4map.js"
import * as cTable from "../utilities/commands.js"
import * as ERR from "../utilities/errortexts.js"
export const apiRouter = express.Router();
export const dispatchCommand = async (cmd, table, query, res) => {
for (let c of table) {
if (c.cmd === cmd) {
let erg = await c.func(query)
if (typeof erg === 'string') {
res.type('text')
res.send(erg)
} else {
res.json(erg)
}
return
}
}
res.json({err: ERR.CMNDUNKOWN})
}
// normal routes called from javascript client
apiRouter.get('/:cmd', async (req, res) => {
await dispatchCommand(req.params.cmd, cTable.cmdTable, req.query, res)
})
+40
View File
@@ -0,0 +1,40 @@
import express from 'express'
import {getData4map} from "../actions/data4map.js"
import * as cTable from "../utilities/commands.js"
import * as ERR from "../utilities/errortexts.js"
const router = express.Router();
/* GET home page. */
// normal routes called from javascript client
router.get('/:cmd', async (req, res) => {
const cmd = req.params.cmd
let table
for (let c of cTable.chartcmdTable) {
if (c.cmd === cmd) {
let erg = await c.func(req.query)
if (typeof erg === 'string') {
res.type('text')
res.send(erg)
} else {
res.json(erg)
}
return
}
}
res.json({err: ERR.CMNDUNKOWN})
})
router.post('/:cmd', async (req, res) => {
const cmd = req.params.cmd
if (cmd === 'getdata4maps') {
const erg = await getData4map(req.body)
res.json(erg)
} else {
res.json({err: ERR.CMNDUNKOWN})
}
})
export default router
+2 -30
View File
@@ -1,43 +1,15 @@
import express from 'express'
import {getData4map} from "../actions/data4map.js"
import cmdTable from "../utilities/commands.js"
import * as cTable from "../utilities/commands.js"
import * as ERR from "../utilities/errortexts.js"
const router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.status(200).json({message: ERR.NOTHIMG})
});
// normal routes called from javascript client
router.get('/:cmd', async (req, res) => {
const cmd = req.params.cmd
for (let c of cmdTable) {
if (c.cmd === cmd) {
let erg = await c.func(req.query)
if (typeof erg === 'string') {
res.type('text')
res.send(erg)
} else {
res.json(erg)
}
return
}
}
res.json({err: ERR.CMNDUNKOWN})
})
router.post('/:cmd', async (req, res) => {
const cmd = req.params.cmd
if (cmd === 'getdata4maps') {
const erg = await getData4map(req.body)
res.json(erg)
} else {
res.json({err: ERR.CMNDUNKOWN})
}
})
export default router
+45 -42
View File
@@ -124,11 +124,11 @@ const getLiveData = async (opt) => {
//
// *********************************************
const gethavgData = async (opts, props) => {
let e = await getNoiseAVGData(opts)
let erg = await getNoiseAVGData(opts)
if (opts.csv) {
let csvStr = "datetime,n_AVG,peakcount\n"
if(!e.err) {
for (let item of e) {
if(!erg.err) {
for (let item of erg.values) {
if (item.n_AVG != -1) {
csvStr += item.datetime + ',' + item.n_AVG + ',' + item.peakcount + '\n'
}
@@ -136,7 +136,7 @@ const gethavgData = async (opts, props) => {
}
return csvStr
} else {
return {err: e.err, values: e.values}
return {err: erg.err, values: erg.values}
}
}
@@ -172,18 +172,19 @@ async function getdavgData(opts) {
let val = [];
let csvStr = 'datetime,n_AVG,peakcount\n';
if(!erg.err) {
for (let i = 0; i < erg.length; i += 24) {
for (let i = 0; i < erg.values.length; i += 24) {
let sum = 0;
let count = 0;
let pk = 0;
let werte = {};
for (let k = 0; k < 24; k++) {
if ((erg[i + k] != null) && (erg[i + k].n_sum != -1)) {
sum += erg[i + k].n_sum;
count += erg[i + k].count;
pk += erg[i + k].peakcount;
const item = erg.values[i + k]
if ((item != null) && (item.n_sum != -1)) {
sum += item.n_sum;
count += item.count;
pk += item.peakcount;
if (werte.datetime === undefined) {
let dt = DateTime.fromISO(erg[i + k].datetime, {zone: 'utc'})
let dt = DateTime.fromISO(item.datetime, {zone: 'utc'})
werte.datetime = dt.startOf('day').toISO()
}
}
@@ -241,32 +242,33 @@ async function getdaynightData(opts) {
if(!erg.err) {
let done = false;
let dt;
// The received houerly data array always (!!) starts at 0h00 local (!) time.
// The received hourly data array always (!!) starts at 0h00 local (!) time.
// So to calculate day values, we skip the first 6 hour and start from there
// now we add 16 hour for day and following 8 hour for night
for (let i = 6; i < erg.length;) {
for (let i = 6; i < erg.values.length;) {
let dsum = 0, dcnt = 0;
let nsum = 0, ncnt = 0;
let werte = {};
const item = erg.values[i]
for (let k = 0; k < 16; k++, i++) {
if (erg[i].n_sum != -1) {
if (item.n_sum != -1) {
if (werte.datetime === undefined) {
let dt = DateTime.fromISO(erg[i].datetime, {zone: 'utc'})
let dt = DateTime.fromISO(item.datetime, {zone: 'utc'})
werte.datetime = dt.startOf('day').toISO()
}
dsum += erg[i].n_sum;
dcnt += erg[i].count;
dsum += item.n_sum;
dcnt += item.count;
}
}
if (i < (erg.length - 8)) {
if (i < (erg.values.length - 8)) {
for (let k = 0; k < 8; k++, i++) {
if (erg[i].n_sum != -1) {
if (item.n_sum != -1) {
if (werte.datetime === undefined) {
let dt = DateTime.fromISO(erg[i].datetime, {zone: 'utc'})
let dt = DateTime.fromISO(item.datetime, {zone: 'utc'})
werte.datetime = dt.startOf('day').toISO()
}
nsum += erg[i].n_sum;
ncnt += erg[i].count;
nsum += item.n_sum;
ncnt += item.count;
}
}
} else {
@@ -343,38 +345,39 @@ async function getLdenData(opts) {
// So to calculate day values, we skip the first 6 hour and start from there
// now we add 12 hour for day and following 4 hour for evening and
// additional 8 hours for night
for (let i = 6; i < erg.length;) {
for (let i = 6; i < erg.values.length;) {
let dsum = 0, dcnt = 0;
let nsum = 0, ncnt = 0;
let esum = 0, ecnt = 0;
let werte = {};
let dayAVG = 0, evnAVG = 0, nightAVG = 0;
const item = erg.values[i]
for (let k = 0; k < 12; k++, i++) {
if (erg[i].n_sum != -1) {
if (item.n_sum != -1) {
if (werte.datetime == undefined) {
werte.datetime = erg[i].datetime;
werte.datetime = item.datetime;
}
dsum += erg[i].n_sum;
dcnt += erg[i].count;
dsum += item.n_sum;
dcnt += item.count;
}
}
for (let k = 0; k < 4; k++, i++) {
if (erg[i].n_sum != -1) {
if (item.n_sum != -1) {
if (werte.datetime == undefined) {
werte.datetime = erg[i].datetime;
werte.datetime = item.datetime;
}
esum += erg[i].n_sum;
ecnt += erg[i].count;
esum += item.n_sum;
ecnt += item.count;
}
}
if (i < (erg.length - 8)) {
if (i < (erg.values.length - 8)) {
for (let k = 0; k < 8; k++, i++) {
if (erg[i].n_sum != -1) {
if (item.n_sum != -1) {
if (werte.datetime == undefined) {
werte.datetime = erg[i].datetime;
werte.datetime = item.datetime;
}
nsum += erg[i].n_sum;
ncnt += erg[i].count;
nsum += item.n_sum;
ncnt += item.count;
}
}
} else {
@@ -488,18 +491,18 @@ peak = data
// hour in an element in docs becomes the index into the new array (for every new day this
// index will be incremented by 24). Missing values are marked by: {n_sum=-1, n_AVG=-1}.
let hoursArr = new Array(opts.span * 24); // generate new array
hoursArr.fill(emptyValues); // fill array with 'empty' values
let startDay = DateTime.fromISO(ret.values[0].datetime, {zone: 'utc'}).get('day'); // calc first day
let k = 0;
hoursArr.fill(emptyValues) // fill array with 'empty' values
let startDay = DateTime.fromISO(ret.values[0].datetime, {zone: 'utc'}).get('day') // calc first day
let k = 0
for (let d of ret.values) { // loop through docs
let stunde = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('hour') // get current hour
let day = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('day') // get current day
if (day != startDay) { // if date has changed
k += 24; // increment index by 24
startDay = day;
k += 24 // increment index by 24
startDay = day
}
hoursArr[k+stunde] = d; // copy date into hourArray
hoursArr[k+stunde] = d // copy date into hourArray
}
return hoursArr;
return { err: ret.err, values: hoursArr}
}
+2
View File
@@ -0,0 +1,2 @@
// Prepare all data to plt the charts
+11 -2
View File
@@ -8,7 +8,7 @@ import * as radioact from "../sensorspecials/radioact.js"
import * as noise from "../sensorspecials/noise.js"
import {getData4map} from "../actions/data4map.js";
const cmdTable = [
export const cmdTable = [
{cmd: 'getactdata', func: getData.getActData},
{cmd: 'getlongavg', func: getData.getLongAvg},
{cmd: 'getavgdata', func: getData.getAvgData},
@@ -19,4 +19,13 @@ const cmdTable = [
{cmd: 'getmapdata', func: getData4map}
]
export default cmdTable
export const chartcmdTable = [
{cmd: 'getactdata', func: getData.getActData},
{cmd: 'getlongavg', func: getData.getLongAvg},
{cmd: 'getavgdata', func: getData.getAvgData},
{cmd: 'getoneproperty', func: getProps.getOneProperty},
{cmd: 'getakwdata', func: getAKWs.getakwdata},
{cmd: 'getaddress', func: holAddr.getAddress},
{cmd: 'getsensordata', func: getData.getChartSensorData},
{cmd: 'getmapdata', func: getData4map}
]