106 lines
3.7 KiB
Plaintext
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 – @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>
|
|
}
|