在 series.columns.template 上使用 propertyFields 时设置替代颜色
Set alternative colors when using the propertyFields on series.columns.template
我在使用 propertyField 为系列列模板上的标签设置替代颜色时遇到问题。
例如。我用这个:
let columnTemplate = series.columns.template;
columnTemplate.propertyFields.fill = 'color';
其中 'color' 来自 DataItem,作为来自后端系统的数据。
稍后我想在列上添加标签。我想要对比,所以我想使用替代颜色:https://www.amcharts.com/docs/v4/concepts/colors/#Getting_contrasting_color
我把我的标签编成:
let label = columnTemplate.createChild(am4core.Label);
然后我将设置series.columns.template中的替代颜色。
但我没有得到它的工作。我试过例如:
label.fill = series.columns.template.fill.alternative;
完成工作。
这个:
label.fill = am4core.color(series.columns.template.propertyFields.fill).alternative;
不工作。
这个:
label.adapter.add('fill', (value, target, key) => {
const dataContext: { [key: string]: string } | undefined = target.dataItem?.dataContext as {
[key: string]: string;
};
return am4core.color(dataContext?.color).alternative;
});
抛出错误...
有谁知道解决这个问题的方法吗?请帮忙。
我不确定这是一个好的解决方案,但它有效:
export function setContrastColor(value: any, target: any) {
const dataContext = (target.dataItem?.dataContext ?? {}) as Record<string, string | undefined>;
if (dataContext.color) {
return am4core.color(`${dataContext?.color}`).alternative;
} else {
return am4core.color('#FFF');
}
}
并调用它:
label.adapter.add('fill', setContrastColor);
我在使用 propertyField 为系列列模板上的标签设置替代颜色时遇到问题。
例如。我用这个:
let columnTemplate = series.columns.template;
columnTemplate.propertyFields.fill = 'color';
其中 'color' 来自 DataItem,作为来自后端系统的数据。
稍后我想在列上添加标签。我想要对比,所以我想使用替代颜色:https://www.amcharts.com/docs/v4/concepts/colors/#Getting_contrasting_color
我把我的标签编成:
let label = columnTemplate.createChild(am4core.Label);
然后我将设置series.columns.template中的替代颜色。 但我没有得到它的工作。我试过例如:
label.fill = series.columns.template.fill.alternative;
完成工作。
这个:
label.fill = am4core.color(series.columns.template.propertyFields.fill).alternative;
不工作。
这个:
label.adapter.add('fill', (value, target, key) => {
const dataContext: { [key: string]: string } | undefined = target.dataItem?.dataContext as {
[key: string]: string;
};
return am4core.color(dataContext?.color).alternative;
});
抛出错误...
有谁知道解决这个问题的方法吗?请帮忙。
我不确定这是一个好的解决方案,但它有效:
export function setContrastColor(value: any, target: any) {
const dataContext = (target.dataItem?.dataContext ?? {}) as Record<string, string | undefined>;
if (dataContext.color) {
return am4core.color(`${dataContext?.color}`).alternative;
} else {
return am4core.color('#FFF');
}
}
并调用它:
label.adapter.add('fill', setContrastColor);