From c2846ca595a3e5c30a528ea8020015ce65667438 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 4 Oct 2024 14:39:08 +0200 Subject: [PATCH] rewrite settings + banners --- TODO | 5 +- dashboard/components/BarCard/Devices.vue | 6 +- dashboard/components/banner/LimitsInfo.vue | 33 ++++ dashboard/components/banner/Offer.vue | 37 ++++ dashboard/components/settings/General.vue | 36 ++-- dashboard/composables/useCustomFetch.ts | 2 - dashboard/pages/index.vue | 191 +------------------- dashboard/server/api/keys/create.post.ts | 16 +- dashboard/server/api/keys/delete.delete.ts | 20 +- dashboard/server/api/keys/get_all.ts | 21 +-- dashboard/server/api/project/limits_info.ts | 15 +- dashboard/server/utils/getRequestData.ts | 15 +- 12 files changed, 129 insertions(+), 268 deletions(-) create mode 100644 dashboard/components/banner/LimitsInfo.vue create mode 100644 dashboard/components/banner/Offer.vue diff --git a/TODO b/TODO index 9b2580c..5c93e86 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,7 @@ - Slice change on Actionable Chart -- Show more on Dashboard cards \ No newline at end of file +- Show more on Dashboard cards +- Fix devices Dashboard card, replace empty with "unkwnwn" +- Component first interaction must make the request inside +- Reactivity on project delete \ No newline at end of file diff --git a/dashboard/components/BarCard/Devices.vue b/dashboard/components/BarCard/Devices.vue index 8da28c0..e84c450 100644 --- a/dashboard/components/BarCard/Devices.vue +++ b/dashboard/components/BarCard/Devices.vue @@ -24,8 +24,8 @@ function showMore() { diff --git a/dashboard/components/banner/LimitsInfo.vue b/dashboard/components/banner/LimitsInfo.vue new file mode 100644 index 0000000..4456271 --- /dev/null +++ b/dashboard/components/banner/LimitsInfo.vue @@ -0,0 +1,33 @@ + + + + diff --git a/dashboard/components/banner/Offer.vue b/dashboard/components/banner/Offer.vue new file mode 100644 index 0000000..c9d9362 --- /dev/null +++ b/dashboard/components/banner/Offer.vue @@ -0,0 +1,37 @@ + + + + diff --git a/dashboard/components/settings/General.vue b/dashboard/components/settings/General.vue index 8a92189..d24c9fd 100644 --- a/dashboard/components/settings/General.vue +++ b/dashboard/components/settings/General.vue @@ -2,6 +2,7 @@ import type { TApiSettings } from '@schema/ApiSettingsSchema'; import type { SettingsTemplateEntry } from './Template.vue'; +const { project } = useProject(); const entries: SettingsTemplateEntry[] = [ { id: 'pname', title: 'Name', text: 'Project name' }, @@ -11,8 +12,7 @@ const entries: SettingsTemplateEntry[] = [ { id: 'pdelete', title: 'Delete', text: 'Delete current project' }, ] -const activeProject = useActiveProject(); -const projectNameInputVal = ref(activeProject.value?.name || ''); +const projectNameInputVal = ref(project.value?.name || ''); const apiKeys = ref([]); @@ -20,14 +20,17 @@ const newApiKeyName = ref(''); async function updateApiKeys() { newApiKeyName.value = ''; - apiKeys.value = await $fetch('/api/keys/get_all', signHeaders()); + apiKeys.value = await $fetch('/api/keys/get_all', signHeaders({ + 'x-pid': project.value?._id.toString() ?? '' + })); } async function createApiKey() { try { const res = await $fetch('/api/keys/create', { method: 'POST', ...signHeaders({ - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + 'x-pid': project.value?._id.toString() ?? '' }), body: JSON.stringify({ name: newApiKeyName.value }) }); @@ -42,7 +45,8 @@ async function deleteApiKey(api_id: string) { try { const res = await $fetch('/api/keys/delete', { method: 'DELETE', ...signHeaders({ - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + 'x-pid': project.value?._id.toString() ?? '' }), body: JSON.stringify({ api_id }) }); @@ -56,15 +60,15 @@ async function deleteApiKey(api_id: string) { onMounted(() => { updateApiKeys(); -}) +}); -watch(activeProject, () => { - projectNameInputVal.value = activeProject.value?.name || ""; +watch(project, () => { + projectNameInputVal.value = project.value?.name || ""; updateApiKeys(); -}) +}); const canChange = computed(() => { - if (activeProject.value?.name == projectNameInputVal.value) return false; + if (project.value?.name == projectNameInputVal.value) return false; if (projectNameInputVal.value.length === 0) return false; return true; }); @@ -80,8 +84,8 @@ async function changeProjectName() { } async function deleteProject() { - if (!activeProject.value) return; - const sure = confirm(`Are you sure to delete the project ${activeProject.value.name} ?`); + if (!project.value) return; + const sure = confirm(`Are you sure to delete the project ${project.value.name} ?`); if (!sure) return; try { @@ -89,7 +93,7 @@ async function deleteProject() { await $fetch('/api/project/delete', { method: 'DELETE', ...signHeaders({ 'Content-Type': 'application/json' }), - body: JSON.stringify({ project_id: activeProject.value._id.toString() }) + body: JSON.stringify({ project_id: project.value._id.toString() }) }); const projectsList = useProjectsList() @@ -142,7 +146,7 @@ function copyProjectId() {