diff --git a/src/mol-theme/color/entity-source.ts b/src/mol-theme/color/entity-source.ts index 97cdee890ceb78d3c4b78c6d286cc1c2fab531a9..e2f9f44bcd67430b77e8c22f5f768e87fba6388c 100644 --- a/src/mol-theme/color/entity-source.ts +++ b/src/mol-theme/color/entity-source.ts @@ -102,6 +102,14 @@ function getMaps(models: ReadonlyArray<Model>) { return { seqToSrcByModelEntity, srcKeySerialMap } } +function getLabelTable(srcKeySerialMap: Map<string, number>) { + let unnamedCount = 0 + return ['Unknown', ...Array.from(srcKeySerialMap.keys()).map(v => { + const l = v.split('|')[2] + return l === '1' ? `Unnamed ${++unnamedCount}` : l.split(',').join(', ') + })] +} + export function EntitySourceColorTheme(ctx: ThemeDataContext, props: PD.Values<EntitySourceColorThemeParams>): ColorTheme<EntitySourceColorThemeParams> { let color: LocationColor let legend: ScaleLegend | TableLegend | undefined @@ -111,11 +119,7 @@ export function EntitySourceColorTheme(ctx: ThemeDataContext, props: PD.Values<E const { models } = ctx.structure.root const { seqToSrcByModelEntity, srcKeySerialMap } = getMaps(models) - const labelTable = Array.from(srcKeySerialMap.keys()).map(v => { - const l = v.split('|')[2] - return l === '1' ? 'Unnamed' : l - }) - labelTable.push('Unknown') + const labelTable = getLabelTable(srcKeySerialMap) props.palette.params.valueLabel = (i: number) => labelTable[i] const palette = getPalette(srcKeySerialMap.size + 1, props)