@glissandoo/lib 1.50.0 → 1.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/functions/event.d.ts +7 -1
- package/functions/eventPlayer.d.ts +5 -0
- package/functions/index.d.ts +4 -1
- package/functions/index.js +4 -1
- package/functions/regions.js +4 -1
- package/helpers/appScenes.d.ts +1 -0
- package/helpers/appScenes.js +1 -0
- package/helpers/errors.d.ts +3 -0
- package/helpers/errors.js +3 -0
- package/helpers/notifications/index.d.ts +7 -1
- package/helpers/notifications/index.js +36 -4
- package/lang/ca.json +28 -4
- package/lang/de.json +28 -4
- package/lang/en.json +28 -4
- package/lang/es.json +28 -4
- package/lang/eu.json +28 -4
- package/lang/gl.json +28 -4
- package/lang/pt.json +28 -4
- package/models/Evento/Player/index.d.ts +3 -2
- package/models/Evento/Player/index.js +11 -8
- package/models/Evento/Player/types.d.ts +24 -0
- package/models/Evento/index.d.ts +22 -3
- package/models/Evento/index.js +30 -3
- package/models/Evento/types.d.ts +9 -0
- package/models/Evento/types.js +6 -1
- package/models/Group/Event/index.d.ts +3 -0
- package/models/Group/Event/index.js +9 -0
- package/models/Group/Event/types.d.ts +5 -1
- package/models/Group/Player/Event/types.d.ts +2 -0
- package/models/Group/Player/index.d.ts +9 -0
- package/models/Group/Player/index.js +27 -0
- package/models/Group/Player/types.d.ts +9 -0
- package/models/Notification/types.d.ts +14 -2
- package/models/Notification/types.js +14 -2
- package/models/User/types.d.ts +3 -1
- package/models/User/types.js +2 -0
- package/package.json +1 -1
package/lang/gl.json
CHANGED
|
@@ -168,6 +168,10 @@
|
|
|
168
168
|
"performance.edit.stage.title": "Concerto - o plan de colocación cambiou",
|
|
169
169
|
"performance.edit.title.text": "Actualizouse o título de {string:event.0.displayName}",
|
|
170
170
|
"performance.edit.title.title": "Acto - cambio de título",
|
|
171
|
+
"performance.interest.confirm.text": "{string:user.0.displayName} está interesado en {string:event.0.displayName}",
|
|
172
|
+
"performance.interest.confirm.title": "Interese confirmado para o concerto",
|
|
173
|
+
"performance.interest.lose.text": "{string:user.0.displayName} xa non está interesado en {string:event.0.displayName}",
|
|
174
|
+
"performance.interest.lose.title": "Interese perdido para o concerto",
|
|
171
175
|
"performance.players.add.text": "Engadiuse a {string:event.0.displayName}",
|
|
172
176
|
"performance.players.add.title": "Novo acto",
|
|
173
177
|
"performance.players.remove.text": "Foi eliminado de {string:event.0.displayName}",
|
|
@@ -176,10 +180,18 @@
|
|
|
176
180
|
"performance.reminder.title": "RSVP",
|
|
177
181
|
"performance.reminderDatetime.confirmed.text": "{string:event.0.displayName} de {string:group.0.displayName} mañá ás {date:event.0.[datetime,timezone]:time}",
|
|
178
182
|
"performance.reminderDatetime.confirmed.title": "Recordatorio de concerto",
|
|
179
|
-
"performance.
|
|
180
|
-
"performance.
|
|
183
|
+
"performance.reminderDeadlineEnded.selectionModeClosedOrNotActive.text": "A data límite de resposta para {string:event.0.displayName} rematou",
|
|
184
|
+
"performance.reminderDeadlineEnded.selectionModeClosedOrNotActive.title": "Data límite de resposta para o concerto rematada",
|
|
185
|
+
"performance.reminderDeadlineEnded.selectionModeOpen.text": "A data límite de resposta para {string:event.0.displayName} rematou. Lembra seleccionar quen participará.",
|
|
186
|
+
"performance.reminderDeadlineEnded.selectionModeOpen.title": "Data límite de resposta para o concerto rematada",
|
|
187
|
+
"performance.reminderDeadlineSoon.pending.text": "O prazo para confirmar a túa asistencia a {string:event.0.displayName} de {string:group.0.displayName} rematará en {string:extra.hours} horas",
|
|
188
|
+
"performance.reminderDeadlineSoon.pending.title": "Recordatorio do prazo de resposta do concerto",
|
|
181
189
|
"performance.rollCallReminder.text": "Agora é o mellor momento para rexistrar quen asistiu ao ensaio.",
|
|
182
190
|
"performance.rollCallReminder.title": "Pode pasar ao ensaio",
|
|
191
|
+
"performance.selection.deselect.text": "Fuches deseleccionado para participar en {string:event.0.displayName}",
|
|
192
|
+
"performance.selection.deselect.title": "Deselccionado para o concerto",
|
|
193
|
+
"performance.selection.select.text": "Fuches seleccionado para participar en {string:event.0.displayName}",
|
|
194
|
+
"performance.selection.select.title": "Seleccionado para o concerto",
|
|
183
195
|
"practice": "Ensaio",
|
|
184
196
|
"practice.assistance.confirm.byAdmin.text": "Un administrador confirmou a súa asistencia ao ensaio o {date:event.0.[datetime,timezone]:date}",
|
|
185
197
|
"practice.assistance.confirm.byAdmin.title": "Asistencia confirmada por un administrador",
|
|
@@ -209,6 +221,10 @@
|
|
|
209
221
|
"practice.edit.stage.title": "Ensaio - cambio de plan de colocación",
|
|
210
222
|
"practice.edit.title.text": "Actualizouse o título do ensaio o {date:event.0.[datetime,timezone]:date}",
|
|
211
223
|
"practice.edit.title.title": "Ensaio - cambio de título",
|
|
224
|
+
"practice.interest.confirm.text": "{string:user.0.displayName} está interesado no ensaio de {string:group.0.displayName} o {date:event.0.[datetime,timezone]:date}",
|
|
225
|
+
"practice.interest.confirm.title": "Interese confirmado para o ensaio",
|
|
226
|
+
"practice.interest.lose.text": "{string:user.0.displayName} xa non está interesado no ensaio de {string:group.0.displayName} o {date:event.0.[datetime,timezone]:date}",
|
|
227
|
+
"practice.interest.lose.title": "Interese perdido para o ensaio",
|
|
212
228
|
"practice.players.add.text": "Engadiute o novo ensaio de {string:group.0.displayName} o {date:event.0.[datetime,timezone]:datetime}",
|
|
213
229
|
"practice.players.add.title": "Nova proba",
|
|
214
230
|
"practice.players.remove.text": "Eliminárono da proba de {string:group.0.displayName} de {date:event.0.[datetime,timezone]:date}",
|
|
@@ -217,10 +233,18 @@
|
|
|
217
233
|
"practice.reminder.title": "RSVP",
|
|
218
234
|
"practice.reminderDatetime.confirmed.text": "{string:group.0.displayName} ensaio mañá ás {date:event.0.[datetime,timezone]:time}",
|
|
219
235
|
"practice.reminderDatetime.confirmed.title": "Recordatorio de ensaio",
|
|
220
|
-
"practice.
|
|
221
|
-
"practice.
|
|
236
|
+
"practice.reminderDeadlineEnded.selectionModeClosedOrNotActive.text": "A data límite de resposta para o ensaio de {string:group.0.displayName} o {date:event.0.[datetime,timezone]:date} rematou",
|
|
237
|
+
"practice.reminderDeadlineEnded.selectionModeClosedOrNotActive.title": "Data límite de resposta para o ensaio rematada",
|
|
238
|
+
"practice.reminderDeadlineEnded.selectionModeOpen.text": "A data límite de resposta para o ensaio de {string:group.0.displayName} o {date:event.0.[datetime,timezone]:date} rematou. Lembra seleccionar quen participará",
|
|
239
|
+
"practice.reminderDeadlineEnded.selectionModeOpen.title": "Data límite de resposta para o ensaio rematada",
|
|
240
|
+
"practice.reminderDeadlineSoon.pending.text": "O prazo para confirmar a confirmación para o ensaio {string:group.0.displayName} rematará en {string:extra.hours} horas",
|
|
241
|
+
"practice.reminderDeadlineSoon.pending.title": "Recordatorio do prazo de resposta do ensaio",
|
|
222
242
|
"practice.rollCallReminder.text": "Agora é o mellor momento",
|
|
223
243
|
"practice.rollCallReminder.title": "Podes pasar lista ao teu último ensaio",
|
|
244
|
+
"practice.selection.deselect.text": "Fuches deseleccionado para participar no ensaio de {string:group.0.displayName} o {date:event.0.[datetime,timezone]:date}",
|
|
245
|
+
"practice.selection.deselect.title": "Deselccionado para o ensaio",
|
|
246
|
+
"practice.selection.select.text": "Fuches seleccionado para participar no ensaio de {string:group.0.displayName} o {date:event.0.[datetime,timezone]:date}",
|
|
247
|
+
"practice.selection.select.title": "Seleccionado para o ensaio",
|
|
224
248
|
"practices.cancel.text": "Canceláronse {string:extra.num} probas de {string:group.0.displayName} entre {date:event.0.[datetime,timezone]:shortDate} e {date:event.1.[datetime,timezone]:shortDate}",
|
|
225
249
|
"practices.cancel.title": "Probas canceladas",
|
|
226
250
|
"practices.create.text": "Programáronse {string:extra.num} ensaios de {string:group.0.displayName} entre {date:event.0.[datetime,timezone]:shortDate} e {date:event.1.[datetime,timezone]:shortDate}",
|
package/lang/pt.json
CHANGED
|
@@ -168,6 +168,10 @@
|
|
|
168
168
|
"performance.edit.stage.title": "Concerto - o gráfico de palco mudou",
|
|
169
169
|
"performance.edit.title.text": "O título de {string:event.0.displayName} foi atualizado",
|
|
170
170
|
"performance.edit.title.title": "Concerto - o título mudou",
|
|
171
|
+
"performance.interest.confirm.text": "{string:user.0.displayName} está interessado(a) em {string:event.0.displayName}",
|
|
172
|
+
"performance.interest.confirm.title": "Interesse confirmado para o concerto",
|
|
173
|
+
"performance.interest.lose.text": "{string:user.0.displayName} já não está interessado(a) em {string:event.0.displayName}",
|
|
174
|
+
"performance.interest.lose.title": "Interesse perdido para o concerto",
|
|
171
175
|
"performance.players.add.text": "Você foi adicionado a {string:event.0.displayName}",
|
|
172
176
|
"performance.players.add.title": "Novo concerto",
|
|
173
177
|
"performance.players.remove.text": "Você foi removido de {string:event.0.displayName}",
|
|
@@ -176,10 +180,18 @@
|
|
|
176
180
|
"performance.reminder.title": "Por favor, confirme a sua presença",
|
|
177
181
|
"performance.reminderDatetime.confirmed.text": "{string:event.0.displayName} de {string:group.0.displayName} amanhã às {date:event.0.[datetime,timezone]:time}",
|
|
178
182
|
"performance.reminderDatetime.confirmed.title": "Lembrete de concerto",
|
|
179
|
-
"performance.
|
|
180
|
-
"performance.
|
|
183
|
+
"performance.reminderDeadlineEnded.selectionModeClosedOrNotActive.text": "O prazo de resposta para {string:event.0.displayName} terminou",
|
|
184
|
+
"performance.reminderDeadlineEnded.selectionModeClosedOrNotActive.title": "Prazo de resposta para o concerto encerrado",
|
|
185
|
+
"performance.reminderDeadlineEnded.selectionModeOpen.text": "O prazo de resposta para {string:event.0.displayName} terminou. Lembre-se de selecionar quem participará.",
|
|
186
|
+
"performance.reminderDeadlineEnded.selectionModeOpen.title": "Prazo de resposta para o concerto encerrado",
|
|
187
|
+
"performance.reminderDeadlineSoon.pending.text": "O prazo para confirmar sua presença para {string:event.0.displayName} de {string:group.0.displayName} terminará em {string:extra.hours} horas",
|
|
188
|
+
"performance.reminderDeadlineSoon.pending.title": "Aviso de prazo para resposta de concerto",
|
|
181
189
|
"performance.rollCallReminder.text": "Agora é o melhor momento para fazer uma votação.",
|
|
182
190
|
"performance.rollCallReminder.title": "Você pode fazer uma votação para o ensaio",
|
|
191
|
+
"performance.selection.deselect.text": "Você foi desselecionado(a) para participar de {string:event.0.displayName}",
|
|
192
|
+
"performance.selection.deselect.title": "Desselecionado para o concerto",
|
|
193
|
+
"performance.selection.select.text": "Você foi selecionado(a) para participar de {string:event.0.displayName}",
|
|
194
|
+
"performance.selection.select.title": "Selecionado para o concerto",
|
|
183
195
|
"practice": "Ensaio",
|
|
184
196
|
"practice.assistance.confirm.byAdmin.text": "Um administrador marcou sua participação como confirmada para o ensaio em {date:event.0.[datetime,timezone]:date}",
|
|
185
197
|
"practice.assistance.confirm.byAdmin.title": "Presença confirmada por um administrador",
|
|
@@ -209,6 +221,10 @@
|
|
|
209
221
|
"practice.edit.stage.title": "Ensaio - gráfico de palco alterado",
|
|
210
222
|
"practice.edit.title.text": "O título do ensaio {date:event.0.[datetime,timezone]:date} foi atualizado",
|
|
211
223
|
"practice.edit.title.title": "Ensaio - título alterado",
|
|
224
|
+
"practice.interest.confirm.text": "{string:user.0.displayName} está interessado(a) no ensaio de {string:group.0.displayName} em {date:event.0.[datetime,timezone]:date}",
|
|
225
|
+
"practice.interest.confirm.title": "Interesse confirmado para o ensaio",
|
|
226
|
+
"practice.interest.lose.text": "{string:user.0.displayName} já não está interessado(a) no ensaio de {string:group.0.displayName} em {date:event.0.[datetime,timezone]:date}",
|
|
227
|
+
"practice.interest.lose.title": "Interesse perdido para o ensaio",
|
|
212
228
|
"practice.players.add.text": "Você foi adicionado a {string:group.0.displayName} em {date:event.0.[datetime,timezone]:datetime}",
|
|
213
229
|
"practice.players.add.title": "Novo ensaio",
|
|
214
230
|
"practice.players.remove.text": "Você foi removido de {string:group.0.displayName} em {date:event.0.[datetime,timezone]:date}",
|
|
@@ -217,10 +233,18 @@
|
|
|
217
233
|
"practice.reminder.title": "Por favor, confirme sua presença",
|
|
218
234
|
"practice.reminderDatetime.confirmed.text": "Ensaio de {string:group.0.displayName} amanhã às {date:event.0.[datetime,timezone]:time}",
|
|
219
235
|
"practice.reminderDatetime.confirmed.title": "Lembrete de ensaio",
|
|
220
|
-
"practice.
|
|
221
|
-
"practice.
|
|
236
|
+
"practice.reminderDeadlineEnded.selectionModeClosedOrNotActive.text": "O prazo de resposta para o ensaio de {string:group.0.displayName} em {date:event.0.[datetime,timezone]:date} terminou",
|
|
237
|
+
"practice.reminderDeadlineEnded.selectionModeClosedOrNotActive.title": "Prazo de resposta para o ensaio encerrado",
|
|
238
|
+
"practice.reminderDeadlineEnded.selectionModeOpen.text": "O prazo de resposta para o ensaio de {string:group.0.displayName} em {date:event.0.[datetime,timezone]:date} terminou. Lembre-se de selecionar quem participará.",
|
|
239
|
+
"practice.reminderDeadlineEnded.selectionModeOpen.title": "Prazo de resposta para o ensaio encerrado",
|
|
240
|
+
"practice.reminderDeadlineSoon.pending.text": "O prazo para confirmar sua presença para o ensaio de {string:group.0.displayName} terminará em {string:extra.hours} horas",
|
|
241
|
+
"practice.reminderDeadlineSoon.pending.title": "Aviso de prazo para resposta de ensaio",
|
|
222
242
|
"practice.rollCallReminder.text": "Agora é o melhor momento para fazer uma votação",
|
|
223
243
|
"practice.rollCallReminder.title": "Você pode fazer uma votação no seu último ensaio.",
|
|
244
|
+
"practice.selection.deselect.text": "Você foi desselecionado(a) para participar do ensaio de {string:group.0.displayName} em {date:event.0.[datetime,timezone]:date}",
|
|
245
|
+
"practice.selection.deselect.title": "Desselecionado para o ensaio",
|
|
246
|
+
"practice.selection.select.text": "Você foi selecionado(a) para participar do ensaio de {string:group.0.displayName} em {date:event.0.[datetime,timezone]:date}",
|
|
247
|
+
"practice.selection.select.title": "Selecionado para o ensaio",
|
|
224
248
|
"practices.cancel.text": "{string:extra.num} ensaios do {string:group.0.displayName} entre {date:event.0.[datetime,timezone]:shortDate} e {date:event.1.[datetime,timezone]:shortDate} foram cancelados",
|
|
225
249
|
"practices.cancel.title": "Ensaios cancelados",
|
|
226
250
|
"practices.create.text": "{string:extra.num} novos ensaios de {string:group.0.displayName} entre {date:event.0.[datetime,timezone]:shortDate} e {date:event.1.[datetime,timezone]:shortDate} foram adicionados",
|
|
@@ -7,15 +7,16 @@ export default class EventoPlayer extends PlayerBasic<EventPlayerData> {
|
|
|
7
7
|
get joinedAt(): firestore.Timestamp;
|
|
8
8
|
get eventId(): string;
|
|
9
9
|
get status(): EventPlayerStatus | null;
|
|
10
|
-
get statusHistory(): import("./types").EventPlayerStatusHistory[];
|
|
11
10
|
get isConfirmed(): boolean;
|
|
12
11
|
get isDeclined(): boolean;
|
|
13
12
|
get isPending(): boolean;
|
|
14
13
|
get rollcall(): EventPlayerStatus | null;
|
|
15
|
-
get rollcallHistory(): import("./types").EventPlayerRollcallHistory[];
|
|
16
14
|
get isRollCallConfirmed(): boolean;
|
|
17
15
|
get isRollCallDeclined(): boolean;
|
|
18
16
|
get rollCalledAt(): firestore.Timestamp | null;
|
|
19
17
|
get reason(): import("./types").EventPlayerReason | null;
|
|
20
18
|
get note(): string | null;
|
|
19
|
+
get history(): import("./types").EventPlayerHistory[];
|
|
20
|
+
get interested(): true | null;
|
|
21
|
+
get selected(): boolean | null;
|
|
21
22
|
}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
6
|
+
const lodash_1 = require("lodash");
|
|
7
7
|
const lang_1 = require("../../../lang");
|
|
8
8
|
const basic_1 = __importDefault(require("../../Player/basic"));
|
|
9
9
|
const types_1 = require("./types");
|
|
@@ -15,14 +15,11 @@ class EventoPlayer extends basic_1.default {
|
|
|
15
15
|
return this.data.joinedAt;
|
|
16
16
|
}
|
|
17
17
|
get eventId() {
|
|
18
|
-
return (0,
|
|
18
|
+
return (0, lodash_1.get)(this.ref, ['parent', 'parent', 'id']);
|
|
19
19
|
}
|
|
20
20
|
get status() {
|
|
21
21
|
return this.data.status;
|
|
22
22
|
}
|
|
23
|
-
get statusHistory() {
|
|
24
|
-
return (this.data.statusHistory || []).sort((a, b) => a.changedAt.toMillis() - b.changedAt.toMillis());
|
|
25
|
-
}
|
|
26
23
|
get isConfirmed() {
|
|
27
24
|
return this.status === types_1.EventPlayerStatus.Confirmed;
|
|
28
25
|
}
|
|
@@ -35,9 +32,6 @@ class EventoPlayer extends basic_1.default {
|
|
|
35
32
|
get rollcall() {
|
|
36
33
|
return this.data.rollcall || null;
|
|
37
34
|
}
|
|
38
|
-
get rollcallHistory() {
|
|
39
|
-
return (this.data.rollcallHistory || []).sort((a, b) => a.changedAt.toMillis() - b.changedAt.toMillis());
|
|
40
|
-
}
|
|
41
35
|
get isRollCallConfirmed() {
|
|
42
36
|
return this.rollcall === types_1.EventPlayerStatus.Confirmed;
|
|
43
37
|
}
|
|
@@ -53,5 +47,14 @@ class EventoPlayer extends basic_1.default {
|
|
|
53
47
|
get note() {
|
|
54
48
|
return this.data.note || null;
|
|
55
49
|
}
|
|
50
|
+
get history() {
|
|
51
|
+
return (this.data.history || []).sort((a, b) => a.changedAt.toMillis() - b.changedAt.toMillis());
|
|
52
|
+
}
|
|
53
|
+
get interested() {
|
|
54
|
+
return this.data.interested || null;
|
|
55
|
+
}
|
|
56
|
+
get selected() {
|
|
57
|
+
return !(0, lodash_1.isUndefined)(this.data.selected) ? this.data.selected : null;
|
|
58
|
+
}
|
|
56
59
|
}
|
|
57
60
|
exports.default = EventoPlayer;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Timestamp } from '../../../types/firestore';
|
|
2
2
|
import { EventPlayerBasicData, EventRollcallHistory } from '../../Evento/types';
|
|
3
|
+
import { EmptyObject } from 'type-fest';
|
|
3
4
|
export declare enum EventPlayerStatus {
|
|
4
5
|
Confirmed = "confirmed",
|
|
5
6
|
Declined = "declined"
|
|
@@ -11,6 +12,25 @@ export declare enum EventPlayerReason {
|
|
|
11
12
|
LeavingEarly = "LeavingEarly",
|
|
12
13
|
Other = "Other"
|
|
13
14
|
}
|
|
15
|
+
type EventPlayerHistoricalProperties = Extract<keyof EventPlayerBasicData, 'status' | 'rollcall' | 'interested' | 'selected'>;
|
|
16
|
+
interface EventPlayerHistoryAction<T extends EventPlayerHistoricalProperties, V = EventPlayerData[T], M extends object = EmptyObject> {
|
|
17
|
+
type: T;
|
|
18
|
+
value: V;
|
|
19
|
+
meta: M;
|
|
20
|
+
}
|
|
21
|
+
export type EventPlayerHistoryStatusAction = EventPlayerHistoryAction<'status', EventPlayerData['status'], {
|
|
22
|
+
reason?: EventPlayerReason | null;
|
|
23
|
+
note?: string | null;
|
|
24
|
+
}>;
|
|
25
|
+
export type EventPlayerHistoryRollcallAction = EventPlayerHistoryAction<'rollcall'>;
|
|
26
|
+
export type EventPlayerHistoryInterestedAction = EventPlayerHistoryAction<'interested'>;
|
|
27
|
+
export type EventPlayerHistorySelectedAction = EventPlayerHistoryAction<'selected', NonNullable<EventPlayerData['selected']>>;
|
|
28
|
+
export type EventPlayerHistoryActions = EventPlayerHistoryStatusAction | EventPlayerHistoryRollcallAction | EventPlayerHistoryInterestedAction | EventPlayerHistorySelectedAction;
|
|
29
|
+
export interface EventPlayerHistory {
|
|
30
|
+
action: EventPlayerHistoryActions;
|
|
31
|
+
changedAt: Timestamp;
|
|
32
|
+
changedBy: string;
|
|
33
|
+
}
|
|
14
34
|
export interface EventPlayerStatusHistory {
|
|
15
35
|
status: EventPlayerStatus | null;
|
|
16
36
|
changedAt: Timestamp;
|
|
@@ -24,7 +44,10 @@ export interface EventPlayerRollcallHistory extends EventRollcallHistory {
|
|
|
24
44
|
export interface EventPlayerData extends EventPlayerBasicData {
|
|
25
45
|
joinedAt: Timestamp;
|
|
26
46
|
rollCalledAt: Timestamp | null;
|
|
47
|
+
history: EventPlayerHistory[];
|
|
48
|
+
/** @deprecated use rollcall */
|
|
27
49
|
statusHistory: EventPlayerStatusHistory[];
|
|
50
|
+
/** @deprecated use rollcall */
|
|
28
51
|
rollcallHistory: EventPlayerRollcallHistory[];
|
|
29
52
|
/** @deprecated use rollcall */
|
|
30
53
|
rollCallStatus?: EventPlayerStatus;
|
|
@@ -32,3 +55,4 @@ export interface EventPlayerData extends EventPlayerBasicData {
|
|
|
32
55
|
export interface AEventPlayerData extends EventPlayerData {
|
|
33
56
|
id: string;
|
|
34
57
|
}
|
|
58
|
+
export {};
|
package/models/Evento/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { LanguagesTypes } from '../../lang';
|
|
2
2
|
import { DocumentReference, DocumentSnapshot } from '../../types/firestore';
|
|
3
|
+
import { EventPlayerStatus } from './Player/types';
|
|
3
4
|
import EventoPromoter from './promoter';
|
|
4
|
-
import { EventData, EventPlayerBasicData, EventResponseDeadlineOptions, EventStatusByTime } from './types';
|
|
5
|
+
import { EventData, EventPlayerBasicData, EventResponseDeadlineOptions, EventSelectionMode, EventStatusByTime } from './types';
|
|
5
6
|
export default class Evento extends EventoPromoter<EventData> {
|
|
6
7
|
constructor(doc: DocumentSnapshot, lang?: LanguagesTypes);
|
|
7
8
|
get maxAttendance(): number | null;
|
|
@@ -45,9 +46,22 @@ export default class Evento extends EventoPromoter<EventData> {
|
|
|
45
46
|
media: import("../Repertory/types").ThemeMediaType | null;
|
|
46
47
|
}[];
|
|
47
48
|
get activePlayers(): string[];
|
|
48
|
-
|
|
49
|
+
playersList({ showAll, order }: {
|
|
50
|
+
showAll?: boolean;
|
|
51
|
+
order?: string[];
|
|
52
|
+
}): {
|
|
53
|
+
note?: string | null | undefined;
|
|
54
|
+
reason?: import("./Player/types").EventPlayerReason | null | undefined;
|
|
55
|
+
status: EventPlayerStatus | null;
|
|
56
|
+
rollcall: EventPlayerStatus | null;
|
|
57
|
+
interested: true | null;
|
|
58
|
+
selected: boolean | null;
|
|
59
|
+
mainInstrument: import("../../helpers/instruments").InstrumentId;
|
|
60
|
+
username: string;
|
|
61
|
+
displayName: string;
|
|
62
|
+
photoURL: string;
|
|
49
63
|
id: string;
|
|
50
|
-
}
|
|
64
|
+
}[];
|
|
51
65
|
get confirmedPlayers(): string[];
|
|
52
66
|
get declinedPlayers(): string[];
|
|
53
67
|
get pendingPlayers(): string[];
|
|
@@ -58,6 +72,7 @@ export default class Evento extends EventoPromoter<EventData> {
|
|
|
58
72
|
get templateId(): string | null;
|
|
59
73
|
get repeat(): import("./types").EventRepeatType | null;
|
|
60
74
|
isPlayer: (userId: string) => boolean;
|
|
75
|
+
isPlayerActive: (userId: string) => boolean;
|
|
61
76
|
getPlayer: (userId: string) => EventPlayerBasicData | null;
|
|
62
77
|
isPlayerConfirmed(player: EventPlayerBasicData): boolean;
|
|
63
78
|
isPlayerDeclined(player: EventPlayerBasicData): boolean;
|
|
@@ -69,4 +84,8 @@ export default class Evento extends EventoPromoter<EventData> {
|
|
|
69
84
|
};
|
|
70
85
|
get responseDeadlineAt(): import("../../types/firestore").Timestamp;
|
|
71
86
|
get isResponseAllowed(): boolean;
|
|
87
|
+
get selectionMode(): EventSelectionMode | null;
|
|
88
|
+
get selectionModeClosedAt(): import("../../types/firestore").Timestamp | null;
|
|
89
|
+
get isSelectionModeClose(): boolean;
|
|
90
|
+
get isSelectionModeOpen(): boolean;
|
|
72
91
|
}
|
package/models/Evento/index.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const date_fns_1 = require("date-fns");
|
|
7
7
|
const lodash_1 = require("lodash");
|
|
8
8
|
const orders_1 = require("../../helpers/musicStyles/orders");
|
|
9
|
+
const utils_1 = require("../../helpers/utils");
|
|
9
10
|
const lang_1 = require("../../lang");
|
|
10
11
|
const types_1 = require("./Player/types");
|
|
11
12
|
const promoter_1 = __importDefault(require("./promoter"));
|
|
@@ -16,6 +17,12 @@ class Evento extends promoter_1.default {
|
|
|
16
17
|
this.isPlayer = (userId) => {
|
|
17
18
|
return this.activePlayers.includes(userId);
|
|
18
19
|
};
|
|
20
|
+
this.isPlayerActive = (userId) => {
|
|
21
|
+
const player = this.getPlayer(userId);
|
|
22
|
+
if (!player)
|
|
23
|
+
return false;
|
|
24
|
+
return this.isSelectionModeClose ? !!player.selected : true;
|
|
25
|
+
};
|
|
19
26
|
this.getPlayer = (userId) => {
|
|
20
27
|
return userId in this.players ? this.players[userId] : null;
|
|
21
28
|
};
|
|
@@ -133,9 +140,17 @@ class Evento extends promoter_1.default {
|
|
|
133
140
|
get activePlayers() {
|
|
134
141
|
return Object.keys(this.players) || [];
|
|
135
142
|
}
|
|
136
|
-
|
|
137
|
-
const players = this.activePlayers.map((playerId) =>
|
|
138
|
-
|
|
143
|
+
playersList({ showAll, order }) {
|
|
144
|
+
const players = this.activePlayers.map((playerId) => ({
|
|
145
|
+
id: playerId,
|
|
146
|
+
...this.players[playerId],
|
|
147
|
+
}));
|
|
148
|
+
const orderedPlayers = order
|
|
149
|
+
? (0, utils_1.sortByMatch)(players, 'mainInstrument', order)
|
|
150
|
+
: (0, orders_1.orderByMusicStyle)(players, 'mainInstrument', this.promoterInfo.musicStyle);
|
|
151
|
+
if (showAll)
|
|
152
|
+
return orderedPlayers;
|
|
153
|
+
return orderedPlayers.filter((player) => this.isPlayerActive(player.id));
|
|
139
154
|
}
|
|
140
155
|
get confirmedPlayers() {
|
|
141
156
|
return this.activePlayers.filter((playerId) => this.isPlayerConfirmed(this.players[playerId]));
|
|
@@ -188,5 +203,17 @@ class Evento extends promoter_1.default {
|
|
|
188
203
|
get isResponseAllowed() {
|
|
189
204
|
return (0, date_fns_1.isFuture)(this.responseDeadlineAt.toDate());
|
|
190
205
|
}
|
|
206
|
+
get selectionMode() {
|
|
207
|
+
return this.data.selectionMode || null;
|
|
208
|
+
}
|
|
209
|
+
get selectionModeClosedAt() {
|
|
210
|
+
return this.data.selectionModeClosedAt || null;
|
|
211
|
+
}
|
|
212
|
+
get isSelectionModeClose() {
|
|
213
|
+
return (this.selectionModeClosedAt !== null && this.selectionMode === types_2.EventSelectionMode.Closed);
|
|
214
|
+
}
|
|
215
|
+
get isSelectionModeOpen() {
|
|
216
|
+
return (this.selectionModeClosedAt === null && this.selectionMode === types_2.EventSelectionMode.Open);
|
|
217
|
+
}
|
|
191
218
|
}
|
|
192
219
|
exports.default = Evento;
|
package/models/Evento/types.d.ts
CHANGED
|
@@ -37,6 +37,10 @@ export declare enum EventStatusByTime {
|
|
|
37
37
|
Now = "now",
|
|
38
38
|
Past = "past"
|
|
39
39
|
}
|
|
40
|
+
export declare enum EventSelectionMode {
|
|
41
|
+
Open = "open",
|
|
42
|
+
Closed = "closed"
|
|
43
|
+
}
|
|
40
44
|
export interface EventRepeatType {
|
|
41
45
|
period: EventRepeatPeriod;
|
|
42
46
|
untilAt: Timestamp;
|
|
@@ -56,6 +60,8 @@ export interface EventPlayerBasicData extends PlayerBasicData {
|
|
|
56
60
|
reason?: EventPlayerReason | null;
|
|
57
61
|
status: EventPlayerStatus | null;
|
|
58
62
|
rollcall: EventPlayerStatus | null;
|
|
63
|
+
interested: true | null;
|
|
64
|
+
selected: boolean | null;
|
|
59
65
|
}
|
|
60
66
|
export interface AEventPlayerBasicData extends EventPlayerBasicData {
|
|
61
67
|
id: string;
|
|
@@ -111,6 +117,9 @@ export interface EventData extends EventPromoterData {
|
|
|
111
117
|
customAt: Timestamp | null;
|
|
112
118
|
};
|
|
113
119
|
responseDeadlineAt: Timestamp;
|
|
120
|
+
mode: EventSelectionMode;
|
|
121
|
+
selectionMode: EventSelectionMode | null;
|
|
122
|
+
selectionModeClosedAt: Timestamp | null;
|
|
114
123
|
readonly owner: DocumentReference;
|
|
115
124
|
readonly createdAt: Timestamp;
|
|
116
125
|
readonly createdOn: EventCreatedOn;
|
package/models/Evento/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EventStatusByTime = exports.EventRepeatPeriod = exports.EventType = exports.EventFiles = exports.EventCreatedOn = exports.EventResponseDeadlineOptions = void 0;
|
|
3
|
+
exports.EventSelectionMode = exports.EventStatusByTime = exports.EventRepeatPeriod = exports.EventType = exports.EventFiles = exports.EventCreatedOn = exports.EventResponseDeadlineOptions = void 0;
|
|
4
4
|
var EventResponseDeadlineOptions;
|
|
5
5
|
(function (EventResponseDeadlineOptions) {
|
|
6
6
|
EventResponseDeadlineOptions["BeforeEvent"] = "BeforeEvent";
|
|
@@ -40,3 +40,8 @@ var EventStatusByTime;
|
|
|
40
40
|
EventStatusByTime["Now"] = "now";
|
|
41
41
|
EventStatusByTime["Past"] = "past";
|
|
42
42
|
})(EventStatusByTime = exports.EventStatusByTime || (exports.EventStatusByTime = {}));
|
|
43
|
+
var EventSelectionMode;
|
|
44
|
+
(function (EventSelectionMode) {
|
|
45
|
+
EventSelectionMode["Open"] = "open";
|
|
46
|
+
EventSelectionMode["Closed"] = "closed";
|
|
47
|
+
})(EventSelectionMode = exports.EventSelectionMode || (exports.EventSelectionMode = {}));
|
|
@@ -8,6 +8,9 @@ export default class GroupEvent extends EventoBasic<GroupEventData> {
|
|
|
8
8
|
get playersCount(): number;
|
|
9
9
|
get playersConfirmedCount(): number;
|
|
10
10
|
get playersDeclinedCount(): number;
|
|
11
|
+
get playersInterestedCount(): number;
|
|
12
|
+
get playersSelectedCount(): number;
|
|
13
|
+
get playersDeselectedCount(): number;
|
|
11
14
|
get playersConfirmedRollCallCount(): number;
|
|
12
15
|
get playersDecliendRollCallCount(): number;
|
|
13
16
|
get repertoryCount(): number;
|
|
@@ -22,6 +22,15 @@ class GroupEvent extends basic_1.default {
|
|
|
22
22
|
get playersDeclinedCount() {
|
|
23
23
|
return this.data.players_declined_count || 0;
|
|
24
24
|
}
|
|
25
|
+
get playersInterestedCount() {
|
|
26
|
+
return this.data.players_interested_count || 0;
|
|
27
|
+
}
|
|
28
|
+
get playersSelectedCount() {
|
|
29
|
+
return this.data.players_selected_count || 0;
|
|
30
|
+
}
|
|
31
|
+
get playersDeselectedCount() {
|
|
32
|
+
return this.data.players_deselected_count || 0;
|
|
33
|
+
}
|
|
25
34
|
get playersConfirmedRollCallCount() {
|
|
26
35
|
return this.data.players_confirmed_rollcall_count || 0;
|
|
27
36
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Timestamp } from '../../../types/firestore';
|
|
2
|
-
import { EventBasicData } from '../../Evento/types';
|
|
2
|
+
import { EventBasicData, EventSelectionMode } from '../../Evento/types';
|
|
3
3
|
export interface GroupEventData extends EventBasicData {
|
|
4
4
|
players_count: number;
|
|
5
5
|
players_confirmed_count: number;
|
|
6
6
|
players_declined_count: number;
|
|
7
|
+
players_interested_count: number;
|
|
8
|
+
players_selected_count: number;
|
|
9
|
+
players_deselected_count: number;
|
|
7
10
|
rollCalledAt: Timestamp | null;
|
|
11
|
+
selectionMode: EventSelectionMode | null;
|
|
8
12
|
players_confirmed_rollcall_count: number;
|
|
9
13
|
players_declined_rollcall_count: number;
|
|
10
14
|
repertory_count: number;
|
|
@@ -3,6 +3,8 @@ import { EventPlayerStatus } from '../../../Evento/Player/types';
|
|
|
3
3
|
import { EventBasicData } from '../../../Evento/types';
|
|
4
4
|
export interface GroupPlayerEventData extends EventBasicData {
|
|
5
5
|
status: EventPlayerStatus | null;
|
|
6
|
+
interested: true | null;
|
|
7
|
+
selected: boolean | null;
|
|
6
8
|
rollcall: EventPlayerStatus | null;
|
|
7
9
|
joinedAt: Timestamp;
|
|
8
10
|
}
|
|
@@ -19,15 +19,24 @@ export default class GroupPlayer extends PlayerBasic<GroupPlayerData> {
|
|
|
19
19
|
get eventsNoAnswered(): number;
|
|
20
20
|
get eventsConfirmed(): number;
|
|
21
21
|
get eventsDeclined(): number;
|
|
22
|
+
get eventsInterested(): number;
|
|
23
|
+
get eventsSelected(): number;
|
|
24
|
+
get eventsDeselected(): number;
|
|
22
25
|
get performanceInvited(): number;
|
|
23
26
|
get performanceAnswered(): number;
|
|
24
27
|
get performanceNoAnswered(): number;
|
|
25
28
|
get performanceConfirmed(): number;
|
|
26
29
|
get performanceDeclined(): number;
|
|
30
|
+
get performanceInterested(): number;
|
|
31
|
+
get performanceSelected(): number;
|
|
32
|
+
get performanceDeselected(): number;
|
|
27
33
|
get practiceInvited(): number;
|
|
28
34
|
get practiceAnswered(): number;
|
|
29
35
|
get practiceConfirmed(): number;
|
|
30
36
|
get practiceDeclined(): number;
|
|
37
|
+
get practiceInterested(): number;
|
|
38
|
+
get practiceSelected(): number;
|
|
39
|
+
get practiceDeselected(): number;
|
|
31
40
|
get practiceRollCallConfirmedStrike(): number;
|
|
32
41
|
get eventsRollCall(): number;
|
|
33
42
|
get eventsRollCallConfirmed(): number;
|
|
@@ -51,6 +51,15 @@ class GroupPlayer extends basic_1.default {
|
|
|
51
51
|
get eventsDeclined() {
|
|
52
52
|
return this.data.events_declined_count || 0;
|
|
53
53
|
}
|
|
54
|
+
get eventsInterested() {
|
|
55
|
+
return this.data.events_interested_count || 0;
|
|
56
|
+
}
|
|
57
|
+
get eventsSelected() {
|
|
58
|
+
return this.data.events_selected_count || 0;
|
|
59
|
+
}
|
|
60
|
+
get eventsDeselected() {
|
|
61
|
+
return this.data.events_deselected_count || 0;
|
|
62
|
+
}
|
|
54
63
|
get performanceInvited() {
|
|
55
64
|
return this.data.performance_invited_count || 0;
|
|
56
65
|
}
|
|
@@ -66,6 +75,15 @@ class GroupPlayer extends basic_1.default {
|
|
|
66
75
|
get performanceDeclined() {
|
|
67
76
|
return this.data.performance_declined_count || 0;
|
|
68
77
|
}
|
|
78
|
+
get performanceInterested() {
|
|
79
|
+
return this.data.performance_interested_count || 0;
|
|
80
|
+
}
|
|
81
|
+
get performanceSelected() {
|
|
82
|
+
return this.data.performance_selected_count || 0;
|
|
83
|
+
}
|
|
84
|
+
get performanceDeselected() {
|
|
85
|
+
return this.data.performance_deselected_count || 0;
|
|
86
|
+
}
|
|
69
87
|
get practiceInvited() {
|
|
70
88
|
return this.data.practice_invited_count || 0;
|
|
71
89
|
}
|
|
@@ -78,6 +96,15 @@ class GroupPlayer extends basic_1.default {
|
|
|
78
96
|
get practiceDeclined() {
|
|
79
97
|
return this.data.practice_declined_count || 0;
|
|
80
98
|
}
|
|
99
|
+
get practiceInterested() {
|
|
100
|
+
return this.data.practice_interested_count || 0;
|
|
101
|
+
}
|
|
102
|
+
get practiceSelected() {
|
|
103
|
+
return this.data.practice_selected_count || 0;
|
|
104
|
+
}
|
|
105
|
+
get practiceDeselected() {
|
|
106
|
+
return this.data.practice_deselected_count || 0;
|
|
107
|
+
}
|
|
81
108
|
get practiceRollCallConfirmedStrike() {
|
|
82
109
|
return this.data.practice_rollcall_confirmed_strike || 0;
|
|
83
110
|
}
|
|
@@ -23,6 +23,9 @@ export interface GroupPlayerData extends PlayerBasicData {
|
|
|
23
23
|
events_answered_count?: number;
|
|
24
24
|
events_confirmed_count?: number;
|
|
25
25
|
events_declined_count?: number;
|
|
26
|
+
events_interested_count?: number;
|
|
27
|
+
events_selected_count?: number;
|
|
28
|
+
events_deselected_count?: number;
|
|
26
29
|
events_rollcall_count?: number;
|
|
27
30
|
events_rollcall_confirmed_count?: number;
|
|
28
31
|
events_rollcall_declined_count?: number;
|
|
@@ -30,6 +33,9 @@ export interface GroupPlayerData extends PlayerBasicData {
|
|
|
30
33
|
performance_answered_count?: number;
|
|
31
34
|
performance_confirmed_count?: number;
|
|
32
35
|
performance_declined_count?: number;
|
|
36
|
+
performance_interested_count?: number;
|
|
37
|
+
performance_selected_count?: number;
|
|
38
|
+
performance_deselected_count?: number;
|
|
33
39
|
performance_rollcall_count?: number;
|
|
34
40
|
performance_rollcall_confirmed_count?: number;
|
|
35
41
|
performance_rollcall_declined_count?: number;
|
|
@@ -37,6 +43,9 @@ export interface GroupPlayerData extends PlayerBasicData {
|
|
|
37
43
|
practice_answered_count?: number;
|
|
38
44
|
practice_confirmed_count?: number;
|
|
39
45
|
practice_declined_count?: number;
|
|
46
|
+
practice_interested_count?: number;
|
|
47
|
+
practice_selected_count?: number;
|
|
48
|
+
practice_deselected_count?: number;
|
|
40
49
|
practice_rollcall_count?: number;
|
|
41
50
|
practice_rollcall_confirmed_count?: number;
|
|
42
51
|
practice_rollcall_declined_count?: number;
|
|
@@ -26,6 +26,10 @@ export declare enum NotificationActions {
|
|
|
26
26
|
PerformanceAssistanceDecline = "performance.assistance.decline",
|
|
27
27
|
PerformanceAssistanceConfirmByAdmin = "performance.assistance.confirm.byAdmin",
|
|
28
28
|
PerformanceAssistanceDeclineByAdmin = "performance.assistance.decline.byAdmin",
|
|
29
|
+
PerformanceInterestConfirm = "performance.interest.confirm",
|
|
30
|
+
PerformanceInterestLose = "performance.interest.lose",
|
|
31
|
+
PerformanceSelectionSelect = "performance.selection.select",
|
|
32
|
+
PerformanceSelectionDeselect = "performance.selection.deselect",
|
|
29
33
|
PerformanceCancel = "performance.cancel",
|
|
30
34
|
PerformanceCreate = "performance.create",
|
|
31
35
|
PerformanceEditAttendance = "performance.edit.attendance",
|
|
@@ -37,7 +41,9 @@ export declare enum NotificationActions {
|
|
|
37
41
|
PerformanceEditStage = "performance.edit.stage",
|
|
38
42
|
PerformanceEditResponseDeadline = "performance.edit.responseDeadline",
|
|
39
43
|
PerformanceReminderDatetimeToConfirmed = "performance.reminderDatetime.confirmed",
|
|
40
|
-
|
|
44
|
+
PerformanceReminderDeadlineSoonToPending = "performance.reminderDeadlineSoon.pending",
|
|
45
|
+
PerformanceReminderDeadlineEndedInSelectionModeOpen = "performance.reminderDeadlineEnded.selectionModeOpen",
|
|
46
|
+
PerformanceReminderDeadlineEndedInSelectionModeClosedOrNotActive = "performance.reminderDeadlineEnded.selectionModeClosedOrNotActive",
|
|
41
47
|
PerformancePlayersAdd = "performance.players.add",
|
|
42
48
|
PerformancePlayersRemove = "performance.players.remove",
|
|
43
49
|
PerformanceReminder = "performance.reminder",
|
|
@@ -46,6 +52,10 @@ export declare enum NotificationActions {
|
|
|
46
52
|
PracticeAssistanceDecline = "practice.assistance.decline",
|
|
47
53
|
PracticeAssistanceConfirmByAdmin = "practice.assistance.confirm.byAdmin",
|
|
48
54
|
PracticeAssistanceDeclineByAdmin = "practice.assistance.decline.byAdmin",
|
|
55
|
+
PracticeInterestConfirm = "practice.interest.confirm",
|
|
56
|
+
PracticeInterestLose = "practice.interest.lose",
|
|
57
|
+
PracticeSelectionSelect = "practice.selection.select",
|
|
58
|
+
PracticeSelectionDeselect = "practice.selection.deselect",
|
|
49
59
|
PracticeCancel = "practice.cancel",
|
|
50
60
|
PracticeCreate = "practice.create",
|
|
51
61
|
PracticeEditAttendance = "practice.edit.attendance",
|
|
@@ -57,7 +67,9 @@ export declare enum NotificationActions {
|
|
|
57
67
|
PracticeEditStage = "practice.edit.stage",
|
|
58
68
|
PracticeEditResponseDeadline = "practice.edit.responseDeadline",
|
|
59
69
|
PracticeReminderDatetimeToConfirmed = "practice.reminderDatetime.confirmed",
|
|
60
|
-
|
|
70
|
+
PracticeReminderDeadlineSoonToPending = "practice.reminderDeadlineSoon.pending",
|
|
71
|
+
PracticeReminderDeadlineEndedInSelectionModeOpen = "practice.reminderDeadlineEnded.selectionModeOpen",
|
|
72
|
+
PracticeReminderDeadlineEndedInSelectionModeClosedOrNotActive = "practice.reminderDeadlineEnded.selectionModeClosedOrNotActive",
|
|
61
73
|
PracticePlayersAdd = "practice.players.add",
|
|
62
74
|
PracticePlayersRemove = "practice.players.remove",
|
|
63
75
|
PracticeReminder = "practice.reminder",
|