parent
d3bc8af711
commit
cfdef13283
app/Contribution
resources/js
|
@ -18,7 +18,7 @@ class ContributionController extends Controller
|
||||||
session()->put('title', 'Zuschüsse');
|
session()->put('title', 'Zuschüsse');
|
||||||
|
|
||||||
return Inertia::render('contribution/VIndex', [
|
return Inertia::render('contribution/VIndex', [
|
||||||
'members' => MemberResource::collection(Member::get()),
|
'allMembers' => MemberResource::collection(Member::get()),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,9 @@ class SolingenData extends Data implements PdfRepository
|
||||||
public string $eventName,
|
public string $eventName,
|
||||||
public string $dateFrom,
|
public string $dateFrom,
|
||||||
public string $dateUntil,
|
public string $dateUntil,
|
||||||
|
public array $members,
|
||||||
public ?string $filename = '',
|
public ?string $filename = '',
|
||||||
public $type = 'FK',
|
public $type = 'F',
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +29,7 @@ class SolingenData extends Data implements PdfRepository
|
||||||
eventName: $request->eventName,
|
eventName: $request->eventName,
|
||||||
dateFrom: $request->dateFrom,
|
dateFrom: $request->dateFrom,
|
||||||
dateUntil: $request->dateUntil,
|
dateUntil: $request->dateUntil,
|
||||||
|
members: $request->members,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +50,7 @@ class SolingenData extends Data implements PdfRepository
|
||||||
|
|
||||||
public function members(): Collection
|
public function members(): Collection
|
||||||
{
|
{
|
||||||
return Member::orderByRaw('lastname, firstname')->get();
|
return Member::whereIn('id', $this->members)->orderByRaw('lastname, firstname')->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function niceEventFrom(): string
|
public function niceEventFrom(): string
|
||||||
|
|
|
@ -1,14 +1,42 @@
|
||||||
<template>
|
<template>
|
||||||
<label class="flex flex-col relative field-switch cursor-pointer" :for="id" :class="{[`size-${outerSize}`]: true}">
|
<label class="flex flex-col relative field-switch cursor-pointer" :for="id" :class="{[`size-${outerSize}`]: true}">
|
||||||
<span v-if="label" class="font-semibold leading-none text-gray-400" :class="{
|
<span
|
||||||
'text-xs': size == 'sm',
|
v-if="label"
|
||||||
'text-sm': size === null
|
class="font-semibold leading-none text-gray-400"
|
||||||
}">{{ label }}</span>
|
:class="{
|
||||||
|
'text-xs': size == 'sm',
|
||||||
|
'text-sm': size === null,
|
||||||
|
}"
|
||||||
|
>{{ label }}</span
|
||||||
|
>
|
||||||
<div class="relative inner-field mt-1" :class="`h-field-${fieldSize}`">
|
<div class="relative inner-field mt-1" :class="`h-field-${fieldSize}`">
|
||||||
<input :id="id" type="checkbox" v-model="v" :disabled="disabled" class="invisible absolute" />
|
<input
|
||||||
<span class="relative cursor-pointer flex grow display" :class="{'bg-switch': v === true, 'bg-gray-700': v === false}">
|
:id="id"
|
||||||
<span><svg-sprite class="relative text-gray-400 flex-none" :class="{'w-2 h-2': size === 'sm' || size == 'xs', 'w-4 h-4': size === null}" src="check"></svg-sprite></span>
|
type="checkbox"
|
||||||
<span><svg-sprite class="relative text-gray-400 flex-none" :class="{'w-2 h-2': size === 'sm' || size == 'xs', 'w-4 h-4': size === null}" src="close"></svg-sprite></span>
|
:name="name"
|
||||||
|
:value="value"
|
||||||
|
v-model="v"
|
||||||
|
:disabled="disabled"
|
||||||
|
class="invisible absolute"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
class="relative cursor-pointer flex grow display"
|
||||||
|
:class="{'bg-switch': v === true, 'bg-gray-700': v === false}"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
><svg-sprite
|
||||||
|
class="relative text-gray-400 flex-none"
|
||||||
|
:class="{'w-2 h-2': size === 'sm' || size == 'xs', 'w-4 h-4': size === null}"
|
||||||
|
src="check"
|
||||||
|
></svg-sprite
|
||||||
|
></span>
|
||||||
|
<span
|
||||||
|
><svg-sprite
|
||||||
|
class="relative text-gray-400 flex-none"
|
||||||
|
:class="{'w-2 h-2': size === 'sm' || size == 'xs', 'w-4 h-4': size === null}"
|
||||||
|
src="close"
|
||||||
|
></svg-sprite
|
||||||
|
></span>
|
||||||
<var class="absolute overlay bg-gray-400 rounded top-0"></var>
|
<var class="absolute overlay bg-gray-400 rounded top-0"></var>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,33 +47,36 @@
|
||||||
export default {
|
export default {
|
||||||
model: {
|
model: {
|
||||||
prop: 'items',
|
prop: 'items',
|
||||||
event: 'input'
|
event: 'input',
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
inset: {
|
inset: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false,
|
||||||
},
|
},
|
||||||
size: {
|
size: {
|
||||||
default: null,
|
default: null,
|
||||||
required: false
|
required: false,
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
required: true
|
required: true,
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
default: '',
|
||||||
},
|
},
|
||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false,
|
||||||
},
|
},
|
||||||
value: {
|
value: {
|
||||||
default: false
|
default: false,
|
||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
default: false
|
default: false,
|
||||||
},
|
},
|
||||||
items: {
|
items: {
|
||||||
default: undefined
|
default: undefined,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
v: {
|
v: {
|
||||||
|
@ -59,7 +90,7 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var a = this.items.filter(i => i !== this.value);
|
var a = this.items.filter((i) => i !== this.value);
|
||||||
if (v) {
|
if (v) {
|
||||||
a.push(this.value);
|
a.push(this.value);
|
||||||
}
|
}
|
||||||
|
@ -76,21 +107,23 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.items.indexOf(this.value) !== -1;
|
return this.items.indexOf(this.value) !== -1;
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
fieldSize() {
|
fieldSize() {
|
||||||
var sizes = ['xxs', 'xs', 'sm', 'md', 'lg'];
|
var sizes = ['xxs', 'xs', 'sm', 'md', 'lg'];
|
||||||
|
|
||||||
var sizeIndex = sizes.findIndex(s => s === this.size);
|
var sizeIndex = sizes.findIndex((s) => s === this.size);
|
||||||
return sizes[this.inset ? sizeIndex : sizeIndex - 1];
|
return sizes[this.inset ? sizeIndex : sizeIndex - 1];
|
||||||
},
|
},
|
||||||
outerSize() {
|
outerSize() {
|
||||||
var sizes = ['xxs', 'xs', 'sm', 'md', 'lg'];
|
var sizes = ['xxs', 'xs', 'sm', 'md', 'lg'];
|
||||||
|
|
||||||
var sizeIndex = sizes.findIndex(s => s === this.size);
|
var sizeIndex = sizes.findIndex((s) => s === this.size);
|
||||||
if (!this.label || this.inset) { sizeIndex--; }
|
if (!this.label || this.inset) {
|
||||||
|
sizeIndex--;
|
||||||
|
}
|
||||||
return sizes[sizeIndex];
|
return sizes[sizeIndex];
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -17,6 +17,19 @@
|
||||||
label="Datum bis"
|
label="Datum bis"
|
||||||
required
|
required
|
||||||
></f-text>
|
></f-text>
|
||||||
|
|
||||||
|
<div class="col-span-2">
|
||||||
|
<f-switch
|
||||||
|
:id="`members-${member.id}`"
|
||||||
|
:key="member.id"
|
||||||
|
:label="`${member.firstname} ${member.lastname}`"
|
||||||
|
v-for="member in allMembers"
|
||||||
|
name="members[]"
|
||||||
|
:value="member.id"
|
||||||
|
v-model="values.members"
|
||||||
|
></f-switch>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
target="_BLANK"
|
target="_BLANK"
|
||||||
type="submit"
|
type="submit"
|
||||||
|
@ -34,6 +47,7 @@ export default {
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
values: {
|
values: {
|
||||||
|
members: [],
|
||||||
event_name: '',
|
event_name: '',
|
||||||
dateFrom: '',
|
dateFrom: '',
|
||||||
dateUntil: '',
|
dateUntil: '',
|
||||||
|
@ -41,7 +55,7 @@ export default {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
members: {},
|
allMembers: {},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue