Skip to content

Commit 647458c

Browse files
Events verification fixed
1 parent 2d192d4 commit 647458c

File tree

7 files changed

+97
-40
lines changed

7 files changed

+97
-40
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"start": "ng serve --hmr --host 0.0.0.0",
77
"build": "ng build --prod",
88
"lint": "ng lint"
9-
},
9+
},
1010
"private": true,
1111
"dependencies": {
1212
"@angular/animations": "^10.0.7",

src/api.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ export const API = {
1212
EventApproveMail: 'api/events/{uuid}/approve-mail',
1313
EventRejectMail: 'api/events/{uuid}/reject-mail',
1414
EventVerificationBodies: 'api/bodies-with-privilege/',
15+
EventToVerify: 'api/events-to-verify',
16+
EventAll: 'api/events-all',
17+
EventMy: 'api/events-my',
1518

1619
Bodies: 'api/bodies',
1720
Body: 'api/bodies/{uuid}',

src/app/comp/search-box/search-box.component.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
.full-width-post {
88
width: -webkit-fill-available;
99
width: -moz-available;
10-
width: fill-available;
10+
width: stretch;
1111
}

src/app/data.service.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,18 @@ export class DataService {
293293
return this.FireGET<IEnumContainer>(API.Events);
294294
}
295295

296+
GetAllEventsVerified(): Observable<IEnumContainer> {
297+
return this.FireGET<IEnumContainer>(API.EventAll);
298+
}
299+
300+
GetEventsToVerify(): Observable<IEnumContainer> {
301+
return this.FireGET<IEnumContainer>(API.EventToVerify);
302+
}
303+
304+
GetMyEvents(): Observable<IEnumContainer> {
305+
return this.FireGET<IEnumContainer>(API.EventMy);
306+
}
307+
296308
/** Get detailed information on an event */
297309
GetEvent(uuid: string): Observable<IEvent> {
298310
return this.FireGET<IEvent>(API.Event, { uuid: uuid });

src/app/page/feed/feed.component.css

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,40 @@
4545
}
4646

4747
.badge {
48-
width: 20px; height: 20px;
48+
width: 20px;
49+
height: 20px;
4950
float: right;
5051
}
5152

53+
.pending-badge{
54+
background-color: rgb(249, 51, 51);
55+
transform: translateX(-60px);
56+
border-radius: 4px;
57+
padding: 2px 4px;
58+
width: fit-content;
59+
color: white;
60+
}
61+
62+
.menu-box{
63+
display: flex;
64+
gap: 10px;
65+
align-items: center;
66+
justify-content: flex-start;
67+
68+
}
69+
70+
select{
71+
font-size: 16px;
72+
background-color: #e9e9e9d8;
73+
border-radius: 4px;
74+
border: none;
75+
padding: 4px 6px;
76+
}
77+
78+
legend{
79+
font-size: 18px;
80+
}
81+
5282
@media (min-width: 961px) and (max-width: 1200px) {
5383
.events-list {
5484
padding: 10px 3% 0 3%;
Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,46 @@
1+
<div class="menu-box" style="margin: 24px 40px;">
2+
<legend>View Event:</legend>
3+
<select (change)="onFilterChange($event.target.value)">
4+
<option value="all" [selected]="eventFilter === 'all'">All Events</option>
5+
<option value="mine" [selected]="eventFilter === 'mine'">My Events</option>
6+
<option value="verify" [selected]="eventFilter === 'verify'">Events to Verify</option>
7+
</select>
8+
</div>
19
<app-xunk-spinner *ngIf="!containers || error" [error]="error"></app-xunk-spinner>
210

3-
<app-event-sidebar-desktop
4-
*ngIf="containers && !error"
5-
[event]="selectedEvent">
11+
<app-event-sidebar-desktop *ngIf="containers && !error" [event]="selectedEvent">
612

713
<div class="events-list">
814
<div *ngFor="let c of containers" class="events-block">
9-
<div class="rl-header date-header"
10-
*ngIf="c.title !== ''">
15+
<div class="rl-header date-header" *ngIf="c.title !== ''">
1116
{{ c.title }}
1217
</div>
13-
<mat-card *ngIf="!nobig"
14-
mat-ripple
15-
class="sub-card head-card"
16-
(click)=OpenEvent(c.events[0])>
18+
<mat-card *ngIf="!nobig && c.events[0]" mat-ripple class="sub-card head-card"
19+
(click)=OpenEvent(c.events[0])>
1720

18-
<img mat-card-image
19-
class="head-img"
20-
[src]="c.events[0].image_url" alt=""
21-
(click)=OpenEvent(c.events[0])
22-
[src-fallback]="c.events[0].bodies[0].image_url">
21+
<img mat-card-image *ngIf="c.events[0].bodies && c.events[0].bodies.length > 0" class="head-img"
22+
[src]="c.events[0].image_url || (c.events[0].bodies[0]?.image_url)" alt=""
23+
(click)=OpenEvent(c.events[0]) [src-fallback]="c.events[0].bodies[0]?.image_url">
2324

2425
<div> {{ c.events[0].name }} </div>
2526
<span class="subhead">{{ dataService.GetEventSubtitle(c.events[0]) }}</span>
2627

27-
<img *ngIf="c.events[0].offered_achievements.length > 0"
28-
class="badge img-circle object-cover"
29-
src="assets/badge-medal.png" />
28+
<img *ngIf="c.events[0].offered_achievements && c.events[0].offered_achievements.length > 0"
29+
class="badge img-circle object-cover" src="assets/badge-medal.png" />
3030

3131
</mat-card>
3232

3333
<app-event-card *ngFor="let event of (nobig ? c.events : c.events.slice(1, c.events.length))"
34-
(click)=OpenEvent(event)
35-
[event]="event"
36-
overrideClick=true>
34+
(click)=OpenEvent(event) [event]="event" overrideClick=true>
3735
</app-event-card>
3836
</div>
3937
</div>
4038

4139
</app-event-sidebar-desktop>
4240

4341
<div class="float-fixed-right-bottom">
44-
<button mat-fab
45-
*ngIf="dataService.hasRole()"
46-
[class.gone]="dataService.isScrollingDown()"
47-
class="add-button mat-elevation-z2"
48-
[routerLink]="['/add-event']">
42+
<button mat-fab *ngIf="dataService.hasRole()" [class.gone]="dataService.isScrollingDown()"
43+
class="add-button mat-elevation-z2" [routerLink]="['/add-event']">
4944
<mat-icon>add</mat-icon>
5045
</button>
51-
</div>
46+
</div>

src/app/page/feed/feed.component.ts

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ export const TITLE = 'Feed';
1414
export class FeedComponent implements OnInit {
1515
@Input() public containers: IEventContainer[];
1616
@Input() public nobig = false;
17-
public events: IEvent[];
17+
public events: IEvent[] = [];
1818
public selectedEvent: IEvent;
1919
public error: number;
20+
public eventFilter: 'all' | 'mine' | 'verify' = 'all';
2021

2122
constructor(
2223
public dataService: DataService,
@@ -33,18 +34,34 @@ export class FeedComponent implements OnInit {
3334
/* Set title */
3435
this.dataService.setTitle(TITLE);
3536

36-
/* Get all events */
37-
this.dataService.GetAllEvents().subscribe(result => {
37+
this.loadEvents();
38+
}
39+
40+
loadEvents() {
41+
this.error = null;
42+
let obs;
43+
if (this.eventFilter === 'mine') {
44+
obs = this.dataService.GetMyEvents();
45+
} else if (this.eventFilter === 'verify') {
46+
obs = this.dataService.GetEventsToVerify();
47+
} else {
48+
obs = this.dataService.GetAllEventsVerified();
49+
}
50+
51+
obs.subscribe(result => {
3852
this.events = result.data;
39-
if (this.events.length === 0) {
40-
this.error = 204;
41-
}
42-
this.containers = this.MakeContainers(result.data);
53+
if (this.events.length === 0) this.error = 204;
54+
this.containers = this.MakeContainers(this.events);
4355
}, (e) => {
4456
this.error = e.status;
4557
});
4658
}
4759

60+
onFilterChange(filter: 'all' | 'mine' | 'verify') {
61+
this.eventFilter = filter;
62+
this.loadEvents();
63+
}
64+
4865
/** Opens the event-details component */
4966
OpenEvent(event: IEvent) {
5067
if (this.dataService.isMobile()) {
@@ -58,8 +75,8 @@ export class FeedComponent implements OnInit {
5875
MakeContainers(events: IEvent[]): IEventContainer[] {
5976
/* Initialize */
6077
for (const event of events) {
61-
/* Set fallback images explictly */
62-
if (!event.image_url || event.image_url === '') {
78+
// Safe fallback image
79+
if ((!event.image_url || event.image_url === '') && event.bodies && event.bodies.length > 0) {
6380
event.image_url = event.bodies[0].image_url;
6481
}
6582
}
@@ -77,7 +94,7 @@ export class FeedComponent implements OnInit {
7794
/** Static first tab */
7895
result.push({
7996
title: 'Upcoming',
80-
events: events.splice(0, 3)
97+
events: events.slice(0, 3)
8198
});
8299

83100
/** Check if not enough events */
@@ -95,7 +112,7 @@ export class FeedComponent implements OnInit {
95112
}
96113
prev.events.push(event);
97114
}
98-
if (prev.events !== []) {
115+
if (prev.events.length > 0) {
99116
result.push(prev);
100117
}
101118
return result;

0 commit comments

Comments
 (0)