I do something similar, but using Arcade. Here's my code:
Left Parity
var leftfrom = Boolean($feature.fromleft % 2)
var leftto = Boolean($feature.toleft % 2)
if($feature.fromleft == null || $feature.toleft == null) {
return null
}
else {
if($feature.fromleft == 0 && $feature.toleft == 0) {
return "Z"
}
else {
if(leftfrom == false && leftto == false) {
return "E"
}
if(leftfrom == true && leftto == true) {
return "O"
}
if(leftfrom == false && leftto == true) {
return "B"
}
if(leftfrom == true && leftto == false) {
return "B"
}
}
}
Right Parity
var rightfrom = Boolean($feature.fromright % 2)
var rightto = Boolean($feature.toright % 2)
if($feature.fromright == null || $feature.toright == null) {
return null
}
else {
if($feature.fromright == 0 && $feature.toright == 0) {
return "Z"
}
else {
if(rightfrom == false && rightto == false) {
return "E"
}
if(rightfrom == true && rightto == true) {
return "O"
}
if(rightfrom == false && rightto == true) {
return "B"
}
if(rightfrom == true && rightto == false) {
return "B"
}
}
}
It automatically applies the expressions as soon as you tab out from the address number fields.