angular - 基于最大值和最小值的 Ag 网格单元线性渐变颜色

标签 angular ag-grid ag-grid-angular

如果您查看下表,我将颜色代码作为渐变(从最小值到最大值的深绿色到深红色),这是 Excel 格式中可用的功能。如何在 Ag 网格中实现这一目标?
enter image description here

最佳答案

您可以使用 cellStyle更改单元格样式的函数,如 here 所述.
现在,为了在单元格之间应用渐变效果,我将假设您希望设置样式的列的最小值和最大值是已知的,并且这些值的类型是数字,而不是字符串。
我在这里放了一个 Plunker 作为演示:https://plnkr.co/edit/WVCvkvCFhXB6tiWH .这些值会随机排列,但您可以单击列标题对其进行排序。它是用 React 编写的,因此您可能需要根据您使用的库或框架进行一些更改。这个例子的要点是:

  • 找到要设置样式的列的最小值和最大值。
  • 在要设置样式的列中添加一个函数:
  • 计算 weight这告诉我们离最大值有多近。 0 表示该值是可能的最小值,1 表示该值是可能的最高值。
  • 将权重应用于 3 个 RGB channel 中的每一个,如下所示:weight * finalChannelValue + (1 - weight) * initialChannelValue例如:如果你想用 rgb(198, 57, 9) 为最小值的背景着色, 最大值为 rgb(36, 114, 76) ,这样写:
    let red = weight * 36 + (1 - weight) * 198;
    let green = weight * 114 + (1 - weight) * 57;
    let blue = weight * 76 + (1 - weight) * 9;
    
  • 最后,返回一个对象,该对象具有要应用于单元格的样式 - 在本例中 backgroundColor :
    return { backgroundColor: `rgb(${red}, ${green}, ${blue})` };
    


  • 再一次,这假设单元格中的数字确实是数字,而不是字符串。如果它们是字符串,您可能想尝试 parseInt()parseFloat()首先将它们转换为数字。

    关于angular - 基于最大值和最小值的 Ag 网格单元线性渐变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65033008/

    相关文章:

    javascript - AngularJS ag-grid 调整大小后获取列宽

    javascript - 在 ITP (Safari) 中使用 iframe 和 postMessage 进行单点登录(静默登录)

    javascript - 如何保存用户信息(用户名)firebase new Angular 2

    ag-grid - 为什么 ag-theme-balham 是唯一有效的 ag-grid 主题?

    angular - Ag-grid(Angular 2) 无法访问 CellRenderer 中的组件字段

    angular - ag-grid : GroupByColum Sort not working for numeric values, 只提供字符串排序

    css - 外部 CSS 文件无法与我的 Angular 元素集成

    Angular2-http ://localhost:4200/being appended with api call why?

    javascript - valuegetter、valueparser 和 valueformatter 之间的区别 - Ag-grid

    ag-grid - 如何设置 AG-GRID 列垂直边框的样式