Compare commits
8 Commits
c20ce31f04
...
v1.3.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
73901335a3 | ||
|
|
62aed501f3 | ||
|
|
43d81dd27a | ||
|
|
ce654bbb6a | ||
|
|
9b2b1d3ef7 | ||
|
|
f59443ce5a | ||
|
|
c60907257e | ||
|
|
227c57ed41 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lightcontrol",
|
||||
"version": "1.3.0",
|
||||
"version": "1.3.2",
|
||||
"description": "A Tecamino App",
|
||||
"productName": "Attendence Records",
|
||||
"author": "A. Zuercher",
|
||||
|
||||
@@ -169,3 +169,31 @@ today: Hüt
|
||||
week: Wuche
|
||||
month: Monat
|
||||
year: Jahr
|
||||
appName: Applikationsname
|
||||
calendar:
|
||||
days:
|
||||
- 'Suntig'
|
||||
- 'Mäntig'
|
||||
- 'Zistig'
|
||||
- 'Mittwuch'
|
||||
- 'Donstig'
|
||||
- 'Fritig'
|
||||
- 'Samstig'
|
||||
daysShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']
|
||||
months:
|
||||
- 'Januar'
|
||||
- 'Februar'
|
||||
- 'März'
|
||||
- 'April'
|
||||
- 'Mai'
|
||||
- 'Juni'
|
||||
- 'Juli'
|
||||
- 'Ougust'
|
||||
- 'Septämber'
|
||||
- 'Oktober'
|
||||
- 'Novämber'
|
||||
- 'Dezämber'
|
||||
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']
|
||||
firstDayOfWeek: 1
|
||||
format24h: true
|
||||
pluralDay: 'Täg'
|
||||
|
||||
@@ -169,3 +169,31 @@ today: Heute
|
||||
week: Woche
|
||||
month: Monat
|
||||
year: Jahr
|
||||
appName: Applikationsname
|
||||
calendar:
|
||||
days:
|
||||
- 'Sonntag'
|
||||
- 'Montag'
|
||||
- 'Dienstag'
|
||||
- 'Mittwoch'
|
||||
- 'Donnerstag'
|
||||
- 'Freitag'
|
||||
- 'Samstag'
|
||||
daysShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']
|
||||
months:
|
||||
- 'Januar'
|
||||
- 'Februar'
|
||||
- 'März'
|
||||
- 'April'
|
||||
- 'Mai'
|
||||
- 'Juni'
|
||||
- 'Juli'
|
||||
- 'August'
|
||||
- 'September'
|
||||
- 'Oktober'
|
||||
- 'November'
|
||||
- 'Dezember'
|
||||
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']
|
||||
firstDayOfWeek: 1
|
||||
format24h: true
|
||||
pluralDay: 'Tage'
|
||||
|
||||
@@ -169,3 +169,31 @@ today: Today
|
||||
week: Week
|
||||
month: Month
|
||||
year: Year
|
||||
appName: Applicationname
|
||||
calendar:
|
||||
days:
|
||||
- 'Sunday'
|
||||
- 'Monday'
|
||||
- 'Tuesday'
|
||||
- 'Wednesday'
|
||||
- 'Thursday'
|
||||
- 'Friday'
|
||||
- 'Saturday'
|
||||
daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat']
|
||||
months:
|
||||
- 'January'
|
||||
- 'February'
|
||||
- 'March'
|
||||
- 'April'
|
||||
- 'May'
|
||||
- 'June'
|
||||
- 'July'
|
||||
- 'August'
|
||||
- 'September'
|
||||
- 'October'
|
||||
- 'November'
|
||||
- 'December'
|
||||
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
||||
firstDayOfWeek: 0
|
||||
format24h: false
|
||||
pluralDay: 'Days'
|
||||
|
||||
@@ -169,3 +169,31 @@ today: Hoy
|
||||
week: Semana
|
||||
month: Mes
|
||||
year: Año
|
||||
appName: Nombre de la aplicación
|
||||
calendar:
|
||||
days:
|
||||
- 'Domingo'
|
||||
- 'Lunes'
|
||||
- 'Martes'
|
||||
- 'Miércoles'
|
||||
- 'Jueves'
|
||||
- 'Viernes'
|
||||
- 'Sábado'
|
||||
daysShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb']
|
||||
months:
|
||||
- 'Enero'
|
||||
- 'Febrero'
|
||||
- 'Marzo'
|
||||
- 'Abril'
|
||||
- 'Mayo'
|
||||
- 'Junio'
|
||||
- 'Julio'
|
||||
- 'Agosto'
|
||||
- 'Septiembre'
|
||||
- 'Octubre'
|
||||
- 'Noviembre'
|
||||
- 'Diciembre'
|
||||
monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']
|
||||
firstDayOfWeek: 1
|
||||
format24h: true
|
||||
pluralDay: 'dias'
|
||||
|
||||
@@ -31,16 +31,16 @@
|
||||
</q-tabs>
|
||||
</div>
|
||||
<div class="row">
|
||||
<q-date v-model="dateRange" range flat />
|
||||
<q-date :locale="calendarLanguage" v-model="dateRange" range flat />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, watch, type PropType } from 'vue';
|
||||
import { ref, onMounted, watch, type PropType, computed } from 'vue';
|
||||
import { date } from 'quasar';
|
||||
import { i18n } from 'src/boot/lang';
|
||||
|
||||
import type { QDateLocale } from 'src/vueLib/models/qDateLocale';
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
height: { type: Number, default: 400 },
|
||||
@@ -74,6 +74,20 @@ const weekdayOptions = [
|
||||
{ label: i18n.global.t('SundayShort'), value: 0 },
|
||||
];
|
||||
|
||||
const calendarLanguage = computed(() => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
const localeData = i18n.global.tm('calendar') as unknown as QDateLocale;
|
||||
return {
|
||||
days: localeData.days,
|
||||
daysShort: localeData.daysShort,
|
||||
months: localeData.months,
|
||||
monthsShort: localeData.monthsShort,
|
||||
firstDayOfWeek: localeData.firstDayOfWeek,
|
||||
format24h: localeData.format24h,
|
||||
pluralDay: localeData.pluralDay,
|
||||
};
|
||||
});
|
||||
|
||||
const onTabChange = (val: 'today' | 'week' | 'month' | 'year') => {
|
||||
if (val) setRange(val);
|
||||
// Optional: Reset tab to empty so user can click the same tab again later
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
:label="$t('responsible')"
|
||||
filled
|
||||
:options="props.responsibles"
|
||||
:option-label="(opt) => opt.firstName + ' ' + opt.lastName"
|
||||
:option-label="(opt) => opt.member.firstName + ' ' + opt.member.lastName"
|
||||
v-model="localMember.responsible"
|
||||
></q-select>
|
||||
<q-input
|
||||
|
||||
@@ -136,7 +136,7 @@ import ReportStat from 'src/components/ReportStat.vue';
|
||||
import type { Group, Groups } from 'src/vueLib/models/group';
|
||||
import { getLocalPageDefaults, setLocalPageDefaults } from 'src/localstorage/localStorage';
|
||||
import html2pdf from 'html2pdf.js';
|
||||
import type { PageDefault } from 'src/vueLib/models/pagedefaults';
|
||||
import type { PageDefault } from 'src/vueLib/models/pageDefaults';
|
||||
|
||||
const filter = ref<string>('');
|
||||
const group = ref<Group[]>([]);
|
||||
|
||||
@@ -7,25 +7,17 @@
|
||||
<p class="text-bold text-h6 text-primary q-pa-md">{{ $t('general') }}</p>
|
||||
<div class="row">
|
||||
<q-input
|
||||
dense
|
||||
:readonly="!user.isPermittedTo('settings', 'write')"
|
||||
:class="[
|
||||
colorGroup ? 'col-md-4' : 'col-md-3',
|
||||
colorGroup ? 'col-md-6' : 'col-md-6',
|
||||
colorGroup ? 'col-md-4' : 'col-md-12',
|
||||
'q-pa-md',
|
||||
]"
|
||||
:class="[colorGroup ? ' col-md-4' : 'col-md-12', 'q-pa-md']"
|
||||
filled
|
||||
:label="$t('appName')"
|
||||
v-model="settings.appName"
|
||||
></q-input>
|
||||
<q-input
|
||||
dense
|
||||
:readonly="!user.isPermittedTo('settings', 'write')"
|
||||
:class="[
|
||||
colorGroup ? 'col-md-4' : 'col-md-3',
|
||||
colorGroup ? 'col-md-6' : 'col-md-6',
|
||||
colorGroup ? 'col-md-4' : 'col-md-12',
|
||||
'q-pa-md',
|
||||
]"
|
||||
:class="[colorGroup ? 'col-md-4' : 'col-md-12', 'q-pa-md']"
|
||||
filled
|
||||
:label="$t('icon')"
|
||||
v-model="settings.icon"
|
||||
@@ -36,13 +28,9 @@
|
||||
<p class="text-bold text-h6 text-primary q-pa-md">{{ $t('database') }}</p>
|
||||
<div class="row">
|
||||
<q-input
|
||||
dense
|
||||
:readonly="!user.isPermittedTo('settings', 'write')"
|
||||
:class="[
|
||||
colorGroup ? 'col-md-4' : 'col-md-3',
|
||||
colorGroup ? 'col-md-6' : 'col-md-6',
|
||||
colorGroup ? 'col-md-4' : 'col-md-12',
|
||||
'q-pa-md',
|
||||
]"
|
||||
:class="[colorGroup ? 'col-md-4' : 'col-md-12', 'q-pa-md']"
|
||||
filled
|
||||
:label="$t('databaseName')"
|
||||
v-model="settings.databaseName"
|
||||
|
||||
9
src/vueLib/models/qDateLocale.ts
Normal file
9
src/vueLib/models/qDateLocale.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
export interface QDateLocale {
|
||||
days: string[];
|
||||
daysShort: string[];
|
||||
months: string[];
|
||||
monthsShort: string[];
|
||||
firstDayOfWeek: number;
|
||||
format24h: boolean;
|
||||
pluralDay: string;
|
||||
}
|
||||
@@ -66,7 +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';
|
||||
import type { PageDefault } from 'src/vueLib/models/pageDefaults';
|
||||
|
||||
//use constants and function of imports
|
||||
const { attendees, updateAttendees } = useAttendeesTable();
|
||||
|
||||
@@ -215,7 +215,7 @@ 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';
|
||||
import type { PageDefault } from 'src/vueLib/models/pageDefaults';
|
||||
|
||||
const inProps = defineProps({
|
||||
addAttendees: { type: Boolean },
|
||||
@@ -307,8 +307,11 @@ onMounted(() => {
|
||||
});
|
||||
});
|
||||
|
||||
async function updateTable() {
|
||||
async function updateTable(add?: Members) {
|
||||
localCompareMembers.value = inProps.compareMembers;
|
||||
if (add) {
|
||||
localCompareMembers.value?.push(...add);
|
||||
}
|
||||
await updateMembers(localCompareMembers.value, inProps.addResponsible).catch((err) =>
|
||||
NotifyResponse(err, 'error'),
|
||||
);
|
||||
@@ -452,15 +455,15 @@ async function addMemberTo() {
|
||||
})
|
||||
.catch((err) => {
|
||||
NotifyResponse(err, 'error');
|
||||
})
|
||||
.finally(() => (selected.value = []));
|
||||
});
|
||||
|
||||
if (inProps.addAttendees) {
|
||||
await updateMemberLastVisit(selected.value);
|
||||
} else {
|
||||
await updateTable();
|
||||
await updateTable(selected.value);
|
||||
emit('update-event', filteredMembers.value.length);
|
||||
}
|
||||
selected.value = [];
|
||||
}
|
||||
|
||||
async function updateMemberLastVisit(members: Members) {
|
||||
|
||||
Reference in New Issue
Block a user