From b9b2e83e6b60e2bef4c4c655c0d8f7a1775e1c52 Mon Sep 17 00:00:00 2001 From: Emily Date: Mon, 17 Jun 2024 15:36:17 +0200 Subject: [PATCH 1/8] fix some colors --- dashboard/assets/scss/colors.scss | 6 +-- dashboard/components/CVerticalNavigation.vue | 6 +-- dashboard/components/ThemeSelector.vue | 40 -------------------- dashboard/components/dashboard/BarsCard.vue | 2 +- dashboard/pages/events.vue | 2 +- dashboard/tailwind.config.js | 4 +- 6 files changed, 7 insertions(+), 53 deletions(-) delete mode 100644 dashboard/components/ThemeSelector.vue diff --git a/dashboard/assets/scss/colors.scss b/dashboard/assets/scss/colors.scss index 32795d4..46e153f 100644 --- a/dashboard/assets/scss/colors.scss +++ b/dashboard/assets/scss/colors.scss @@ -1,6 +1,4 @@ :root { - --current-card-color: #1d1d1f; - --card-color-1: #1d1d1f; - --card-color-2: #1f1f1f; - --card-color-3: #0f0f0f; + --card-color: #1d1d1f; + --bg-color: #151517; } \ No newline at end of file diff --git a/dashboard/components/CVerticalNavigation.vue b/dashboard/components/CVerticalNavigation.vue index 9fa6042..d001495 100644 --- a/dashboard/components/CVerticalNavigation.vue +++ b/dashboard/components/CVerticalNavigation.vue @@ -49,11 +49,7 @@ const { isOpen, close } = useMenu(); - -
- -
- +
diff --git a/dashboard/components/ThemeSelector.vue b/dashboard/components/ThemeSelector.vue deleted file mode 100644 index 107efde..0000000 --- a/dashboard/components/ThemeSelector.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/dashboard/components/dashboard/BarsCard.vue b/dashboard/components/dashboard/BarsCard.vue index 294c55b..05542e7 100644 --- a/dashboard/components/dashboard/BarsCard.vue +++ b/dashboard/components/dashboard/BarsCard.vue @@ -54,7 +54,7 @@ function openExternalLink(link: string) {
-
+
diff --git a/dashboard/pages/events.vue b/dashboard/pages/events.vue index 4ce5c63..c1dcc66 100644 --- a/dashboard/pages/events.vue +++ b/dashboard/pages/events.vue @@ -29,7 +29,7 @@ const eventsStackedSelectIndex = ref(0);
-
+
Top events diff --git a/dashboard/tailwind.config.js b/dashboard/tailwind.config.js index 393bcdc..ce41b78 100644 --- a/dashboard/tailwind.config.js +++ b/dashboard/tailwind.config.js @@ -11,10 +11,10 @@ module.exports = { }, colors: { card: { - DEFAULT: 'var(--current-card-color)', + DEFAULT: 'var(--card-color)', }, bg: { - DEFAULT: '#151517', + DEFAULT: 'var(--bg-color)', }, menu: { DEFAULT: '#1d1d1f' From 0797faed86195b5afeff146c540cb63eb4e42b48 Mon Sep 17 00:00:00 2001 From: Emily Date: Mon, 17 Jun 2024 15:36:36 +0200 Subject: [PATCH 2/8] . --- PROCESS_EVENT.md | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 PROCESS_EVENT.md diff --git a/PROCESS_EVENT.md b/PROCESS_EVENT.md deleted file mode 100644 index 0ae4c57..0000000 --- a/PROCESS_EVENT.md +++ /dev/null @@ -1,6 +0,0 @@ - - - -LIB ---> Producer ---> Save to Redis stream - -Broker ---> Read from redis stream ---> Process event ---> Save to DB \ No newline at end of file From 90d957c593899352031c111963621616cb30cf66 Mon Sep 17 00:00:00 2001 From: Emily Date: Mon, 17 Jun 2024 16:00:25 +0200 Subject: [PATCH 3/8] add delete chat --- dashboard/pages/analyst.vue | 25 ++++++++++++++++--- .../api/ai/[project_id]/[chat_id]/delete.ts | 21 ++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 dashboard/server/api/ai/[project_id]/[chat_id]/delete.ts diff --git a/dashboard/pages/analyst.vue b/dashboard/pages/analyst.vue index b979ca7..1b94f5e 100644 --- a/dashboard/pages/analyst.vue +++ b/dashboard/pages/analyst.vue @@ -105,6 +105,18 @@ const defaultPrompts = [ 'How many events i got last week ?', ] +async function deleteChat(chat_id: string) { + if (!activeProject.value) return; + const sure = confirm("Are you sure to delete the chat ?"); + if (!sure) return; + if (currentChatId.value === chat_id) { + currentChatId.value = ""; + currentChatMessages.value = []; + } + await $fetch(`/api/ai/${activeProject.value._id}/${chat_id}/delete`, signHeaders()); + await reloadChatsList(); +} + + + +
diff --git a/dashboard/pages/project_selector.vue b/dashboard/pages/project_selector.vue index 0f50f2f..5a543c8 100644 --- a/dashboard/pages/project_selector.vue +++ b/dashboard/pages/project_selector.vue @@ -3,7 +3,7 @@ definePageMeta({ layout: 'dashboard' }); const { projects, refresh } = useProjectsList(); -const { guestProjects } = useGuestProjectsList(); +const { guestProjects, refresh: refreshGuest } = useGuestProjectsList(); const { pid } = useActiveProjectId(); const { data: maxProjects } = useFetch("/api/user/max_projects", signHeaders()); @@ -36,6 +36,30 @@ async function deleteProject(projectId: string, projectName: string) { } + +async function leaveProject(projectId: string, projectName: string) { + const sure = confirm(`Are you sure to leave the project ${projectName} ?`); + if (!sure) return; + + try { + + await $fetch('/api/project/members/leave', signHeaders()); + + await refreshGuest(); + + if (pid.value == projectId) { + const firstProjectId = projects.value?.[0]?._id.toString(); + if (firstProjectId) { + await setActiveProject(firstProjectId); + } + } + + } catch (ex: any) { + alert(ex.message); + } + +} + const router = useRouter(); const { setToken } = useAccessToken(); @@ -107,6 +131,10 @@ async function deleteAccount() { @click="onProjectClick(e._id.toString())" :title="e.name" :active="pid == e._id.toString()" :subtitle="pid == e._id.toString() ? 'ATTIVO' : ''" :chip="''"> +
+ +
diff --git a/dashboard/server/api/project/members/kick.post.ts b/dashboard/server/api/project/members/kick.post.ts new file mode 100644 index 0000000..069f176 --- /dev/null +++ b/dashboard/server/api/project/members/kick.post.ts @@ -0,0 +1,32 @@ +import { ProjectModel } from "@schema/ProjectSchema"; +import { TeamMemberModel } from "@schema/TeamMemberSchema"; +import { UserModel } from "@schema/UserSchema"; +import { UserSettingsModel } from "@schema/UserSettings"; + +export default defineEventHandler(async event => { + + const userData = getRequestUser(event); + if (!userData?.logged) return setResponseStatus(event, 400, 'NotLogged'); + + const currentActiveProject = await UserSettingsModel.findOne({ user_id: userData.id }); + if (!currentActiveProject) return setResponseStatus(event, 400, 'You need to select a project'); + + const project_id = currentActiveProject.active_project_id; + + const project = await ProjectModel.findById(project_id); + if (!project) return setResponseStatus(event, 400, 'Project not found'); + + if (project.owner.toString() != userData.id) { + return setResponseStatus(event, 400, 'You are not the owner'); + } + + const { email } = await readBody(event); + + const user = await UserModel.findOne({ email }); + if (!user) return setResponseStatus(event, 400, 'Email not found'); + + await TeamMemberModel.deleteOne({ project_id, user_id: user.id }); + + return { ok: true } + +}); \ No newline at end of file diff --git a/dashboard/server/api/project/members/leave.ts b/dashboard/server/api/project/members/leave.ts new file mode 100644 index 0000000..c3115d6 --- /dev/null +++ b/dashboard/server/api/project/members/leave.ts @@ -0,0 +1,23 @@ +import { ProjectModel } from "@schema/ProjectSchema"; +import { TeamMemberModel } from "@schema/TeamMemberSchema"; +import { UserModel } from "@schema/UserSchema"; +import { UserSettingsModel } from "@schema/UserSettings"; + +export default defineEventHandler(async event => { + + const userData = getRequestUser(event); + if (!userData?.logged) return setResponseStatus(event, 400, 'NotLogged'); + + const currentActiveProject = await UserSettingsModel.findOne({ user_id: userData.id }); + if (!currentActiveProject) return setResponseStatus(event, 400, 'You need to select a project'); + + const project_id = currentActiveProject.active_project_id; + + const project = await ProjectModel.findById(project_id); + if (!project) return setResponseStatus(event, 400, 'Project not found'); + + await TeamMemberModel.deleteOne({ project_id, user_id: userData.id }); + + return { ok: true } + +}); \ No newline at end of file From 0981d4d4fd1027970ca84a20df147348acfa6737 Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 20 Jun 2024 14:29:24 +0200 Subject: [PATCH 7/8] add payment_ok page --- .../components/pricing/PricingDrawer.vue | 4 +-- dashboard/pages/payment_ok.vue | 34 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 dashboard/pages/payment_ok.vue diff --git a/dashboard/components/pricing/PricingDrawer.vue b/dashboard/components/pricing/PricingDrawer.vue index c11fc70..9e9543e 100644 --- a/dashboard/components/pricing/PricingDrawer.vue +++ b/dashboard/components/pricing/PricingDrawer.vue @@ -31,7 +31,7 @@ const starterTierCardData = ref({ const accelerationTierCardData = ref({ title: 'ACCELERATION', - cost: '9.99', + cost: '9,99', features: [ "150K visits/events per month", "100 AI Interaction per month", @@ -50,7 +50,7 @@ const accelerationTierCardData = ref({ const expansionTierCardData = ref({ title: 'EXPANSION', - cost: '39.99', + cost: '39,99', features: [ "500K visits/events per month", "5000 AI Interaction per month", diff --git a/dashboard/pages/payment_ok.vue b/dashboard/pages/payment_ok.vue new file mode 100644 index 0000000..06309a8 --- /dev/null +++ b/dashboard/pages/payment_ok.vue @@ -0,0 +1,34 @@ + + + + From 2b5dbaa318a7768d4a7246993f46545760341505 Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 20 Jun 2024 14:33:32 +0200 Subject: [PATCH 8/8] fix first session --- dashboard/server/api/metrics/[project_id]/counts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dashboard/server/api/metrics/[project_id]/counts.ts b/dashboard/server/api/metrics/[project_id]/counts.ts index 7964f5c..b1d1311 100644 --- a/dashboard/server/api/metrics/[project_id]/counts.ts +++ b/dashboard/server/api/metrics/[project_id]/counts.ts @@ -63,7 +63,7 @@ export default defineEventHandler(async event => { return { eventsCount: count[0].events, visitsCount: count[0].visits, - sessionsVisitsCount: totalSessions + (sessionsVisitsCount?.[0]?.count || 0), + sessionsVisitsCount: totalSessions || 0, avgSessionDuration, firstEventDate, firstViewDate,