Я пытаюсь создать шаблон руля для тепловой карты по дням в диапазоне от 15 дней до текущего и до 60 дней в будущем.
Вот модель, которую я использую для своего шаблона
public class HeatMapDto
{
public IEnumerable<HeatMapDateDto> HeatMapDates { get; set; }
public IEnumerable<ProductDto> Products { get; set; }
}
Вот соответствующий фрагмент моего шаблона
<table style='width: 2000px'>
<tr>
<th style='width: 100px'>Product</th>
<th style='width: 100px'>EAStart</th>
<th style='width: 100px'>Release</th>
{{#each HeatMapDates}}
<th style='width: 50px'>{{FormattedDate}}</th>
{{/each}}
</tr>
{{#each Products}}
<tr>
<td>{{ProductName}}</td>
<td>{{FormattedEarlyAccessStart}}</td>
<td>{{FormattedReleaseDate}}</td>
{{#each @root.HeatMapDates}}
<td style="background-color:{{SelectCellColor DateValue EarlyAccessDate ReleaseDate '#747dff' '3d07ff' '#8cb871' '#e9fbff'}}{{/SelectCellColor}}"> </td>
{{/each}}
</tr>
{{/each}}
</table>
HeatMapDates
заполнен всеми днями для отчета, и я могу перебрать их, чтобы сгенерировать заголовки столбцов.
public class HeatMapDateDto
{
public DateTime DateValue { get; set; }
public string FormattedDate => DateValue.ToString("MM/dd");
}
public class HeatMapProductDto
{
public string ProductName { get; set; }
public DateTime? EarlyAccessStart { get; set; }
public DateTime? ReleaseDate { get; set; }
public string FormattedEarlyAccessStart => EarlyAccessStart?.ToString("MM/dd");
public string FormattedReleaseDate => ReleaseDate?.ToString("MM/dd");
}
SelectCellColor
- это обработчик, который я зарегистрировал в своем коде, и когда он вызывается, три даты не определены, а контекст равен HeatMapDate
.Его цель состоит в том, чтобы определить, какой из 4 цветов передается для применения к ячейке: InEarlyAcccess, ReleaseDate, PostRelease или цвет по умолчанию, в этом порядке.
, если я выполняю внешний цикл, подобный этому {{#each product in Products}}
,Handlebars.Net выдает исключение:
System.AggregateException: произошла одна или несколько ошибок.---> System.InvalidOperationException: последовательность содержит более одного элемента
Есть идеи о том, как заставить эту работу выполнять итерацию по двум массивам, когда они не являются parent-child?