update at 2026-01-22 21:12:46

This commit is contained in:
douboer@gmail.com
2026-01-22 21:12:46 +08:00
parent 6c26e15402
commit 080700f721
2 changed files with 26 additions and 4 deletions

View File

@@ -54,6 +54,11 @@ export class ColorResolver {
}
const color = this.resolveColor(layer.colorRef);
if (typeof layer.num === 'number' && layer.num > 0) {
const interval = layer.interval ?? 0;
return applyPatternColoring(layer.divisions, color, layer.num, interval);
}
for (let i = 0; i < layer.divisions; i++) {
colorMap.set(i, color);
}

View File

@@ -27,20 +27,37 @@ describe('colorResolver', () => {
expect(map.has(5)).toBe(false);
});
it('resolveLayerColors 在提供 colorRef 时覆盖全部扇区', () => {
it('resolveLayerColors 在提供 colorRef 且无 num 时覆盖全部扇区', () => {
const resolver = new ColorResolver(theme, '#000000');
const layer: SectorLayerConfig = {
divisions: 4,
rInner: 0,
rOuter: 10,
colorRef: '火',
};
const map = resolver.resolveLayerColors(layer);
expect(map.size).toBe(4);
expect(map.get(0)).toBe('#E53935');
expect(map.get(3)).toBe('#E53935');
});
it('resolveLayerColors 在提供 num 时使用规律填色', () => {
const resolver = new ColorResolver(theme, '#000000');
const layer: SectorLayerConfig = {
divisions: 6,
rInner: 0,
rOuter: 10,
colorRef: '火',
num: 2,
interval: 1,
};
const map = resolver.resolveLayerColors(layer);
expect(map.size).toBe(4);
expect(map.get(0)).toBe('#E53935');
expect(map.get(3)).toBe('#E53935');
expect(map.has(0)).toBe(true);
expect(map.has(1)).toBe(true);
expect(map.has(2)).toBe(false);
expect(map.has(3)).toBe(true);
expect(map.has(4)).toBe(true);
expect(map.has(5)).toBe(false);
});
it('resolveSectorColor 应遵循 sector > layer > background 优先级', () => {