// (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 { Component } from '@angular/core'; import { CoreAppProvider } from '@services/app'; import { CoreTimeUtils } from '@services/utils/time'; import { Translate } from '@singletons'; import moment, { Moment } from 'moment-timezone'; import { AddonModDataFieldPluginBaseComponent } from '../../../classes/base-field-plugin-component'; /** * Component to render data date field. */ @Component({ selector: 'addon-mod-data-field-date', templateUrl: 'addon-mod-data-field-date.html', }) export class AddonModDataFieldDateComponent extends AddonModDataFieldPluginBaseComponent { format!: string; displayDate?: number; maxDate?: string; minDate?: string; displayTimezone?: string; /** * @inheritdoc */ protected init(): void { if (this.displayMode) { this.displayDate = this.value?.content ? parseInt(this.value.content, 10) * 1000 : undefined; return; } let momentInstance: Moment; // Calculate format to use. this.format = CoreTimeUtils.fixFormatForDatetime(CoreTimeUtils.convertPHPToMoment( Translate.instant('core.strftimedate'), )); this.maxDate = CoreTimeUtils.getDatetimeDefaultMax(); this.minDate = CoreTimeUtils.getDatetimeDefaultMin(); this.displayTimezone = CoreAppProvider.getForcedTimezone(); if (this.searchMode) { this.addControl('f_' + this.field.id + '_z'); momentInstance = this.searchFields!['f_' + this.field.id + '_y'] ? moment(this.searchFields!['f_' + this.field.id + '_y'] + '-' + this.searchFields!['f_' + this.field.id + '_m'] + '-' + this.searchFields!['f_' + this.field.id + '_d']) : moment(); this.searchFields!['f_' + this.field.id] = CoreTimeUtils.toDatetimeFormat(momentInstance.unix() * 1000); } else { momentInstance = this.value?.content ? moment(parseInt(this.value.content, 10) * 1000) : moment(); } this.addControl('f_' + this.field.id, CoreTimeUtils.toDatetimeFormat(momentInstance.unix() * 1000)); if (!this.searchMode && !this.value?.content) { this.onFieldInit.emit({ fieldid: this.field.id, content: String(momentInstance.unix()), }); } } }