Base UI
This commit is contained in:
68
components/main.py
Normal file
68
components/main.py
Normal 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 (°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
|
||||
Reference in New Issue
Block a user