Skip to content

Commit ac7cccd

Browse files
committed
feat(admin): achievements list
1 parent 46776d4 commit ac7cccd

18 files changed

+190
-10
lines changed

src/api/backend/model/achievement.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface Achievement {
1414
title: string;
1515
picture: string;
1616
description: string;
17+
persistent: boolean;
1718
id: number;
1819
year: number;
1920
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* web-backend-swagger
3+
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
4+
*
5+
* OpenAPI spec version: 1.0.0
6+
*
7+
*
8+
* NOTE: This class is auto generated by the swagger code generator program.
9+
* https://github.com/swagger-api/swagger-codegen.git
10+
* Do not edit the class manually.
11+
*/
12+
13+
export interface AchievementBase {
14+
title: string;
15+
picture: string;
16+
description: string;
17+
persistent: boolean;
18+
}

src/api/backend/model/achievementCreation.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,4 @@
1111
*/
1212

1313
export interface AchievementCreation {
14-
title: string;
15-
picture: string;
16-
description: string;
17-
persistent: boolean;
1814
}

src/api/backend/model/models.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export * from './achievement';
2+
export * from './achievementBase';
23
export * from './achievementCreation';
34
export * from './achievementCreationRequest';
45
export * from './achievementGrantRequest';

src/app/components/admin/admin-routing.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import { PageAdminTasksComponent } from './page-admin-tasks/page-admin-tasks.com
66
import { PageAdminMonitorComponent } from './page-admin-monitor/page-admin-monitor.component';
77
import { PageAdminEmailComponent } from './page-admin-email/page-admin-email.component';
88
import {PageAdminDiscussionComponent} from './page-admin-discussion/page-admin-discussion.component';
9+
import {PageAdminAchievementsComponent} from './page-admin-achievements/page-admin-achievements.component';
910

1011
const routes: Routes = [
1112
{path: '', component: PageAdminRootComponent},
1213
{path: ROUTES.admin.tasks, component: PageAdminTasksComponent},
1314
{path: ROUTES.admin.monitor, component: PageAdminMonitorComponent},
1415
{path: ROUTES.admin.email, component: PageAdminEmailComponent},
1516
{path: ROUTES.admin.discussion, component: PageAdminDiscussionComponent},
17+
{path: ROUTES.admin.achievements, component: PageAdminAchievementsComponent},
1618
];
1719

1820
@NgModule({

src/app/components/admin/admin-sidebar/admin-sidebar.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
<a class="nav-btn" [routerLink]="['/', routes.routes.admin._, routes.routes.admin.discussion]" routerLinkActive="active" (click)="hideFullMenu($event)">
1616
{{'admin.navbar.discussion' | translate}}
1717
</a>
18+
<a class="nav-btn" [routerLink]="['/', routes.routes.admin._, routes.routes.admin.achievements]" routerLinkActive="active" (click)="hideFullMenu($event)">
19+
{{'admin.navbar.achievement' | translate}}
20+
</a>
1821
<ng-container *ngIf="oldFrontendUrl">
1922
<a *ngFor="let oldLink of oldFrontendButtons"
2023
class="nav-btn"

src/app/components/admin/admin-sidebar/admin-sidebar.component.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ export class AdminSidebarComponent implements OnInit, OnDestroy {
2121
oldFrontendUrl = environment.oldFrontendUrl;
2222

2323
oldFrontendButtons = [
24-
['achievements/', 'Trofeje'],
2524
['users/', 'Uživatelé'],
2625
['years/', 'Ročníky'],
2726
['waves/', 'Vlny'],

src/app/components/admin/admin.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { ReactiveFormsModule } from '@angular/forms';
1616
import { AccordionModule } from 'ngx-bootstrap/accordion';
1717
import { PageAdminDiscussionComponent } from './page-admin-discussion/page-admin-discussion.component';
1818
import { AdminWaveSelectorComponent } from './shared/admin-wave-selector/admin-wave-selector.component';
19+
import { PageAdminAchievementsComponent } from './page-admin-achievements/page-admin-achievements.component';
1920

2021

2122
@NgModule({
@@ -27,7 +28,8 @@ import { AdminWaveSelectorComponent } from './shared/admin-wave-selector/admin-w
2728
PageAdminMonitorComponent,
2829
PageAdminEmailComponent,
2930
PageAdminDiscussionComponent,
30-
AdminWaveSelectorComponent
31+
AdminWaveSelectorComponent,
32+
PageAdminAchievementsComponent
3133
],
3234
imports: [
3335
CommonModule,
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<ksi-admin-sidebar></ksi-admin-sidebar>
2+
<div class="content-container">
3+
<div class="content">
4+
<h2 class="title">{{'admin.achievements.title'|translate}}</h2>
5+
6+
<button class="btn btn-outline-primary">{{'admin.achievements.new'|translate}}</button>
7+
8+
<ng-container *ngFor="let x of [{n: 'yearly', x: achievementsYearly$}, {n: 'persistent', x: achievementsPersistent$}]">
9+
<h3>{{('admin.achievements.' + x.n) | translate}}</h3>
10+
<table class="table table-striped table-hover table-responsive-md" ksiTheme>
11+
<thead>
12+
<tr>
13+
<th scope="col">{{'admin.achievements.picture' | translate}}</th>
14+
<th scope="col">{{'admin.achievements.name' | translate}}</th>
15+
<th scope="col">{{'admin.achievements.actions' | translate}}</th>
16+
</tr>
17+
</thead>
18+
<tbody>
19+
<tr *ngFor="let achievement of (x.x | async)">
20+
<td><img [src]="achievement.picture" alt=""></td>
21+
<td>{{achievement.title}}</td>
22+
<td>
23+
<button class="btn btn-outline-primary" (click)="give(achievement)">{{'admin.achievements.give.btn' | translate}}</button>
24+
<button class="btn btn-outline-secondary" (click)="editAchievement(achievement)">{{'admin.achievements.edit.btn' | translate}}</button>
25+
<button class="btn btn-outline-danger" (click)="deleteAchievement(achievement)">{{'admin.achievements.delete.btn' | translate}}</button>
26+
</td>
27+
</tr>
28+
</tbody>
29+
</table>
30+
</ng-container>
31+
</div>
32+
</div>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
@import "src/app/styles/vars";
2+
@import "src/app/styles/mixins";
3+
4+
@include page-admin;
5+
6+
:host {
7+
.content {
8+
justify-self: center;
9+
display: flex;
10+
flex-direction: column;
11+
align-items: center;
12+
13+
> * {
14+
margin-bottom: $ksi-margin;
15+
}
16+
17+
> .title {
18+
margin: $ksi-margin;
19+
text-align: center;
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)