locations.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. <?php
  2. //echo "<h3>Локации</h3>";
  3. ?>
  4. <!--
  5. <div style="display:block; float:left;margin:0px; width: 500px;">
  6. <input type='button' id='add_loc_dialog' value='Создать'>
  7. </div>
  8. <div id="result"></div>
  9. <div id="cont" style="display:none; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  10. <p style="margin-bottom: 0">Создать новую локацию<br>
  11. <form method='post' action='' id="ajax_form">
  12. <div id="cp_desc" style="color: green"></div>
  13. <p>
  14. <h4>Название</h4>
  15. <input id="loc_name" class="form-input content__main__form__goal" type="text" value=""><br>
  16. <h4>Описание</h4>
  17. <input id="loc_desc" class="form-input content__main__form__goal" type="text" value=""><br>
  18. <input type='button' id='add_location' value='Создать'>
  19. <input type='button' id='close' value='Закрыть'>
  20. </p>
  21. </form>
  22. </p>
  23. </div>
  24. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  25. <p style="margin-bottom: 0"><b>Сотрудники</b><br>
  26. <div id="location_users"></div>
  27. </p>
  28. </div>
  29. <canvas id="canvas" style="margin: 20px" width="500" height="600"></canvas>
  30. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  31. <p style="margin-bottom: 0"><b>Маяки</b><br>
  32. <div id="location_beacons"></div>
  33. </p>
  34. </div>
  35. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; padding: 15px">
  36. <p style="margin-bottom: 0">Локации<br>
  37. <div id="location_div"></div>
  38. <input type='button' id='del_loc' value='Удалить'>
  39. </p>
  40. </div>
  41. -->
  42. <?php
  43. echo "<h3>Локации</h3>";
  44. if ( isset($new) && $new == 1 ){
  45. $check = can_upload($_FILES['file']);
  46. if($check === true){
  47. $locationsEntity = \app\models\entity\Locations::findOne($depo_loc);
  48. $fileName = make_upload($_FILES['file']);
  49. $locationsEntity->img = $fileName;
  50. //var_dump($fileName);
  51. //var_dump($locationsEntity->img);
  52. $sdf = $locationsEntity->save();
  53. //var_dump($sdf);
  54. $form_resp = "<strong>Файл успешно загружен!</strong>";
  55. } else {
  56. $form_resp = "<strong>$check</strong>";
  57. }
  58. }
  59. ?>
  60. <div style="display:block; float:left;margin:0px; width: 500px;">
  61. <input type='button' id='add_loc_dialog' value='Создать'>
  62. </div>
  63. <div id="result"></div>
  64. <div id="cont" style="display:none; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  65. <p style="margin-bottom: 0">Создать новую локацию<br>
  66. <form method='post' action='' id="ajax_form">
  67. <div id="cp_desc" style="color: green"></div>
  68. <p>
  69. <h4>Название</h4>
  70. <input id="loc_name" class="form-input content__main__form__goal" type="text" value=""><br>
  71. <h4>Описание</h4>
  72. <input id="loc_desc" class="form-input content__main__form__goal" type="text" value=""><br>
  73. <input type='button' id='add_location' value='Создать'>
  74. <input type='button' id='close' value='Закрыть'>
  75. </p>
  76. </form>
  77. </p>
  78. </div>
  79. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  80. <p style="margin-bottom: 0"><b>Сотрудники</b><br>
  81. <div id="location_users"></div>
  82. </p>
  83. </div>
  84. <canvas id="canvas" style="margin: 20px" width="500" height="600"></canvas>
  85. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  86. <p style="margin-bottom: 0"><b>Маяки</b><br>
  87. <div id="location_beacons"></div>
  88. </p>
  89. </div>
  90. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  91. <p style="margin-bottom: 0">Локации<br>
  92. <div id="location_div"></div>
  93. <input type='button' id='del_loc' value='Удалить'>
  94. </p>
  95. </div>
  96. <?php $entityLocations = \app\models\entity\Locations::find()->all();?>
  97. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  98. <p style="margin-bottom: 0">Загрузить фото локации<br><br>
  99. <?php echo ( isset($form_resp) && null != $form_resp) ? '<p style="margin-bottom: 0">' . $form_resp . '<br><br>': '' ; ?>
  100. <form id="add_photo_depo" action="index.php?act=locations" method="post" enctype="multipart/form-data">
  101. <select name="depo_loc" class="form-input content__main__form__series" style="width: 400px" >
  102. <option value="0"><Выберите локацию из списка></option>
  103. <? foreach($entityLocations as $item):?>
  104. <option value="<?php echo $item->id;?>"><?php echo $item->name;?></option>
  105. <? endforeach;?>
  106. </select>
  107. <br>
  108. <input type="file" name="file"><br>
  109. <input type='hidden' name='new' value='1'>
  110. <input type='submit' new='1' value='Загрузить'>
  111. </form>
  112. </p>
  113. </div>
  114. <div id="" style="display:block; float:left;border: solid; width: 500px; border-width: 1px; border-color: #9cb2c4; border-radius: 15px; margin:20px; margin-right:550px; padding: 15px">
  115. <div style="float:left;">
  116. <?php $entityAccounts = \app\models\entity\Accounts::find()->all();?>
  117. <select id="users_position_loc" class="select_positions">
  118. <option value="0"><Выберите сотрудника></option>
  119. <? foreach($entityAccounts as $item):?>
  120. <option value="<? echo $item->id;?>"><? echo $item->name;?></option>
  121. <? endforeach;?>
  122. </select>
  123. <div id = 'tasks_сont' style="display: none;">
  124. <select id="tasks_select" class="select_positions">
  125. <option value="0"><Выберите Задачу></option>
  126. </select>
  127. </div>
  128. <!--<select id="time_position_loc" class="select_positions">
  129. <option value="300">5 мин</option>
  130. <option value="600">10 мин</option>
  131. <option value="1800">30 мин</option>
  132. <option value="3200">1 час</option>
  133. <option value="432000">1 день</option>
  134. <option value="604800">1 неделя</option>
  135. <option value="2419200">1 месяц</option>
  136. </select>-->
  137. <?php $entityLocations = \app\models\entity\Locations::find()->all();?>
  138. <select id="depo_position_loc" class="select_positions">
  139. <option value="0">Локации</option>
  140. <? foreach($entityLocations as $item):?>
  141. <option value="<? echo $item->id; ?>"><? echo $item->name; ?></option>
  142. <? endforeach;?>
  143. </select>
  144. Начало <input id="date_timepicker_start" value="start" type="text" class="select_positions">
  145. Конец <input id="date_timepicker_end" value="stop" type="text" class="select_positions"><br>
  146. <input type="button" id="button_beacons_draw" value="Отрисовать карту" >
  147. <input type="button" id="button_beacons_clear" value="Очистить карту" >
  148. <input type="button" id="button_beacons_add" name="chk" value="Маяки" >
  149. <input type="button" id="button_zones_add" name="chk" value="Нарисовать зоны" data="0">
  150. <form id="add_beacon_depo" action="index.php?act=locations" method="post" enctype="multipart/form-data" style="display:none">
  151. <p id="beacon_errors"></p>
  152. <p id="beacon_success"></p>
  153. <label for="chk2">uid маяка</label>
  154. <input id="uid_beacon" type="text" name="uid" placeholder="Введите uid маяка" size="50"><br>
  155. <input type='hidden' id="toggle_val_add" name='new' value='0'>
  156. <input type='submit' id="upload_button_beacon" new='1' value='Сохранить'>
  157. </form>
  158. <div id="add_zone_depo" style="display:none" >
  159. Отметить зоны
  160. </div>
  161. <input type="button" class="btn btn-success" id="open" value="О сотруднике" >
  162. <div id="dialog-form" title="Create new user">
  163. <p class="validateTips">Заведите название зоны</p>
  164. <form>
  165. <fieldset>
  166. <label for="name">Название</label>
  167. <input type="text" name="zone" id="name" value="" class="text ui-widget-content ui-corner-all">
  168. <!-- Allow form submission with keyboard without duplicating the dialog button -->
  169. <input type="submit" tabindex="-1" style="position:absolute; top:-1000px">
  170. </fieldset>
  171. </form>
  172. </div>
  173. <button id="create-user">Сохранить зону</button>
  174. <script>
  175. $( "#open" ).on( "click", function() {
  176. $( "#dialog" ).dialog();
  177. });
  178. $( function() {
  179. var dialog, form,
  180. // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
  181. emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
  182. name = $( "#name" ),
  183. email = $( "#email" ),
  184. password = $( "#password" ),
  185. allFields = $( [] ).add( name ).add( email ).add( password ),
  186. tips = $( ".validateTips" );
  187. function updateTips( t ) {
  188. tips
  189. .text( t )
  190. .addClass( "ui-state-highlight" );
  191. setTimeout(function() {
  192. tips.removeClass( "ui-state-highlight", 1500 );
  193. }, 500 );
  194. }
  195. function checkLength( o, n, min, max ) {
  196. if ( o.val().length > max || o.val().length < min ) {
  197. o.addClass( "ui-state-error" );
  198. updateTips( "Length of " + n + " must be between " +
  199. min + " and " + max + "." );
  200. return false;
  201. } else {
  202. return true;
  203. }
  204. }
  205. function checkRegexp( o, regexp, n ) {
  206. if ( !( regexp.test( o.val() ) ) ) {
  207. o.addClass( "ui-state-error" );
  208. updateTips( n );
  209. return false;
  210. } else {
  211. return true;
  212. }
  213. }
  214. function addUser() {
  215. var valid = true;
  216. allFields.removeClass( "ui-state-error" );
  217. valid = valid && checkLength( name, "username", 3, 80 );
  218. valid = valid && checkRegexp( name, /^[a-z]([0-9a-z_\s])+$/i, "Username may consist of a-z, 0-9, underscores, spaces and must begin with a letter." );
  219. if ( valid ) {
  220. $( "#users tbody" ).append( "<tr>" +
  221. "<td>" + name.val() + "</td>" +
  222. "</tr>" );
  223. depo_zones = {depo_name: name.val(),depo_zone:points_zone_all,depo_num:document.getElementById('depo_position_loc').value};
  224. sendAjax('location_users_', depo_zones, null);
  225. dialog.dialog( "close" )
  226. }
  227. return valid;
  228. }
  229. dialog = $( "#dialog-form" ).dialog({
  230. autoOpen: false,
  231. height: 400,
  232. width: 365,
  233. modal: true,
  234. buttons: {
  235. "Сохранить": addUser,
  236. Отмена: function() {
  237. dialog.dialog( "close" );
  238. }
  239. },
  240. close: function() {
  241. form[ 0 ].reset();
  242. allFields.removeClass( "ui-state-error" );
  243. }
  244. });
  245. form = dialog.find( "form" ).on( "submit", function( event ) {
  246. event.preventDefault();
  247. addUser();
  248. });
  249. $( "#create-user" ).button().on( "click", function() {
  250. dialog.dialog( "open" );
  251. });
  252. } );
  253. </script>
  254. <script>
  255. jQuery(function(){
  256. jQuery('#date_timepicker_start').datetimepicker({
  257. format:'Y-m-d H:i:s',
  258. lang:'ru',
  259. onShow:function( ct ){
  260. this.setOptions({
  261. maxDate:jQuery('#date_timepicker_end').val()?jQuery('#date_timepicker_end').val():false
  262. })
  263. },
  264. });
  265. jQuery('#date_timepicker_end').datetimepicker({
  266. format:'Y-m-d H:i:s',
  267. lang:'ru',
  268. onShow:function( ct ){
  269. this.setOptions({
  270. // minDate:jQuery('#date_timepicker_start').val()?jQuery('#date_timepicker_start').val():false
  271. })
  272. },
  273. });
  274. });
  275. </script>
  276. </div>
  277. <canvas id="canvasa" style="margin: 20px;background-image: url(images/depo_img/<?php // ?>)" width="400" height="500" class="ballon_test"></canvas>
  278. </div>
  279. <div id="dialog" style="display:none">
  280. <p>Имя: Петр Петров</p>
  281. <p>Логин: Login</p>
  282. </div>
  283. <?
  284. function make_upload($file){
  285. // формируем уникальное имя картинки: случайное число и name
  286. $name = mt_rand(0, 10000) . $file['name'];
  287. copy($file['tmp_name'], 'images/depo_img/' . $name);
  288. return $name;
  289. }
  290. function can_upload($file){
  291. // если имя пустое, значит файл не выбран
  292. if($file['name'] == '')
  293. return 'Вы не выбрали файл.';
  294. /* если размер файла 0, значит его не пропустили настройки
  295. сервера из-за того, что он слишком большой */
  296. if($file['size'] == 0)
  297. return 'Файл слишком большой.';
  298. // разбиваем имя файла по точке и получаем массив
  299. $getMime = explode('.', $file['name']);
  300. // нас интересует последний элемент массива - расширение
  301. $mime = strtolower(end($getMime));
  302. // объявим массив допустимых расширений
  303. $types = array('jpg', 'png', 'gif', 'bmp', 'jpeg');
  304. // если расширение не входит в список допустимых - return
  305. if(!in_array($mime, $types))
  306. return 'Недопустимый тип файла.';
  307. return true;
  308. }
  309. ?>