diff --git a/src/components/DateDaySelect.vue b/src/components/DateDaySelect.vue
index 13f31b0..2ba0eb4 100644
--- a/src/components/DateDaySelect.vue
+++ b/src/components/DateDaySelect.vue
@@ -14,6 +14,21 @@
:val="opt.value"
:label="opt.label"
/>
+
+
+
+
+
+
@@ -22,7 +37,7 @@
diff --git a/src/localstorage/localStorage.ts b/src/localstorage/localStorage.ts
index 1b02464..2c20ad8 100644
--- a/src/localstorage/localStorage.ts
+++ b/src/localstorage/localStorage.ts
@@ -1,6 +1,5 @@
import { Dark } from 'quasar';
import { appName, databaseName, type Settings } from 'src/vueLib/models/settings';
-import { updateOrAddObject } from 'src/vueLib/utils/utils';
import { ref } from 'vue';
export function setLocalSettings(settings: Settings) {
@@ -79,30 +78,19 @@ export function getLocalLanguage(): string | null {
type pageDefault = {
page: string;
- stringValue: string;
- filteredValues: string[];
+ data: unknown;
};
type pageDefaults = pageDefault[];
const pageDefaults = ref
([]);
-export function setLocalPageDefaults(
- page: string,
- filteredColumn?: string,
- filteredValue?: string[],
-) {
- updateOrAddObject(
- pageDefaults.value,
- { page: page, stringValue: filteredColumn, filteredValues: filteredValue },
- 'page',
- );
- localStorage.setItem('pageDefaults', JSON.stringify(pageDefaults.value));
+export function setLocalPageDefaults(page: string, data: unknown) {
+ localStorage.setItem(page + 'Defaults', JSON.stringify(data));
}
-export function getLocalPageDefaults(page: string): pageDefault | null {
- const defaults = localStorage.getItem('pageDefaults');
+export function getLocalPageDefaults(page: string): unknown {
+ const defaults = localStorage.getItem(page + 'Defaults');
if (!defaults) return null;
- pageDefaults.value = JSON.parse(defaults);
- return pageDefaults.value.find((e) => e.page === page) || null;
+ return JSON.parse(defaults);
}
diff --git a/src/vueLib/models/pageDefaults.ts b/src/vueLib/models/pageDefaults.ts
new file mode 100644
index 0000000..2f6086b
--- /dev/null
+++ b/src/vueLib/models/pageDefaults.ts
@@ -0,0 +1,8 @@
+import type { Group } from './group';
+
+export type PageDefault = {
+ groups?: Group[];
+ selectedColumnFilter?: string;
+ selectedColumnOptions?: string[];
+ weekdays?: number[];
+};
diff --git a/src/vueLib/tables/attendees/AttendeesTableDialog.vue b/src/vueLib/tables/attendees/AttendeesTableDialog.vue
index fc729da..d65b42d 100644
--- a/src/vueLib/tables/attendees/AttendeesTableDialog.vue
+++ b/src/vueLib/tables/attendees/AttendeesTableDialog.vue
@@ -66,6 +66,7 @@ import { ref } from 'vue';
import { useAttendeesTable } from './AttendeesTable';
import { useMemberTable } from '../members/MembersTable';
import { getLocalPageDefaults } from 'src/localstorage/localStorage';
+import type { PageDefault } from 'src/vueLib/models/pagedefaults';
//use constants and function of imports
const { attendees, updateAttendees } = useAttendeesTable();
@@ -95,8 +96,10 @@ const open = async (eventArray: number, event: Event) => {
await updateMembers(event.attendees);
// set custom filter
- const defaults = getLocalPageDefaults('attendance');
- setNewFilter(defaults?.stringValue || '', ...(defaults?.filteredValues ?? []));
+ const settings = getLocalPageDefaults('attendance') as PageDefault;
+ if (settings) {
+ setNewFilter(settings.selectedColumnFilter || '', ...(settings.selectedColumnOptions ?? []));
+ }
// set amount of missing attendace
missingAttendanceAmount.value = filteredMembers.value.length;
diff --git a/src/vueLib/tables/members/MembersTable.vue b/src/vueLib/tables/members/MembersTable.vue
index 791e7fa..120e1c5 100644
--- a/src/vueLib/tables/members/MembersTable.vue
+++ b/src/vueLib/tables/members/MembersTable.vue
@@ -209,12 +209,13 @@ import AddToEvent from 'src/components/AddToEvent.vue';
import { databaseName } from 'src/vueLib/models/settings';
import { useUserStore } from 'src/vueLib/login/userStore';
import { i18n } from 'src/boot/lang';
-import { getLocalPageDefaults, setLocalPageDefaults } from 'src/localstorage/localStorage';
import type { Responsible } from 'src/vueLib/models/responsible';
import type { QTableColumn } from 'quasar';
import SearchableInput from '../components/SearchableInput.vue';
import FilterSelect from '../components/FilterSelect.vue';
import TopButtonGroup from '../components/TopButtonGroup.vue';
+import { getLocalPageDefaults, setLocalPageDefaults } from 'src/localstorage/localStorage';
+import type { PageDefault } from 'src/vueLib/models/pagedefaults';
const inProps = defineProps({
addAttendees: { type: Boolean },
@@ -285,9 +286,11 @@ onMounted(() => {
loading.value = true;
localCompareMembers.value = inProps.compareMembers;
- const defaults = getLocalPageDefaults(page.value);
- selectedColumnFilter.value = defaults?.stringValue || '';
- selectedColumnOptions.value = defaults?.filteredValues ?? [];
+ const settings = getLocalPageDefaults(page.value) as PageDefault;
+ if (settings) {
+ selectedColumnFilter.value = settings.selectedColumnFilter || '';
+ selectedColumnOptions.value = settings.selectedColumnOptions || [];
+ }
// set custom filter
setNewFilter(selectedColumnFilter.value, ...selectedColumnOptions.value);
@@ -369,7 +372,11 @@ function setColumnOptions(columnName: string) {
async function filterMembers() {
setNewFilter(selectedColumnFilter.value, ...(selectedColumnOptions.value || []));
- setLocalPageDefaults(page.value, selectedColumnFilter.value, selectedColumnOptions.value || []);
+ const settings = {
+ selectedColumnFilter: selectedColumnFilter.value,
+ selectedColumnOptions: selectedColumnOptions.value,
+ };
+ setLocalPageDefaults(page.value, settings);
await updateTable();
}