浏览代码

Merge branch 'Kotenko' of gitgod/geolook into master

Serge 5 年之前
父节点
当前提交
e964bc2bb9
共有 3 个文件被更改,包括 248 次插入64 次删除
  1. 12 8
      app/Http/Controllers/UserController.php
  2. 191 0
      resources/views/calendar.blade.php
  3. 45 56
      resources/views/userdate.blade.php

+ 12 - 8
app/Http/Controllers/UserController.php

@@ -26,19 +26,23 @@ class UserController extends Controller
     }
 
 
- public function action() {
-            $users=User::all();
+    public function action() {
+        $users=User::all();
                  
         return view('allpositions',compact('users'));
     }
-    
-    
 
     public function userdata(User $id, $date) {
       //$dates = [];
-    $dates = $id->locations()->whereDate('created_at', $date)->get();
-    //return $id->locations()->whereDate('created_at', $date)->get();
-    return view('userdate',compact('dates'));
-   //return $dates[0]["lat"]." ".$dates[0]["lng"];
+        if($id){
+            $dates = $id->locations()->whereDate('created_at', $date)->get();
+            //return $id->locations()->whereDate('created_at', $date)->get();
+
+            return view('userdate',['user' => $id, 'dates' => $dates]);
+            //return $dates[0]["lat"]." ".$dates[0]["lng"];
+        }
+
+        return abort(404);
     }
+
 }

+ 191 - 0
resources/views/calendar.blade.php

@@ -0,0 +1,191 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>Document</title>
+
+    @yield('styles')
+
+</head>
+<body>
+    <?php
+
+    $date=date("Y-m-d");
+
+    $sd = explode("-", $date);
+    $year 	= $sd[0];
+    $month = $sd[1];
+    $day 	= $sd[2];
+
+    // Вычисляем число дней в текущем месяце
+    $dayofmonth = date('t',
+        mktime(0, 0, 0, $month, 1, $year));
+    //Готовим запрос к БД
+    $todate = "$year-$month-$dayofmonth";
+    $fromdate = "$year-$month-01";
+    //$query = "SELECT date,enddate from sobytia WHERE startdate<='$todate' AND enddate>=$fromdate";
+    //$res_db = $db->sql($query);
+    //$d = array();$k=array();
+    //for($i = 1; $i<=$dayofmonth; $i++){
+    //    $k[$i] = $i;
+    //}
+    //$i=0;
+    //while ($a = mysqli_fetch_row($res_db))
+    //{
+    //    //for($i = 1; $i<=$dayofmonth; $i++){
+    //    foreach ($k	as $i)
+    //    {	//Добавление 0 к дате
+    //        if($i<10) $cd = "$year-$month-0".$i; else $cd = "$year-$month-$i";
+    //        if ($cd >= $a[0] && $cd <= $a[1])
+    //        {
+    //            $d[$i] = $cd;
+    //            unset($k[$i]);
+    //        }
+    //    }
+    //}
+    // Счётчик для дней месяца
+    $day_count = 1;
+
+    // 1. Первая неделя
+    $num = 0;
+    for($i = 0; $i < 7; $i++)
+    {
+        // Вычисляем номер дня недели для числа
+        $dayofweek = date('w',
+            mktime(0, 0, 0, $month, $day_count, $year));
+        // Приводим к числа к формату 1 - понедельник, ..., 6 - суббота
+        $dayofweek = $dayofweek - 1;
+        if($dayofweek == -1) $dayofweek = 6;
+
+        if($dayofweek == $i)
+        {
+            // Если дни недели совпадают,
+            // заполняем массив $week
+            // числами месяца
+            $week[$num][$i] = $day_count > 9 ? $day_count : '0'.$day_count;
+            $day_count++;
+        }
+        else
+        {
+            $week[$num][$i] = "";
+        }
+    }
+
+    // 2. Последующие недели месяца
+    while(true)
+    {
+        $num++;
+        for($i = 0; $i < 7; $i++)
+        {
+            $week[$num][$i] = $day_count > 9 ? $day_count : '0'.$day_count;
+            $day_count++;
+            // Если достигли конца месяца - выходим
+            // из цикла
+            if($day_count > $dayofmonth) break;
+        }
+        // Если достигли конца месяца - выходим
+        // из цикла
+        if($day_count > $dayofmonth) break;
+    }
+
+    // 3. Выводим содержимое массива $week
+    // в виде календаря
+    // Выводим таблицу
+    echo '<table id="calendar">';
+    //заголовок
+    $rusdays = array('ПН','ВТ','СР','ЧТ','ПТ','СБ','ВС');
+    $rusmonth = array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
+    echo '<thead>
+			<tr>
+				<td onclick="monthf(\'prev\');"><</td>
+				<td colspan="5">'.$rusmonth[$month-1].', '.$year.'</td>
+				<td onclick="monthf(\'next\');">></td>
+			</tr>';
+    echo '<tr>';
+    foreach ($rusdays as $rusday){
+        echo '<td>'.$rusday.'</td>';
+    }
+    echo '</tr>';
+    echo '</thead>';
+    //тело календаря
+    for($i = 0; $i < count($week); $i++)
+    {
+        echo "<tr>";
+        for($j = 0; $j < 7; $j++)
+        {
+            if(!empty($week[$i][$j]))
+            {
+
+                // Если имеем дело с выбраной датой подсвечиваем ee
+                if($week[$i][$j]==$day)
+                {
+                    echo '<td class="today">';
+                }
+                else
+                {
+                    echo '<td>';
+                }
+
+                // Если запись в базе за текущую дату есть, делаем ссылку
+//            if($d[$week[$i][$j]])
+//            {
+                echo '<a href="'.route('user.date', [$user->id, $year.'-'.$month.'-'.$week[$i][$j]]).'">'.$week[$i][$j].'</a>';
+//            }
+//            else
+//            {
+//                echo $week[$i][$j];
+//            }
+
+                echo '</td>';
+            }
+            else echo "<td> </td>";
+        }
+        echo "</tr>";
+    }
+    ?>
+
+@yield('map')
+    <script>
+        var mon = parseInt("<?php echo $month; ?>");
+        console.log('sdfsdfsdfsdf', mon);
+        var year = parseInt(<?php echo $year; ?>);
+        function monthf(pn){
+            if (pn == 'next'){
+                mon++;
+            }else if (pn == 'prev'){
+                mon--;
+            }else{
+                alert('Неправильный параметр');
+                return false;
+            }
+            if (mon > 12){
+                year ++;
+                mon = 1;
+            }
+            if (mon < 1){
+                year --;
+                mon = 12;
+            }
+            if ((mon < 10) && (mon >= 1)){
+                mon = '0'+mon;
+            }
+            var nextDate = year+'-'+mon+'-00';
+
+            // var ajaxaddr = "путь_к_текущему_скрипту?date='+nextDate;
+            // var http = new XMLHttpRequest();
+            // if (http) {
+            //     http.open('get', ajaxaddr);
+            //     http.onreadystatechange = function () {
+            //         if(http.readyState == 4){
+            //             if (http.status == 200) {
+            //                 document.getElementById('calendar').innerHTML = http.responseText;
+            //             }
+            //         }
+            //     }
+            //     http.send(null);
+            // }
+        }
+    </script>
+@yield('scripts')
+
+</body>

+ 45 - 56
resources/views/userdate.blade.php

@@ -1,69 +1,58 @@
-
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title>Document</title>
-
-<style>
-      /* Always set the map height explicitly to define the size of the div
-       * element that contains the map. */
-      #map {
-        height: 100%;
-	
-      }
-      /* Optional: Makes the sample page fill the window. */
-      html, body {
-        height: 100%;
-        margin: 0;
-        padding: 0;
-      }
-    </style>
-</head>
-<body>
-	
-
-<div id="map"></div>
+@extends('calendar')
+@section('styles')
+    <style>
+          /* Always set the map height explicitly to define the size of the div
+           * element that contains the map. */
+          #map {
+            height: 50%;
+
+          }
+          /* Optional: Makes the sample page fill the window. */
+          html, body {
+            height: 100%;
+            margin: 0;
+            padding: 0;
+          }
+        </style>
+    </head>
+@endsection
+
+@section('map')
+    <div id="map"></div>
+@endsection
+
+@section('scripts')
     <script>
 
-      var map;
-      function initMap() {
+        var map;
+        function initMap() {
 
-        map = new google.maps.Map(document.getElementById('map'), { /*
+            map = new google.maps.Map(document.getElementById('map'), { /*
           center: {lat:{{ $dates  }} , lng:{{ $dates  }}  },*/
-          zoom: 15
-        });
-	
-	var marker = new Array();
-  @foreach ($dates as $data)
+                zoom: 15
+            });
 
-        map.setCenter({lat:{{ $data->lat  }} , lng:{{ $data->lng  }}  });
-         marker = new google.maps.Marker({
-          map:map,
-          position:{lat:{{ $data->lat  }} , lng:{{ $data->lng  }}  }
-          
-        });
+            var marker = new Array();
+            @foreach ($dates as $data)
 
-       @endforeach
-      }
-    </script>
+            map.setCenter({lat:{{ $data->lat  }} , lng:{{ $data->lng  }}  });
+            marker = new google.maps.Marker({
+                map:map,
+                position:{lat:{{ $data->lat  }} , lng:{{ $data->lng  }}  }
 
-    <ul>
-     
+            });
 
+            @endforeach
+        }
+    </script>
 
+    <ul>
         <li>
-		
-        	{{ $dates }}
-        </li>
-
 
-   
+            {{ $dates }}
+        </li>
     </ul>
 
-<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB8gUrKIK6UryDcJOEZD9V3fxpdDk8s4Lo&callback=initMap"
-    async defer></script>
-</body>
-
-   
-</html>
+    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB8gUrKIK6UryDcJOEZD9V3fxpdDk8s4Lo&callback=initMap"
+            async defer></script>
+@endsection