---
title: "Web Vision | Compound Elements Example | N3uron KB V1.22"
slug: "web-vision-example-compound-elements"
description: "Build a custom Web Vision progress bar by combining a container, a line component and custom properties, with tag-driven colors and animations."
updated: 2026-10-08T10:32:14Z
published: 2026-10-08T10:32:14Z
canonical: "docs.n3uron.com/web-vision-example-compound-elements"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://docs.n3uron.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Creation of compound elements
## **Creating a progress bar**
By default, **Web Vision** only comes with a Gauge for displaying tag values, as well as any labels, which can also be linked to a tag. However, links can also be used to create custom components. In this example, a progress bar will be created and linked to a tag.
This first step is to create a new blank container. In this case, a 100x10 container is sufficient. Next, a custom property called **tag** is added to the container. This will be the tag that provides the value to the progress bar. Since this one will be a tag, the **tag picker control** will be used and limited to tag only.

Afterward, a general styles border is added to the ProgressBar container.

The next step is to create the progress bar itself. For this, a **line** component is used and set to a size of 99x9 (the same as the container, minus borders). The **line** **width** is also set to 9 in order to fill the entire container. The container X/Y is also set to 0.5 to avoid any overlapping with the border, which can be colored red (to contrast against the border) in order to make sure that the line has been positioned correctly. Its two points are then set to (0,0) and (50%,0), which gives the following result:

Finally, the **Right X** (the x coordinate of the line’s right-side point) needs to be linked to the newly created tag custom property. For this, the following expression is used:
```javascript
=tag(parent(“custom.tag”)) + “%”
```
“%” is also added to the end of the expression in order to transform the second point into a relative value, instead of an absolute one. The value of the **tag** custom property can be changed to a tag in order to ensure that the setup has been carried out correctly. In this example, “/ReadOnlyNumber” is used. If the line changes when the value changes, the progress bar is working as intended.
While this is enough for a working progress bar, it can also be configured in a way that the colors change according to the tag value. Animations can also be added for smoother transitions between each change in values.
First of all, it’s configured to **change color** from **red** when below 25, **yellow** until 50, **green** until 75 and finally to **blue**. To do this, a conditional expression needs to be added to the line **color** property by using the **expression editor** helper to make it easier to input the expression:

If the expression is written correctly (no syntax errors), users can check that the colors work by changing the tag value:

Finally, an animation can be added to the Right X coordinate for a smoother transition between values. To do so, the **Set animation** helper can be used on the Right X” coordinate to input the animation settings. Once configured, the icon next to Right X should indicate that the animation is enabled. More information about animations can be found in the animation section.

## [](/docs/web-vision-example-compound-elements#_Toc63160055)
## [](/docs/web-vision-example-compound-elements#_Toc63160050)
## **Using SVG component for custom components**
**SVG custom components** offer a powerful means to incorporate **Scalable Vector Graphics** (SVG) images onto the screen. This format is highly convenient, as it allows for gradual resizing while preserving image quality. Moreover, the abundance of SVG graphics available online eliminates the need for users to create them from scratch.
To import an SVG into the project, users have two options:
1. Utilize the Image component: Simply import the SVG image directly, just selecting the image you want to import from without the need for additional code manipulation.
2. Employ the SVG component: This option provides advanced functionality, allowing users to manipulate SVG attributes using CSS, XML, and JavaScript to customize the graphic to their specific requirements.
In this example, we will explain the second option, using the SVG component. For instance, we are going to create an SVG component that represents a PUMP and its internal state. 
SVG is a markup language based on XML, so its structure follows XML conventions. Here is the code for this particular example:
```xml
```
The following is a detailed explanation of the code:
1. **