Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Templates: replace validvalues with choice #17944

Merged
merged 9 commits into from
Dec 31, 2024
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 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
Loading