From 5d5cbf297506c6acfc3022e1d50ad3bb7a338061 Mon Sep 17 00:00:00 2001 From: Muhammad Asad Date: Fri, 4 Mar 2022 09:18:57 +0500 Subject: [PATCH] makes a form --- package-lock.json | 5 ++- src/app/app.component.html | 10 +++++ src/app/app.module.ts | 2 + src/app/common/models/course.ts | 8 ++++ src/app/courses/courses.component.html | 61 ++++++++++++++++++++++++-- src/app/courses/courses.component.ts | 37 +++++++++++++++- src/app/home/home.component.html | 13 ++++++ src/app/home/home.component.ts | 6 ++- 8 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 src/app/common/models/course.ts diff --git a/package-lock.json b/package-lock.json index 8fa252e..63c0bed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "angular13-fundamentals-workshop", "version": "0.0.0", "dependencies": { "@angular/animations": "~13.0.0", @@ -15824,7 +15825,9 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "requires": {} + "requires": { + "ajv": "^8.0.0" + } }, "ansi-align": { "version": "3.0.1", diff --git a/src/app/app.component.html b/src/app/app.component.html index 028469b..9d88249 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -19,6 +19,16 @@ +
diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d2c7873..5ee0b77 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -8,10 +8,12 @@ import { AppComponent } from './app.component'; import { MaterialModule } from './material.module'; import { HomeComponent } from './home/home.component'; import { CoursesComponent } from './courses/courses.component'; +import { FormsModule } from '@angular/forms'; @NgModule({ imports: [ BrowserModule, + FormsModule, AppRoutingModule, BrowserAnimationsModule, MaterialModule, diff --git a/src/app/common/models/course.ts b/src/app/common/models/course.ts new file mode 100644 index 0000000..0b9fbb9 --- /dev/null +++ b/src/app/common/models/course.ts @@ -0,0 +1,8 @@ +export interface Course { + id: string, + title: string, + description: string, + percentComplete:number, + favourite: boolean + +} diff --git a/src/app/courses/courses.component.html b/src/app/courses/courses.component.html index 808c586..8d1798c 100644 --- a/src/app/courses/courses.component.html +++ b/src/app/courses/courses.component.html @@ -7,9 +7,22 @@ + + +

{{course.title}}

+

+ {{course.description}} +

+ +
+
+ +
@@ -18,19 +31,61 @@ - Select Course + + {{originalTitle | titlecase}} + + Select a course - - +
+ + + + + + + +
+

+ {{selectedCourse.percentComplete}}% Complete +

+ + + +
+
+ + Favourite + +
+ + +
+
+
 {{form.value | json}}
+
 {{form.valid | json}}
\ No newline at end of file diff --git a/src/app/courses/courses.component.ts b/src/app/courses/courses.component.ts index 66ceeea..81482a0 100644 --- a/src/app/courses/courses.component.ts +++ b/src/app/courses/courses.component.ts @@ -1,4 +1,12 @@ import { Component, OnInit } from '@angular/core'; +import { Course } from '../common/models/course'; +const emptyCourse: Course ={ + id:null, + title: '', + description: '', + percentComplete: 26, + favourite: false +} @Component({ selector: 'app-courses', @@ -6,19 +14,46 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./courses.component.scss'] }) export class CoursesComponent implements OnInit { + courses = [ + + // 1. render courses in a list + // 2. seoect a course + // 3. render a selected course { id: 1, title: 'Angular 13 Fundamentals', description: 'Learn the fundamentals of Angular 13', percentComplete: 26, favorite: true + }, + { + id: 2, + title: 'Js Course', + description: 'Learn the fundamentals JS', + percentComplete: 76, + favorite: true } ]; + selectedCourse = emptyCourse; + originalTitle=''; constructor() { } ngOnInit(): void { } - + selectCourse(course){ + // ...course is the soluton of shared mutable + this.selectedCourse = {...course}; + this.originalTitle= course.title; + } + deleteCourse(courseId){ + console.log('Delete Course', courseId); + } + saveCourse(course){ + console.log('save Course',course); + } + reset(){ + this.selectCourse({...emptyCourse}); + } } diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index f426908..ce8c75e 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -4,5 +4,18 @@ + + + + + + {{lesson.title}} + + + + + +
+
 {{selectedLesson.title}}
diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts index 8685181..749fd3a 100644 --- a/src/app/home/home.component.ts +++ b/src/app/home/home.component.ts @@ -16,8 +16,12 @@ export class HomeComponent implements OnInit { { title: 'Angular Routing' }, { title: 'Unit Testing Fundamentals' }, ]; - + selectedLesson:any; constructor() {} ngOnInit() {} + + selectLesson(lesson){ + this.selectedLesson = lesson; + } }