Save last
This commit is contained in:
121
Site/analog.html
Normal file
121
Site/analog.html
Normal file
@@ -0,0 +1,121 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta charset="utf-8" />
|
||||
<title>ВДП</title>
|
||||
<link rel="stylesheet" href="./lib/Bootstrap/css/bootstrap.css">
|
||||
<link rel="stylesheet" href="./lib/Font-Awesome/css/fontawesome-all.css" />
|
||||
<link rel="stylesheet" href="./css/MainSau.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="row align-items-center justify-content-center">
|
||||
<div class="col text-center pt-2">
|
||||
<h3>Аналоги</h3>
|
||||
</div>
|
||||
</header>
|
||||
<!--Меню выбра-->
|
||||
<div class="row border-top" id="manipulate_buttons" hidden>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_pasport_button" type="button">
|
||||
Паспорта
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary disabled" id="menu_analog_button" type="button">
|
||||
Аналоги
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_descret_button" type="button">
|
||||
Дискреты
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_tech_cycle_button" type="button">
|
||||
Технологический цикл
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_protect_button" type="button">
|
||||
Защиты
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--Голова паспорта-->
|
||||
<div class="row border-top" id="pasport_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Паспорт</h5>
|
||||
</div>
|
||||
</div>
|
||||
<!--Заданные параметры печи и даты-->
|
||||
<div class="row" id="pasport_date" hidden>
|
||||
<div class="col-auto">
|
||||
<button class="btn btn-primary" data-toggle="modal" data-target="#filter_modal" type="button">
|
||||
Фильтр
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Печь № <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время начала: <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время конца: <span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-bottom pb-1" id="load_line">
|
||||
<div class="col-12">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-striped progress-bar-animated"
|
||||
role="progressbar"
|
||||
aria-valuenow="100"
|
||||
aria-valuemin="0"
|
||||
aria-valuemax="100"
|
||||
style="width: 100%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-bottom pb-1" id="analog_diag_body">
|
||||
<div class="col-12">
|
||||
<div id="analog_diag" style="height: 600px; width: 100%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="filter_modal" tabindex="-1" role="dialog" aria-labelledby="filter_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Выберите элементы для отображения</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="filter_table">
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
|
||||
<button type="button" class="btn btn-primary" id="change_filter">Снять все</button>
|
||||
<button type="button" class="btn btn-primary" id="aply_filter" data-dismiss="modal">Применить фильтр</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="./lib/JQuery/jquery-3.3.1.js"></script>
|
||||
<script src="./lib/Popper/umd/popper.js"></script>
|
||||
<script src="./lib/Bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="./lib/canvasjs.min.js"></script>
|
||||
|
||||
<script src="./js/pasport.js"></script>
|
||||
<script src="./js/menu.js"></script>
|
||||
<script src="./js/analog.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
133
Site/discret.html
Normal file
133
Site/discret.html
Normal file
@@ -0,0 +1,133 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta charset="utf-8" />
|
||||
<title>ВДП</title>
|
||||
<link rel="stylesheet" href="./lib/Bootstrap/css/bootstrap.css">
|
||||
<link rel="stylesheet" href="./lib/Font-Awesome/css/fontawesome-all.css" />
|
||||
<link rel="stylesheet" href="./css/MainSau.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="row align-items-center justify-content-center">
|
||||
<div class="col text-center pt-2">
|
||||
<h3>Дискреты</h3>
|
||||
</div>
|
||||
</header>
|
||||
<!--Меню выбра-->
|
||||
<div class="row border-top" id="manipulate_buttons" hidden>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_pasport_button" type="button">
|
||||
Паспорта
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_analog_button" type="button">
|
||||
Аналоги
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1 disabled">
|
||||
<button class="btn btn-primary" id="menu_descret_button" type="button">
|
||||
Дискреты
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_tech_cycle_button" type="button">
|
||||
Технологический цикл
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_protect_button" type="button">
|
||||
Защиты
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--Голова паспорта-->
|
||||
<div class="row border-top" id="pasport_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Паспорт</h5>
|
||||
</div>
|
||||
</div>
|
||||
<!--Заданные параметры печи и даты-->
|
||||
<div class="row" id="pasport_date" hidden>
|
||||
<div class="col-auto">
|
||||
<button class="btn btn-primary" data-toggle="modal" data-target="#filter_modal" type="button">
|
||||
Фильтр
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Печь № <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время начала: <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время конца: <span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row border-bottom pb-1" id="discret_table">
|
||||
<div class="col-12" style="overflow : auto; max-height : 600px">
|
||||
<table class="table table-active">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>№</th>
|
||||
<th>Индекс</th>
|
||||
<th>Время начала</th>
|
||||
<th>Название</th>
|
||||
<th>Состояние</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="background-color: #ffffff">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-bottom pb-1" id="load_line">
|
||||
<div class="col-12">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-striped progress-bar-animated"
|
||||
role="progressbar"
|
||||
aria-valuenow="100"
|
||||
aria-valuemin="0"
|
||||
aria-valuemax="100"
|
||||
style="width: 100%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="filter_modal" tabindex="-1" role="dialog" aria-labelledby="filter_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Выберите элементы для отображения</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="filter_table">
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
|
||||
<button type="button" class="btn btn-primary" id="change_filter">Снять все</button>
|
||||
<button type="button" class="btn btn-primary" id="aply_filter">Применить фильтр</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="./lib/JQuery/jquery-3.3.1.js"></script>
|
||||
<script src="./lib/Popper/umd/popper.js"></script>
|
||||
<script src="./lib/Bootstrap/js/bootstrap.bundle.js"></script>
|
||||
|
||||
<script src="./js/pasport.js"></script>
|
||||
<script src="./js/menu.js"></script>
|
||||
<script src="./js/discret.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
224
Site/index.html
224
Site/index.html
@@ -10,23 +10,25 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<!--Голова-->
|
||||
<header class="row align-items-center justify-content-center">
|
||||
<div class="col text-center pt-2">
|
||||
<h3>РМТ "САУ ВДП" и "КОРПУС"</h3>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!--Меню выбора печи и времени-->
|
||||
<div class="row pt-2 pb-3">
|
||||
<!--Поиск по паспорту-->
|
||||
<div class="col-sm-12 col-md-5 border">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<strong>Поиск по дате:</strong>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input class="form-control" id="Search1_date" type="date">
|
||||
<input class="form-control" id="pasport_date_list" type="date">
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="btn btn-primary" id="Search1_button" type="button">
|
||||
<button class="btn btn-primary" id="search_button" type="button">
|
||||
Поиск
|
||||
</button>
|
||||
</div>
|
||||
@@ -35,15 +37,16 @@
|
||||
<strong>Список паспортов:</strong>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-control" id="Search1_list_pasport"></select>
|
||||
<select class="form-control" id="pasport_list"></select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button class="btn btn-primary" id="Pasport_button_LoadAll" type="button" hidden>
|
||||
Загрузка
|
||||
<button class="btn btn-primary" id="pasport_select_button" type="button" hidden>
|
||||
Выбрать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--Указание печи и интервала времени-->
|
||||
<div class="col-sm-12 col-md-7 border">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@@ -53,7 +56,7 @@
|
||||
Печь №
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-control" id="Search2_select_vdp"></select>
|
||||
<select class="form-control" id="vdp_select"></select>
|
||||
</div>
|
||||
<div class="w-100"></div>
|
||||
|
||||
@@ -62,45 +65,78 @@
|
||||
</div>
|
||||
|
||||
<div class="col-auto">
|
||||
<input class="form-control" type="date" id="Search2_date_start">
|
||||
<input class="form-control" type="date" id="vdp_date_start">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input class="form-control" type="time" id="Search2_time_start" step="1">
|
||||
<input class="form-control" type="time" id="vdp_time_start" step="1">
|
||||
</div>
|
||||
<div class="w-100"></div>
|
||||
<div class="col-auto pt-2">
|
||||
Конец:
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input class="form-control" id="Search2_date_end" type="date">
|
||||
<input class="form-control" id="vdp_date_end" type="date">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input class="form-control" type="time" id="Search2_time_end" step="1">
|
||||
<input class="form-control" type="time" id="vdp_time_end" step="1">
|
||||
</div>
|
||||
<div class="w-100"></div>
|
||||
<div class="col-auto pt-1">
|
||||
<button class="btn btn-primary" id="Search2_button_load" type="button">
|
||||
Загрузка
|
||||
<button class="btn btn-primary" id="vdp_select_button" type="button">
|
||||
Выбрать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-top" id="Pasport_Lable" hidden>
|
||||
<!--Меню выбра-->
|
||||
<div class="row border-top" id="manipulate_buttons" hidden>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary disabled" id="menu_pasport_button" type="button">
|
||||
Паспорта
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_analog_button" type="button">
|
||||
Аналоги
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_descret_button" type="button">
|
||||
Дискреты
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_tech_cycle_button" type="button">
|
||||
Технологический цикл
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_protect_button" type="button">
|
||||
Защиты
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--Голова паспорта-->
|
||||
<div class="row border-top" id="pasport_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Паспорт</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" id="Pasport_Date" hidden>
|
||||
<div class="col-sm-12 col-md-6 col-lg-4">
|
||||
<!--Заданные параметры печи и даты-->
|
||||
<div class="row" id="pasport_date" hidden>
|
||||
<div class="col-auto">
|
||||
Печь № <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время начала: <span></span>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-6 col-lg-4">
|
||||
<div class="col-auto">
|
||||
Время конца: <span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row border-bottom pb-1" id="Pasport_Info" hidden>
|
||||
<!--Паспорт, если выбрали-->
|
||||
<div class="row border-bottom pb-1" id="pasport_info" hidden>
|
||||
<div class="col-sm-12 col-lg-6">
|
||||
Сплав: <span></span>
|
||||
</div>
|
||||
@@ -136,99 +172,71 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-top" id="AnalogChart_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Аналоговые сигналы</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div id="AnalogChart_Global" class="row" hidden>
|
||||
<div class="col-sm-12 col-md-2" style="font-size:12px">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<input id="AnalogChart_Update" class="btn btn-primary" type="button" value="Обновить" />
|
||||
</div>
|
||||
<div class="col-12" style=" max-height: 570px; overflow: auto;">
|
||||
<div id="AnalogChart_Checkbox" class="form-check"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-10">
|
||||
<div id="AnalogChart" style="height: 600px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row border-top" id="Discret_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Дискретные сигналы</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Discret_Global" class="row" hidden>
|
||||
<div class="col-sm-12 col-md-2" style="font-size:12px">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<input id="Discret_Update" class="btn btn-primary" type="button" value="Обновить" />
|
||||
</div>
|
||||
<div class="col-12" style=" max-height: 570px; overflow: auto;">
|
||||
<div id="Discret_Checkbox" class="form-check"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-10" style="overflow : auto; max-height : 600px">
|
||||
<table class="table table-active">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-primary fas fa-sort-amount-down" id="Discret_Sort" type="button"></button>
|
||||
</th>
|
||||
<th>Время начала</th>
|
||||
<th>Название</th>
|
||||
<th>Статус</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="row" hidden>
|
||||
<div class="col-auto">
|
||||
<button class="btn btn-primary" id="test_button" type="button">
|
||||
Тест
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-top" id="Tech_Cycle_Lable" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Технологический цикл</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row border-bottom pb-1" id="Tech_Cycle_Table" hidden>
|
||||
<div class="col-12" style="overflow : auto; max-height : 600px">
|
||||
<table class="table table-active">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-primary fas fa-sort-amount-down" id="Tech_Cycle_Sort" type="button"></button>
|
||||
</th>
|
||||
<th>Время начала</th>
|
||||
<th>Операция</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--УДАЛИТЬ
|
||||
<div class="row border-top" id="AnalogChart_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Аналоговые сигналы</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div id="AnalogChart_Global" class="row" hidden>
|
||||
<div class="col-sm-12 col-md-2" style="font-size:12px">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<input id="AnalogChart_Update" class="btn btn-primary" type="button" value="Обновить" />
|
||||
</div>
|
||||
<div class="col-12" style=" max-height: 570px; overflow: auto;">
|
||||
<div id="AnalogChart_Checkbox" class="form-check"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-10">
|
||||
<div id="AnalogChart" style="height: 600px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row border-top" id="Discret_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Дискретные сигналы</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Discret_Global" class="row" hidden>
|
||||
<div class="col-sm-12 col-md-2" style="font-size:12px">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<input id="Discret_Update" class="btn btn-primary" type="button" value="Обновить" />
|
||||
</div>
|
||||
<div class="col-12" style=" max-height: 570px; overflow: auto;">
|
||||
<div id="Discret_Checkbox" class="form-check"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-10" style="overflow : auto; max-height : 600px">
|
||||
<table class="table table-active">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<button class="btn btn-primary fas fa-sort-amount-down" id="Discret_Sort" type="button"></button>
|
||||
</th>
|
||||
<th>Время начала</th>
|
||||
<th>Название</th>
|
||||
<th>Статус</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
|
||||
<script src="./lib/JQuery/jquery-3.3.1.js"></script>
|
||||
<script src="./lib/Popper/umd/popper.js"></script>
|
||||
<script src="./lib/Bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="./lib/canvasjs.min.js"></script>
|
||||
<script src="./js/Pasport.js"></script>
|
||||
<script src="./js/AnalogChart.js"></script>
|
||||
<script src="./js/main.js"></script>
|
||||
|
||||
<script src="./js/pasport.js"></script>
|
||||
<script src="./js/menu.js"></script>
|
||||
<script src="./js/index.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -191,7 +191,7 @@
|
||||
markerType: "none",
|
||||
name: d[i].sn == undefined ? "" : d[i].sn,
|
||||
suffix: d[i].s,
|
||||
axisYIndex: 0,
|
||||
axisYIndex: -1,
|
||||
}
|
||||
this._data.push(data);
|
||||
|
||||
|
@@ -1,272 +1,121 @@
|
||||
class Pasport {
|
||||
constructor() {
|
||||
//html Elements
|
||||
this._ajax;
|
||||
this._pasp_lable = $('#Pasport_Lable');
|
||||
this._pasp_date = $('#Pasport_Date');
|
||||
this._pasp_info = $('#Pasport_Info');
|
||||
this._pasp_button = $('#Pasport_button_LoadAll');
|
||||
var pasport_lable = $('#pasport_label');
|
||||
var pasport_date = $('#pasport_date');
|
||||
var pasport_info = $('#pasport_info');
|
||||
var pasport_data = null;
|
||||
|
||||
|
||||
//private Elements
|
||||
this._server_dir = "";
|
||||
|
||||
|
||||
//public Elements
|
||||
this.have_date = false;
|
||||
this.have_pasport = false;
|
||||
this.time_start = "";
|
||||
this.time_end = "";
|
||||
this.num_vdp = -1;
|
||||
this.num_plav = "";
|
||||
this.splav = "";
|
||||
this.is = "";
|
||||
this.pereplav = -1;
|
||||
this.naznachenie = "";
|
||||
this.kategory = "";
|
||||
this.zakaz = "";
|
||||
this.ves_slit = -1;
|
||||
this.kompl = -1;
|
||||
this.diam_krist = -1;
|
||||
this.diam_electr = -1;
|
||||
this.num_kontract = "";
|
||||
this.ukazanie = "";
|
||||
this.kod_npl = "";
|
||||
this.rm = "";
|
||||
this.notd = -1;
|
||||
this.tin = "";
|
||||
this.dzap = "";
|
||||
this.dlog = -1;
|
||||
this.last = -1;
|
||||
this.dlper = -1;
|
||||
this.izl = -1;
|
||||
this.robm = -1;
|
||||
this.rizol = 6;
|
||||
this.pos = -1;
|
||||
this.pril = 1;
|
||||
}
|
||||
|
||||
Download(dir) {
|
||||
if (dir == this._server_dir)
|
||||
return;
|
||||
var self = this;
|
||||
this._server_dir = dir;
|
||||
this.num_vdp = this._ParseDirToNumVDP(dir);
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'http://' + document.URL.split("/")[2] + '/api/pasport',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
|
||||
data: JSON.stringify({ "pasport": this._server_dir }),
|
||||
|
||||
beforeSend: function (jqXHR, settings) {
|
||||
self._pasp_button.attr('hidden', true);
|
||||
},
|
||||
success: function (date) {
|
||||
self.have_date = date.have_date;
|
||||
self.have_pasport = date.have_pasport;
|
||||
self.time_start = date.time_start;
|
||||
self.time_end = date.time_end;
|
||||
if (!self.have_pasport)
|
||||
return;
|
||||
self.num_plav = date.num_plav;
|
||||
self.splav = date.splav;
|
||||
self.is = date.is;
|
||||
self.pereplav = date.pereplav;
|
||||
self.naznachenie = date.naznachenie;
|
||||
self.kategory = date.kategory;
|
||||
self.zakaz = date.zakaz;
|
||||
self.ves_slit = date.ves_slit;
|
||||
self.kompl = date.kompl;
|
||||
self.diam_krist = date.diam_krist;
|
||||
self.diam_electr = date.diam_electr;
|
||||
self.num_kontract = date.num_kontract;
|
||||
self.ukazanie = date.ukazanie;
|
||||
self.kod_npl = date.kod_npl;
|
||||
self.rm = date.rm;
|
||||
self.notd = date.notd;
|
||||
self.tin = date.tin;
|
||||
self.dzap = date.dzap;
|
||||
self.dlog = date.dlog;
|
||||
self.last = date.last;
|
||||
self.dlper = date.dlper;
|
||||
self.izl = date.izl;
|
||||
self.robm = date.robm;
|
||||
self.rizol = date.rizol;
|
||||
self.pos = date.pos;
|
||||
self.pril = date.pril;
|
||||
self.Show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
_ParseDirToNumVDP(dir) {
|
||||
var t = dir.split('.');
|
||||
if (t[t.length - 1] != "gz")
|
||||
return parseInt(t[t.length - 1]);
|
||||
t = t[0].split('-');
|
||||
if (t.length == 2)
|
||||
return parseInt(t[t.length - 1]);
|
||||
if (t.length == 4)
|
||||
return parseInt(t[2]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
Show() {
|
||||
this._pasp_lable.removeAttr('hidden');
|
||||
if (this.have_date == undefined || !this.have_date) {
|
||||
this._pasp_lable.find('h5').html('Ошибка получения паспорта');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (this.have_pasport == undefined || !this.have_pasport)
|
||||
this._pasp_lable.find('h5').html('Паспорта нет');
|
||||
else
|
||||
this._pasp_lable.find('h5').html('Плавка №' + this.num_plav);
|
||||
|
||||
this._pasp_date.removeAttr('hidden');
|
||||
this._pasp_date.find('span').eq(0).html(this.time_start);
|
||||
this._pasp_date.find('span').eq(1).html(this.time_end);
|
||||
|
||||
this._pasp_button.removeAttr('hidden');
|
||||
if (this.have_pasport == undefined || !this.have_pasport)
|
||||
return;
|
||||
|
||||
this._pasp_info.removeAttr('hidden');
|
||||
var temp = this._pasp_info.find('span');
|
||||
temp.empty();
|
||||
if (this.is != '-')
|
||||
temp.eq(0).html(this.splav + ' ' + this.is);
|
||||
else
|
||||
temp.eq(0).html(this.splav);
|
||||
temp.eq(1).html(this.pereplav);
|
||||
temp.eq(2).html(this.naznachenie);
|
||||
temp.eq(3).html(this.kategory);
|
||||
temp.eq(4).html(this.zakaz);
|
||||
temp.eq(5).html(this.ves_slit);
|
||||
temp.eq(6).html(this.kompl);
|
||||
temp.eq(7).html(this.diam_krist);
|
||||
temp.eq(8).html(this.diam_electr);
|
||||
temp.eq(9).html(this.num_kontract);
|
||||
temp.eq(10).html(this.ukazanie);
|
||||
}
|
||||
|
||||
Clear() {
|
||||
this._pasp_lable.find('h5').empty();
|
||||
this._pasp_lable.attr('hidden', true);
|
||||
|
||||
this._pasp_date.find('span').empty();
|
||||
this._pasp_date.attr('hidden', true);
|
||||
|
||||
this._pasp_info.find('span').empty();
|
||||
this._pasp_info.attr('hidden', true);
|
||||
|
||||
this._pasp_button.attr('hidden', true);
|
||||
}
|
||||
}
|
||||
|
||||
class TechCycle {
|
||||
constructor() {
|
||||
this._sort = false;
|
||||
this._modal_load = $('#Modal_load');
|
||||
this._tech_lable = $('#Tech_Cycle_Lable');
|
||||
this._tech_table = $('#Tech_Cycle_Table');
|
||||
this._tech_sort = $('#Tech_Cycle_Sort');
|
||||
this._info_arr = [];
|
||||
|
||||
var self = this;
|
||||
this._tech_sort.click(function () {
|
||||
if (self._sort == undefined)
|
||||
self._sort == true;
|
||||
self._sort = !self._sort;
|
||||
self._tech_table.find('tbody').empty();
|
||||
self.Show();
|
||||
});
|
||||
}
|
||||
Download(pasp) {
|
||||
var self = this;
|
||||
this._info_arr = [];
|
||||
this.Clear();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'http://' + document.URL.split("/")[2] + '/api/techcycle',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
|
||||
data: JSON.stringify({
|
||||
"vdp": pasp.num_vdp,
|
||||
"timeStart": pasp.time_start,
|
||||
"timeEnd": pasp.time_end
|
||||
}),
|
||||
success: function (date) {
|
||||
if (date == undefined || date.length == 0)
|
||||
return;
|
||||
self._info_arr = date;
|
||||
self.Show();
|
||||
}
|
||||
//complete: function () { }
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
DownloadFormTime(vdp, tStart, tEnd) {
|
||||
var self = this;
|
||||
this._modal_load.modal('show');
|
||||
this._info_arr = [];
|
||||
this.Clear();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'http://' + document.URL.split("/")[2] + '/api/techcycle',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
|
||||
data: JSON.stringify({
|
||||
"vdp": vdp,
|
||||
"timeStart": tStart,
|
||||
"timeEnd": tEnd
|
||||
}),
|
||||
success: function (date) {
|
||||
if (date == undefined || date.length == 0)
|
||||
return;
|
||||
self._info_arr = date;
|
||||
self.Show();
|
||||
}
|
||||
//complete: function () { }
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
Show() {
|
||||
if (this._info_arr == undefined || this._info_arr.length == 0)
|
||||
return;
|
||||
|
||||
this._tech_sort.removeClass('fa-sort-amount-down fa-sort-amount-up');
|
||||
this._tech_sort.addClass(this._sort ? 'fa-sort-amount-up' : 'fa-sort-amount-down');
|
||||
|
||||
for (var i = 0; i < this._info_arr.length; i++) {
|
||||
var j = this._sort ? this._info_arr.length - 1 - i : i;
|
||||
this._tech_table.find('tbody').append(
|
||||
'<tr style="background-color : rgba(' + this._info_arr[j].color + ', 0.15);">' +
|
||||
'<td>' + (j + 1) +
|
||||
'</td>' +
|
||||
'<td>' + this._info_arr[j].date +
|
||||
'</td>' +
|
||||
'<td>' + this._info_arr[j].value +
|
||||
'</td>' +
|
||||
'</tr>');
|
||||
}
|
||||
this._tech_table.find('td').addClass('p-1');
|
||||
this._tech_lable.removeAttr('hidden');
|
||||
this._tech_table.removeAttr('hidden');
|
||||
}
|
||||
Clear() {
|
||||
this._tech_lable.attr('hidden', true);
|
||||
|
||||
this._tech_table.find('tbody').empty();
|
||||
this._tech_table.attr('hidden', true);
|
||||
}
|
||||
async function pasport_load(date, name) {
|
||||
try {
|
||||
var res = await $.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/pasport/getpasport',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({
|
||||
"date": date,
|
||||
"name": name
|
||||
})
|
||||
})
|
||||
pasport_data = res;
|
||||
pasport_data.search_date = date;
|
||||
pasport_data.search_name = name;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
pasport_data = null;
|
||||
alert("Ошибка загрузки паспорта:\n" +
|
||||
"\tДата: " + date + "\n" +
|
||||
"\tПаспорт: " + name);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
function pasport_custom_set(vdp, dStart, dEnd) {
|
||||
pasport_data = {};
|
||||
pasport_data.numVDP = vdp;
|
||||
pasport_data.dStart = dStart;
|
||||
pasport_data.dEnd = dEnd;
|
||||
}
|
||||
function pasport_fill_label() {
|
||||
try {
|
||||
if (pasport_data == undefined ||
|
||||
pasport_data == null ||
|
||||
(
|
||||
!pasport_data.hasOwnProperty('nplav') &&
|
||||
!pasport_data.hasOwnProperty('numVDP')
|
||||
)
|
||||
)
|
||||
throw 'Ошибка';
|
||||
if (pasport_data.hasOwnProperty('nplav'))
|
||||
pasport_lable.find('h5').html('Паспорт №' + pasport_data.nplav);
|
||||
else
|
||||
pasport_lable.find('h5').html('Печь №' + pasport_data.numVDP);
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
pasport_lable.find('h5').html('Ошибка получения паспорта');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function pasport_fill_date() {
|
||||
try {
|
||||
if (pasport_data == undefined ||
|
||||
pasport_data == null)
|
||||
throw "Ошибка";
|
||||
pasport_date.find('span').eq(0).html(pasport_data.numVDP);
|
||||
pasport_date.find('span').eq(1).html(pasport_data.dStart);
|
||||
pasport_date.find('span').eq(2).html(pasport_data.dEnd);
|
||||
return true;
|
||||
}
|
||||
catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function pasport_fill_info() {
|
||||
try {
|
||||
var temp = pasport_info.find('span');
|
||||
if (pasport_data.is != '-')
|
||||
temp.eq(0).html(pasport_data.splav + ' ' + pasport_data.is);
|
||||
else
|
||||
temp.eq(0).html(pasport_data.splav);
|
||||
temp.eq(1).html(pasport_data.prpl);
|
||||
temp.eq(2).html(pasport_data.nazn);
|
||||
temp.eq(3).html(pasport_data.kat);
|
||||
temp.eq(4).html(pasport_data.zakaz);
|
||||
temp.eq(5).html(pasport_data.vessl);
|
||||
temp.eq(6).html(pasport_data.kompl);
|
||||
temp.eq(7).html(pasport_data.dkr);
|
||||
temp.eq(8).html(pasport_data.diam);
|
||||
temp.eq(9).html(pasport_data.nkon);
|
||||
temp.eq(10).html(pasport_data.ukaz);
|
||||
return true;
|
||||
}
|
||||
catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function pasport_show_lable() {
|
||||
try {
|
||||
pasport_lable.removeAttr('hidden');
|
||||
} catch { }
|
||||
}
|
||||
function pasport_show_date() {
|
||||
try {
|
||||
pasport_date.removeAttr('hidden');
|
||||
} catch { }
|
||||
}
|
||||
function pasport_show_info() {
|
||||
try {
|
||||
pasport_info.removeAttr('hidden');
|
||||
} catch { }
|
||||
}
|
||||
function pasport_hide_all() {
|
||||
try {
|
||||
pasport_lable.attr('hidden', true);
|
||||
} catch { }
|
||||
try {
|
||||
pasport_date.attr('hidden', true);
|
||||
} catch { }
|
||||
try {
|
||||
pasport_info.attr('hidden', true);
|
||||
} catch { }
|
||||
}
|
||||
|
||||
|
322
Site/js/analog.js
Normal file
322
Site/js/analog.js
Normal file
@@ -0,0 +1,322 @@
|
||||
var analog_diag_body = $('#analog_diag_body');
|
||||
var analog_diag = $('#analog_diag');
|
||||
var filter_table = $('#filter_table');
|
||||
var axis_table = $('#axis_table');
|
||||
|
||||
var aply_filter = $('#aply_filter');
|
||||
var change_filter = $('#change_filter');
|
||||
|
||||
var aply_axis = $('#aply_axis');
|
||||
|
||||
var data_analog = null;
|
||||
var data_analog_params = null;
|
||||
var data_metrics = null;
|
||||
|
||||
|
||||
function ValueDateFormatter(e) {
|
||||
var hours = 1000 * 60 * 60;
|
||||
if (e.trigger === "reset") {
|
||||
e.chart.options.axisX.valueFormatString = "MM.DD HH";
|
||||
}
|
||||
else if (e.trigger === "zoom") {
|
||||
//Hour (Comparing Hours)
|
||||
if ((((e.axisX[0].viewportMaximum - e.axisX[0].viewportMinimum) / (hours)) < 24)) {
|
||||
e.chart.options.axisX.valueFormatString = "HH:mm:ss";
|
||||
}
|
||||
//Day (Comparing Days)
|
||||
else if (((e.axisX.viewportMaximum - e.axisX.viewportMinimum) / (hours)) < 48) {
|
||||
e.chart.options.axisX.valueFormatString = "HH:mm";
|
||||
}
|
||||
//Year (Comparing Years)
|
||||
else if (((e.axisX[0].viewportMaximum - e.axisX[0].viewportMinimum) / (hours * 24)) < 2) {
|
||||
e.chart.options.axisX.valueFormatString = "MM.DD HH";
|
||||
}
|
||||
else {
|
||||
e.chart.options.axisX.valueFormatString = "MM.DD";
|
||||
}
|
||||
}
|
||||
}
|
||||
var a_chart = new CanvasJS.Chart("analog_diag", {
|
||||
toolTip: {
|
||||
fontSize: 12,
|
||||
shared: true,
|
||||
contentFormatter: function (e) {
|
||||
var str = "";
|
||||
if (e.entries.length < 1)
|
||||
return str;
|
||||
var lastdate = e.entries[0].dataPoint.x;
|
||||
var data = e.chart._dataInRenderedOrder;
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var y = null;
|
||||
|
||||
for (var j = 0; j < data[i].dataPoints.length; j++) {
|
||||
var t = data[i].dataPoints[j].x - lastdate;
|
||||
if (t <= 0)
|
||||
y = data[i].dataPoints[j].y;
|
||||
else
|
||||
break;
|
||||
t = data[i].dataPoints[(data[i].dataPoints.length - 1) - j].x - lastdate;
|
||||
if (t <= 0) {
|
||||
y = data[i].dataPoints[(data[i].dataPoints.length - 1) - j].y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
var temp =
|
||||
data[i].name + ': <strong style="color:' +
|
||||
data[i].color + ';">' +
|
||||
y + ' </strong>' + data[i].axisY.suffix + "<br/>";
|
||||
str = str.concat(temp);
|
||||
}
|
||||
return (str);
|
||||
}
|
||||
},
|
||||
animationEnabled: true,
|
||||
animationDuration: 1000,
|
||||
exportFileName: "Analog Signals",
|
||||
exportEnabled: true,
|
||||
zoomEnabled: true,
|
||||
theme: "light1",
|
||||
backgroundColor: "#FFFFFF",
|
||||
colorSet: "colorSet1",
|
||||
culture: "ru",
|
||||
title: {},
|
||||
legend: {},
|
||||
|
||||
rangeChanging: ValueDateFormatter,
|
||||
axisX: {
|
||||
labelFontSize: 12,
|
||||
margin: 1,
|
||||
tickLength: 3,
|
||||
tickThickness: 1,
|
||||
lineThickness: 1,
|
||||
gridThickness: 0.3,
|
||||
valueFormatString: "MM.DD HH"
|
||||
},
|
||||
axisY: [],
|
||||
data: []
|
||||
});
|
||||
|
||||
//Первая загрузка страницы
|
||||
|
||||
$(document).ready(
|
||||
async function () {
|
||||
show_load();
|
||||
|
||||
var flag_pasport_load = await get_url_params();
|
||||
pasport_fill_label();
|
||||
pasport_show_lable();
|
||||
if (!flag_pasport_load) {
|
||||
hide_load();
|
||||
return;
|
||||
}
|
||||
if (!pasport_fill_date()) {
|
||||
hide_load();
|
||||
return;
|
||||
}
|
||||
show_menu();
|
||||
pasport_show_date();
|
||||
|
||||
var ap = load_data_analog_params();
|
||||
var m = load_data_metrics();
|
||||
await Promise.all([ap]);
|
||||
var ad = load_data_analog();
|
||||
if (ap)
|
||||
fill_filter_analog();
|
||||
await Promise.all([ad, m]);
|
||||
if (ap) {
|
||||
if (ad) {
|
||||
fill_analog_char_data();
|
||||
}
|
||||
}
|
||||
a_chart.render();
|
||||
hide_load();
|
||||
}
|
||||
);
|
||||
|
||||
aply_filter.click(async function () {
|
||||
read_filter();
|
||||
await load_data_analog();
|
||||
fill_analog_char_data();
|
||||
a_chart.render();
|
||||
});
|
||||
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_analog_params.length; i++) {
|
||||
var check_label = filter_table.find('#analog_filter_id_' + data_analog_params[i].index);
|
||||
if (change_filter_flag)
|
||||
check_label.removeAttr('checked');
|
||||
else
|
||||
check_label.attr('checked', true);
|
||||
}
|
||||
change_filter_flag = !change_filter_flag;
|
||||
});
|
||||
|
||||
function fill_filter_analog() {
|
||||
filter_table.empty();
|
||||
if (data_analog_params == undefined ||
|
||||
data_analog_params == null)
|
||||
return;
|
||||
for (var i = 0; i < data_analog_params.length; i++) {
|
||||
filter_table.append(
|
||||
'<div class= "form-check">' +
|
||||
'<input class="form-check-input" type="checkbox" value="' + data_analog_params[i].index +
|
||||
'" id="analog_filter_id_' + data_analog_params[i].index + '" ' +
|
||||
(data_analog_params[i].showDefault ? 'checked' : '') + '>' +
|
||||
'<label class="form-check-label" for="analog_filter_id_' + data_analog_params[i].index + '">' +
|
||||
data_analog_params[i].index + ' ' + data_analog_params[i].name +
|
||||
'</label></div>'
|
||||
);
|
||||
}
|
||||
}
|
||||
function read_filter() {
|
||||
for (var i = 0; i < data_analog_params.length; i++) {
|
||||
if (filter_table.find('#analog_filter_id_' + data_analog_params[i].index).is(':checked'))
|
||||
data_analog_params[i].showDefault = true;
|
||||
else
|
||||
data_analog_params[i].showDefault = false;
|
||||
}
|
||||
}
|
||||
|
||||
async function load_data_analog_params() {
|
||||
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/getanalogs',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({ "name": name_vdp })
|
||||
});
|
||||
data_analog_params = res.analog_params;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
data_protect = null;
|
||||
alert("Ошибка загрузки структуры аналогов");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function load_data_metrics() {
|
||||
try {
|
||||
var res = await $.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/params/getmetrics',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({ })
|
||||
});
|
||||
data_metrics = res.metrics;
|
||||
for (var i = 0; i < data_metrics; i++)
|
||||
data_metrics[i].show = false;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
data_protect = null;
|
||||
alert("Ошибка загрузки метрик осей");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function load_data_analog() {
|
||||
try {
|
||||
data_analog = null;
|
||||
if (data_analog_params == undefined ||
|
||||
data_analog_params == null)
|
||||
return false;
|
||||
var selected_analog = select_analogs = data_analog_params.filter(item => item.showDefault == true);
|
||||
var ask_array = [];
|
||||
for (var i = 0; i < selected_analog.length; i++)
|
||||
ask_array.push(selected_analog[i].index)
|
||||
var res = await $.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/date/getanalogs',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({
|
||||
"vdp": pasport_data.numVDP,
|
||||
"index": ask_array,
|
||||
"start": pasport_data.dStart,
|
||||
"end": pasport_data.dEnd
|
||||
})
|
||||
});
|
||||
data_analog = res.analogs;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
data_analog = null;
|
||||
alert("Ошибка загрузки дискретов.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function fill_analog_char_data() {
|
||||
var d = [];
|
||||
a_chart.options.axisY = [];
|
||||
a_chart.options.data = [];
|
||||
for (var i = 0; i < data_analog.length; i++) {
|
||||
|
||||
var a_p = data_analog_params.find(item => item.index == data_analog[i].index);
|
||||
var a_p_exist = a_p != undefined && a_p != null;
|
||||
|
||||
var axis = {
|
||||
labelFontSize: 12,
|
||||
labelAngle: -90,
|
||||
margin: 0,
|
||||
tickLength: 3,
|
||||
tickThickness: 1,
|
||||
lineThickness: 1,
|
||||
gridThickness: 0.1,
|
||||
suffix: "УЕ",
|
||||
logarithmic: false
|
||||
}
|
||||
|
||||
if (a_p_exist) {
|
||||
var m = data_metrics.find(item => item.name = a_p.metric)
|
||||
if (m != undefined && m != null) {
|
||||
axis.suffix = m.name;
|
||||
axis.logarithmic = m.log;
|
||||
}
|
||||
}
|
||||
|
||||
var axis_y_idx = a_chart.options.axisY.findIndex(item => item.suffix == axis.suffix);
|
||||
if (axis_y_idx == undefined || axis_y_idx == null || axis_y_idx == -1) {
|
||||
a_chart.options.axisY.push(axis);
|
||||
axis_y_idx = a_chart.options.axisY.length - 1;
|
||||
}
|
||||
|
||||
var d_a_line = {
|
||||
type: "stepLine",
|
||||
markerType: "none",
|
||||
name: a_p_exist ? a_p.sname : "Сигнал №" + data_analog[i].index,
|
||||
suffix: axis.suffix,
|
||||
axisYIndex: axis_y_idx,
|
||||
dataPoints: []
|
||||
};
|
||||
|
||||
var l_d_a = data_analog[i].analogs;
|
||||
|
||||
for (var j = 0; j < l_d_a.length; j++) {
|
||||
var rdt = null
|
||||
if (l_d_a[j].start != undefined && l_d_a[j].start != null) {
|
||||
var dta = l_d_a[j].start.split(' ');
|
||||
if (dta.length == 2) {
|
||||
dtd = dta[0].split('.');
|
||||
dtt = dta[1].split(':');
|
||||
if (dtd.length == 3 && dtt.length === 3)
|
||||
rdt = new Date(dtd[0], dtd[1], dtd[2], dtt[0], dtt[1], dtt[2]);
|
||||
}
|
||||
}
|
||||
d_a_line.dataPoints.push({
|
||||
x: rdt,
|
||||
y: l_d_a[j].value
|
||||
});
|
||||
}
|
||||
a_chart.options.data.push(d_a_line);
|
||||
}
|
||||
};
|
326
Site/js/discret.js
Normal file
326
Site/js/discret.js
Normal file
@@ -0,0 +1,326 @@
|
||||
var discret_table = $('#discret_table');
|
||||
var filter_table = $('#filter_table');
|
||||
|
||||
var aply_filter = $('#aply_filter');
|
||||
var change_filter = $('#change_filter');
|
||||
|
||||
var data_discret = null;
|
||||
var data_discret_params = null;
|
||||
var params_state_struct = null;
|
||||
|
||||
//Первая загрузка страницы
|
||||
$(document).ready(
|
||||
async function () {
|
||||
show_load();
|
||||
|
||||
var flag_pasport_load = await get_url_params();
|
||||
pasport_fill_label();
|
||||
pasport_show_lable();
|
||||
if (!flag_pasport_load) {
|
||||
hide_load();
|
||||
return;
|
||||
}
|
||||
if (!pasport_fill_date()) {
|
||||
hide_load();
|
||||
return;
|
||||
}
|
||||
show_menu();
|
||||
pasport_show_date();
|
||||
|
||||
var ds = load_data_discret();
|
||||
var dsp = load_data_discret_params();
|
||||
var dsss = load_params_state_struct();
|
||||
await Promise.all([ds, dsp, dsss]);
|
||||
if (dsp)
|
||||
fill_filter_discret();
|
||||
if (ds)
|
||||
fill_table_discret();
|
||||
hide_load();
|
||||
}
|
||||
);
|
||||
|
||||
aply_filter.click(function () {
|
||||
read_filter();
|
||||
fill_table_discret();
|
||||
});
|
||||
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_discret_params.length; i++) {
|
||||
var check_label = filter_table.find('#discret_filter_id_' + data_discret_params[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_discret() {
|
||||
try {
|
||||
var res = await $.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/date/getdiscret',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({
|
||||
"vdp": pasport_data.numVDP,
|
||||
"start": pasport_data.dStart,
|
||||
"end": pasport_data.dEnd
|
||||
})
|
||||
});
|
||||
data_discret = res.discret;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
data_discret = null;
|
||||
alert("Ошибка загрузки дискретов.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function load_data_discret_params() {
|
||||
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/getdiscret',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({ "name": name_vdp })
|
||||
});
|
||||
data_discret_params = res.discret_params;
|
||||
var i = 0;
|
||||
while (i < data_discret_params.length) {
|
||||
if (data_discret_params[i].skip) {
|
||||
data_discret_params.splice(i, 1);
|
||||
continue;
|
||||
}
|
||||
data_discret_params[i].show = true;
|
||||
i++;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
data_discret_params = 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_discret() {
|
||||
try {
|
||||
discret_table.find('tbody').empty();
|
||||
if (data_discret == undefined ||
|
||||
data_discret == null ||
|
||||
data_discret_params == undefined ||
|
||||
data_discret_params == null)
|
||||
return;
|
||||
|
||||
for (var i = 0; i < data_discret.length; i++) {
|
||||
var state = data_discret_params.find(item => item.index == data_discret[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_discret[i].state;
|
||||
} else {
|
||||
state_idx = state_idx.states.find(item => item.index == data_discret[i].state);
|
||||
if (state_idx == undefined || state_idx == null) {
|
||||
state_idx = {};
|
||||
state_idx.color = "#ffffff";
|
||||
state_idx.name = "Состояние №" + data_discret[i].state;
|
||||
}
|
||||
}
|
||||
|
||||
discret_table.find('tbody').append(
|
||||
'<tr style="background-color : ' + state_idx.color + '20;">' +
|
||||
'<td>' + (i + 1) +
|
||||
'</td>' +
|
||||
'<td>' + data_discret[i].index +
|
||||
'</td>' +
|
||||
'<td>' + data_discret[i].start +
|
||||
'</td>' +
|
||||
'<td>' + state.name +
|
||||
'</td>' +
|
||||
'<td>' + state_idx.name +
|
||||
'</td>' +
|
||||
'</tr>');
|
||||
}
|
||||
}
|
||||
catch {
|
||||
alert("Ошибка заполнения таблицы.");
|
||||
}
|
||||
}
|
||||
|
||||
function fill_filter_discret() {
|
||||
filter_table.empty();
|
||||
if (data_discret_params == undefined ||
|
||||
data_discret_params == null)
|
||||
return;
|
||||
for (var i = 0; i < data_discret_params.length; i++) {
|
||||
filter_table.append(
|
||||
'<div class= "form-check">' +
|
||||
'<input class="form-check-input" type="checkbox" value="' + data_discret_params[i].index +
|
||||
'" id="discret_filter_id_' + data_discret_params[i].index + '" ' +
|
||||
(data_discret_params[i].show ? 'checked' : '') + '>' +
|
||||
'<label class="form-check-label" for="discret_filter_id_' + data_discret_params[i].index + '">' +
|
||||
data_discret_params[i].index + ' ' + data_discret_params[i].name +
|
||||
'</label></div>'
|
||||
);
|
||||
}
|
||||
}
|
||||
function read_filter() {
|
||||
for (var i = 0; i < data_discret_params.length; i++) {
|
||||
if (filter_table.find('#discret_filter_id_' + data_discret_params[i].index).is(':checked'))
|
||||
data_discret_params[i].show = true;
|
||||
else
|
||||
data_discret_params[i].show = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function load_discret() {
|
||||
$.ajax({
|
||||
type:
|
||||
"POST",
|
||||
url:
|
||||
'https://' +
|
||||
//document.URL.split("/")[2] +
|
||||
'vsmpo.mbucb.ru' +
|
||||
'/api/discret/getdiscrets',
|
||||
contentType:
|
||||
"application/json; charset=utf-8",
|
||||
dataType:
|
||||
"json",
|
||||
data:
|
||||
JSON.stringify(
|
||||
{
|
||||
"vdp": pasport_data == null ? global_vdp : pasport_data.numVDP,
|
||||
"start": pasport_data == null ? global_dStart : pasport_data.dStart,
|
||||
"end": pasport_data == null ? global_dEnd : pasport_data.dEnd
|
||||
}
|
||||
),
|
||||
failure:
|
||||
function (errMsg) {
|
||||
hide_load();
|
||||
alert("Не смог зугрузить массив данных. \n" + errMsg.name + ":" + errMsg.message + "\n" + errMsg.stack);
|
||||
},
|
||||
success: function (date) {
|
||||
if (
|
||||
date === undefined ||
|
||||
date.discrets === undefined ||
|
||||
date.stateParams === undefined ||
|
||||
date.discretParams === undefined
|
||||
) {
|
||||
alert("Неверные данные")
|
||||
return;
|
||||
}
|
||||
for (var i = 0; i < date.discrets.length; i++) {
|
||||
var discret_row = {};
|
||||
|
||||
discret_row.id = i + 1;
|
||||
discret_row.index = date.discrets[i].index;
|
||||
discret_row.name = "Дискрет №" + date.discrets[i].index;
|
||||
discret_row.color = "#ffffff";
|
||||
discret_row.state = "Неизвестный №" + date.discrets[i].state;
|
||||
discret_row.date_time = date.discrets[i].start;
|
||||
|
||||
var discretParams = date.discretParams.find(item => item.index == date.discrets[i].index);
|
||||
if (discretParams != undefined) {
|
||||
discret_row.name = discretParams.name;
|
||||
|
||||
var stateParam =
|
||||
date.stateParams.find(item =>
|
||||
item.name == discretParams.stateStruct &&
|
||||
item.states.find(item => item.index == date.discrets[i].state) != undefined
|
||||
)
|
||||
if (stateParam != undefined) {
|
||||
var state_tmp = stateParam.states.find(item => item.index == date.discrets[i].state);
|
||||
discret_row.state = state_tmp.name;
|
||||
discret_row.color = state_tmp.color;
|
||||
}
|
||||
}
|
||||
|
||||
var discret_filter = {};
|
||||
discret_filter.index = discret_row.index;
|
||||
discret_filter.name = discret_row.name;
|
||||
discret_filter.show = true;
|
||||
|
||||
if (local_filter.find(item => item.index == discret_filter.index) === undefined)
|
||||
local_filter.push(discret_filter);
|
||||
|
||||
local_date.push(discret_row);
|
||||
}
|
||||
|
||||
local_filter.sort(function (a, b) { return a.index - b.index; });
|
||||
update_filter();
|
||||
update_table();
|
||||
hide_load();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function update_filter() {
|
||||
filter_table.empty();
|
||||
for (var i = 0; i < local_filter.length; i++) {
|
||||
filter_table.append(
|
||||
'<div class= "form-check">' +
|
||||
'<input class="form-check-input" type="checkbox" value="' + local_filter[i].index +
|
||||
'" id="discret_filter_id_' + local_filter[i].index + '" ' +
|
||||
(local_filter[i].show ? 'checked' : '') + '>' +
|
||||
'<label class="form-check-label" for="discret_filter_id_' + local_filter[i].index + '">' +
|
||||
local_filter[i].index + ' ' + local_filter[i].name +
|
||||
'</label></div>'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function update_table() {
|
||||
discret_table.find('tbody').empty();
|
||||
for (var i = 0; i < local_date.length; i++) {
|
||||
var check = local_filter.find(item => item.index == local_date[i].index);
|
||||
if (check != undefined && !check.show)
|
||||
continue;
|
||||
discret_table.find('tbody').append(
|
||||
'<tr style="background-color : ' + local_date[i].color + '20;">' +
|
||||
'<td>' + (i + 1) +
|
||||
'</td>' +
|
||||
'<td>' + local_date[i].index +
|
||||
'</td>' +
|
||||
'<td>' + local_date[i].date_time +
|
||||
'</td>' +
|
||||
'<td>' + local_date[i].name +
|
||||
'</td>' +
|
||||
'<td>' + local_date[i].state +
|
||||
'</td>' +
|
||||
'</tr>');
|
||||
}
|
||||
}
|
1
Site/js/global_params.js
Normal file
1
Site/js/global_params.js
Normal file
@@ -0,0 +1 @@
|
||||
var global_pasport;
|
221
Site/js/index.js
Normal file
221
Site/js/index.js
Normal file
@@ -0,0 +1,221 @@
|
||||
var pasport_date_list = $('#pasport_date_list');
|
||||
var search_button = $('#search_button');
|
||||
var pasport_list = $('#pasport_list');
|
||||
var pasport_select_button = $('#pasport_select_button');
|
||||
|
||||
var vdp_select = $('#vdp_select');
|
||||
var vdp_date_start = $('#vdp_date_start');
|
||||
var vdp_date_end = $('#vdp_date_end');
|
||||
var vdp_time_start = $('#vdp_time_start');
|
||||
var vdp_time_end = $('#vdp_time_end');
|
||||
var vdp_select_button = $('#vdp_select_button');
|
||||
|
||||
//Первая загрузка страницы
|
||||
$(document).ready(
|
||||
async function () {
|
||||
//fill elements
|
||||
|
||||
for (var i = 1; i < 51; i++)
|
||||
vdp_select.append('<option value="' + i + '">' + i + '</option>');
|
||||
for (var i = 91; i < 95; i++)
|
||||
vdp_select.append('<option value="' + i + '">' + i + '</option>');
|
||||
|
||||
var d = new Date();
|
||||
pasport_date_list.val(getDate(d));
|
||||
|
||||
vdp_date_end.val(getDate(d));
|
||||
d.setDate(d.getDate() - 3);
|
||||
vdp_date_start.val(getDate(d));
|
||||
|
||||
vdp_time_start.val('00:00:00');
|
||||
vdp_time_end.val('23:59:59');
|
||||
|
||||
await get_url_params();
|
||||
|
||||
if (
|
||||
pasport_data == undefined ||
|
||||
pasport_data == null
|
||||
)
|
||||
return;
|
||||
|
||||
if (pasport_data.search_date != null) {
|
||||
pasport_date_list.val(pasport_data.search_date);
|
||||
if (pasport_data.search_name != null) {
|
||||
func_search_button(
|
||||
pasport_data.search_date,
|
||||
pasport_data.search_name
|
||||
);
|
||||
func_pasport_select_button(
|
||||
pasport_data.search_date,
|
||||
pasport_data.search_name
|
||||
);
|
||||
}
|
||||
else
|
||||
search_button.click();
|
||||
}
|
||||
|
||||
if (pasport_data.numVDP != null)
|
||||
$('#vdp_select option[value=' + pasport_data.numVDP + ']').prop('selected', true);
|
||||
|
||||
if (pasport_data.dStart != null && pasport_data.dEnd != null) {
|
||||
var st = pasport_data.dStart.split(' ');
|
||||
var std = st[0].split('.');
|
||||
var ed = pasport_data.dEnd.split(' ');
|
||||
var edd = ed[0].split('.');
|
||||
if (std.length == 1)
|
||||
vdp_date_start.val(std[0]);
|
||||
else
|
||||
vdp_date_start.val(std[0] + '-' + std[1] + '-' + std[2]);
|
||||
if (edd.length == 1)
|
||||
vdp_date_end.val(edd[0]);
|
||||
else
|
||||
vdp_date_end.val(edd[0] + '-' + edd[1] + '-' + edd[2]);
|
||||
|
||||
vdp_time_start.val(st[1]);
|
||||
vdp_time_end.val(ed[1]);
|
||||
|
||||
vdp_select_button.click();
|
||||
}
|
||||
else {
|
||||
var d = new Date();
|
||||
vdp_date_end.val(
|
||||
getDate(d)
|
||||
);
|
||||
d.setDate(d.getDate() - 3);
|
||||
vdp_date_start.val(
|
||||
getDate(d)
|
||||
);
|
||||
vdp_time_start.val('00:00:00');
|
||||
vdp_time_end.val('23:59:59');
|
||||
}
|
||||
pasport_fill_label()
|
||||
pasport_show_lable();
|
||||
if (pasport_fill_date())
|
||||
pasport_show_date();
|
||||
if (pasport_fill_info())
|
||||
pasport_fill_info();
|
||||
show_menu();
|
||||
}
|
||||
);
|
||||
|
||||
//Конвертация даты в строку
|
||||
function getDate(date) {
|
||||
var d = (date === undefined) ? new Date() : date;
|
||||
t =
|
||||
d.getFullYear() + "-" +
|
||||
("0" + (d.getMonth() + 1)).slice(-2) + "-" +
|
||||
("0" + d.getDate()).slice(-2);
|
||||
return t;
|
||||
}
|
||||
|
||||
//Изменение даты для поиска
|
||||
pasport_date_list.change(
|
||||
function () {
|
||||
pasport_list.empty();
|
||||
pasport_select_button.attr('hidden', true);
|
||||
}
|
||||
);
|
||||
|
||||
//Кнопка поиска списка по дате
|
||||
search_button.click(
|
||||
function () {
|
||||
func_search_button(
|
||||
pasport_date_list.val()
|
||||
);
|
||||
}
|
||||
);
|
||||
function func_search_button(data, name) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/pasport/getlist',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({
|
||||
"date": data
|
||||
}),
|
||||
failure:
|
||||
function (errMsg) {
|
||||
pasport_select_button.attr('hidden', true);
|
||||
alert("Не смог зугрузить список плавок. \n" + errMsg.name + ":" + errMsg.message + "\n" + errMsg.stack);
|
||||
},
|
||||
beforeSend:
|
||||
function (jqXHR, settings) {
|
||||
pasport_select_button.attr('hidden', true);
|
||||
pasport_list.empty();
|
||||
},
|
||||
success: function (date) {
|
||||
if (date === undefined || date.name === undefined || date.time === undefined) {
|
||||
pasport_list.append('<option>Ошибка</option>');
|
||||
return;
|
||||
}
|
||||
if (date.name === null || date.name.length === 0) {
|
||||
pasport_list.append('<option>Плавок нет</option>');
|
||||
return;
|
||||
}
|
||||
for (var i = 0; i < date.name.length; i++)
|
||||
pasport_list.append('<option value="' + date.time[i] + '-' + date.name[i] + '">' + date.name[i] + '</option>');
|
||||
if (name != undefined)
|
||||
$('#pasport_list option[value=' + name + ']').prop('selected', true);
|
||||
pasport_select_button.removeAttr('hidden');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
pasport_select_button.click(
|
||||
function () {
|
||||
func_pasport_select_button(
|
||||
pasport_date_list.val(),
|
||||
pasport_list.find(':selected').val()
|
||||
);
|
||||
}
|
||||
)
|
||||
async function func_pasport_select_button(data, name) {
|
||||
var res_load = await pasport_load(data, name);
|
||||
pasport_fill_label();
|
||||
pasport_show_lable();
|
||||
if (!res_load)
|
||||
return;
|
||||
pasport_fill_date();
|
||||
pasport_fill_info();
|
||||
pasport_show_date();
|
||||
pasport_show_info();
|
||||
show_menu();
|
||||
}
|
||||
|
||||
vdp_select_button.click(
|
||||
function () {
|
||||
func_vdp_select_button(
|
||||
vdp_select.find(':selected').val(),
|
||||
vdp_date_start.val(),
|
||||
vdp_time_start.val(),
|
||||
vdp_date_end.val(),
|
||||
vdp_time_end.val()
|
||||
);
|
||||
}
|
||||
)
|
||||
function func_vdp_select_button(vdp, ds, ts, de, te) {
|
||||
pasport_hide_all();
|
||||
hide_menu();
|
||||
|
||||
var d_s = ds.split('-');
|
||||
var t_s = ts.split(':');
|
||||
var d_e = de.split('-');
|
||||
var t_e = te.split(':');
|
||||
var s_d_s = new Date(d_s[0], d_s[1], d_s[2], t_s[0], t_s[1], t_s[2]);
|
||||
var s_d_e = new Date(d_e[0], d_e[1], d_e[2], t_e[0], t_e[1], t_e[2]);
|
||||
if (s_d_s >= s_d_e) {
|
||||
alert('Неверно указаны даты.');
|
||||
return;
|
||||
}
|
||||
|
||||
pasport_custom_set(
|
||||
vdp,
|
||||
d_s[0] + '.' + d_s[1] + '.' + d_s[2] + ' ' + ts,
|
||||
d_e[0] + '.' + d_e[1] + '.' + d_e[2] + ' ' + te
|
||||
);
|
||||
pasport_fill_label();
|
||||
pasport_fill_date();
|
||||
pasport_show_lable();
|
||||
pasport_show_date();
|
||||
show_menu();
|
||||
}
|
104
Site/js/menu.js
Normal file
104
Site/js/menu.js
Normal file
@@ -0,0 +1,104 @@
|
||||
var menu_pasport_button = $('#menu_pasport_button');
|
||||
var menu_analog_button = $('#menu_analog_button');
|
||||
var menu_descret_button = $('#menu_descret_button');
|
||||
var menu_tech_cycle_button = $('#menu_tech_cycle_button');
|
||||
var menu_protect_button = $('#menu_protect_button');
|
||||
|
||||
menu_pasport_button.click(
|
||||
function () {
|
||||
create_redirect(0);
|
||||
}
|
||||
);
|
||||
menu_analog_button.click(
|
||||
function () {
|
||||
create_redirect(1);
|
||||
}
|
||||
);
|
||||
menu_descret_button.click(
|
||||
function () {
|
||||
create_redirect(2);
|
||||
}
|
||||
);
|
||||
menu_tech_cycle_button.click(
|
||||
function () {
|
||||
create_redirect(3);
|
||||
}
|
||||
);
|
||||
menu_protect_button.click(
|
||||
function () {
|
||||
create_redirect(4);
|
||||
}
|
||||
);
|
||||
|
||||
function create_redirect(id) {
|
||||
var url = 'https://' + document.URL.split("/")[2];
|
||||
if (id === undefined || id == 0) {
|
||||
url += '/index.html';
|
||||
} else if (id == 1) {
|
||||
url += '/analog.html';
|
||||
} else if (id == 2) {
|
||||
url += '/discret.html';
|
||||
} else if (id == 3) {
|
||||
url += '/tech_cycle.html';
|
||||
} else if (id == 4) {
|
||||
url += '/protect.html';
|
||||
}
|
||||
urlSP = new URL(url);
|
||||
if (
|
||||
pasport_data.hasOwnProperty('search_date') &&
|
||||
pasport_data.hasOwnProperty('search_name')
|
||||
) {
|
||||
urlSP.searchParams.set('pasport_date', pasport_data.search_date);
|
||||
urlSP.searchParams.set('pasport_name', pasport_data.search_name);
|
||||
} else {
|
||||
urlSP.searchParams.set('vdp', pasport_data.numVDP);
|
||||
urlSP.searchParams.set('dstart', pasport_data.dStart);
|
||||
urlSP.searchParams.set('dend', pasport_data.dEnd);
|
||||
}
|
||||
document.location.href = urlSP;
|
||||
}
|
||||
|
||||
async function get_url_params() {
|
||||
var url = new URL(document.URL);
|
||||
var url_pasport_date = url.searchParams.get('pasport_date');
|
||||
var url_pasport_name = url.searchParams.get('pasport_name');
|
||||
if (
|
||||
url_pasport_date != null &&
|
||||
url_pasport_name != null
|
||||
) {
|
||||
return await pasport_load(url_pasport_date, url_pasport_name);
|
||||
}
|
||||
var url_vdp = url.searchParams.get('vdp');
|
||||
var url_dstart = url.searchParams.get('dstart');
|
||||
var url_dend = url.searchParams.get('dend');
|
||||
if (
|
||||
url_vdp != null &&
|
||||
url_dstart != null &&
|
||||
url_dend != null
|
||||
)
|
||||
{
|
||||
pasport_custom_set(
|
||||
url_vdp,
|
||||
url_dstart,
|
||||
url_dend
|
||||
);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
var load_line = $('#load_line');
|
||||
function show_load() {
|
||||
load_line.removeAttr('hidden');
|
||||
}
|
||||
function hide_load() {
|
||||
load_line.attr('hidden', true);
|
||||
}
|
||||
|
||||
var manipulate_buttons = $('#manipulate_buttons');
|
||||
function show_menu() {
|
||||
manipulate_buttons.removeAttr('hidden');
|
||||
}
|
||||
function hide_menu() {
|
||||
manipulate_buttons.attr('hidden', true);
|
||||
}
|
@@ -1 +0,0 @@
|
||||
|
193
Site/js/protect.js
Normal file
193
Site/js/protect.js
Normal file
@@ -0,0 +1,193 @@
|
||||
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;
|
||||
}
|
||||
}
|
111
Site/js/tech_cycle.js
Normal file
111
Site/js/tech_cycle.js
Normal file
@@ -0,0 +1,111 @@
|
||||
var tech_cycle_table = $('#tech_cycle_table');
|
||||
var data_tech_cycle = null;
|
||||
var params_tech_cycle_name = null;
|
||||
var params_tech_cycle_color = null;
|
||||
|
||||
|
||||
//Первая загрузка страницы
|
||||
$(document).ready(
|
||||
async function () {
|
||||
var flag_pasport_load = await get_url_params();
|
||||
pasport_fill_label();
|
||||
pasport_show_lable();
|
||||
if (!flag_pasport_load)
|
||||
return;
|
||||
show_menu();
|
||||
if (!pasport_fill_date())
|
||||
return;
|
||||
pasport_show_date();
|
||||
|
||||
var tc_data = load_data_tech_cycle();
|
||||
var tc_name = load_params_tech_cycle_name();
|
||||
var tc_color = load_params_tech_cycle_color();
|
||||
await Promise.all([tc_data, tc_name, tc_color]);
|
||||
if (tc_data)
|
||||
fill_table_tech_cycle();
|
||||
}
|
||||
);
|
||||
|
||||
async function load_data_tech_cycle() {
|
||||
try {
|
||||
var res = await $.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/date/gettechcycle',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({
|
||||
"vdp": pasport_data.numVDP,
|
||||
"start": pasport_data.dStart,
|
||||
"end": pasport_data.dEnd
|
||||
})
|
||||
});
|
||||
data_tech_cycle = res.techCycle;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
data_tech_cycle = null;
|
||||
alert("Ошибка загрузки тех. цикла");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function load_params_tech_cycle_name() {
|
||||
try {
|
||||
var res = await $.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/params/gettechcyclename',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({})
|
||||
});
|
||||
params_tech_cycle_name = res.name;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
params_tech_cycle_name = null;
|
||||
alert("Ошибка загрузки имен тех. цикла");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function load_params_tech_cycle_color() {
|
||||
try {
|
||||
var res = await $.ajax({
|
||||
type: "POST",
|
||||
url: 'https://vsmpo.mbucb.ru/api/params/gettechcyclecolor',
|
||||
contentType: "application/json; charset=utf-8",
|
||||
dataType: "json",
|
||||
data: JSON.stringify({})
|
||||
});
|
||||
params_tech_cycle_color = res.color;
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
params_tech_cycle_color = null;
|
||||
alert("Ошибка загрузки цветов тех. цикла");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function fill_table_tech_cycle() {
|
||||
for (var i = 0; i < data_tech_cycle.length; i++) {
|
||||
var color = params_tech_cycle_color != null ?
|
||||
params_tech_cycle_color.find(item => item.index == data_tech_cycle[i].index) :
|
||||
'#ffffff';
|
||||
color = color != undefined ? color.color : '#ffffff';
|
||||
|
||||
var name = params_tech_cycle_name != null ?
|
||||
params_tech_cycle_name.find(item => item.index == data_tech_cycle[i].index) :
|
||||
'Технологический цикл №' + data_tech_cycle[i].index;
|
||||
name = name != undefined ?
|
||||
name = name.name :
|
||||
'Технологический цикл №' + data_tech_cycle[i].index;
|
||||
tech_cycle_table.find('tbody').append(
|
||||
'<tr style="background-color : ' + color + '20;">' +
|
||||
'<td>' + (i + 1) +
|
||||
'</td>' +
|
||||
'<td>' + data_tech_cycle[i].start +
|
||||
'</td>' +
|
||||
'<td>' + name +
|
||||
'</td>' +
|
||||
'</tr>');
|
||||
}
|
||||
}
|
1740
Site/lib/canvasjs.min.js
vendored
1740
Site/lib/canvasjs.min.js
vendored
File diff suppressed because it is too large
Load Diff
118
Site/protect.html
Normal file
118
Site/protect.html
Normal file
@@ -0,0 +1,118 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta charset="utf-8" />
|
||||
<title>ВДП</title>
|
||||
<link rel="stylesheet" href="./lib/Bootstrap/css/bootstrap.css">
|
||||
<link rel="stylesheet" href="./lib/Font-Awesome/css/fontawesome-all.css" />
|
||||
<link rel="stylesheet" href="./css/MainSau.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="row align-items-center justify-content-center">
|
||||
<div class="col text-center pt-2">
|
||||
<h3>Защиты</h3>
|
||||
</div>
|
||||
</header>
|
||||
<!--Меню выбра-->
|
||||
<div class="row border-top" id="manipulate_buttons" hidden>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_pasport_button" type="button">
|
||||
Паспорта
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_analog_button" type="button">
|
||||
Аналоги
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_descret_button" type="button">
|
||||
Дискреты
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_tech_cycle_button" type="button">
|
||||
Технологический цикл
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary disabled" id="menu_protect_button" type="button">
|
||||
Защиты
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--Голова паспорта-->
|
||||
<div class="row border-top" id="pasport_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Паспорт</h5>
|
||||
</div>
|
||||
</div>
|
||||
<!--Заданные параметры печи и даты-->
|
||||
<div class="row" id="pasport_date" hidden>
|
||||
<div class="col-auto">
|
||||
<button class="btn btn-primary" data-toggle="modal" data-target="#filter_modal" type="button">
|
||||
Фильтр
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Печь № <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время начала: <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время конца: <span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-bottom pb-1" id="protect_table">
|
||||
<div class="col-12" style="overflow : auto; max-height : 600px">
|
||||
<table class="table table-active">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>№</th>
|
||||
<th>Индекс</th>
|
||||
<th>Время начала</th>
|
||||
<th>Название</th>
|
||||
<th>Состояние</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="background-color: #ffffff">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="filter_modal" tabindex="-1" role="dialog" aria-labelledby="filter_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Выберите элементы для отображения</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="filter_table">
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
|
||||
<button type="button" class="btn btn-primary" id="change_filter">Снять все</button>
|
||||
<button type="button" class="btn btn-primary" id="aply_filter" data-dismiss="modal">Применить фильтр</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="./lib/JQuery/jquery-3.3.1.js"></script>
|
||||
<script src="./lib/Popper/umd/popper.js"></script>
|
||||
<script src="./lib/Bootstrap/js/bootstrap.bundle.js"></script>
|
||||
|
||||
<script src="./js/pasport.js"></script>
|
||||
<script src="./js/menu.js"></script>
|
||||
<script src="./js/protect.js"></script>
|
||||
</body>
|
||||
</html>
|
90
Site/tech_cycle.html
Normal file
90
Site/tech_cycle.html
Normal file
@@ -0,0 +1,90 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta charset="utf-8" />
|
||||
<title>ВДП</title>
|
||||
<link rel="stylesheet" href="./lib/Bootstrap/css/bootstrap.css">
|
||||
<link rel="stylesheet" href="./lib/Font-Awesome/css/fontawesome-all.css" />
|
||||
<link rel="stylesheet" href="./css/MainSau.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="row align-items-center justify-content-center">
|
||||
<div class="col text-center pt-2">
|
||||
<h3>Технологический цикл</h3>
|
||||
</div>
|
||||
</header>
|
||||
<!--Меню выбра-->
|
||||
<div class="row border-top" id="manipulate_buttons" hidden>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_pasport_button" type="button">
|
||||
Паспорта
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_analog_button" type="button">
|
||||
Аналоги
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_descret_button" type="button">
|
||||
Дискреты
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary disabled" id="menu_tech_cycle_button" type="button">
|
||||
Технологический цикл
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-auto pt-1 pb-1">
|
||||
<button class="btn btn-primary" id="menu_protect_button" type="button">
|
||||
Защиты
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--Голова паспорта-->
|
||||
<div class="row border-top" id="pasport_label" hidden>
|
||||
<div class="col-12 text-center">
|
||||
<h5>Паспорт</h5>
|
||||
</div>
|
||||
</div>
|
||||
<!--Заданные параметры печи и даты-->
|
||||
<div class="row" id="pasport_date" hidden>
|
||||
<div class="col-auto">
|
||||
Печь № <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время начала: <span></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
Время конца: <span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row border-bottom pb-1" id="tech_cycle_table">
|
||||
<div class="col-12" style="overflow : auto; max-height : 600px">
|
||||
<table class="table table-active">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>№</th>
|
||||
<th>Время начала</th>
|
||||
<th>Операция</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="background-color: #ffffff">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="./lib/JQuery/jquery-3.3.1.js"></script>
|
||||
<script src="./lib/Popper/umd/popper.js"></script>
|
||||
<script src="./lib/Bootstrap/js/bootstrap.bundle.js"></script>
|
||||
|
||||
<script src="./js/pasport.js"></script>
|
||||
<script src="./js/menu.js"></script>
|
||||
<script src="./js/tech_cycle.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user