Как передать данные из контроллера для просмотра, используя AJAX - PullRequest
0 голосов
/ 13 июля 2020

Я хочу показать контроллер данных для просмотра, используя ajax, и я уже показал контроллер данных для просмотра на панели диаграммы без ajax Мне нужно получить данные на панели диаграммы, используя ajax, но я не Не знаю, как отображать данные на панели диаграммы, используя ajax.

У меня нет такого хорошего опыта в JSON / AJAX / Laravel, я новичок.

Контроллер

 public function index()
{
   
    $manager_hourlog = Hourlog::with('project', "user")->get()- 
    >groupBy('project.name');

    $projects = [];
    $totals = [];
    foreach ($manager_hourlog as $key => $val) {
        $projects[] = $key;
    }
    foreach ($manager_hourlog as $key2 => $val) {

        $minutes = $val->sum('hour_work');

        $totals[] = round($minutes / 60, 1);
    }

    $users = User::where("status", 1)->get();

    $data = [
        // manager report
        'manager_projects' => $projects,
        'totals' => $totals,
        "manager_hourlog" => $manager_hourlog,
        "auth"        => $auth,

    ];
   return response()->json(['data' => $data]);
   return view('cms.dashboard', $data);
}

Скрипт

 <script>
 // Employee  report script
var colors = ["#1abc9c", "#2ecc71", "#3498db", 
"#9b59b6", "#34495e", "#16a085", "#27ae60"];
    @if ($auth->user_type != 1) 
     // manager  report script
        var managerchartbar = {
      
      
    labels: {!! json_encode($manager_projects) !!},
            datasets: [
     @foreach($users  as  $user)
        {

          label: {!! json_encode($user->name) !!},
          backgroundColor: colors[Math.floor(Math.random() * colors.length)],
          // data: [300,200,500,700]
          data: [
            @foreach($manager_hourlog as $hourlog) 
              {{$hourlog->where("user_id", $user->id)->sum("hour_work") / 60}},
            @endforeach
          ]
        },
    @endforeach
      ]

        };
  var ctx = document.getElementById('manager').getContext('2d');
            window.myBar = new Chart(ctx, {
                type: 'bar',
                data: managerchartbar,
                options: {
                    title: {
                        display: true,
                        text: 'Employees Report chart'
                    },
                    tooltips: {
                        mode: 'index',
                        intersect: false
                    },
                    responsive: true,
                    scales: {
                        xAxes: [{
                            stacked: true,
                        }],
                        yAxes: [{
                            stacked: true
                        }]
                    }
                }
            });

    @endif

ajax

$.ajax({
    type: 'GET',
    url: '{{url("/dashboard")}}',
         data: {
        data: data
    },
    success: function(data){
        console.log(data.data);

    },
    error: function(xhr){
        console.log(xhr.responseText);
    }
});

    </script>

Html Посмотреть

<div class="col-md-12">
        <div class="card-box">
          <div class="container-fluid">
            <canvas id="manager" height="100">
            </canvas> 
          </div>
          </br>
        </div>
      </div>

Маршрут

             Route::get('/dashboard', 
            'DashboardController@index')->name('dashboard');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...