EnVisageOnline/Beta/Source/EnVisage/Views/View/Board.cshtml

212 lines
7.9 KiB
Plaintext

@model EnVisage.Models.ViewBoardModel
@using EnVisage.Code
@{
ViewBag.Title = "View Dashboard";
}
@section stylesheets
{
<link href="~/Content/stylesheets/xeditable.css" rel="stylesheet" type="text/css">
}
@section scripts
{
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="~/Scripts/Angular/angular.min.js"></script>
<script src="~/Scripts/Angular/angular-route.min.js"></script>
<script src="~/Scripts/Angular/xeditable.min.js"></script>
<script src="~/Scripts/Angular/app.js"></script>
<script src="~/Scripts/Angular/controllers.js"></script>
<script src="~/Scripts/jquery.collapsiblepanel.js"></script>
<script type="text/javascript">
$().ready(function() {
$('.collapsible').collapsiblePanel();
selectView('@(Model.Views.Count > 0 ? Model.Views.First().Id : Guid.Empty)');
var header = $('#panelTeamCalendar').parent().find('.panel-heading'); //$('#panelTeamCalendar').find('.ui-widget-header').first();
header.click(function () {
//debugger;
var val = $('#list').val();
@if(Model.Views.Count == 1){
<text>
val = '@Model.Views.First().Id';
</text>
}
if (angular.element(document.getElementById('controller1')).scope().data == null) {
angular.element(document.getElementById('controller1')).scope().calendarFilters.ViewId = val;
angular.element(document.getElementById('controller1')).scope().getCalendar();
}
});
$('#panelForecast').on('hidden.bs.collapse', function () {
$('#divForecastMenu').hide();
});
$('#panelForecast').on('shown.bs.collapse', function() {
$('#divForecastMenu').show();
if ($('#forecastBlock').children().length == 0)
loadForecastPanel($('#list').val());
});
$('#panelTeamCalendar').on('hidden.bs.collapse', function () {
$('#divCalendarMenu').hide();
});
$('#panelTeamCalendar').on('shown.bs.collapse', function () {
$('#divCalendarMenu').show();
//if ($('#forecastBlock').children().length == 0)
// initCMMenuItems($('#list').val());
});
});
function selectView(id) {
//debugger;
if (id != '@Guid.Empty') {
$('#SelectedViewId').val(id);
$('#indicator').show();
//expand panels with charts and tricky tables or they will be messed up
if ($("#panelCalendar").hasClass("collapse in")) {
angular.element(document.getElementById('controller1')).scope().calendarFilters.ViewId = id;
angular.element(document.getElementById('controller1')).scope().getCalendar();
} else {
angular.element(document.getElementById('controller1')).scope().data = null;
}
$.post('/View/GetTeams', { 'viewId': id }, function(data) {
if (data != undefined) {
$('div#ViewInfo').html(data);
$('#indicator').hide();
}
});
if ($("#panelForecast").hasClass("collapse in")) {
loadForecastPanel(id);
} else {
$('#forecastBlock').html('');
}
}
}
function loadForecastPanel(id) {
//reset forecast block menu
var paramsObj = {
viewId: id,
mode: 'view'
};
var loadUrl = '@Url.Action("Index", "ForecastDashboard")?menuId=visibilitydropdown&src=View_Board&additionalFilters=' + JSON.stringify(paramsObj);
$("#forecastBlock")
.load(loadUrl, function(response, status, xhr) {
if (status == "error") {
showErrorModal('Loading error', 'We are sorry but there was an error, please try again later.');
} else {
initForecastDashboard();
}
});
}
</script>
}
<style type="text/css">
#capacity-table .headcol {
left : -3px;
}
</style>
<div class="table-light table-responsive">
<input type="hidden" id="SelectedViewId" name="SelectedViewId" />
<div class="panel">
<div class="panel-body" ng-app="app">
@if (Model.Views.Count > 1)
{
<div class="form-group">
<label class="col col-sm-1 control-label" style="margin-top: 5px;margin-right:5px;">View</label>
<div class="col col-sm-2">
@Html.DropDownList("list",
Model.Views.Select(x =>
new SelectListItem() { Value = x.Id.ToString(), Text = x.Name }),
new { @onchange = "selectView($(event.target).val())", @class = "form-control" })
</div>
<div class="col col-sm-2">
<span id="indicator" class="control-label" style="margin-left: 10px; display: none;"><img src="~/Content/images/load.gif" /> loading...</span>
</div>
</div>
}
<div id="ViewInfo">
@if (Model.Views.Count > 0)
{
//Resources (Grouped by Team)
Html.Partial("~/Views/View/_resourcesList.cshtml", Model.Teams);
}
else
{
<label class="label">You do not have access to any view</label>
}
</div>
<div class="panel">
<div class="panel-heading">
<span class="panel-title ui-expander">
<a data-toggle="collapse" data-target="#panelSkills" class="collapsed">
<i class="panel-title-icon fa fa-wrench"></i>Skills
</a>
</span>
</div>
<div id="panelSkills" class="panel-collapse collapse">
<div class="panel-body padding-sm">
Skills info placeholder
</div>
</div>
</div>
<div class="panel">
<div class="panel-heading">
<span class="panel-title ui-expander">
<a data-toggle="collapse" data-target="#panelTeamCalendar" class="collapsed">
<i class="panel-title-icon fa fa-calendar"></i>View Calendar
</a>
</span>
<span class="pull-right">&nbsp;&nbsp;</span>
<div class="btn-group btn-group-xs pull-right" id="divCalendarMenu" style="display: none;">
<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown"><i class="fa fa-bars"></i>&nbsp;<i class="fa fa-caret-down"></i></button>
<ul class="dropdown-menu dropdown-menu-right" id="visibilitydropdown_calendar">
</ul>
</div>
</div>
<div id="panelTeamCalendar" class="panel-collapse collapse">
<div class="panel-body padding-sm">
@Html.Partial("../CapacityManagement/_capacityManagement", Model)
</div>
</div>
</div>
<div class="panel widget-messages-alt">
<div class="panel-heading">
<span class="panel-title ui-expander">
<a data-toggle="collapse" data-target="#panelForecast" class="collapsed">
<i class="panel-title-icon fa fa-bar-chart-o"></i>View Forecast
</a>
</span>
<span class="pull-right">&nbsp;&nbsp;</span>
<div class="btn-group btn-group-xs pull-right" id="divForecastMenu" style="display: none;">
<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown"><i class="fa fa-bars"></i>&nbsp;<i class="fa fa-caret-down"></i></button>
<ul class="dropdown-menu dropdown-menu-right" id="visibilitydropdown">
</ul>
</div>
</div>
<div id="panelForecast" class="panel-collapse collapse">
<div class="panel-body padding-sm">
<div class="panel" id="graph-container">
<div class="panel-body">
@{
Html.RenderPartial("_chart");
}
</div>
</div>
<div class="messages-list" id="forecastBlock"></div>
</div>
</div>
</div>
</div>
</div>
</div>