Хорошо, простой вопрос, путаный ответ...
У меня есть этот код:
<tbody>
{{#each alertRow}}
<tr data-toggle="collapse" data-target="#data{{id}}" class="accordion-toggle">
<td><i id="dataCbx{{id}}" style="text-align:center;" class="icon-check center pointerCursor" title="Click here to check/uncheck the box. Click on another part of the row to expand collapse without affecting the checkbox" onclick="changeIcon(this.id);"></i></td>
<td>{{alertLevel}}</td>
<td>{{alertType}}</td>
<td>{{network}}</td>
<td>{{site}}</td>
<td>{{resource}}</td>
<td>{{component}}</td>
<td>{{details}}</td>
<td>{{alertTime}}</td>
</tr>
<tr>
<td colspan="10" class="hiddenRow">
<div id="data{{id}}" class="accordian-body collapse innerTableCollapse">
<div style="float: left;">Server Name:{{network}}</div>
<div style="float: left;">Status:{{status}}</div>
<div style="float: left;">Issue Description: </div>
<div style="float: left;">Alert Details: </div>
<div style="float: left;">Resource Type: </div>
</div>
</td>
</tr>
{{/each}}
</tbody>
Заметьте, я использую HANDLEBARS.JS, но это не проблема.
Итак, вот что мне нужно сделать:
Просто достаточно, не так ли?
Затем, как только у меня будет это, на основании уровня ALERT LEVEL первой коллима, мне нужно сделать ENTRE ROW (минус первый столбец), LIGHT RED для ALERTLEVEL = 0, LIGHT YELLOW для ALERTLEVEL = 1 и LIGHT GREEN для ALERTLEVEL 2.
Можете ли вы мне помочь? Пожалуйста спасибо.
Я считаю, что следующее должно работать, но вам нужно добавить id="alertTable"
в таблицу и изменить:
<td>{{alertLevel}}</td>
чтобы:
<td id="alertRow">{{alertLevel}}</td>
Кроме того, я считаю, что вам нужно будет изменить colspan 10 на colspan 9, поскольку кажется, что ваши столбцы не совпадают?
Сценарий, который вам нужно включить, будет:
<script>
$(function () {
$("#alertTable tr").each(function () {
var alertLevelElement = $("#alertLevel", this);
switch (alertLevelElement.text())
{
case "1":
alertLevelElement.css("background-color", "red");
$(this).css("background-color", "indianred");
break;
case "2":
alertLevelElement.css("background-color", "yellow");
$(this).css("background-color", "lightyellow");
break;
case "3":
alertLevelElement.css("background-color", "green");
$(this).css("background-color", "lightgreen");
break;
default:
console.error("Unrecognised alert level: " + alertLevelElement.text());
}
});
});
</script>
Можно было бы немного уменьшить это, но для удобочитаемости и понимания этого должно быть достаточно.
Решение CSS
Определите классы для уровней предупреждений:
td.alertlevel0 {
background-color: #e00;
}
tr.alertlevel0 {
background-color: #f55;
}
Вставляйте классы при рендеринге
<tr class="alertlevel{{alertLevel}}">
<td class="alertlevel{{alertLevel}}">{{alertLevel}}</td>
</tr>