SUPPORT-9169 : add NumberPrefixSuffixTextFormatter
This commit is contained in:
parent
f6c04e57b6
commit
1a6499c8e7
1 changed files with 62 additions and 0 deletions
|
|
@ -0,0 +1,62 @@
|
|||
import {NotNull, TextFormatter, Visible} from "@webbpm/base-package";
|
||||
|
||||
// A text formatter for integer values appending a prefix and/or suffix
|
||||
// depending on the last digit of the value
|
||||
export class NumberPrefixSuffixTextFormatter implements TextFormatter {
|
||||
|
||||
@NotNull()
|
||||
public hasPrefix: boolean;
|
||||
|
||||
@Visible("hasPrefix == true")
|
||||
@NotNull("hasPrefix == true")
|
||||
public oneDigitPrefix: string;
|
||||
@Visible("hasPrefix == true")
|
||||
@NotNull("hasPrefix == true")
|
||||
public otherDigitPrefix: string;
|
||||
|
||||
@NotNull()
|
||||
public hasSuffix: boolean;
|
||||
|
||||
@Visible("hasSuffix == true")
|
||||
@NotNull("hasSuffix == true")
|
||||
public oneDigitSuffix: string;
|
||||
@Visible("hasSuffix == true")
|
||||
@NotNull("hasSuffix == true")
|
||||
public fromTwoToFourDigitSuffix: string;
|
||||
@Visible("hasSuffix == true")
|
||||
@NotNull("hasSuffix == true")
|
||||
public otherDigitSuffix: string;
|
||||
|
||||
private excludedNumbers: number[] = [11, 12, 13, 14];
|
||||
|
||||
format(value: string): string {
|
||||
if (value) {
|
||||
let number = Number.parseInt(value);
|
||||
let lastDigit = Math.abs(number) % 10;
|
||||
let lastDigits = Math.abs(number) % 100;
|
||||
let prefix = "";
|
||||
|
||||
if (this.hasPrefix) {
|
||||
prefix = (this.excludedNumbers.includes(lastDigits)
|
||||
? this.oneDigitPrefix
|
||||
: lastDigit == 1
|
||||
? this.oneDigitPrefix
|
||||
: this.otherDigitPrefix) + " ";
|
||||
}
|
||||
let suffix = "";
|
||||
|
||||
if (this.hasSuffix) {
|
||||
suffix = " " + (this.excludedNumbers.includes(lastDigits)
|
||||
? this.otherDigitSuffix
|
||||
: lastDigit == 1
|
||||
? this.oneDigitSuffix
|
||||
: lastDigit > 1 && lastDigit < 5
|
||||
? this.fromTwoToFourDigitSuffix
|
||||
: this.otherDigitSuffix);
|
||||
}
|
||||
return prefix + value + suffix;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue