Using Parameters in a If statement

I made GeoPolygon of neighborhoods in The Hague. I made parameters of rain. I want the Polygon to change color when it starts to rain harder. However, I am unable to get and use this parameter. Can someone help me with this.

This is my code:

class Parametrization(ViktorParametrization):
    trees = NumberField("Trees", default=10, min=10, max=10000, step=10, suffix="pieces", variant="slider")
    green_roofs = NumberField("Green_roofs", default=10, min=10, max=10000, step=10, suffix="m2", variant="slider")
    rain_barrels = NumberField("Rain_barrels", default=10, min=10, max=10000, step=10, suffix="pieces", variant="slider")
    intensity = NumberField("Intensity", default=1, min=1, max=44, step=1, suffix="hours", variant="slider")
    rain = NumberField("Rain", default=5, min=5, max=100, step=5, suffix="mm/h", variant="slider")
    size = NumberField("Size", default=(100/44), min=(100/44), max=100, step=(100/44), suffix="%", variant="slider")
    set_params_btn = SetParamsButton("Set params", "set_param_a", longpoll=True)
    button = DownloadButton('Perform download', method='perform_download')
    Rain2 = MultiSelectField('Rain2', options=['5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80', '85', '90', '95', '100'], default=['5'])

if '5, 10, 15' in Parametrization.Rain2:
    f = open('wijken.json')
    data = json.load(f)
    list_features = []
    for i in range(len(data["features"])):
        list_coordinates = []
        for j in range(len(data["features"][i]["geometry"]["coordinates"][0])):
            coordinates_rd = tuple(data["features"][i]["geometry"]["coordinates"][0][j])
            lat, lon = RDWGSConverter.from_rd_to_wgs(coordinates_rd)
            print(lat, lon)
            list_coordinates.append(MapPoint(lat, lon))
        list_features.append(MapPolygon(list_coordinates, color=Color(242, 246, 68)))
elif '20, 25, 30, 35' in Parametrization.Rain2:
    f = open('wijken.json')
    data = json.load(f)
    list_features = []
    for i in range(len(data["features"])):
        list_coordinates = []
        for j in range(len(data["features"][i]["geometry"]["coordinates"][0])):
            coordinates_rd = tuple(data["features"][i]["geometry"]["coordinates"][0][j])
            lat, lon = RDWGSConverter.from_rd_to_wgs(coordinates_rd)
            print(lat, lon)
            list_coordinates.append(MapPoint(lat, lon))
        list_features.append(MapPolygon(list_coordinates, color=Color(255, 154, 5)))
else:
    f = open('wijken.json')
    data = json.load(f)
    list_features = []
    for i in range(len(data["features"])):
        list_coordinates = []
        for j in range(len(data["features"][i]["geometry"]["coordinates"][0])):
            coordinates_rd = tuple(data["features"][i]["geometry"]["coordinates"][0][j])
            lat, lon = RDWGSConverter.from_rd_to_wgs(coordinates_rd)
            print(lat, lon)
            list_coordinates.append(MapPoint(lat, lon))
        list_features.append(MapPolygon(list_coordinates, color=Color(231, 29, 29)))

And this is my error:

TypeError: argument of type ‘MultiSelectField’ is not iterable

Hi Ties, welcome to the community.

I would advise you to read a bit through how to create an editor. In short, an editor consists of 2 main components: the Parametrization and the Views. Your parametrization looks fine, but I was wondering whether you meant to use an OptionField instead of a MultiSelectField for Rain2? The second part of your example should be placed in a view method in the controller. Input parameters are passed via the params argument in the method’s signature, so instead of Parametrization.Rain2 it will become params.Rain2.

Your code can be simplified a bit and will become something like this. Note that this is based on an OptionField instead of a MultiSelectField:

class Parametrization(ViktorParametrization):
    ...
    Rain2 = OptionField('Rain2', options=['5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80', '85', '90', '95', '100'], default='5')

class Controller(ViktorController):
    label = "My Label"
    parametrization = Parametrization

    @MapView("Map", duration_guess=1)
    def view_map(self, params, **kwargs):
        f = open('wijken.json')
        data = json.load(f)

        if params.Rain2 in ("5", "10", "15"):  # 'params' instead of Parametrization!
            color = Color(242, 246, 68)
        elif params.Rain2 in ("20", "25", "30", "35"):
            color = Color(255, 154, 5)
        else:
            color = Color(231, 29, 29)

        list_features = []
        for i in range(len(data["features"])):
            list_coordinates = []
            for j in range(len(data["features"][i]["geometry"]["coordinates"][0])):
                coordinates_rd = tuple(data["features"][i]["geometry"]["coordinates"][0][j])
                lat, lon = RDWGSConverter.from_rd_to_wgs(coordinates_rd)
                list_coordinates.append(MapPoint(lat, lon))
            list_features.append(MapPolygon(list_coordinates, color=color))
  
        return MapResult(list_features)