Compare commits
6 Commits
v1.2.1
...
1e869d705c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1e869d705c | ||
|
|
54d0a77ee3 | ||
|
|
73471ed653 | ||
|
|
8f62f7af90 | ||
|
|
a8fd82022e | ||
|
|
409579dea6 |
@@ -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
|
||||||
|
|||||||
@@ -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=
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user