Skip to content

Commit

Permalink
meters-modbus-tcp: Ensure address mode selection for register additon
Browse files Browse the repository at this point in the history
  • Loading branch information
photron committed May 13, 2024
1 parent 09ad830 commit e4d0223
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,6 @@ function new_table_config(table: MeterModbusTCPTableID): TableConfig {
}

interface RegisterEditorProps {
min_address: number;
table: TableConfigCustom;
on_table: (table: TableConfigCustom) => void;
}
Expand All @@ -164,7 +163,7 @@ class RegisterTable extends Component<RegisterEditorProps, RegisterEditorState>
this.state = {
register: {
register_type: null,
start_address: props.min_address,
start_address: props.table[1].register_address_mode == ModbusRegisterAddressMode.Address ? 0 : 1,
value_type: null,
offset: 0.0,
scale_factor: 1.0,
Expand All @@ -188,11 +187,21 @@ class RegisterTable extends Component<RegisterEditorProps, RegisterEditorState>
this.setState({register: {...this.state.register, register_type: parseInt(v)}});
}} />
</FormRow>,
<FormRow label={__("meters_modbus_tcp.content.registers_start_address")}>
<FormRow
label={
this.props.table[1].register_address_mode == ModbusRegisterAddressMode.Address
? __("meters_modbus_tcp.content.registers_start_address")
: __("meters_modbus_tcp.content.registers_start_number")
}
label_muted={
this.props.table[1].register_address_mode == ModbusRegisterAddressMode.Address
? __("meters_modbus_tcp.content.registers_start_address_muted")
: __("meters_modbus_tcp.content.registers_start_number_muted")
}>
<InputNumber
required
min={this.props.min_address}
max={this.props.min_address + 65535}
min={this.props.table[1].register_address_mode == ModbusRegisterAddressMode.Address ? 0 : 1}
max={(this.props.table[1].register_address_mode == ModbusRegisterAddressMode.Address ? 0 : 1) + 65535}
value={this.state.register.start_address}
onValue={(v) => {
this.setState({register: {...this.state.register, start_address: v}});
Expand Down Expand Up @@ -270,14 +279,18 @@ class RegisterTable extends Component<RegisterEditorProps, RegisterEditorState>
return row
})}
columnNames={[""]}
addEnabled={this.props.table[1].registers.length < MAX_CUSTOM_REGISTERS}
addMessage={__("meters_modbus_tcp.content.registers_add_count")(this.props.table[1].registers.length, MAX_CUSTOM_REGISTERS)}
addEnabled={util.hasValue(this.props.table[1].register_address_mode) && this.props.table[1].registers.length < MAX_CUSTOM_REGISTERS}
addMessage={
util.hasValue(this.props.table[1].register_address_mode)
? __("meters_modbus_tcp.content.registers_add_count")(this.props.table[1].registers.length, MAX_CUSTOM_REGISTERS)
: __("meters_modbus_tcp.content.registers_add_select_address_mode")
}
addTitle={__("meters_modbus_tcp.content.registers_add_title")}
onAddShow={async () => {
this.setState({
register: {
register_type: null,
start_address: this.props.min_address,
start_address: this.props.table[1].register_address_mode == ModbusRegisterAddressMode.Address ? 0 : 1,
value_type: null,
offset: 0.0,
scale_factor: 1.0,
Expand Down Expand Up @@ -451,7 +464,6 @@ export function init() {
</FormRow>,
<FormRow label={__("meters_modbus_tcp.content.registers")}>
<RegisterTable
min_address={config[1].table[1].register_address_mode == ModbusRegisterAddressMode.Number ? 1 : 0}
table={config[1].table}
on_table={(table: TableConfigCustom) => on_config(util.get_updated_union(config, {table: table}))} />
</FormRow>
Expand Down
4 changes: 4 additions & 0 deletions software/web/src/modules/meters_modbus_tcp/translation_de.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,17 @@ let x = {
"registers": "Register",
"registers_add_title": "Register hinzufügen",
"registers_add_count": /*SFN*/(x: number, max: number) => x + " von " + max + " Registern konfiguriert"/*NF*/,
"registers_add_select_address_mode": "Zuerst Adressmodus auswählen...",
"registers_edit_title": "Register bearbeiten",
"registers_register": /*SFN*/(start_address: number, value_id_name: string) => start_address + " als " + value_id_name/*NF*/,
"registers_register_type": "Registertyp",
"registers_register_type_select": "Auswählen...",
"registers_register_type_holding_register": "Holding-Register",
"registers_register_type_input_register": "Input-Register",
"registers_start_address": "Startadresse",
"registers_start_address_muted": "beginnt bei 0",
"registers_start_number": "Startnummer",
"registers_start_number_muted": "beginnt bei 1",
"registers_value_type": "Werttyp",
"registers_value_type_select": "Auswählen...",
"registers_value_type_u16": "Ein Register, 16-Bit, Ganzzahl, vorzeichenlos",
Expand Down
8 changes: 6 additions & 2 deletions software/web/src/modules/meters_modbus_tcp/translation_en.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,22 @@ let x = {
"device_address_muted": /*SFN*/(port: number) => "typically " + port/*NF*/,
"register_address_mode": "Address mode",
"register_address_mode_select": "Select...",
"register_address_mode_address": "Register address (starts at 0)",
"register_address_mode_number": "Register number (starts at 1)",
"register_address_mode_address": "Register address (begins at 0)",
"register_address_mode_number": "Register number (begins at 1)",
"registers": "Registers",
"registers_add_title": "Add register",
"registers_add_count": /*SFN*/(x: number, max: number) => x + " of " + max + " registers configured"/*NF*/,
"registers_add_select_address_mode": "Select address mode first...",
"registers_edit_title": "Edit register",
"registers_register": /*SFN*/(start_address: number, value_id_name: string) => start_address + " as " + value_id_name/*NF*/,
"registers_register_type": "Register type",
"registers_register_type_select": "Select...",
"registers_register_type_holding_register": "Holding register",
"registers_register_type_input_register": "Input register",
"registers_start_address": "Start address",
"registers_start_address_muted": "begins at 0",
"registers_start_number": "Start number",
"registers_start_number_muted": "begins at 1",
"registers_value_type": "Value type",
"registers_value_type_select": "Select...",
"registers_value_type_u16": "One register, 16-bit, integer, unsigned",
Expand Down

0 comments on commit e4d0223

Please sign in to comment.