Settings added
public/chart_utilities.js
- showError with id
public/javascripts/global.js
- save parameter fron settings
views/index.pug
- add settings dialog
views/layout.pug
- add flatpicker
public/javascripts/map.js
- add error evaluation
public/javascripts/showcharts.js
- error avelauation added
public/stylesheets/style.sass
- add styles for settings dialog
This commit is contained in:
@@ -179,7 +179,7 @@ export async function addSensorID2chart(chart, sensor, width) {
|
||||
}
|
||||
|
||||
export const showError = (err) => {
|
||||
document.querySelector('.modal-body').setHTML(err)
|
||||
document.querySelector('#dialogError .modal-dialog .modal-content .modal-body').setHTML(err)
|
||||
let myModal = new bootstrap.Modal(document.getElementById('dialogError'))
|
||||
myModal.show()
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import * as chart_daynight from './chart_daynight.js'
|
||||
import * as chart_lden from './chart_lden.js'
|
||||
import * as utils from "./chart_utilities.js";
|
||||
import { tabtable, loadAll } from './showcharts.js'
|
||||
import { DateTime } from './luxon.min.js'
|
||||
|
||||
|
||||
(async () => {
|
||||
|
||||
@@ -24,9 +26,11 @@ import { tabtable, loadAll } from './showcharts.js'
|
||||
let params = { // set defaults
|
||||
center: Stuttgart,
|
||||
zoom: 10,
|
||||
span: 1,
|
||||
peak: 70,
|
||||
datetime: '',
|
||||
seldate: 'today',
|
||||
refresh: 0,
|
||||
starttime: '2023-01-01T00:00:00Z', //date2ISO(defaultStartime),
|
||||
endtime: '2023-03-01T00:00:00Z' //date2ISO(emptyTimes.emptyHMtime)
|
||||
}
|
||||
|
||||
let status = {
|
||||
@@ -34,6 +38,43 @@ import { tabtable, loadAll } from './showcharts.js'
|
||||
}
|
||||
// END global variables
|
||||
|
||||
// Register events
|
||||
document.querySelector('#btnSave').addEventListener('click', () => {
|
||||
const selDate = document.getElementById('startday').value
|
||||
let starttime
|
||||
if (selDate === 'today') {
|
||||
starttime = DateTime.now().toISO()
|
||||
} else {
|
||||
starttime = DateTime.fromFormat(selDate, 'yyyy-MM-dd').toISO()
|
||||
}
|
||||
params.seldate = selDate
|
||||
const span = document.getElementById('nbrofdays').value
|
||||
const peak = document.getElementById('peaklim').value
|
||||
console.log(starttime, span, peak)
|
||||
params.datetime = starttime
|
||||
if(span < 10) {
|
||||
params.span = span
|
||||
}
|
||||
if(peak < 130 ) {
|
||||
params.peak = peak
|
||||
}
|
||||
status.loaded = false
|
||||
|
||||
})
|
||||
|
||||
|
||||
document.querySelector('#btnSet').addEventListener('click', () => {
|
||||
// document.querySelector('#dialogSettings .modal-dialog .modal-content .modal-body').setHTML('Das ist das Setting')
|
||||
let myModal = new bootstrap.Modal(document.getElementById('dialogSettings'), {backdrop: 'static'})
|
||||
flatpickr('#startday', {
|
||||
maxDate: 'today',
|
||||
minDate: new Date().fp_incr(-365),
|
||||
})
|
||||
document.getElementById('startday').value = params.seldate
|
||||
document.getElementById('nbrofdays').value = params.span
|
||||
document.getElementById('peaklim').value = params.peak
|
||||
myModal.show()
|
||||
})
|
||||
|
||||
// main function:
|
||||
// show the map if calle w/o any parameter
|
||||
|
||||
@@ -59,15 +59,14 @@ export async function showMap(params, status) {
|
||||
params.sid = clickedSensor
|
||||
let triggerEl = document.querySelector('#livetab')
|
||||
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
|
||||
await showChart(params, 'live', 'dlive')
|
||||
loadAll(params)
|
||||
status.loaded = true
|
||||
let ok = await showChart(params, 'live', 'dlive')
|
||||
if (ok) {
|
||||
loadAll(params)
|
||||
status.loaded = true
|
||||
}
|
||||
map.setView([clickedcoords.lat, clickedcoords.lng]);
|
||||
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import {logerror} from "./logit.js";
|
||||
import * as utils from "./chart_utilities.js";
|
||||
import { DateTime } from './luxon.min.js'
|
||||
import * as map from "./map.js";
|
||||
import {showError} from "./chart_utilities.js";
|
||||
|
||||
// table to distribute the different charts
|
||||
export const tabtable = [
|
||||
@@ -55,25 +56,34 @@ export async function showChart(params, typ, container) {
|
||||
}
|
||||
}
|
||||
|
||||
const url = `/chart/getsensordata?sensorid=${params.sid}&data=${typ}`
|
||||
const url = `/chart/getsensordata?sensorid=${params.sid}&data=${typ}&span=${params.span}&datetime=${params.datetime.slice(0,-10)}&peak=${params.peak}`
|
||||
let ret = await fetch(url)
|
||||
.catch(e => {
|
||||
logerror(e)
|
||||
});
|
||||
let erg = await ret.json()
|
||||
erg.options.xAxis.labels.formatter = xformat
|
||||
erg.options.tooltip.formatter = form
|
||||
let chart = Highcharts.chart(container, erg.options, function (chart) {
|
||||
utils.addSensorID2chart(chart, {
|
||||
sid: erg.params.sensorid,
|
||||
indoor: erg.params.indoor
|
||||
}, document.getElementById(container).offsetWidth)
|
||||
})
|
||||
if (!erg.err) {
|
||||
erg.options.xAxis.labels.formatter = xformat
|
||||
erg.options.tooltip.formatter = form
|
||||
let chart = Highcharts.chart(container, erg.options, function (chart) {
|
||||
utils.addSensorID2chart(chart, {
|
||||
sid: erg.params.sensorid,
|
||||
indoor: erg.params.indoor
|
||||
}, document.getElementById(container).offsetWidth)
|
||||
})
|
||||
return true
|
||||
} else {
|
||||
showError(erg.err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
export const loadAll = async (params) => {
|
||||
console.log('now load all in Background')
|
||||
for (let i = 2; i < tabtable.length; i++) {
|
||||
await showChart(params, tabtable[i].type, tabtable[i].container)
|
||||
let ok = await showChart(params, tabtable[i].type, tabtable[i].container)
|
||||
if (!ok) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user