Skip to content

Commit a4f9a20

Browse files
committed
massive rework, added delete page and proper subscribing to observables
1 parent c3cbc31 commit a4f9a20

21 files changed

+257
-98
lines changed

bluenps/angular.json

+7-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,13 @@
5555
"vendorChunk": true,
5656
"extractLicenses": false,
5757
"sourceMap": true,
58-
"namedChunks": true
58+
"namedChunks": true,
59+
"fileReplacements": [
60+
{
61+
"replace": "src/environments/environment.ts",
62+
"with": "src/environments/environment.development.ts"
63+
}
64+
]
5965
}
6066
},
6167
"defaultConfiguration": "production"

bluenps/src/app/app-routing.module.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import { NgModule } from '@angular/core';
22
import { RouterModule, Routes } from '@angular/router';
3+
import { DeleteComponent } from './delete/delete.component';
4+
import { HomePageComponent } from './home-page/home-page.component';
35

4-
const routes: Routes = [];
6+
const routes: Routes = [
7+
{ path: "secretdelete", component: DeleteComponent },
8+
{path: "", component: HomePageComponent}
9+
];
510

611
@NgModule({
712
imports: [RouterModule.forRoot(routes)],
813
exports: [RouterModule]
914
})
10-
export class AppRoutingModule { }
15+
export class AppRoutingModule { }

bluenps/src/app/app.component.html

+1-31
Original file line numberDiff line numberDiff line change
@@ -1,31 +1 @@
1-
<html>
2-
3-
<div class="row">
4-
<div class="col border border-danger">
5-
Blue
6-
</div>
7-
<div class="col border border-danger">
8-
NPS
9-
</div>
10-
</div>
11-
<div class="container">
12-
<div class="mt-3 mb-3">
13-
<select class="form-select" aria-label="courtSelection" id="courtSelection">
14-
<option value="nps" selected="selected">NPS</option>
15-
<option value="blue">BLUE</option>
16-
</select>
17-
<label for="nameInput" class="form-label">Name:</label>
18-
<input class="form-control" id="nameInput" placeholder="CuteDaisey">
19-
<button type="button" class="btn btn-success" (click)="submitCourtName()">submit</button>
20-
</div>
21-
</div>
22-
<div class="container">
23-
<li *ngFor="let player of data">
24-
<div class="row">
25-
<div class="col">{{player.name}}</div>
26-
<div class="col">{{player.time}}</div>
27-
<div class="col">{{player.court}}</div>
28-
</div>
29-
</div>
30-
31-
</html>
1+
<router-outlet></router-outlet>

bluenps/src/app/app.component.ts

+3-41
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
22
import {formatDate} from '@angular/common';
33
import { HttpClient, HttpResponse } from '@angular/common/http';
44
import {signup, BackendService } from './backend.service';
5+
import { RouterLink, RouterLinkActive, RouterModule, RouterOutlet } from '@angular/router';
56

67
@Component({
78
selector: 'app-root',
@@ -10,48 +11,9 @@ import {signup, BackendService } from './backend.service';
1011
})
1112

1213
export class AppComponent {
13-
title = 'bluenps';
14-
test: any;
15-
data: signup[]= [];
16-
constructor(private http: HttpClient, private backendService: BackendService){}
17-
18-
ngOnInit(){
19-
this.refreshData();
20-
}
21-
22-
refreshData(){
23-
this.backendService.getAllData()
24-
.subscribe( data => this.data = data);
25-
}
26-
submitCourtName(): void{
27-
28-
29-
var e = (document.getElementById("courtSelection") as HTMLInputElement);
30-
var court = e.value;
31-
var name = (document.getElementById("nameInput") as HTMLInputElement).value;
32-
var date = new Date();
33-
if(name==undefined || date==undefined || court == undefined){
34-
alert("error");
35-
return;
36-
}
37-
var dateString = formatDate(date, "yyyy-MM-dd", 'en')
38-
39-
var newSignup:signup = {
40-
"name" : name,
41-
"time" : dateString,
42-
"court" : court
43-
}
44-
this.backendService.postSignup(newSignup).subscribe({
45-
next(value) {alert("succesfully signed up, refresh page to see yourself")},
46-
error: (e) =>console.log(e)}
47-
)
48-
}
49-
50-
51-
52-
53-
14+
title = 'routing';
5415
}
16+
5517

5618

5719

bluenps/src/app/app.module.ts

+15-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,28 @@
11
import { NgModule } from '@angular/core';
22
import { BrowserModule } from '@angular/platform-browser';
3-
4-
import { AppRoutingModule } from './app-routing.module';
5-
import { AppComponent } from './app.component';
63
import { HttpClientModule } from '@angular/common/http';
4+
import {provideRouter, RouterModule, Routes} from '@angular/router';
5+
import { DeleteComponent } from './delete/delete.component';
6+
import { AppComponent } from './app.component';
7+
import { HomePageComponent } from './home-page/home-page.component';
8+
import { AppRoutingModule } from './app-routing.module';
9+
const routes: Routes = [
10+
{path:"test", component: DeleteComponent},
11+
{path: "", component: DeleteComponent},
12+
{path: "**", component: DeleteComponent}
13+
];
714

815
@NgModule({
916
declarations: [
10-
AppComponent
17+
AppComponent,
18+
DeleteComponent,
19+
HomePageComponent,
1120
],
1221
imports: [
1322
BrowserModule,
23+
HttpClientModule,
24+
RouterModule,
1425
AppRoutingModule,
15-
HttpClientModule
1626
],
1727
providers: [],
1828
bootstrap: [AppComponent]

bluenps/src/app/backend.service.ts

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Injectable } from '@angular/core';
22
import { HttpClient, HttpHeaders} from '@angular/common/http';
3+
import { environment } from 'src/environments/environment';
34

45
export type signup = {
56
name: string;
@@ -11,23 +12,31 @@ export type signup = {
1112
providedIn: 'root'
1213
})
1314
export class BackendService {
14-
localurl: string = "http://localhost:8000"
15-
url :string = "https://backendbluenps.azurewebsites.net/";
16-
actualurl: string = this.url;
15+
url :string = environment.backendUrl;
1716
constructor(private http: HttpClient) { }
1817

1918

2019

2120
getAllData( ){
2221
console.log("test");
23-
return this.http.get<signup[]>(this.actualurl);
22+
return this.http.get<signup[]>(this.url);
2423

2524

2625
}
2726

2827
postSignup(newPlayer:signup){
2928
console.log(newPlayer);
30-
const headers = new HttpHeaders().set("Content-Type", "application/json; charset=utf-8");
31-
return this.http.post(this.actualurl, newPlayer, {headers: headers});
29+
var headers = new HttpHeaders().set("Content-Type", "application/json; charset=utf-8");
30+
return this.http.post<signup>(this.url, newPlayer, {headers: headers});
31+
}
32+
33+
34+
deleteData(regexString:string){
35+
console.log(regexString);
36+
var headers = new HttpHeaders();
37+
headers = headers.set("nameQuery", regexString);
38+
console.log(headers);
39+
return this.http.delete(this.url + "delete", {headers: headers});
40+
3241
}
3342
}

bluenps/src/app/delete/delete.component.css

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<input class="form-control" id="regexInput" placeholder="CuteDaisey">
2+
<button type="button" class="btn btn-success" (click)="deleteData()">submit</button>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { DeleteComponent } from './delete.component';
4+
5+
describe('DeleteComponent', () => {
6+
let component: DeleteComponent;
7+
let fixture: ComponentFixture<DeleteComponent>;
8+
9+
beforeEach(() => {
10+
TestBed.configureTestingModule({
11+
declarations: [DeleteComponent]
12+
});
13+
fixture = TestBed.createComponent(DeleteComponent);
14+
component = fixture.componentInstance;
15+
fixture.detectChanges();
16+
});
17+
18+
it('should create', () => {
19+
expect(component).toBeTruthy();
20+
});
21+
});
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { Component } from '@angular/core';
2+
import { BackendService } from '../backend.service';
3+
4+
@Component({
5+
selector: 'app-delete',
6+
templateUrl: './delete.component.html',
7+
styleUrls: ['./delete.component.css']
8+
})
9+
export class DeleteComponent {
10+
constructor(private backendService: BackendService){}
11+
12+
deleteData(){
13+
var name = (document.getElementById("regexInput") as HTMLInputElement).value;
14+
if(name.length<1){
15+
alert("error");
16+
return;
17+
}
18+
this.backendService.deleteData(name).subscribe({
19+
next: (value) => {alert("successfully deleted")},
20+
error: (e)=>{console.log(e); alert("error");}
21+
});
22+
}
23+
}

bluenps/src/app/home-page/home-page.component.css

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<html>
2+
3+
<div class="row">
4+
<div class="col border border-danger">
5+
Blue
6+
</div>
7+
<div class="col border border-danger">
8+
NPS
9+
</div>
10+
</div>
11+
<div class="container">
12+
<div class="mt-3 mb-3">
13+
<select class="form-select" aria-label="courtSelection" id="courtSelection">
14+
<option value="nps" selected="selected">NPS</option>
15+
<option value="blue">BLUE</option>
16+
</select>
17+
<label for="nameInput" class="form-label">Name:</label>
18+
<input class="form-control" id="nameInput" placeholder="CuteDaisey">
19+
<button type="button" class="btn btn-success" (click)="submitCourtName()">submit</button>
20+
</div>
21+
</div>
22+
<div class="container">
23+
<li *ngFor="let player of data">
24+
<div class="row">
25+
<div class="col">{{player.name}}</div>
26+
<div class="col">{{player.time}}</div>
27+
<div class="col">{{player.court}}</div>
28+
</div>
29+
</div>
30+
31+
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { HomePageComponent } from './home-page.component';
4+
5+
describe('HomePageComponent', () => {
6+
let component: HomePageComponent;
7+
let fixture: ComponentFixture<HomePageComponent>;
8+
9+
beforeEach(() => {
10+
TestBed.configureTestingModule({
11+
declarations: [HomePageComponent]
12+
});
13+
fixture = TestBed.createComponent(HomePageComponent);
14+
component = fixture.componentInstance;
15+
fixture.detectChanges();
16+
});
17+
18+
it('should create', () => {
19+
expect(component).toBeTruthy();
20+
});
21+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { Component } from '@angular/core';
2+
import {formatDate} from '@angular/common';
3+
import { HttpClient, HttpResponse } from '@angular/common/http';
4+
import {signup, BackendService } from '../backend.service';
5+
import { RouterModule } from '@angular/router';
6+
@Component({
7+
selector: 'app-home-page',
8+
templateUrl: './home-page.component.html',
9+
styleUrls: ['./home-page.component.css']
10+
})
11+
export class HomePageComponent {
12+
title = 'bluenps';
13+
test: any;
14+
data: signup[]= [{name: "uninitialized", court: "uninitialized", time: "uninitialized"}];
15+
constructor(private http: HttpClient, private backendService: BackendService){}
16+
17+
ngOnInit(){
18+
this.refreshData();
19+
}
20+
21+
refreshData(){
22+
console.log("refreshing data");
23+
this.backendService.getAllData()
24+
.subscribe( data => this.data = data);
25+
}
26+
submitCourtName(): void{
27+
var e = (document.getElementById("courtSelection") as HTMLInputElement);
28+
var court = e.value;
29+
var name = (document.getElementById("nameInput") as HTMLInputElement).value;
30+
var date = new Date();
31+
if(name==undefined || date==undefined || court == undefined){
32+
alert("error");
33+
return;
34+
}
35+
var dateString = formatDate(date, "yyyy-MM-dd", 'en')
36+
37+
var newSignup:signup = {
38+
"name" : name,
39+
"time" : dateString,
40+
"court" : court
41+
}
42+
this.backendService.postSignup(newSignup).subscribe({
43+
next: (value) =>this.refreshData(),
44+
error:(e)=>{console.log("error",e); this.refreshData()}}
45+
)
46+
this.refreshData();
47+
}
48+
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export const environment = {
2+
production: false,
3+
backendUrl: "http://localhost:8000/",
4+
};
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export const environment = {
2+
production: true,
3+
backendUrl: "https://backendbluenps.azurewebsites.net/",
4+
};
Binary file not shown.
Binary file not shown.

bluenpsbackend/court/urls.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44

55
urlpatterns =[
66
path("", views.index, name="index"),
7-
path("all", views.all, name="all")
7+
path("all", views.all, name="all"),
8+
path("delete", views.deleteToday, name="delete")
89
]

0 commit comments

Comments
 (0)