forked from potsda.mn/mobilizon
Merge branch 'multiple-fixes' into 'master'
Multiples fixes See merge request framasoft/mobilizon!471
This commit is contained in:
commit
79fa092926
|
@ -34,10 +34,13 @@
|
||||||
<span class="column is-narrow">
|
<span class="column is-narrow">
|
||||||
<b-icon icon="earth" v-if="participation.event.visibility === EventVisibility.PUBLIC" />
|
<b-icon icon="earth" v-if="participation.event.visibility === EventVisibility.PUBLIC" />
|
||||||
<b-icon
|
<b-icon
|
||||||
icon="lock-open"
|
icon="link"
|
||||||
v-if="participation.event.visibility === EventVisibility.UNLISTED"
|
v-else-if="participation.event.visibility === EventVisibility.UNLISTED"
|
||||||
|
/>
|
||||||
|
<b-icon
|
||||||
|
icon="lock"
|
||||||
|
v-else-if="participation.event.visibility === EventVisibility.PRIVATE"
|
||||||
/>
|
/>
|
||||||
<b-icon icon="lock" v-if="participation.event.visibility === EventVisibility.PRIVATE" />
|
|
||||||
</span>
|
</span>
|
||||||
<span class="column is-narrow participant-stats">
|
<span class="column is-narrow participant-stats">
|
||||||
<span v-if="participation.event.options.maximumAttendeeCapacity !== 0">
|
<span v-if="participation.event.options.maximumAttendeeCapacity !== 0">
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<span class="column is-narrow">
|
<span class="column is-narrow">
|
||||||
<b-icon icon="earth" v-if="event.visibility === EventVisibility.PUBLIC" />
|
<b-icon icon="earth" v-if="event.visibility === EventVisibility.PUBLIC" />
|
||||||
<b-icon icon="lock-open" v-if="event.visibility === EventVisibility.UNLISTED" />
|
<b-icon icon="link" v-if="event.visibility === EventVisibility.UNLISTED" />
|
||||||
<b-icon icon="lock" v-if="event.visibility === EventVisibility.PRIVATE" />
|
<b-icon icon="lock" v-if="event.visibility === EventVisibility.PRIVATE" />
|
||||||
</span>
|
</span>
|
||||||
<span class="column is-narrow participant-stats">
|
<span class="column is-narrow participant-stats">
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<footer class="footer" ref="footer">
|
<footer class="footer" ref="footer">
|
||||||
<mobilizon-logo :invert="true" class="logo" />
|
<mobilizon-logo :invert="true" class="logo" />
|
||||||
<img src="../assets/footer.png" :alt="$t('World map')" />
|
<!-- <img src="../assets/footer.png" :alt="$t('World map')" /> -->
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://joinmobilizon.org">{{ $t("About") }}</a>
|
<router-link :to="{ name: RouteName.ABOUT }">{{ $t("About") }}</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link :to="{ name: RouteName.TERMS }">{{ $t("Terms") }}</router-link>
|
<router-link :to="{ name: RouteName.TERMS }">{{ $t("Terms") }}</router-link>
|
||||||
|
@ -16,14 +16,16 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="content has-text-centered">
|
<div class="content has-text-centered">
|
||||||
<span>
|
<i18n
|
||||||
{{
|
tag="span"
|
||||||
$t(
|
path="Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}."
|
||||||
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks",
|
>
|
||||||
{ date: new Date().getFullYear() }
|
<a slot="mobilizon" href="https://joinmobilizon.org">{{ $t("Mobilizon") }}</a>
|
||||||
)
|
<span slot="date">{{ new Date().getFullYear() }}</span>
|
||||||
}}
|
<a href="https://joinmobilizon.org/hall-of-fame" slot="contributors">{{
|
||||||
</span>
|
$t("more than 1360 contributors")
|
||||||
|
}}</a>
|
||||||
|
</i18n>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</template>
|
</template>
|
||||||
|
@ -49,11 +51,13 @@ footer.footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
fill: $secondary;
|
fill: $secondary;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
max-width: 300px;
|
max-width: 300px;
|
||||||
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.content {
|
div.content {
|
||||||
|
@ -63,13 +67,15 @@ footer.footer {
|
||||||
ul li {
|
ul li {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
margin: auto 5px;
|
margin: auto 5px;
|
||||||
|
a {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #eee;
|
color: $white;
|
||||||
font-size: 1.5rem;
|
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
text-decoration-color: $secondary;
|
text-decoration-color: $secondary;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -219,9 +219,15 @@ export default class NavBar extends Vue {
|
||||||
@import "../variables.scss";
|
@import "../variables.scss";
|
||||||
|
|
||||||
nav {
|
nav {
|
||||||
.navbar-item svg {
|
.navbar-item {
|
||||||
|
a.button.is-success {
|
||||||
|
background: #1e7d97;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
height: 1.75rem;
|
height: 1.75rem;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.navbar-dropdown .navbar-item {
|
.navbar-dropdown .navbar-item {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
|
@ -23,12 +23,15 @@ export const FETCH_PERSON = gql`
|
||||||
token
|
token
|
||||||
}
|
}
|
||||||
organizedEvents {
|
organizedEvents {
|
||||||
|
total
|
||||||
|
elements {
|
||||||
uuid
|
uuid
|
||||||
title
|
title
|
||||||
beginsOn
|
beginsOn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const GET_PERSON = gql`
|
export const GET_PERSON = gql`
|
||||||
|
|
|
@ -96,7 +96,6 @@ export const FETCH_EVENT = gql`
|
||||||
name
|
name
|
||||||
},
|
},
|
||||||
publishAt,
|
publishAt,
|
||||||
category,
|
|
||||||
onlineAddress,
|
onlineAddress,
|
||||||
phoneAddress,
|
phoneAddress,
|
||||||
physicalAddress {
|
physicalAddress {
|
||||||
|
|
|
@ -484,7 +484,6 @@
|
||||||
"{count} participants": "No participants yet | One participant | {count} participants",
|
"{count} participants": "No participants yet | One participant | {count} participants",
|
||||||
"{count} requests waiting": "{count} requests waiting",
|
"{count} requests waiting": "{count} requests waiting",
|
||||||
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.",
|
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.",
|
||||||
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks",
|
|
||||||
"© The OpenStreetMap Contributors": "© The OpenStreetMap Contributors",
|
"© The OpenStreetMap Contributors": "© The OpenStreetMap Contributors",
|
||||||
"@{username} ({role})": "@{username} ({role})",
|
"@{username} ({role})": "@{username} ({role})",
|
||||||
"@{username}": "@{username}",
|
"@{username}": "@{username}",
|
||||||
|
@ -641,5 +640,7 @@
|
||||||
"terms of service": "terms of service",
|
"terms of service": "terms of service",
|
||||||
"Please read the instance's {fullRules}": "Please read the instance's {fullRules}",
|
"Please read the instance's {fullRules}": "Please read the instance's {fullRules}",
|
||||||
"I agree to the {instanceRules} and {termsOfService}": "I agree to the {instanceRules} and {termsOfService}",
|
"I agree to the {instanceRules} and {termsOfService}": "I agree to the {instanceRules} and {termsOfService}",
|
||||||
"This email is already used.": "This email is already used."
|
"This email is already used.": "This email is already used.",
|
||||||
|
"Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.",
|
||||||
|
"more than 1360 contributors": "more than 1360 contributors"
|
||||||
}
|
}
|
||||||
|
|
|
@ -591,7 +591,6 @@
|
||||||
"{going}/{capacity} available places": "Pas de places restantes|{going}/{capacity} places restantes",
|
"{going}/{capacity} available places": "Pas de places restantes|{going}/{capacity} places restantes",
|
||||||
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garantit {respect} des personnes qui l'utiliseront. Puisque {source}, il est publiquement auditable, ce qui garantit sa transparence.",
|
"{license} guarantees {respect} of the people who will use it. Since {source}, anyone can audit it, which guarantees its transparency.": "{license} garantit {respect} des personnes qui l'utiliseront. Puisque {source}, il est publiquement auditable, ce qui garantit sa transparence.",
|
||||||
"{title} ({count} todos)": "{title} ({count} todos)",
|
"{title} ({count} todos)": "{title} ({count} todos)",
|
||||||
"© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© Les contributeurs de Mobilizon {date} - Fait avec Elixir, Phoenix, VueJS & et de l'amour et des semaines",
|
|
||||||
"© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap",
|
"© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap",
|
||||||
"Participation notifications": "Notifications de participation",
|
"Participation notifications": "Notifications de participation",
|
||||||
"We'll always send you emails to notify about important event updates": "Nous vous enverrons toujours des emails pour vous notifier à propos des mises à jour importantes des événements",
|
"We'll always send you emails to notify about important event updates": "Nous vous enverrons toujours des emails pour vous notifier à propos des mises à jour importantes des événements",
|
||||||
|
@ -664,5 +663,7 @@
|
||||||
"terms of service": "conditions générales d'utilisation",
|
"terms of service": "conditions générales d'utilisation",
|
||||||
"Please read the instance's {fullRules}": "Merci de lire les {fullRules} de l'instance",
|
"Please read the instance's {fullRules}": "Merci de lire les {fullRules} de l'instance",
|
||||||
"I agree to the {instanceRules} and {termsOfService}": "J'accepte les {instanceRules} et les {termsOfService}",
|
"I agree to the {instanceRules} and {termsOfService}": "J'accepte les {instanceRules} et les {termsOfService}",
|
||||||
"This email is already used.": "Cette adresse email est déjà utilisée."
|
"This email is already used.": "Cette adresse email est déjà utilisée.",
|
||||||
|
"Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}.": "Propulsé par {mobilizon}. © 2018 - {date} Les contributeur·ices Mobilizon - Fait avec le soutien financier de {contributors}.",
|
||||||
|
"more than 1360 contributors": "plus de 1360 contributeur·ices"
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,9 @@ export default class EventMixin extends mixins(Vue) {
|
||||||
console.error("Cannot update participation cache, because of null value.");
|
console.error("Cannot update participation cache, because of null value.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[participation] = person.participations;
|
[participation] = person.participations.elements;
|
||||||
person.participations = [];
|
person.participations.elements = [];
|
||||||
|
person.participations.total = 0;
|
||||||
store.writeQuery({
|
store.writeQuery({
|
||||||
query: EVENT_PERSON_PARTICIPATION,
|
query: EVENT_PERSON_PARTICIPATION,
|
||||||
variables: { eventId: event.id, actorId },
|
variables: { eventId: event.id, actorId },
|
||||||
|
@ -89,7 +90,7 @@ export default class EventMixin extends mixins(Vue) {
|
||||||
|
|
||||||
protected async openDeleteEventModal(event: IEvent, currentActor: IPerson) {
|
protected async openDeleteEventModal(event: IEvent, currentActor: IPerson) {
|
||||||
function escapeRegExp(string: string) {
|
function escapeRegExp(string: string) {
|
||||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
||||||
}
|
}
|
||||||
const participantsLength = event.participantStats.participant;
|
const participantsLength = event.participantStats.participant;
|
||||||
const prefix = participantsLength
|
const prefix = participantsLength
|
||||||
|
|
|
@ -13,7 +13,7 @@ export interface IFeedToken {
|
||||||
export interface IPerson extends IActor {
|
export interface IPerson extends IActor {
|
||||||
feedTokens: IFeedToken[];
|
feedTokens: IFeedToken[];
|
||||||
goingToEvents: IEvent[];
|
goingToEvents: IEvent[];
|
||||||
participations: IParticipant[];
|
participations: Paginate<IParticipant>;
|
||||||
memberships: Paginate<IMember>;
|
memberships: Paginate<IMember>;
|
||||||
user?: ICurrentUser;
|
user?: ICurrentUser;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ export class Person extends Actor implements IPerson {
|
||||||
|
|
||||||
goingToEvents: IEvent[] = [];
|
goingToEvents: IEvent[] = [];
|
||||||
|
|
||||||
participations: IParticipant[] = [];
|
participations!: Paginate<IParticipant>;
|
||||||
|
|
||||||
memberships!: Paginate<IMember>;
|
memberships!: Paginate<IMember>;
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,6 @@ export interface IEvent {
|
||||||
title: string;
|
title: string;
|
||||||
slug: string;
|
slug: string;
|
||||||
description: string;
|
description: string;
|
||||||
category: Category | null;
|
|
||||||
beginsOn: Date;
|
beginsOn: Date;
|
||||||
endsOn: Date | null;
|
endsOn: Date | null;
|
||||||
publishAt: Date;
|
publishAt: Date;
|
||||||
|
@ -229,8 +228,6 @@ export class EventModel implements IEvent {
|
||||||
|
|
||||||
visibility = EventVisibility.PUBLIC;
|
visibility = EventVisibility.PUBLIC;
|
||||||
|
|
||||||
category: Category | null = Category.MEETING;
|
|
||||||
|
|
||||||
joinOptions = EventJoinOptions.FREE;
|
joinOptions = EventJoinOptions.FREE;
|
||||||
|
|
||||||
status = EventStatus.CONFIRMED;
|
status = EventStatus.CONFIRMED;
|
||||||
|
@ -319,7 +316,6 @@ export class EventModel implements IEvent {
|
||||||
picture: this.picture,
|
picture: this.picture,
|
||||||
onlineAddress: this.onlineAddress,
|
onlineAddress: this.onlineAddress,
|
||||||
phoneAddress: this.phoneAddress,
|
phoneAddress: this.phoneAddress,
|
||||||
category: this.category,
|
|
||||||
physicalAddress: this.physicalAddress,
|
physicalAddress: this.physicalAddress,
|
||||||
options: this.options,
|
options: this.options,
|
||||||
// organizerActorId: this.organizerActor && this.organizerActor.id ? this.organizerActor.id : null,
|
// organizerActorId: this.organizerActor && this.organizerActor.id ? this.organizerActor.id : null,
|
||||||
|
|
|
@ -6,30 +6,38 @@ $primary-invert: findColorInvert($primary);
|
||||||
$secondary: #ffd599;
|
$secondary: #ffd599;
|
||||||
$secondary-invert: findColorInvert($secondary);
|
$secondary-invert: findColorInvert($secondary);
|
||||||
|
|
||||||
$success: #1E7D97;
|
$success: #0eccaf;
|
||||||
$success-invert: findColorInvert($success);
|
$success-invert: findColorInvert($success);
|
||||||
$info: #36bcd4;
|
$info: #36bcd4;
|
||||||
$info-invert: findColorInvert($info);
|
$info-invert: findColorInvert($info);
|
||||||
$danger: #ff7061;
|
$danger: #ff7061;
|
||||||
$danger-invert: findColorInvert($danger);
|
$danger-invert: findColorInvert($danger);
|
||||||
|
|
||||||
$colors: map-merge($colors,
|
$colors: map-merge(
|
||||||
("primary": ($primary,
|
$colors,
|
||||||
|
(
|
||||||
|
"primary": (
|
||||||
|
$primary,
|
||||||
$primary-invert,
|
$primary-invert,
|
||||||
),
|
),
|
||||||
"secondary": ($secondary,
|
"secondary": (
|
||||||
|
$secondary,
|
||||||
$secondary-invert,
|
$secondary-invert,
|
||||||
),
|
),
|
||||||
"success": ($success,
|
"success": (
|
||||||
|
$success,
|
||||||
$success-invert,
|
$success-invert,
|
||||||
),
|
),
|
||||||
"info": ($info,
|
"info": (
|
||||||
|
$info,
|
||||||
$info-invert,
|
$info-invert,
|
||||||
),
|
),
|
||||||
"danger": ($danger,
|
"danger": (
|
||||||
|
$danger,
|
||||||
$danger-invert,
|
$danger-invert,
|
||||||
),
|
),
|
||||||
));
|
)
|
||||||
|
);
|
||||||
|
|
||||||
// Navbar
|
// Navbar
|
||||||
$navbar-background-color: $secondary;
|
$navbar-background-color: $secondary;
|
||||||
|
@ -37,7 +45,7 @@ $navbar-item-color: $primary;
|
||||||
$navbar-height: 4rem;
|
$navbar-height: 4rem;
|
||||||
|
|
||||||
// Footer
|
// Footer
|
||||||
$footer-padding: 3rem 1.5rem 4rem;
|
$footer-padding: 3rem 1.5rem 1rem;
|
||||||
$footer-background-color: $primary;
|
$footer-background-color: $primary;
|
||||||
|
|
||||||
$body-background-color: #efeef4;
|
$body-background-color: #efeef4;
|
||||||
|
@ -49,11 +57,7 @@ main>.container {
|
||||||
}
|
}
|
||||||
|
|
||||||
$title-color: #3c376e;
|
$title-color: #3c376e;
|
||||||
$title-family: "Liberation Sans",
|
$title-family: "Liberation Sans", "Helvetica Neue", Roboto, Helvetica, Arial,
|
||||||
"Helvetica Neue",
|
|
||||||
Roboto,
|
|
||||||
Helvetica,
|
|
||||||
Arial,
|
|
||||||
serif;
|
serif;
|
||||||
$title-weight: 700;
|
$title-weight: 700;
|
||||||
$title-size: 40px;
|
$title-size: 40px;
|
||||||
|
@ -61,17 +65,12 @@ $title-sub-size: 45px;
|
||||||
$title-sup-size: 30px;
|
$title-sup-size: 30px;
|
||||||
|
|
||||||
$subtitle-color: #3a384c;
|
$subtitle-color: #3a384c;
|
||||||
$subtitle-family: "Liberation Sans",
|
$subtitle-family: "Liberation Sans", "Helvetica Neue", Roboto, Helvetica, Arial,
|
||||||
"Helvetica Neue",
|
|
||||||
Roboto,
|
|
||||||
Helvetica,
|
|
||||||
Arial,
|
|
||||||
serif;
|
serif;
|
||||||
$subtitle-weight: 400;
|
$subtitle-weight: 400;
|
||||||
$subtitle-size: 32px;
|
$subtitle-size: 32px;
|
||||||
$subtitle-sub-size: 30px;
|
$subtitle-sub-size: 30px;
|
||||||
$subtitle-sup-size: 15px;
|
$subtitle-sup-size: 15px;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin: 30px auto 45px;
|
margin: 30px auto 45px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -444,11 +444,6 @@ export default class EditEvent extends Vue {
|
||||||
|
|
||||||
endsOnNull = false;
|
endsOnNull = false;
|
||||||
|
|
||||||
created() {
|
|
||||||
this.initializeEvent();
|
|
||||||
this.unmodifiedEvent = JSON.parse(JSON.stringify(this.event.toEditJSON()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Watch("eventId", { immediate: true })
|
@Watch("eventId", { immediate: true })
|
||||||
resetFormForCreation(eventId: string) {
|
resetFormForCreation(eventId: string) {
|
||||||
if (eventId === undefined) {
|
if (eventId === undefined) {
|
||||||
|
@ -486,10 +481,12 @@ export default class EditEvent extends Vue {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.observer.observe(this.$refs.bottomObserver as Element);
|
this.observer.observe(this.$refs.bottomObserver as Element);
|
||||||
this.unmodifiedEvent = JSON.parse(JSON.stringify(this.event.toEditJSON()));
|
|
||||||
|
|
||||||
this.pictureFile = await buildFileFromIPicture(this.event.picture);
|
this.pictureFile = await buildFileFromIPicture(this.event.picture);
|
||||||
this.limitedPlaces = this.event.options.maximumAttendeeCapacity > 0;
|
this.limitedPlaces = this.event.options.maximumAttendeeCapacity > 0;
|
||||||
|
if (!(this.isUpdate || this.isDuplicate)) {
|
||||||
|
this.initializeEvent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createOrUpdateDraft(e: Event) {
|
createOrUpdateDraft(e: Event) {
|
||||||
|
@ -513,6 +510,13 @@ export default class EditEvent extends Vue {
|
||||||
this.event.organizerActor = this.currentActor;
|
this.event.organizerActor = this.currentActor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Watch("event")
|
||||||
|
setInitialData() {
|
||||||
|
if (this.isUpdate && this.unmodifiedEvent === undefined && this.event && this.event.uuid) {
|
||||||
|
this.unmodifiedEvent = JSON.parse(JSON.stringify(this.event.toEditJSON()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
resetAttributedToOnOrganizerChange() {
|
resetAttributedToOnOrganizerChange() {
|
||||||
this.event.attributedTo = new Group();
|
this.event.attributedTo = new Group();
|
||||||
}
|
}
|
||||||
|
@ -621,7 +625,9 @@ export default class EditEvent extends Vue {
|
||||||
person: {
|
person: {
|
||||||
__typename: "Person",
|
__typename: "Person",
|
||||||
id: organizerActor.id,
|
id: organizerActor.id,
|
||||||
participations: [
|
participations: {
|
||||||
|
total: 1,
|
||||||
|
elements: [
|
||||||
{
|
{
|
||||||
__typename: "Participant",
|
__typename: "Participant",
|
||||||
id: "unknown",
|
id: "unknown",
|
||||||
|
@ -638,6 +644,7 @@ export default class EditEvent extends Vue {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -592,7 +592,7 @@ import PopoverActorCard from "../../components/Account/PopoverActorCard.vue";
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
update: (data) => {
|
update: (data) => {
|
||||||
if (data && data.person) return data.person.participations;
|
if (data && data.person) return data.person.participations.elements;
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
skip() {
|
skip() {
|
||||||
|
@ -809,7 +809,8 @@ export default class Event extends EventMixin {
|
||||||
console.error("Cannot update participation cache, because of null value.");
|
console.error("Cannot update participation cache, because of null value.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
person.participations.push(data.joinEvent);
|
person.participations.elements.push(data.joinEvent);
|
||||||
|
person.participations.total += 1;
|
||||||
store.writeQuery({
|
store.writeQuery({
|
||||||
query: EVENT_PERSON_PARTICIPATION,
|
query: EVENT_PERSON_PARTICIPATION,
|
||||||
variables: { eventId: this.event.id, actorId: identity.id },
|
variables: { eventId: this.event.id, actorId: identity.id },
|
||||||
|
|
Loading…
Reference in a new issue