UNPKG

@swimlane/ngx-graph

Version:
49 lines 5.95 kB
import { scaleOrdinal } from 'd3-scale'; import { colorSets } from './color-sets'; export class ColorHelper { scale; colorDomain; domain; customColors; constructor(scheme, domain, customColors) { if (typeof scheme === 'string') { scheme = colorSets.find(cs => { return cs.name === scheme; }); } this.colorDomain = scheme.domain; this.domain = domain; this.customColors = customColors; this.scale = this.generateColorScheme(scheme, this.domain); } generateColorScheme(scheme, domain) { if (typeof scheme === 'string') { scheme = colorSets.find(cs => { return cs.name === scheme; }); } return scaleOrdinal().range(scheme.domain).domain(domain); } getColor(value) { if (value === undefined || value === null) { throw new Error('Value can not be null'); } if (typeof this.customColors === 'function') { return this.customColors(value); } const formattedValue = value.toString(); let found; // todo type customColors if (this.customColors && this.customColors.length > 0) { found = this.customColors.find(mapping => { return mapping.name.toLowerCase() === formattedValue.toLowerCase(); }); } if (found) { return found.value; } else { return this.scale(value); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3dpbWxhbmUvbmd4LWdyYXBoL3NyYy9saWIvdXRpbHMvY29sb3IuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBMEIsWUFBWSxFQUFpQixNQUFNLFVBQVUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLEtBQUssQ0FBTTtJQUNYLFdBQVcsQ0FBUTtJQUNuQixNQUFNLENBQU07SUFDWixZQUFZLENBQU07SUFFbEIsWUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQWE7UUFDdkMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDM0IsT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFFakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU07UUFDaEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDM0IsT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QyxJQUFJLEtBQVUsQ0FBQyxDQUFDLHlCQUF5QjtRQUN6QyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEQsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmdlIH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHsgc2NhbGVCYW5kLCBzY2FsZUxpbmVhciwgc2NhbGVPcmRpbmFsLCBzY2FsZVF1YW50aWxlIH0gZnJvbSAnZDMtc2NhbGUnO1xuXG5pbXBvcnQgeyBjb2xvclNldHMgfSBmcm9tICcuL2NvbG9yLXNldHMnO1xuXG5leHBvcnQgY2xhc3MgQ29sb3JIZWxwZXIge1xuICBzY2FsZTogYW55O1xuICBjb2xvckRvbWFpbjogYW55W107XG4gIGRvbWFpbjogYW55O1xuICBjdXN0b21Db2xvcnM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihzY2hlbWUsIGRvbWFpbiwgY3VzdG9tQ29sb3JzPykge1xuICAgIGlmICh0eXBlb2Ygc2NoZW1lID09PSAnc3RyaW5nJykge1xuICAgICAgc2NoZW1lID0gY29sb3JTZXRzLmZpbmQoY3MgPT4ge1xuICAgICAgICByZXR1cm4gY3MubmFtZSA9PT0gc2NoZW1lO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY29sb3JEb21haW4gPSBzY2hlbWUuZG9tYWluO1xuICAgIHRoaXMuZG9tYWluID0gZG9tYWluO1xuICAgIHRoaXMuY3VzdG9tQ29sb3JzID0gY3VzdG9tQ29sb3JzO1xuXG4gICAgdGhpcy5zY2FsZSA9IHRoaXMuZ2VuZXJhdGVDb2xvclNjaGVtZShzY2hlbWUsIHRoaXMuZG9tYWluKTtcbiAgfVxuXG4gIGdlbmVyYXRlQ29sb3JTY2hlbWUoc2NoZW1lLCBkb21haW4pIHtcbiAgICBpZiAodHlwZW9mIHNjaGVtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNjaGVtZSA9IGNvbG9yU2V0cy5maW5kKGNzID0+IHtcbiAgICAgICAgcmV0dXJuIGNzLm5hbWUgPT09IHNjaGVtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc2NhbGVPcmRpbmFsKCkucmFuZ2Uoc2NoZW1lLmRvbWFpbikuZG9tYWluKGRvbWFpbik7XG4gIH1cblxuICBnZXRDb2xvcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGNhbiBub3QgYmUgbnVsbCcpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21Db2xvcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbUNvbG9ycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgIGxldCBmb3VuZDogYW55OyAvLyB0b2RvIHR5cGUgY3VzdG9tQ29sb3JzXG4gICAgaWYgKHRoaXMuY3VzdG9tQ29sb3JzICYmIHRoaXMuY3VzdG9tQ29sb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvdW5kID0gdGhpcy5jdXN0b21Db2xvcnMuZmluZChtYXBwaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIG1hcHBpbmcubmFtZS50b0xvd2VyQ2FzZSgpID09PSBmb3JtYXR0ZWRWYWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICByZXR1cm4gZm91bmQudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNjYWxlKHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==