import { Pipe, PipeTransform } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; @Pipe({ name: 'actionFormat' }) export class ActionFormatPipe implements PipeTransform { constructor(private translate: TranslateService) {} private _editFieldMatch(rowEditFields: any, editField: any): boolean{ return rowEditFields.includes(editField); } transform(value: string, _arguments?: any): string { let result: string; switch (value) { case 'ActiveQtyChanged': result = this.translate.instant('Active-qty-change'); break; case 'create_bom': result = this.translate.instant('Created-the-BOM'); break; case 'name_edit': result = this.translate.instant('Renamed-the-BOM'); break; case 'share_add': result = this.translate.instant('Granted-BOM-access-to', { EMAIL: _arguments.email }); break; case 'share_delete': result = this.translate.instant('Revoked-BOM-access-for', { EMAIL: _arguments.email }); break; case 'share_alter': if (_arguments.perms === 'OWN') { result = this.translate.instant('Transferred-BOM-ownership-to', { EMAIL: _arguments.email }); break; } else { result = this.translate.instant('Modified-{EMAIL}-BOM-access', { EMAIL: _arguments.email }); break; } case 'region_edit': result = this.translate.instant('Changed-the-BOM-Region'); break; case 'row_add_multi': if (_arguments.parts.length <= 3) { const partNumbers = _arguments.parts .map(function(part: any) { return part.mpn; }) .join(', '); result = this.translate.instant('Added-a-{PN}', { PN: partNumbers }); } else { result = this.translate.instant('Added-multiple-parts'); } break; case 'alt_select': result = this.translate.instant('Replaced-a-{OLD}-with-a-{NEW}', { OLD: _arguments.oldPart, NEW: _arguments.newPart }); break; case 'row_edit': const editField = _arguments.edits[0].fieldName; const oldValue = _arguments.edits[0].oldValue ?? '-'; const newValue = _arguments.edits[0].newValue ?? '-'; result =`${editField} changed from ${oldValue} to ${newValue}`; //TODO: Needs to be translated break; case 'row_delete': if (_arguments.part) { result = this.translate.instant('Removed-a-{PART}', { PART: _arguments.part }); break; } else { result = this.translate.instant('Removed-a-{PART}', { PART: 'Part' }); break; } case 'row_undelete': if (_arguments.part) { result = this.translate.instant('Re-Added-a-{PART}', { PART: _arguments.part }); break; } else { result = this.translate.instant('Re-Added-a-{PART}', { PART: 'Part' }); break; } case 'edit_col': if (_arguments.columnName) { result = this.translate.instant( 'Changed-the-{COL_NAME}-of-a-{PART}', { COL_NAME: _arguments.columnName, PART: _arguments.part } ); break; } else { result = this.translate.instant('Changed-a-column-of-{PART}', { PART: _arguments.part }); break; } case 'cart_row': result = this.translate.instant('Added-a-{PART}-to-their-cart', { PART: _arguments.part }); break; case 'copy_bom': result = this.translate.instant('Made-a-copy-of-the-BOM'); break; case 'quote_bom': result = this.translate.instant('Requested-a-Quote-for-the-BOM'); break; case 'cart_bom': result = this.translate.instant('Added-the-BOM-to-their-cart'); break; case 'email_bom': result = this.translate.instant('Emailed-the-BOM'); break; case 'download_bom': result = this.translate.instant('Exported-the-BOM'); break; case 'sbo_add': case 'sbo_delete': case 'sbo_clear': result = this.translate.instant( 'Adjusted-the-allocations-of-a-{PART}', { PART: _arguments.part } ); break; case 'sbo_preference': result = this.translate.instant( 'Updated-buying-preferences-for-the-BOM' ); break; default: result = this.translate.instant('Unknown-action'); } return result; } }