Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions haphilipsjs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
MenuItemsSettingsNode,
MenuItemsSettingsStructure,
MenuItemsSettingsUpdate,
MenuItemsSettingsValueData,
MenuItemsSettingsUpdateValueData,
Strings,
StringsRequest,
SystemType,
Expand Down Expand Up @@ -1454,8 +1454,8 @@ async def postMenuItemsSettingsUpdate(self, post: MenuItemsSettingsUpdate, force
if self.json_feature_supported("menuitems", "Setup_Menu") or force:
return await self.postReq("menuitems/settings/update", cast(dict, post))

async def postMenuItemsSettingsUpdateData(self, value: Dict[int, MenuItemsSettingsValueData], force=False):
post = {
async def postMenuItemsSettingsUpdateData(self, value: Dict[int, MenuItemsSettingsUpdateValueData], force=False):
post: MenuItemsSettingsUpdate = {
"values": [
{
"value": {
Expand All @@ -1466,7 +1466,7 @@ async def postMenuItemsSettingsUpdateData(self, value: Dict[int, MenuItemsSettin
for node_id, data in value.items()
]
}
return await self.postMenuItemsSettingsUpdate(cast(MenuItemsSettingsUpdate, post), force=force)
return await self.postMenuItemsSettingsUpdate(post, force=force)


async def notifyChange(self, timeout=TIMEOUT_NOTIFYREAD):
Expand Down
82 changes: 68 additions & 14 deletions haphilipsjs/typing.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Dict, List, Literal, NamedTuple, Optional, Type, TypedDict, Union
from typing import Any, Dict, List, Literal, NamedTuple, Optional, Type, TypedDict, Union, TypeAlias


class ActivitiesChannelType(TypedDict, total=False):
Expand Down Expand Up @@ -302,23 +302,65 @@ class MenuItemsSettingsNodeDataEnumRequired(TypedDict):
class MenuItemsSettingsNodeDataEnum(MenuItemsSettingsNodeDataEnumRequired, total=False):
icon: Optional[str]

class MenuItemsSettingsNodeData(TypedDict, total=False):
nodes: List["MenuItemsSettingsNode"] # PARENT_NODE
enums: List[MenuItemsSettingsNodeDataEnum] # LIST_NODE
slider_data: MenuItemsSettingsNodeDataSliderData # SLIDER_NODE
sliders: List[MenuItemsSettingsNodeDataSlider] # MULTIPLE_SLIDERS
colors: List[int] # WALL_COLOR_NODE

class MenuItemsSettingsNodeRequired(TypedDict):
node_id: int
type: str
data: MenuItemsSettingsNodeData

class MenuItemsSettingsNode(MenuItemsSettingsNodeRequired, total=False):
class MenuItemsSettingsNodeGeneric(MenuItemsSettingsNodeRequired, total=False):
string_id: str
icon: Optional[str]
context: str

class MenuItemsSettingsNodeParentData(TypedDict, total=False):
nodes: List["MenuItemsSettingsNode"]

class MenuItemsSettingsNodeParent(MenuItemsSettingsNodeGeneric):
type: Literal["PARENT_NODE"]
data: MenuItemsSettingsNodeParentData

class MenuItemsSettingsNodeEnumsData(TypedDict):
enums: List[MenuItemsSettingsNodeDataEnum]

class MenuItemsSettingsNodeEnums(MenuItemsSettingsNodeGeneric):
type: Literal["LIST_NODE"]
data: MenuItemsSettingsNodeEnumsData

class MenuItemsSettingsNodeColorsData(TypedDict):
colors: List[int]

class MenuItemsSettingsNodeColors(MenuItemsSettingsNodeGeneric):
type: Union[Literal["WALL_COLOR_NODE"], Literal["COLOR_PICKER_NODE"]]
data: MenuItemsSettingsNodeColorsData

class MenuItemsSettingsNodeSliderData(TypedDict):
slider_data: MenuItemsSettingsNodeDataSliderData

class MenuItemsSettingsNodeSlider(MenuItemsSettingsNodeGeneric):
type: Literal["SLIDER_NODE"]
data: MenuItemsSettingsNodeSliderData

class MenuItemsSettingsNodeMultiSliderData(TypedDict):
sliders: List[MenuItemsSettingsNodeDataSlider]

class MenuItemsSettingsNodeMultiSlider(MenuItemsSettingsNodeGeneric):
type: Literal["MULTIPLE_SLIDER"]
data: MenuItemsSettingsNodeMultiSliderData

class MenuItemsSettingsNodeEmptyData(TypedDict):
pass

class MenuItemsSettingsNodeEntry(MenuItemsSettingsNodeGeneric):
type: Union[Literal["TEXT_ENTRY"], Literal["DATE_PICKER"], Literal["TIME_PICKER"], Literal["TOGGLE_NODE"]]
data: MenuItemsSettingsNodeEmptyData

MenuItemsSettingsNode: TypeAlias = Union[
MenuItemsSettingsNodeParent,
MenuItemsSettingsNodeColors,
MenuItemsSettingsNodeEnums,
MenuItemsSettingsNodeSlider,
MenuItemsSettingsNodeMultiSlider,
MenuItemsSettingsNodeEntry,
]

class MenuItemsSettingsEntry(NamedTuple):
node: MenuItemsSettingsNode
parent: Optional[int]
Expand All @@ -339,16 +381,19 @@ class MenuItemsSettingsValueEnumEntry(TypedDict):
string_id: str

class MenuItemsSettingsValueEnumRequired(TypedDict):
select_item: Optional[int]
selected_item: Optional[int]

class MenuItemsSettingsValueEnum(MenuItemsSettingsValueEnumRequired, total=False):
enum_values: List[MenuItemsSettingsValueEnumEntry]

class MenuItemsSettingsUpdateValueEnum(TypedDict):
select_item: Optional[int]

class MenuItemsSettingsValueNode(TypedDict):
activenode_id: int

class MenuItemsSettingsValueSlider(TypedDict):
slider_id: int
slider_id: str
value: int

class MenuItemsSettingsValueSliders(TypedDict):
Expand Down Expand Up @@ -382,9 +427,18 @@ class MenuItemsSettingsCurrentPostNode(TypedDict):
class MenuItemsSettingsCurrentPost(TypedDict):
nodes: List[MenuItemsSettingsCurrentPostNode]


MenuItemsSettingsUpdateValueData = Union[
MenuItemsSettingsValueInt,
MenuItemsSettingsValueBool,
MenuItemsSettingsUpdateValueEnum,
MenuItemsSettingsValueNode,
MenuItemsSettingsValueSlider
]

class MenuItemsSettingsUpdateValueValue(TypedDict):
Nodeid: int
data: MenuItemsSettingsValueData
data: MenuItemsSettingsUpdateValueData

class MenuItemsSettingsUpdateValue(TypedDict):
value: MenuItemsSettingsUpdateValueValue
Expand Down