96 lines
3.1 KiB
TypeScript
96 lines
3.1 KiB
TypeScript
// (C) Copyright 2015 Moodle Pty Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
import { FormControl, Validators } from '@angular/forms';
|
|
import { Component } from '@angular/core';
|
|
|
|
import { CoreTimeUtils } from '@services/utils/time';
|
|
import { CoreUtils } from '@services/utils/utils';
|
|
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
|
import { CoreUserProfileField } from '@features/user/services/user';
|
|
import { Translate } from '@singletons';
|
|
import { CoreUserProfileFieldBaseComponent } from '@features/user/classes/base-profilefield-component';
|
|
|
|
/**
|
|
* Directive to render a datetime user profile field.
|
|
*/
|
|
@Component({
|
|
selector: 'addon-user-profile-field-datetime',
|
|
templateUrl: 'addon-user-profile-field-datetime.html',
|
|
})
|
|
export class AddonUserProfileFieldDatetimeComponent extends CoreUserProfileFieldBaseComponent {
|
|
|
|
format?: string;
|
|
min?: number;
|
|
max?: number;
|
|
valueNumber = 0;
|
|
|
|
/**
|
|
* Init the data when the field is meant to be displayed without editing.
|
|
*
|
|
* @param field Field to render.
|
|
*/
|
|
protected initForNonEdit(field: CoreUserProfileField): void {
|
|
this.valueNumber = Number(field.value);
|
|
}
|
|
|
|
/**
|
|
* Init the data when the field is meant to be displayed for editing.
|
|
*
|
|
* @param field Field to render.
|
|
*/
|
|
protected initForEdit(field: AuthEmailSignupProfileField): void {
|
|
super.initForEdit(field);
|
|
|
|
// Check if it's only date or it has time too.
|
|
const hasTime = CoreUtils.instance.isTrueOrOne(field.param3);
|
|
|
|
// Calculate format to use.
|
|
this.format = CoreTimeUtils.instance.fixFormatForDatetime(CoreTimeUtils.instance.convertPHPToMoment(
|
|
Translate.instance.instant('core.' + (hasTime ? 'strftimedatetime' : 'strftimedate')),
|
|
));
|
|
|
|
// Check min value.
|
|
if (field.param1) {
|
|
const year = parseInt(field.param1, 10);
|
|
if (year) {
|
|
this.min = year;
|
|
}
|
|
}
|
|
|
|
// Check max value.
|
|
if (field.param2) {
|
|
const year = parseInt(field.param2, 10);
|
|
if (year) {
|
|
this.max = year;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Create the Form control.
|
|
*
|
|
* @return Form control.
|
|
*/
|
|
protected createFormControl(field: AuthEmailSignupProfileField): FormControl {
|
|
const formData = {
|
|
value: field.defaultdata != '0' ? field.defaultdata : undefined,
|
|
disabled: this.disabled,
|
|
};
|
|
|
|
return new FormControl(formData, this.required && !field.locked ? Validators.required : null);
|
|
}
|
|
|
|
}
|