Skip to content

Commit

Permalink
#6 Trying to add param diff to the website. Work in progress!
Browse files Browse the repository at this point in the history
  • Loading branch information
JanKott committed Aug 3, 2021
1 parent e48a18d commit 20131de
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 2 deletions.
5 changes: 4 additions & 1 deletion app/plot_app/configured_plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from plotted_tables import (
get_logged_messages, get_changed_parameters,
get_info_table_html, get_heading_html, get_error_labels_html,
get_hardfault_html, get_corrupt_log_html
get_hardfault_html, get_corrupt_log_html, get_param_diff
)

#pylint: disable=cell-var-from-loop, undefined-loop-variable,
Expand Down Expand Up @@ -906,6 +906,9 @@ def param_changes_button_clicked():
# changed parameters
plots.append(get_changed_parameters(ulog, plot_width))

# parameters diff
plots.append(get_param_diff(ulog, plot_width))



# information about which messages are contained in the log
Expand Down
75 changes: 74 additions & 1 deletion app/plot_app/plotted_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from helper import (
get_default_parameters, get_airframe_name,
get_total_flight_time, error_labels_table,
get_event_parser
get_event_parser, load_ulog_file
)

#pylint: disable=consider-using-enumerate,too-many-statements
Expand Down Expand Up @@ -535,6 +535,79 @@ def get_changed_parameters(ulog, plot_width):
width=int(plot_width/2))
return column(div, data_table, width=plot_width)

def get_param_diff(ulog, plot_width):
"""
get a bokeh column object with parameters diff
"""
param_names = []
param_base = []
param_current = []
param_colors = []

params_1 = load_ulog_file('/home/jankott/flight_review/data/log_files/f6caa8e8-a3c4-49b1-9f96-1ce09a726f9e.ulg').initial_parameters
params_2 = ulog.initial_parameters

identical = []
ref_index = 0
for param in dict(params_1).items():
if param in params_2.items():
identical.append(param)
del params_1[param[0]]
del params_2[param[0]]

added = []
for param in dict(params_2).items():
if param[0] not in params_1.keys():
added.append(param)
del params_2[param[0]]

removed = []
for param in dict(params_1).items():
if param[0] not in params_2.keys():
removed.append(param)
del params_1[param[0]]

changed = []
for param in params_1.keys():
changed.append([param, params_1[param], params_2[param]])

for param in removed:
param_names.append(str(param[0]))
param_base.append(str(param[1]))
param_current.append('')
param_colors.append('red')
for param in added:
param_names.append(str(param[0]))
param_current.append(str(param[1]))
param_base.append('')
param_colors.append('green')
for param in changed:
param_names.append(str(param[0]))
param_base.append(str(param[1]))
param_current.append(str(param[2]))
param_colors.append('orange')

param_data = dict(
names=param_names,
base=param_base,
current=param_current,
colors=param_colors)
source = ColumnDataSource(param_data)
formatter = HTMLTemplateFormatter(template='<font color="<%= colors %>"><%= value %></font>')
columns = [
TableColumn(field="names", title="Name",
width=int(plot_width*0.2), sortable=False),
TableColumn(field="base", title="base",
width=int(plot_width*0.15), sortable=False, formatter=formatter),
TableColumn(field="current", title="current",
width=int(plot_width*0.15), sortable=False, formatter=formatter),
]
data_table = DataTable(source=source, columns=columns, width=plot_width,
height=300, sortable=False, selectable=False)
div = Div(text="""<b>Parameters diff</b>""",
width=int(plot_width/2))
return column(div, data_table, width=plot_width)


def get_logged_messages(ulog, plot_width):
"""
Expand Down
1 change: 1 addition & 0 deletions app/plot_app/templates/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ <h1>
<a class="dropdown-item" href="download?log={{ log_id }}">Log File</a>
<a class="dropdown-item" href="download?log={{ log_id }}&type=1" target="_blank">Parameters</a>
<a class="dropdown-item" href="download?log={{ log_id }}&type=3" target="_blank">Parameters (non-default)</a>
<a class="dropdown-item" href="download?log={{ log_id }}&type=4" target="_blank">Parameters diff</a>
{% if has_position_data %}
<a class="dropdown-item" href="download?log={{ log_id }}&type=2" target="_blank">KML Track</a>
{% endif %}
Expand Down
38 changes: 38 additions & 0 deletions app/tornado_handlers/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,44 @@ def kml_colors(flight_mode):
except:
pass

elif download_type == '4': # download parameters diff
params_1 = load_ulog_file('/home/jankott/flight_review/data/log_files/f6caa8e8-a3c4-49b1-9f96-1ce09a726f9e.ulg').initial_parameters
params_2 = load_ulog_file(log_file_name).initial_parameters

identical = []
ref_index = 0
for param in dict(params_1).items():
if param in params_2.items():
identical.append(param)
del params_1[param[0]]
del params_2[param[0]]

added = []
for param in dict(params_2).items():
if param[0] not in params_1.keys():
added.append(param)
del params_2[param[0]]

removed = []
for param in dict(params_1).items():
if param[0] not in params_2.keys():
removed.append(param)
del params_1[param[0]]

changed = []
for param in params_1.keys():
changed.append([param, params_1[param], params_2[param]])

self.set_header("Content-Type", "text/plain")
self.set_header('Content-Disposition', 'inline; filename=diff.txt')
for param in removed:
self.write('\033[91m- ' + str(param[0]) + ' = ' + str(param[1]) + '\n')
for param in added:
self.write('\033[92m+ ' + str(param[0]) + ' = ' + str(param[1]) + '\n')
for param in changed:
self.write('\033[97m' + str(param[0]) + ' = \033[91m' + str(param[1]) + '/\033[92m' + str(param[2]) + '\n')


else: # download the log file
self.set_header('Content-Type', 'application/octet-stream')
self.set_header("Content-Description", "File Transfer")
Expand Down

0 comments on commit 20131de

Please sign in to comment.