SCADA animation can be configured with the Inkscape extension called SAGEX, which stands for SCADA Animation Graphic Editor’s eXtension. The output of this extension is compatible with the previous SAGE that was included under the object properties in the specially built Inkscape 0.46 SAGE.

SAGEX can only work in Inkscape 1.0 or above, otherwise a popup warning will appear if you try to run SAGEX in Inkscape below version 1.0.

Installation

Launching

To launch the SAGEX is simple, just go to the Inkscape menu and click for Extensions > SAGEX. A popup with various animation tabs will appear for you to configure any selected graphic element. The SAGEX popup can then be opened by using Alt+Q as the shortcut key after the first launch. The diagram below shows the Inkscape extension of the Color tab.

General Usage

When SAGEX is launched, it reads the selected SVG element and displays its current animation settings across multiple tabs. The element’s ID is shown at the top and can be edited.

Animation settings are saved automatically when the SAGEX popup loses focus (e.g., clicking back to Inkscape) or when the close button is clicked. A busy cursor is shown while the popup is open — this is a known Inkscape behavior.

Validation Indicators

Each animation tab shows a status indicator next to its name:

Element Type Restrictions

Not all animation types are available for every SVG element:

Prefix/Variable System

SAGEX supports a variable prefix system for faceplate/template reuse. Prefixes allow a single SVG template to be reused with different tag paths.

Animation Tabs

Bar

Configures a progress bar animation on a Rectangle element. The rectangle fills proportionally based on a tag value between min and max.

Faceplate (Clone)

Configures variable mapping for reusable SVG components (Group elements only). Maps variable names to tag path values, enabling a single group to be reused with different data sources.

Color

Configures conditional color changes based on tag values. Each row in the color table maps a tag value to a color.

Opacity

Configures opacity animation based on a tag value between min and max.

Open

Configures navigation/link behavior when the element is clicked.

Configures a popup window that appears when the element is clicked.

Rotate

Configures rotation animation based on a tag value between min and max (in degrees).

Script

Configures custom JavaScript execution on mouse/keyboard events. Supports 6 event types:

Each event has a parameter field for the JavaScript code to execute.

Get

Configures reading a data tag value and displaying it as text (TextElement only).

Set

Configures writing a value to a data tag when the text element is clicked (TextElement).

Slider

Configures a slider control widget for adjusting a tag value.

Tooltips

Configures hover tooltip text for the element (hidden for TextElement).

Zoom

Configures zoom/alignment behavior for the element (hidden for TextElement).

Text

Configures text substitution based on tag values (TextElement only). Maps tag values to display text.

Master Faceplate

When no element is selected, the Master Faceplate frame is shown instead of the animation tabs. This manages root-level prefix/variable mappings that apply across the entire SVG document.

Tag Browsing

Tag linking for animation can be entered manually, or selected from an autocomplete dropdown populated from project data files. SAGEX automatically scans the directory containing the currently viewed SVG file for CSV and JSON files at startup.

CSV Tag Files

CSV files used for DX modules and exported from IGX’s Project Editor can be used directly. The CSV file must contain at least one header column called “Name” or “TagName” (case-insensitive) regardless of the column sequence. If a CSV file contains no matching column, it will be ignored. Both UTF-8 and UTF-16LE encoded CSV files are supported.

Tag names extracted from CSV files populate the autocomplete dropdown on tag entry fields. As you type, the dropdown filters to show matching tags.

JSON Module Files

JSON files containing module and task definitions are also scanned. The JSON file should have an id field (module ID) and a task array, each with an id field (task ID). These are combined into prefix values in the format module_id.task_id for use in the prefix/variable system.

Enable/Disable Filtering

If a CSV file contains an “Enable” or “Disable” column, tags can be filtered based on their enabled status:

HTML Configuration

Once the SVG file is configured for animation with SAGEX, it shall be linked to an HTML file with a class name specified as “igx-svg” and containing a child <object> with `data` attribute that links to the animated SVG file.

<!DOCTYPE HTML>
<html xmlns=“http://www.w3.org/1999/xhtml”\>
<head>
<meta charset=”utf-8”/>
<link href=“system/styles/igrX2.css” rel=“stylesheet” type=“text/css” />
<style type=“text/css”>
</style>

</head>
<body>
<div id=“” class=“igx-svg” data-url=“127.0.0.1:1884/dxsvg” data-role=“ENG,SUP,OPR” data-tag=“tag01, tag02, tag03”>
<object type=“image/svg+xml” style=“overflow:hidden; position: absolute;” wmode=“transparent” height=“100%” width=“100%”
data=“sample-animation.svg”>
</object>
</div>
<script type=“text/javascript” src=“system/scripts/igdx.js”></script>
</body>
</html>

Server and Data access

The SCADA host server can be configured as an attribute under `data-url` with three segments in the following syntax.
{IP}{:Port}{/Project[/]}
Three segments are all optional and have their default values and the slash after project name is also optional.

When the attribute is undefined, the browser address link that has the similar segments arrangement will be used as the second fallback configuration, particularly the domain name or IP address. However the port number will always fallback to default value because the browser address link is for the HTTP(S) port itself.

Lastly the project name can be specified in the first subfolder in the browser address link, or otherwise default project name will be the HTML filename itself. The project name will be used when the front-end is sending commands or data.

When multiple projects are running on a shared server. The project name should be specified, otherwise the SVG page will be receiving excessive realtime data from all projects and the performance will be affected.

The `data-role` parameter is optional and can be specified with one or more roles that are separated with commas. Further, if the `role` is also unspecified, the SVG page will also receive realtime data from all roles and impact the performance. Conversely, specifying the role will help to narrow down to the limited tags only, and also sending the commands or data to all of the targeted roles or groups.

The `data-tag` is the additional and optional parameter that can be added for specifying a specific realtime data source. Usually more than one tag will be needed and they can be separated with commas.