add description grouping to reporting page (fixes ST-399), persist grouping selection in local storage

This commit is contained in:
Gregor Vostrak
2024-09-17 16:47:40 +02:00
committed by Constantin Graf
parent 5e4270e3f5
commit b2ad4b3785
3 changed files with 14 additions and 4 deletions

View File

@@ -35,6 +35,7 @@ import { getCurrentMembershipId, getCurrentRole } from '@/utils/useUser';
import ClientMultiselectDropdown from '@/Components/Common/Client/ClientMultiselectDropdown.vue';
import { useTagsStore } from '@/utils/useTags';
import { formatCents } from '@/packages/ui/src/utils/money';
import { useStorage } from '@vueuse/core';
const startDate = ref<string>(
getLocalizedDayJs(getDayJsInstance()().format()).subtract(14, 'd').format()
@@ -50,8 +51,8 @@ const selectedClients = ref<string[]>([]);
const billable = ref<'true' | 'false' | null>(null);
const group = ref<GroupingOption>('project');
const subGroup = ref<GroupingOption>('task');
const group = useStorage<GroupingOption>('reporting-group', 'project');
const subGroup = useStorage<GroupingOption>('reporting-sub-group', 'task');
const reportingStore = useReportingStore();

View File

@@ -2430,6 +2430,7 @@ If the group parameters are all set to &#x60;null&#x60; or are all missing, the
'task',
'client',
'billable',
'description',
])
.optional(),
},
@@ -2447,6 +2448,7 @@ If the group parameters are all set to &#x60;null&#x60; or are all missing, the
'task',
'client',
'billable',
'description',
])
.optional(),
},

View File

@@ -17,7 +17,7 @@ import {
UserCircleIcon,
UserGroupIcon,
} from '@heroicons/vue/20/solid';
import { FolderIcon } from '@heroicons/vue/16/solid';
import { DocumentTextIcon, FolderIcon } from '@heroicons/vue/16/solid';
import BillableIcon from '@/packages/ui/src/Icons/BillableIcon.vue';
export type GroupingOption =
@@ -25,7 +25,8 @@ export type GroupingOption =
| 'task'
| 'user'
| 'billable'
| 'client';
| 'client'
| 'description';
export const useReportingStore = defineStore('reporting', () => {
const reportingGraphResponse = ref<ReportingResponse | null>(null);
@@ -85,6 +86,7 @@ export const useReportingStore = defineStore('reporting', () => {
task: 'No Task',
billable: 'Non-Billable',
client: 'No Client',
description: 'No Description',
} as Record<string, string>;
function getNameForReportingRowEntry(
@@ -158,6 +160,11 @@ export const useReportingStore = defineStore('reporting', () => {
value: 'billable',
icon: BillableIcon,
},
{
label: 'Description',
value: 'description',
icon: DocumentTextIcon,
},
];
return {