EnVisageOnline/Main/Source/EnVisage/Views/Scenarios/_compare.cshtml

106 lines
3.7 KiB
Plaintext

@using EnVisage.Models.Scenarios
@model CompareModel
@{
var optimalColNumber = Model.OptimalScenarioIndex + 2; //First column is for property names
}
<style>
.modal-body table.compare-table tr>td:nth-child(@optimalColNumber) {
zoom: 1.2;
border-right: 2px solid #00bb09;
border-left: 2px solid #00bb09;
}
.modal-body table.compare-table tr>td:nth-child(@(optimalColNumber + 1)) {
border-left: none;
}
.modal-body table.compare-table tr:last-child td:nth-child(@optimalColNumber) {
border-bottom: 2px solid #00bb09;
border-bottom-left-radius: 20px;
border-bottom-right-radius: 20px;
}
.modal-body table.compare-table tr:first-child td:nth-child(@optimalColNumber) {
border-top: 2px solid #00bb09;
border-top-left-radius: 20px;
border-top-right-radius: 20px;
}
</style>
<table class="compare-table">
<tr>
<td></td>
@for (int i = 0; i < Model.Scenarios.Count(); i++)
{
<td></td>
}
@*@foreach (var item in Model.Scenarios)
{
<td></td>
}*@
</tr>
@RenderPropertyRow("", x => x.Name, "{0}", true)
@RenderMagnifyRow()
@RenderPropertyRow("Calculated Net Impact", x => x.CalculatedNetImpact, "{0:c}")
@RenderPropertyRow("Bottom-Up Expense", x => x.BottomUpExpense, "{0:c}")
@RenderPropertyRow("Cost Savings", x => x.CostSavings, "{0:c}")
@RenderPropertyRow("Projected Revenue", x => x.ProjectedRevenue, "{0:c}")
@RenderPropertyRow("Expected Margin", x => x.ExpectedMargin, "{0:P0}")
@RenderPropertyRow("Calculated Margin", x => x.CalculatedMargin, "{0:P0}")
@RenderPropertyRow("Duration (in weeks)", x => x.Weeks, "{0:N0}")
@RenderPropertyRow("Scenario Dates", x => ScenarioDates(x.StartDate, x.EndDate))
<tr>
<td></td>
@foreach (var item in Model.Scenarios)
{
var disabled = item.IsActive ? "disabled" : "";
var hint = item.IsActive ? "Scenario is active" : ""; //TODO: hint is not shown when button is disabled
var scenarioStartDate = item.StartDate.HasValue ? item.StartDate.Value.ToShortDateString() : null;
var scenarioEndDate = item.EndDate.HasValue ? item.EndDate.Value.ToShortDateString() : null;
<td>
<span class="tooltip-helper" data-toggle="tooltip" title="@hint">
<button class="btn btn-success @disabled activate-scenario" data-scenario-id="@item.Id" data-scenario-start-date="@scenarioStartDate" data-scenario-end-date="@scenarioEndDate" data-is-optimal="@item.IsOptimal">@Resources.Buttons.Common_Activate</button>
</span>
</td>
}
</tr>
</table>
@helper RenderMagnifyRow()
{
<tr>
<td></td>
@foreach (var item in Model.Scenarios)
{
<td>
<div class="magnify" data-scenario-id="@item.Id" data-scenario-percent="@item.Score.ToString("0.#")"></div>
</td>
}
</tr>
}
@helper ScenarioDates(DateTime? startDate, DateTime? endDate)
{
var start = startDate.HasValue ? startDate.Value.ToString("d") : "N/A";
var end = endDate.HasValue ? endDate.Value.ToString("d") : "N/A";
@:@start&nbsp;&ndash;&nbsp;@end
}
@helper RenderPropertyRow(string label, Func<ScenarioInfo, object> getter, string format = "{0}", bool bold = false)
{
<tr>
<td>@label</td>
@foreach (var item in Model.Scenarios)
{
var value = getter(item);
var valueStr = value != null ? string.Format(format, value) : "";
if (bold)
{
valueStr = "<strong>" + valueStr + "</strong>";
}
<td>@Html.Raw(valueStr)</td>
}
</tr>
}