68256d7abd
Stale Jobs replaces Long-Running Jobs on the homepage. Last Activity is added to the job table.
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.LongRunningJobs))
|
|
{
|
|
<h2>Stale Jobs (@Model.StaleJobs.Items.Count())</h2>
|
|
@Html.Partial(MVC.Shared.Views._JobTable, Model.StaleJobs, new ViewDataDictionary())
|
|
} |