Skip to content

Commit f3c9770

Browse files
committed
[ENHANCEMENT]
- Removes getPropertiesByForm - Improves InputReturn - Add company form to register
1 parent 33c4f81 commit f3c9770

File tree

5 files changed

+51
-53
lines changed

5 files changed

+51
-53
lines changed

angular/src/app/core/models/form-models/base/base-form.model.ts

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -199,41 +199,4 @@ export abstract class BaseFormModel {
199199

200200
return ret;
201201
}
202-
203-
// returns which properties belong to each object
204-
// Ex:
205-
// {
206-
// 'stundent': ['name', 'phone', 'city'],
207-
// 'curriculum_vitaes': ['summary', 'whatelse', 'link_linkedin'],
208-
// 'cv_degrees': ['course', 'school', 'course_type'],
209-
// 'cv_awards': ['title', 'desc']
210-
// }
211-
getPropertiesByForm(): { [form: string]: Array<string> } {
212-
function auxGetPropertiesByForm(target: BaseFormModel, name: string) {
213-
const keys = (Object.keys(target));
214-
215-
let ret = {};
216-
ret[name] = [];
217-
218-
for (const key of keys) {
219-
const field = target[key];
220-
221-
if (!BaseFormModel.isFieldValid(field)) {
222-
throw new Error(INVALID_FORM_MODEL);
223-
}
224-
225-
if (field instanceof BaseFormModel) {
226-
const returnedValue = auxGetPropertiesByForm(field, key);
227-
// merge the objects
228-
ret = {...ret, ...returnedValue};
229-
} else if (field instanceof InputFieldModel ||
230-
field instanceof Array) {
231-
ret[name].push(key);
232-
}
233-
}
234-
235-
return ret;
236-
}
237-
return auxGetPropertiesByForm(this, 'this');
238-
}
239202
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { BaseFormModel } from '../../core/models/form-models/base/base-form.model';
2+
import { InputFieldModel } from '../../core/models/form-models/base/input-field.model';
3+
4+
export class CompanyFormModel extends BaseFormModel {
5+
name: InputFieldModel;
6+
area: InputFieldModel;
7+
8+
constructor(name: string = '',
9+
area: string = '') {
10+
super();
11+
this.name = new InputFieldModel(name);
12+
this.area = new InputFieldModel(area);
13+
}
14+
}

angular/src/app/home/models/register-form.model.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { CompanyFormModel } from './company-form.model';
12
import { LanguageFormModel } from './language-form.model';
23
import { BaseFormModel } from '../../core/models/form-models/base/base-form.model';
34
import { InputFieldModel } from '../../core/models/form-models/base/input-field.model';
@@ -10,18 +11,30 @@ export class RegisterFormModel extends BaseFormModel {
1011
city: InputFieldModel;
1112
skills: Array<InputFieldModel>;
1213
languages: Array<LanguageFormModel>;
13-
14+
company: CompanyFormModel;
1415

1516
constructor(email: string = '',
1617
phone: string = '',
17-
city: string = '') {
18+
city: string = '',
19+
skills: Array<string> = [],
20+
languages: Array<{name: string, speaking: string, writing: string,
21+
reading: string, listening: string }> = [],
22+
company: {name: string, area: string} = {name: '', area: ''}) {
1823
super();
1924
this.email = new InputFieldModel(email);
2025
this.phone = new InputFieldModel(phone);
2126
this.city = new InputFieldModel(city);
2227
this.password = new InputFieldModel('');
2328
this.passwordConfirmation = new InputFieldModel('');
2429
this.skills = [];
30+
for (const skill of skills) {
31+
this.skills.push(new InputFieldModel(skill));
32+
}
2533
this.languages = [];
34+
for (const language of languages) {
35+
this.languages.push(new LanguageFormModel(language.name, language.speaking, language.writing,
36+
language.reading, language.listening));
37+
}
38+
this.company = new CompanyFormModel(company.name, company.area);
2639
}
2740
}

angular/src/app/home/pages/register/register.component.html

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ <h2>Personal Info</h2>
2121
(emitter)="inputReturn($event, 'passwordConfirmation')"
2222
[confirmValue]="form ? form.password.value : ''">
2323
</app-input>
24-
24+
<h2>Company Info</h2>
25+
<app-input type='company-name' label='Company Name' placeholder='Ex: Apple'
26+
(emitter)="inputReturn($event, 'company', ['name'])">
27+
</app-input>
28+
<app-input type='company-area' label='Company Area' placeholder='Ex: Software Engineering'
29+
(emitter)="inputReturn($event, 'company', ['area'])">
30+
</app-input>
2531
<h2>Skills</h2>
2632
<div class="skill-input-container" *ngFor='let skill of form?.skills; let i = index;'>
2733
<app-input type='skill' label='Skill' placeholder='Ex: Angular'
28-
(emitter)="inputReturn($event, 'skills', i)">
34+
(emitter)="inputReturn($event, 'skills', [i])">
2935
</app-input>
3036
<div class="remove-button" (click)="removeSkill(i)">
3137
Remove
@@ -37,30 +43,30 @@ <h2>Languages</h2>
3743
<div class="languages-input-container" *ngFor='let languages of form?.languages; let i = index;'>
3844
<div class="language-input-container">
3945
<app-input type='language' label='Language' placeholder='Ex: English'
40-
(emitter)="inputReturn($event, 'languages', i, 'name')">
46+
(emitter)="inputReturn($event, 'languages', [i, 'name'])">
4147
</app-input>
4248
<div class="remove-button" (click)="removeLanguages(i)">
4349
Remove
4450
</div>
4551
</div>
4652
<div class="language-input-container">
4753
<app-input type='language-level' label='Speaking Level(from: 1 to 5)' placeholder='Ex: 3'
48-
(emitter)="inputReturn($event, 'languages', i, 'speaking')">
54+
(emitter)="inputReturn($event, 'languages', [i, 'speaking'])">
4955
</app-input>
5056
</div>
5157
<div class="language-input-container">
5258
<app-input type='language-level' label='Writing Level(from: 1 to 5)' placeholder='Ex: 3'
53-
(emitter)="inputReturn($event, 'languages', i, 'writing')">
59+
(emitter)="inputReturn($event, 'languages', [i, 'writing'])">
5460
</app-input>
5561
</div>
5662
<div class="language-input-container">
5763
<app-input type='language-level' label='Reading Level(from: 1 to 5)' placeholder='Ex: 3'
58-
(emitter)="inputReturn($event, 'languages', i, 'reading')">
64+
(emitter)="inputReturn($event, 'languages', [i, 'reading'])">
5965
</app-input>
6066
</div>
6167
<div class="language-input-container">
6268
<app-input type='language-level' label='Listening Level(from: 1 to 5)' placeholder='Ex: 3'
63-
(emitter)="inputReturn($event, 'languages', i, 'listening')">
69+
(emitter)="inputReturn($event, 'languages', [i, 'listening'])">
6470
</app-input>
6571
</div>
6672
</div>

angular/src/app/home/pages/register/register.component.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@ export class RegisterComponent implements OnInit, AfterContentInit {
2020
this.form = new RegisterFormModel();
2121
}
2222

23-
inputReturn(obj: InputFieldModel, type: string, i = 0, field = '') {
24-
if (type === 'languages') {
25-
this.form.languages[i][field].value = obj.value;
26-
this.form.languages[i][field].errors = obj.errors;
23+
inputReturn(obj: InputFieldModel, type: string, path: Array<number | string> = []) {
24+
if (type === 'company') {
25+
this.form.company[path[0]].value = obj.value;
26+
this.form.company[path[0]].errors = obj.errors;
27+
} else if (type === 'languages') {
28+
this.form.languages[path[0]][path[1]].value = obj.value;
29+
this.form.languages[path[0]][path[1]].errors = obj.errors;
2730
} else if (type === 'skills') {
28-
this.form.skills[i].value = obj.value;
29-
this.form.skills[i].errors = obj.errors;
31+
this.form.skills[path[0]].value = obj.value;
32+
this.form.skills[path[0]].errors = obj.errors;
3033
} else {
3134
this.form[type] = obj;
3235
}
@@ -35,7 +38,6 @@ export class RegisterComponent implements OnInit, AfterContentInit {
3538

3639
submit() {
3740
console.log(this.form.prepare2send());
38-
console.log(this.form.getPropertiesByForm());
3941
}
4042

4143
addNewSkill() {

0 commit comments

Comments
 (0)