Skip to content

Commit

Permalink
Templates: replace validvalues with choice (#17944)
Browse files Browse the repository at this point in the history
  • Loading branch information
andig authored Dec 31, 2024
1 parent c52ed59 commit a558aa2
Show file tree
Hide file tree
Showing 30 changed files with 78 additions and 58 deletions.
8 changes: 4 additions & 4 deletions assets/js/components/Config/Modbus.vue
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,9 @@
<PropertyField
id="modbusBaudrate"
property="baudrate"
type="Int"
type="Choice"
class="me-2 w-50"
:valid-values="baudrateOptions"
:choice="baudrateOptions"
required
:model-value="baudrate || defaultBaudrate"
@change="$emit('update:baudrate', $event.target.value)"
Expand All @@ -128,9 +128,9 @@
<PropertyField
id="modbusComset"
property="comset"
type="String"
type="Choice"
class="me-2 w-50"
:valid-values="comsetOptions"
:choice="comsetOptions"
required
:model-value="comset || defaultComset || '8N1'"
@change="$emit('update:comset', $event.target.value)"
Expand Down
4 changes: 2 additions & 2 deletions assets/js/components/Config/PropertyEntry.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
:type="Type"
class="me-2"
:required="Required"
:validValues="ValidValues"
:choice="Choice"
/>
</FormRow>
</template>
Expand All @@ -36,7 +36,7 @@ export default {
Example: String,
Type: String,
Mask: Boolean,
ValidValues: Array,
Choice: Array,
modelValue: [String, Number, Boolean, Object],
},
emits: ["update:modelValue"],
Expand Down
10 changes: 5 additions & 5 deletions assets/js/components/Config/PropertyField.vue
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ export default {
size: String,
scale: Number,
required: Boolean,
validValues: { type: Array, default: () => [] },
choice: { type: Array, default: () => [] },
modelValue: [String, Number, Boolean, Object],
},
emits: ["update:modelValue"],
Expand Down Expand Up @@ -171,15 +171,15 @@ export default {
return this.type === "List";
},
select() {
return this.validValues.length > 0;
return this.choice.length > 0;
},
selectOptions() {
// If the valid values are already in the correct format, return them
if (typeof this.validValues[0] === "object") {
return this.validValues;
if (typeof this.choice[0] === "object") {
return this.choice;
}
let values = [...this.validValues];
let values = [...this.choice];
if (this.icons && !this.required) {
values = ["", ...values];
Expand Down
16 changes: 11 additions & 5 deletions assets/js/components/Config/VehicleModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@
<PropertyField
id="vehicleParamMode"
v-model="values.mode"
type="String"
type="Choice"
class="w-100"
:valid-values="[
:choice="[
{ key: 'off', name: $t('main.mode.off') },
{ key: 'pv', name: $t('main.mode.pv') },
{ key: 'minpv', name: $t('main.mode.minpv') },
Expand Down Expand Up @@ -177,10 +177,10 @@
<PropertyField
id="vehicleParamPriority"
v-model="values.priority"
type="Int"
type="Choice"
size="w-100"
class="me-2"
:valid-values="priorityOptions"
:choice="priorityOptions"
required
/>
</FormRow>
Expand Down Expand Up @@ -313,7 +313,7 @@ export default {
};
},
templateParams() {
return (this.template?.Params || [])
const params = (this.template?.Params || [])
.filter((p) => !CUSTOM_FIELDS.includes(p.Name))
.map((p) => {
if (p.Name === "title" || p.Name === "icon") {
Expand All @@ -322,6 +322,12 @@ export default {
}
return p;
});
// always start with title and icon field
const order = { title: -2, icon: -1 };
params.sort((a, b) => (order[a.Name] || 0) - (order[b.Name] || 0));
return params;
},
normalParams() {
return this.templateParams.filter((p) => !p.Advanced);
Expand Down
2 changes: 1 addition & 1 deletion assets/js/components/SelectGroup.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export default {
props: {
id: String,
options: Array,
modelValue: [Number, String],
modelValue: [Number, String, Boolean],
equalWidth: Boolean,
large: Boolean,
transparent: Boolean,
Expand Down
2 changes: 1 addition & 1 deletion cmd/configure/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ func (c *CmdConfigure) processInputConfig(param templates.Param) string {
exampleValue: param.Example,
help: param.Help.ShortString(c.lang),
valueType: param.Type,
validValues: param.ValidValues,
choice: param.Choice,
mask: param.IsMasked(),
required: param.IsRequired(),
})
Expand Down
18 changes: 9 additions & 9 deletions cmd/configure/survey.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ type question struct {
label, help string
defaultValue, exampleValue string
invalidValues []string
validValues []string
choice []string
valueType templates.ParamType
minNumberValue, maxNumberValue int64
mask, required bool
Expand All @@ -130,11 +130,11 @@ func (c *CmdConfigure) askParam(p templates.Param) string {
}

return c.askValue(question{
label: p.Description.String(c.lang),
valueType: p.Type,
validValues: p.Choice, // TODO proper choice handling
mask: mask,
required: required,
label: p.Description.String(c.lang),
valueType: p.Type,
choice: p.Choice,
mask: mask,
required: required,
})
}

Expand All @@ -155,8 +155,8 @@ func (c *CmdConfigure) askValue(q question) string {

if q.valueType == templates.TypeChoice {
label := strings.TrimSpace(strings.Join([]string{q.label, c.localizedString("Value_Choice")}, " "))
idx, _ := c.askChoice(label, q.validValues)
return q.validValues[idx]
idx, _ := c.askChoice(label, q.choice)
return q.choice[idx]
}

if q.valueType == templates.TypeChargeModes {
Expand All @@ -181,7 +181,7 @@ func (c *CmdConfigure) askValue(q question) string {
return errors.New(c.localizedString("ValueError_Used"))
}

if q.validValues != nil && !slices.Contains(q.validValues, value) {
if q.choice != nil && !slices.Contains(q.choice, value) {
return errors.New(c.localizedString("ValueError_Invalid"))
}

Expand Down
3 changes: 2 additions & 1 deletion templates/definition/charger/demo-charger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ params:
description:
de: Ladezustand
en: Charge status
validvalues: [A, B, C, D, E, F]
type: choice
choice: [A, B, C, D, E, F]
default: A
- name: power
description:
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/charger/stiebel-lwa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ params:
- name: modbus
choice: ["tcpip"]
- name: tempsource
validvalues: ["", "warmwater"]
type: choice
choice: ["", "warmwater"]
description:
de: "Temperaturquelle"
en: "Temperature source"
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/charger/stiebel-wpm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ params:
- name: modbus
choice: ["tcpip"]
- name: tempsource
validvalues: ["", "warmwater", "buffer"]
type: choice
choice: ["", "warmwater", "buffer"]
description:
de: "Temperaturquelle"
en: "Temperature source"
Expand Down
5 changes: 2 additions & 3 deletions templates/definition/meter/goodwe-hybrid.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@ params:
id: 247
- name: battery
default: 1
validvalues:
- 1
- 2
type: choice
choice: [1, 2]
- name: capacity
advanced: true
- name: maxacpower
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/meter/kostal-plenticore-gen2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ params:
description:
de: Byte-Reihenfolge (Little/Big)
en: Endianness (Little/Big)
validvalues: ["big", "little"]
type: choice
choice: ["little", "big"]
default: little
advanced: true
- name: capacity
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/meter/kostal-plenticore.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ params:
description:
de: Byte-Reihenfolge (Little/Big)
en: Endianness (Little/Big)
validvalues: ["big", "little"]
type: choice
choice: ["little", "big"]
default: little
advanced: true
- name: capacity
Expand Down
4 changes: 1 addition & 3 deletions templates/definition/meter/senec-home.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ params:
- name: host
- name: schema
type: choice
validvalues:
- https
- http
choice: ["https", "http"]
default: https
- name: capacity
advanced: true
Expand Down
2 changes: 1 addition & 1 deletion templates/definition/meter/zendure.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ params:
en: "You can find this in the Zendure App in the settings of the device"
- name: region
type: choice
choice: ["EU", "Global"]
default: EU
validvalues: ["EU", "Global"]
- name: capacity
default: 2
advanced: true
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/tariff/awattar.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ group: price
params:
- name: region
example: AT
validvalues: ["DE", "AT"]
type: choice
choice: ["DE", "AT"]
- preset: tariff-base
render: |
type: awattar
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/tariff/elering.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ group: price
params:
- name: region
example: ee
validvalues: ["ee", "lt", "lv", "fi"]
type: choice
choice: ["ee", "lt", "lv", "fi"]
- preset: tariff-base
render: |
type: elering
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/tariff/energinet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ group: price
params:
- name: region
example: dk1
validvalues: ["dk1", "dk2"]
type: choice
choice: ["dk1", "dk2"]
- preset: tariff-base
render: |
type: energinet
Expand Down
4 changes: 2 additions & 2 deletions templates/definition/tariff/energy-charts-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ requirements:
group: price
params:
- name: bzn
type: string
type: choice
required: true
validvalues:
choice:
[
"AT",
"BE",
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/tariff/enever.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ params:
- name: token
required: true
- name: provider
validvalues:
type: choice
choice:
[
"",
"AA",
Expand Down
6 changes: 4 additions & 2 deletions templates/definition/tariff/nordpool.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ group: price
params:
- name: region
example: GER
validvalues:
type: choice
choice:
[
"EE",
"LT",
Expand Down Expand Up @@ -38,7 +39,8 @@ params:
]
- name: currency
default: EUR
validvalues: ["DKK", "EUR", "NOK", "PLN", "RON", "SEK"]
type: choice
choice: ["DKK", "EUR", "NOK", "PLN", "RON", "SEK"]
- preset: tariff-base
render: |
type: custom
Expand Down
4 changes: 2 additions & 2 deletions templates/definition/tariff/octopus-productcode.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ params:
de: "Der Tarifcode für Ihren Energievertrag. Stellen Sie sicher, dass dieser auf Ihren Importtarifcode eingestellt ist."
en: "The tariff code for your energy contract. Make sure this is set to your import tariff code."
- name: region
type: string
validvalues: ["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P"]
type: choice
choice: ["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P"]
required: true
help:
de: "Die DNO-Region, in der Sie sich befinden. Weitere Informationen: https://www.energy-stats.uk/dno-region-codes-explained/"
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/tariff/spottyenergy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ params:
en: "You can get your contract id from the customer portal https://i.spottyenergie.at/"
- name: pricetype
default: CONSUMPTION
validvalues: ["MARKET", "CONSUMPTION", "GENERATION"]
type: choice
choice: ["MARKET", "CONSUMPTION", "GENERATION"]
required: true
help:
de: "Preistyp, entweder Börsenpreis, Verbrauchspreis oder Einspeisevergütung (falls vereinbart), siehe https://www.spottyenergie.at/blog/energie-smart-produzieren"
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/vehicle/bmw.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ params:
description:
de: Region
en: Region
validvalues: ["NA", "EU"]
type: choice
choice: ["EU", "NA"]
default: EU
advanced: true
- name: hcaptcha
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/vehicle/ford.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ params:
- name: vin
example: WF0FXX...
- name: domain
type: choice
choice: ["com", "de"]
default: com
validvalues: ["de", "com"]
render: |
type: ford
{{ include "vehicle-base" . }}
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/vehicle/mercedes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ params:
required: true
- name: region
required: true
validvalues: [EMEA, APAC, NORAM]
type: choice
choice: ["EMEA", "APAC", "NORAM"]
default: EMEA
- name: accessToken
required: true
Expand Down
3 changes: 2 additions & 1 deletion templates/definition/vehicle/mg.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ params:
description:
de: Region
en: Region
validvalues: ["EU", "AU"]
type: choice
choice: ["EU", "AU"]
default: EU
advanced: true
render: |
Expand Down
Loading

0 comments on commit a558aa2

Please sign in to comment.