@superset-ui/core
Version:
43 lines • 1.7 kB
JavaScript
import { RegistryWithDefaultKey, OverwritePolicy } from '../models';
import { DEFAULT_D3_FORMAT } from './D3FormatConfig';
import createD3NumberFormatter from './factories/createD3NumberFormatter';
import createSmartNumberFormatter from './factories/createSmartNumberFormatter';
import NumberFormats from './NumberFormats';
export default class NumberFormatterRegistry extends RegistryWithDefaultKey {
d3Format;
constructor() {
super({
name: 'NumberFormatter',
overwritePolicy: OverwritePolicy.Warn,
});
this.registerValue(NumberFormats.SMART_NUMBER, createSmartNumberFormatter());
this.registerValue(NumberFormats.SMART_NUMBER_SIGNED, createSmartNumberFormatter({ signed: true }));
this.setDefaultKey(NumberFormats.SMART_NUMBER);
this.d3Format = DEFAULT_D3_FORMAT;
}
setD3Format(d3Format) {
this.d3Format = { ...DEFAULT_D3_FORMAT, ...d3Format };
return this;
}
get(formatterId) {
const targetFormat = `${formatterId === null ||
typeof formatterId === 'undefined' ||
formatterId === ''
? this.defaultKey
: formatterId}`.trim();
if (this.has(targetFormat)) {
return super.get(targetFormat);
}
// Create new formatter if does not exist
const formatter = createD3NumberFormatter({
formatString: targetFormat,
locale: this.d3Format,
});
this.registerValue(targetFormat, formatter);
return formatter;
}
format(formatterId, value) {
return this.get(formatterId)(value);
}
}
//# sourceMappingURL=NumberFormatterRegistry.js.map