// (C) Copyright 2015 Martin Dougiamas // // 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 { Injector, Injectable } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { AddonModDataFieldTextHandler } from '../../text/providers/handler'; import { AddonModDataFieldNumberComponent } from '../component/number'; /** * Handler for number data field plugin. */ @Injectable() export class AddonModDataFieldNumberHandler extends AddonModDataFieldTextHandler { name = 'AddonModDataFieldNumberHandler'; type = 'number'; constructor(protected translate: TranslateService) { super(translate); } /** * Return the Component to use to display the plugin data. * It's recommended to return the class of the component, but you can also return an instance of the component. * * @param {Injector} injector Injector. * @param {any} field The field object. * @return {any|Promise} The component (or promise resolved with component) to use, undefined if not found. */ getComponent(injector: Injector, plugin: any): any | Promise { return AddonModDataFieldNumberComponent; } /** * Get field data in changed. * * @param {any} field Defines the field to be rendered. * @param {any} inputData Data entered in the edit form. * @param {any} originalFieldData Original field entered data. * @return {Promise | boolean} If the field has changes. */ hasFieldDataChanged(field: any, inputData: any, originalFieldData: any): Promise | boolean { const fieldName = 'f_' + field.id, input = typeof inputData[fieldName] != 'undefined' ? parseFloat(inputData[fieldName]) : ''; originalFieldData = (originalFieldData && typeof originalFieldData.content != 'undefined') ? parseFloat(originalFieldData.content) : ''; return input != originalFieldData; } /** * Check and get field requeriments. * * @param {any} field Defines the field to be rendered. * @param {any} inputData Data entered in the edit form. * @return {string | false} String with the notification or false. */ getFieldsNotifications(field: any, inputData: any): string | false { if (field.required && (!inputData || !inputData.length || inputData[0].value == '')) { return this.translate.instant('addon.mod_data.errormustsupplyvalue'); } return false; } }