prettier names in mesh view

This commit is contained in:
Laura Klünder 2023-10-20 15:04:36 +02:00
parent 6a35c6767b
commit 7f7ea64fd3
6 changed files with 33 additions and 14 deletions

View file

@ -42,8 +42,8 @@
<h4>Hardware</h4> <h4>Hardware</h4>
<p> <p>
<strong>Board:</strong> {{ node.last_messages.CONFIG_BOARD.parsed.board_config.board.name }} <strong>Board:</strong> {{ node.last_messages.CONFIG_BOARD.parsed.board_config.board.pretty_name }}
(with {{ node.last_messages.CONFIG_HARDWARE.parsed.chip.name }} rev{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_major }}.{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_minor }}) (with {{ node.last_messages.CONFIG_HARDWARE.parsed.chip.pretty_name }} rev{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_major }}.{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_minor }})
{% if node.last_messages.CONFIG_BOARD.parsed.led %} {% if node.last_messages.CONFIG_BOARD.parsed.led %}
<br> <br>

View file

@ -18,7 +18,7 @@
<select name="send_msg_type" style="display: inline-block; width: auto;" required> <select name="send_msg_type" style="display: inline-block; width: auto;" required>
<option value="">select type</option> <option value="">select type</option>
{% for msg_type in send_msg_types %} {% for msg_type in send_msg_types %}
<option value="{{ msg_type }}">{{ msg_type }}</option> <option value="{{ msg_type.name }}">{{ msg_type.pretty_name }}</option>
{% endfor %} {% endfor %}
</select> </select>
<button type="submit">{% trans 'Send message' %}</button> <button type="submit">{% trans 'Send message' %}</button>
@ -45,8 +45,8 @@
<tr> <tr>
<td><a href="{% url "control.mesh.node.detail" pk=node.address %}">{{ node }}</a></td> <td><a href="{% url "control.mesh.node.detail" pk=node.address %}">{{ node }}</a></td>
<td> <td>
{{ node.last_messages.CONFIG_BOARD.parsed.board_config.board.name }} {{ node.last_messages.CONFIG_BOARD.parsed.board_config.board.pretty_name }}
({{ node.last_messages.CONFIG_HARDWARE.parsed.get_chip_display }} <small>rev{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_major }}.{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_minor }}</small>) ({{ node.last_messages.CONFIG_HARDWARE.parsed.chip.pretty_name }} <small>rev{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_major }}.{{ node.last_messages.CONFIG_HARDWARE.parsed.revision_minor }}</small>)
</td> </td>
<td> <td>
{{ node.last_messages.CONFIG_FIRMWARE.parsed.app_desc.version }} {{ node.last_messages.CONFIG_FIRMWARE.parsed.app_desc.version }}

View file

@ -30,7 +30,7 @@ class MeshNodeListView(ControlPanelMixin, ListView):
def get_context_data(self, *args, **kwargs): def get_context_data(self, *args, **kwargs):
return { return {
**super().get_context_data(*args, **kwargs), **super().get_context_data(*args, **kwargs),
"send_msg_types": [msg_type.name for msg_type in MeshMessageForm.msg_types.keys()], "send_msg_types": {msg_type for msg_type in MeshMessageForm.msg_types.keys()}
} }
def post(self, request): def post(self, request):

View file

@ -1,3 +1,4 @@
import re
from dataclasses import dataclass, field from dataclasses import dataclass, field
from enum import IntEnum, unique from enum import IntEnum, unique
@ -21,6 +22,10 @@ class LedType(IntEnum):
SERIAL = 1 SERIAL = 1
MULTIPIN = 2 MULTIPIN = 2
@property
def pretty_name(self):
return self.name.lower()
@unique @unique
class SerialLedType(IntEnum): class SerialLedType(IntEnum):
@ -83,6 +88,18 @@ class BoardType(IntEnum):
C3NAV_LOCATION_PCB_REV_0_1 = 0x11 C3NAV_LOCATION_PCB_REV_0_1 = 0x11
C3NAV_LOCATION_PCB_REV_0_2 = 0x12 C3NAV_LOCATION_PCB_REV_0_2 = 0x12
@property
def pretty_name(self):
if self.name.startswith('ESP32'):
return self.name.replace('_', '-').replace('DEVKIT-', 'DevKit')
if self.name.startswith('C3NAV'):
name = self.name.replace('_', ' ').lower()
name = name.replace('uwb', 'UWB').replace('pcb', 'PCB')
name = re.sub(r'[0-9]+( [0-9+])+', lambda s: s[0].replace(' ', '.'), name)
name = re.sub(r'rev.*', lambda s: s[0].replace(' ', ''), name)
return name
return self.name
@dataclass @dataclass
class BoardConfig(StructType, union_type_field="board"): class BoardConfig(StructType, union_type_field="board"):

View file

@ -124,9 +124,9 @@ class ConfigBoardMessageForm(MeshMessageForm):
msg_type = MeshMessageType.CONFIG_BOARD msg_type = MeshMessageType.CONFIG_BOARD
# todo: don't use numerical values # todo: don't use numerical values
board = forms.ChoiceField(choices=((item.name, item.name) for item in BoardType), board = forms.ChoiceField(choices=((item.name, item.pretty_name) for item in BoardType),
label=_('board')) label=_('board'))
led_type = forms.ChoiceField(choices=((item.name, item.name) for item in LedType), led_type = forms.ChoiceField(choices=((item.name, item.pretty_name) for item in LedType),
label=_('LED type')) label=_('LED type'))
led_serial_type = forms.ChoiceField(choices=((item.name, item.name) for item in SerialLedType), led_serial_type = forms.ChoiceField(choices=((item.name, item.name) for item in SerialLedType),
label=_('serial LED type'), help_text=_('serial LED only')) label=_('serial LED type'), help_text=_('serial LED only'))

View file

@ -45,6 +45,10 @@ class MeshMessageType(IntEnum):
LOCATE_REQUEST_RANGE = 0x20 LOCATE_REQUEST_RANGE = 0x20
LOCATE_RANGE_RESULTS = 0x21 LOCATE_RANGE_RESULTS = 0x21
@property
def pretty_name(self):
return self.name.replace('_', ' ').title()
M = TypeVar('M', bound='MeshMessage') M = TypeVar('M', bound='MeshMessage')
@ -54,6 +58,10 @@ class ChipType(IntEnum):
ESP32_S2 = 2 ESP32_S2 = 2
ESP32_C3 = 5 ESP32_C3 = 5
@property
def pretty_name(self):
return self.name.replace('_', '-')
@dataclass @dataclass
class MeshMessage(StructType, union_type_field="msg_id"): class MeshMessage(StructType, union_type_field="msg_id"):
@ -218,12 +226,6 @@ class ConfigHardwareMessage(MeshMessage, msg_id=MeshMessageType.CONFIG_HARDWARE)
return ChipType(self.chip).name.replace('_', '-') return ChipType(self.chip).name.replace('_', '-')
@unique
class BoardType(IntEnum):
SERIAL = 1
MULTIPIN = 2
@dataclass @dataclass
class ConfigBoardMessage(MeshMessage, msg_id=MeshMessageType.CONFIG_BOARD): class ConfigBoardMessage(MeshMessage, msg_id=MeshMessageType.CONFIG_BOARD):
""" set/respond board config """ """ set/respond board config """