# HG changeset patch # User drewp@bigasterisk.com # Date 2024-05-21 23:11:28 # Node ID 62dc1b3644a0679e1cae30ce7ff1975dd7fa7471 # Parent ac55319a2eace2cde4c25f47b4b90442a4841f99 collector client uses rdf types, not strings diff --git a/web/calibrate/Light9Calibrate.ts b/web/calibrate/Light9Calibrate.ts --- a/web/calibrate/Light9Calibrate.ts +++ b/web/calibrate/Light9Calibrate.ts @@ -7,6 +7,8 @@ import { SyncedGraph } from "../SyncedGr import { FindSafeExposure } from "./FindSafeExposure"; import { Light9Camera } from "./Light9Camera"; import { XyPlot } from "./XyPlot"; +import { NamedNode } from "n3"; +import { showRoot } from "../show_specific"; export { RdfdbSyncedGraph } from "../RdfdbSyncedGraph"; export { Light9Camera } from "./Light9Camera"; export { XyPlot } from "./XyPlot"; @@ -32,12 +34,16 @@ export class Light9Calibrate extends Lit collector: CollectorClient = new CollectorClient("calibrate"); @query("light9-camera", true) cam?: Light9Camera; @query("xy-plot", true) plot?: XyPlot; - @state() device: string; + @state() device?: NamedNode; + @state() calibrationSession?: NamedNode; constructor() { super(); - this.device = "http://light9.bigasterisk.com/theater/vet/device/parR3"; getTopGraph().then((g) => { this.graph = g; + const U = this.graph.U(); + this.calibrationSession = U(showRoot + "/calibration/session1"); + this.device = U("dev:parR3"); + this.graph.patchObject(this.calibrationSession, U("rdf:type"), U(":CalibrationSession"), this.calibrationSession); }); } @@ -46,7 +52,8 @@ export class Light9Calibrate extends Lit

Calibrate

-

Device to calibrate: [ ${this.device} ]

+

Calibration session; [ ${this.calibrationSession?.value} ]

+

Device to calibrate: [ ${this.device?.value} ]

  1. @@ -68,12 +75,14 @@ export class Light9Calibrate extends Lit btn.disabled = false; } } + async setToFull(ev: MouseEvent) { + const U = this.graph.U(); await this.withButtonSpinner(ev, async () => { this.collector.updateSettings([ /// device,attr,value - [this.device, "http://light9.bigasterisk.com/color", "#ffffff"], - [this.device, "http://light9.bigasterisk.com/white", 1], + [this.device!, U(":color"), this.graph.Literal("#ffffff")], + [this.device!, U(":white"), this.graph.LiteralRoundedFloat(1)], ]); }); } @@ -84,17 +93,21 @@ export class Light9Calibrate extends Lit const expo = await algo.run(); }); } + async setToZero(ev: MouseEvent) { + const U = this.graph.U(); await this.withButtonSpinner(ev, async () => { this.collector.updateSettings([ - [this.device, "http://light9.bigasterisk.com/color", "#000000"], - [this.device, "http://light9.bigasterisk.com/white", 0], + [this.device!, U(":color"), this.graph.Literal("#000000")], + [this.device!, U(":white"), this.graph.LiteralRoundedFloat(0)], ]); }); } + async markTare(ev: MouseEvent) { await this.withButtonSpinner(ev, async () => {}); } + async calibrateLoop(ev: MouseEvent) { await this.withButtonSpinner(ev, async () => {}); } diff --git a/web/collector/CollectorClient.ts b/web/collector/CollectorClient.ts --- a/web/collector/CollectorClient.ts +++ b/web/collector/CollectorClient.ts @@ -1,4 +1,6 @@ -type Settings = Array<[string,string,string|number]>; +import { Literal, NamedNode } from "n3"; + +type Settings = Array<[NamedNode,NamedNode,Literal]>; export class CollectorClient { private settings: Settings; @@ -13,13 +15,14 @@ export class CollectorClient { }, 1000); } private async put() { + // todo: WS await fetch("/service/collector/attrs", { method: "PUT", body: JSON.stringify({ client: this.clientName, clientSession: "unused", sendTime: Date.now() / 1000, - settings: this.settings, + settings: this.settings.map(([d,da,v]) => [d.value,da.value,v.value]) }), }); }