ASCU_ALL/Site/js/protect.js

193 lines
5.6 KiB
JavaScript
Raw Normal View History

2024-09-22 04:27:05 +05:00
var protect_table = $('#protect_table');
var filter_table = $('#filter_table');
var aply_filter = $('#aply_filter');
var change_filter = $('#change_filter');
var data_protect = null;
var data_protect_state = null;
var params_state_struct = null;
//Первая загрузка страницы
$(document).ready(
async function () {
var flag_pasport_load = await get_url_params();
pasport_fill_label();
pasport_show_lable();
if (!flag_pasport_load)
return;
if (!pasport_fill_date())
return;
show_menu();
pasport_show_date();
var pt = load_data_protect();
var pts = load_data_protect_state();
var ptss = load_params_state_struct();
await Promise.all([pt, pts, ptss]);
if (pts)
fill_filter_protect();
if (pt)
fill_table_protect();
}
);
aply_filter.click(function () {
read_filter();
fill_table_protect();
});
var change_filter_flag = true;
change_filter.click(function () {
change_filter.empty();
if (change_filter_flag)
change_filter.append("Установить все");
else
change_filter.append("Снять все");
for (var i = 0; i < data_protect_state.length; i++) {
var check_label = filter_table.find('#protect_filter_id_' + data_protect_state[i].index);
if (change_filter_flag)
check_label.removeAttr('checked');
else
check_label.attr('checked', true);
}
change_filter_flag = !change_filter_flag;
});
async function load_data_protect() {
try {
var res = await $.ajax({
type: "POST",
url: 'https://vsmpo.mbucb.ru/api/date/getprotect',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({
"vdp": pasport_data.numVDP,
"start": pasport_data.dStart,
"end": pasport_data.dEnd
})
});
data_protect = res.protect;
return true;
}
catch (err) {
data_protect = null;
alert("Ошибка загрузки защит");
return false;
}
}
async function load_data_protect_state() {
try {
var name_vdp = "0" + pasport_data.numVDP;
name_vdp = name_vdp.substr(name_vdp.length - 2);
var res = await $.ajax({
type: "POST",
url: 'https://vsmpo.mbucb.ru/api/params/getprotectstate',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({"name": name_vdp})
});
data_protect_state = res.protectState;
for (var i = 0; i < data_protect_state.length; i++)
data_protect_state[i].show = true;
return true;
}
catch (err) {
data_protect = null;
alert("Ошибка загрузки структуры защит");
return false;
}
}
async function load_params_state_struct() {
try {
var res = await $.ajax({
type: "POST",
url: 'https://vsmpo.mbucb.ru/api/params/getstatestruct',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({})
});
params_state_struct = res.stateStruct;
return true;
}
catch (err) {
params_state_struct = null;
alert("Ошибка загрузки состояний");
return false;
}
}
function fill_table_protect() {
try {
protect_table.find('tbody').empty();
if (data_protect == undefined ||
data_protect == null ||
data_protect_state == undefined ||
data_protect_state == null)
return;
for (var i = 0; i < data_protect.length; i++) {
var state = data_protect_state.find(item => item.index == data_protect[i].index);
if (state == undefined || state == null || !state.show)
continue;
var state_idx = params_state_struct.find(item => item.name == state.stateStruct);
if (state_idx == undefined || state_idx == null) {
state_idx = {};
state_idx.color = "#ffffff";
state_idx.name = "Операция №" + data_protect[i].state;
} else {
state_idx = state_idx.states.find(item => item.index == data_protect[i].state);
if (state_idx == undefined || state_idx == null) {
state_idx = {};
state_idx.color = "#ffffff";
state_idx.name = "Операция №" + data_protect[i].state;
}
}
protect_table.find('tbody').append(
'<tr style="background-color : ' + state_idx.color + '20;">' +
'<td>' + (i + 1) +
'</td>' +
'<td>' + data_protect[i].index +
'</td>' +
'<td>' + data_protect[i].start +
'</td>' +
'<td>' + state.name +
'</td>' +
'<td>' + state_idx.name +
'</td>' +
'</tr>');
}
}
catch {
alert("Ошибка заполнения таблицы.");
}
}
function fill_filter_protect() {
filter_table.empty();
if (data_protect_state == undefined ||
data_protect_state == null)
return;
for (var i = 0; i < data_protect_state.length; i++) {
filter_table.append(
'<div class= "form-check">' +
'<input class="form-check-input" type="checkbox" value="' + data_protect_state[i].index +
'" id="protect_filter_id_' + data_protect_state[i].index + '" ' +
(data_protect_state[i].show ? 'checked' : '') + '>' +
'<label class="form-check-label" for="protect_filter_id_' + data_protect_state[i].index + '">' +
data_protect_state[i].index + ' ' + data_protect_state[i].name +
'</label></div>'
);
}
}
function read_filter() {
for (var i = 0; i < data_protect_state.length; i++) {
if (filter_table.find('#protect_filter_id_' + data_protect_state[i].index).is(':checked'))
data_protect_state[i].show = true;
else
data_protect_state[i].show = false;
}
}