From 668f6d4aad44976a3717e2e52e8f05a72ea4516a Mon Sep 17 00:00:00 2001 From: l_samenv Date: Tue, 3 Sep 2024 14:52:19 +0200 Subject: [PATCH] filter params with user config in influxdb.py --- influxdb.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/influxdb.py b/influxdb.py index af0672d..cb85aa8 100644 --- a/influxdb.py +++ b/influxdb.py @@ -58,7 +58,7 @@ class InfluxDataGetter: # ----- PUBLIC METHODS - def get_available_variables_at_time(self, times, chart_configs = None): + def get_available_variables_at_time(self, times, chart_configs = None, user_config = None): """ Gets the available variables (those that we can have a value for since the device has been installed on the instrument) at the given point in time (times[1]). Here, a variable means : SECOP module name + parameter. By default, this method returns the parameters "value" and "target", unless the config file used in chart_config indicates other directives. @@ -78,6 +78,8 @@ class InfluxDataGetter: if not chart_configs == None: for chart_config in chart_configs: available_variables = self._filter_params_with_config(available_variables, chart_config) + if not user_config == None: + available_variables = self._filter_params_with_user_config(available_variables, user_config) available_variables = self._remove_variables_params_not_displayed(available_variables) available_variables = self._remove_variables_params_wihout_param_float_and_split(available_variables, times) res = self._group_variables_by_cat_unit(available_variables) @@ -403,6 +405,30 @@ class InfluxDataGetter: return available_variables + def _filter_params_with_user_config(self, available_variables, user_config): + """ + Updates (cat, color, unit) the parameters according to the user_config object. + + Parameters: + available_variables ([{"name":(str), "label":(str), "params":{(str):{"cat":(str), "color":(str), "unit":(str)}}}]) : an array of dictionnaries, each containing the Influx name of the corresponding variable out of the setup_info dict, + the label to display in the Web GUI, and a dictionnary of parameters (including value), which consist of dictionnaries with the category, the color and the unit, indexed by the name of the parameter. + user_config ({(str):{"cat":(str), "color":(str), "unit":(str)}}) : the object representing the user configuration. The key is . + + Returns : + [{"name":(str), "label":(str), "params":{(str):{"cat":(str), "color":(str), "unit":(str)}}}] : the available_variables parameter, updated + """ + + for variable in available_variables: + params = list(variable["params"].keys()) + for param_key in params: + key = variable["label"] if param_key == "value" else variable["label"]+"."+param_key + param_config = user_config[key] if key in user_config.keys() else None + if param_config != None : + for key, value in param_config.items(): + variable["params"][param_key][key] = value + + return available_variables + def _remove_variables_params_not_displayed(self, available_variables): """ Removes the parameters if their category is None.