mybuddy/reports/utils.py

80 lines
2.7 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
2018-02-18 10:01:55 +00:00
def default_graph_layout_options():
"""
Default layout options for all graphs.
:returns: a dict of default options.
"""
return {
2022-02-10 00:00:30 +00:00
"paper_bgcolor": "rgb(52, 58, 64)",
"plot_bgcolor": "rgb(52, 58, 64)",
"font": {
"color": "rgba(255, 255, 255, 1)",
# Bootstrap 4 font family.
2022-02-10 00:00:30 +00:00
"family": '-apple-system, BlinkMacSystemFont, "Segoe UI", '
'Roboto, "Helvetica Neue", Arial, sans-serif, '
'"Apple Color Emoji", "Segoe UI Emoji", '
'"Segoe UI Symbol"',
"size": 14,
},
2022-02-10 00:00:30 +00:00
"margin": {"b": 80, "t": 80},
"xaxis": {
"titlefont": {"color": "rgba(255, 255, 255, 0.5)"},
"gridcolor": "rgba(0, 0, 0, 0.25)",
"zerolinecolor": "rgba(0, 0, 0, 0.5)",
},
"yaxis": {
"titlefont": {"color": "rgba(255, 255, 255, 0.5)"},
"gridcolor": "rgba(0, 0, 0, 0.25)",
"zerolinecolor": "rgba(0, 0, 0, 0.5)",
},
}
2017-10-19 17:19:52 +00:00
def rangeselector_date():
"""
Graph date range selectors settings for 1w, 2w, 1m, 3m, and all.
:returns: a dict of settings for the selectors.
2017-10-19 17:19:52 +00:00
"""
return {
2022-02-10 00:00:30 +00:00
"bgcolor": "rgb(35, 149, 86)",
"activecolor": "rgb(25, 108, 62)",
"buttons": [
{"count": 7, "label": "1w", "step": "day", "stepmode": "backward"},
{"count": 14, "label": "2w", "step": "day", "stepmode": "backward"},
{"count": 1, "label": "1m", "step": "month", "stepmode": "backward"},
{"count": 3, "label": "3m", "step": "month", "stepmode": "backward"},
{"step": "all"},
],
2017-10-19 17:19:52 +00:00
}
2023-01-02 23:27:15 +00:00
def rangeselector_time():
"""
Graph time range selectors settings for 12h, 24h, 48h, 3d and all.
:returns: a dict of settings for the selectors.
"""
return {
"bgcolor": "rgb(35, 149, 86)",
"activecolor": "rgb(25, 108, 62)",
"buttons": [
{"count": 12, "label": "12h", "step": "hour", "stepmode": "backward"},
{"count": 24, "label": "24h", "step": "hour", "stepmode": "backward"},
{"count": 48, "label": "48h", "step": "hour", "stepmode": "backward"},
{"count": 3, "label": "3d", "step": "day", "stepmode": "backward"},
{"count": 7, "label": "7d", "step": "day", "stepmode": "backward"},
{"step": "all"},
],
}
def split_graph_output(output):
"""
Split out of a Plotly graph in to html and javascript.
:param output: a string of html and javascript comprising the graph.
:returns: a tuple of the the graph's html and javascript.
"""
2022-02-10 00:00:30 +00:00
html, js = output.split("<script")
js = "<script" + js
return html, js