javascript - 迭代rails中chartjs的一组背景颜色
问题描述
我正在使用 Rails 显示一些数据的 Chart.js 图表。我的 rails 控制器有一个名为的数组@colors
,我将它传递给一个名为的 JavaScript 文件graphs.js.erb
,该文件会显示在视图模板中。那里一切正常,我的问题是我的数据点比颜色多,我想继续循环同一个colorsFromServer
数组以显示每个数据点所需的颜色。
所以目前我在一个数组中使用 6 种颜色,但我有 9 条数据要绘制在图表上。我只想循环回到colorsFromServer
数组中的第一个元素并开始将这些颜色推入color
数组。
所以最终用 9 个数据点来绘制颜色应该是
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
// keeps looping to get the 3 additional colors
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)'
在我的 Rails 控制器中
@colors = [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
]
Javascript
<% colors_json = @colors.to_json.html_safe %>
var colorsFromServer = <%= colors_json %>;
console.log("colorsFromServer");
console.log(colorsFromServer);
var colors = [];
var color;
for (var i = 0; i < article_data.length; i++) {
color = colorsFromServer[i];
colors.push(color);
}
console.log("COLORS");
console.log(colors);
该colors
变量是我在 Chart.js 中用来绘制具有特定背景颜色的图形的变量。使用 Chrome 中的开发人员工具,您可以看到最后 3 种是如何未定义的,因为这 6 种颜色已经被使用,所以我需要一种方法来回到 colorsFromServer 数组的开头以推送更多颜色。
解决方案
您需要与数据索引分开跟踪颜色索引。
如果它大于可用颜色的数量,则重置为零。
var colorsFromServer = <%= colors_json %>;
var colors = [];
var color;
var colorIndex = 0;
for (var i = 0; i < article_data.length; i++) {
if (colorIndex >= colorsFromServer.length) {
colorIndex = 0;
}
color = colorsFromServer[colorIndex];
colorIndex++;
colors.push(color);
}
推荐阅读
- facebook-graph-api - Facebook 登录无法请求 instagram_basic 权限
- xcode - 您知道我没有收到 Console.log 或 Appstoreconnect 崩溃报告的原因吗?
- java - Spring Boot - @MockBean 在测试用例中创建重复项
- vba - VBA 代码在逐步模式下工作,但在尝试运行宏时崩溃
- python - TypeError:不允许捕获不继承自 BaseException 的类
- javascript - 根据当前页面 url 更改按钮 href
- prometheus - 在开发过程中如何查询prometheus并控制结果?
- python-3.x - 如何附加包含在嵌套列表中的多个字典值
- java - Spring 应用程序不会将 whitelable 页面重定向到 error.html(没有映射 GET /errory)
- xamarin.forms - VS Community 2019 是否支持 Xamarin Forms Shell UWP?