Implement --no-click-confirm
This commit is contained in:
@@ -20,8 +20,7 @@ def config_events(
|
||||
click_confirm=click_confirm,
|
||||
))
|
||||
|
||||
if click_confirm:
|
||||
config = deep_merge(config, event_confirm_script())
|
||||
config = deep_merge(config, event_confirm_script(click_confirm=click_confirm))
|
||||
|
||||
return config
|
||||
|
||||
@@ -34,33 +33,42 @@ def events(
|
||||
"button_events": _generate_event_names(page_names, click_types)
|
||||
}
|
||||
}
|
||||
|
||||
event_cpp = ""
|
||||
for event_name in _generate_event_names(page_names, click_types):
|
||||
event_cpp += (
|
||||
f'if(event_type == "{event_name}"){{\n'
|
||||
' // Handle this event locally\n'
|
||||
'}\n'
|
||||
)
|
||||
|
||||
event_dict["event"] = []
|
||||
|
||||
if num_bars < 4:
|
||||
event_dict["event"].extend(_event_display_entry(Side.LEFT))
|
||||
event_dict["event"].extend(_event_display_entry(Side.RIGHT))
|
||||
event_dict["event"].extend(_event_display_entry(Side.LEFT, event_cpp))
|
||||
event_dict["event"].extend(_event_display_entry(Side.RIGHT, event_cpp))
|
||||
|
||||
if num_bars > 0:
|
||||
event_dict["event"].extend(_event_bar_entry(1, Side.LEFT))
|
||||
event_dict["event"].extend(_event_bar_entry(1, Side.RIGHT))
|
||||
event_dict["event"].extend(_event_bar_entry(1, Side.LEFT, event_cpp))
|
||||
event_dict["event"].extend(_event_bar_entry(1, Side.RIGHT, event_cpp))
|
||||
|
||||
if num_bars > 1:
|
||||
event_dict["event"].extend(_event_bar_entry(2, Side.LEFT))
|
||||
event_dict["event"].extend(_event_bar_entry(2, Side.RIGHT))
|
||||
event_dict["event"].extend(_event_bar_entry(2, Side.LEFT, event_cpp))
|
||||
event_dict["event"].extend(_event_bar_entry(2, Side.RIGHT, event_cpp))
|
||||
|
||||
if num_bars > 2:
|
||||
event_dict["event"].extend(_event_bar_entry(3, Side.LEFT))
|
||||
event_dict["event"].extend(_event_bar_entry(3, Side.RIGHT))
|
||||
event_dict["event"].extend(_event_bar_entry(3, Side.LEFT, event_cpp))
|
||||
event_dict["event"].extend(_event_bar_entry(3, Side.RIGHT, event_cpp))
|
||||
|
||||
if num_bars > 3:
|
||||
event_dict["event"].extend(_event_bar_entry(4, Side.LEFT))
|
||||
event_dict["event"].extend(_event_bar_entry(4, Side.RIGHT))
|
||||
event_dict["event"].extend(_event_bar_entry(4, Side.LEFT, event_cpp))
|
||||
event_dict["event"].extend(_event_bar_entry(4, Side.RIGHT, event_cpp))
|
||||
|
||||
return event_dict
|
||||
|
||||
|
||||
def _event_display_entry(display_side: Side) -> List[Dict[str, Any]]:
|
||||
def _event_display_entry(display_side: Side, on_event_cpp: str) -> List[Dict[str, Any]]:
|
||||
|
||||
return [
|
||||
{
|
||||
"platform": "template",
|
||||
@@ -68,11 +76,16 @@ def _event_display_entry(display_side: Side) -> List[Dict[str, Any]]:
|
||||
"name": f"DISPLAY Button {str(display_side).capitalize()}",
|
||||
"device_class": "button",
|
||||
"event_types": r"${button_events}",
|
||||
"on_event": {
|
||||
"then":[
|
||||
{"lambda": on_event_cpp}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
def _event_bar_entry(bar_nr: int, bar_side: Side) -> List[Dict[str, Any]]:
|
||||
def _event_bar_entry(bar_nr: int, bar_side: Side, on_event_cpp: str) -> List[Dict[str, Any]]:
|
||||
return [
|
||||
{
|
||||
"platform": "template",
|
||||
@@ -80,6 +93,11 @@ def _event_bar_entry(bar_nr: int, bar_side: Side) -> List[Dict[str, Any]]:
|
||||
"name": f"BAR {bar_nr} Button {str(bar_side).capitalize()}",
|
||||
"device_class": "button",
|
||||
"event_types": r"${button_events}",
|
||||
"on_event": {
|
||||
"then":[
|
||||
{"lambda": on_event_cpp}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -94,7 +112,21 @@ def _generate_event_names(
|
||||
]
|
||||
|
||||
|
||||
def event_confirm_script() -> Dict[str, Any]:
|
||||
def event_confirm_script(click_confirm: bool) -> Dict[str, Any]:
|
||||
if not click_confirm:
|
||||
return {
|
||||
"script": [
|
||||
{
|
||||
"id": "event_trigger_feedback",
|
||||
"parameters": {
|
||||
"event_id": "esphome::template_::TemplateEvent*",
|
||||
"event_msg": "std::string",
|
||||
},
|
||||
"then": [{"lambda": "event_id->trigger(event_msg);"}],
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
generated_cpp = (
|
||||
"event_id->trigger(event_msg);\n"
|
||||
"\n"
|
||||
@@ -179,8 +211,6 @@ def _bar_button_entry(
|
||||
) -> List[Dict[str, Any]]:
|
||||
multi_click_list = []
|
||||
|
||||
# TODO click_confirm implement
|
||||
|
||||
for ct in click_types:
|
||||
multi_click_list.extend(
|
||||
_timing_entry(
|
||||
@@ -189,6 +219,7 @@ def _bar_button_entry(
|
||||
event_type=ct,
|
||||
timing=click_type_timing(ct),
|
||||
color=click_type_color(ct),
|
||||
confirm=click_confirm
|
||||
)
|
||||
)
|
||||
|
||||
@@ -209,8 +240,6 @@ def _display_button_entry(
|
||||
) -> List[Dict[str, Any]]:
|
||||
multi_click_list = []
|
||||
|
||||
# TODO click_confirm implement
|
||||
|
||||
led_id = display_id(IdSuffix.LED, display_side, Direction.FRONT)
|
||||
|
||||
if version == 1: # No leds
|
||||
@@ -237,6 +266,7 @@ def _display_button_entry(
|
||||
event_type=ct,
|
||||
timing=click_type_timing(ct),
|
||||
color=click_type_color(ct),
|
||||
confirm=click_confirm
|
||||
)
|
||||
)
|
||||
|
||||
@@ -250,8 +280,28 @@ def _display_button_entry(
|
||||
|
||||
|
||||
def _timing_entry(
|
||||
event_id: str, led_id: str, event_type: str, timing: List[str], color: Color
|
||||
event_id: str, led_id: YAMLLambda | str, event_type: str, timing: List[str], color: Color, confirm: bool
|
||||
) -> List[Dict[str, Any]]:
|
||||
if not confirm:
|
||||
return [
|
||||
{
|
||||
"timing": timing,
|
||||
"then": [
|
||||
{
|
||||
"script.execute": {
|
||||
"id": "event_trigger_feedback",
|
||||
"event_id": event_id,
|
||||
"event_msg": YAMLLambda(
|
||||
'return "'
|
||||
+ event_type
|
||||
+ ' " + id(active_page_name);'
|
||||
),
|
||||
}
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
|
||||
return [
|
||||
{
|
||||
"timing": timing,
|
||||
|
||||
Reference in New Issue
Block a user