Skip to content

Commit f6a5d37

Browse files
farmioclaude
andauthored
Adapt validation error format for probatio backend (#410)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent a23c08a commit f6a5d37

10 files changed

Lines changed: 34 additions & 28 deletions

src/components/knx-configure-entity-options.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@ export const renderConfigureEntityCard = (
3333
<p class="card-content">${localizeFunction("entity.description")}</p>
3434
${errors
3535
? entityBaseError
36-
? html`<ha-alert
37-
.alertType=${"error"}
38-
.title=${entityBaseError.error_message}
39-
></ha-alert>`
36+
? html`<ha-alert .alertType=${"error"} .title=${entityBaseError.message}></ha-alert>`
4037
: nothing
4138
: nothing}
4239
<ha-expansion-panel

src/components/knx-configure-entity.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export class KNXConfigureEntity extends LitElement {
8585
</h1>
8686
<p>${this._backendLocalize("description")}</p>
8787
</div>
88+
<slot name="knx-validation-error"></slot>
8889
<ha-card outlined>
8990
<h1 class="card-header">${this._backendLocalize("knx.title")}</h1>
9091
<knx-form
@@ -151,6 +152,10 @@ export class KNXConfigureEntity extends LitElement {
151152
}
152153
}
153154
155+
::slotted(ha-alert) {
156+
margin-top: 0 !important;
157+
}
158+
154159
ha-card {
155160
margin-bottom: 24px;
156161
padding: 16px;

src/components/knx-form.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class KnxForm extends LitElement {
6262

6363
return html`
6464
${baseError
65-
? html`<ha-alert .alertType=${"error"} .title=${baseError.error_message}></ha-alert>`
65+
? html`<ha-alert .alertType=${"error"} .title=${baseError.message}></ha-alert>`
6666
: nothing}
6767
${this._generateItems(this.schema, ROOT_PATH, this.validationErrors)}
6868
`;
@@ -251,7 +251,7 @@ export class KnxForm extends LitElement {
251251
>
252252
${sectionBaseError
253253
? html` <ha-alert .alertType=${"error"} .title=${"Validation error"}>
254-
${sectionBaseError.error_message}
254+
${sectionBaseError.message}
255255
</ha-alert>`
256256
: nothing}
257257
${this._generateItems(section.schema, path, errors)}
@@ -295,7 +295,7 @@ export class KnxForm extends LitElement {
295295
>
296296
${sectionBaseError
297297
? html` <ha-alert .alertType=${"error"} .title=${"Validation error"}>
298-
${sectionBaseError.error_message}
298+
${sectionBaseError.message}
299299
</ha-alert>`
300300
: nothing}
301301
<ha-control-select

src/components/knx-group-address-selector.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ export class GroupAddressSelector extends LitElement {
195195
? html`<p class="error">
196196
<ha-svg-icon .path=${mdiAlertCircleOutline}></ha-svg-icon>
197197
<b>Validation error:</b>
198-
${generalValidationError.error_message}
198+
${generalValidationError.message}
199199
</p>`
200200
: nothing}
201201
<div class="main">
@@ -212,7 +212,7 @@ export class GroupAddressSelector extends LitElement {
212212
.groupAddresses=${this.filteredGroupAddresses}
213213
.key=${"write"}
214214
.value=${this.config.write ?? undefined}
215-
.invalidMessage=${getValidationError(this.validationErrors, "write")?.error_message}
215+
.invalidMessage=${getValidationError(this.validationErrors, "write")?.message}
216216
.hintMessage=${this._isGaDptMismatch(this.config.write)
217217
? this._dptMismatchMessage(this.config.write)
218218
: undefined}
@@ -233,7 +233,7 @@ export class GroupAddressSelector extends LitElement {
233233
.groupAddresses=${this.filteredGroupAddresses}
234234
.key=${"state"}
235235
.value=${this.config.state ?? undefined}
236-
.invalidMessage=${getValidationError(this.validationErrors, "state")?.error_message}
236+
.invalidMessage=${getValidationError(this.validationErrors, "state")?.message}
237237
.hintMessage=${this._isGaDptMismatch(this.config.state)
238238
? this._dptMismatchMessage(this.config.state)
239239
: undefined}
@@ -264,7 +264,7 @@ export class GroupAddressSelector extends LitElement {
264264
.key=${"passive"}
265265
.index=${index}
266266
.value=${ga ?? undefined}
267-
.invalidMessage=${passiveErr?.error_message}
267+
.invalidMessage=${passiveErr?.message}
268268
.hintMessage=${this._isGaDptMismatch(ga)
269269
? this._dptMismatchMessage(ga)
270270
: undefined}
@@ -317,7 +317,7 @@ export class GroupAddressSelector extends LitElement {
317317
.value=${this._selectedDPTValue}
318318
.disabled=${this.dptSelectorDisabled}
319319
.invalid=${!!invalid}
320-
.invalidMessage=${invalid?.error_message}
320+
.invalidMessage=${invalid?.message}
321321
.localizeValue=${this.localizeFunction}
322322
.translation_key=${this.key}
323323
@value-changed=${this._valueChanged}
@@ -335,7 +335,7 @@ export class GroupAddressSelector extends LitElement {
335335
.value=${this._selectedDPTValue}
336336
.disabled=${this.dptSelectorDisabled}
337337
.invalid=${!!invalid}
338-
.invalidMessage=${invalid?.error_message}
338+
.invalidMessage=${invalid?.message}
339339
.translation_key=${this.key}
340340
@value-changed=${this._valueChanged}
341341
>

src/components/knx-payload-selector.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ export class KnxPayloadSelector extends LitElement {
168168
@value-changed=${this._modeChanged}
169169
></ha-control-select>
170170
${this._mode === "raw" ? this._renderRawMode() : this._renderTypedModeOrRawFallback(dptMeta)}
171-
${invalid ? html`<p class="invalid-message">${invalid.error_message}</p>` : nothing}
171+
${invalid ? html`<p class="invalid-message">${invalid.message}</p>` : nothing}
172172
`;
173173
}
174174

src/components/knx-selector-row.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export class KnxSelectorRow extends LitElement {
119119
? nothing
120120
: haSelector}
121121
${this._enabled ? html`<slot></slot>` : nothing}
122-
${invalid ? html`<p class="invalid-message">${invalid.error_message}</p>` : nothing}
122+
${invalid ? html`<p class="invalid-message">${invalid.message}</p>` : nothing}
123123
`;
124124
}
125125

src/dialogs/knx-time-server-dialog.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export class KnxTimeServerDialog extends DialogMixin<KnxTimeServerDialogParams>(
7777
.catch((err) => {
7878
logger.error("updateTimeServerConfig error", err);
7979
// show as general error in validation area
80-
this._errors = [{ path: [], error_message: String(err), error_class: "exception" }];
80+
this._errors = [{ path: [], message: String(err), code: "exception" }];
8181
});
8282
}
8383

@@ -144,9 +144,7 @@ export class KnxTimeServerDialog extends DialogMixin<KnxTimeServerDialogParams>(
144144
private _renderContent(): TemplateResult {
145145
const baseError = getValidationError(this._errors);
146146
return html`
147-
${baseError
148-
? html`<ha-alert alert-type="error"> ${baseError.error_message} </ha-alert>`
149-
: nothing}
147+
${baseError ? html`<ha-alert alert-type="error"> ${baseError.message} </ha-alert>` : nothing}
150148
151149
<knx-group-address-selector
152150
.knx=${this.knx}

src/types/entity_data.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,12 @@ export interface DeviceCreateData {
4040

4141
export interface ErrorDescription {
4242
path: string[] | null;
43-
error_message: string;
44-
error_class: string;
43+
message: string;
44+
code: string | null;
45+
translation_key?: string | null;
46+
placeholders?: Record<string, unknown>;
47+
context?: Record<string, unknown>;
48+
secret?: boolean;
4549
}
4650

4751
export type CreateEntityResult =

src/views/entities_create.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,6 @@ export class KNXCreateEntity extends LitElement {
293293
></ha-icon-button>
294294
<div class="content">
295295
<div class="entity-config ${this._mode === "yaml" ? "yaml-mode" : ""}">
296-
${this._renderValidationAlert()}
297296
${this._mode === "gui"
298297
? html`
299298
<knx-configure-entity
@@ -304,9 +303,12 @@ export class KNXCreateEntity extends LitElement {
304303
.schema=${schema}
305304
.validationErrors=${this._validationErrors}
306305
@knx-entity-configuration-changed=${this._configChanged}
307-
></knx-configure-entity>
306+
>
307+
${this._renderValidationAlert()}
308+
</knx-configure-entity>
308309
`
309310
: html`
311+
${this._renderValidationAlert()}
310312
<ha-yaml-editor
311313
.defaultValue=${this._config}
312314
@value-changed=${this._yamlChanged}
@@ -345,13 +347,13 @@ export class KNXCreateEntity extends LitElement {
345347
if (!this._validationBaseError) {
346348
return nothing;
347349
}
348-
return html`<ha-alert alert-type="error">
350+
return html`<ha-alert slot="knx-validation-error" alert-type="error">
349351
<details>
350352
<summary><b>Validation error</b></summary>
351353
<p>Base error: ${this._validationBaseError}</p>
352354
${this._validationErrors?.map(
353355
(err) =>
354-
html`<p>${err.error_class}: ${err.error_message} in ${err.path?.join(" / ")}</p>`,
356+
html`<p>${err.code ?? "invalid"}: ${err.message} in ${err.path?.join(" / ")}</p>`,
355357
) ?? nothing}
356358
</details>
357359
</ha-alert>`;

src/views/expose_create.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ export class KNXCreateExpose extends LitElement {
450450
${this._validationErrors?.map(
451451
(err) =>
452452
html`<p>
453-
${err.error_class}: ${err.error_message}
453+
${err.code ?? "invalid"}: ${err.message}
454454
${err.path ? "in " + err.path.join(" / ") : ""}
455455
</p>`,
456456
) ?? nothing}
@@ -594,7 +594,7 @@ export class KNXCreateExpose extends LitElement {
594594
: nothing}
595595
<div class="panel-content">
596596
${optionError
597-
? html` <ha-alert alert-type="error">${optionError.error_message}</ha-alert> `
597+
? html` <ha-alert alert-type="error">${optionError.message}</ha-alert> `
598598
: nothing}
599599
<ha-entity-attribute-picker
600600
data-idx=${idx}
@@ -611,7 +611,7 @@ export class KNXCreateExpose extends LitElement {
611611
@value-changed=${this._updateExposeOptionAtIndex}
612612
></ha-entity-attribute-picker>
613613
${attributeError
614-
? html` <ha-alert alert-type="error">${attributeError.error_message}</ha-alert> `
614+
? html` <ha-alert alert-type="error">${attributeError.message}</ha-alert> `
615615
: nothing}
616616
<knx-group-address-selector
617617
data-idx=${idx}

0 commit comments

Comments
 (0)