Pulse

The object

A system is one round object. Its channels are layers of that object. This page names the parts and the few primitives they are made of.

The lights system: a brightness dial in front, the lights and the plugs as rings behind, the layers named on the left
Lights. The brightness dial in front; the lights and the plugs behind, as rings with their label; the layers named on the left, front to back.

Anatomy

PartWhat it isWhat it shows
LayerOne channel of the systemA disc with its ring
DiscThe layer's circleOnly the front one has a full disc and a face
FaceCenter of the front layerChannel name, glyph, the big value, one line
RingEdge of the layerA band, segments, or a choice; on the front layer, the control
Edge labelArc text on the layers behindChannel · value, staggered so they never overlap
Layer indexThe list beside the objectEvery layer front to back, a dot in its level's color; the ones past the cap hollow
StripUnder the objectWhat is in front, why, the action, who waits; a Retry when a command was refused
DetailOne level deeperOnly when it adds something the face does not have

Three kinds of ring

Every channel reads as one of three rings. On the front layer the ring is also the control.

  • A band

    Progress from 0 to 1. With a dial, you drag it: brightness, a thermostat, a volume, a fan. A band with two knobs is a range: a comfort range of a thermostat. When the band is a target, a mark shows the measurement.

  • Switches

    Two to eight segments, one per entity. Each one toggles. Only a failing segment is painted, and the call comes out of there.

  • A choice

    One of N, with the names along the ring. The thermostat's mode, the alarm's state, a player's source, a scene. More than eight options scroll in the detail.

A band may be drawn full, or open at the bottom with its ends named, like a dial. Ends may be square or rounded. The viewer chooses in the gear. When a control asks for a code before it acts, an alarm to arm or disarm, a phone's keypad comes over the object and the ring waits behind it.

The face

The glyph, the channel's name, the big value and one line. With an alert, the line is why it calls. A camera, or the artwork of what plays, fills the face instead. A light's dial is tinted with the light's color.

Depth

LayerSizeStrokeShows
Front1×6 pxFull disc, face, control
Behind1.42×3 pxRing and label
Further behind1.84×2.5 pxRing and label
Past the cap——Named in the index and the strip

The apparent size is the same flat and in 3D: in 3D the layer moves away and the scale compensates. Three layers are drawn by default, two on a phone; the gear raises it to five.

The detail

Tapping the face opens the detail, one level deeper, only when the detail has something the face does not. What a detail can hold:

  • A day. The last 24 hours of a sensor as sectors around a baseline: humidity, power, carbon monoxide.
  • A timeline. A day per entity as concentric rings: when each light was on, each plug, the thermostat, a sensor. The moments that matter named on the rings.
  • A month. An energy meter's calendar, one bar per day.
  • A picture. A camera, round or square, live if the source can stream it.
  • Color. A hue and saturation wheel for a color light.
  • A long list. A choice with more options than the ring takes, on a ring that turns.
  • The entities behind the channel, named, for whoever wants to know what Pulse is reading.
The detail of a humidity sensor: the last 24 hours as a ring of bars around the current value
The detail of a sensor: a day as a ring. The face had the value; the detail adds the day.

The primitives

The core, @zumer/pulse, knows nothing about any source. It is a handful of primitives drawn with Orbit, each one entering the core only when two domains share it or it is radial by nature.

PrimitiveWhat it draws
ringA channel's ring: a band with a dial or a range, switches, or a choice with its names
faceThe center of the front layer, with an optional picture
backLayerA layer behind: the ring and its arc label, as a button that brings it forward
layerIndexThe list of layers beside a stacked object
keypadA phone's keypad over the object, for an action that asks for a code
timeRingThe last 24 hours as sectors around a baseline
timelineA day per entity as concentric rings
monthRingA month as bars on a ring
colorWheelHue and saturation, with their controls
radialListItems on a ring that turns, like the lists of a watch
timeWindowA window of time on a ring: now at the top, the past clockwise into it; bars per slot, or changes as ticks with their system's glyph
queueRingsThe board's list: what calls on an inner ring by urgency, the calm folded on an outer one
clockRimThe hours, now, and the latest changes as dots at their minute
dotsThe systems as small rings, for moving sideways on a phone

Everything else is left to the source's own interface. What has no radial reading does not get one. Each primitive drawn alone, with its fields: Elements.