Skip to content

Commit 9276862

Browse files
Mutugiiidogi
andauthored
teams: smoother survey birthyear input (fixes #9119) (#9122)
Co-authored-by: dogi <[email protected]>
1 parent dae25ff commit 9276862

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "planet",
33
"license": "AGPL-3.0",
4-
"version": "0.20.33",
4+
"version": "0.20.34",
55
"myplanet": {
66
"latest": "v0.32.97",
77
"min": "v0.31.97"

src/app/users/users-update/users-update.component.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,10 @@
107107
<ng-container *ngIf="submissionMode">
108108
<ng-container *ngIf="!showAdditionalFields">
109109
<mat-form-field>
110-
<input matInput i18n-placeholder placeholder="Age" type="number" formControlName="age" [required]="false">
110+
<input matInput i18n-placeholder placeholder="Birth Year" type="number" formControlName="birthYear" [required]="false">
111+
<mat-hint i18n>Enter year (e.g., 1995)</mat-hint>
111112
<mat-error>
112-
<planet-form-error-messages [control]="editForm.controls.age"></planet-form-error-messages>
113+
<planet-form-error-messages [control]="editForm.controls.birthYear"></planet-form-error-messages>
113114
</mat-error>
114115
</mat-form-field>
115116
</ng-container>

src/app/users/users-update/users-update.component.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,12 @@ export class UsersUpdateComponent implements OnInit, CanComponentDeactivate {
108108
this.conditionalValidator(CustomValidators.dateValidRequired).bind(this),
109109
ac => this.validatorService.notDateInFuture$(ac)
110110
],
111-
age: [ '', [ Validators.min(0), Validators.max(120) ] ],
111+
birthYear: [ '', [
112+
Validators.min(1900),
113+
Validators.max(new Date().getFullYear() - 1),
114+
Validators.pattern(/^\d{4}$/)
115+
]],
116+
age: [ '' ],
112117
gender: [ '', this.conditionalValidator(Validators.required).bind(this) ],
113118
level: [ '', this.conditionalValidator(Validators.required).bind(this) ],
114119
betaEnabled: false
@@ -128,6 +133,13 @@ export class UsersUpdateComponent implements OnInit, CanComponentDeactivate {
128133
}
129134

130135
onSubmit() {
136+
// exports don't break: calculate age from birthYear form validation
137+
const birthYear = this.editForm.get('birthYear')?.value;
138+
if (birthYear && birthYear.toString().length === 4) {
139+
const calculatedAge = new Date().getFullYear() - parseInt(birthYear, 10);
140+
this.editForm.patchValue({ age: calculatedAge }, { emitEvent: false });
141+
}
142+
131143
if (!this.editForm.valid) {
132144
showFormErrors(this.editForm.controls);
133145
return;
@@ -138,7 +150,9 @@ export class UsersUpdateComponent implements OnInit, CanComponentDeactivate {
138150

139151
submitUser() {
140152
if (this.submissionMode) {
141-
this.appendToSurvey(this.editForm.value);
153+
// Remove birthYear from submitted data
154+
const { birthYear, ...cleanUserData } = this.editForm.value;
155+
this.appendToSurvey(cleanUserData);
142156
} else {
143157
const attachment = this.file ? this.createAttachmentObj() : {};
144158
this.userService.updateUser(Object.assign({}, this.user, this.editForm.value, attachment)).pipe(

0 commit comments

Comments
 (0)