import {Pipe, PipeTransform} from "@angular/core"; import {DatePipe} from "@angular/common"; import {DatasetProfileFieldViewStyle} from "@app/core/common/enum/dataset-profile-field-view-style"; @Pipe({ name: 'fieldValue' }) export class FieldValuePipe implements PipeTransform { constructor(private date: DatePipe) { } transform(controlValue: any): string | null { let value = controlValue.value; let renderStyle = controlValue.viewStyle?.renderStyle; if (renderStyle && controlValue) { switch (renderStyle) { case DatasetProfileFieldViewStyle.Currency: if (value) { return JSON.parse(value).name; } break; case DatasetProfileFieldViewStyle.BooleanDecision: return value == 'true' ? 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.YES' : 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.NO'; case DatasetProfileFieldViewStyle.CheckBox: return value ? 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.YES' : 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.NO'; case DatasetProfileFieldViewStyle.RadioBox: if (value && controlValue.data.options) { return controlValue.data.options.find(option => option.value === value).label; } break; case DatasetProfileFieldViewStyle.DatePicker: return this.date.transform(controlValue.value, 'dd/MM/yyyy'); case DatasetProfileFieldViewStyle.FreeText: return value; case DatasetProfileFieldViewStyle.ComboBox: if (value && controlValue.data.options && !controlValue.data.multiList) { return controlValue.data.options.find(option => value == option.value).label; } else if (value && controlValue.data.options && controlValue.data.multiList) { return controlValue.data.options.filter(option => value.includes(option.value)).map(option => option.label).join(','); } break; case DatasetProfileFieldViewStyle.RichTextArea: if(value) { return value.replace(/ /g, ' ').replace(/(\r\n|\n|\r| +(?= ))|\s\s+/gm, " ").replace(/<[^>]*>/g, ''); } break; case DatasetProfileFieldViewStyle.TextArea: return value; default: return null; } } return null; } }