diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 726f4f1..9e3f80d 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -13,6 +13,7 @@ import { QuizComponent } from './tabs/courses/quiz/quiz.component';
import { PostDetailsComponent } from './reusable-components/forum/post-details/post-details.component';
import { ChatPageComponent } from './chat-page/chat-page.component';
import { SettingsComponent } from './settings/settings.component';
+import { TestComponent } from './tabs/courses/test/test.component';
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: 'welcome' },
@@ -24,6 +25,7 @@ const routes: Routes = [
{ component: VideoChapterComponent, path: 'video-chapter/:heading' },
{ component: VideoNotesComponent, path: 'video-notes/:heading' },
{ component: QuizComponent, path: 'quiz' },
+ { component: TestComponent, path: 'test'},
{ component: CalendarComponent, path: 'calendar' },
{ component: AttendanceComponent, path: 'attendance'},
{ component: ForumPageComponent, path: 'forum'},
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index c25558b..40bc25a 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -8,6 +8,9 @@ import { NgxSiemaModule } from 'ngx-siema';
import { AppRoutingModule } from './app-routing.module';
import { FormsModule } from '@angular/forms';
+// Import services
+import { DemoService } from './services/demo.service';
+
// Component imports
import { AppComponent } from './app.component';
import { WelcomeComponent } from './welcome/welcome.component';
@@ -33,9 +36,11 @@ import { ChatPageComponent } from './chat-page/chat-page.component';
import { ChatWindowComponent } from './chat-page/chat-window/chat-window.component';
import { SettingsComponent } from './settings/settings.component';
import { ClassCardListComponent } from './reusable-components/class-card-list/class-card-list.component';
-
-// Import services
-import { DemoService } from './services/demo.service';
+import { TestComponent } from './tabs/courses/test/test.component';
+import { StartComponent } from './tabs/courses/test/start/start.component';
+import { EndComponent } from './tabs/courses/test/end/end.component';
+import { QuestionSheetComponent } from './tabs/courses/test/question-sheet/question-sheet.component';
+import { QuestionComponent } from './tabs/courses/test/question-sheet/question/question.component';
@NgModule({
declarations: [
@@ -61,6 +66,11 @@ import { DemoService } from './services/demo.service';
ChatWindowComponent,
SettingsComponent,
ClassCardListComponent,
+ TestComponent,
+ StartComponent,
+ EndComponent,
+ QuestionSheetComponent,
+ QuestionComponent,
],
imports: [
BrowserModule,
diff --git a/src/app/tabs/courses/course-details/course-details.component.html b/src/app/tabs/courses/course-details/course-details.component.html
index 6693204..1db35cd 100644
--- a/src/app/tabs/courses/course-details/course-details.component.html
+++ b/src/app/tabs/courses/course-details/course-details.component.html
@@ -31,7 +31,7 @@
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem ab vel reiciendis. Repudiandae nobis pariatur laboriosam, natus quidem quos architecto provident similique officiis vero at cum excepturi eius, eligendi aperiam.
- Take the test now!
+ Take the test now!
diff --git a/src/app/tabs/courses/test/end/end.component.html b/src/app/tabs/courses/test/end/end.component.html
new file mode 100644
index 0000000..e6f76d9
--- /dev/null
+++ b/src/app/tabs/courses/test/end/end.component.html
@@ -0,0 +1 @@
+end works!
diff --git a/src/app/tabs/courses/test/end/end.component.scss b/src/app/tabs/courses/test/end/end.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/tabs/courses/test/end/end.component.spec.ts b/src/app/tabs/courses/test/end/end.component.spec.ts
new file mode 100644
index 0000000..3876bb1
--- /dev/null
+++ b/src/app/tabs/courses/test/end/end.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { EndComponent } from './end.component';
+
+describe('EndComponent', () => {
+ let component: EndComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ EndComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(EndComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/tabs/courses/test/end/end.component.ts b/src/app/tabs/courses/test/end/end.component.ts
new file mode 100644
index 0000000..a69eef5
--- /dev/null
+++ b/src/app/tabs/courses/test/end/end.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-end',
+ templateUrl: './end.component.html',
+ styleUrls: ['./end.component.scss']
+})
+export class EndComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/tabs/courses/test/question-sheet/question-sheet.component.html b/src/app/tabs/courses/test/question-sheet/question-sheet.component.html
new file mode 100644
index 0000000..0c80937
--- /dev/null
+++ b/src/app/tabs/courses/test/question-sheet/question-sheet.component.html
@@ -0,0 +1 @@
+question-sheet works!
diff --git a/src/app/tabs/courses/test/question-sheet/question-sheet.component.scss b/src/app/tabs/courses/test/question-sheet/question-sheet.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/tabs/courses/test/question-sheet/question-sheet.component.spec.ts b/src/app/tabs/courses/test/question-sheet/question-sheet.component.spec.ts
new file mode 100644
index 0000000..b4944f7
--- /dev/null
+++ b/src/app/tabs/courses/test/question-sheet/question-sheet.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { QuestionSheetComponent } from './question-sheet.component';
+
+describe('QuestionSheetComponent', () => {
+ let component: QuestionSheetComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ QuestionSheetComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(QuestionSheetComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/tabs/courses/test/question-sheet/question-sheet.component.ts b/src/app/tabs/courses/test/question-sheet/question-sheet.component.ts
new file mode 100644
index 0000000..abc3398
--- /dev/null
+++ b/src/app/tabs/courses/test/question-sheet/question-sheet.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-question-sheet',
+ templateUrl: './question-sheet.component.html',
+ styleUrls: ['./question-sheet.component.scss']
+})
+export class QuestionSheetComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/tabs/courses/test/question-sheet/question/question.component.html b/src/app/tabs/courses/test/question-sheet/question/question.component.html
new file mode 100644
index 0000000..92d051f
--- /dev/null
+++ b/src/app/tabs/courses/test/question-sheet/question/question.component.html
@@ -0,0 +1 @@
+question works!
diff --git a/src/app/tabs/courses/test/question-sheet/question/question.component.scss b/src/app/tabs/courses/test/question-sheet/question/question.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/tabs/courses/test/question-sheet/question/question.component.spec.ts b/src/app/tabs/courses/test/question-sheet/question/question.component.spec.ts
new file mode 100644
index 0000000..0a695f5
--- /dev/null
+++ b/src/app/tabs/courses/test/question-sheet/question/question.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { QuestionComponent } from './question.component';
+
+describe('QuestionComponent', () => {
+ let component: QuestionComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ QuestionComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(QuestionComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/tabs/courses/test/question-sheet/question/question.component.ts b/src/app/tabs/courses/test/question-sheet/question/question.component.ts
new file mode 100644
index 0000000..556cf51
--- /dev/null
+++ b/src/app/tabs/courses/test/question-sheet/question/question.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-question',
+ templateUrl: './question.component.html',
+ styleUrls: ['./question.component.scss']
+})
+export class QuestionComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/tabs/courses/test/start/start.component.html b/src/app/tabs/courses/test/start/start.component.html
new file mode 100644
index 0000000..f3dae45
--- /dev/null
+++ b/src/app/tabs/courses/test/start/start.component.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+ CHEMISTRY
+ PREPERATORY EXAM
+ Total Marks: 100
+
+
+
Exam Start in:
+
00:00:0{{ secondsCounter }}
+
+
+ START
+
+
+
+
+
+
+ Examination Rules & Technologies
+
+
+
+
+
+
+
+ Information
+
+
+
+
+
+
+
+ Exam Rules & Technologies
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat voluptate eligendi provident nulla reiciendis. Corporis nihil at incidunt voluptas repellat aliquam beatae minima nam voluptatum, quaerat, ullam dolor sunt repudiandae.
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius, laboriosam sapiente, ab optio, unde a suscipit expedita consequuntur modi repellendus eligendi obcaecati explicabo repellat voluptatem nihil earum! Quisquam asperiores, nemo!
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Molestias architecto nostrum culpa aliquam vitae pariatur porro voluptatibus quisquam exercitationem sit voluptate tempore atque, natus quod rem voluptatem esse? Nostrum, voluptatibus.
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente commodi labore saepe, temporibus cum deserunt voluptate minima dolorem doloremque dolores, libero vel voluptates expedita tempore quos incidunt recusandae dolor explicabo.
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quia excepturi, corporis voluptatum illum autem dolore consequuntur cupiditate itaque facilis doloremque, ipsum voluptas perspiciatis quas eius commodi minima labore, omnis natus.
+
+
+ List of item to use
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nostrum mollitia harum nisi repellendus possimus fugiat dolores debitis voluptatum. Ullam doloremque nemo porro numquam! Adipisci incidunt vitae consequatur sapiente eius cum.
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero voluptatem magnam quidem, autem, dolorem pariatur? Rem libero doloremque ipsa, earum. Tempore aut ex voluptatem accusamus maxime, laudantium, atque harum blanditiis.
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa consequatur, eveniet. Expedita, reprehenderit! Exercitationem repudiandae sapiente laboriosam laudantium doloribus velit totam dolorem eos dolores optio, labore blanditiis eveniet, sint maiores!
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nostrum delectus, voluptatibus facilis magnam, cum veritatis quis reiciendis unde, porro nihil sed! Quibusdam maxime voluptatum consequuntur neque ipsa incidunt, eos, quidem.
+
+
+
diff --git a/src/app/tabs/courses/test/start/start.component.scss b/src/app/tabs/courses/test/start/start.component.scss
new file mode 100644
index 0000000..860caa6
--- /dev/null
+++ b/src/app/tabs/courses/test/start/start.component.scss
@@ -0,0 +1,174 @@
+.page-container {
+ padding-bottom: 0;
+ position: relative;
+}
+
+.nav-header {
+ background-color: var(--black);
+}
+
+
+.rules-button {
+ background-color: var(--ash-black);
+ border: 0px;
+ width: 100%;
+ height: 40px;
+ color: var(--teal-green);
+ font-size: 14px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .icon {
+ width: 14px;
+ height: 14px;
+ fill: var(--teal-green);
+ margin-right: 5px;
+ }
+}
+
+.container {
+ height: calc(100vh - 40px - 60px);
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.subject-details {
+ text-align: center;
+
+ .icon {
+ width: 60px;
+ height: 60px;
+ display: block;
+ margin: 0 auto;
+ }
+
+ h2 {
+ font-size: 26px;
+ color: white;
+ font-weight: 500;
+ margin: 10px auto;
+ }
+
+ h4 {
+ font-size: 18px;
+ color: var(--teal-green);
+ font-weight: 500;
+ margin: 10px auto;
+ }
+
+ p {
+ margin: 10px auto;
+ font-size: 16px;
+ color: var(--light-grey);
+ }
+
+ .timer {
+ margin: 60px auto 10px;
+
+ p {
+ margin: 0;
+ }
+
+ .count {
+ font-size: 30px;
+ font-weight: 500;
+ color: var(--green);
+ }
+ }
+
+ .start-button {
+ font-size: 18px;
+ height: 45px;
+ border-radius: 30px;
+ background-color: var(--teal-green);
+ border: 0px;
+ color: white;
+ width: 150px;
+ display: block;
+ margin: 20px auto 0;
+ }
+}
+
+.rules {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ z-index: 1;
+ max-height: calc(100vh - 100px);
+ width: 100%;
+ background-color: white;
+ border-top-left-radius: 30px;
+ border-top-right-radius: 30px;
+ padding: 0px 7% 30px;
+ overflow: auto;
+ transform: translateY(100vh);
+ transition: transform 0.5s;
+
+ &.active {
+ transform: translateY(0);
+ }
+
+ header {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ position: sticky;
+ position: -webkit-sticky;
+ z-index: 1;
+ top: 0;
+ background-color: white;
+ padding: 30px 0 10px;
+ }
+
+ h5 {
+ font-size: 16px;
+ font-weight: 400;
+ color: var(--dark-grey);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .icon {
+ width: 15px;
+ height: 15px;
+ margin-right: 5px;
+ margin-top: -5px;
+ fill: var(--dark-grey);
+ }
+ }
+
+ button {
+ width: 30px;
+ height: 30px;
+ background-color: var(--light-grey);
+ border: 0px;
+ color: white;
+ border-radius: 50%;
+
+ .icon {
+ width: 12px;
+ height: 12px;
+ fill: white;
+ }
+ }
+
+ h2 {
+ font-size: 18px;
+ color: var(--ash-black);
+ margin-bottom: 10px;
+ }
+
+ p, li {
+ margin-bottom: 20px;
+ font-size: 16px;
+ color: var(--black);
+ line-height: 1.5;
+ }
+
+ ol {
+ margin-left: 30px;
+ }
+}
diff --git a/src/app/tabs/courses/test/start/start.component.spec.ts b/src/app/tabs/courses/test/start/start.component.spec.ts
new file mode 100644
index 0000000..01270a2
--- /dev/null
+++ b/src/app/tabs/courses/test/start/start.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { StartComponent } from './start.component';
+
+describe('StartComponent', () => {
+ let component: StartComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ StartComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(StartComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/tabs/courses/test/start/start.component.ts b/src/app/tabs/courses/test/start/start.component.ts
new file mode 100644
index 0000000..a9ff9fe
--- /dev/null
+++ b/src/app/tabs/courses/test/start/start.component.ts
@@ -0,0 +1,37 @@
+import { Component, OnInit, Output, EventEmitter} from '@angular/core';
+import { Location } from '@angular/common';
+
+@Component({
+ selector: 'app-start',
+ templateUrl: './start.component.html',
+ styleUrls: ['./start.component.scss']
+})
+export class StartComponent implements OnInit {
+ secondsCounter: number = 3;
+ timerInterval: any;
+ showRules: boolean = false;
+ @Output() startPageEvent = new EventEmitter();
+
+ constructor(
+ private location: Location
+ ) { }
+
+ ngOnInit(): void {
+ this.timerInterval = setInterval(() => {
+ if (this.secondsCounter > 0) {
+ this.secondsCounter -= 1;
+ } else {
+ clearInterval(this.timerInterval);
+ }
+ }, 1000);
+ }
+
+ back() {
+ this.location.back();
+ }
+
+ startTest() {
+ this.startPageEvent.emit('start-test');
+ }
+
+}
diff --git a/src/app/tabs/courses/test/test.component.html b/src/app/tabs/courses/test/test.component.html
new file mode 100644
index 0000000..64a780d
--- /dev/null
+++ b/src/app/tabs/courses/test/test.component.html
@@ -0,0 +1,3 @@
+
diff --git a/src/app/tabs/courses/test/test.component.scss b/src/app/tabs/courses/test/test.component.scss
new file mode 100644
index 0000000..a179d46
--- /dev/null
+++ b/src/app/tabs/courses/test/test.component.scss
@@ -0,0 +1,3 @@
+.page-container {
+ padding-bottom: 0;
+}
diff --git a/src/app/tabs/courses/test/test.component.spec.ts b/src/app/tabs/courses/test/test.component.spec.ts
new file mode 100644
index 0000000..ef4e38c
--- /dev/null
+++ b/src/app/tabs/courses/test/test.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TestComponent } from './test.component';
+
+describe('TestComponent', () => {
+ let component: TestComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ TestComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(TestComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/tabs/courses/test/test.component.ts b/src/app/tabs/courses/test/test.component.ts
new file mode 100644
index 0000000..656a7c0
--- /dev/null
+++ b/src/app/tabs/courses/test/test.component.ts
@@ -0,0 +1,22 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-test',
+ templateUrl: './test.component.html',
+ styleUrls: ['./test.component.scss']
+})
+export class TestComponent implements OnInit {
+ testStatus: string = 'START';
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+ getStartPageEvents(e: string) {
+ if (e === 'start-test') {
+ this.testStatus = 'PROGRESS';
+ }
+ }
+
+}