Refactor tutorial and user models to replace fileName with id, update related components and services for consistency
This commit is contained in:
@@ -9,7 +9,7 @@ import { provideRouter } from '@angular/router';
|
||||
import { routes } from './app.routes';
|
||||
import { provideClientHydration, withEventReplay } from '@angular/platform-browser';
|
||||
import {AppModule} from './app.module';
|
||||
import Aura from '@primeng/themes/aura';
|
||||
|
||||
import {provideAnimations} from '@angular/platform-browser/animations';
|
||||
import {provideMarkdown} from 'ngx-markdown';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export class Role {
|
||||
fileName?:any;
|
||||
id?:any;
|
||||
name?:string;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export class Setting {
|
||||
fileName?:any;
|
||||
id?:any;
|
||||
name?:string;
|
||||
value?:boolean;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export class Tutorial {
|
||||
isSelected?: boolean;
|
||||
fileName?: any;
|
||||
id?: any;
|
||||
title?: string;
|
||||
description?: string;
|
||||
published?: boolean;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export class User {
|
||||
fileName?:any;
|
||||
id?:any;
|
||||
username?:string;
|
||||
email?:string;
|
||||
password?:string;
|
||||
|
||||
@@ -85,7 +85,7 @@ export class UsersComponent {
|
||||
}
|
||||
|
||||
saveUserRoles(user:User){
|
||||
this.adminService.updateUserRoles(user.fileName, user).subscribe(
|
||||
this.adminService.updateUserRoles(user.id, user).subscribe(
|
||||
(data:any) => {
|
||||
console.log(data);
|
||||
user.isEdit = false
|
||||
@@ -98,13 +98,13 @@ export class UsersComponent {
|
||||
|
||||
isChecked(element: User, role: Role) {
|
||||
let userRoles: Role[] = element.roles;
|
||||
return element.roles.some((r:Role) => r.fileName === role.fileName);
|
||||
return element.roles.some((r:Role) => r.id === role.id);
|
||||
}
|
||||
|
||||
onValChange(element:User, role: Role) {
|
||||
let userRoles: Role[] = element.roles;
|
||||
if (this.isChecked(element, role)) {
|
||||
userRoles = userRoles.filter((r:Role) => r.fileName !== role.fileName);
|
||||
userRoles = userRoles.filter((r:Role) => r.id !== role.id);
|
||||
}else {
|
||||
userRoles.push(role);
|
||||
}
|
||||
|
||||
@@ -19,12 +19,12 @@ export class ModeratorApiService {
|
||||
return this.http.get<Tutorial[]>(`${this.baseUrl}/tutorials`);
|
||||
}
|
||||
|
||||
getTutorial(fileName: string | null | undefined): Observable<Tutorial> {
|
||||
return this.http.get<Tutorial>(`${this.baseUrl}/tutorial-get/${fileName}`);
|
||||
getTutorial(id: string | null | undefined): Observable<Tutorial> {
|
||||
return this.http.get<Tutorial>(`${this.baseUrl}/tutorial-get/${id}`);
|
||||
}
|
||||
|
||||
publish(fileName: any,data: any): Observable<any> {
|
||||
return this.http.put(`${this.baseUrl}/tutorial-update/${fileName}`, data);
|
||||
publish(id: any,data: any): Observable<any> {
|
||||
return this.http.put(`${this.baseUrl}/tutorial-update/${id}`, data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
-3
@@ -10,11 +10,11 @@
|
||||
</mat-form-field>
|
||||
<mat-tab-group>
|
||||
<mat-tab label="Preview">
|
||||
<markdown class="preview" [data]="tutorial.description"></markdown>
|
||||
<markdown class="preview" [data]="tutorial.body"></markdown>
|
||||
</mat-tab>
|
||||
<mat-tab label="Edit">
|
||||
<textarea class="variable-textarea" [(ngModel)]="tutorial.description"></textarea>
|
||||
<markdown class="variable-binding" [data]="tutorial.description"></markdown>
|
||||
<textarea class="variable-textarea" [(ngModel)]="tutorial.body"></textarea>
|
||||
<markdown class="variable-binding" [data]="tutorial.body"></markdown>
|
||||
</mat-tab>
|
||||
|
||||
<mat-tab label="Example">
|
||||
|
||||
+5
-5
@@ -55,18 +55,18 @@ const language = 'typescript';
|
||||
### Blockquote
|
||||
> Blockquote to the max`;
|
||||
|
||||
private fileName: string | null | undefined;
|
||||
private id: string | null | undefined;
|
||||
|
||||
constructor(private moderatorApiService: ModeratorApiService, private route: ActivatedRoute) {
|
||||
|
||||
this.route.queryParams
|
||||
.subscribe(params => {
|
||||
console.log(params);
|
||||
this.fileName = params['fileName'];
|
||||
console.log(this.fileName);
|
||||
this.id = params['id'];
|
||||
console.log(this.id);
|
||||
});
|
||||
|
||||
this.moderatorApiService.getTutorial(this.fileName).subscribe(
|
||||
this.moderatorApiService.getTutorial(this.id).subscribe(
|
||||
data=>{
|
||||
this.tutorial = data;
|
||||
}
|
||||
@@ -75,7 +75,7 @@ const language = 'typescript';
|
||||
|
||||
publishTutorial(): void {
|
||||
this.tutorial.published = true;
|
||||
this.moderatorApiService.publish(this.fileName, this.tutorial)
|
||||
this.moderatorApiService.publish(this.id, this.tutorial)
|
||||
.subscribe(
|
||||
response => {
|
||||
console.log(response);
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
|
||||
@case('isEdit') {
|
||||
<div class="btn-edit" >
|
||||
<button mat-button routerLink='../tutorial-preview' [queryParams]="{fileName:element.fileName}" (click)="element.isEdit = !element.isEdit">
|
||||
<button mat-button routerLink='../tutorial-preview' [queryParams]="{id:element.id}" (click)="element.isEdit = !element.isEdit">
|
||||
Preview
|
||||
</button>
|
||||
|
||||
|
||||
+1
-1
@@ -78,7 +78,7 @@ export class TutorialsListComponent {
|
||||
|
||||
publish(element: any, checked: boolean){
|
||||
element.published = checked;
|
||||
this.moderatorApiService.publish(element.fileName, element).subscribe(
|
||||
this.moderatorApiService.publish(element.id, element).subscribe(
|
||||
response => {
|
||||
console.log(response);
|
||||
},
|
||||
|
||||
+4
-4
@@ -14,7 +14,7 @@ import {MarkdownComponent} from 'ngx-markdown';
|
||||
styleUrl: './tutorial-view.component.scss'
|
||||
})
|
||||
export class TutorialViewComponent {
|
||||
private fileName: string | null | undefined;
|
||||
private id: string | null | undefined;
|
||||
tutorial: Tutorial = new Tutorial();
|
||||
|
||||
constructor(private tutorialsApiService: TutorialsApiService, private route: ActivatedRoute) {
|
||||
@@ -22,11 +22,11 @@ export class TutorialViewComponent {
|
||||
this.route.queryParams
|
||||
.subscribe(params => {
|
||||
console.log(params);
|
||||
this.fileName = params['fileName'];
|
||||
console.log(this.fileName);
|
||||
this.id = params['id'];
|
||||
console.log(this.id);
|
||||
});
|
||||
|
||||
this.tutorialsApiService.getTutorial(this.fileName).subscribe(
|
||||
this.tutorialsApiService.getTutorial(this.id).subscribe(
|
||||
data => {
|
||||
this.tutorial = data;
|
||||
}
|
||||
|
||||
@@ -17,6 +17,6 @@ export class TutorialsApiService {
|
||||
return this.http.get<Tutorial[]>(`${this.baseUrl}/tutorials`);
|
||||
}
|
||||
|
||||
getTutorial(fileName: string | null | undefined): Observable<Tutorial> {
|
||||
return this.http.get<Tutorial>(`${this.baseUrl}/tutorial-get/${fileName}`);
|
||||
getTutorial(id: string | null | undefined): Observable<Tutorial> {
|
||||
return this.http.get<Tutorial>(`${this.baseUrl}/tutorial-get/${id}`);
|
||||
}}
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<img mat-card-image [src]="tutorial.titleimage" alt="Photo of a" />
|
||||
|
||||
<mat-card-actions>
|
||||
<button mat-button routerLink="../tutorial-view" [queryParams]="{fileName:tutorial.fileName}" target="_blank">{{tutorial.title}}</button>
|
||||
<button mat-button routerLink="../tutorial-view" [queryParams]="{id:tutorial.id}" target="_blank">{{tutorial.title}}</button>
|
||||
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@
|
||||
<mat-divider></mat-divider>
|
||||
<mat-tab-group>
|
||||
<mat-tab label="Markdown text | Result">
|
||||
<textarea class="variable-textarea" [(ngModel)]="markdown"></textarea>
|
||||
<textarea class="variable-textarea" [(ngModel)]="tutorial.body"></textarea>
|
||||
<markdown class="variable-binding" [data]="tutorial.body"></markdown>
|
||||
</mat-tab>
|
||||
<mat-tab label="Editor">
|
||||
|
||||
+5
-5
@@ -70,7 +70,7 @@ const language = 'typescript';
|
||||
|
||||
### Blockquote
|
||||
> Blockquote to the max`;
|
||||
private fileName: string | null | undefined;
|
||||
private id: string | null | undefined;
|
||||
|
||||
constructor(private userApiService: UserApiService,
|
||||
private route: ActivatedRoute,
|
||||
@@ -81,11 +81,11 @@ const language = 'typescript';
|
||||
this.route.queryParams
|
||||
.subscribe(params => {
|
||||
console.log(params);
|
||||
this.fileName = params['fileName'];
|
||||
console.log(this.fileName);
|
||||
this.id = params['id'];
|
||||
console.log(this.id);
|
||||
});
|
||||
|
||||
this.userApiService.getTutorial(this.fileName).subscribe(
|
||||
this.userApiService.getTutorial(this.id).subscribe(
|
||||
data=>{
|
||||
this.tutorial = data;
|
||||
}
|
||||
@@ -148,7 +148,7 @@ const language = 'typescript';
|
||||
}
|
||||
|
||||
updateTutorial(): void {
|
||||
this.userApiService.update(this.fileName, this.tutorial)
|
||||
this.userApiService.update(this.id, this.tutorial)
|
||||
.subscribe(
|
||||
response => {
|
||||
console.log(response);
|
||||
|
||||
+2
-2
@@ -37,13 +37,13 @@
|
||||
}
|
||||
@case('isEdit') {
|
||||
<div class="btn-edit" >
|
||||
<button mat-button routerLink='../tutorial-edit' [queryParams]="{fileName:element.fileName}" (click)="element.isEdit = !element.isEdit">
|
||||
<button mat-button routerLink='../tutorial-edit' [queryParams]="{id:element.id}" (click)="element.isEdit = !element.isEdit">
|
||||
Edit
|
||||
</button>
|
||||
<button
|
||||
mat-button
|
||||
class="button-remove"
|
||||
(click)="removeRow(element.fileName)"
|
||||
(click)="removeRow(element.id)"
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
|
||||
+4
-4
@@ -125,17 +125,17 @@ import {MatSlideToggle} from '@angular/material/slide-toggle';
|
||||
// })
|
||||
}
|
||||
|
||||
removeRow(fileName: number) {
|
||||
this.userApiService.deleteTutorial(fileName).subscribe(() => {
|
||||
removeRow(id: number) {
|
||||
this.userApiService.deleteTutorial(id).subscribe(() => {
|
||||
this.dataSource.data = this.dataSource.data.filter(
|
||||
(u: Tutorial) => u.fileName !== fileName,
|
||||
(u: Tutorial) => u.id !== id,
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
publish(element: any, checked: boolean){
|
||||
element.tobepublished = checked;
|
||||
this.userApiService.update(element.fileName, element).subscribe(
|
||||
this.userApiService.update(element.id, element).subscribe(
|
||||
response => {
|
||||
console.log(response);
|
||||
},
|
||||
|
||||
@@ -52,28 +52,28 @@ export class UserApiService {
|
||||
return this.http.get<Tutorial[]>(`${this.baseUrl}/tutorials`);
|
||||
}
|
||||
|
||||
getTutorial(fileName: string | null | undefined): Observable<Tutorial> {
|
||||
return this.http.get<Tutorial>(`${this.baseUrl}/tutorial-get/${fileName}`);
|
||||
getTutorial(id: string | null | undefined): Observable<Tutorial> {
|
||||
return this.http.get<Tutorial>(`${this.baseUrl}/tutorial-get/${id}`);
|
||||
}
|
||||
|
||||
create(data: any): Observable<any> {
|
||||
return this.http.post(`${this.baseUrl}/tutorial-add`, data);
|
||||
}
|
||||
|
||||
update(fileName: any,data: any): Observable<any> {
|
||||
return this.http.put(`${this.baseUrl}/tutorial-update/${fileName}`, data);
|
||||
update(id: any,data: any): Observable<any> {
|
||||
return this.http.put(`${this.baseUrl}/tutorial-update/${id}`, data);
|
||||
}
|
||||
|
||||
deleteTutorials(tutorials: Tutorial[]): Observable<Tutorial[]> {
|
||||
return forkJoin(
|
||||
tutorials.map((tutorial) =>
|
||||
this.http.delete<Tutorial>(`${this.baseUrl}/tutorials/${tutorial.fileName}`)
|
||||
this.http.delete<Tutorial>(`${this.baseUrl}/tutorials/${tutorial.id}`)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
deleteTutorial(fileName: number): Observable<Tutorial> {
|
||||
return this.http.delete<Tutorial>(`${this.baseUrl}/tutorials/${fileName}`);
|
||||
deleteTutorial(id: number): Observable<Tutorial> {
|
||||
return this.http.delete<Tutorial>(`${this.baseUrl}/tutorials/${id}`);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user