Skip to content

Commit

Permalink
Fix muti-measurement Widget when used with single-measurement Widget
Browse files Browse the repository at this point in the history
  • Loading branch information
kizniche committed Sep 4, 2024
1 parent 984f5b1 commit 09246a7
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 25 deletions.
9 changes: 3 additions & 6 deletions mycodo/mycodo_flask/utils/utils_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2014,12 +2014,9 @@ def settings_regenerate_widget_html():
"Regenerate Widget HTML: "
f"cmd: {cmd}; out: {out}; error: {err}; status: {status}")

cmd = f"{INSTALL_DIRECTORY}/mycodo/scripts/mycodo_wrapper frontend_reload" \
f" | ts '[%Y-%m-%d %H:%M:%S]' >> {DEPENDENCY_LOG_FILE} 2>&1"
out, err, status = cmd_output(cmd, stdout_pipe=False, user='root')
logger.info(
"Frontend reload: "
f"cmd: {cmd}; out: {out}; error: {err}; status: {status}")
logger.info("Reloading frontend in 10 seconds")
cmd = f"sleep 10 && {INSTALL_DIRECTORY}/mycodo/scripts/mycodo_wrapper frontend_reload 2>&1"
subprocess.Popen(cmd, shell=True)
except Exception:
logger.exception("Regenerating widget HTML")

Expand Down
38 changes: 19 additions & 19 deletions mycodo/widgets/widget_measurement_multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@

'widget_dashboard_js': """
// Retrieve the latest/last measurement for Measurement widget
function getLastDataMeasurement(measurement_num,
function getLastDataMeasurement_multi2(measurement_num,
widget_id,
unique_id,
measure_type,
Expand Down Expand Up @@ -283,7 +283,7 @@
}
// Repeat function for getLastData()
function repeatLastDataMeasurement(measurement_num,
function repeatLastDataMeasurement_multi2(measurement_num,
widget_id,
dev_id,
measure_type,
Expand All @@ -292,7 +292,7 @@
max_measure_age_sec,
decimal_places) {
setInterval(function () {
getLastDataMeasurement(measurement_num,
getLastDataMeasurement_multi2(measurement_num,
widget_id,
dev_id,
measure_type,
Expand All @@ -313,49 +313,49 @@
{% for each_input in input %}
{% if each_input.unique_id == device_id_1 %}
getLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
getLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
{%- endif -%}
{% if each_input.unique_id == device_id_2 %}
getLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
getLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_input.unique_id}}', 'input', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
{% endif %}
{%- endfor -%}
{% for each_function in function %}
{% if each_function.unique_id == device_id_1 %}
getLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
getLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
{% endif %}
{% if each_function.unique_id == device_id_2 %}
getLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
getLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_function.unique_id}}', 'function', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
{% endif %}
{%- endfor -%}
{% for each_output in output %}
{% if each_output.unique_id == device_id_1 %}
getLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
getLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
{% endif %}
{% if each_output.unique_id == device_id_2 %}
getLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
getLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_output.unique_id}}', 'output', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
{% endif %}
{%- endfor -%}
{% for each_pid in pid %}
{% if each_pid.unique_id == device_id_1 %}
getLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement('1', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
getLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_1}}', {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
repeatLastDataMeasurement_multi2('1', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_1}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_1_max_age']}}, {{widget_options['decimal_places_1']}});
{% endif %}
{% if each_pid.unique_id == device_id_2 %}
getLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement('2', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
getLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_2}}', {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
repeatLastDataMeasurement_multi2('2', '{{each_widget.unique_id}}', '{{each_pid.unique_id}}', 'pid', '{{measurement_id_2}}', {{widget_options['refresh_seconds']}}, {{widget_options['measurement_2_max_age']}}, {{widget_options['decimal_places_2']}});
{% endif %}
{%- endfor -%}
"""
Expand Down

1 comment on commit 09246a7

@kizniche
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This commit has been mentioned on Radical DIY Forum. There might be relevant details there:

https://forum.radicaldiy.com/t/custom-widget-for-multiple-measurements/1916/11

Please sign in to comment.