added missing pages
This commit is contained in:
@@ -77,25 +77,25 @@ const filterContactPersons = async (req, res) => {
|
||||
console.log(configString, typeof configString);
|
||||
const config = JSON.parse(configString);
|
||||
const where = {};
|
||||
const having = [];
|
||||
|
||||
console.log(config, typeof config);
|
||||
console.log(config.selection);
|
||||
if (config.selection.id && config.selection.id === 'all') {
|
||||
// No additional filter needed for "all"
|
||||
} else if (config.selection.id) {
|
||||
where.id = config.selection.id;
|
||||
} else {
|
||||
const filters = [];
|
||||
|
||||
if (config.selection.types && config.selection.types.length > 0) {
|
||||
filters.push({ '$positions.id$': { [Op.in]: config.selection.types } });
|
||||
having.push({ '$positions.id$': { [Op.in]: config.selection.types } });
|
||||
}
|
||||
|
||||
if (config.selection.places && config.selection.places.length > 0) {
|
||||
filters.push({ '$events.eventPlaceId$': { [Op.in]: config.selection.places } });
|
||||
having.push({ '$events.eventPlaceId$': { [Op.in]: config.selection.places } });
|
||||
}
|
||||
|
||||
if (filters.length > 0) {
|
||||
where[Op.and] = filters;
|
||||
if (config.selection.positions && config.selection.positions.length > 0) {
|
||||
having.push({ '$positions.id$': { [Op.in]: config.selection.positions } });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,13 +106,16 @@ const filterContactPersons = async (req, res) => {
|
||||
model: Position,
|
||||
as: 'positions',
|
||||
through: { attributes: [] },
|
||||
required: true, // Ensure only contact persons with matching positions are included
|
||||
},
|
||||
{
|
||||
model: Event,
|
||||
as: 'events',
|
||||
through: { attributes: [] },
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
having: having.length > 0 ? { [Op.and]: having } : undefined,
|
||||
});
|
||||
|
||||
res.json(contactPersons);
|
||||
|
||||
BIN
public/images/uploads/3cb841cb-6764-4c27-b745-62efb91adb06.jpg
Normal file
BIN
public/images/uploads/3cb841cb-6764-4c27-b745-62efb91adb06.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 848 KiB |
BIN
public/images/uploads/59b29477-6997-4d3c-9010-54ba7c0a7ba3.jpg
Normal file
BIN
public/images/uploads/59b29477-6997-4d3c-9010-54ba7c0a7ba3.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
@@ -19,8 +19,8 @@
|
||||
label="caption" track-by="id" />
|
||||
</div>
|
||||
<div v-if="selectedTypes.some(type => type.id === 'position')">
|
||||
<label for="contact-select">Wählen Sie eine Position:</label>
|
||||
<multiselect id="contact-select" v-model="selectedPositions" :options="positions" :multiple="false"
|
||||
<label for="position-select">Wählen Sie eine Position:</label>
|
||||
<multiselect id="position-select" v-model="selectedPositions" :options="positions" :multiple="false"
|
||||
label="caption" track-by="id" />
|
||||
</div>
|
||||
<div v-if="selectedTypes.some(type => type.id === 'specific')">
|
||||
@@ -41,8 +41,7 @@
|
||||
<div>
|
||||
<label for="displayStyle">Anzeigen als</label>
|
||||
<select id="displayStyle" v-model="displayStyle">
|
||||
<option v-for="style in displayStyles" :value="style.id" :key="style.id">{{ style.label }}
|
||||
</option>
|
||||
<option v-for="style in displayStyles" :value="style.id" :key="style.id">{{ style.label }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -129,12 +128,13 @@ export default {
|
||||
selectedContact.value = null;
|
||||
} else if (selectedTypes.value.some(type => type.id === 'types')) {
|
||||
selectedContact.value = null;
|
||||
} else if (selectedPositions.value.some(type => type.id === 'position')) {
|
||||
} else if (selectedTypes.value.some(type => type.id === 'position')) {
|
||||
selectedContact.value = null;
|
||||
}
|
||||
};
|
||||
|
||||
const confirmAddContactConfiguration = () => {
|
||||
console.log('Selected positions:', selectedPositions.value); // Log the selected positions
|
||||
let configString = '';
|
||||
const displayArray = Object.keys(displayOptions.value).filter((key) => displayOptions.value[key]);
|
||||
let selection = {};
|
||||
@@ -145,7 +145,7 @@ export default {
|
||||
} else {
|
||||
selection['types'] = selectedEventTypes.value.map((type) => type.id);
|
||||
selection['places'] = selectedPlaces.value.map((place) => place.id);
|
||||
selection['positions'] = selectedPositions.value((postion) => postion.id);
|
||||
selection['positions'] = Array.isArray(selectedPositions.value) ? selectedPositions.value.map((position) => position.id) : [];
|
||||
}
|
||||
const contact = {
|
||||
selection: selection,
|
||||
@@ -153,6 +153,7 @@ export default {
|
||||
style: displayStyle.value
|
||||
}
|
||||
configString = '{{ contact:' + JSON.stringify(contact) + ' }}';
|
||||
console.log('Emitting config:', configString); // Log the emitted config
|
||||
emit('confirm', configString);
|
||||
closeAddContactDialog();
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div v-if="config && config.style === 'box' && contacts && contacts.length && contacts.length > 0">
|
||||
<div v-for="contact in contacts" :key="contact.id">
|
||||
<h3>{{ contact.name }}</h3>
|
||||
<div v-for="contact in contacts" :key="contact.id" class="contact-box">
|
||||
<p>{{ contact.name }}</p>
|
||||
<p v-if="displayOptions.includes('phone')">Telefon: {{ contact.phone }}</p>
|
||||
<p v-if="displayOptions.includes('street')">Straße: {{ contact.street }}</p>
|
||||
<p v-if="displayOptions.includes('zipcode')">Postleitzahl: {{ contact.zipcode }}</p>
|
||||
@@ -62,5 +62,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* Add styles if needed */
|
||||
.contact-box p {
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
23
src/content/AddressesContent.vue
Normal file
23
src/content/AddressesContent.vue
Normal file
@@ -0,0 +1,23 @@
|
||||
<template>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
@@ -87,6 +87,7 @@
|
||||
|
||||
<WorshipDialog ref="worshipDialog" @confirm="insertWorshipList" />
|
||||
<AddImageDialog ref="addImageDialog" @confirm="insertImage" />
|
||||
<AddContactDialog ref="addContactDialog" @confirm="insertContact" />
|
||||
<AddEventDialog ref="addEventDialog" @confirm="insertEvent" />
|
||||
<AddLinkDialog ref="addLinkDialog" @confirm="insertLink" />
|
||||
<AddDownloadDialog ref="addDownloadDialog" @confirm="insertDownload" />
|
||||
@@ -116,6 +117,7 @@ import Color from '@tiptap/extension-color';
|
||||
import { CustomTableCell, CustomTableHeader } from '../../extensions/CustomTableCell';
|
||||
import WorshipDialog from '@/components/WorshipDialog.vue';
|
||||
import AddImageDialog from '@/components/AddImageDialog.vue';
|
||||
import AddContactDialog from '@/components/AddContactDialog.vue';
|
||||
import AddEventDialog from '@/components/AddEventDialog.vue';
|
||||
import AddLinkDialog from '@/components/AddLinkDialog.vue';
|
||||
import AddDownloadDialog from '@/components/AddDownloadDialog.vue';
|
||||
@@ -146,6 +148,7 @@ export default {
|
||||
AlignLeftBoxIcon,
|
||||
StatsReportIcon,
|
||||
AddEventDialog,
|
||||
AddContactDialog,
|
||||
AddLinkDialog,
|
||||
AddDownloadDialog,
|
||||
AddInstitutionDialog,
|
||||
@@ -160,6 +163,7 @@ export default {
|
||||
const worshipDialog = ref(null);
|
||||
const addImageDialog = ref(null);
|
||||
const addEventDialog = ref(null);
|
||||
const addContactDialog = ref(null);
|
||||
const addLinkDialog = ref(null);
|
||||
const addDownloadDialog = ref(null);
|
||||
const addInstitutionDialog = ref(null);
|
||||
@@ -303,6 +307,16 @@ export default {
|
||||
}
|
||||
};
|
||||
|
||||
const openAddContactDialog = () => {
|
||||
addContactDialog.value.openAddContactDialog();
|
||||
};
|
||||
|
||||
const insertContact = (contactPersonString) => {
|
||||
if (editor.value) {
|
||||
editor.value.chain().focus().insertContent(contactPersonString).run();
|
||||
}
|
||||
};
|
||||
|
||||
const openAddLinkDialog = () => {
|
||||
addLinkDialog.value.openAddLinkDialog();
|
||||
};
|
||||
@@ -393,6 +407,9 @@ export default {
|
||||
insertImage,
|
||||
addEventDialog,
|
||||
openAddEventsDialog: openAddEventDialog,
|
||||
addContactDialog,
|
||||
openAddContactDialog,
|
||||
insertContact,
|
||||
insertEvent,
|
||||
addLinkDialog,
|
||||
openAddLinkDialog,
|
||||
|
||||
@@ -1,11 +1,23 @@
|
||||
<template>
|
||||
<div>
|
||||
<h2>Kindergottesdiest</h2>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'ChildrensWorshipContent',
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
25
src/content/meetingpoint/ConfirmationClassesContent.vue
Normal file
25
src/content/meetingpoint/ConfirmationClassesContent.vue
Normal file
@@ -0,0 +1,25 @@
|
||||
<template>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
25
src/content/meetingpoint/HeliandPathfinderContent.vue
Normal file
25
src/content/meetingpoint/HeliandPathfinderContent.vue
Normal file
@@ -0,0 +1,25 @@
|
||||
<template>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
25
src/content/meetingpoint/TeenEveningContent.vue
Normal file
25
src/content/meetingpoint/TeenEveningContent.vue
Normal file
@@ -0,0 +1,25 @@
|
||||
<template>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
25
src/content/meetingpoint/YouthMinistryContent.vue
Normal file
25
src/content/meetingpoint/YouthMinistryContent.vue
Normal file
@@ -0,0 +1,25 @@
|
||||
<template>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
@@ -1,11 +1,25 @@
|
||||
<template>
|
||||
<div>
|
||||
<h2>Flötenkinder</h2>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'FlootChildrenContent',
|
||||
};
|
||||
</script>
|
||||
25
src/content/music/MiriamkantoreiContent.vue
Normal file
25
src/content/music/MiriamkantoreiContent.vue
Normal file
@@ -0,0 +1,25 @@
|
||||
<template>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
23
src/content/music/VocalEnsembleContent.vue
Normal file
23
src/content/music/VocalEnsembleContent.vue
Normal file
@@ -0,0 +1,23 @@
|
||||
<template>
|
||||
<div class="some-page">
|
||||
<ContentComponent :link="currentLink" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ContentComponent from '@/components/ContentComponent.vue';
|
||||
|
||||
export default {
|
||||
name: 'SomePage',
|
||||
components: {
|
||||
ContentComponent,
|
||||
},
|
||||
computed: {
|
||||
currentLink() {
|
||||
return this.$route.path;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
Reference in New Issue
Block a user