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