let tableHandlers;
let collapsedGroupsHandlerTable = {};
let sortGroupTable = ["System Group", "Scanners Group", "Camera Group", "Pallet Group", "Marker Group"];
HTMLImports.whenReady(function () {
if ( $.fn.dataTable.isDataTable( '#handlerTable' ) ) {
tableHandlers = $('#handlerTable').DataTable();
}
else {
tableHandlers = $('#handlerTable').DataTable( {
paging: true,
retrieve: true,
searching: true,
ajax: {
url: '/api/handlers/',
dataSrc: ''
},
order: [[0, 'asc']],
orderFixed: [ 0, 'asc' ],
drawCallback: function ( settings ) {
let api = this.api();
let rows = api.rows( {page:'current'} ).nodes();
let last=null;
api.column(0, {page:'current'} ).data().each( function ( group, i ) {
let collapsed = !!collapsedGroupsHandlerTable[group];
$(rows).eq( i ).css({ display: !collapsed ? 'none' : '' });
if ( last !== group ) {
$(rows).eq( i ).before(
$('
').addClass("group-start")
.append('' + group + ' | ')
.attr('data-name', group)
.toggleClass('collapsed', !collapsed)
);
last = group;
}
} );
},
columns: [
{ data: 'groupNameLocalized',
render: function (data, type, row, meta) {
if (type === 'sort') {
if (sortGroupTable.findIndex(el => el === row.groupName) === -1) sortGroupTable.push(row.groupName);
return sortGroupTable.findIndex(el => el === row.groupName);
}
return data;
}
},
{ data: 'typeEventLocalized' },
{ data: 'eventNameLocalized' },
{ data: null,
render: function (data, type) {
let opts = $("");
data.actions.forEach(elem => {
let opt = $(`${elem.controller} [${elem.typeLocalized}]`)
if (elem.controller === "Отсутсвует") $(opt).addClass('ERROR');
opts.append(opt);
});
return opts.html();
}
},
{ "defaultContent": " "}
],
autoWidth: false,
columnDefs: [
{ width: '20%', targets: 0 },
{ width: '20%', targets: 1 },
{ width: '20%', targets: 2 },
{ width: '35%', targets: 3 },
{ width: '5%', targets: 4 }
],
"createdRow": createdRowHandlerTable,
"lengthMenu": [ [-1, 10, 25, 50], ["Все", 10, 25, 50] ],
"language": {
"search": "Поиск:",
"lengthMenu": "Показывать _MENU_ строк",
"info": "Строки с _START_ по _END_ из _TOTAL_",
"paginate": {
"next": "Следущая",
"previous": "Предыдущая"
}
}
} );
}
$('#handlerTable tbody').on('click', 'tr.group-start', function () {
let name = $(this).data('name');
collapsedGroupsHandlerTable[name] = !collapsedGroupsHandlerTable[name];
tableHandlers.draw(false);
});
});
function reloadHandlerList() {
tableHandlers.ajax.reload();
}
function createdRowHandlerTable( row, data, dataIndex, cells ) {
$('td:eq(4)', row).html(
`
`);
}
function deleteHandler(id, type) {
$.ajax({
type: "DELETE",
url: '/api/handlers/' + id + '?type=' + type,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function () {
console.log("success deleteHandler");
},
error: function(errMsg) {
console.log(errMsg);
},
complete: function (data) {
tableHandlers.ajax.reload();
}
});
}
function clearHandlerListNewContainer() {
$("#handler-list-page > .cconf").empty();
}
function requestHandlerList() {
clearHandlerListNewContainer() ;
resetPagingPageNumber("#handler-list-page");
nextView("#handler-list-page");
}