Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:1513:643.mgul.15131-01_12_01 [2019/06/20 06:11] deimozzz Каркас |
doc:1513:643.mgul.15131-01_12_01 [2019/06/20 11:30] (текущий) deimozzz аннотация |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ===== Архив, содержащий программный код и структуру каталогов веб-приложения. ===== | + | ====== АННОТАЦИЯ ====== |
+ | В данном программном документе приведёно текст программы системы сбора, обработки и хранения результатов измерения (далее система), предназначенной для сохранения и предоставления любых наборов переданных данных, а в частности – с учебных устройств, разработанных на кафедре ПМиВТ МФ МГТУ им. Н. Э. Баумана. | ||
- | {{ :doc:1513:server.rar |}} | + | ====== ПРОГРАММНЫЙ КОД ВЕБ-ПРИЛОЖЕНИЯ ====== |
- | ====== Корневой каталог веб-приложения ====== | + | |
+ | ===== Корневой каталог веб-приложения ===== | ||
<hidden conn.php><file php conn.php> | <hidden conn.php><file php conn.php> | ||
Строка 250: | Строка 252: | ||
---- | ---- | ||
- | ====== Каталог export ====== | + | ===== Каталог export ===== |
{{ :doc:1513:standart_book.xlsx |}} | {{ :doc:1513:standart_book.xlsx |}} | ||
- | ====== Каталог core ====== | + | ===== Каталог core ===== |
<hidden altread.php><file php altread.php> | <hidden altread.php><file php altread.php> | ||
<? | <? | ||
Строка 791: | Строка 793: | ||
- | ====== Каталог admin ====== | + | ===== Каталог admin ===== |
- | <hidden ====Каталог edit====> | + | |
- | </hidden> | + | |
- | ---- | + | |
<hidden admin.php><file php admin.php> | <hidden admin.php><file php admin.php> | ||
+ | <? | ||
+ | session_start (); | ||
+ | if (!$_SESSION['level'] || $_SESSION['level'] < 1) die ( '<center><a href=/admin/index.php>Пройдите авторизацию!</a><center>' ); | ||
+ | ?> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="utf-8"> | ||
+ | <title> Центральная панель управления </title> | ||
+ | <style type="text/css"> | ||
+ | A.admlink {color: red;} | ||
+ | A.alllink { color: green;} | ||
+ | #cen{ | ||
+ | text-align: center; | ||
+ | } | ||
+ | .botexit{text-align: right; width: 280px; padding: 10px;} | ||
+ | .all{border: solid 1px; text-align: center; width: 280px; padding: 10px;} | ||
+ | .father{width: 500px; border-style: dotted; border-width: 2px; | ||
+ | border-radius: 125px 125px 15px 125px;} | ||
+ | .linf {border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover {box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center><p><h3> Панель управления </h3></p></center> | ||
+ | <center> | ||
+ | <p> | ||
+ | <div class="father"> | ||
+ | <p> | ||
+ | <div class="all"> | ||
+ | |||
+ | <a href="/admin/edit/export.php" class="admlink">SQL запросы</a><div id="cen">(только для администраторов)</div><hr> | ||
+ | <a href="/admin/edit/operator.php" class="admlink">Редактировать персонал </a><div id="cen"> (требуется доступ "moderator")</div><hr> | ||
+ | <a href="/admin/edit/pribor.php" class="admlink">Редактировать приборы</a><div id="cen"> (требуется доступ "moderator")</div><hr> | ||
+ | <a href="/admin/edit/object.php" class="admlink">Редактировать объекты</a><div id="cen"> (требуется доступ "moderator")</div><hr> | ||
+ | <a href="/admin/edit/sensors.php" class="admlink">Редактировать данные датчиков</a><div id="cen">(требуется доступ "support")</div><hr> | ||
+ | <a href="/admin/edit/calib.php" class="admlink">Внести данные калибровки</a><div id="cen">(требуется доступ "support")</div><hr> | ||
+ | </div> | ||
+ | </p> | ||
+ | <p> | ||
+ | <div class="all"> | ||
+ | <a href="/admin/edit/makeurchoise.html" class="alllink">Внесение новых данных</a><hr> | ||
+ | </div> | ||
+ | </p> | ||
+ | <br> | ||
+ | <div class="botexit"> | ||
+ | <a href="admin_logout.php" class="linf">Выйти?</a> | ||
+ | </div> | ||
+ | </div> | ||
+ | </p> | ||
+ | </center> | ||
+ | </body> | ||
+ | </html> | ||
</file></hidden> | </file></hidden> | ||
---- | ---- | ||
<hidden admin_logout.php><file php admin_logout.php> | <hidden admin_logout.php><file php admin_logout.php> | ||
+ | <? | ||
+ | session_start (); | ||
+ | |||
+ | if (!$_SESSION['level']) die ( '<center><p>Error!: Empty page</p></center>' ); | ||
+ | |||
+ | session_destroy (); | ||
+ | ?> | ||
+ | |||
+ | <html> | ||
+ | <head> | ||
+ | <title>Панель управления</title> | ||
+ | <style type= "text/css">#wrap{width: 100%;height: 100%;}.loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;}.loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;}</style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center> | ||
+ | <table cellpadding= "0" cellspacing= "0" id= "wrap"><tr><td align= "center"> | ||
+ | <table cellpadding= "0" cellspacing= "0"><tr><td class= "loginbox1" align= "center">Выход выполнен</td></tr> | ||
+ | <tr><td class= "loginbox2" align= "center"><a href=/admin/index.php>Вернуться</a></td></tr> | ||
+ | </table></td></tr> | ||
+ | </table> | ||
+ | </center> | ||
+ | </body> | ||
+ | </html> | ||
</file></hidden> | </file></hidden> | ||
---- | ---- | ||
<hidden config.php><file php config.php> | <hidden config.php><file php config.php> | ||
+ | <?php | ||
+ | <?php | ||
+ | $buffer = array(); | ||
+ | $buffer['login'] = ['password'=>'pass','level'=>255]; | ||
+ | $buffer['anotherLogin'] = ['password'=>'pass','level'=>255]; | ||
+ | // От 1 до 255. 0 - не авторизован, 1 - низший уровень. | ||
+ | ?> | ||
</file></hidden> | </file></hidden> | ||
---- | ---- | ||
<hidden index.php><file php index.php> | <hidden index.php><file php index.php> | ||
+ | <? | ||
+ | session_start (); | ||
+ | if(!empty($_SESSION['level'])) | ||
+ | { | ||
+ | if($_SESSION['level'] > 1) | ||
+ | { | ||
+ | ?> | ||
+ | <html><head> | ||
+ | <title>Панель управления</title> | ||
+ | <style type= text/css>#wrap{width: 100%;height: 100%;} | ||
+ | .loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;} | ||
+ | .loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} | ||
+ | .loginnow{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center> | ||
+ | <table cellpadding=0 cellspacing= «0» id= «wrap»><tr><td align=center> | ||
+ | <table cellpadding=0 cellspacing= «0»> | ||
+ | <tr><td class=loginbox1 align=center>Вход выполнен</td></tr> | ||
+ | <tr><td class=loginbox2 align=center> | ||
+ | <a href=admin.php>Перейти к панели управления</a></td></tr> | ||
+ | </table> | ||
+ | </td></tr> | ||
+ | </table> | ||
+ | </center> | ||
+ | </body> | ||
+ | </html> | ||
+ | <? | ||
+ | exit; | ||
+ | } | ||
+ | } | ||
+ | $_SESSION['level'] = 0; | ||
+ | include ('config.php'); | ||
+ | function not_logged_in () | ||
+ | { | ||
+ | echo ' | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>Вход в панель управления</title> | ||
+ | <style type=text/css> | ||
+ | #wrap{width: 100%;height: 100%;} | ||
+ | #wraptd{padding: 20px;} | ||
+ | .loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;} | ||
+ | .loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} | ||
+ | .loginbox2 input{width: 200px;margin: 3px 0;border-color: #888;color: #777;} | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center> | ||
+ | <table cellpadding=0 cellspacing=0 id=wrap><tr><td align=center id=wraptd> | ||
+ | <table cellpadding=0 cellspacing=0> | ||
+ | <tr><td class=loginbox1 align=center>Вход в панель</td></tr> | ||
+ | <tr><td class=loginbox2 align=center><form action=index.php method=post><input type=text name=login value=Логин onclick=this.value=""><br><input type="password" name=password value=Пароль onclick=this.value=""><br><input type=submit value=Войти></form></td></tr> | ||
+ | </table></td></tr> | ||
+ | </table> | ||
+ | </center> | ||
+ | </body> | ||
+ | </html>'; | ||
+ | |||
+ | exit; | ||
+ | } | ||
+ | if (!$_POST) not_logged_in (); | ||
+ | if (!$_POST['login']) not_logged_in (); | ||
+ | if (!$_POST['password']) not_logged_in (); | ||
+ | if($buffer[$_POST['login']]) | ||
+ | { | ||
+ | if($buffer[$_POST['login']]['password'] == $_POST['password']) | ||
+ | { | ||
+ | $_SESSION['level'] = $buffer[$_POST['login']]['level']; | ||
+ | $loggednow = $_POST['login']; | ||
+ | } | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | not_logged_in(); | ||
+ | } | ||
+ | ?> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title> | ||
+ | Панель управления | ||
+ | </title> | ||
+ | <style type=text/css>#wrap{width: 100%;height: 100%;} | ||
+ | .loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;} | ||
+ | .loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} | ||
+ | .loginnow{width: 300px;padding: 4px;border: 1px solid #777;} | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center> | ||
+ | <table cellpadding=0 cellspacing=0 id=wrap><tr> | ||
+ | <td align=center> | ||
+ | <table cellpadding=0 cellspacing=0> | ||
+ | <tr> | ||
+ | <td class=loginbox1 align=center>Вход выполнен</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td align=center class=loginnow>Вы зашли как<? echo ' "'.$loggednow.'"';?></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td class=loginbox2 align=center><a href=admin.php>Перейти к панели управления</a></td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | </center> | ||
+ | </body> | ||
+ | </html> | ||
</file></hidden> | </file></hidden> | ||
+ | ---- | ||
+ | <hidden ====Каталог edit====> | ||
+ | |||
+ | <hidden calib.php><file php calib.php> | ||
+ | <? | ||
+ | session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 2) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | require_once '../../core/baseinfo.php'; | ||
+ | /* скрипт внесения новых данных калибровки */ | ||
+ | if ((isset($_POST['uid']))&&(isset($_POST['sensid']))&&(isset($_POST['n']))) | ||
+ | { | ||
+ | $str = '{"n":'.$_POST['n']; | ||
+ | if($_POST['n']>0) | ||
+ | { | ||
+ | $str .= ',"ai":['; | ||
+ | for($i=0;$i<$_POST['n']+1;$i++) | ||
+ | { | ||
+ | $str .= $_POST['ai'.$i].','; | ||
+ | } | ||
+ | $str .= ']}'; | ||
+ | $str = str_replace(',]}', ']}', $str); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $str .= '}'; | ||
+ | } | ||
+ | |||
+ | $alias = '('; | ||
+ | $unit = $_POST['uid']; | ||
+ | $sensor = $_POST['sensid']; | ||
+ | $arr = explode("_",$sensor); | ||
+ | $buff = array(); | ||
+ | for($i=0; $i<count($arr); ++$i) | ||
+ | { | ||
+ | for($j=0; $j < $i+1; ++$j) | ||
+ | { | ||
+ | $buff[$i][] = $arr[$j]; | ||
+ | } | ||
+ | } | ||
+ | $buff = array_reverse($buff); | ||
+ | foreach ($buff as $key => $value) | ||
+ | { | ||
+ | $alias .= "'".implode('_', $value)."',"; | ||
+ | } | ||
+ | $alias .= ')'; | ||
+ | $alias = str_replace(',)', ')', $alias); | ||
+ | /* если адрес для датчика устройства имеется в таблице адресов, то внести и в таблицу калибровки */ | ||
+ | $check_exist = $mysqli->query("SELECT `adr` FROM `Production`.`sensors_adr` WHERE `sensor` IN $str AND `unit_id` = $unit ORDER BY `id` DESC LIMIT 1"); | ||
+ | if($check_exist->num_rows) | ||
+ | { | ||
+ | $adr = mysqli_fetch_array($check_exist, MYSQLI_ASSOC); | ||
+ | $adr = $adr['adr']; | ||
+ | $mysqli->query("INSERT INTO `multiplier` (`unit`,`sensor`,`timestamp`,`ratio`,`adr`) VALUES ($unit,'$sensor',NOW(),'$str','$adr')"); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $mysqli->query("INSERT INTO `multiplier` (`unit`,`sensor`,`timestamp`,`ratio`) VALUES ($unit,'$sensor',NOW(),'$str')"); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | |||
+ | <style> | ||
+ | td { | ||
+ | text-indent: 5px; | ||
+ | border-collapse: collapse; | ||
+ | color: #500; | ||
+ | border-top: 0px solid transparent; | ||
+ | padding: 2px; | ||
+ | text-align:left; | ||
+ | } | ||
+ | tr{text-indent: 1px;} | ||
+ | |||
+ | input[id=newinp] | ||
+ | { | ||
+ | -moz-appearance: textfield; | ||
+ | width: 4em; | ||
+ | } | ||
+ | input[id=newinp]::-webkit-inner-spin-button | ||
+ | { | ||
+ | display: none; | ||
+ | } | ||
+ | |||
+ | </style> | ||
+ | |||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="utf-8"> | ||
+ | <title>Внесение данных калибровки</title> | ||
+ | <script src="http://code.jquery.com/jquery-latest.js"></script> | ||
+ | <style type="text/css"> | ||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | </style> | ||
+ | </head> | ||
+ | <body onload="elemt();"> | ||
+ | <a href="/admin/admin.php" class="linf">Назад</a> | ||
+ | <center><div style="width: 600px; text-align: left;"> | ||
+ | |||
+ | <p><form id="ratform" onsubmit="alert('Данные успешно приняты!');" method="POST"> | ||
+ | <div id="unitdiv"><p>Выберите устройство: <br><select id="unitid" name="uid" required> | ||
+ | <option value="">---</option> | ||
+ | <? | ||
+ | $result = $mysqli->query("SELECT `uNum`,`uName`,`Serial` FROM `units_list`"); | ||
+ | while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) | ||
+ | { | ||
+ | echo "<option value=".$row['uNum'].">".$row['uName']."(".$row['Serial'].") </option>"; | ||
+ | } | ||
+ | ?> | ||
+ | </select></p></div> | ||
+ | <div id="sensordiv"> | ||
+ | <p>Выберите название сенсора и калибровочный параметр<br> | ||
+ | <select id="sensorid" name="sensid" required> | ||
+ | <option value=""> Выберите прибор </option> | ||
+ | </select></p></div> | ||
+ | <div id="ndiv"> | ||
+ | <p> Укажите n<br> | ||
+ | <select id="nid" name="n" onchange="elemt();"> | ||
+ | <option value=0>n=0</option> | ||
+ | <option value=1>n=1</option> | ||
+ | <option value=2>n=2</option> | ||
+ | <option value=3>n=3</option> | ||
+ | <option value=4>n=4</option> | ||
+ | <option value=5>n=5</option> | ||
+ | <option value=6>n=6</option> | ||
+ | </select></p> | ||
+ | </div> | ||
+ | <p><div id="calibdiv"></div></p> | ||
+ | <p><form id="butt"><input type="submit" id="buttonok" value="Готово"></form></p> | ||
+ | </form></p> | ||
+ | |||
+ | |||
+ | </body> | ||
+ | </html> | ||
+ | |||
+ | <script type="text/javascript"> | ||
+ | /* создание форм в зависимости от степени точности калибровки */ | ||
+ | function elemt() | ||
+ | { | ||
+ | var i = Number(document.getElementById('nid').value) + Number(1); | ||
+ | $("#calibdiv").empty(); | ||
+ | if(i != 1) | ||
+ | { | ||
+ | var cnt; | ||
+ | for(cnt = 0; cnt < i; ++cnt) | ||
+ | { | ||
+ | var inp = document.createElement('input'); | ||
+ | inp.type = 'number'; | ||
+ | inp.step= '0.0001'; | ||
+ | inp.name='ai'+cnt; | ||
+ | inp.id = 'newinp'; | ||
+ | inp.required = true; | ||
+ | inp.placeholder='a'+cnt; | ||
+ | calibdiv.appendChild(inp); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | $(document).ready(function () { | ||
+ | $('#unitid').change(function () { | ||
+ | var unitid = $(this).val(); | ||
+ | if (unitid == '') | ||
+ | { | ||
+ | $('#sensorid').html('<option value=""> Выберите прибор </option>'); | ||
+ | return(false); | ||
+ | } | ||
+ | /* загрузка списка датчиков прибора */ | ||
+ | $('#sensorid').html('<option value="">загрузка...</option>'); | ||
+ | var url = '../../core/backend.php'; | ||
+ | $.get(url,"unitnow=" + unitid,function (result) { | ||
+ | if(result.back == 'error') | ||
+ | { | ||
+ | $('#sensorid').html('<option value=""> Нет данных </option>'); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | var options = '<option value=""> Выберите датчик </option>'; | ||
+ | $(result.sens).each(function() { | ||
+ | options += '<option value="' + $(this).attr('title') + '">' + $(this).attr('title') + '</option>'; | ||
+ | }); | ||
+ | $('#sensorid').html(options); | ||
+ | //$('#sensorid').attr('disabled', false); | ||
+ | } | ||
+ | },"json" | ||
+ | ); | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | |||
+ | </script> | ||
+ | |||
+ | <? | ||
+ | /* список уже внесённых данных калибровки */ | ||
+ | $gg = $mysqli->query("SELECT mu.sensor,mu.timestamp,mu.ratio,mu.adr,CONCAT(li.uname,'(',li.Serial,')') as unit FROM multiplier as mu INNER JOIN (SELECT uNum,uName as uname,Serial from units_list) as li ON li.uNum = mu.unit ORDER BY unit,sensor"); | ||
+ | echo '<details><summary>Список данных колибровки</summary><table>'; | ||
+ | while ($grow = mysqli_fetch_array($gg,MYSQLI_ASSOC)) | ||
+ | { | ||
+ | echo '<tr><td>'.$grow['unit'].'</td><td>'.$grow['sensor'].'</td><td>'.$grow['timestamp'].'</td><td>'.$grow['ratio'].'</td><td>'.$grow['adr'].'</tr>'; | ||
+ | } | ||
+ | echo '</table></details></div></center>'; | ||
+ | ?> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | <hidden excel.php><file php excel.php> | ||
+ | <? session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 1) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | require_once '../../core/baseinfo.php'; | ||
+ | $result = $mysqli->query("SELECT uNum, uName, Serial FROM units_list"); | ||
+ | ?> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="utf-8"> | ||
+ | <title>Выгрузка из excel</title> | ||
+ | | ||
+ | <script src="../../core/lib/xlsx.full.min.js"></script> | ||
+ | <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> | ||
+ | <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.7.7/xlsx.core.min.js"></script> | ||
+ | <script src="http://code.jquery.com/jquery-latest.js"></script> | ||
+ | <style> | ||
+ | .bl { display: none;} | ||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | .exclink{ | ||
+ | border: 1px outset #333; /* Рамка */ | ||
+ | border-radius: 15px; | ||
+ | background:#eaeaea; | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; | ||
+ | } | ||
+ | .exclink:hover{ | ||
+ | | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); | ||
+ | color: red; | ||
+ | } | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center><div style="width: 600px; text-align: left; display: inline-block; vertical-align: middle;"> | ||
+ | <form id="myForm"> | ||
+ | Выберите устройство:<br> | ||
+ | <select id="klop"> | ||
+ | <option value=""> --- </option> | ||
+ | <? | ||
+ | while ($row = mysqli_fetch_array($result)) | ||
+ | { | ||
+ | echo "<option value=".$row['uNum'].">"; | ||
+ | echo $row['uName'].'('.$row['Serial'].')'; | ||
+ | echo "</option>"; | ||
+ | } | ||
+ | ?> | ||
+ | </select> | ||
+ | </form> | ||
+ | <div id="toShow" class="variations_button bl"> | ||
+ | <input accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12" type="file" id="excel" name="files"/> | ||
+ | <input type="submit" value="Готово" id="done"/> | ||
+ | </div> | ||
+ | </div></center> | ||
+ | <center><div style="position: fixed; bottom: 5%;"><a href="../../export/Standart book.xlsx" class="exclink">Excel файл со списком</a><p style="font-size: 12px"><? | ||
+ | $filename = '../../export/Standart book.xlsx'; | ||
+ | if (file_exists($filename)) | ||
+ | { | ||
+ | echo "Обновлено: " . date ("d M y", filemtime($filename)); | ||
+ | } ?></p></center></div> | ||
+ | |||
+ | <script> | ||
+ | |||
+ | function debug(inp) | ||
+ | { | ||
+ | $.ajax({ | ||
+ | url:"../../core/jsonadd.php", | ||
+ | dataType: 'json', | ||
+ | type: 'POST', | ||
+ | data: {fromtable: '[{"AKey":"'+document.getElementById('klop').value+'"}]'+JSON.stringify(inp) } , | ||
+ | async: true}); | ||
+ | } | ||
+ | /* чтение файла эксель и формирование с помощью библиотеки JSON */ | ||
+ | function handleFile(e) | ||
+ | { | ||
+ | var files = e.files; | ||
+ | var i, f; | ||
+ | var sus = ''; | ||
+ | | ||
+ | //Loop through files | ||
+ | for (i = 0, f = files[i]; i != files.length; ++i) | ||
+ | { | ||
+ | var reader = new FileReader(); | ||
+ | var name = f.name; | ||
+ | reader.onload = function (e) | ||
+ | { | ||
+ | var data = e.target.result; | ||
+ | var workbook = XLSX.read(data, { type: 'binary' }); | ||
+ | var sheet_name_list = workbook.SheetNames; | ||
+ | sheet_name_list.forEach(function (y) | ||
+ | { | ||
+ | var result = ''; | ||
+ | /* iterate through sheets */ | ||
+ | //Convert the cell value to Json | ||
+ | var roa = XLSX.utils.sheet_to_json(workbook.Sheets[y]); | ||
+ | if (roa.length > 0) | ||
+ | { | ||
+ | result = roa; | ||
+ | debug(result); | ||
+ | } | ||
+ | |||
+ | }); | ||
+ | }; | ||
+ | reader.readAsArrayBuffer(f); | ||
+ | } | ||
+ | alert("Данные успешно обработаны!"); | ||
+ | } | ||
+ | //Change event to dropdownlist | ||
+ | document.getElementById('done').addEventListener('click', updateSize, false); | ||
+ | |||
+ | // preprocessing input data | ||
+ | function updateSize() | ||
+ | { | ||
+ | var doc = document.getElementById("excel"); | ||
+ | var listoftype = ['xlsx','xlsm']; // array of allowable formats | ||
+ | if(($.inArray((doc.files[0].name.split('.')).pop(), listoftype)) == -1) | ||
+ | { | ||
+ | alert('Выбран файл не поддерживаемого формата!\r\nПоддерживаемые форматы: '+listoftype.join(', ')); | ||
+ | } | ||
+ | else // | ||
+ | { | ||
+ | var resultAction = confirm("Проверьте внесённые данные: \r\n Устройство: "+ $("#klop option:selected").text() + "\r\n Файл: "+doc.files[0].name); | ||
+ | if(resultAction) | ||
+ | { | ||
+ | handleFile(doc); | ||
+ | } | ||
+ | } | ||
+ | doc.value = ""; | ||
+ | } | ||
+ | |||
+ | /* show file-form if UNIT selected | ||
+ | else hiden | ||
+ | */ | ||
+ | var sel = document.getElementById('klop'); | ||
+ | sel.addEventListener('change', function (event) { | ||
+ | if(this.value) | ||
+ | { | ||
+ | document.getElementById('toShow').classList.remove('bl'); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | document.getElementById('toShow').classList.add('bl'); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | </script> | ||
+ | |||
+ | </body> | ||
+ | </html> | ||
+ | |||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | <hidden export.php><file php export.php> | ||
+ | <? session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 255) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | $mysqli = mysqli_connect('address','ReadOnlyLogin', 'pass','DB') or die ("Connection error: ". mysqli_error($mysqli)); | ||
+ | ?> | ||
+ | <style type="text/css"> | ||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | </style> | ||
+ | <a href="/admin/admin.php" class="linf">Назад</a> | ||
+ | <center> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Выполнить SQL запрос<br> </label> | ||
+ | <textarea name="query" type="text" rows="20" style="width: 900px; height: 400px; border: 1px solid #008"/></textarea><br> | ||
+ | <input type="submit" name="gotadd" value="Выполнить и скачать"/><br> | ||
+ | </form></center> | ||
+ | <? | ||
+ | if(isset($_POST['query'])) | ||
+ | { | ||
+ | $path = $_SERVER['DOCUMENT_ROOT'].'/export/file.csv'; | ||
+ | unlink($path); | ||
+ | $inject = strip_tags($_POST['query']); | ||
+ | if ($inject{strlen($inject)-1} == ';') { $inject = substr($inject,0,-1); } | ||
+ | $result = $mysqli->query("$inject INTO OUTFILE '$path' CHARACTER SET cp1251 FIELDS TERMINATED BY ';'LINES TERMINATED BY '\r\n'") or die ("Query error: ". mysqli_error($mysqli)); | ||
+ | if (!mysqli_error()) | ||
+ | { | ||
+ | echo '<br><center><a href="http://188.35.161.31/export/file.csv">Скачать</a></center>'; | ||
+ | } | ||
+ | mysqli_close($mysqli); | ||
+ | } | ||
+ | ?> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | <hidden index.php><file php index.php> | ||
+ | <?php | ||
+ | session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | header('Location:/admin/admin.php'); | ||
+ | exit; | ||
+ | ?> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | <hidden makeurchoise.html><file html makeurchoise.html> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="utf-8"> | ||
+ | <title>Выбор способа внесения данных</title> | ||
+ | <script src="http://code.jquery.com/jquery-latest.js"></script> | ||
+ | <style type="text/css"> | ||
+ | .linf | ||
+ | { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover | ||
+ | { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | .container | ||
+ | { | ||
+ | width: 90%; | ||
+ | } | ||
+ | img | ||
+ | { | ||
+ | max-width: 45%; | ||
+ | display: inline-block; | ||
+ | height: auto; | ||
+ | } | ||
+ | @media screen and (max-width: 1000px) | ||
+ | { | ||
+ | img | ||
+ | { | ||
+ | max-width: 100%; | ||
+ | } | ||
+ | } | ||
+ | .image | ||
+ | { | ||
+ | opacity: 0.7; | ||
+ | } | ||
+ | .image:not(:hover) | ||
+ | { | ||
+ | transition: 0.5s; | ||
+ | } | ||
+ | .image:hover | ||
+ | { | ||
+ | |||
+ | transition: 1s; | ||
+ | -webkit-transform: translateX(30px) translateY(-30px); | ||
+ | transform: translateX(30px) translateY(-30px); | ||
+ | opacity: 1; | ||
+ | } | ||
+ | .excel:hover | ||
+ | { | ||
+ | -webkit-box-shadow:-30px 30px 50px 25px #6bbd6c ; | ||
+ | -moz-box-shadow:-30px 30px 50px 25px #6bbd6c ; | ||
+ | box-shadow:-30px 30px 50px 25px #6bbd6c ; | ||
+ | } | ||
+ | .simple:hover | ||
+ | { | ||
+ | -webkit-box-shadow:-30px 30px 50px 25px #404040 ; | ||
+ | -moz-box-shadow:-30px 30px 50px 25px #404040 ; | ||
+ | box-shadow:-30px 30px 50px 25px #404040 ; | ||
+ | } | ||
+ | html, body, iframe { height: 100%; overflow: hidden;} | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | |||
+ | <a href="/admin/admin.php" class="linf">Назад</a> | ||
+ | <center><p> | ||
+ | <div id="choise" class="container"> | ||
+ | <img class="excel image" id="excel" src="../../core/img/excel.png" width="1025" height="550"> | ||
+ | <img class="simple image" id="simple" src="../../core/img/form.png" width="1025" height="550"> | ||
+ | </div> | ||
+ | <div id="frame" style="width: 100%; height: auto;" hidden> | ||
+ | |||
+ | </div></p> | ||
+ | </center> | ||
+ | </body> | ||
+ | </html> | ||
+ | <script type="text/javascript"> | ||
+ | /* Создание фрейма с выбранной страницей */ | ||
+ | $('img').on('click',function() | ||
+ | { | ||
+ | var page = $(this).prop('id'); | ||
+ | $('#frame').html('<iframe allowtransparency="true" allowfullscreen allowscriptaccess="always" frameborder="0" scrolling="yes" style="width: 100%; height: 90vh;" src="' + page + '.php"></iframe>'); | ||
+ | $('#frame').removeAttr('hidden'); | ||
+ | $('#choise').attr('hidden','true'); | ||
+ | }); | ||
+ | </script> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | <hidden object.php><file php object.php> | ||
+ | <?php session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 127) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | require_once '../../core/baseinfo.php'; | ||
+ | ?> | ||
+ | |||
+ | <style> | ||
+ | td { | ||
+ | text-indent: 0px; | ||
+ | width:200px; | ||
+ | border-collapse: collapse; | ||
+ | color: #500; | ||
+ | border-top: 0px solid transparent; | ||
+ | padding: 2px; | ||
+ | text-align:center; | ||
+ | } | ||
+ | tr{text-indent: 1px;} | ||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | </style> | ||
+ | <a href="/admin/admin.php" class="linf">Назад</a> | ||
+ | <center> | ||
+ | <div style="display: inline-block; margin-left: 0px; vertical-align: middle;"> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Добавить новый объект<br> </label> | ||
+ | <input name="addobj" type="text" placeholder="Введите наименование"/><br> | ||
+ | <input type="submit" name="gotadd" value="Добавить"/><br> | ||
+ | </form> | ||
+ | </div> | ||
+ | |||
+ | <div style="display: inline-block; margin-left: 45px; vertical-align: middle;"> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Удалить объект из базы<br> </label> | ||
+ | <input name="delobj" type="text" placeholder="Введите ID"/><br> | ||
+ | <input type="submit" name="gotdel" value="Удалить"/><br> | ||
+ | </form> | ||
+ | </div> | ||
+ | </center> | ||
+ | |||
+ | <? | ||
+ | /* обработка удаления и внесения объектов */ | ||
+ | if(isset($_POST['addobj']) && ($_POST['addobj']!=='')) | ||
+ | { | ||
+ | $name=strip_tags($_POST['addobj']); | ||
+ | $addyet = $mysqli->query("INSERT INTO `Objects` (`NameOb`) VALUES ('$name')"); | ||
+ | header("Refresh:0"); | ||
+ | } | ||
+ | elseif(isset($_POST['delobj']) && ($_POST['delobj']!=='')) | ||
+ | { | ||
+ | $delid=strip_tags($_POST['delobj']); | ||
+ | $delyet = $mysqli->query("UPDATE `Objects` SET `NameOb`='DELETED' WHERE NumOb=$delid"); | ||
+ | header("Refresh:0"); | ||
+ | } | ||
+ | else{} | ||
+ | |||
+ | Echo "<center>Список объектов:<br>"; | ||
+ | |||
+ | $result = $mysqli->query("SELECT * FROM `Objects` WHERE `NameOb`!='DELETED'"); | ||
+ | Echo '<table><tr><td><P><center> ID </center></td><td><center> Object </center></P></td></tr>'; | ||
+ | do{ | ||
+ | Echo '<tr>'; | ||
+ | Echo '<td>'.$myrow['NumOb'].'</td>'; | ||
+ | Echo '<td>'.$myrow['NameOb'].'</td>'; | ||
+ | Echo '</tr>'; | ||
+ | }while ($myrow = mysqli_fetch_array($result)); | ||
+ | Echo '</table></center><br>'; | ||
+ | ?> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | <hidden operator.php><file php operator.php> | ||
+ | <? session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 127) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | require_once '../../core/baseinfo.php'; | ||
+ | ?> | ||
+ | |||
+ | <style> | ||
+ | td { | ||
+ | text-indent: 0px; | ||
+ | width:200px; | ||
+ | border-collapse: collapse; | ||
+ | color: #500; | ||
+ | border-top: 0px solid transparent; | ||
+ | padding: 2px; | ||
+ | text-align:center; | ||
+ | } | ||
+ | tr{text-indent: 1px;} | ||
+ | |||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | </style> | ||
+ | <a href="/admin/admin.php" class="linf">Назад</a> | ||
+ | <center> | ||
+ | <div style="display: inline-block; margin-left: 0px; vertical-align: middle;"> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Добавить нового оператора<br> </label> | ||
+ | <input name="addoperator" type="text" placeholder="Введите имя"/><br> | ||
+ | <input type="submit" name="gotadd" value="Добавить"/><br> | ||
+ | </form> | ||
+ | </div> | ||
+ | |||
+ | <div style="display: inline-block; margin-left: 50px; vertical-align: middle;"> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Удалить оператора из базы<br> </label> | ||
+ | <input name="deloperator" type="text" placeholder="Введите ID"/><br> | ||
+ | <input type="submit" name="gotdel" value="Удалить"/><br> | ||
+ | </form> | ||
+ | </div> | ||
+ | </center> | ||
+ | |||
+ | <? | ||
+ | /* Обработчик добавление и удаления операторов */ | ||
+ | if(isset($_POST['addoperator']) && ($_POST['addoperator']!=='')) | ||
+ | { | ||
+ | $name=strip_tags($_POST['addoperator']); | ||
+ | $addyet = $mysqli->query("INSERT INTO `OPR_list` (`Name`) VALUES ('$name')"); | ||
+ | header("Refresh:0"); | ||
+ | } | ||
+ | elseif(isset($_POST['deloperator']) && ($_POST['deloperator']!=='')) | ||
+ | { | ||
+ | $delid=strip_tags($_POST['deloperator']); | ||
+ | $delyet = $mysqli->query("UPDATE `OPR_list` SET `Name`='REMOVED' WHERE N=$delid"); | ||
+ | header("Refresh:0"); | ||
+ | } | ||
+ | else{} | ||
+ | |||
+ | Echo "<center>Список операторов:<br>"; | ||
+ | |||
+ | $result = $mysqli->query("SELECT * FROM `OPR_list` WHERE `Name`!='REMOVED'"); | ||
+ | Echo '<table><tr><td><P><center> ID </center></td><td><center> Name </center></P></td></tr>'; | ||
+ | do{ | ||
+ | Echo '<tr>'; | ||
+ | Echo '<td>'.$myrow['N'].'</td>'; | ||
+ | Echo '<td>'.$myrow['Name'].'</td>'; | ||
+ | Echo '</tr>'; | ||
+ | }while ($myrow = mysqli_fetch_array($result)); | ||
+ | Echo '</table></center><br>'; | ||
+ | ?> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | <hidden pribor.php><file php pribor.php> | ||
+ | <?php session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 127) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | require_once '../../core/baseinfo.php'; | ||
+ | ?> | ||
+ | <style type="text/css"> | ||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | </style> | ||
+ | <a href="/admin/admin.php" class="linf">Назад</a> | ||
+ | <center> | ||
+ | <p> | ||
+ | <div style="display: inline-block; margin-left: 0px; vertical-align: middle;"> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Добавить новый прибор<br> </label> | ||
+ | <input name="uname" type="text" placeholder="Введите наименование" required/><br> | ||
+ | <input name="userial" type="text" placeholder="Введите серийный ключ" required/><br> | ||
+ | <input name="uakey" type="text" placeholder="Введите ключ доступа" required/><br> | ||
+ | <input name="ux" type="text" placeholder="Введите координату X" required/><br> | ||
+ | <input name="uy" type="text" placeholder="Введите координату Y" required/><br> | ||
+ | <input name="uidobj" type="text" placeholder="Введите ID объекта" required/><br> | ||
+ | <input name="uidop" type="text" placeholder="Введите ID оператора" required/><br> | ||
+ | <input type="submit" name="gotadd" value="Добавить"/><br> | ||
+ | </form> | ||
+ | </div> | ||
+ | <div style="display: inline-block; margin-left: 45px; vertical-align: middle;"> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Обновить данные<br> </label> | ||
+ | <input name="updid" type="text" placeholder="Введите ID прибора" required/><br> | ||
+ | <input name="updname" type="text" placeholder="Введите новое имя"/><br> | ||
+ | <input name="updx" type="text" placeholder="Введите новую координату X"/><br> | ||
+ | <input name="updy" type="text" placeholder="Введите новую координату Y"/><br> | ||
+ | <input name="updobj" type="text" placeholder="Введите ID нового объекта"/><br> | ||
+ | <input name="updop" type="text" placeholder="Введите ID нового оператора"/><br> | ||
+ | <input type="submit" name="gotdel" value="Обновить"/><br> | ||
+ | </form> | ||
+ | </div> | ||
+ | <div style="display: inline-block; margin-left: 45px; vertical-align: middle;"> | ||
+ | <form method="POST" action=""> | ||
+ | <label> Удалить прибор из базы<br> </label> | ||
+ | <input name="udel" type="text" placeholder="Введите ID"/><br> | ||
+ | <input type="submit" name="gotdel" value="Удалить"/><br> | ||
+ | </form> | ||
+ | </div> | ||
+ | </p> | ||
+ | </center> | ||
+ | |||
+ | <? | ||
+ | /* внесение нового устройства */ | ||
+ | if(isset($_POST['uname']) && isset($_POST['userial']) && isset($_POST['uakey']) && isset($_POST['ux']) && isset($_POST['uy']) && isset($_POST['uidobj']) &&(isset($_POST['uidop'])) && ($_POST['uname'] !== '') && ($_POST['userial'] !== '') && ($_POST['uakey'] !== '') && ($_POST['ux'] !== '') && ($_POST['uy']!=='') && ($_POST['uidobj'] !=='') && ($_POST['uidop']!=='')) | ||
+ | { | ||
+ | $name=strip_tags($_POST['uname']); | ||
+ | $serial=strip_tags($_POST['userial']); | ||
+ | $akey=strip_tags($_POST['uakey']); | ||
+ | $x=strip_tags($_POST['ux']); | ||
+ | $y=strip_tags($_POST['uy']); | ||
+ | $idobj=strip_tags($_POST['uidobj']); | ||
+ | $opid=strip_tags($_POST['uidop']); | ||
+ | $addyet = $mysqli->query("INSERT INTO `units_list` (`uName`,`Serial`,`Akey`,`OPid`,`x`,`y`,`IDob`) VALUES ('$name','$serial','$akey','$opid','$x','$y','$idobj')"); | ||
+ | header("Refresh:0"); | ||
+ | } | ||
+ | /* удаление устройства */ | ||
+ | elseif(isset($_POST['udel'])) | ||
+ | { | ||
+ | |||
+ | $delid=strip_tags($_POST['udel']); | ||
+ | $delyet = $mysqli->query("UPDATE `units_list` SET `remove`='1' WHERE uNum=$delid"); | ||
+ | header("Refresh:0"); | ||
+ | } | ||
+ | /* обновление информации о устройстве */ | ||
+ | elseif (isset($_POST['updid']) && isset($_POST['updop']) && isset($_POST['updname']) && isset($_POST['updx']) && isset($_POST['updy']) && isset($_POST['updobj']) && ($_POST['updid'] !== '') && ($_POST['updname'] !== '') && ($_POST['updy'] !== '') && ($_POST['updobj']!=='') && ($_POST['updop']!=='')) | ||
+ | { | ||
+ | $updid=strip_tags($_POST['updid']); | ||
+ | $updname=strip_tags($_POST['updname']); | ||
+ | $updx=strip_tags($_POST['updx']); | ||
+ | $updy=strip_tags($_POST['updy']); | ||
+ | $updobj=strip_tags($_POST['updobj']); | ||
+ | $updop=strip_tags($_POST['updop']); | ||
+ | $addyet = $mysqli->query("UPDATE `units_list` SET `uName`='$updname',`x`='$updx',`y`='$updy',`IDob`='$updobj',`OPid`='$updop' WHERE `uNum`='$updid'"); | ||
+ | header("Refresh:0"); | ||
+ | } | ||
+ | else{} | ||
+ | |||
+ | Echo '<center><div class="absolute">Список приборов:<br>'; | ||
+ | |||
+ | $result = $mysqli->query("SELECT * FROM `units_list`"); | ||
+ | Echo '<center><table><tr><td><P><center> ID </center></td><td><center> Name </center></td><td><center> Serial </center></td><td><center> Access Key </center></td><td><center> Operator </center></td><td><center> Operator ID </center></td><td><center> X </center></td><td><center> Y </center></td><td><center> Object </center></td><td><center>Object ID</center></td><td><center>Removed</center></td></p></tr>'; | ||
+ | do{ | ||
+ | $objectt = $myrow['IDob']; | ||
+ | $operators = $myrow['OPid']; | ||
+ | $operator = $mysqli->query("SELECT `Name` FROM `OPR_list` WHERE `N`='$operators'"); | ||
+ | $object = $mysqli->query("SELECT `NameOb` FROM `Objects` WHERE `NumOb`='$objectt'"); | ||
+ | $objectt = mysqli_fetch_array($object); | ||
+ | $operators = mysqli_fetch_array($operator); | ||
+ | Echo '<tr>'; | ||
+ | Echo '<td><center>'.$myrow['uNum'].'</center></td>'; | ||
+ | Echo '<td><center>'.$myrow['uName'].'</center></td>'; | ||
+ | Echo '<td><center>'.$myrow['Serial'].'</center></td>'; | ||
+ | Echo '<td><center>'.$myrow['AKey'].'</center></td>'; | ||
+ | Echo '<td><center>'.$operators['Name'].'</center></td>'; | ||
+ | Echo '<td><center>'.$myrow['OPid'].'</td>'; | ||
+ | Echo '<td><center>'.$myrow['x'].'</td>'; | ||
+ | Echo '<td><center>'.$myrow['y'].'</td>'; | ||
+ | Echo '<td><center>'.$objectt['NameOb'].'</td>'; | ||
+ | Echo '<td><center>'.$myrow['IDob'].'</td>'; | ||
+ | Echo '<td><center>'.$myrow['remove'].'</td>'; | ||
+ | Echo '</tr>'; | ||
+ | }while ($myrow = mysqli_fetch_array($result)); | ||
+ | Echo "</table></center><br></div></center>"; | ||
+ | ?> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | <hidden sensors.php><file php sensors.php> | ||
+ | <? | ||
+ | session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 2) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | |||
+ | require_once '../../core/baseinfo.php'; | ||
+ | $result = $mysqli->query("SELECT `uNum`,`uName`,`Serial` FROM `Production`.`units_list` WHERE `remove` != 1"); | ||
+ | |||
+ | ?> | ||
+ | |||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="utf-8"> | ||
+ | <script src="http://code.jquery.com/jquery-latest.js"></script> | ||
+ | <title> Add Sensor Page </title> | ||
+ | <style type="text/css"> | ||
+ | th{ | ||
+ | text-align:center; | ||
+ | } | ||
+ | |||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | input[type=number] | ||
+ | { | ||
+ | -moz-appearance: textfield; | ||
+ | width: 4em; | ||
+ | } | ||
+ | input[type=number]::-webkit-inner-spin-button | ||
+ | { | ||
+ | display: none; | ||
+ | } | ||
+ | |||
+ | .notvalid | ||
+ | { | ||
+ | background-color:rgb(245, 211, 174); | ||
+ | } | ||
+ | |||
+ | #insert_form:focus-within input:valid { | ||
+ | border-color: green; | ||
+ | } | ||
+ | |||
+ | #insert_form:focus-within input:invalid { | ||
+ | border-color: red; | ||
+ | } | ||
+ | #insert_form:focus-within select:valid { | ||
+ | border-color: green; | ||
+ | } | ||
+ | |||
+ | #insert_form:focus-within select:invalid { | ||
+ | border-color: red; | ||
+ | } | ||
+ | |||
+ | #update_form:focus-within .changed | ||
+ | { | ||
+ | border-color:#aaf2e9; | ||
+ | } | ||
+ | |||
+ | |||
+ | input:read-only { | ||
+ | background:none repeat 0 0 rgb(145, 145, 147); | ||
+ | } | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <a href="/admin/admin.php" class="linf">Назад</a> | ||
+ | |||
+ | <!-- HEADER DIV --> | ||
+ | <center><div style="text-align: left; display: table; | ||
+ | border-top:4px double #000000; | ||
+ | border-right:4px double #000000; | ||
+ | border-bottom:4px double #000000; | ||
+ | border-left:4px double #000000;"> | ||
+ | |||
+ | <!-- ADD NEW DIV --> | ||
+ | <div style=" | ||
+ | text-align: left; | ||
+ | padding: 5px;"> | ||
+ | |||
+ | <form id="insert_form"> | ||
+ | <p> | ||
+ | <b>Устройство</b> | ||
+ | <select id="unitid" class="new" name="unit_id" required> | ||
+ | <option value="">---</option> | ||
+ | <? | ||
+ | $list = ''; | ||
+ | while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) | ||
+ | { | ||
+ | $list .= "<option value=".$row['uNum'].">".$row['uName']."(".$row['Serial'].") </option>"; | ||
+ | } | ||
+ | echo $list; | ||
+ | unset($result); | ||
+ | ?> | ||
+ | </select></p> | ||
+ | <div id="input_frame"> | ||
+ | <table><tr><th>Название</th><th>Адрес сенсора</th><th>Краткое название</th><th>Заметка</th></tr> | ||
+ | <tr> | ||
+ | <td><input type="text" autocomplete="off" class="new" name="sensor" id="sensor_fullname" required></td> | ||
+ | <td><input type="text" autocomplete="off" class="new" name="adr" id="fill_adr"></td> | ||
+ | <td><input type="text" autocomplete="off" class="new" name="sensor_name" id="sensor_shortname" required></td> | ||
+ | <td><input type="text" autocomplete="off" class="new" name="note" id="fill_note"></td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | </div> | ||
+ | <br> | ||
+ | <input type="button" onclick="insert_value()" name="insert_button" value="Добавить"><div id="text"> | ||
+ | <br> | ||
+ | </div> | ||
+ | </form> | ||
+ | </div> | ||
+ | |||
+ | <div style=" | ||
+ | text-align: left; | ||
+ | border-top:2px dashed #000000; padding: 5px;"> | ||
+ | <form id="update_form"> | ||
+ | |||
+ | <? | ||
+ | $actual_data = $mysqli->query("SELECT `id`,`unit_id`,`sensor`,`adr`,`timestamp`,`sensor_name`,`note` FROM `Production`.`sensors_adr`"); | ||
+ | if($actual_data->num_rows) | ||
+ | { | ||
+ | echo '<table><tr><th>ID</th><th>ID Прибора</th><th>Название</th><th>Адрес</th><th>Дата-время</th><th>Краткое название</th><th>Заметка</th></tr>'; | ||
+ | while($actual = mysqli_fetch_array($actual_data, MYSQLI_ASSOC)) | ||
+ | { | ||
+ | $search = '<option value='.$actual['unit_id'].'>'; | ||
+ | $edit = '<option value='.$actual['unit_id'].' selected>'; | ||
+ | $now = str_replace($search, $edit , $list); | ||
+ | echo '<tr>'; | ||
+ | echo '<td><input type="text" autocomplete="off" class="def" name="ID" readonly id="'.$actual['id'].'" value="'.$actual['id'].'"></td>'; | ||
+ | //echo '<td><input type="number" autocomplete="off" class="def" name="unit_id" id="'.$actual['id'].'" value="'.$actual['unit_id'].'"></td>'; | ||
+ | echo '<td><select class="def" name="unit_id" id="'.$actual['id'].'">'.$now.'</select></td>'; | ||
+ | echo '<td><input type="text" autocomplete="off" class="def" name="sensor" id="'.$actual['id'].'" value="'.$actual['sensor'].'"></td>'; | ||
+ | echo '<td><input type="text" autocomplete="off" class="def" name="adr" id="'.$actual['id'].'" value="'.$actual['adr'].'"></td>'; | ||
+ | echo '<td><input type="text" autocomplete="off" class="def" name="timestamp" readonly id="'.$actual['id'].'" value="'.$actual['timestamp'].'"></td>'; | ||
+ | echo '<td><input type="text" autocomplete="off" class="def" name="sensor_name" id="'.$actual['id'].'" value="'.$actual['sensor_name'].'"></td>'; | ||
+ | echo '<td><input type="text" autocomplete="off" class="def" name="note" id="'.$actual['id'].'" value="'.$actual['note'].'"></td>'; | ||
+ | echo '</tr>'; | ||
+ | } | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | echo '<center><h3>Данных пока нет</h3></center>'; | ||
+ | } | ||
+ | ?> | ||
+ | </table> | ||
+ | <br> | ||
+ | <button type="button" name="update_button" onclick="update_value()">Изменить</button> | ||
+ | <button type="button" name="defualt_value_set" onclick="default_update_value()">Сбросить</button> | ||
+ | <br> | ||
+ | </form> | ||
+ | |||
+ | |||
+ | </div></center> | ||
+ | </body> | ||
+ | </html> | ||
+ | |||
+ | <script type="text/javascript"> | ||
+ | |||
+ | /* Загрузка списка параметров прибора и заполнение форм, если среди параметров есть адрес датчиков */ | ||
+ | var array_of_addr = []; | ||
+ | $('#unitid').on('change', function() | ||
+ | { | ||
+ | $.get("../../core/backend.php","unit_addr_exist=" + $('#unitid').val(), function (back) | ||
+ | { | ||
+ | back = JSON.parse(back); | ||
+ | if(back.error == 'true') | ||
+ | { | ||
+ | $('#sensor_fullname').replaceWith('<input type="text" autocomplete="off" class="new" name="sensor" id="sensor_fullname" required>'); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | var options = '<select class="new" name="sensor" id="sensor_fullname" required><option value=""> --- </option>'; | ||
+ | $(back.data).each(function(){ | ||
+ | options += '<option value="' + $(this).attr('Type') + '">' + $(this).attr('Type') + '</option>'; | ||
+ | array_of_addr[$(this).attr('Type')] = $(this).attr('Val'); | ||
+ | }); | ||
+ | options += '</select>'; | ||
+ | $('#sensor_fullname').replaceWith(options); | ||
+ | $('#sensor_fullname').prop('defaultValue', "").toggleClass('entered',true); | ||
+ | return array_of_addr; | ||
+ | } | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | $('body').on('change','#sensor_fullname', function() | ||
+ | { | ||
+ | $('#fill_adr').val(array_of_addr[$('#sensor_fullname').val()]).toggleClass('entered',true); | ||
+ | }); | ||
+ | |||
+ | /* Нажатие на кнопку */ | ||
+ | function default_update_value() | ||
+ | { | ||
+ | $('#update_form').find('.changed').each(function() | ||
+ | { | ||
+ | this.value = $(this).prop('defaultValue'); | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | function update_value() | ||
+ | { | ||
+ | var data = []; | ||
+ | var id = 0; | ||
+ | var name = ''; | ||
+ | var value = 0; | ||
+ | $('#update_form').find('.changed').each(function() | ||
+ | { | ||
+ | id = this.id; | ||
+ | value = this.value; | ||
+ | name = this.name; | ||
+ | data[data.length] = [id,name,value]; | ||
+ | }); | ||
+ | if(data.lenght > 1) | ||
+ | { | ||
+ | $.post("../../core/backend.php", { update:data }); | ||
+ | alert("Данные обновлены"); | ||
+ | location.reload(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | function insert_value() | ||
+ | { | ||
+ | var data = []; | ||
+ | var name = ''; | ||
+ | var value = 0; | ||
+ | var validate = true; | ||
+ | $('#insert_form').find('[required]').each(function() | ||
+ | { | ||
+ | if(this.value === '') | ||
+ | { | ||
+ | $(this).toggleClass('notvalid',true); | ||
+ | validate = false; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $(this).toggleClass('notvalid',false); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | if(validate) | ||
+ | { | ||
+ | $('#text').empty(); | ||
+ | $('#insert_form').find('.entered').each(function() | ||
+ | { | ||
+ | value = this.value; | ||
+ | name = this.name; | ||
+ | data[data.length] = [name,value]; | ||
+ | }); | ||
+ | |||
+ | $.post("../../core/backend.php", { insert:data }); | ||
+ | alert("Данные внесены"); | ||
+ | location.reload(); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $('#text').html('Исправьте ошибки заполнения'); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | /* изменение класса для изменённых форм */ | ||
+ | |||
+ | $('.new').on('change', function() | ||
+ | { | ||
+ | if($(this).prop('defaultValue') == $(this).val()) | ||
+ | { | ||
+ | $(this).toggleClass('entered',false); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $(this).toggleClass('entered',true); | ||
+ | } | ||
+ | | ||
+ | }); | ||
+ | |||
+ | $('.def').on('change', function() | ||
+ | { | ||
+ | if($(this).prop('defaultValue') == $(this).val()) | ||
+ | { | ||
+ | $(this).toggleClass('changed',false); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $(this).toggleClass('changed',true); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | $('select[class=def]').each(function(index,ele) | ||
+ | { | ||
+ | var origvalue = $(this).val(), | ||
+ | defaultvalue = $(this).prop('defaultValue'); | ||
+ | if(!defaultvalue) { | ||
+ | $(this).prop('defaultValue', origvalue); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | </script> | ||
+ | </file></hidden> | ||
+ | ---- | ||
+ | |||
+ | <hidden simple.php><file php simple.php> | ||
+ | <? | ||
+ | session_start (); | ||
+ | if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); | ||
+ | if($_SESSION['level'] < 1) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); | ||
+ | require_once '../../core/baseinfo.php'; | ||
+ | ?> | ||
+ | |||
+ | <style> | ||
+ | td { | ||
+ | text-indent: 5px; | ||
+ | border-collapse: collapse; | ||
+ | color: #500; | ||
+ | border-top: 0px solid transparent; | ||
+ | padding: 2px; | ||
+ | text-align:left; | ||
+ | } | ||
+ | tr{text-indent: 1px;} | ||
+ | |||
+ | input[id=newinp] | ||
+ | { | ||
+ | -moz-appearance: textfield; | ||
+ | width: 4em; | ||
+ | } | ||
+ | input[id=newinp]::-webkit-inner-spin-button | ||
+ | { | ||
+ | display: none; | ||
+ | } | ||
+ | |||
+ | </style> | ||
+ | |||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="utf-8"> | ||
+ | <title>Внесение замера</title> | ||
+ | <script src="http://code.jquery.com/jquery-latest.js"></script> | ||
+ | <style type="text/css"> | ||
+ | .bl { display: none;} | ||
+ | .linf { | ||
+ | border: 1px solid #333; /* Рамка */ | ||
+ | display: inline-block; | ||
+ | padding: 5px 15px; /* Поля */ | ||
+ | text-decoration: none; /* Убираем подчёркивание */ | ||
+ | color: #000; /* Цвет текста */ | ||
+ | } | ||
+ | .linf:hover { | ||
+ | box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ | ||
+ | background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ | ||
+ | color: #a00; | ||
+ | } | ||
+ | input[type=number] | ||
+ | { | ||
+ | -moz-appearance: textfield; | ||
+ | width: 4em; | ||
+ | } | ||
+ | input[type=number]::-webkit-inner-spin-button | ||
+ | { | ||
+ | display: none; | ||
+ | } | ||
+ | input:valid { | ||
+ | border-color: green; | ||
+ | } | ||
+ | |||
+ | input:invalid { | ||
+ | border-color: red; | ||
+ | } | ||
+ | select:valid { | ||
+ | border-color: green; | ||
+ | } | ||
+ | |||
+ | select:invalid { | ||
+ | border-color: red; | ||
+ | } | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | |||
+ | |||
+ | <center><div style="width: 600px; text-align: left;"> | ||
+ | |||
+ | <div id="unitdiv"> | ||
+ | Выберите устройство: <br> | ||
+ | <select id="unitid" name="uid" required onchange="getparams();"> | ||
+ | <option value="">---</option> | ||
+ | <? | ||
+ | $result = $mysqli->query("SELECT `uNum`,`uName`,`Serial` FROM `units_list`"); | ||
+ | while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) | ||
+ | { | ||
+ | echo "<option value=".$row['uNum'].">".$row['uName']."(".$row['Serial'].") </option>"; | ||
+ | } | ||
+ | ?> | ||
+ | </select> | ||
+ | </div> | ||
+ | <form id="ratform"> | ||
+ | |||
+ | <div id="objdiv" hidden="true"> | ||
+ | <p> | ||
+ | <tr><td>object</td> | ||
+ | <td> | ||
+ | <select name="object" required="true"> | ||
+ | <option value="">---</option> | ||
+ | <? | ||
+ | $result = $mysqli->query("SELECT `NumOb`,`NameOb` FROM `objects`"); | ||
+ | while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) | ||
+ | { | ||
+ | echo "<option value=".$row['NumOb'].">".$row['NameOb']."</option>"; | ||
+ | } | ||
+ | ?> | ||
+ | </select> | ||
+ | </td> | ||
+ | </tr> | ||
+ | </p> | ||
+ | </div> | ||
+ | <div id="textpart" hidden="true"></div> | ||
+ | |||
+ | </form> | ||
+ | <button type="sumbit" hidden="true" id="suc"> Готово </button> | ||
+ | <button type="button" hidden="true" id="res" onclick="reset();"> Сбросить </button> | ||
+ | <div id="baddiv"></div> | ||
+ | |||
+ | |||
+ | </div></center> | ||
+ | </body> | ||
+ | </html> | ||
+ | |||
+ | <script type="text/javascript"> | ||
+ | /* сброс формы */ | ||
+ | function reset() | ||
+ | { | ||
+ | $('#unitid').attr('disabled', false); | ||
+ | $('#baddiv').empty(); | ||
+ | $('#textpart').empty(); | ||
+ | $('select[name="object"]').val(""); | ||
+ | $('#unitid').val(""); | ||
+ | document.getElementById('suc').hidden = true; | ||
+ | document.getElementById('res').hidden = true; | ||
+ | document.getElementById('textpart').hidden = true; | ||
+ | document.getElementById('objdiv').hidden = true; | ||
+ | } | ||
+ | /* форма стандартного набора данных */ | ||
+ | function defpar() | ||
+ | { | ||
+ | $('#baddiv').empty(); | ||
+ | $('#textpart').empty(); | ||
+ | $('select[name="object"]').val(""); | ||
+ | var altoptions = '<tr><td>x</td><td><input type="number" step="0.0001" autocomplete="off" name="x" required value="0"></td></tr>'; | ||
+ | altoptions += '<tr><td>y</td><td><input type="number" step="0.0001" autocomplete="off" required name="y" value="0"></td></tr>'; | ||
+ | altoptions += '<tr><td>temp</td><td><input type="number" step="0.0001" autocomplete="off" required name="temp"></td></tr>'; | ||
+ | altoptions += '<tr><td>humidity</td><td><input type="number" step="0.0001" autocomplete="off" required name="humidity"></td></tr>'; | ||
+ | altoptions += '<tr><td>pressure</td><td><input type="number" step="0.0001" autocomplete="off" required name="pressure"></td></tr>'; | ||
+ | altoptions += '<tr><td>date</td><td><input type="date" min="2019-01-24" required autocomplete="off" name="date"></td></tr>'; | ||
+ | altoptions += '<tr><td>time</td><td><input type="time" autocomplete="off" required name="time"></td></tr>'; | ||
+ | $('#textpart').html(altoptions); | ||
+ | document.getElementById('suc').hidden = false; | ||
+ | document.getElementById('res').hidden = false; | ||
+ | document.getElementById('textpart').hidden = false; | ||
+ | document.getElementById('objdiv').hidden = false; | ||
+ | |||
+ | } | ||
+ | /* создание форм параметров устройства */ | ||
+ | function getparams() | ||
+ | { | ||
+ | var forma = document.getElementById('unitid').value; | ||
+ | if(forma != '') | ||
+ | { | ||
+ | $('#unitid').attr('disabled', true); | ||
+ | var url = '../../core/backend.php'; | ||
+ | $.get(url,"unitnow=" + forma,function (result) { | ||
+ | if(result.back == 'error') | ||
+ | { | ||
+ | $('#baddiv').html('<p><h1> Нет данных </h1></p><p> Внести стандартный набор параметров? </p><p> <button id="yesdef" type="button" onclick="defpar();">Да</button> <button id="nodef" type="button" onclick="reset();">Нет</button></p>'); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | var options = '<tr><td>x</td><td><input type="number" step="0.0001" autocomplete="off" name="x" value="0"></td></tr>'; | ||
+ | options += '<tr><td>y</td><td><input type="number" step="0.0001" autocomplete="off" name="y" value="0"></td></tr>'; | ||
+ | $(result.sens).each(function() | ||
+ | { | ||
+ | if($(this).attr('title') == 'date' || $(this).attr('title') == 'RTC_date') | ||
+ | { | ||
+ | options += '<tr><td>' + $(this).attr('title') + '</td><td><input type="date" min="2019-01-24" autocomplete="off" required name="' + $(this).attr('title') + '"></td></tr>'; | ||
+ | } | ||
+ | else if($(this).attr('title') == 'time' || $(this).attr('title') == 'RTC_time') | ||
+ | { | ||
+ | options += '<tr><td>' + $(this).attr('title') + '</td><td><input type="time" autocomplete="off" required name="' + $(this).attr('title') + '"></td></tr>'; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | options += '<tr><td>' + $(this).attr('title') + '</td><td><input type="number" step="0.0001" autocomplete="off" required name="' + $(this).attr('title') + '"></td></tr>'; | ||
+ | } | ||
+ | }); | ||
+ | $('#textpart').html(options); | ||
+ | document.getElementById('suc').hidden = false; | ||
+ | document.getElementById('res').hidden = false; | ||
+ | document.getElementById('textpart').hidden = false; | ||
+ | document.getElementById('objdiv').hidden = false; | ||
+ | } | ||
+ | },"json" | ||
+ | ); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $('#textpart').empty(); | ||
+ | } | ||
+ | } | ||
+ | /* проверка верности заполнения форм и формирование JSON с передачей скрипту внесения данных */ | ||
+ | $('#suc').on('click', function (form) | ||
+ | { | ||
+ | form.preventDefault(); | ||
+ | var form_box = document.getElementById('ratform'); | ||
+ | var unit = document.getElementById('unitid'); | ||
+ | $('#unitid').attr('disabled', false); | ||
+ | var arr = $(this).prev('form').serializeArray(); | ||
+ | $('#unitid').attr('disabled', true); | ||
+ | var new_obj = {}; | ||
+ | $.each(arr, function(i, obj) | ||
+ | { | ||
+ | if(obj.value != '') | ||
+ | { | ||
+ | new_obj[obj.name] = obj.value; | ||
+ | } | ||
+ | }); | ||
+ | if(form_box.checkValidity() && unit.checkValidity()) | ||
+ | { | ||
+ | $.ajax({ | ||
+ | url:"../../core/jsonadd.php", | ||
+ | dataType: 'json', | ||
+ | type: 'POST', | ||
+ | data: {fromtable: '[{"AKey":"'+unit.value+'"}][' + JSON.stringify(new_obj) + ']' } , | ||
+ | async: true}); | ||
+ | reset(); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | alert('Пожалуйста, заполните все поля корректно.'); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | </script> | ||
+ | |||
+ | |||
+ | </file></hidden> | ||
+ | </hidden> | ||
+ | |||
+ | ====== Архив, содержащий программный код и структуру каталогов веб-приложения. ====== | ||
+ | |||
+ | {{ :doc:1513:server.rar |}} | ||