# HG changeset patch # User drewp@bigasterisk.com # Date 2023-05-18 02:36:07 # Node ID a1b30c3463b4ed04c248ec51c7de158f042758b4 # Parent f5bdb8a89cef0bb5de1d5fccc65c94bedeb3220a add some old docs that still look good diff --git a/light9/web/live/README.md b/light9/web/live/README.md new file mode 100644 --- /dev/null +++ b/light9/web/live/README.md @@ -0,0 +1,24 @@ +This is an editor of :Effect resources, which have graphs like this: + + a :Effect; + rdfs:label "effect43"; + :publishAttr :strength; + :setting . + + :device dev:strip1; :deviceAttr :color; :scaledValue 0.337 . + +# Objects + +SyncedGraph has the true data. + +Effect sends/receives data from one :Effect resource in the graph. Only Effect knows that there are :setting edges in the graph. Everything else on the page +sees the effect as a list of (effect, device, deviceAttr, value) tuples. Those values are non-null. Control elements that aren't contributing the effect +(_probably_ at their zero position, but this is not always true) have a null value. + +GraphToControls has a record of all the control widgets on the page, and sends/receives edits with them. + +We deal in ControlValue objects, which are the union of a brightness, color, choice, etc. Some layers deal in ControlValue|null. A null value means there is no +:setting for that device+attribute + +SyncedGraph and GraphToControls live as long as the web page. Effect can come and go (though there is a plan to make a separate web page url per effect, then +the Effect would live as long as the page too)