Symbols

The Symbols library: the eleven system libraries and My symbols, the gallery's search and filters, the inspector with its live inputs and terminals, the New user symbol editor and every slot kind, Import symbol…, Export package, Duplicate, Copy chat instruction, and where a symbol is used.

View as Markdown

Symbols is the fourth category under the Assets root: the artwork a dashboard Symbol component draws and animates. The panel is headed "Symbols", with the line "Purpose-built libraries for modern dashboards, test benches, connected products, standards diagrams, industrial systems and facilities. Every system symbol is inspectable and can be duplicated into My symbols." and the count pill. Reading and inspecting need View logic; creating, importing, duplicating, editing and deleting need Configure logic. The file format a symbol travels in is described on Portable SVG symbols.

The libraries

Library What it holds Standard Symbols
Process Layered process-equipment artwork for supervisory dashboards and process diagrams 86
ISA / P&ID Schematic process, piping, valve and instrumentation artwork ANSI/ISA-5.1 / ISO 10628 99
Manufacturing & Material Flow Discrete manufacturing, assembly, batch, packaging, inspection and intralogistics equipment 48
Lab & Test Bench Laboratory, DAQ, metrology, DUT fixture, environmental rig and quality-inspection symbols 35
Prototyping Electronics Controllers, development boards, connectors, sensor modules, actuators, power and wireless 35
IoT Field Sensors Environmental, condition, position, metering, wireless-gateway and edge-control symbols 36
Smart Home & Building Lighting, comfort, access, safety, appliances, water and interoperable control devices Matter / BACnet / common building automation notation 39
IT, Network & Datacenter Compute, racks, storage, networks, security, cloud platforms, facility power and cooling Common IT infrastructure / SNMP / Redfish notation 35
Electrical & Energy One-lines, power distribution, conversion, metering and renewables, with geometry-based contact states IEC 60617 / IEEE 315 39
Energy, Microgrid & e-Mobility Distributed generation, conversion, storage, metering, protection, microgrids and EV charging IEC / IEEE / OCPP-oriented dashboard notation 40
Facilities & Utilities HVAC, water and wastewater, safety systems, plant utilities and control infrastructure 38
My symbols The symbols you compose, import or duplicate Yours

The system libraries are original Ganter Lab artwork, compiled into the product and read-only: an update replaces them without touching your station data. Each definition carries a stable reference system:<key>, its library and category, a description, search tags, its applicable standard, and origin and license metadata.

Above the cards: Search (placeholder "Name, category or tag"; it matches the symbol's name, description, category, standard and tags, without regard to case; the library is chosen with its own filter), Library ("All libraries (530)" or one library with its count; choosing one clears the category and shows the library's description under the filters), Category ("All categories" or one category of the chosen library), Origin and Per page. A card shows the library, a preview at the artwork's natural aspect, the name, the category, the origin (System or Mine) and a capability line: "Static", "1 input" or "N inputs", followed by "· N terminal(s)" when the symbol declares connection terminals. An empty result says "No symbols match these filters." with Clear filters. When your own symbols could not be read, a note says "My symbols is unavailable right now. Only the system libraries are listed." rather than passing the system pack off as the whole catalog.

The inspector

Selecting a card opens the inspector beside the gallery:

  • The name and a badge: System · read-only, My symbol, or Unsaved draft while the editor is open.
  • The library, the category and the standard; the description.
  • Footprint (the suggested dashboard size in cells, width × height) and Fit (Contain, Stretch, Stretch X or Stretch Y).
  • "N inputs · N connection terminals", or "visual-only" when there are no terminals.
  • Artwork provenance, a disclosure with the origin and, for a system symbol, the license.
  • The actions: Export package for every role; for a system symbol Duplicate to My symbols, for yours Edit and Delete (configuring roles only).
  • The preview stage: the sanitized artwork rendered by the same runtime as a dashboard, with a handle drawn at each terminal's anchor. Artwork that cannot render leaves the stage empty with "Preview unavailable" and the reason. When the sanitizer had to repair the markup, a disclosure "Preview uses sanitized SVG" lists the repairs (eight at most, then "N more repairs are not shown.").
  • Inputs: "Transient constants affect this preview only." and Reset inputs. One section per declared slot with its name, the effect it drives, a sentence describing the mapping, the input range and the target element (#id), and a control to try it: a number (with a slider when the input range is finite), an On/Off switch, a text box, or a color picker with a paint value box. "This symbol declares no dynamic inputs." when there are none; an invalid declaration shows its error instead of a control. The constants you set here are never saved and never reach a dashboard.

The effects and how the inspector describes them:

Kind (editor label) Effect Control Description
Rotate Rotation Number Rotates from <output min>° to <output max>°
Opacity Opacity Number Changes opacity from <output min> to <output max>
Fill Fill state Toggle Switches fill from the off color to the on color; numeric sources switch at the input midpoint
Visible Visibility Toggle Hides the element when off and shows it when on
Text Displayed text Text Replaces the text displayed inside the element
Translate Position Number Moves from (x, y) to (x, y) SVG units
Scale Scale Number Scales from (x, y) to (x, y)
Stroke Outline state Toggle Switches the outline between the off and on colors; numeric sources switch at the midpoint
Spin (°/s) Spin speed Number Spins continuously from <min>°/s to <max>°/s; zero pauses and negative values reverse direction
Spin enabled Spin state Toggle, on by default Pauses or resumes rotation without hiding the element or resetting its angle
Fill color Fill color Color Sets the fill directly from a Color asset, Color variable or literal color
Stroke color Outline color Color Sets the outline directly from a Color asset, Color variable or literal color
Stroke width Outline width Number Sets the outline width directly, 0.5 to 32 SVG units

New user symbol

The verb over the Symbols row opens the editor in the gallery's column ("New user symbol": "Compose inert SVG and its named Dashboard input slots."); the inspector follows the unsaved draft as you type, so you test the symbol before creating it.

Field What it is Values / default Effect
Name The display name. Required; "A name is required." while empty. Unlike an icon or a color, a symbol's name may change later: dashboards reference it by id.
SVG markup The artwork, pasted as text. Required. Sanitized as you type; an artwork error ("SVG markup must have an <svg> root.", "SVG markup exceeds the 512 KB limit.", a duplicate id…) blocks creation and every slot.
Fit How the artwork fills the dashboard cell. Contain (default), Stretch both, Stretch X, Stretch Y. Read by the dashboard editor when the symbol is placed.
Initial width, Initial height The footprint a new dashboard instance starts with. 1 to 24 cells, 1 to 12 cells; 4 × 4 by default. Idem.
Connection terminals A read-only note. "This artwork is visual-only. Typed terminals can be supplied by a Ganter Symbol v2 package." or "N package-authored terminal(s) are preserved. Terminal geometry is intentionally read-only in Ganter Lab." Terminals cannot be drawn or edited here: they come from an imported package or a duplicated system symbol, and editing keeps them as they are.
Slots The inputs the symbol exposes ("Each slot targets one SVG element id and exposes one safe runtime primitive."). Add slot appends a row under a generated name (param, then numbered). Each row: a name, an element id (a combo listing the ids found in the markup, or any id you type), Remove, the kind, Input min and max, Output min and max (the X axis for Translate and Scale), an optional Y min and max pair, and per kind: for Stroke width the note "The Dashboard value is a direct SVG width from 0.5 to 32."; for Fill color and Stroke color a Preview color; for every other kind an On color and an Off color.

Slot rules, each reported under the fields with the offending row outlined: the name must be an identifier (a letter or _ first, then letters, digits, _, ., : or -) and unique; the element id must exist in the markup; Text targets only text and tspan; Fill and Fill color target shapes that can be filled, groups, use and text; the other kinds target groups, use, shapes and text; Rotate, Spin and Scale need the element to carry data-ganter-pivot="x y"; every range value must be finite; the Y pair is both or neither, and only for Translate and Scale; on and off colors must be a hex, a theme token such as var(--color-success) or a CSS color name; one element takes at most one slot per channel (fill, stroke, stroke width, or one per other kind); a Spin enabled slot needs a Spin slot on the same element.

Create symbol stays greyed while any error stands; Cancel or Back leaves without creating. On success the feed says "Symbol created." and the new card is selected.

Edit, Duplicate, Delete

Edit (your symbols only) opens the same editor with "Valid name, SVG and slot changes save automatically.": a valid change is saved half a second after the last edit ("Symbol saved."), and an invalid draft is not saved and cancels any pending save, so the stored symbol never diverges from what the inspector shows. Duplicate to My symbols (system symbols) copies the artwork, view box, fit, footprint, type configurations, terminals and suggestions into an independent symbol named "<Name> copy" ("<Name> copy 2"… while taken) and opens it for editing ("System symbol copied to My symbols."); the system definition is never changed. Delete asks "Delete 'X'? Dashboards using it will show a placeholder. This cannot be undone." ("Symbol deleted.").

Import symbol…

The second verb over the row is a file picker accepting .svg and .ganter-symbol.json files of at most 1 MB ("The symbol file is larger than the 1 MB limit."). The content decides the path:

  • Raw SVG (the content starts with <) is imported as visual-only artwork: no slots and no terminals. The sanitizer repairs it and the feed counts the repairs ("Symbol imported as a new asset; 3 unsafe SVG item(s) were removed."). The name is the file name without its extension.
  • A Ganter symbol v2 package (the content starts with {) is imported whole: name, SVG, view box, fit, footprint, slots, type configurations, terminals and suggestions. A package is strict: the format, version and schema must match, the SVG must already be sanitized (a package needing repairs is refused, not repaired), the view box must match the SVG root, and every terminal, configuration and suggestion must be valid (the contract). The feed names the first problem ("Symbol import failed: …").

A name already used by one of your symbols is suffixed (" 2", " 3"…). Every import creates a new symbol and never overwrites one.

Export package

Export package in the inspector downloads the selected symbol, system or yours, as <name>.ganter-symbol.json: the same v2 package the import reads, without any station identity, so it travels between stations ("Exported <file>."). A symbol whose artwork has no root view box, or one of whose slots carries a station address, is refused ("Symbol export failed: …").

Copy chat instruction

Copy chat instruction copies to the clipboard a self-contained instruction for an external AI chat that has no access to the station. It opens with "Create a Ganter Lab symbol for me. Return ONLY the file content, either raw SVG or a single .ganter-symbol.json v2 package, with no commentary, so I can save it as a file and import it unchanged.", continues with the complete v2 contract (the two accepted inputs, the package envelope, the sixteen global anchors, the eight connection types, the slot kinds and their rules, the theme tokens, the terminal geometry rules, the sanitizer limits and a minimal valid package), and ends with how to bring the answer back: save the reply as an .svg or .ganter-symbol.json file and import it here. The same contract is what the agent's symbol_validate and symbol_import tools read, so a chat and an agent produce the same file. The feed says "Chat instruction copied. Paste it into any AI chat and import the SVG it returns." (or "The clipboard refused the copy."). The verb is drawn for every role, because it only reads.

Where a symbol is used

The Symbol dashboard component references a symbol as system:<key> or user:<id>, maps each slot to a Logic address, chooses the connection type of any configurable terminal, and joins terminals with connections drawn in the dashboard editor through the connection types. A symbol has no Logic address of its own.

What the library does not do

It does not draw or move terminals and internal paths, does not edit system artwork in place, does not import a package that needs repairs, keeps no version history, and does not share your symbols between stations by itself: export and import the package.