Skip to content

Commit ee92242

Browse files
committed
contest page working
1 parent 284547c commit ee92242

30 files changed

Lines changed: 645 additions & 89 deletions

codecamp-front/src/app/app-routing.module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import { ContestComponent } from './components/contest/contest.component';
1414
import { AboutComponent } from './components/about/about.component';
1515
import { IdeComponent } from './components/ide/ide.component';
1616
import { ProblemsComponent } from './components/problems/problems.component';
17+
import { AddContestComponent } from './components/add-contest/add-contest.component';
18+
import { EditContestComponent } from './components/edit-contest/edit-contest.component';
1719

1820

1921

@@ -27,7 +29,9 @@ const appRoutes: Routes = [
2729
{path: 'discuss' , component: DiscussComponent},
2830
{path: 'profile' , component: ProfileComponent},
2931
{path: 'ide', component: IdeComponent},
30-
{path: 'problems/:problem', component: ProblemsComponent}
32+
{path: 'problems/:problem', component: ProblemsComponent},
33+
{path: 'contest/add-contest', component: AddContestComponent},
34+
{path: 'contest/edit-contest', component: EditContestComponent}
3135
];
3236

3337
@NgModule({

codecamp-front/src/app/app.module.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ import { AuthService } from './services/auth.service';
2020
import { HttpModule } from '@angular/http';
2121
import { IdeComponent } from './components/ide/ide.component';
2222
import { ProblemsComponent } from './components/problems/problems.component';
23+
import { AddContestComponent } from './components/add-contest/add-contest.component';
24+
import { EditContestComponent } from './components/edit-contest/edit-contest.component';
25+
import { SubmissionComponent } from './components/submission/submission.component';
26+
import { RanklistComponent } from './components/ranklist/ranklist.component';
27+
import { SolutionComponent } from './components/solution/solution.component';
2328

2429

2530
@NgModule({
@@ -35,7 +40,12 @@ import { ProblemsComponent } from './components/problems/problems.component';
3540
ContestComponent,
3641
AboutComponent,
3742
IdeComponent,
38-
ProblemsComponent
43+
ProblemsComponent,
44+
AddContestComponent,
45+
EditContestComponent,
46+
SubmissionComponent,
47+
RanklistComponent,
48+
SolutionComponent
3949
],
4050
imports: [
4151
BrowserModule,

codecamp-front/src/app/components/add-contest/add-contest.component.css

Whitespace-only changes.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<div class="container">
2+
<div class="row">
3+
<div class="col-md-12">
4+
<div class="display-4">Add Contest</div>
5+
<form [formGroup]="form" (submit)="onAddContestSubmit()">
6+
<div class="form-group">
7+
<label for="name">Contest Name</label>
8+
<input type="text"
9+
name="name"
10+
formControlName="name"
11+
class="form-control"
12+
placeholder="Enter Name"
13+
autocomplete="off"
14+
[ngClass]="{'is-invalid': (form.controls.name.errors && form.controls.name.dirty) , 'is-valid': !form.controls.name.errors}">
15+
</div>
16+
17+
<div class="form-group">
18+
<label for="id">Contest ID</label>
19+
<input type="text"
20+
name="id"
21+
formControlName="id"
22+
class="form-control"
23+
placeholder="Enter contest ID"
24+
autocomplete="off"
25+
[ngClass]="{'is-invalid': (form.controls.id.errors && form.controls.id.dirty) , 'is-valid': !form.controls.id.errors}">
26+
</div>
27+
<div class="row">
28+
<div class="col-md-6">
29+
<div class="form-group">
30+
<label for="startDate">Start Time</label>
31+
<input type="datetime-local"
32+
name="startdate"
33+
formControlName="startdate"
34+
class="form-control"
35+
placeholder="Start Time"
36+
autocomplete="off"
37+
[ngClass]="{'is-invalid': (form.controls.startdate.errors && form.controls.startdate.dirty) , 'is-valid': !form.controls.startdate.errors}">
38+
</div>
39+
</div>
40+
<div class="col-md-6">
41+
<div class="form-group">
42+
<label for="EndDate">End Time</label>
43+
<input type="datetime-local"
44+
name="enddate"
45+
formControlName="enddate"
46+
class="form-control"
47+
placeholder="End Time"
48+
autocomplete="off"
49+
[ngClass]="{'is-invalid': (form.controls.enddate.errors && form.controls.enddate.dirty) , 'is-valid': !form.controls.enddate.errors}">
50+
</div>
51+
</div>
52+
</div>
53+
54+
<div class="form-group">
55+
<label for="city">Description</label>
56+
<textarea
57+
name="description"
58+
formControlName="description"
59+
class="form-control" placeholder="Enter Description" autocomplete="off" rows="10">
60+
</textarea>
61+
</div>
62+
63+
<input
64+
[disabled]="!form.valid "
65+
type="submit" class="btn btn-primary" value="Add Contest">
66+
</form>
67+
</div>
68+
</div>
69+
</div>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { AddContestComponent } from './add-contest.component';
4+
5+
describe('AddContestComponent', () => {
6+
let component: AddContestComponent;
7+
let fixture: ComponentFixture<AddContestComponent>;
8+
9+
beforeEach(async(() => {
10+
TestBed.configureTestingModule({
11+
declarations: [ AddContestComponent ]
12+
})
13+
.compileComponents();
14+
}));
15+
16+
beforeEach(() => {
17+
fixture = TestBed.createComponent(AddContestComponent);
18+
component = fixture.componentInstance;
19+
fixture.detectChanges();
20+
});
21+
22+
it('should create', () => {
23+
expect(component).toBeTruthy();
24+
});
25+
});
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Component, OnInit } from '@angular/core';
2+
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
3+
import { AuthService } from '../../services/auth.service';
4+
import { Router } from '@angular/router';
5+
6+
@Component({
7+
selector: 'app-add-contest',
8+
templateUrl: './add-contest.component.html',
9+
styleUrls: ['./add-contest.component.css']
10+
})
11+
export class AddContestComponent implements OnInit {
12+
13+
form: FormGroup;
14+
15+
constructor(
16+
private authService: AuthService,
17+
private router: Router,
18+
private formBuilder: FormBuilder
19+
) { }
20+
21+
ngOnInit() {
22+
this.createForm();
23+
}
24+
createForm() {
25+
this.form = this.formBuilder.group({
26+
name: ['', Validators.required],
27+
id: ['', Validators.required],
28+
startdate: ['', Validators.required],
29+
enddate: ['', Validators.required],
30+
description: ['', Validators.required]
31+
});
32+
}
33+
34+
onAddContestSubmit() {
35+
36+
}
37+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
<div class="container">
1+
<div class="container" *ngIf="authService.checkisAdmin() === true" >
22
<div class="row">
33
<div class="col-md-12">
4-
<button class="btn btn-warning" *ngIf="authService.checkisAdmin() === true">Add Contest</button>
4+
<button class="btn btn-warning" (click)="onAddContest()">Add Contest</button>
5+
<button class="btn btn-info" (click)="onEditContest()">Edit Contest</button>
56
</div>
67
</div>
78
</div>
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Component, OnInit } from '@angular/core';
22
import { AuthService } from '../../services/auth.service';
3+
import { Router } from '@angular/router';
34

45
@Component({
56
selector: 'app-contest',
@@ -8,11 +9,20 @@ import { AuthService } from '../../services/auth.service';
89
})
910
export class ContestComponent implements OnInit {
1011

12+
1113
constructor(
12-
private authService: AuthService
14+
public authService: AuthService,
15+
private router: Router
1316
) { }
1417

1518
ngOnInit() {
19+
1620
}
1721

22+
onAddContest() {
23+
this.router.navigate(['/contest/add-contest']);
24+
}
25+
onEditContest() {
26+
this.router.navigate(['/contest/edit-contest']);
27+
}
1828
}

codecamp-front/src/app/components/edit-contest/edit-contest.component.css

Whitespace-only changes.

codecamp-front/src/app/components/edit-contest/edit-contest.component.html

Whitespace-only changes.

0 commit comments

Comments
 (0)