This commit is contained in:
Ádám Kovács
2023-11-07 14:00:40 +01:00
parent 36638e2dd1
commit ec52bd7384
7 changed files with 301 additions and 0 deletions

68
components/main.py Normal file
View File

@@ -0,0 +1,68 @@
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 (&deg;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