{% set graph_math_ids = each_dashboard.math_ids.split(';') %}
{% set graph_output_ids = each_dashboard.output_ids.split(';') %}
{% set graph_pid_ids = each_dashboard.pid_ids.split(';') %}
{% set graph_note_tag_ids = each_dashboard.note_tag_ids.split(';') %}
chart_graph[{{chart_number}}] = new Highcharts.StockChart({
chart : {
renderTo: 'container-graph-{{each_dashboard.unique_id}}',
zoomType: 'x',
alignTicks: {% if each_dashboard.enable_align_ticks %}true{% else %}false{% endif %},
resetZoomButton: {
theme: {
display: 'none'
}
},
events: {
load: function () {
{% set count_series = [] -%}
{%- for input_and_measurement_ids in graph_input_ids -%}
{%- set input_id = input_and_measurement_ids.split(',')[0] -%}
{%- set measurement_id = input_and_measurement_ids.split(',')[1] -%}
{%- set all_input = table_input.query.filter(table_input.unique_id == input_id).all() -%}
{%- if all_input -%}
{% for each_input in all_input %}
getPastData({{chart_number}}, {{count_series|count}}, '{{each_input.unique_id}}', 'input', '{{measurement_id}}', {{each_dashboard.x_axis_duration*60}});
{% if each_dashboard.enable_auto_refresh -%}
getLiveData({{chart_number}}, {{count_series|count}}, '{{each_input.unique_id}}', 'input', '{{measurement_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{%- endif -%}
{%- do count_series.append(1) -%}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{%- for math_and_measurement_ids in graph_math_ids -%}
{%- set math_id = math_and_measurement_ids.split(',')[0] -%}
{%- set measurement_id = math_and_measurement_ids.split(',')[1] -%}
{%- set all_math = table_math.query.filter(table_math.unique_id == math_id).all() -%}
{%- if all_math -%}
{% for each_math in all_math %}
getPastData({{chart_number}}, {{count_series|count}}, '{{each_math.unique_id}}', 'math', '{{measurement_id}}', {{each_dashboard.x_axis_duration*60}});
{% if each_dashboard.enable_auto_refresh %}
getLiveData({{chart_number}}, {{count_series|count}}, '{{each_math.unique_id}}', 'math', '{{measurement_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{% endif %}
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{%- for each_output in output -%}
{%- for each_graph_output_id in graph_output_ids if each_output.unique_id == each_graph_output_id.split(',')[0] %}
getPastData({{chart_number}}, {{count_series|count}}, '{{each_output.unique_id}}', 'output', '{{each_output.unique_id}}', {{each_dashboard.x_axis_duration*60}});
{% if each_dashboard.enable_auto_refresh %}
getLiveData({{chart_number}}, {{count_series|count}}, '{{each_output.unique_id}}', 'output', '{{each_output.unique_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{% endif %}
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
{%- for each_pid in pid -%}
{%- for pid_and_measurement_id in graph_pid_ids if each_pid.unique_id == pid_and_measurement_id.split(',')[0] %}
{%- set measurement_id = pid_and_measurement_id.split(',')[1] -%}
getPastData({{chart_number}}, {{count_series|count}}, '{{each_pid.unique_id}}', 'pid', '{{measurement_id}}', {{each_dashboard.x_axis_duration*60}});
{% if each_dashboard.enable_auto_refresh %}
getLiveData({{chart_number}}, {{count_series|count}}, '{{each_pid.unique_id}}', 'pid', '{{measurement_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{% endif %}
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
{%- for each_tag in tags -%}
{%- for tag_and_measurement_id in graph_note_tag_ids if each_tag.unique_id == tag_and_measurement_id.split(',')[0] %}
{%- set measurement_id = tag_and_measurement_id.split(',')[1] -%}
getPastData({{chart_number}}, {{count_series|count}}, '{{each_tag.unique_id}}', 'tag', '{{measurement_id}}', {{each_dashboard.x_axis_duration*60}});
{% if each_dashboard.enable_auto_refresh %}
getLiveData({{chart_number}}, {{count_series|count}}, '{{each_tag.unique_id}}', 'tag', '{{measurement_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{% endif %}
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
}
}
},
{% if each_dashboard.use_custom_colors and each_dashboard.custom_colors -%}
{% set color_list = each_dashboard.custom_colors.split(',') %}
colors: [
{%- for each_color in color_list -%}
"{{each_color}}",
{%- endfor -%}],
{%- endif -%}
title: {
text: '{% if each_dashboard.enable_title %}{{each_dashboard.name}}{% endif %}'
},
legend: {
enabled: true
},
xAxis: {
type: 'datetime',
ordinal: false
},
yAxis: [
{% for each_axis_meas in y_axes[each_dashboard.unique_id] if each_axis_meas in dict_units %}
{
{% if each_dashboard.enable_manual_y_axis and
custom_yaxes[each_dashboard.unique_id][each_axis_meas]['minimum'] != custom_yaxes[each_dashboard.unique_id][each_axis_meas]['maximum'] %}
min: {{custom_yaxes[each_dashboard.unique_id][each_axis_meas]['minimum']}},
max: {{custom_yaxes[each_dashboard.unique_id][each_axis_meas]['maximum']}},
startOnTick: {% if each_dashboard.enable_start_on_tick %}true{% else %}false{% endif %},
endOnTick: {% if each_dashboard.enable_end_on_tick %}true{% else %}false{% endif %},
{% endif %}
title: {
text: '{{dict_units[each_axis_meas]['name']}}
{%- if dict_units[each_axis_meas]['unit'] != '' -%}
{{' (' + dict_units[each_axis_meas]['unit'] + ')'}}
{%- endif -%}'
},
labels: {
format: '{value}'
},
opposite: false,
id: '
{%- if 'custom_axis_id' in dict_measurements[each_axis_meas] -%}
{{dict_measurements[each_axis_meas]['custom_axis_id']}}
{%- else -%}
{{each_axis_meas}}
{%- endif -%}'
},
{% endfor %}
],
exporting: {
enabled: {% if each_dashboard.enable_export %}true{% else %}false{% endif %},
fallbackToExportServer: false,
},
navigator: {
enabled: {% if each_dashboard.enable_navbar %}true{% else %}false{% endif %}
},
scrollbar: {
enabled: false
},
rangeSelector: {
enabled: {% if each_dashboard.enable_rangeselect %}true{% else %}false{% endif %},
buttons: [{
count: 1,
type: 'minute',
text: '1m'
}, {
count: 5,
type: 'minute',
text: '5m'
}, {
count: 15,
type: 'minute',
text: '15m'
}, {
count: 30,
type: 'minute',
text: '30m'
}, {
type: 'hour',
count: 1,
text: '1h'
}, {
type: 'hour',
count: 6,
text: '6h'
}, {
type: 'day',
count: 1,
text: '1d'
}, {
type: 'week',
count: 1,
text: '1w'
}, {
type: 'month',
count: 1,
text: '1m'
}, {
type: 'month',
count: 3,
text: '3m'
}, {
type: 'all',
text: 'Full'
}],
selected: 15
},
credits: {
enabled: false,
href: "https://github.com/kizniche/Mycodo",
text: "Mycodo"
},
tooltip: {
shared: true,
formatter: function(){
var d = new Date(this.x);
if (this.point) {
return ''+ Highcharts.dateFormat('%B %e, %Y %H:%M:%S.', this.x) + d.getMilliseconds()
+ '
' + this.series.name
+ '
' + this.point.title
+ '
' + this.point.text;
}
else {
var s = '' + Highcharts.dateFormat('%B %e, %Y %H:%M:%S.', this.x) + d.getMilliseconds() + '';
$.each(this.points, function(i, point) {
s += '
\u25CF ' + point.series.name + ': ' + Highcharts.numberFormat(point.y, this.series.tooltipOptions.valueDecimals) + ' ' + this.series.tooltipOptions.valueSuffix;
});
return s;
}
}
},
plotOptions: {
column: {
maxPointWidth: 3 /* limit the maximum column width. */
}
},
{# // Generate thermal image from pixel data#}
{# // point click event opens image in a new window#}
{# plotOptions: {#}
{# series: {#}
{# cursor: 'pointer',#}
{# point: {#}
{# events: {#}
{# click: function () {#}
{# URL = '/generate_thermal_image/f36ce034-3129-456d-b877-ff0d5587e375/' + this.x;#}
{# window.open(URL, "_blank");#}
{# }#}
{# }#}
{# }#}
{# }#}
{# },#}
{# plotOptions: {#}
{# series: {#}
{# cursor: 'pointer',#}
{# point: {#}
{# events: {#}
{# click: function(e){#}
{# hs.htmlExpand(null, {#}
{# pageOrigin: {#}
{# x: e.pageX || e.clientX,#}
{# y: e.pageY || e.clientY#}
{# },#}
{# headingText: this.series.name,#}
{# maincontentText: '
',#}
{# width: 215,#}
{# height: 255,#}
{# });#}
{# }#}
{# }#}
{# },#}
{# marker: {#}
{# lineWidth: 1#}
{# }#}
{# }#}
{# },#}
series: [
{%- for input_and_measurement_ids in graph_input_ids -%}
{%- set input_id = input_and_measurement_ids.split(',')[0] -%}
{%- set all_input = table_input.query.filter(table_input.unique_id == input_id).all() -%}
{%- if all_input -%}
{%- for each_input in all_input -%}
{%- set measurement_id = input_and_measurement_ids.split(',')[1] -%}
{%- if measurement_id in device_measurements_dict -%}
{
name: '{{each_input.name}}
{%- if device_measurements_dict[measurement_id].name -%}
{{' (' + device_measurements_dict[measurement_id].name}})
{%- endif -%}
{{' (CH' + (device_measurements_dict[measurement_id].channel + 1)|string}}
{%- if dict_measure_measurements[measurement_id] in dict_measurements and
dict_measurements[dict_measure_measurements[measurement_id]]['name'] -%}
{{', ' + dict_measurements[dict_measure_measurements[measurement_id]]['name']}}
{%- endif -%}
{%- if dict_measure_units[measurement_id] in dict_units and
dict_units[dict_measure_units[measurement_id]]['unit'] -%}
{{', ' + dict_units[dict_measure_units[measurement_id]]['unit']}}
{%- endif -%}
)',
{% if dict_measure_measurements[measurement_id] in dict_measurements and
dict_measurements[dict_measure_measurements[measurement_id]]['meas'] == 'edge' %}
type: 'column',
{% else -%}
type: 'line',
{%- endif -%}
tooltip: {
valueSuffix: '
{%- if device_measurements_dict[measurement_id].conversion_id -%}
{{' ' + dict_units[table_conversion.query.filter(table_conversion.unique_id == device_measurements_dict[measurement_id].conversion_id).first().convert_unit_to]['unit']}}
{%- elif device_measurements_dict[measurement_id].rescaled_unit -%}
{{' ' + dict_units[device_measurements_dict[measurement_id].rescaled_unit]['unit']}}
{%- else -%}
{{' ' + dict_units[device_measurements_dict[measurement_id].unit]['unit']}}
{%- endif -%}
',
valueDecimals: 3
},
yAxis: '
{%- if measurement_id in dict_measure_units -%}
{{dict_measure_units[measurement_id]}}
{%- endif -%}
',
data: []
},
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{% for each_math in math -%}
{%- for math_and_measurement_ids in graph_math_ids if each_math.unique_id == math_and_measurement_ids.split(',')[0] -%}
{%- set measurement_id = math_and_measurement_ids.split(',')[1] -%}
{%- if measurement_id in device_measurements_dict -%}
{
name: '{{each_math.name}}
{%- if device_measurements_dict[measurement_id].name -%}
{{' (' + device_measurements_dict[measurement_id].name}})
{%- endif -%}
{{' (CH' + (device_measurements_dict[measurement_id].channel + 1)|string}}
{%- if dict_measure_measurements[measurement_id] in dict_measurements and
dict_measurements[dict_measure_measurements[measurement_id]]['name'] -%}
{{', ' + dict_measurements[dict_measure_measurements[measurement_id]]['name']}}
{%- endif -%}
{%- if dict_measure_units[measurement_id] in dict_units and
dict_units[dict_measure_units[measurement_id]]['unit'] -%}
{{', ' + dict_units[dict_measure_units[measurement_id]]['unit']}}
{%- endif -%}
)',
{% if dict_measure_measurements[measurement_id] in dict_measurements and
dict_measurements[dict_measure_measurements[measurement_id]]['meas'] == 'edge' %}
type: 'column',
{% else %}
type: 'line',
{% endif %}
tooltip: {
valueSuffix: '
{%- if device_measurements_dict[measurement_id].conversion_id -%}
{{' ' + dict_units[table_conversion.query.filter(table_conversion.unique_id == device_measurements_dict[measurement_id].conversion_id).first().convert_unit_to]['unit']}}
{%- elif device_measurements_dict[measurement_id].rescaled_unit -%}
{{' ' + dict_units[device_measurements_dict[measurement_id].rescaled_unit]['unit']}}
{%- else -%}
{{' ' + dict_units[device_measurements_dict[measurement_id].unit]['unit']}}
{%- endif -%}
',
valueDecimals: 3
},
yAxis: '
{%- if measurement_id in dict_measure_units -%}
{{dict_measure_units[measurement_id]}}
{%- endif -%}
',
data: []
},
{%- endif -%}
{%- endfor -%}
{% endfor %}
{%- for each_output in output -%}
{%- for each_graph_output_id in graph_output_ids if each_output.unique_id == each_graph_output_id.split(',')[0] -%}
{
name: '{{each_output.name}} ({{dict_measurements[each_output.measurement]['name']}})',
type: 'column',
dataGrouping: {
approximation: 'high',
groupPixelWidth: 1
},
tooltip: {
valueSuffix: ' {{dict_units[each_output.unit]['unit']}}',
valueDecimals: 2
},
yAxis: '{{each_output.unit}}',
data: []
},
{%- endfor -%}
{%- endfor -%}
{%- for each_pid in pid -%}
{%- for pid_and_measurement_ids in graph_pid_ids if each_pid.unique_id == pid_and_measurement_ids.split(',')[0] -%}
{%- set measurement_id = pid_and_measurement_ids.split(',')[1] -%}
{%- if measurement_id in device_measurements_dict -%}
{
name: '{{each_pid.name}}
{%- if device_measurements_dict[measurement_id].name -%}
{{' (' + device_measurements_dict[measurement_id].name}})
{%- endif -%}
{{' (CH' + (device_measurements_dict[measurement_id].channel + 1)|string}}
{%- if dict_measure_measurements[measurement_id] in dict_measurements and
dict_measurements[dict_measure_measurements[measurement_id]]['name'] -%}
{{', ' + dict_measurements[dict_measure_measurements[measurement_id]]['name']}}
{%- endif -%}
{%- if dict_measure_units[measurement_id] in dict_units and
dict_units[dict_measure_units[measurement_id]]['unit'] -%}
{{', ' + dict_units[dict_measure_units[measurement_id]]['unit']}}
{%- endif -%}
)',
{% if dict_measure_measurements[measurement_id] in dict_measurements and
dict_measurements[dict_measure_measurements[measurement_id]]['meas'] == 'edge' %}
type: 'column',
{% else %}
type: 'line',
{% endif %}
tooltip: {
valueSuffix: '
{%- if measurement_id in dict_measure_units and dict_measure_units[measurement_id] in dict_units -%}
{{' ' + dict_units[dict_measure_units[measurement_id]]['unit']}}
{%- endif -%}
',
valueDecimals: 3
},
yAxis: '
{%- if measurement_id in dict_measure_units -%}
{{dict_measure_units[measurement_id]}}
{%- endif -%}
',
data: []
},
{%- endif -%}
{%- endfor -%}
{% endfor %}
{%- for each_tag in tags -%}
{%- for each_graph_note_tag_id in graph_note_tag_ids if each_tag.unique_id == each_graph_note_tag_id.split(',')[0] -%}
{
name: 'Note Tag: {{each_tag.name}}',
type: 'flags',
data: [],
stackDistance: 40,
shape: 'squarepin'
},
{% endfor %}
{% endfor %}
]
});
$('#updateData{{chart_number}}').click(function() {
{% set count_series = [] -%}
{% for each_input in input -%}
{%- for input_and_measurement_ids in graph_input_ids if each_input.unique_id == input_and_measurement_ids.split(',')[0] %}
{%- set measurement_id = input_and_measurement_ids.split(',')[1] -%}
retrieveLiveData({{chart_number}}, {{count_series|count}}, '{{each_input.unique_id}}', 'input', '{{measurement_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
{% for each_math in math -%}
{%- for math_and_measurement_id in graph_math_ids if each_math.unique_id == math_and_measurement_id.split(',')[0] %}
{%- set measurement_id = math_and_measurement_id.split(',')[1] -%}
retrieveLiveData({{chart_number}}, {{count_series|count}}, '{{each_math.unique_id}}', 'math', '{{measurement_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
{% for each_output in output -%}
{%- for output_and_measurement_id in graph_output_ids if each_output.unique_id == output_and_measurement_id.split(',')[0] %}
{%- set measurement_id = output_and_measurement_id.split(',')[0] -%}
retrieveLiveData({{chart_number}}, {{count_series|count}}, '{{each_output.unique_id}}', 'output', '{{each_output.unique_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
{% for each_pid in pid -%}
{%- for pid_and_measurement_id in graph_pid_ids if each_pid.unique_id == pid_and_measurement_id.split(',')[0] %}
{%- set measurement_id = pid_and_measurement_id.split(',')[1] -%}
retrieveLiveData({{chart_number}}, {{count_series|count}}, '{{each_pid.unique_id}}', 'pid', '{{measurement_id}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
{%- for each_tag in tag -%}
{%- for each_id_and_measure in graph_note_tag_ids if each_pid.unique_id == each_id_and_measure.split(',')[0] %}
retrieveLiveData({{chart_number}}, {{count_series|count}}, '{{each_id_and_measure.split(',')[1]}}', '{{each_id_and_measure.split(',')[0]}}', {{each_dashboard.x_axis_duration}}, {{each_dashboard.enable_xaxis_reset|int}}, {{each_dashboard.refresh_duration}}, {% if each_dashboard.enable_graph_shift %}true{% else %}false{% endif %});
{%- do count_series.append(1) %}
{%- endfor -%}
{%- endfor -%}
});
$('#resetZoom{{chart_number}}').click(function() {
var chart = $('#container-graph-{{each_dashboard.unique_id}}').highcharts();
chart.zoomOut();
});
$('#showhidebutton{{chart_number}}').click(function() {
var chart = $('#container-graph-{{each_dashboard.unique_id}}').highcharts();
var series = chart.series[0];
if (series.visible) {
$(chart.series).each(function(){
this.setVisible(false, false);
});
chart.redraw();
} else {
$(chart.series).each(function(){
this.setVisible(true, false);
});
chart.redraw();
}
});