@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
51 lines (45 loc) • 2.04 kB
text/typescript
// (C) 2007-2019 GoodData Corporation
import { Localization } from "@gooddata/typings";
import IntlStore from "../helpers/IntlStore";
import { OverTimeComparisonType, OverTimeComparisonTypes } from "../interfaces/OverTimeComparison";
/**
* Factory that builds formatted localized suffix string for derived measure based on the over time comparison type.
* The suffix is used during AFM execution and for bucket item titles.
*
* @internal
*/
export default class DerivedMeasureTitleSuffixFactory {
private readonly locale: Localization.ILocale;
/**
* Create a new instance of the class.
* @param {Localization.ILocale} locale - The locale used for translation.
*/
constructor(locale: Localization.ILocale) {
this.locale = locale;
}
/**
* Returns formatted localized suffix string for derived measure based on the over time comparison type.
* In case when unsupported over time comparison type is provided the empty string is returned.
*
* @param {OverTimeComparisonType} overTimeComparisonType - The over time comparison type for which the
* suffix must be obtained.
* @returns {string}
*/
public getSuffix(overTimeComparisonType: OverTimeComparisonType): string {
const localizationKey = this.getSuffixLocalizationKey(overTimeComparisonType);
return localizationKey === null ? "" : ` - ${this.translateKey(localizationKey)}`;
}
private getSuffixLocalizationKey(overTimeComparisonType: OverTimeComparisonType): string {
switch (overTimeComparisonType) {
case OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR:
return "measure.title.suffix.same_period_year_ago";
case OverTimeComparisonTypes.PREVIOUS_PERIOD:
return "measure.title.suffix.previous_period";
default:
return null;
}
}
private translateKey(localizationKey: string): string {
return IntlStore.getTranslation(localizationKey, this.locale);
}
}