ed7caf8b4a
The LongRunningJobs claim is checked instead of the StaleJobs claim which resulted in an NullReferenceException for users without StaleJobs authorization.
136 lines
5.7 KiB
Plaintext
136 lines
5.7 KiB
Plaintext
@model Disco.Web.Models.Job.IndexModel
|
|
@{
|
|
ViewBag.Title = "Jobs";
|
|
|
|
if (Authorization.Has(Claims.Job.ShowDailyChart))
|
|
{
|
|
Html.BundleDeferred("~/ClientScripts/Modules/Highcharts");
|
|
}
|
|
}
|
|
<div class="clearfix columnHost">
|
|
@if (Authorization.Has(Claims.Job.Search))
|
|
{
|
|
<div class="column50">
|
|
<h2>Search Jobs</h2>
|
|
@Html.Partial(MVC.Shared.Views._SearchDialog, "jobs")
|
|
</div>
|
|
}
|
|
@if (Authorization.Has(Claims.Job.ShowDailyChart))
|
|
{
|
|
<div class="column50">
|
|
<h2>Daily Opened & Closed Jobs</h2>
|
|
<div id="chartHostJobDailyOpenedClosed" style="height: 175px;">
|
|
</div>
|
|
@{
|
|
var jsonData = new HtmlString(Json.Encode(Model.DailyOpenedClosedStatistics));
|
|
}
|
|
<script type="text/javascript">
|
|
(function () {
|
|
var chartData;
|
|
|
|
function buildChart() {
|
|
$(function () {
|
|
|
|
var data = chartData;
|
|
|
|
var dataTotalOpenJobs = [];
|
|
var dataOpenedJobs = [];
|
|
var dataClosedJobs = [];
|
|
for (var i = 0; i < data.length; i++) {
|
|
var dataItem = data[i];
|
|
var dataItemDate = new Date(parseInt(dataItem.Timestamp.substr(6, dataItem.Timestamp.length - 8))).getTime(); // $.datepicker.parseDate('yy-mm-dd', dataItem.Timestamp.substr(0, 10)).getTime();
|
|
dataTotalOpenJobs.push([dataItemDate, dataItem.TotalJobs]);
|
|
dataOpenedJobs.push([dataItemDate, dataItem.OpenedJobs]);
|
|
dataClosedJobs.push([dataItemDate, dataItem.ClosedJobs]);
|
|
}
|
|
Highcharts.setOptions({
|
|
global: {
|
|
useUTC: false
|
|
}
|
|
});
|
|
new Highcharts.Chart({
|
|
chart: {
|
|
renderTo: 'chartHostJobDailyOpenedClosed',
|
|
height: 175,
|
|
animation: false
|
|
},
|
|
colors: ['#BBBBBB', '#005fab', '#60ab1e'],
|
|
title: {
|
|
text: null
|
|
},
|
|
plotOptions: {
|
|
series: {
|
|
marker: {
|
|
radius: 3
|
|
},
|
|
animation: false
|
|
}
|
|
},
|
|
legend: {
|
|
align: 'left',
|
|
verticalAlign: 'top',
|
|
y: 0,
|
|
floating: true,
|
|
borderWidth: 0
|
|
},
|
|
xAxis: {
|
|
type: 'datetime',
|
|
tickInterval: 7 * 24 * 3600 * 1000, // week
|
|
tickWidth: 1,
|
|
gridLineWidth: 1,
|
|
dateTimeLabelFormats: {
|
|
week: '%e %b'
|
|
}
|
|
},
|
|
yAxis: [{
|
|
title: {
|
|
text: null
|
|
},
|
|
labels: {
|
|
enabled: false
|
|
},
|
|
min: 0
|
|
}, {
|
|
title: {
|
|
text: null
|
|
},
|
|
labels: {
|
|
enabled: false
|
|
},
|
|
min: 0
|
|
}],
|
|
series: [{
|
|
name: 'Total Open Jobs',
|
|
data: dataTotalOpenJobs,
|
|
yAxis: 1
|
|
}, {
|
|
name: 'Closed Jobs',
|
|
data: dataClosedJobs
|
|
}, {
|
|
name: 'Opened Jobs',
|
|
data: dataOpenedJobs
|
|
}],
|
|
credits: {
|
|
enabled: false
|
|
}
|
|
});
|
|
});
|
|
}
|
|
chartData = $.parseJSON('@(jsonData)');
|
|
buildChart();
|
|
}());
|
|
|
|
</script>
|
|
</div>
|
|
}
|
|
</div>
|
|
@if (Authorization.Has(Claims.Job.Lists.MyJobs))
|
|
{
|
|
<h2>My Jobs (@Model.MyJobs.Items.Count())</h2>
|
|
@Html.Partial(MVC.Shared.Views._JobTable, Model.MyJobs, new ViewDataDictionary())
|
|
}
|
|
@if (Authorization.Has(Claims.Job.Lists.StaleJobs))
|
|
{
|
|
<h2>Stale Jobs (@Model.StaleJobs.Items.Count())</h2>
|
|
@Html.Partial(MVC.Shared.Views._JobTable, Model.StaleJobs, new ViewDataDictionary())
|
|
} |