{% 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(); } });