Skip to content

Commit 94475d1

Browse files
committed
Updated Edit module
Edit functionality with Load button
1 parent 36c5671 commit 94475d1

File tree

8 files changed

+94
-114
lines changed

8 files changed

+94
-114
lines changed

front/src/app/form/form.component.css

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
.firstname.ng-valid {
1+
/*.firstname.ng-valid[required] {
22
background-color: lightgreen;
33
}
44
.firstname.ng-dirty.ng-invalid-required {
55
background-color: red;
66
}
77
.firstname.ng-dirty.ng-invalid-minlength {
88
background-color: yellow;
9+
}*/
10+
11+
.ng-valid[required] {
12+
border-left: 5px solid #42A948; /* green */
13+
}
14+
.ng-invalid {
15+
border-left: 5px solid #a94442; /* red */
916
}
1017

1118
.age.ng-valid {

front/src/app/form/form.component.html

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,19 @@
22
<div class="panel panel-default">
33
<div class="panel-heading"><span class="lead">User Registration Form </span></div>
44
<div class="formcontainer">
5-
<form name="myForm" #myForm class="form-horizontal">
6-
<!-- <input type="hidden" ngModel="person.id"/>-->
7-
<input type="text" #hiddenId [ngModel]="message" [ngModelOptions]="{standalone: true}"/>
8-
<!--<input type="text" #hiddenId [(ngModel)]="personClass.id" [ngModelOptions]="{standalone: true}" />-->
5+
<form ngForm="myForm" class="form-horizontal">
6+
7+
<input type="hidden" #hiddenId [(ngModel)]="idRendered" [ngModelOptions]="{standalone: true}"/>
98
<div class="row">
109
<div class="form-group col-md-12">
1110
<label class="col-md-2 control-lable">FirstName</label>
1211
<div class="col-md-7">
13-
<input type="text" #firstname (ngModel)="personClass.firstname" [ngModelOptions]="{standalone: true}" name="firstname" class="firstname form-control input-sm" placeholder="Enter your firstname" required minlength="4" maxlength="24" autofocus/>
14-
<!--<input type="text" #firstname ngModel="{{editfirstname}}" name="firstname" class="firstname form-control input-sm" placeholder="Enter your firstname" required ng-minlength="3" autofocus/>-->
15-
<div class="has-error" (show)="myForm.$dirty">
16-
<span (show)="myForm.firstname.error.required">This is a required field</span>
17-
<span (show)="myForm.firstname.error.minlength">Minimum length required is 3</span>
18-
<span (show)="myForm.firstname.invalid">This field is invalid </span>
19-
</div>
12+
<input type="text" #firstname [(ngModel)]="firstnameRendered" [ngModelOptions]="{standalone: true}" name="firstname" class="firstname form-control input-sm" placeholder="Enter your firstname" required minlength="4" maxlength="24" autofocus/>
13+
<div class="has-error" (show)="myForm.$dirty">
14+
<span (show)="myForm.firstname.error.required">This is a required field</span>
15+
<span (show)="myForm.firstname.error.minlength">Minimum length required is 3</span>
16+
<span (show)="myForm.firstname.invalid">This field is invalid </span>
17+
</div>
2018
</div>
2119
</div>
2220
</div>
@@ -26,7 +24,7 @@
2624
<div class="form-group col-md-12">
2725
<label class="col-md-2 control-lable" >LastName</label>
2826
<div class="col-md-7">
29-
<input type="text" #lastname [(ngModel)]="personClass.lastname" [ngModelOptions]="{standalone: true}" class="form-control input-sm" placeholder="Enter your lastname. [This field is validation free]"/>
27+
<input type="text" #lastname [(ngModel)]="lastnameRendered" [ngModelOptions]="{standalone: true}" class="form-control input-sm" placeholder="Enter your lastname. [This field is validation free]"/>
3028
</div>
3129
</div>
3230
</div>
@@ -35,22 +33,22 @@
3533
<div class="form-group col-md-12">
3634
<label class="col-md-2 control-lable" >Age</label>
3735
<div class="col-md-7">
38-
<input type="number" #age [(ngModel)]="personClass.age" [ngModelOptions]="{standalone: true}" name="age" minlength="1" maxlength="2" class="age form-control input-sm" placeholder="Enter your age" required/>
39-
<!-- <div class="has-error" (show)="myForm.$dirty">
40-
<span (show)="myForm.age.$error.required">This is a required field</span>
41-
<span (show)="myForm.age.$invalid">This field is invalid </span>
42-
</div>-->
36+
<input type="number" #age [(ngModel)]="ageRendered" [ngModelOptions]="{standalone: true}" name="age" class="age form-control input-sm" placeholder="Enter your age" maxlength="3" minlength="1" required/>
37+
<!-- <div class="has-error" (show)="myForm.$dirty">
38+
<span (show)="myForm.age.$error.required">This is a required field</span>
39+
<span (show)="myForm.age.$invalid">This field is invalid </span>
40+
</div>-->
4341
</div>
4442
</div>
4543
</div>
4644

4745
<div class="row">
4846
<div class="form-actions floatRight">
4947
<!-- <input type="button" ngModel="updateOrAdd:emit({text:message})" (click)="create1(person)" class="btn btn-primary btn-sm" >-->
50-
<button type="button" (click)="passingValuesCreate(hiddenId.value,firstname.value,lastname.value,age.value)" class="btn btn-success btn-sm" [disabled]="myForm.invalid">ADD</button>
51-
<button type="button" (click)="edit(hiddenId.value,firstname.value,lastname.value,age.value,personClass)" class="btn btn-primary btn-sm" [disabled]="myForm.invalid">UPDATE</button>
52-
<!--<button type="button" (click)="update.emit({text:message})" class="btn btn-warning btn-sm" [disabled]="myForm.pristine">Reset Form</button>-->
53-
<button type="button" (click)="reset()" class="btn btn-warning btn-sm" [disabled]="myForm.pristine">Reset Form</button>
48+
<button type="button" (click)="loadData();" class="btn btn-group btn-sm" ngDisabled="myForm.$invalid">Load Data</button>
49+
<button type="button" (click)="passingValuesCreate(hiddenId.value,firstname.value,lastname.value,age.value)" class="btn btn-success btn-sm" ngDisabled="myForm.$invalid">ADD</button>
50+
<button type="button" (click)="editTemp(hiddenId.value,firstname.value,lastname.value,age.value)" class="btn btn-primary btn-sm" ngDisabled="myForm.$invalid">UPDATE</button>
51+
<button type="reset" (click)="reset()" class="btn btn-warning btn-sm" ngDisabled="myForm.dx">Reset Form</button>
5452
</div>
5553
</div>
5654
</form>

front/src/app/form/form.component.ts

Lines changed: 49 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -8,123 +8,103 @@ import * as Rx from 'rxjs/Rx';
88
import {PersonComponent} from "../person/person.component";
99
import {userInfo} from "os";
1010
import {PersonListComponent} from "../person-list/person-list.component";
11-
import {PaginationPage, PaginationPropertySort} from "../pagination";
12-
import {Table} from "../table";
11+
import {PaginationPropertySort, PaginationPage} from "../pagination";
1312
import {FormGroup} from "@angular/forms";
1413
@Component({
1514
selector: 'app-form',
1615
templateUrl: './form.component.html',
17-
styleUrls: ['./form.component.css']
16+
styleUrls: ['./form.component.css'],
17+
styles : [``]
1818
})
1919
export class FormComponent implements OnInit {
2020
myForm : FormGroup;
2121
person: Person;
22-
personClass: User = new User();
23-
self: Table<Person>;
2422
personPage: PaginationPage<Person>;
23+
personClass: User = new User();
2524

26-
@Input() message;
27-
@Input() personListComponent:PersonListComponent;
28-
29-
@Output() updateByEdit = new EventEmitter();
30-
31-
passingValuesCreate(hiddenId1,firstname1,lastname1,age1){
32-
this.personClass.id = hiddenId1;
33-
this.personClass.firstname = firstname1;
34-
this.personClass.lastname = lastname1;
35-
this.personClass.age =age1;
36-
this.create(this.personClass);
37-
}
38-
39-
passingValuesEdit(hiddenId1,firstname1,lastname1,age1) {
40-
console.log("temp calledd edit>>>>>>>>>>>>>>> "+ hiddenId1 );
41-
this.personClass.id = hiddenId1;
42-
this.personClass.firstname = firstname1;
43-
this.personClass.lastname = lastname1;
44-
this.personClass.age =age1;
45-
}
46-
47-
25+
@Input() idRendered : number;
26+
@Input() firstnameRendered : string;
27+
@Input() lastnameRendered : string;
28+
@Input() ageRendered : string;
29+
//@Output() updateByEdit = new EventEmitter();
4830

4931

5032
constructor(private router: Router, private route: ActivatedRoute, private personService: PersonService) {
5133
}
5234

53-
5435
ngOnInit() {
5536
this.route.params.subscribe(params=> {
5637
if (params['id'] == null) {
57-
//this.person = Person;
5838
} else {
59-
this.personService.getPerson(Number(params['id'])).subscribe(person => this.person = person);
39+
this.personService.getPerson(Number(params['id'])).subscribe(person => this.personClass = person);
6040
}
6141
});
6242
localStorage.clear();
63-
let observable: Rx.Observable<PaginationPage<any>> = this.fetchPage(0, 5, null);
64-
showLoading();
65-
observable.subscribe(doNothing, hideLoading, hideLoading);
66-
this.self = this;
67-
68-
//this.message = "5";
69-
}
70-
fetchPage(pageNumber: number, pageSize: number, sort: PaginationPropertySort): Rx.Observable<PaginationPage<Person>> {
71-
let observable: Rx.Observable<PaginationPage<Person>> = this.personService.findPersons(pageNumber, pageSize, sort);
72-
observable.subscribe(personPage => this.personPage = personPage);
73-
return observable;
7443
}
7544

7645

77-
edit(hiddenId1,firstname1,lastname1,age1,personClass){
7846

47+
passingValuesCreate(hiddenId1,firstname1,lastname1,age1){
48+
this.personClass.id = null;
49+
this.personClass.firstname = firstname1;
50+
this.personClass.lastname = lastname1;
51+
this.personClass.age =age1;
52+
this.create(this.personClass);
53+
}
54+
55+
passingValuesEdit(user) {
56+
this.personClass = user;
57+
this.SendVals(this.personClass);
58+
// this.loadData();
59+
}
60+
61+
//which fetches values from text field
62+
editTemp(hiddenId1,firstname1,lastname1,age1){
7963
this.personClass.id = hiddenId1;
8064
this.personClass.firstname = firstname1;
8165
this.personClass.lastname = lastname1;
8266
this.personClass.age =age1;
67+
this.edit(this.personClass);
68+
}
8369

84-
this.storedValues(this.personClass.id,this.personClass.firstname,this.personClass.lastname,this.personClass.age);
70+
edit(personClass){
8571

8672
let observable : Rx.Observable<string> = this.personService.updatePerson(personClass);
8773
showLoading();
88-
observable.switchMap(() => {
89-
return this.fetchPage(0, 5, null);
90-
}).subscribe(doNothing, hideLoading, hideLoading);
91-
/*observable.subscribe(doNothing, hideLoading, ()=>{
74+
observable.subscribe(doNothing, hideLoading, ()=>{
9275
this.router.navigate(['']);
9376
hideLoading();
94-
});*/
95-
}
96-
97-
storedValues(hiddenid2,firstname2,lastname2,age2){
98-
localStorage.setItem('hiddenId',hiddenid2);
99-
localStorage.setItem('firstname',firstname2);
100-
localStorage.setItem('lastname',lastname2);
101-
localStorage.setItem('age',age2);
77+
});
10278
}
103-
104-
105-
106-
107-
10879
create(personClass){
109-
localStorage.clear();
110-
console.log("create form called" +this.personClass.firstname);
80+
11181

11282
let observable: Rx.Observable<string> = this.personService.createPerson(this.personClass);
11383
showLoading();
114-
observable.switchMap(() => {
115-
return this.fetchPage(0, 3, null);
116-
}).subscribe(doNothing, hideLoading, hideLoading);
117-
/*observable.subscribe(doNothing, hideLoading, ()=> {
84+
observable.subscribe(doNothing, hideLoading, ()=> {
11885
this.router.navigate(['']);
11986
hideLoading();
120-
});*/
121-
87+
});
12288
}
12389

12490

91+
//sendvals : this function is used to store and return values for particular chosen person [setters]
92+
SendVals(newObj) {
93+
localStorage.setItem('hiddenId',newObj.id);
94+
localStorage.setItem('firstname',newObj.firstname);
95+
localStorage.setItem('lastname',newObj.lastname);
96+
localStorage.setItem('age',newObj.age);
97+
}
98+
//loadData : this function is used to store and return values for particular chosen person [getters]
99+
loadData(){
100+
this.idRendered = parseInt(localStorage.getItem('hiddenId'));
101+
this.firstnameRendered = localStorage.getItem('firstname');
102+
this.lastnameRendered = localStorage.getItem('lastname');
103+
this.ageRendered = localStorage.getItem('age');
104+
}
125105

126106
reset(){
127-
this.myForm.reset();
107+
localStorage.clear();
128108
}
129109

130110

front/src/app/person-list/person-list.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ <h2>Persons</h2>
4343
<td>{{person.lastname}}</td>
4444
<td>{{person.age}}</td>
4545
<td class="actions">
46-
<a class="btn btn-success btn-xs" (click)="goToDetails(person)">Details</a>
46+
<a class="btn btn-success btn-xs" (click)="goToDetails(person)">View</a>
4747
<a class="btn btn-primary btn-xs" (click)="currentPersonEdit=person" data-toggle="modal" data-target="#edit-modal">Edit</a>
4848
<a class="btn btn-danger btn-xs" (click)="currentPerson=person" data-toggle="modal" data-target="#delete-modal">Delete</a>
4949

front/src/app/person-list/person-list.component.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ export class PersonListComponent implements OnInit, Table<Person> {
2323
personPage: PaginationPage<Person>;
2424
personClass: User = new User();
2525
self: Table<Person>;
26-
26+
@Input() tempmsg ;
27+
@Output() updateVals = new EventEmitter();
2728

2829
constructor(private router: Router, private route: ActivatedRoute, private personService: PersonService) {
2930
}
@@ -54,20 +55,13 @@ export class PersonListComponent implements OnInit, Table<Person> {
5455
let observable: Rx.Observable<Response> = this.personService.deletePerson(person.id);
5556
showLoading();
5657
observable.switchMap(() => {
57-
return this.fetchPage(0, 10, null);
58+
return this.fetchPage(0, 5, null);
5859
}).subscribe(doNothing, hideLoading, hideLoading);
5960
}
6061

6162
editpopup(user : User){//popup-modal
62-
console.log("person-list method called "+ user.firstname);
63-
this.personClass.id = user.id;
64-
this.personClass.firstname = user.firstname;
65-
this.personClass.lastname = user.lastname;
66-
this.personClass.age = user.age;
67-
//methodToFetchDataFromOtherComponent(person);
68-
console.log(""+this.personClass.id , this.personClass.firstname, this.personClass.lastname ,this.personClass.age);
69-
//this.formComponentRef.passingValuesEdit(this.personClass.id , this.personClass.firstname, this.personClass.lastname ,this.personClass.age);
70-
this.formCompRef.passingValuesEdit(this.personClass.id , this.personClass.firstname, this.personClass.lastname ,this.personClass.age);
63+
console.log(""+user.id , user.firstname, user.lastname ,user.age);
64+
this.formCompRef.passingValuesEdit(user);
7165
}
7266

7367

front/src/app/person.service.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,19 @@ export class PersonService {
3636
return this.http.delete(`${webServiceEndpoint}/person/${id}`).publish().refCount();
3737
}
3838

39-
39+
getValue(personClass : User) : Rx.Observable<Response>{
40+
var personClassObj = {"id":personClass.id,"firstname":personClass.firstname, "age":personClass.age, "lastname":personClass.lastname,"dateOfBirth":"null" }
41+
return this.http.get(`${webServiceEndpoint}/person/${personClass.id}`);
42+
}
4043

4144

4245
updatePerson(personClass : User) : Rx.Observable<string>{
43-
console.log("RRRRRRRRRKKKK "+personClass.id + personClass.firstname + personClass.lastname+ personClass.age);
4446
let headers = new Headers();
4547
headers.append('Content-Type', 'application/json');
46-
/*var myObjUpdate ={"id":4,"firstname":"Johnny", "age":14, "lastname":"Canada","dateOfBirth":"null" }*/
48+
headers.append("Cache-Control", "no-cache");
49+
headers.append("Cache-Control", "no-store");
50+
headers.append("If-Modified-Since", "Mon, 26 Jul 1997 05:00:00 GMT");
4751
var myObjUpdate ={"id":personClass.id,"firstname":personClass.firstname, "age":personClass.age, "lastname":personClass.lastname,"dateOfBirth":"null" }
48-
/*return this.http.post(`${webServiceEndpoint}/person/${id}`,JSON.stringify(myObjUpdate),{*/
4952
return this.http.post(`${webServiceEndpoint}/person/${personClass.id}`,JSON.stringify(myObjUpdate),{
5053
headers : headers
5154
}).map((res: Response) => {
@@ -54,10 +57,11 @@ export class PersonService {
5457
}
5558

5659
createPerson(personClass : User): Rx.Observable<string>{
57-
console.log("<<<<<<<<<<<<<<<<<<< person json : "+ personClass);
5860
let headers = new Headers();
5961
headers.append('Content-Type', 'application/json');
60-
/*var myObj = { "firstname":"John", "age":31, "lastname":"New York","dateOfBirth":"null" };*/
62+
headers.append("Cache-Control", "no-cache");
63+
headers.append("Cache-Control", "no-store");
64+
headers.append("If-Modified-Since", "Mon, 26 Jul 1997 05:00:00 GMT");
6165
var myObj = { "firstname":personClass.firstname, "age":personClass.age, "lastname":personClass.lastname,"dateOfBirth":"null" };
6266
return this.http.post(`${webServiceEndpoint}/person`, JSON.stringify(myObj), {
6367
headers: headers

front/src/app/person/person.component.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@ export class PersonComponent implements OnInit {
4343

4444
editpopup(person){//popup-modal
4545
console.log("person method called ");
46-
console.log("person id 222: "+ person.id);
47-
console.log("person fn 222: "+person.firstname);
48-
console.log("person ln 2222: "+person.lastname);
49-
console.log("person age 222: "+person.age);
46+
//Add code if you want edit functionality in person component
5047

5148
//this.formComponentRef.methodToFetchDataFromOtherComponent(person);
5249
//this.formComponentRef.methodToFetchDataFromOtherComponent(person);

front/src/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html>
33
<head>
44
<meta charset="utf-8">
5-
<title>Ang2+Spring demo</title>
5+
<title>ng2+Spring boot demo</title>
66
<base href="/">
77

88
<meta name="viewport" content="width=device-width, initial-scale=1">

0 commit comments

Comments
 (0)