filter params with user config in influxdb.py
This commit is contained in:
28
influxdb.py
28
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 <secop_module.parameter>.
|
||||
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user