|
17 | 17 | * Boston, MA 02111-1307, USA.
|
18 | 18 | */
|
19 | 19 |
|
| 20 | +//#include "../../options.inc" |
| 21 | + |
20 | 22 | import * as util from "../../ts/util";
|
21 | 23 | import * as API from "../../ts/api";
|
22 | 24 | import * as options from "../../options";
|
@@ -1001,12 +1003,11 @@ export class Meters extends ConfigComponent<null, MetersProps, MetersState> {
|
1001 | 1003 | onEditGetChildren: () => {
|
1002 | 1004 | let slots: [string, string][] = [];
|
1003 | 1005 | let classes: [string, string][] = [];
|
1004 |
| - const charger_meter_slot = API.get_unchecked("evse/meter_config")?.slot; |
1005 | 1006 |
|
1006 | 1007 | for (let free_meter_slot = 0; free_meter_slot < options.METERS_MAX_SLOTS; ++free_meter_slot) {
|
1007 | 1008 | if (this.state.configs_table[free_meter_slot][0] == MeterClassID.None || free_meter_slot == meter_slot) {
|
1008 | 1009 | let slot_name = free_meter_slot.toString();
|
1009 |
| - if (free_meter_slot === charger_meter_slot) { |
| 1010 | + if (free_meter_slot === this.state.charger_meter_slot) { |
1010 | 1011 | slot_name += " - " + __("meters.content.add_meter_slot_reserved_charger");
|
1011 | 1012 | }
|
1012 | 1013 | slots.push([free_meter_slot.toString(), slot_name]);
|
@@ -1040,7 +1041,28 @@ export class Meters extends ConfigComponent<null, MetersProps, MetersState> {
|
1040 | 1041 | }
|
1041 | 1042 | }
|
1042 | 1043 | }}
|
1043 |
| - value={this.state.edit_meter_config[0].toString()} /> |
| 1044 | + value={this.state.edit_meter_config[0].toString()} |
| 1045 | + className={ |
| 1046 | + // the charger internal meter has to be in the slot the EVSE expects it to be in |
| 1047 | +//#if OPTIONS_PRODUCT_ID_IS_WARP |
| 1048 | + this.state.edit_meter_slot != this.state.charger_meter_slot |
| 1049 | + && this.state.edit_meter_config[0] == MeterClassID.RS485Bricklet ? "is-invalid" : undefined |
| 1050 | +//#else |
| 1051 | +//#if OPTIONS_PRODUCT_ID_IS_WARP_ANY |
| 1052 | + this.state.edit_meter_slot != this.state.charger_meter_slot |
| 1053 | + && this.state.edit_meter_config[0] == MeterClassID.EVSEV2 ? "is-invalid" : undefined |
| 1054 | +//#else |
| 1055 | + undefined |
| 1056 | +//#endif |
| 1057 | +//#endif |
| 1058 | + } |
| 1059 | + invalidFeedback={ |
| 1060 | +//#if OPTIONS_PRODUCT_ID_IS_WARP_ANY |
| 1061 | + __("meters.content.invalid_slot_for_charger_internal_meter")(this.state.charger_meter_slot) |
| 1062 | +//#else |
| 1063 | + undefined |
| 1064 | +//#endif |
| 1065 | + } /> |
1044 | 1066 | </FormRow>
|
1045 | 1067 | </>]
|
1046 | 1068 |
|
@@ -1085,12 +1107,11 @@ export class Meters extends ConfigComponent<null, MetersProps, MetersState> {
|
1085 | 1107 | onAddGetChildren={() => {
|
1086 | 1108 | let slots: [string, string][] = [];
|
1087 | 1109 | let classes: [string, string][] = [];
|
1088 |
| - const charger_meter_slot = API.get_unchecked("evse/meter_config")?.slot; |
1089 | 1110 |
|
1090 | 1111 | for (let free_meter_slot = 0; free_meter_slot < options.METERS_MAX_SLOTS; ++free_meter_slot) {
|
1091 | 1112 | if (this.state.configs_table[free_meter_slot][0] == MeterClassID.None) {
|
1092 | 1113 | let slot_name = free_meter_slot.toString();
|
1093 |
| - if (free_meter_slot === charger_meter_slot) { |
| 1114 | + if (free_meter_slot === this.state.charger_meter_slot) { |
1094 | 1115 | slot_name += " - " + __("meters.content.add_meter_slot_reserved_charger");
|
1095 | 1116 | }
|
1096 | 1117 | slots.push([free_meter_slot.toString(), slot_name]);
|
@@ -1127,7 +1148,28 @@ export class Meters extends ConfigComponent<null, MetersProps, MetersState> {
|
1127 | 1148 | }
|
1128 | 1149 | }}
|
1129 | 1150 | value={this.state.add_meter_config[0].toString()}
|
1130 |
| - required /> |
| 1151 | + required |
| 1152 | + className={ |
| 1153 | + // the charger internal meter has to be in the slot the EVSE expects it to be in |
| 1154 | +//#if OPTIONS_PRODUCT_ID_IS_WARP |
| 1155 | + this.state.add_meter_slot != this.state.charger_meter_slot |
| 1156 | + && this.state.add_meter_config[0] == MeterClassID.RS485Bricklet ? "is-invalid" : undefined |
| 1157 | +//#else |
| 1158 | +//#if OPTIONS_PRODUCT_ID_IS_WARP_ANY |
| 1159 | + this.state.add_meter_slot != this.state.charger_meter_slot |
| 1160 | + && this.state.add_meter_config[0] == MeterClassID.EVSEV2 ? "is-invalid" : undefined |
| 1161 | +//#else |
| 1162 | + undefined |
| 1163 | +//#endif |
| 1164 | +//#endif |
| 1165 | + } |
| 1166 | + invalidFeedback={ |
| 1167 | +//#if OPTIONS_PRODUCT_ID_IS_WARP_ANY |
| 1168 | + __("meters.content.invalid_slot_for_charger_internal_meter")(this.state.charger_meter_slot) |
| 1169 | +//#else |
| 1170 | + undefined |
| 1171 | +//#endif |
| 1172 | + } /> |
1131 | 1173 | </FormRow>
|
1132 | 1174 | ];
|
1133 | 1175 |
|
|
0 commit comments