mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-24 09:46:36 +00:00
Allow to set a default pipeline (#16209)
This commit is contained in:
parent
dae107d3e3
commit
0f622589a3
@ -30,6 +30,9 @@ export class HaListItem extends ListItemBase {
|
||||
margin-inline-end: 0px !important;
|
||||
direction: var(--direction);
|
||||
}
|
||||
.mdc-deprecated-list-item__meta {
|
||||
display: var(--mdc-list-item-meta-display);
|
||||
}
|
||||
:host([multiline-secondary]) {
|
||||
height: auto;
|
||||
}
|
||||
|
@ -221,7 +221,10 @@ export const runAssistPipeline = (
|
||||
};
|
||||
|
||||
export const fetchAssistPipelines = (hass: HomeAssistant) =>
|
||||
hass.callWS<AssistPipeline[]>({
|
||||
hass.callWS<{
|
||||
pipelines: AssistPipeline[];
|
||||
preferred_pipeline: string | null;
|
||||
}>({
|
||||
type: "assist_pipeline/pipeline/list",
|
||||
});
|
||||
|
||||
@ -236,15 +239,24 @@ export const createAssistPipeline = (
|
||||
|
||||
export const updateAssistPipeline = (
|
||||
hass: HomeAssistant,
|
||||
pipelineId: string,
|
||||
pipeline_id: string,
|
||||
pipeline: Partial<AssistPipelineMutableParams>
|
||||
) =>
|
||||
hass.callWS<AssistPipeline>({
|
||||
type: "assist_pipeline/pipeline/update",
|
||||
pipeline_id: pipelineId,
|
||||
pipeline_id,
|
||||
...pipeline,
|
||||
});
|
||||
|
||||
export const setAssistPipelinePreferred = (
|
||||
hass: HomeAssistant,
|
||||
pipeline_id: string
|
||||
) =>
|
||||
hass.callWS({
|
||||
type: "assist_pipeline/pipeline/set_preferred",
|
||||
pipeline_id,
|
||||
});
|
||||
|
||||
export const deleteAssistPipeline = (hass: HomeAssistant, pipelineId: string) =>
|
||||
hass.callWS<void>({
|
||||
type: "assist_pipeline/pipeline/delete",
|
||||
|
@ -1,10 +1,11 @@
|
||||
import "@material/mwc-list/mwc-list";
|
||||
import { mdiHelpCircle, mdiPlus } from "@mdi/js";
|
||||
import { mdiHelpCircle, mdiPlus, mdiStar } from "@mdi/js";
|
||||
import { css, CSSResultGroup, html, LitElement, PropertyValues } from "lit";
|
||||
import { property, state } from "lit/decorators";
|
||||
import "../../../components/ha-alert";
|
||||
import "../../../components/ha-card";
|
||||
import "../../../components/ha-icon-next";
|
||||
import "../../../components/ha-svg-icon";
|
||||
import "../../../components/ha-list-item";
|
||||
import "../../../components/ha-switch";
|
||||
import "../../../components/ha-button";
|
||||
@ -14,6 +15,7 @@ import {
|
||||
fetchAssistPipelines,
|
||||
updateAssistPipeline,
|
||||
AssistPipeline,
|
||||
setAssistPipelinePreferred,
|
||||
} from "../../../data/assist_pipeline";
|
||||
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||
import type { HomeAssistant } from "../../../types";
|
||||
@ -25,11 +27,14 @@ export class AssistPref extends LitElement {
|
||||
|
||||
@state() private _pipelines: AssistPipeline[] = [];
|
||||
|
||||
@state() private _preferred: string | null = null;
|
||||
|
||||
protected firstUpdated(changedProps: PropertyValues) {
|
||||
super.firstUpdated(changedProps);
|
||||
|
||||
fetchAssistPipelines(this.hass).then((pipelines) => {
|
||||
this._pipelines = pipelines;
|
||||
this._pipelines = pipelines.pipelines;
|
||||
this._preferred = pipelines.preferred_pipeline;
|
||||
});
|
||||
}
|
||||
|
||||
@ -72,6 +77,12 @@ export class AssistPref extends LitElement {
|
||||
>
|
||||
${pipeline.name}
|
||||
<span slot="secondary">${pipeline.language}</span>
|
||||
${this._preferred === pipeline.id
|
||||
? html`<ha-svg-icon
|
||||
slot="meta"
|
||||
.path=${mdiStar}
|
||||
></ha-svg-icon>`
|
||||
: ""}
|
||||
<ha-icon-next slot="meta"></ha-icon-next>
|
||||
</ha-list-item>
|
||||
`
|
||||
@ -112,6 +123,7 @@ export class AssistPref extends LitElement {
|
||||
private async _openDialog(pipeline?: AssistPipeline): Promise<void> {
|
||||
showVoiceAssistantPipelineDetailDialog(this, {
|
||||
pipeline,
|
||||
preferred: pipeline?.id === this._preferred,
|
||||
createPipeline: async (values) => {
|
||||
const created = await createAssistPipeline(this.hass!, values);
|
||||
this._pipelines = this._pipelines!.concat(created);
|
||||
@ -126,6 +138,10 @@ export class AssistPref extends LitElement {
|
||||
res === pipeline ? updated : res
|
||||
);
|
||||
},
|
||||
setPipelinePreferred: async () => {
|
||||
await setAssistPipelinePreferred(this.hass!, pipeline!.id);
|
||||
this._preferred = pipeline!.id;
|
||||
},
|
||||
deletePipeline: async () => {
|
||||
if (
|
||||
!(await showConfirmationDialog(this, {
|
||||
@ -174,6 +190,14 @@ export class AssistPref extends LitElement {
|
||||
direction: var(--direction);
|
||||
color: var(--secondary-text-color);
|
||||
}
|
||||
ha-list-item {
|
||||
--mdc-list-item-meta-size: auto;
|
||||
--mdc-list-item-meta-display: flex;
|
||||
}
|
||||
ha-svg-icon,
|
||||
ha-icon-next {
|
||||
width: 24px;
|
||||
}
|
||||
.add {
|
||||
margin: 0 16px 16px;
|
||||
}
|
||||
|
@ -22,6 +22,8 @@ export class DialogVoiceAssistantPipelineDetail extends LitElement {
|
||||
|
||||
@state() private _data?: Partial<AssistPipeline>;
|
||||
|
||||
@state() private _preferred?: boolean;
|
||||
|
||||
@state() private _error?: Record<string, string>;
|
||||
|
||||
@state() private _submitting = false;
|
||||
@ -31,6 +33,7 @@ export class DialogVoiceAssistantPipelineDetail extends LitElement {
|
||||
this._error = undefined;
|
||||
if (this._params.pipeline) {
|
||||
this._data = this._params.pipeline;
|
||||
this._preferred = this._params.preferred;
|
||||
} else {
|
||||
this._data = {};
|
||||
}
|
||||
@ -82,6 +85,12 @@ export class DialogVoiceAssistantPipelineDetail extends LitElement {
|
||||
>
|
||||
${this.hass.localize("ui.common.delete")}
|
||||
</ha-button>
|
||||
<ha-button
|
||||
.disabled=${this._preferred}
|
||||
slot="secondaryAction"
|
||||
@click=${this._setPreferred}
|
||||
>Set as default</ha-button
|
||||
>
|
||||
`
|
||||
: nothing}
|
||||
<ha-button
|
||||
@ -181,6 +190,11 @@ export class DialogVoiceAssistantPipelineDetail extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
private async _setPreferred() {
|
||||
await this._params!.setPipelinePreferred();
|
||||
this._preferred = true;
|
||||
}
|
||||
|
||||
private async _deletePipeline() {
|
||||
this._submitting = true;
|
||||
try {
|
||||
|
@ -6,10 +6,12 @@ import {
|
||||
|
||||
export interface VoiceAssistantPipelineDetailsDialogParams {
|
||||
pipeline?: AssistPipeline;
|
||||
preferred?: boolean;
|
||||
createPipeline: (values: AssistPipelineMutableParams) => Promise<unknown>;
|
||||
updatePipeline: (
|
||||
updates: Partial<AssistPipelineMutableParams>
|
||||
) => Promise<unknown>;
|
||||
setPipelinePreferred: () => Promise<unknown>;
|
||||
deletePipeline: () => Promise<boolean>;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user