Skip to content

Element Editor

The Animation Element Editor is the editor used to visually select objects on the SVG screen and bind animation behaviors to the selected objects. SCADA screens are quickly created through a visual configuration interface without writing code.

Animation Element Editor

Menu: Development → Animations → Animation Dev → Element Editor button in the upper right corner

The editor opens as a panel next to the SVG screen.


You select an object by clicking with the mouse on the SVG open in the Animation Dev screen. The selected object is visually highlighted.

Objects in SVG are usually grouped within <g> (group) elements. The default click selects the top-level group.

To access an object inside a group:

  1. Press and release the Ctrl key once
  2. Now when you click with the mouse, the object you directly clicked on is selected instead of the group
  3. This allows you to target inner objects like text, rect, circle within a group

Click the Element Editor button while an object is selected. When the editor opens:

  • The selected object’s DOM ID is automatically retrieved
  • Based on the object’s SVG tag type (text, rect, g, image, circle, path…), the applicable animation types are automatically filtered
  • Appropriate animation types are displayed as tabs ready for configuration
SVG TagAvailable Types
text / tspanGet, Color, Opacity, Visibility, Rotate, Move, Scale, Bar, Pipe, Blink, Tooltip, AlarmIndication, Click
rect / circle / ellipse / polygonIn addition to the above: Chart, Iframe, Datatable, Slider, Input, QRCode, GetSymbol, Faceplate, Peity, Menu, Button, Image
g (group)Animate, Faceplate, Iframe, Rotate, Move, Scale, Opacity, Visibility
imageFaceplate, Iframe, Image

Step 3: Selecting and Configuring an Animation Type

Section titled “Step 3: Selecting and Configuring an Animation Type”

Select the desired animation type from the tabs. Each animation type has its own visual configuration interface:

Each animation type comes with form fields appropriate to its type. The developer configures by filling in these form fields without writing code:

Animation TypeConfiguration Interface
GetVariable selector, format setting, unit
ColorColor palette, condition table (value → color mapping)
RotateRotation center (cx, cy), min/max angle, min/max value
BarDirection (horizontal/vertical), min/max value, fill color
MoveAxis (X/Y), distance range, min/max value
SliderMin, max, step, direction, color
ChartChart type, colors, axis settings, data source
OpacityMin/max opacity, min/max value
VisibilityCondition (Boolean or threshold)
BlinkBlink speed, colors
SetTarget variable, value to write
InputType (text/number), min, max, placeholder
IframeURL address
OpenTarget animation selector
FaceplateFaceplate selector, placeholder values
DatatableColumn definitions, data source
AlarmIndicationAlarm group selector

Step 4: Expression (Advanced — Optional)

Section titled “Step 4: Expression (Advanced — Optional)”

Each animation type has an Expression section. This section is optional — you don’t need to use it if the visual configuration is sufficient.

Expression allows the developer to program the animation behavior in a completely freeform manner:

TypeDescriptionWhen to Use
TagVariable name referenceSimplest — directly binding a variable
ExpressionJavaScript codeCalculation, formatting, conditional logic
SwitchValue → result tableState-based multiple matching
NumericConstant numberFor testing purposes
TextConstant textLabel, heading
CollectionMultiple variablesFor Chart, Datatable
AlarmAlarm referenceFor AlarmIndication
FaceplateFaceplate referenceFaceplate placement
AnimationAnimation referenceScreen navigation (Open)
Animation PopupPopup referenceOpen modal screen
Custom MenuMenu referenceOpen menu
UrlURLIframe embedding
Tetra Color4-color alarm statusAlarm color codes
ButtonButton configurationButton type
HtmlHTML contentRich content
System PageSystem pagePlatform internal page
InSCADA ViewPlatform viewInternal view

Tag — Simply write the variable name:

ActivePower_kW

Expression — Free calculation with JavaScript:

// Formatted value
var val = ins.getVariableValue("ActivePower_kW");
return val.value.toFixed(1) + " kW";
// Conditional color
var temp = ins.getVariableValue("Temperature_C").value;
if (temp > 80) return "#ff0000";
if (temp > 60) return "#ff8800";
return "#00cc00";
// Calculation from two variables
var power = ins.getVariableValue("ActivePower_kW").value;
var voltage = ins.getVariableValue("Voltage_V").value;
if (voltage > 0) return (power * 1000 / voltage).toFixed(1);
return "0";

Switch — Value → result matching table:

0 → Stopped
1 → Running
2 → Fault
3 → Maintenance

Color switch:

true → #00cc00
false → #ff0000
ButtonFunction
SaveSaves the animation element. The binding is attached to the object
Run & SaveFirst tests the expression on the server, saves if the result is successful

Run & Save is especially useful when developing expressions — you verify the result before saving.

After saving, the binding automatically becomes active when the animation is run in Visualization mode.


The bindings configured in the Element Editor work as follows in the Visualization screen:

┌─────────────┐ ┌──────────┐ ┌─────────┐
│ Browser │──eval-animation──▶│ Server │◀── Variable ────│ Cache │
│ (SVG DOM) │◀─anim-results────│ (Engine) │ Values │ │
└──────┬──────┘ └──────────┘ └─────────┘
For each element
type-appropriate
DOM update
  1. Visualization opens → Animation elements are loaded, WebSocket subscription is established
  2. Every duration ms → Browser sends an eval-animation message
  3. Server → Runs all element expressions, reads variable values from cache
  4. Result returns → Calculated value for each element ID
  5. DOM is updated → Appropriate DOM operation is applied based on each element type
Animation TypeDOM Operation
Getelement.textContent = value
Colorelement.style.fill = color
Opacityelement.style.opacity = value
Visibilityelement.style.display = value ? '' : 'none'
Rotatetransform: rotate(angle)
Movetransform: translate(x, y)
Barelement.height = value or element.width = value
Scaletransform: scale(value)
BlinkSVG <animate> element add/remove
Pipestroke-dashoffset animation

Control Elements (Set, Slider, Input, Click)

Section titled “Control Elements (Set, Slider, Input, Click)”

Control types are not included in periodic evaluation. They are triggered on user interaction:

User Click → Run Expression → ins.setVariableValue() → Cache → Field Device
  • All elements are evaluated in bulk in a single WebSocket message
  • Variable values are read from cache (no database access, < 1ms)
  • Only active elements (status: true) are evaluated
  • Event-based elements like Click, MouseDown are excluded from the periodic cycle
  • Timeout: if no response arrives within duration × 10 ms, a retry is attempted