6 Commits

Author SHA1 Message Date
Adrian Zürcher
1e869d705c update memberdb package
All checks were successful
Build Quasar SPA and Go Backend for memberApp / build-spa (push) Successful in 2m51s
Build Quasar SPA and Go Backend for memberApp / build-backend (amd64, .exe, windows) (push) Successful in 6m55s
Build Quasar SPA and Go Backend for memberApp / build-backend (amd64, , linux) (push) Successful in 7m0s
Build Quasar SPA and Go Backend for memberApp / build-backend (arm, 6, , linux) (push) Successful in 6m7s
Build Quasar SPA and Go Backend for memberApp / build-backend (arm64, , linux) (push) Successful in 6m6s
2026-02-05 07:22:21 +01:00
Adrian Zürcher
54d0a77ee3 fix local storage load 2026-02-05 07:16:14 +01:00
Adrian Zürcher
73471ed653 add member number of group 2026-02-05 07:15:50 +01:00
Adrian Zürcher
8f62f7af90 fixes 2026-02-05 07:15:33 +01:00
Adrian Zürcher
a8fd82022e add comment to select of events 2026-02-05 07:11:04 +01:00
Adrian Zürcher
409579dea6 new golang to version 1.25 2026-02-05 07:10:28 +01:00
8 changed files with 54 additions and 11 deletions

View File

@@ -1,10 +1,10 @@
module backend module backend
go 1.24.5 go 1.25.4
require ( require (
gitea.tecamino.com/paadi/access-handler v1.0.34 gitea.tecamino.com/paadi/access-handler v1.0.34
gitea.tecamino.com/paadi/memberDB v1.1.16 gitea.tecamino.com/paadi/memberDB v1.1.18
gitea.tecamino.com/paadi/tecamino-dbm v0.1.1 gitea.tecamino.com/paadi/tecamino-dbm v0.1.1
gitea.tecamino.com/paadi/tecamino-logger v0.2.1 gitea.tecamino.com/paadi/tecamino-logger v0.2.1
github.com/gin-contrib/cors v1.7.6 github.com/gin-contrib/cors v1.7.6

View File

@@ -2,8 +2,8 @@ gitea.tecamino.com/paadi/access-handler v1.0.34 h1:6P65HiusSfvgv/ezOvxSahqyRJMK9
gitea.tecamino.com/paadi/access-handler v1.0.34/go.mod h1:HyMp1WvzmqLw8Ljt3r1qlF8fY+T5WFXr9Da/CTIM0H8= gitea.tecamino.com/paadi/access-handler v1.0.34/go.mod h1:HyMp1WvzmqLw8Ljt3r1qlF8fY+T5WFXr9Da/CTIM0H8=
gitea.tecamino.com/paadi/dbHandler v1.1.10 h1:zZQbDTJ0bu6CIW90Zms8yYIzTLHtWPNhVKRxLUXEDuE= gitea.tecamino.com/paadi/dbHandler v1.1.10 h1:zZQbDTJ0bu6CIW90Zms8yYIzTLHtWPNhVKRxLUXEDuE=
gitea.tecamino.com/paadi/dbHandler v1.1.10/go.mod h1:y/xn/POJg1DO++67uKvnO23lJQgh+XFQq7HZCS9Getw= gitea.tecamino.com/paadi/dbHandler v1.1.10/go.mod h1:y/xn/POJg1DO++67uKvnO23lJQgh+XFQq7HZCS9Getw=
gitea.tecamino.com/paadi/memberDB v1.1.16 h1:z8v0BSLaiP7pE+ad2LUycBJf8SFOOlbyASoxvrO1CpM= gitea.tecamino.com/paadi/memberDB v1.1.18 h1:BEOyPaJvlVYZfUHzHnXB12mvuI/3RzKBQnyISf0qoAw=
gitea.tecamino.com/paadi/memberDB v1.1.16/go.mod h1:xv2MA05nKh45NTnBQewaFeRJ2fs5dgcE7qTjmIjtqIA= gitea.tecamino.com/paadi/memberDB v1.1.18/go.mod h1:VBsORoIIhh0/RM5AvmaAjMEM2/cNaIT2TqDL1VDcov4=
gitea.tecamino.com/paadi/tecamino-dbm v0.1.1 h1:vAq7mwUxlxJuLzCQSDMrZCwo8ky5usWi9Qz+UP+WnkI= gitea.tecamino.com/paadi/tecamino-dbm v0.1.1 h1:vAq7mwUxlxJuLzCQSDMrZCwo8ky5usWi9Qz+UP+WnkI=
gitea.tecamino.com/paadi/tecamino-dbm v0.1.1/go.mod h1:+tmf1rjPaKEoNeUcr1vdtoFIFweNG3aUGevDAl3NMBk= gitea.tecamino.com/paadi/tecamino-dbm v0.1.1/go.mod h1:+tmf1rjPaKEoNeUcr1vdtoFIFweNG3aUGevDAl3NMBk=
gitea.tecamino.com/paadi/tecamino-logger v0.2.1 h1:sQTBKYPdzn9mmWX2JXZBtGBvNQH7cuXIwsl4TD0aMgE= gitea.tecamino.com/paadi/tecamino-logger v0.2.1 h1:sQTBKYPdzn9mmWX2JXZBtGBvNQH7cuXIwsl4TD0aMgE=

View File

@@ -74,7 +74,7 @@ function open(title: string, members: Members) {
appApi appApi
.get('events') .get('events')
.then((resp) => { .then((resp) => {
events.value.push(...resp.data); events.value.push(...resp.data.map((e: Event) => (e.name = e.name + ' (' + e.date + ')')));
}) })
.catch((err) => { .catch((err) => {
NotifyResponse(err, 'error'); NotifyResponse(err, 'error');

View File

@@ -14,10 +14,20 @@ export function setLocalSettings(settings: Settings) {
} }
export function getLocalSettings(): Settings { export function getLocalSettings(): Settings {
let name = localStorage.getItem('appName');
if (name === undefined || name === 'undefined') {
name = appName.value;
}
let db = localStorage.getItem('databaseName');
if (db === undefined || db === 'undefined') {
db = databaseName.value;
}
return <Settings>{ return <Settings>{
icon: localStorage.getItem('icon'), icon: localStorage.getItem('icon'),
appName: localStorage.getItem('appName') || appName.value, appName: name,
databaseName: localStorage.getItem('databaseName') || databaseName.value, databaseName: db,
primaryColor: localStorage.getItem('primaryColor'), primaryColor: localStorage.getItem('primaryColor'),
primaryColorText: localStorage.getItem('primaryColorText'), primaryColorText: localStorage.getItem('primaryColorText'),
secondaryColor: localStorage.getItem('secondaryColor'), secondaryColor: localStorage.getItem('secondaryColor'),

View File

@@ -91,7 +91,7 @@ const open = async (eventArray: number, event: Event) => {
// get attendance // get attendance
await updateAttendees(eventArray); await updateAttendees(eventArray);
//get missing attendance from memer updateTable //get missing attendance from member updateTable
await updateMembers(event.attendees); await updateMembers(event.attendees);
// set custom filter // set custom filter

View File

@@ -64,7 +64,7 @@
:td-props="props" :td-props="props"
:permitted="user.isPermittedTo('group', 'write')" :permitted="user.isPermittedTo('group', 'write')"
v-on:onClick="openGroupDialog(props.col.label, props.row)" v-on:onClick="openGroupDialog(props.col.label, props.row)"
:value="props.value" :value="props.value + ' (' + getAmount(props.row.name) + ')'"
/> />
</template> </template>
<template v-slot:body-cell-option="props"> <template v-slot:body-cell-option="props">
@@ -122,6 +122,8 @@ import { i18n } from 'src/boot/lang';
import type { Group, Groups } from 'src/vueLib/models/group'; import type { Group, Groups } from 'src/vueLib/models/group';
import SearchableInput from '../components/SearchableInput.vue'; import SearchableInput from '../components/SearchableInput.vue';
import TopButtonGroup from '../components/TopButtonGroup.vue'; import TopButtonGroup from '../components/TopButtonGroup.vue';
import { getAllMembers } from '../members/MembersTable';
import type { Members } from 'src/vueLib/models/member';
const { NotifyResponse } = useNotify(); const { NotifyResponse } = useNotify();
const groupDialog = ref(); const groupDialog = ref();
@@ -135,13 +137,16 @@ const selected = ref<Groups>([]);
const openSubmenu = ref(false); const openSubmenu = ref(false);
const filter = ref(''); const filter = ref('');
const user = useUserStore(); const user = useUserStore();
const members = ref<Members>([]);
const { groups, pagination, loading, columns, updateGroups } = useGroupTable(); const { groups, pagination, loading, columns, updateGroups } = useGroupTable();
//load on mounting page //load on mounting page
onMounted(() => { onMounted(async () => {
loading.value = true; loading.value = true;
members.value = await getAllMembers();
appApi appApi
.post('database/open', { dbPath: databaseName.value, create: true }) .post('database/open', { dbPath: databaseName.value, create: true })
.then(() => { .then(() => {
@@ -216,6 +221,11 @@ async function save() {
}) })
.catch((err) => NotifyResponse(err, 'error')); .catch((err) => NotifyResponse(err, 'error'));
} }
function getAmount(name: string) {
const amount = members.value.filter((e) => e.group?.name == name);
return amount.length;
}
</script> </script>
<style> <style>

View File

@@ -402,3 +402,27 @@ export function useMemberTable() {
exportCsv, exportCsv,
}; };
} }
export async function getAllMembers(): Promise<Members> {
const { NotifyResponse } = useNotify();
const allMembers = ref<Members>([]);
await appApi
.get('members')
.then((resp) => {
if (resp.data === null) {
return [];
}
allMembers.value = resp.data as Members;
if (allMembers.value === null) {
return [];
}
})
.catch((err) => {
NotifyResponse(err, 'error');
});
return allMembers.value;
}

View File

@@ -482,7 +482,6 @@ async function updateMemberLastVisit(members: Members) {
.catch((err) => NotifyResponse(err, 'error')); .catch((err) => NotifyResponse(err, 'error'));
localCompareMembers.value?.push(...members); localCompareMembers.value?.push(...members);
await updateTable().catch((err) => NotifyResponse(err, 'error')); await updateTable().catch((err) => NotifyResponse(err, 'error'));
emit('update-event', filteredMembers.value.length); emit('update-event', filteredMembers.value.length);
} }