AnsweredAssumed Answered

Unique Value Renderer - use a local variable in Java Script in Value Expression

Question asked by George1912 on Jun 2, 2020
Latest reply on Jun 3, 2020 by George1912

Hi Experts / Kristian Ekenes

 

Unfortunately I don't have a working example to share as the data that I am working on is client sensitive. 

 

I am using a Unique Value Renderer to colour various types of pipelines with the PRODUCT feature/attribute and it works fine without a value expression.

 

In my JS code, I have a variable, say routeName which has a name say "ABC". Now what I need is the value expression to consider the local variable which is not happening

 

I also tried with field and field1 and filedDelimiter as ",', but even this is not working. Need help on how to access this.

 

The whole idea is if I select a particular route on the map, I need to change the opacity of the other routes in this layer, so if I can get this to work, then I can add the opacity. 

 

var routeName = "ABC";

var pipelineRenderer = {renderer: {
type: "unique-value",
field: "PRODUCT",
valueExpression: "When($feature.PRODUCT = "OIL" && $feature.ROUTE_NAME != routeName, 'OIL', $feature.PRODUCT = "GAS" && $feature.ROUTE_NAME != routeName, 'GAS', 'OTHERS')",
defaultSymbol: {
type: "simple-line",
color: "black",
width: 2
},
uniqueValueInfos: [
{
value: 'OIL',
symbol: {
type: "simple-line",
color: "red",
width: 3
}
},
{
value: 'GAS',
symbol: {
type: "simple-line",
color: "yellow",
width: 2.5
}
}
]
}}

 

pipeLineLayer.set(pipelineRenderer);
pipeLineLayer.refresh();

 

I even tried to do below but its throwing Syntax Error - if I can access the DOM and take the value which I can use in my When expression, that should also work:

 

valueExpression: `

                                var selectFilter = document.getElementsByTagName("select");
                                var opts = selectFilter[0].options;
                                var route = selectFilter.item(0).item(selectFilter.item(0).selectedIndex).value.split("|")[0].split(":")[1].trim();
                                Console("Selected Route: " +  route);
                                When($feature.PRODUCT == 'GAS', 'GAS', $feature.PRODUCT == 'OIL', 'OIL', 'OTHERS')`,

 

 

Outcomes