mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-25 18:26:35 +00:00
Fix entity id setting on newly created scripts, handle update of enti… (#22272)
Fix entity id setting on newly created scripts, handle update of entity id
This commit is contained in:
parent
07e5aa30c6
commit
778fcab90d
@ -83,8 +83,6 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
|
|||||||
|
|
||||||
@state() private _config?: ScriptConfig;
|
@state() private _config?: ScriptConfig;
|
||||||
|
|
||||||
@state() private _idError = false;
|
|
||||||
|
|
||||||
@state() private _dirty = false;
|
@state() private _dirty = false;
|
||||||
|
|
||||||
@state() private _errors?: string;
|
@state() private _errors?: string;
|
||||||
@ -414,6 +412,18 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
|
|||||||
this._loadConfig();
|
this._loadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
(changedProps.has("scriptId") || changedProps.has("entityRegistry")) &&
|
||||||
|
this.scriptId &&
|
||||||
|
this.entityRegistry
|
||||||
|
) {
|
||||||
|
// find entity for when script entity id changed
|
||||||
|
const entity = this.entityRegistry.find(
|
||||||
|
(ent) => ent.platform === "script" && ent.unique_id === this.scriptId
|
||||||
|
);
|
||||||
|
this._entityId = entity?.entity_id;
|
||||||
|
}
|
||||||
|
|
||||||
if (changedProps.has("scriptId") && !this.scriptId && this.hass) {
|
if (changedProps.has("scriptId") && !this.scriptId && this.hass) {
|
||||||
const initData = getScriptEditorInitData();
|
const initData = getScriptEditorInitData();
|
||||||
this._dirty = !!initData;
|
this._dirty = !!initData;
|
||||||
@ -448,15 +458,6 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _setEntityId(id?: string) {
|
|
||||||
this._entityId = id;
|
|
||||||
if (this.hass.states[`script.${this._entityId}`]) {
|
|
||||||
this._idError = true;
|
|
||||||
} else {
|
|
||||||
this._idError = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async _checkValidation() {
|
private async _checkValidation() {
|
||||||
this._validationErrors = undefined;
|
this._validationErrors = undefined;
|
||||||
if (!this._entityId || !this._config) {
|
if (!this._entityId || !this._config) {
|
||||||
@ -766,28 +767,12 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _saveScript(): Promise<void> {
|
private async _saveScript(): Promise<void> {
|
||||||
if (this._idError) {
|
|
||||||
showToast(this, {
|
|
||||||
message: this.hass.localize(
|
|
||||||
"ui.panel.config.script.editor.id_already_exists_save_error"
|
|
||||||
),
|
|
||||||
dismissable: false,
|
|
||||||
duration: -1,
|
|
||||||
action: {
|
|
||||||
action: () => {},
|
|
||||||
text: this.hass.localize("ui.dialogs.generic.ok"),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.scriptId) {
|
if (!this.scriptId) {
|
||||||
const saved = await this._promptScriptAlias();
|
const saved = await this._promptScriptAlias();
|
||||||
if (!saved) {
|
if (!saved) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const entityId = this._computeEntityIdFromAlias(this._config!.alias);
|
this._entityId = this._computeEntityIdFromAlias(this._config!.alias);
|
||||||
this._setEntityId(entityId);
|
|
||||||
}
|
}
|
||||||
const id = this.scriptId || this._entityId || Date.now();
|
const id = this.scriptId || this._entityId || Date.now();
|
||||||
|
|
||||||
|
@ -3685,9 +3685,6 @@
|
|||||||
"editor": {
|
"editor": {
|
||||||
"alias": "Name",
|
"alias": "Name",
|
||||||
"icon": "Icon",
|
"icon": "Icon",
|
||||||
"id": "Entity ID",
|
|
||||||
"id_already_exists_save_error": "You can't save this script because the ID is not unique, pick another ID or leave it blank to automatically generate one.",
|
|
||||||
"id_already_exists": "This ID already exists",
|
|
||||||
"introduction": "Use scripts to run a sequence of actions.",
|
"introduction": "Use scripts to run a sequence of actions.",
|
||||||
"show_trace": "[%key:ui::panel::config::automation::editor::show_trace%]",
|
"show_trace": "[%key:ui::panel::config::automation::editor::show_trace%]",
|
||||||
"show_info": "[%key:ui::panel::config::automation::editor::show_info%]",
|
"show_info": "[%key:ui::panel::config::automation::editor::show_info%]",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user