let tableDev;
const groupTranslations = {
"MARKER": "Группа маркировки",
"SCANNER": "Группа сканирования",
"PACK": "Группа агрегирования",
"PALLET": "Группа палетирования",
"SYSTEM": "Система",
"DEFAULT": "По умолчанию"
};
function createAndReloadTableDevice() {
if ($.fn.dataTable.isDataTable('#deviceTable')) {
tableDev = $('#deviceTable').DataTable();
tableDev.ajax.reload();
} else {
tableDev = $('#deviceTable').DataTable({
order: [[7, "asc"]],
paging: true,
retrieve: true,
searching: true,
ajax: {
url: '/api/devices',
dataSrc: ''
},
columns: [
{
data: 'groupName',
render: function(data, type, row) {
return groupTranslations[data] || data;
}
},
{data: 'deviceName'},
{data: 'deviceType'},
{data: 'deviceClass'},
{data: 'description'},
{data: 'ipAddress'},
{data: 'port'},
{
data: null,
render: function (data) {
let status;
if (data.status != null) {
let st1 = ``;
let st2 = ` ${data.status.statusRus}`;
if (data.status.statusEng === 'ERROR' || data.status.statusEng === 'WARNING') {
let st2err = `${data.status.statusRus}`;
status = st1 + st2err + `
${data.status.statusDesc}
`;
return status;
}
status = st1 + st2;
return status;
}
return "ОТКЛЮЧЕНО";
}
},
{"defaultContent": " "}
],
autoWidth: false,
columnDefs: [
{width: '10%', targets: 0, orderable: false},
{width: '15%', targets: 1},
{width: '10%', targets: 2},
{width: '15%', targets: 3},
{width: '10%', targets: 4},
{width: '5%', targets: 5},
{width: '10%', targets: 6},
{width: '15%', targets: 7},
{width: '10%', targets: 8}
],
"createdRow": createdRowTable1,
"lengthMenu": [[-1, 10, 25, 50], ["Все", 10, 25, 50]],
"language": {
"search": "Поиск:",
"lengthMenu": "Показывать _MENU_ строк",
"info": "Строки с _START_ по _END_ из _TOTAL_",
"paginate": {
"next": "Следующая",
"previous": "Предыдущая"
}
}
});
}
}
function toggleDropdown() {
let dropdown = document.getElementById("groupDropdown");
if (dropdown.style.display === "none" || dropdown.style.display === "") {
dropdown.style.display = "block";
} else {
dropdown.style.display = "none";
}
}
document.addEventListener('click', function(event) {
let dropdown = document.getElementById("groupDropdown");
let customDropdown = document.querySelector('.custom-dropdown');
if (customDropdown && !customDropdown.contains(event.target)) {
dropdown.style.display = "none";
}
});
function populateGroupFilter() {
let groups = new Set();
tableDev.rows().every(function () {
let data = this.data();
let translatedGroup = groupTranslations[data.groupName] || data.groupName;
groups.add(translatedGroup);
});
let groupFilter = document.getElementById("groupFilter");
groupFilter.innerHTML = '';
groups.forEach(group => {
let option = document.createElement('option');
option.value = group;
option.textContent = group;
groupFilter.appendChild(option);
});
}
function updateHeader(select) {
let selectedValue = select.value;
filterTableByGroup(selectedValue);
}
function filterTableByGroup(selectedGroup) {
tableDev.column(0).search(selectedGroup).draw();
}
$(document).ready(function () {
createAndReloadTableDevice();
setTimeout(populateGroupFilter, 1000);
});
function reloadTableDevice() {
console.log("reload-Device")
createAndReloadTableDevice();
}
if (tableDev) {
tableDev.off('draw').on('draw', function () {
populateGroupDropdown();
});
}
function createdRowTable1( row, data, dataIndex, cells ) {
if (data.enabled === false) {
$('td:eq(0)', row).css('color', 'grey');
$('td:eq(1)', row).css('color', 'grey');
$('td:eq(2)', row).css('color', 'grey');
$('td:eq(3)', row).css('color', 'grey');
$('td:eq(4)', row).css('color', 'grey');
$('td:eq(5)', row).css('color', 'grey');
$('td:eq(6)', row).css('color', 'grey');
$('td:eq(7)', row).css('color', 'grey');
$('td:eq(8)', row).css('display', 'flex');
$('td:eq(8)', row).css('flex-direction', 'column');
$('td:eq(8)', row).html(
`
`);
} else {
$('td:eq(8)', row).css('display', 'flex');
$('td:eq(8)', row).css('flex-direction', 'column');
$('td:eq(8)', row).html(
`
`);
}
}
function enableDevice(id, name) {
$.ajax({
type: "PATCH",
url: '/api/devices/' + id,
contentType: "application/json; charset=utf-8",
success: function () {
startSelfTestOneDevice(name);
},
error: function(errMsg) {
console.log(errMsg);
alert("Контроллер устройства выключен. Устройство не может быть активировано.")
},
complete: function (data) {
reloadTableDevice();
}
});
}
function clearDeviceListNewContainer() {
$("#device-list-new-page > .cconf").empty();
}
function requestDeviceListNew() {
clearDeviceListNewContainer();
resetPagingPageNumber("#device-list-new-page");
nextView("#device-list-new-page");
}
function showError(id) {
let elem = $('#' + id + '_0');
let isHidden = elem[0].hidden;
if (isHidden) {
elem.show("slow");
elem[0].hidden = false;
} else {
elem.hide("slow");
elem[0].hidden = true;
}
}
function updateDeviceStatus(device) {
if (tableDev) {
let row = tableDev.row((idx, rowdata) => rowdata.deviceName === device.name);
if (row.length > 0) {
let data = row.data();
data.status = {
statusEng: device.status,
statusRus: device.localizedStatus,
statusDesc: device.statusDesc
};
row.data(data).draw();
}
}
}