Set default clock alarm time and gate alarm time field by visibility
This commit is contained in:
@@ -120,7 +120,7 @@
|
|||||||
"use24Hour": false,
|
"use24Hour": false,
|
||||||
"topOfHourAnnounce": true,
|
"topOfHourAnnounce": true,
|
||||||
"alarmEnabled": false,
|
"alarmEnabled": false,
|
||||||
"alarmTime": ""
|
"alarmTime": "12:00 AM"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -137,7 +137,8 @@
|
|||||||
- `use24Hour`: boolean (or `on/off` in updates), default `false`.
|
- `use24Hour`: boolean (or `on/off` in updates), default `false`.
|
||||||
- `topOfHourAnnounce`: boolean (or `on/off` in updates), default `true`.
|
- `topOfHourAnnounce`: boolean (or `on/off` in updates), default `true`.
|
||||||
- `alarmEnabled`: boolean (or `on/off` in updates), default `false`.
|
- `alarmEnabled`: boolean (or `on/off` in updates), default `false`.
|
||||||
- `alarmTime`: blank when unset; when set, accepts `HH:MM` (24-hour mode) or `H:MM AM/PM` (12-hour mode).
|
- `alarmTime`: default `12:00 AM`; accepts `HH:MM` (24-hour mode) or `H:MM AM/PM` (12-hour mode).
|
||||||
|
- UI visibility: `alarmTime` is shown only when `alarmEnabled=true` (`visibleWhen` metadata).
|
||||||
- Global defaults: `useSound=none`, `emitSound=sounds/clock.ogg`.
|
- Global defaults: `useSound=none`, `emitSound=sounds/clock.ogg`.
|
||||||
- Clock speech announcement audio is emitted via `item_clock_announce` packets using `/sounds/clock/el640/*.ogg`.
|
- Clock speech announcement audio is emitted via `item_clock_announce` packets using `/sounds/clock/el640/*.ogg`.
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ This is behavior-focused documentation for item types and their defaults.
|
|||||||
- `use24Hour=false`
|
- `use24Hour=false`
|
||||||
- `topOfHourAnnounce=true`
|
- `topOfHourAnnounce=true`
|
||||||
- `alarmEnabled=false`
|
- `alarmEnabled=false`
|
||||||
- `alarmTime=""`
|
- `alarmTime="12:00 AM"`
|
||||||
- Global:
|
- Global:
|
||||||
- `useSound=none`
|
- `useSound=none`
|
||||||
- `emitSound=sounds/clock.ogg`
|
- `emitSound=sounds/clock.ogg`
|
||||||
@@ -121,6 +121,7 @@ This is behavior-focused documentation for item types and their defaults.
|
|||||||
- `topOfHourAnnounce`: boolean or on/off style input
|
- `topOfHourAnnounce`: boolean or on/off style input
|
||||||
- `alarmEnabled`: boolean or on/off style input
|
- `alarmEnabled`: boolean or on/off style input
|
||||||
- `alarmTime`: `HH:MM` when `use24Hour=true`, otherwise `H:MM AM/PM`
|
- `alarmTime`: `HH:MM` when `use24Hour=true`, otherwise `H:MM AM/PM`
|
||||||
|
- Visible only when `alarmEnabled=true` (`visibleWhen: {"alarmEnabled": true}`)
|
||||||
|
|
||||||
### Audio
|
### Audio
|
||||||
- Spoken clock assets live under `client/public/sounds/clock/el640/`.
|
- Spoken clock assets live under `client/public/sounds/clock/el640/`.
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ DEFAULT_PARAMS: dict = {
|
|||||||
"use24Hour": False,
|
"use24Hour": False,
|
||||||
"topOfHourAnnounce": True,
|
"topOfHourAnnounce": True,
|
||||||
"alarmEnabled": False,
|
"alarmEnabled": False,
|
||||||
"alarmTime": "",
|
"alarmTime": "12:00 AM",
|
||||||
}
|
}
|
||||||
PARAM_KEYS: tuple[str, ...] = ("timeZone", "use24Hour", "topOfHourAnnounce", "alarmEnabled", "alarmTime")
|
PARAM_KEYS: tuple[str, ...] = ("timeZone", "use24Hour", "topOfHourAnnounce", "alarmEnabled", "alarmTime")
|
||||||
|
|
||||||
@@ -81,5 +81,6 @@ PROPERTY_METADATA: dict[str, dict[str, object]] = {
|
|||||||
"valueType": "text",
|
"valueType": "text",
|
||||||
"tooltip": "Alarm time. Uses 24-hour HH:MM when 24 hour format is on, otherwise H:MM AM/PM.",
|
"tooltip": "Alarm time. Uses 24-hour HH:MM when 24 hour format is on, otherwise H:MM AM/PM.",
|
||||||
"maxLength": 8,
|
"maxLength": 8,
|
||||||
|
"visibleWhen": {"alarmEnabled": True},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -286,8 +286,9 @@ async def test_clock_timezone_update_validates(monkeypatch: pytest.MonkeyPatch)
|
|||||||
client,
|
client,
|
||||||
json.dumps({"type": "item_update", "itemId": item.id, "params": {"alarmEnabled": True}}),
|
json.dumps({"type": "item_update", "itemId": item.id, "params": {"alarmEnabled": True}}),
|
||||||
)
|
)
|
||||||
assert send_payloads[-1].ok is False
|
assert send_payloads[-1].ok is True
|
||||||
assert "alarmtime must be a valid time" in send_payloads[-1].message.lower()
|
assert item.params.get("alarmEnabled") is True
|
||||||
|
assert item.params.get("alarmTime") == "12:00 AM"
|
||||||
|
|
||||||
await server._handle_message(
|
await server._handle_message(
|
||||||
client,
|
client,
|
||||||
|
|||||||
Reference in New Issue
Block a user