var labName = $('#lab-name').val();
var dateRange = $('#date-range').val();
var pageLen = $('#page-len').val();
var searchFilter = $('#search-filter').val();
function populateLabTable(data) {
'use strict';
var localData = data.result,
table = null;
table = $('#labtable').dataTable({
'dom': '<"row"<"col-xs-12 col-sm-12 col-md-6 col-lg-6"' +
'<"length-menu"l>>' +
'<"col-xs-12 col-sm-12 col-md-4 col-lg-4 col-lg-offset-2"f>r' +
'<"col-xs-12 col-sm-12 col-md-12 col-lg-12"t>>' +
'<"row"<"col-xs-12 col-sm-12 col-md-6 col-lg-6"i>' +
'<"col-xs-12 col-sm-12 col-md-6 col-lg-6"p>>',
'language': {
'lengthMenu': '_MENU_ boot reports per page',
'zeroRecords': '
No boot reports to display.
',
'search': '' +
'' +
'_INPUT_
'
},
'initComplete': function(settings, data) {
$('#table-loading').remove();
$('#table-div').fadeIn('slow', 'linear');
var api = this.api();
if (pageLen !== undefined && pageLen !== null) {
if (pageLen.length > 0) {
pageLen = Number(pageLen);
if (isNaN(pageLen)) {
pageLen = 25;
}
api.page.len(pageLen).draw();
}
}
if (searchFilter !== null && searchFilter !== undefined) {
if (searchFilter.length > 0) {
api.search(searchFilter, true).draw();
}
}
},
'lengthMenu': [25, 50, 75, 100],
'deferRender': true,
'ordering': true,
'processing': true,
'stateDuration': -1,
'stateSave': true,
'order': [5, 'desc'],
'search': {
'regex': true,
'smart': true
},
'data': localData,
'columns': [
{
'data': '_id',
'visible': false,
'searchable': false,
'orderable': false
},
{
'data': 'job',
'title': 'Tree',
'type': 'string',
'render': function(data) {
return '' + data + '';
}
},
{
'data': 'kernel',
'title': 'Kernel',
'type': 'string',
'render': function(data, type, object) {
return '' + data +
'';
}
},
{
'data': 'board',
'title': 'Board Model',
'render': function(data, type, object) {
return '' + data + '';
}
},
{
'data': 'defconfig_full',
'title': 'Defconfig',
'render': function(data, type, object) {
var display = null,
href = null,
linkEl = null,
board = object.board,
job = object.job,
kernel = object.kernel;
href = '/boot/' + board + '/job/' + job + '/kernel/' +
kernel + '/defconfig/' + data + '/';
linkEl = '' +
data + '';
if (data.length > 33) {
display = '' +
'' +
data.slice(0, 33) + '…';
} else {
display = linkEl;
}
return display;
}
},
{
'data': 'created_on',
'title': 'Date',
'type': 'date',
'className': 'pull-center',
'render': function(data) {
var created = new Date(data.$date);
return created.getCustomISODate();
}
},
{
'data': 'status',
'title': 'Status',
'type': 'string',
'className': 'pull-center',
'render': function(data) {
var displ;
switch (data) {
case 'PASS':
displ = '' +
'' +
'';
break;
case 'FAIL':
displ = '' +
'' +
'' +
'';
break;
case 'OFFLINE':
displ = '' +
'' +
'';
break;
default:
displ = '' +
'' +
'' +
'';
break;
}
return displ;
}
},
{
'data': 'board',
'title': '',
'orderable': false,
'searchable': false,
'className': 'pull-center',
'render': function(data, type, object) {
var defconfigFull = object.defconfig_full,
kernel = object.kernel,
job = object.job,
lab = object.lab_name;
return '' +
'';
}
}
]
});
$(document).on('click', '#labtable tbody tr', function() {
var localTable = table.fnGetData(this),
location = '#';
if (localTable) {
location = '/boot/' + localTable.board + '/job/' +
localTable.job + '/kernel/' + localTable.kernel +
'/defconfig/' + localTable.defconfig_full + '/lab/' +
localTable.lab_name + '/';
if (localTable._id !== null) {
location += '?_id=' + localTable._id.$oid;
}
window.location = location;
}
});
$('#search-area > .input-sm').attr('placeholder', 'Filter the results');
$('.input-sm').keyup(function(key) {
// Remove focus from input when Esc is pressed.
if (key.keyCode === 27) {
$(this).blur();
}
});
}
$(document).ready(function() {
'use strict';
$('#li-boot').addClass('active');
$('#table-div').hide();
var ajaxDeferredCall = null,
ajaxData = null,
errorReason = 'Error loading lab data';
ajaxData = {
'lab_name': labName,
'date_range': dateRange
};
ajaxDeferredCall = JSBase.createDeferredCall(
'/_ajax/boot',
'GET',
ajaxData,
null,
null,
errorReason
);
$.when(ajaxDeferredCall).done(populateLabTable);
});