Some errors fixed, works for api.js
This commit is contained in:
@@ -5,7 +5,8 @@ import cookieParser from 'cookie-parser'
|
|||||||
import cors from 'cors'
|
import cors from 'cors'
|
||||||
|
|
||||||
import indexRouter from './routes/index.js'
|
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()
|
const app = express()
|
||||||
|
|
||||||
@@ -15,8 +16,9 @@ app.use(express.json())
|
|||||||
app.use(express.urlencoded({ extended: true }))
|
app.use(express.urlencoded({ extended: true }))
|
||||||
app.use(cookieParser())
|
app.use(cookieParser())
|
||||||
|
|
||||||
app.use('/api', apiRouter)
|
|
||||||
app.use('/', indexRouter)
|
app.use('/', indexRouter)
|
||||||
|
app.use('/api', apiRouter)
|
||||||
|
app.use('/chart', chartRouter)
|
||||||
|
|
||||||
|
|
||||||
// catch 404 and forward to error handler
|
// catch 404 and forward to error handler
|
||||||
|
|||||||
@@ -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)
|
||||||
|
})
|
||||||
|
|
||||||
@@ -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
@@ -1,43 +1,15 @@
|
|||||||
import express from 'express'
|
import express from 'express'
|
||||||
|
|
||||||
import {getData4map} from "../actions/data4map.js"
|
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"
|
import * as ERR from "../utilities/errortexts.js"
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
/* GET home page. */
|
/* GET home page. */
|
||||||
|
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', function(req, res, next) {
|
||||||
res.status(200).json({message: ERR.NOTHIMG})
|
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
|
export default router
|
||||||
|
|||||||
+45
-42
@@ -124,11 +124,11 @@ const getLiveData = async (opt) => {
|
|||||||
//
|
//
|
||||||
// *********************************************
|
// *********************************************
|
||||||
const gethavgData = async (opts, props) => {
|
const gethavgData = async (opts, props) => {
|
||||||
let e = await getNoiseAVGData(opts)
|
let erg = await getNoiseAVGData(opts)
|
||||||
if (opts.csv) {
|
if (opts.csv) {
|
||||||
let csvStr = "datetime,n_AVG,peakcount\n"
|
let csvStr = "datetime,n_AVG,peakcount\n"
|
||||||
if(!e.err) {
|
if(!erg.err) {
|
||||||
for (let item of e) {
|
for (let item of erg.values) {
|
||||||
if (item.n_AVG != -1) {
|
if (item.n_AVG != -1) {
|
||||||
csvStr += item.datetime + ',' + item.n_AVG + ',' + item.peakcount + '\n'
|
csvStr += item.datetime + ',' + item.n_AVG + ',' + item.peakcount + '\n'
|
||||||
}
|
}
|
||||||
@@ -136,7 +136,7 @@ const gethavgData = async (opts, props) => {
|
|||||||
}
|
}
|
||||||
return csvStr
|
return csvStr
|
||||||
} else {
|
} 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 val = [];
|
||||||
let csvStr = 'datetime,n_AVG,peakcount\n';
|
let csvStr = 'datetime,n_AVG,peakcount\n';
|
||||||
if(!erg.err) {
|
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 sum = 0;
|
||||||
let count = 0;
|
let count = 0;
|
||||||
let pk = 0;
|
let pk = 0;
|
||||||
let werte = {};
|
let werte = {};
|
||||||
for (let k = 0; k < 24; k++) {
|
for (let k = 0; k < 24; k++) {
|
||||||
if ((erg[i + k] != null) && (erg[i + k].n_sum != -1)) {
|
const item = erg.values[i + k]
|
||||||
sum += erg[i + k].n_sum;
|
if ((item != null) && (item.n_sum != -1)) {
|
||||||
count += erg[i + k].count;
|
sum += item.n_sum;
|
||||||
pk += erg[i + k].peakcount;
|
count += item.count;
|
||||||
|
pk += item.peakcount;
|
||||||
if (werte.datetime === undefined) {
|
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()
|
werte.datetime = dt.startOf('day').toISO()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,32 +242,33 @@ async function getdaynightData(opts) {
|
|||||||
if(!erg.err) {
|
if(!erg.err) {
|
||||||
let done = false;
|
let done = false;
|
||||||
let dt;
|
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
|
// 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
|
// 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 dsum = 0, dcnt = 0;
|
||||||
let nsum = 0, ncnt = 0;
|
let nsum = 0, ncnt = 0;
|
||||||
let werte = {};
|
let werte = {};
|
||||||
|
const item = erg.values[i]
|
||||||
for (let k = 0; k < 16; k++, i++) {
|
for (let k = 0; k < 16; k++, i++) {
|
||||||
if (erg[i].n_sum != -1) {
|
if (item.n_sum != -1) {
|
||||||
if (werte.datetime === undefined) {
|
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()
|
werte.datetime = dt.startOf('day').toISO()
|
||||||
}
|
}
|
||||||
dsum += erg[i].n_sum;
|
dsum += item.n_sum;
|
||||||
dcnt += erg[i].count;
|
dcnt += item.count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i < (erg.length - 8)) {
|
if (i < (erg.values.length - 8)) {
|
||||||
for (let k = 0; k < 8; k++, i++) {
|
for (let k = 0; k < 8; k++, i++) {
|
||||||
if (erg[i].n_sum != -1) {
|
if (item.n_sum != -1) {
|
||||||
if (werte.datetime === undefined) {
|
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()
|
werte.datetime = dt.startOf('day').toISO()
|
||||||
}
|
}
|
||||||
nsum += erg[i].n_sum;
|
nsum += item.n_sum;
|
||||||
ncnt += erg[i].count;
|
ncnt += item.count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -343,38 +345,39 @@ async function getLdenData(opts) {
|
|||||||
// So to calculate day values, we skip the first 6 hour and start from there
|
// 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
|
// now we add 12 hour for day and following 4 hour for evening and
|
||||||
// additional 8 hours for night
|
// 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 dsum = 0, dcnt = 0;
|
||||||
let nsum = 0, ncnt = 0;
|
let nsum = 0, ncnt = 0;
|
||||||
let esum = 0, ecnt = 0;
|
let esum = 0, ecnt = 0;
|
||||||
let werte = {};
|
let werte = {};
|
||||||
let dayAVG = 0, evnAVG = 0, nightAVG = 0;
|
let dayAVG = 0, evnAVG = 0, nightAVG = 0;
|
||||||
|
const item = erg.values[i]
|
||||||
for (let k = 0; k < 12; k++, i++) {
|
for (let k = 0; k < 12; k++, i++) {
|
||||||
if (erg[i].n_sum != -1) {
|
if (item.n_sum != -1) {
|
||||||
if (werte.datetime == undefined) {
|
if (werte.datetime == undefined) {
|
||||||
werte.datetime = erg[i].datetime;
|
werte.datetime = item.datetime;
|
||||||
}
|
}
|
||||||
dsum += erg[i].n_sum;
|
dsum += item.n_sum;
|
||||||
dcnt += erg[i].count;
|
dcnt += item.count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (let k = 0; k < 4; k++, i++) {
|
for (let k = 0; k < 4; k++, i++) {
|
||||||
if (erg[i].n_sum != -1) {
|
if (item.n_sum != -1) {
|
||||||
if (werte.datetime == undefined) {
|
if (werte.datetime == undefined) {
|
||||||
werte.datetime = erg[i].datetime;
|
werte.datetime = item.datetime;
|
||||||
}
|
}
|
||||||
esum += erg[i].n_sum;
|
esum += item.n_sum;
|
||||||
ecnt += erg[i].count;
|
ecnt += item.count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i < (erg.length - 8)) {
|
if (i < (erg.values.length - 8)) {
|
||||||
for (let k = 0; k < 8; k++, i++) {
|
for (let k = 0; k < 8; k++, i++) {
|
||||||
if (erg[i].n_sum != -1) {
|
if (item.n_sum != -1) {
|
||||||
if (werte.datetime == undefined) {
|
if (werte.datetime == undefined) {
|
||||||
werte.datetime = erg[i].datetime;
|
werte.datetime = item.datetime;
|
||||||
}
|
}
|
||||||
nsum += erg[i].n_sum;
|
nsum += item.n_sum;
|
||||||
ncnt += erg[i].count;
|
ncnt += item.count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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
|
// 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}.
|
// 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
|
let hoursArr = new Array(opts.span * 24); // generate new array
|
||||||
hoursArr.fill(emptyValues); // fill array with 'empty' values
|
hoursArr.fill(emptyValues) // fill array with 'empty' values
|
||||||
let startDay = DateTime.fromISO(ret.values[0].datetime, {zone: 'utc'}).get('day'); // calc first day
|
let startDay = DateTime.fromISO(ret.values[0].datetime, {zone: 'utc'}).get('day') // calc first day
|
||||||
let k = 0;
|
let k = 0
|
||||||
for (let d of ret.values) { // loop through docs
|
for (let d of ret.values) { // loop through docs
|
||||||
let stunde = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('hour') // get current hour
|
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
|
let day = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('day') // get current day
|
||||||
if (day != startDay) { // if date has changed
|
if (day != startDay) { // if date has changed
|
||||||
k += 24; // increment index by 24
|
k += 24 // increment index by 24
|
||||||
startDay = day;
|
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}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
// Prepare all data to plt the charts
|
||||||
|
|
||||||
+11
-2
@@ -8,7 +8,7 @@ import * as radioact from "../sensorspecials/radioact.js"
|
|||||||
import * as noise from "../sensorspecials/noise.js"
|
import * as noise from "../sensorspecials/noise.js"
|
||||||
import {getData4map} from "../actions/data4map.js";
|
import {getData4map} from "../actions/data4map.js";
|
||||||
|
|
||||||
const cmdTable = [
|
export const cmdTable = [
|
||||||
{cmd: 'getactdata', func: getData.getActData},
|
{cmd: 'getactdata', func: getData.getActData},
|
||||||
{cmd: 'getlongavg', func: getData.getLongAvg},
|
{cmd: 'getlongavg', func: getData.getLongAvg},
|
||||||
{cmd: 'getavgdata', func: getData.getAvgData},
|
{cmd: 'getavgdata', func: getData.getAvgData},
|
||||||
@@ -19,4 +19,13 @@ const cmdTable = [
|
|||||||
{cmd: 'getmapdata', func: getData4map}
|
{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}
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user