From 35a618d0af7cba766430bbf5062c515b99f6e12b Mon Sep 17 00:00:00 2001 From: Mahdi Date: Wed, 23 Sep 2026 17:30:30 +0330 Subject: [PATCH] Edit a modal for the assistant --- .../components/dashboard/HomeAiAssistant.vue | 196 ++++++++++++------ 1 file changed, 134 insertions(+), 62 deletions(-) diff --git a/apps/web/src/components/dashboard/HomeAiAssistant.vue b/apps/web/src/components/dashboard/HomeAiAssistant.vue index 6cb18fc..fc38d75 100644 --- a/apps/web/src/components/dashboard/HomeAiAssistant.vue +++ b/apps/web/src/components/dashboard/HomeAiAssistant.vue @@ -54,6 +54,7 @@ const voiceError = ref(''); const voiceDone = ref(''); const draft = ref(null); const confirming = ref(false); +const answerOpen = ref(false); function apiMessage(e: unknown, fallback: string) { if (!axios.isAxiosError(e)) return fallback; @@ -69,15 +70,45 @@ function looksLikeAction(text: string) { return /بساز|بسازید|ثبت کن|ثبت کنید|اضافه کن|ایجاد کن|یک مشتری|مشتری جدید|یک فعالیت|فعالیت جدید/.test(text); } -function formatDue(iso: string) { - try { - return new Intl.DateTimeFormat('fa-IR', { - dateStyle: 'medium', - timeStyle: 'short', - }).format(new Date(iso)); - } catch { - return iso; +function refreshDraft() { + const current = draft.value; + if (!current) return; + if (current.intent === 'create_person' && current.person) { + current.missing = current.person.firstName.trim() ? [] : ['نام']; + } else if (current.intent === 'create_activity' && current.activity) { + current.missing = current.activity.title.trim() ? [] : ['عنوان فعالیت']; } + current.canConfirm = current.missing.length === 0; +} + +function onPersonNameEdit() { + refreshDraft(); +} + +function onActivityTitleEdit() { + refreshDraft(); +} + +function onActivityPersonEdit() { + if (draft.value?.activity) draft.value.activity.personId = null; +} + +function toLocalInput(iso: string | null) { + if (!iso) return ''; + const date = new Date(iso); + if (Number.isNaN(date.getTime())) return ''; + const pad = (n: number) => String(n).padStart(2, '0'); + return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}`; +} + +function onDueEdit(value: string) { + if (!draft.value?.activity) return; + if (!value) { + draft.value.activity.dueAt = null; + return; + } + const date = new Date(value); + draft.value.activity.dueAt = Number.isNaN(date.getTime()) ? null : date.toISOString(); } async function parseCommand(text: string, fallbackToAsk: boolean) { @@ -175,12 +206,25 @@ function cancelDraft() { draft.value = null; } +function closeAnswer() { + answerOpen.value = false; + emit('clear'); +} + watch( () => props.asking, (active) => { if (!active) return; voiceDone.value = ''; voiceError.value = ''; + answerOpen.value = false; + }, +); + +watch( + () => props.answer, + (value) => { + answerOpen.value = Boolean(value?.trim()); }, ); @@ -226,18 +270,6 @@ watch(

در حال پاسخ…

-
-

{{ answer }}

-
- - {{ source.label }} - -
-
- - +

قبل از تأیید می‌توانید متن را اصلاح کنید.

+