255 lines
13 KiB
Plaintext
255 lines
13 KiB
Plaintext
@using EnVisage.Code.Extensions
|
|
@using EnVisage.Models.Dashboard
|
|
@using Kendo.Mvc.UI
|
|
|
|
@model string
|
|
@*Model is grid name*@
|
|
|
|
@{
|
|
var projectUrl = Url.Action("Edit", "Project");
|
|
var gridName = Model;
|
|
}
|
|
<style type="text/css">
|
|
.no-scrollbar .k-grid-header
|
|
{
|
|
padding: 0 !important;
|
|
}
|
|
|
|
.no-scrollbar .k-grid-content
|
|
{
|
|
overflow-y: visible;
|
|
}
|
|
</style>
|
|
@(Html.Kendo().Grid<ForecastGridItem>()
|
|
.Name(Model).AutoBind(false)
|
|
.HtmlAttributes(new { style = "margin-top: 50px; display: none", @class="no-scrollbar" })
|
|
.DataSource(ds => ds
|
|
.Custom()
|
|
.Type("aspnetmvc-ajax")
|
|
.ServerPaging(true).ServerAggregates(true).ServerSorting(true).ServerGrouping(true)
|
|
.Transport(transport =>
|
|
{
|
|
transport.Read(read => read.Action("GetScenarios", "ForecastGrid").Type(HttpVerbs.Post).Data("getFilterParams"));
|
|
})
|
|
//.Group(group => group.Add(x => x.TeamName))
|
|
.Aggregates(aggr =>
|
|
{
|
|
aggr.Add(x => x.Id).Count();
|
|
aggr.Add(x => x.StartDate).Min();
|
|
aggr.Add(x => x.EndDate).Max();
|
|
aggr.Add(x => x.TDDirectCosts).Sum();
|
|
aggr.Add(x => x.TDDirectCosts_LM).Sum();
|
|
aggr.Add(x => x.BUDirectCosts).Sum();
|
|
aggr.Add(x => x.BUDirectCosts_LM).Sum();
|
|
aggr.Add(x => x.CostSavings).Sum();
|
|
aggr.Add(x => x.Duration).Average().Sum();
|
|
aggr.Add(x => x.ProjectDeadline).Min();
|
|
aggr.Add(x => x.ProjectedRevenue).Sum();
|
|
aggr.Add(x => x.ProjectNetImpact).Sum();
|
|
aggr.Add(x => x.ExpectedGrossMargin).Average();
|
|
aggr.Add(x => x.CalculatedMargin).Average();
|
|
})
|
|
.PageSize(25)
|
|
.Schema(schema =>
|
|
{
|
|
schema.Total("Total").Aggregates("Aggregates").Data("Data").Groups("Groups");
|
|
schema.Model(model =>
|
|
{
|
|
model.Field(x => x.StartDate);
|
|
model.Field(x => x.EndDate);
|
|
model.Field(x => x.ProjectDeadline);
|
|
model.Field(x => x.ROIDate);
|
|
});
|
|
})
|
|
)
|
|
.Events(events =>
|
|
{
|
|
events.DataBound("onGridDataBound");
|
|
events.ColumnReorder("function(e) { columnReorder(e, '" + gridName + "'); }");
|
|
events.ColumnResize("columnResize");
|
|
events.ColumnShow("function(e) { columnShowHide(e, '" + gridName + "'); }");
|
|
events.ColumnHide("function(e) { columnShowHide(e, '" + gridName + "'); }");
|
|
events.ExcelExport("onExcelExport");
|
|
})
|
|
.Pageable(paging => { paging.Enabled(true).PageSizes(new[] { 25, 50, 100 }); })
|
|
.Resizable(resize => resize.Columns(true))
|
|
.Sortable(sorting => sorting.Enabled(true))
|
|
.Groupable(group => group.Enabled(false).ShowFooter(true))
|
|
.Scrollable(scroll => scroll.Enabled(true))
|
|
.Reorderable(reorder => reorder.Columns(true))
|
|
|
|
.NoRecords("There are no matching records found for the given search criteria")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(x => x.ProjectName).Width(200)
|
|
.ClientTemplate("<a href='" + projectUrl + "/#=ProjectId#?backUrl=" + Url.Encode("/") + "&backName=dashboard'>#=ProjectName#</a>")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'ProjectName')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'ProjectName')#");
|
|
columns.Bound(x => x.Name).Width(250)
|
|
.Title("Scenario Name")
|
|
.ClientTemplate("#= scenarioNameTemplate(data) #")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'Name')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'Name')#");
|
|
columns.Bound(x => x.TeamName).Width(200)
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'TeamName')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'TeamName')#");
|
|
columns.Bound(x => x.ProjectStatus).Width(100)
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'ProjectStatus')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'ProjectStatus')#");
|
|
// Uncomment lines below to make column CompanyName visible in the Grid
|
|
//columns.Bound(x => x.CompanyName).Width(200)
|
|
// .Title("Company")
|
|
// .ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'CompanyName')#")
|
|
// .ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'CompanyName')#");
|
|
columns.Bound(x => x.ClientName).Width(200)
|
|
.Title("Client")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'ClientName')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'ClientName')#");
|
|
columns.Bound(x => x.ProjectedRevenue).Width(100)
|
|
.Format("{0:c}")
|
|
.ClientGroupFooterTemplate("#=getCurrencySummaryValue(sum)#")
|
|
.ClientFooterTemplate("#=getCurrencySummaryValue(sum)#");
|
|
columns.Bound(x => x.ExpectedGrossMargin).Width(100)
|
|
.Title("Expected Margin")
|
|
.ClientTemplate("#=formatPercentValue(data.ExpectedGrossMargin)#")
|
|
.ClientFooterTemplate("#=getPercentSummaryValue(average)#")
|
|
.ClientGroupFooterTemplate("#=getPercentSummaryValue(average)#");
|
|
columns.Bound(x => x.CalculatedMargin).Width(100)
|
|
.Title("Calculated Margin")
|
|
.ClientTemplate("#=formatPercentValue(data.CalculatedMargin)#")
|
|
.ClientFooterTemplate("#=getPercentSummaryValue(average)#")
|
|
.ClientGroupFooterTemplate("#=getPercentSummaryValue(average)#");
|
|
columns.Bound(x => x.UseLMMargin).Width(100)
|
|
.Title("Gross/L&M")
|
|
.ClientTemplate("#= data.UseLMMargin ? 'L&M' : 'Gross' #")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'UseLMMargin')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'UseLMMargin')#");
|
|
columns.Bound(x => x.CGSplit).Width(100)
|
|
.Title("Labor / Materials")
|
|
.ClientTemplate("#=getCGSplit(data)#")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'CGSplit')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'CGSplit')#");
|
|
columns.Bound(x => x.ProjectDeadline).Width(100)
|
|
//.Format("d")
|
|
.ParseDate()
|
|
.ClientTemplate("#= data.ProjectDeadline == null ? '' : kendo.toString(data.ProjectDeadline, 'd') #")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'ProjectDeadline')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'ProjectDeadline')#");
|
|
columns.Bound(x => x.ProjectType).Width(100)
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'ProjectType')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'ProjectType')#");
|
|
columns.Bound(x => x.Probability).Width(100)
|
|
.ClientTemplate("#=getProbabilityStr(data)#")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'Probability')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'Probability')#");
|
|
columns.Bound(x => x.Priority).Width(100)
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'Priority')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'Priority')#");
|
|
columns.Bound(x => x.TDDirectCosts).Width(100)
|
|
.Title("Top Down Direct Costs")
|
|
.Groupable(false)
|
|
.Format("{0:c}")
|
|
.ClientGroupFooterTemplate("#=getCurrencySummaryValue(sum)#")
|
|
.ClientFooterTemplate("#=getCurrencySummaryValue(sum)#");
|
|
columns.Bound(x => x.TDDirectCosts_LM).Width(100)
|
|
.Title("Top Down Direct Costs L&M")
|
|
.Groupable(false)
|
|
.Format("{0:c}")
|
|
.ClientGroupFooterTemplate("#=getCurrencySummaryValue(sum)#")
|
|
.ClientFooterTemplate("#=getCurrencySummaryValue(sum)#");
|
|
columns.Bound(x => x.BUDirectCosts).Width(100)
|
|
.Title("Bottom Up Direct Costs")
|
|
.Groupable(false)
|
|
.Format("{0:c}")
|
|
.ClientGroupFooterTemplate("#=getCurrencySummaryValue(sum)#")
|
|
.ClientFooterTemplate("#=getCurrencySummaryValue(sum)#");
|
|
columns.Bound(x => x.BUDirectCosts_LM).Width(100)
|
|
.Title("Bottom Up Direct Costs L&M")
|
|
.Groupable(false)
|
|
.Format("{0:c}")
|
|
.ClientGroupFooterTemplate("#=getCurrencySummaryValue(sum)#")
|
|
.ClientFooterTemplate("#=getCurrencySummaryValue(sum)#");
|
|
columns.Bound(x => x.CostSavings).Width(100)
|
|
.Groupable(false)
|
|
.Format("{0:c}")
|
|
.ClientGroupFooterTemplate("#=getCurrencySummaryValue(sum)#")
|
|
.ClientFooterTemplate("#=getCurrencySummaryValue(sum)#");
|
|
columns.Bound(x => x.CostSavingsDuration).Width(100)
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'CostSavingsDuration')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'CostSavingsDuration')#");
|
|
columns.Bound(x => x.ProjectNetImpact).Width(100)
|
|
.Groupable(false)
|
|
.Format("{0:c}")
|
|
.Title("Project Net Impact")
|
|
.ClientGroupFooterTemplate("#=getCurrencySummaryValue(sum)#")
|
|
.ClientFooterTemplate("#=getCurrencySummaryValue(sum)#");
|
|
columns.Bound(x => x.Duration).Width(100).Title("Duration (Weeks)")
|
|
.ClientFooterTemplate("#=getIntegerSummaryValue(average) #")
|
|
.ClientGroupFooterTemplate("#=getIntegerSummaryValue(average) #");
|
|
columns.Bound(x => x.StartDate).Width(100)
|
|
.Groupable(false)
|
|
//.Format("d")
|
|
.ParseDate()
|
|
.ClientTemplate("#= data.StartDate == null ? '' : kendo.toString(data.StartDate, 'd') #")
|
|
.ClientFooterTemplate("#=getDateSummaryValue(min) #")
|
|
.ClientGroupFooterTemplate("#=getDateSummaryValue(min) #");
|
|
columns.Bound(x => x.EndDate).Width(100)
|
|
.Groupable(false)
|
|
//.Format("d")
|
|
.ParseDate()
|
|
.ClientTemplate("#= data.EndDate == null ? '' : kendo.toString(data.EndDate, 'd') #")
|
|
.ClientFooterTemplate("#=getDateSummaryValue(max) #")
|
|
.ClientGroupFooterTemplate("#=getDateSummaryValue(max) #");
|
|
columns.Bound(x => x.ROIDate).Width(100)
|
|
.Groupable(false)
|
|
//.Format("d")
|
|
.ParseDate()
|
|
.ClientTemplate("#= data.ROIDate == null ? '' : kendo.toString(data.ROIDate, 'd') #")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'ROIDate')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'ROIDate')#");
|
|
columns.Bound(x => x.HardSoftSavings).Width(100)
|
|
.Groupable(false)
|
|
.Title("Hard/Soft Savings")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'HardSoftSavings')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'HardSoftSavings')#");
|
|
columns.Bound(x => x.StrategicGoals).Width(150)
|
|
.Groupable(false)
|
|
.Title("Strategic Goals")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'StrategicGoals')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'StrategicGoals')#");
|
|
columns.Bound(x => x.ScenarioStatus).Width(110)
|
|
.Groupable(false)
|
|
.Title("Options")
|
|
.HtmlAttributes(new { style = "overflow: visible" })
|
|
.ClientTemplate("#= scenarioStatusTemplate(data) #")
|
|
.ClientGroupFooterTemplate("#=getGroupSummaryText('Team Summary', '" + gridName + "', 'ScenarioStatus')#")
|
|
.ClientFooterTemplate("#=getGroupSummaryText('Summary', '" + gridName + "', 'ScenarioStatus')#");
|
|
columns.Bound(x => x.PerformanceColor).Hidden(true);
|
|
columns.Bound(x => x.TeamId).Hidden(true);
|
|
})
|
|
.Pdf(pdf => pdf
|
|
.AllPages()
|
|
.ForceProxy(true)
|
|
.RepeatHeaders()
|
|
.FileName(Model + "Report.pdf")
|
|
.ProxyURL(Url.Action("ExportResourceAvailability", "ForecastGrid"))
|
|
)
|
|
.Excel(excel => excel
|
|
.AllPages(true)
|
|
.ForceProxy(true)
|
|
.FileName(Model + "Report.xlsx")
|
|
.ProxyURL(Url.Action("ExportResourceAvailability", "ForecastGrid"))
|
|
)
|
|
)
|
|
|
|
@functions
|
|
{
|
|
string GetProjectUrl()
|
|
{
|
|
return Url.Action("Edit", "Project", new { id = "_rplcmnt_", backUrl = "/", backName = "dashboard" });
|
|
}
|
|
}
|
|
|
|
<script>
|
|
</script>
|