68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
import constants
|
|
import globals
|
|
|
|
_content = """
|
|
<h1>Thermostat</h1>
|
|
<div id="header_buttons" class="flex flex-row">
|
|
%s
|
|
</div>
|
|
%s
|
|
"""
|
|
|
|
_header_buttons = """
|
|
<button class="btn %s" hx-get="/set_by_week" hx-target="#header_buttons">Same for all days</button>
|
|
<button class="btn %s" hx-get="/set_by_day" hx-target="#header_buttons">By day</button>
|
|
"""
|
|
|
|
_by_week_content = """
|
|
<form hx-post="/save_by_week" hx-target="#settings">
|
|
<h2>Settings for all day</h2>
|
|
<div id="settings">
|
|
%s
|
|
</div>
|
|
<div class="flex flex-row">
|
|
<button class="btn btn-success" hx-get="/add_by_week" hx-target="#settings">Add</button>
|
|
<input class="btn btn-success" type="submit" value="Save" />
|
|
<button class="btn btn-danger" hx-get="/reset_by_week" hx-target="#settings">Cancel</button>
|
|
</div>
|
|
</form>
|
|
"""
|
|
|
|
def _format_edit_line(time, temp, i):
|
|
return """
|
|
<div class="flex flex-row mb-3">
|
|
<input type="time" value="%s" class="form-control mr-10" placeholder="Time" name="time%s" />
|
|
<input type="number" value="%s" class="form-control mr-10" placeholder="Temperature (°C)" name="value%s" />
|
|
</div>
|
|
""" % (time, i, temp, i)
|
|
|
|
def get_main(day_mode):
|
|
return _content % (get_header_buttons(day_mode), get_settings_with_id(day_mode))
|
|
|
|
def get_header_buttons(day_mode):
|
|
return _header_buttons % (
|
|
"btn-primary" if day_mode == constants.BY_WEEK else "btn-secondary",
|
|
"btn-primary" if day_mode == constants.BY_DAY else "btn-secondary"
|
|
)
|
|
|
|
def _get_settings_container(oob):
|
|
return ("""<div id="settings-container">""" if not oob
|
|
else """<div id="settings-container" hx-swap-oob="true">""") + "%s</div>"
|
|
|
|
def get_settings_with_id(day_mode, oob = False):
|
|
return _get_settings_container(oob) % get_settings(day_mode)
|
|
|
|
def get_settings(day_mode):
|
|
return get_byweek_settings() if day_mode == constants.BY_WEEK else "WIP"
|
|
|
|
def get_byweek_settings():
|
|
return _by_week_content % get_byweek_settings_content()
|
|
|
|
def get_byweek_settings_content():
|
|
content = ""
|
|
i = 0
|
|
for setting in globals.by_week_settings:
|
|
content += _format_edit_line(setting.time.format(), setting.temp, i)
|
|
i += 1
|
|
|
|
return content |