mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-10 07:48:37 +01:00
adjustments
This commit is contained in:
@@ -14,7 +14,7 @@ const columns = [
|
||||
{ key: 'created_at', label: 'Creation', sortable: true }
|
||||
]
|
||||
|
||||
const sort = ref({
|
||||
const sort = ref<any>({
|
||||
column: 'created_at',
|
||||
direction: 'desc'
|
||||
})
|
||||
|
||||
@@ -19,7 +19,7 @@ const columns = [
|
||||
{ key: 'created_at', label: 'Date', sortable: true }
|
||||
]
|
||||
|
||||
const sort = ref({
|
||||
const sort = ref<any>({
|
||||
column: 'created_at',
|
||||
direction: 'desc'
|
||||
})
|
||||
@@ -67,8 +67,7 @@ onMounted(async () => {
|
||||
th: { color: 'text-text-sub' },
|
||||
tbody: 'divide-y divide-gray-300/20',
|
||||
divide: '',
|
||||
}" v-model:sort="sort" :columns="selectedColumns" :rows="tableData" :loading="loadingData" sort-mode="manual"
|
||||
:sortButton="{ color: '#000000' }">
|
||||
}" v-model:sort="sort" :columns="selectedColumns" :rows="tableData" :loading="loadingData" sort-mode="manual">
|
||||
|
||||
<template #metadata-data="{ row }">
|
||||
<div v-if="row.metadata" class="flex flex-col gap-1">
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
definePageMeta({ layout: 'dashboard' });
|
||||
|
||||
const selectLabels = [
|
||||
{ label: 'Day', value: 'day' },
|
||||
{ label: 'Month', value: 'month' },
|
||||
];
|
||||
|
||||
const activeProject = useActiveProject();
|
||||
|
||||
// const { data: names } = useFetch(`/api/metrics/${activeProject.value?._id.toString()}/events/names`, signHeaders());
|
||||
|
||||
const eventsStackedSelectIndex = ref<number>(0);
|
||||
|
||||
|
||||
const text = ref<string>("");
|
||||
const response = ref<string>("");
|
||||
const loading = ref<boolean>(false);
|
||||
|
||||
async function ask() {
|
||||
if (loading.value) return;
|
||||
if (!activeProject.value) return;
|
||||
loading.value = true;
|
||||
response.value = '';
|
||||
const res = await $fetch(`/api/ai/${activeProject.value._id.toString()}/ask`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ text: text.value }),
|
||||
...signHeaders({ 'Content-Type': 'application/json' })
|
||||
});
|
||||
text.value = '';
|
||||
loading.value = false;
|
||||
response.value = res || 'NO_RESPONSE';
|
||||
}
|
||||
|
||||
|
||||
const { isAdmin } = useUserRoles();
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
<div class="w-full h-full p-6">
|
||||
|
||||
<CardTitled class="p-4 flex-1" title="Events" sub="Events stacked bar chart.">
|
||||
<template #header>
|
||||
<SelectButton @changeIndex="eventsStackedSelectIndex = $event" :currentIndex="eventsStackedSelectIndex"
|
||||
:options="selectLabels">
|
||||
</SelectButton>
|
||||
</template>
|
||||
<div>
|
||||
<EventsStackedBarChart :slice="(selectLabels[eventsStackedSelectIndex].value as any)">
|
||||
</EventsStackedBarChart>
|
||||
</div>
|
||||
</CardTitled>
|
||||
|
||||
<div class="p-4 text-[1.3rem] flex flex-col gap-4" v-if="isAdmin">
|
||||
<div class="flex gap-8">
|
||||
<input class="w-full p-4 px-8 poppins rounded-full" type="text" v-model="text">
|
||||
<div class="bg-menu py-2 px-10 flex items-center rounded-lg cursor-pointer hover:bg-menu/80"
|
||||
@click="ask()">
|
||||
{{ loading ? 'Loading' : 'Send' }}
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="response">
|
||||
{{ response }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div>
|
||||
<br>
|
||||
<br>
|
||||
<div> Event names:</div>
|
||||
<br>
|
||||
<div v-for="name of names">
|
||||
{{ name }}
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- <div class="flex w-full gap-6 flex-col xl:flex-row">
|
||||
<div class="flex-1">
|
||||
|
||||
<div class="bg-menu p-6 rounded-xl flex flex-col gap-6">
|
||||
<div class="poppins font-semibold text-[1.1rem]">
|
||||
Manage your events
|
||||
</div>
|
||||
<div class="w-full">
|
||||
<DashboardEventsColorManager></DashboardEventsColorManager>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="flex-1">
|
||||
<DashboardEventsBarCard></DashboardEventsBarCard>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
@@ -1,6 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
|
||||
|
||||
definePageMeta({ layout: 'dashboard' });
|
||||
|
||||
const projectName = ref<string>("");
|
||||
@@ -8,7 +7,7 @@ const creating = ref<boolean>(false);
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const { data: projects, refresh: refreshProjects } = useProjectsList();
|
||||
const { projects, refresh } = useProjectsList();
|
||||
|
||||
const isFirstProject = computed(() => { return projects.value?.length == 0; })
|
||||
|
||||
@@ -37,7 +36,7 @@ async function createProject() {
|
||||
body: JSON.stringify({ name: projectName.value })
|
||||
});
|
||||
|
||||
await refreshProjects();
|
||||
await refresh();
|
||||
|
||||
const newActiveProjectId = projects.value?.[projects.value?.length - 1]._id.toString();
|
||||
if (newActiveProjectId) {
|
||||
@@ -45,9 +44,6 @@ async function createProject() {
|
||||
}
|
||||
|
||||
|
||||
await refreshProjects();
|
||||
|
||||
|
||||
router.push('/');
|
||||
|
||||
} catch (ex: any) {
|
||||
|
||||
@@ -2,26 +2,30 @@
|
||||
|
||||
definePageMeta({ layout: 'dashboard' });
|
||||
|
||||
const { data: projects, refresh } = useProjectsList();
|
||||
const activeProject = useActiveProject();
|
||||
const { projects, refresh } = useProjectsList();
|
||||
const { pid } = useActiveProjectId();
|
||||
|
||||
async function deleteProject(projectId: string, projectName: string) {
|
||||
const sure = confirm(`Are you sure to delete the project ${projectName} ?`);
|
||||
if (!sure) return;
|
||||
|
||||
try {
|
||||
|
||||
await $fetch('/api/project/delete', {
|
||||
method: 'DELETE',
|
||||
...signHeaders({ 'Content-Type': 'application/json' }),
|
||||
body: JSON.stringify({ project_id: projectId })
|
||||
});
|
||||
if (activeProject.value?._id.toString() == projectId) {
|
||||
|
||||
await refresh();
|
||||
|
||||
if (pid.value == projectId) {
|
||||
const firstProjectId = projects.value?.[0]?._id.toString();
|
||||
if (firstProjectId) {
|
||||
await setActiveProject(firstProjectId);
|
||||
}
|
||||
}
|
||||
await refresh();
|
||||
|
||||
} catch (ex: any) {
|
||||
alert(ex.message);
|
||||
}
|
||||
@@ -59,12 +63,12 @@ async function deleteProject(projectId: string, projectName: string) {
|
||||
Create your first project...
|
||||
</div>
|
||||
|
||||
<div class="flex gap-12 flex-wrap" v-if="activeProject">
|
||||
<div class="flex gap-12 flex-wrap" v-if="pid">
|
||||
|
||||
<div v-for="e of projects">
|
||||
<DashboardProjectSelectionCard @click="setActiveProject(e._id.toString())"
|
||||
:active="activeProject._id == e._id" :title="e.name"
|
||||
:subtitle="activeProject._id == e._id ? 'ATTIVO' : ''"
|
||||
:active="pid == e._id.toString()" :title="e.name"
|
||||
:subtitle="pid == e._id.toString() ? 'ATTIVO' : ''"
|
||||
:chip="e.premium ? 'PREMIUM PLAN' : 'FREE PLAN'">
|
||||
</DashboardProjectSelectionCard>
|
||||
<div @click="deleteProject(e._id.toString(), e.name)"
|
||||
|
||||
Reference in New Issue
Block a user