See part 1 commit for details, but background and context, the changes
here are:
- `variable` not contains a `values` object instead of a `values`
array, that object has sub-arrays for each type
- `object_id` in variable is moved to a separate `base` object
We want a single variable stream to be able to contain a unique
variable instance for a group of objects. Previous a variable stream
could only contain a single variable, mapping to a single object.
This lets us built more powerful UIs that show variables related to
many objects at the same time.
This was an oversight in the earlier part of the specification. All
XVIZ elements should be able to associate with objects so you can
properly cross reference different data sources.
Before this many state objects contained a `name` field that contained
the stream name, and stream_set has arrays of those. To avoid
duplication and make the full stream_set object cleaner, we transform
all arrays except time series into objects.
These arrays are now mappings from stream_id to state object:
- primitives
- variables
- future instances
- annotations
We are keeping these as mappings to object, even when the object only
has one field, to all for backwards compatible addition of fields to
those objects. This also allows for a cleaner mapping to protobuf.
This provides a full schema for the XVIZ 2 protocol documented in the
main documentation. There are some things to improve but that will
happen in further changes that update docs and spec at the same time.
Left out right now are the treetable and declarative UI JSON schema
specifications. Since this is rather massive.