dasf-web
Version:
Web frontend components for the data analytics software framework (DASF)
54 lines (44 loc) • 1.67 kB
text/typescript
export enum DataNature {
Sequential,
Diverging,
Qualitative
}
export enum ColorFlavor {
Regular,
Accent,
Dark,
Paired,
Pastel
}
export default class ColorSets {
private static readonly QUALITATIVE_REGULAR = [
'#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'];
public static getColors(numColors: number, flavor: ColorFlavor, nature: DataNature): string[] {
switch (nature) {
case DataNature.Qualitative:
return ColorSets.getQualitative(numColors, flavor);
default:
console.warn('unsupported DataNature ' + nature + ' | using qualitative fallback');
return ColorSets.getQualitative(numColors, flavor);
}
}
public static getQualitative(numColors: number, flavor: ColorFlavor): string[] {
let colors: string[];
switch (flavor) {
case ColorFlavor.Regular:
colors = this.QUALITATIVE_REGULAR;
break;
default:
console.warn('unsupported ColorFlavor ' + flavor + ' | using regular fallback');
colors = this.QUALITATIVE_REGULAR;
break;
}
if (numColors == 0) {
throw Error('Invalid number of colors (requested: ' + numColors + ' | min allowed: 1');
}
if (numColors > colors.length) {
throw Error('Invalid number of colors (requested: ' + numColors + ' | max allowed: ' + this.QUALITATIVE_REGULAR.length);
}
return colors.slice(0, numColors);
}
}