mount app after start of polling to set up session on server before first query

This commit is contained in:
Helmut Merz 2023-03-21 14:49:30 +01:00
parent b75aa08d7c
commit 71c683a9f7

View file

@ -29,10 +29,10 @@ export function config (api, polling): Config {
export const pvapp = {
run(conf: Config) {
appdata.conf = conf
createApp(appdata).mount()
if (appdata.conf.pollurl && !appdata.conf.nopoll) {
appdata.poll()
}
createApp(appdata).mount()
}
}
@ -49,12 +49,13 @@ const appdata = {
Data
}
// components
// (move to separate module(s))
// Data component
// (move to comp_data.ts)
function Data(name, action, domain: string): object {
domain = domain || this.conf.domain
const comp = {
id: this.conf.itemid,
name: name, // -> class of incoming/outgoing message
action: action, // (default) action of outgoing message
domain: domain, // domain of incoming/outgoing message
@ -68,10 +69,14 @@ function Data(name, action, domain: string): object {
exec // default function to execute upon button click
}
this.components[name] = comp
if (comp.id) {
sendMsg(this.conf, [domain, 'query', name, comp.id], {})
}
return comp
}
// appdata and component method definitions
// Data methods
// (move to comp_data.ts)
function mounted(name: string, meta: any) {
if (meta.defexpr) {
@ -120,6 +125,8 @@ function exec(action: string) {
sendMsg(conf, [this.domain, action, this.name, data.id], data)
}
// App (appdata) methods
function handle(msg) {
const data = JSON.parse(msg.payload)
const [ domain, action, class_, item ] = msg.path.split('/')
@ -129,6 +136,8 @@ function handle(msg) {
return
}
if (comp) {
// TODO: use more generic comp.update(data)
// ... or even more generic comp.handle(msg)
Object.assign(comp.data, data)
}
}
@ -137,7 +146,8 @@ function poll() {
dopoll(this)
}
// helper functions for data manipulation
// helper functions for data manipulation (used by Data component)
// (move to comp_data.ts)
function setQuery(obj) {
for (const key in obj.data) {