Laravel: как показать данные для создания диаграммы в файле JavaScript? - PullRequest
1 голос
/ 05 октября 2019

Я хочу показать на графике количество зарегистрированных новых студентов и количество онлайн-студентов в месяц. Я получил данные, но я не знаю, как перенести данные в файл JS, чтобы нарисовать эту диаграмму.

Вот файл js.

var chart = document.getElementById('products-sales');
let newStudent = $("#monthNewStudent").val();
let onlStudent = $("#monthOnline").val();
var newStudentArr = newStudent.split(",");
var onlStudentArr = onlStudent.split(",");
let arrNew = JSON.parse(newStudentArr);
let arrOnl = JSON.parse(onlStudentArr);

arrData  = [];
for (var i in arrNew) {
   arrData.push({
      month:i,
      newStudent: arrNew[i],
      onlStudent: arrOnl[i]
   });
}

var months = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
    Morris.Area({
        element: 'products-sales',
        data: [{
            month: '2017-01',
            newstudent: 0,
            online: 0,
        }],
        xkey: 'month',
        ykeys: ['newstudent', 'online'],
        labels: ['Học viên mới', 'Học viên online'],
        xLabelFormat: function(x) { // <--- x.getMonth() returns valid index
            var month = months[x.getMonth()];
            return month;
        },
        dateFormat: function(x) {
            var month = months[new Date(x).getMonth()];
            return month;
        },
        behaveLikeLine: true,
        ymax: 300,
        resize: true,
        pointSize: 0,
        pointStrokeColors:['#00B5B8', '#FA8E57', '#F25E75'],
        smooth: true,
        gridLineColor: '#E4E7ED',
        numLines: 6,
        gridtextSize: 14,
        lineWidth: 0,
        fillOpacity: 0.9,
        hideHover: 'auto',
        lineColors: ['#00B5B8', '#FA8E57', '#F25E75'],
        data:arrData
    });

Мой контроллер для подсчета количества зарегистрированных новых студентов и количества онлайн-студентов в месяц

class DashboardController extends AdminBaseController
{
    public function index () 
    {
       $month = 1;
        $studNew = [];
        $studOnline = [];
        $studActive = [];
        for($i = $month; $i < 13; $i++) {
        //count new students
        $newStudents = Member::where('member_type_id',1)->whereMonth('created_at', $i)->get();
        $studNew[$i] = $newStudents->count(); 

        //students online
        $onlStudents = Member::where('member_type_id',1)->whereMonth('updated_at', $i)->get();
        $studOnline[$i] = $onlStudents->count(); 

        // count card active
        $act = Order::where('status', "active")->whereMonth('updated_at', $i)->get();
        $studActive[$i] = $act->count(); 
        }

        $monthNewStudent = json_encode($studNew);
        $monthOnline = json_encode($studOnline);
        $monthActive = json_encode($studActive);
        return view('admin.dashboard.index', compact('monthNewStudent',
                                                    'monthOnline',
                                                    'monthActive'));
    }
}

1 Ответ

0 голосов
/ 05 октября 2019

Вы можете установить значения в переменной, а затем передать эту переменную для просмотра. В представлении, вы можете использовать эту переменную, как показано ниже:

{!! $yourvariable !!}

Так что в вашем случае это будет так:

data: {!! $yourvariable !!},

Надеюсь, это поможет вам !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...