# Perspective Symbol States

**URL:** <https://forum.inductiveautomation.com/t/perspective-symbol-states/69055>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [January 26, 2023, 9:09pm UTC](https://forum.inductiveautomation.com/t/perspective-symbol-states/69055 "2023-01-26T21:09:51Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ohio\_auto](https://avatars.discourse-cdn.com/v4/letter/o/ecd19e/32.png) [@ohio\_auto](https://forum.inductiveautomation.com/u/ohio_auto)\
**Post date:** [January 26, 2023, 9:09pm UTC](https://forum.inductiveautomation.com/t/perspective-symbol-states/69055/1 "2023-01-26T21:09:51Z")

</div>

How do you bind a perspective components symbol state with multiple tags? e.g. the valve symbol states are:

open  
failedToOpen  
partiallyClosed  
closed  
failedToClose

My valve UDT does not have all of these states as a single word that can use a map transform. How do I check multiple tags in order to return the correct string?

Thanks!

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [January 26, 2023, 9:30pm UTC](https://forum.inductiveautomation.com/t/perspective-symbol-states/69055/2 "2023-01-26T21:30:16Z")

</div>

I would map them into an expression or derived tag to return a single status description (Opened, Failed to Open, etc.) Then you can use that everywhere in your graphics, with one source of truth.

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [January 26, 2023, 9:53pm UTC](https://forum.inductiveautomation.com/t/perspective-symbol-states/69055/3 "2023-01-26T21:53:07Z")

</div>

Maybe something like this, which is along the lines that Nick mentioned. Note, I didn't put the tags in a specific order.  
[tagsStates.json](https://forum.inductiveautomation.com/uploads/short-url/op4Yo08PWyJGtv7nWn8TR9bOtsM.json) (871 Bytes)

Edit, oops, it should have been `binEnum` instead of `binEnc`.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [January 26, 2023, 10:42pm UTC](https://forum.inductiveautomation.com/t/perspective-symbol-states/69055/4 "2023-01-26T22:42:24Z")

</div>

I much prefer a string description instead of an integer. An integer needs translation and could be different for different devices. A string 'Stopped' is always the same and can also be used for graphic display. Mapping to string descriptions in tags for status and modes was hands down one of the best decisions I made in my projects 4-5 years ago. It makes the graphics essentially device agnostic

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [January 26, 2023, 10:55pm UTC](https://forum.inductiveautomation.com/t/perspective-symbol-states/69055/5 "2023-01-26T22:55:51Z")

</div>

As Nick stated, and I agree, a string is better, here is an updated example. Again, just an example, many ways to accomplish this.  
[tagsStates.json](https://forum.inductiveautomation.com/uploads/short-url/qOPPz8ciPHQE9CiGnax2ZuAO7Ce.json) (1.2 KB)

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [January 26, 2023, 11:03pm UTC](https://forum.inductiveautomation.com/t/perspective-symbol-states/69055/6 "2023-01-26T23:03:13Z")

</div>

This is what I use for my style classes bindings.

Device symbol binding on `style.classes`:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/3/9386e56da06fa850058393b3aa392e33474786c6.png)  
`view.custom.status` here is the Status Desc tag below (I never refer to the Status tag in graphics, so I drop the "Desc" in my references to it)

Style Class Maps/Device Status dataset tag data:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/4/944fa0f7a7551cea1a53bdb4316281e2396a9aab.png)  
(someone should really re-order these...)

The StyleClass column has the path to my Perpective Styles. Using a dataset essentially as a map transform allows the transform to be _centrally located providing a single source of truth_ and used for every single status display in the project, rather than having a plethora of independent map transforms throughout the project, all defined manually.

Perspective Style example:  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/b/9/b9008673a3c78cac1506f03a74a9bcceae901252.png)

Tags:  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/7/67d1591f92b092e2b4cb356cbfdac9ec40bf01fe.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/2/0217fbc6478093acff63919d841210c058c82740.png)
