Compare commits
5 commits
faac2fc2e2
...
4db1485259
| Author | SHA1 | Date | |
|---|---|---|---|
| 4db1485259 | |||
| 0d9b378b8e | |||
| 8f416cc8b4 | |||
| 312fedec7b | |||
| e35564735f |
6 changed files with 83 additions and 39 deletions
|
|
@ -59,22 +59,56 @@ export class CreateEditModalComponent {
|
||||||
//TODO: Allow user to specify genres
|
//TODO: Allow user to specify genres
|
||||||
genres: []
|
genres: []
|
||||||
}
|
}
|
||||||
this.showsService.sendShow(show).subscribe({
|
|
||||||
next: (response: ShowsApiCreation) => {
|
|
||||||
show._id = response.newId
|
if (!this.editMode) {
|
||||||
}, error: err => {
|
this.showsService.sendShow(show).subscribe({
|
||||||
this.toastService.show({
|
next: (response: ShowsApiCreation) => {
|
||||||
body: "Could not add show!",
|
show._id = response.newId
|
||||||
htmlClass: "bg-danger text-light"
|
}, error: err => {
|
||||||
})
|
this.showToast(true, "created")
|
||||||
console.error(err)
|
console.error(err)
|
||||||
}, complete: () => {
|
}, complete: () => {
|
||||||
this.toastService.show({
|
this.showToast(false, "created")
|
||||||
body: "Show added successfully!",
|
this.activeModal.close(show)
|
||||||
htmlClass: "bg-success text-light"
|
}
|
||||||
})
|
})
|
||||||
this.activeModal.close(show)
|
} else {
|
||||||
|
// The API requires the show to also have an ID, so
|
||||||
|
// I add it here
|
||||||
|
show._id = this.show?._id
|
||||||
|
this.showsService.updateShow(show).subscribe({
|
||||||
|
next: (response: ShowsApiDeletionEdit) => {
|
||||||
|
// Do nothing
|
||||||
|
}, error: err => {
|
||||||
|
this.showToast(true, "edited")
|
||||||
|
console.error(err)
|
||||||
|
}, complete: () => {
|
||||||
|
this.showToast(false, "edited")
|
||||||
|
this.activeModal.close(show)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private showToast(error: boolean, action: "edited" | "created") {
|
||||||
|
let htmlClass: string = "bg-success text-light"
|
||||||
|
let body: string;
|
||||||
|
if (error) {
|
||||||
|
htmlClass = htmlClass.replace("success", "danger")
|
||||||
|
let temp: string
|
||||||
|
switch (action) {
|
||||||
|
case "created":
|
||||||
|
temp = "created"
|
||||||
|
break
|
||||||
|
case "edited":
|
||||||
|
temp = "edit"
|
||||||
|
break
|
||||||
}
|
}
|
||||||
})
|
body = `Could not ${temp} show!`
|
||||||
|
} else {
|
||||||
|
body = `Show ${action} successfully!`
|
||||||
|
}
|
||||||
|
this.toastService.show({body, htmlClass})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import {ComponentFixture, TestBed} from '@angular/core/testing';
|
||||||
|
|
||||||
import { DeleteModalComponent } from './delete-modal.component';
|
import {DeleteModalComponent} from './delete-modal.component';
|
||||||
|
|
||||||
describe('DeleteModalComponent', () => {
|
describe('DeleteModalComponent', () => {
|
||||||
let component: DeleteModalComponent;
|
let component: DeleteModalComponent;
|
||||||
|
|
@ -10,7 +10,7 @@ describe('DeleteModalComponent', () => {
|
||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
imports: [DeleteModalComponent]
|
imports: [DeleteModalComponent]
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
|
|
||||||
fixture = TestBed.createComponent(DeleteModalComponent);
|
fixture = TestBed.createComponent(DeleteModalComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
import {Component, inject} from '@angular/core';
|
import {Component, inject} from '@angular/core';
|
||||||
import {NgbActiveModal, NgbCollapse} from '@ng-bootstrap/ng-bootstrap';
|
import {NgbActiveModal, NgbCollapse} from '@ng-bootstrap/ng-bootstrap';
|
||||||
import {
|
import {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';
|
||||||
FormControl,
|
|
||||||
FormGroup,
|
|
||||||
FormsModule,
|
|
||||||
ReactiveFormsModule,
|
|
||||||
Validators
|
|
||||||
} from '@angular/forms';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-delete-modal',
|
selector: 'app-delete-modal',
|
||||||
|
|
@ -27,7 +21,7 @@ export class DeleteModalComponent {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.confirmationForm = new FormGroup({
|
this.confirmationForm = new FormGroup({
|
||||||
name: new FormControl("",Validators.required)
|
name: new FormControl("", Validators.required)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<button type="button" class="btn btn-outline-danger" (click)="deleteShow(show)">
|
<button type="button" class="btn btn-outline-danger" (click)="deleteShow(show)">
|
||||||
<i class="bi bi-trash"></i>
|
<i class="bi bi-trash"></i>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-warning">
|
<button type="button" class="btn btn-outline-warning" (click)="editShow(show, $index)">
|
||||||
<i class="bi bi-pencil"></i>
|
<i class="bi bi-pencil"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import {NgbModal, NgbModalRef} from '@ng-bootstrap/ng-bootstrap';
|
||||||
import {CreateEditModalComponent} from '../../components/create-modal/create-edit-modal/create-edit-modal.component';
|
import {CreateEditModalComponent} from '../../components/create-modal/create-edit-modal/create-edit-modal.component';
|
||||||
import {DatePipe} from '@angular/common';
|
import {DatePipe} from '@angular/common';
|
||||||
import {DeleteModalComponent} from '../../components/delete-modal/delete-modal.component';
|
import {DeleteModalComponent} from '../../components/delete-modal/delete-modal.component';
|
||||||
import {ShowsApiDeletionEdit} from '../../interfaces/shows-api-deletion-edit';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-shows',
|
selector: 'app-shows',
|
||||||
|
|
@ -47,10 +46,10 @@ export class ShowsComponent {
|
||||||
|
|
||||||
createNewShow() {
|
createNewShow() {
|
||||||
this.modalService.open(CreateEditModalComponent).result.then(
|
this.modalService.open(CreateEditModalComponent).result.then(
|
||||||
(result: Show) => {
|
(closeResult: Show) => {
|
||||||
this.shows.push(result)
|
this.shows.push(closeResult)
|
||||||
},
|
},
|
||||||
(result) => {
|
() => {
|
||||||
// Dismissed, do nothing
|
// Dismissed, do nothing
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -60,11 +59,11 @@ export class ShowsComponent {
|
||||||
const modal: NgbModalRef = this.modalService.open(DeleteModalComponent)
|
const modal: NgbModalRef = this.modalService.open(DeleteModalComponent)
|
||||||
modal.componentInstance.showName = show.title;
|
modal.componentInstance.showName = show.title;
|
||||||
modal.result.then(
|
modal.result.then(
|
||||||
(result) => {
|
(closeResult) => {
|
||||||
if (result) {
|
if (closeResult) {
|
||||||
if (show._id != null) {
|
if (show._id != null) {
|
||||||
this.api.deleteShw(show._id).subscribe({
|
this.api.deleteShw(show._id).subscribe({
|
||||||
next: (response: ShowsApiDeletionEdit) => {
|
next: () => {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}, error: (err: any) => {
|
}, error: (err: any) => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
|
|
@ -77,7 +76,22 @@ export class ShowsComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(result) => {
|
() => {
|
||||||
|
// Dismissed, do nothing
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
editShow(show: Show, index: number) {
|
||||||
|
const modal: NgbModalRef = this.modalService.open(CreateEditModalComponent)
|
||||||
|
modal.componentInstance.editMode = true
|
||||||
|
modal.componentInstance.show = show
|
||||||
|
modal.componentInstance.initForm()
|
||||||
|
modal.result.then(
|
||||||
|
(closeResult: Show) => {
|
||||||
|
this.shows[index] = closeResult
|
||||||
|
},
|
||||||
|
() => {
|
||||||
// Dismissed, do nothing
|
// Dismissed, do nothing
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,12 @@ export class ShowsApiService {
|
||||||
|
|
||||||
private readonly url: string = "https://shows.everest.tailscale/api/";
|
private readonly url: string = "https://shows.everest.tailscale/api/";
|
||||||
private showsEndpoint: string
|
private showsEndpoint: string
|
||||||
|
private idEndpoint: string
|
||||||
private http: HttpClient = inject(HttpClient);
|
private http: HttpClient = inject(HttpClient);
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.showsEndpoint = this.url + "shows/"
|
this.showsEndpoint = this.url + "shows/"
|
||||||
|
this.idEndpoint = this.showsEndpoint + "id/"
|
||||||
}
|
}
|
||||||
|
|
||||||
getShows(): Observable<ShowsApiResponse> {
|
getShows(): Observable<ShowsApiResponse> {
|
||||||
|
|
@ -25,7 +27,7 @@ export class ShowsApiService {
|
||||||
}
|
}
|
||||||
|
|
||||||
getShow(id: string): Observable<ShowsApiIdResponse> {
|
getShow(id: string): Observable<ShowsApiIdResponse> {
|
||||||
return this.http.get<ShowsApiIdResponse>(this.showsEndpoint + "id/" + id)
|
return this.http.get<ShowsApiIdResponse>(this.idEndpoint + id)
|
||||||
}
|
}
|
||||||
|
|
||||||
sendShow(newShow: Show): Observable<ShowsApiCreation> {
|
sendShow(newShow: Show): Observable<ShowsApiCreation> {
|
||||||
|
|
@ -33,10 +35,10 @@ export class ShowsApiService {
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteShw(id: string): Observable<ShowsApiDeletionEdit> {
|
deleteShw(id: string): Observable<ShowsApiDeletionEdit> {
|
||||||
return this.http.delete<ShowsApiDeletionEdit>(this.showsEndpoint + "id/" + id)
|
return this.http.delete<ShowsApiDeletionEdit>(this.idEndpoint + id)
|
||||||
}
|
}
|
||||||
|
|
||||||
updateShow(show: Show): Observable<ShowsApiDeletionEdit> {
|
updateShow(show: Show): Observable<ShowsApiDeletionEdit> {
|
||||||
return this.http.put<ShowsApiDeletionEdit>(this.showsEndpoint + "id/" + show._id, show)
|
return this.http.put<ShowsApiDeletionEdit>(this.idEndpoint + show._id, show)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue