راکت

رسم نمودار google chart با ajax

4 پاسخ

سلام وقت بخیر
من داخل پنل مدیریت صفحه اول (پیشخوان) سامانه ای که طراحی کردم نمودار های مدیریتی وجود دارد که با google chart طراحی کردم ، برای رسم این نمودار ها محاسباتی روی داده های موجود انجام میشه که کمی زمانبر هست
از طرفی وجود این نمودار ها در صفحه پیشخوان الزامی است چطور میتونم زمان لود صفحه را کاهش بدم ؟
آیا از میشه از ajax استفاده کرد و متغیر های داخل اسکریپت رو مقدار داد ؟ اگر امکانش هست لطفا راهنمایی بفرمایید
یا امکانش هست فایل js مربوط به نمودار به طور کلی با ajax فراخوانی بشه ؟
ممنون میشم راهنمایی بفرمایید

<script type="text/javascript">
    google.charts.load('current', {'packages':['corechart', 'bar']});
    google.charts.setOnLoadCallback(drawStuff1);

    function drawStuff1() {

        var button = document.getElementById('change-chart');
        var chartDiv = document.getElementById('chart_div1');

        var data = google.visualization.arrayToDataTable([
            ['', 'مونتاژ','جوش','رنگ','فروش'],
            ['{{ $month[5]}}',  {{$weight_in_month_assemble[5]}},{{$weight_in_month_weld[5]}},{{$weight_in_month_color[5]}}, {{$sale_month[5]}}],
            ['{{ $month[4] }}',  {{$weight_in_month_assemble[4]}},{{$weight_in_month_weld[4]}},{{$weight_in_month_color[4]}}, {{$sale_month[4]}}],
            ['{{ $month[3] }}',  {{$weight_in_month_assemble[3]}},{{$weight_in_month_weld[3]}},{{$weight_in_month_color[3]}}, {{$sale_month[3]}}],
            ['{{ $month[2] }}', {{$weight_in_month_assemble[2]}},{{$weight_in_month_weld[2]}},{{$weight_in_month_color[2]}}, {{$sale_month[2]}}],
            ['{{ $month[1] }}', {{$weight_in_month_assemble[1]}},{{$weight_in_month_weld[1]}},{{$weight_in_month_color[1]}}, {{$sale_month[1]}}],
            ['{{ $month[0] }}', {{$weight_in_month_assemble[0]}},{{$weight_in_month_weld[0]}},{{$weight_in_month_color[0]}}, {{$sale_month[0]}}]
        ]);

        var materialOptions = {
            bar: { groupWidth: "100%"},
            colors: ['#00c0ef','#DD4B39','#F39C12','#00A65A'],

            vAxis:
                {
                    title : '',
                    textStyle:
                        {
                            color: '#454545',
                            fontName: 'Vazir',
                            fontSize: 13
                        }
                },
            hAxis:
                {
                    textStyle:
                        {
                            color: '#454545',
                            fontName: 'Vazir',
                            fontSize: 13
                        }
                },
            legend: {
                position: 'right',
                maxLines: 3,
                textStyle: {
                    color: '#2a292e',
                    fontName: 'Vazir',
                    fontSize: 13,
                },

            },
            chart: {
                title: '',
                subtitle: ''
            },
        };

        function drawMaterialChart() {
            var materialChart = new google.charts.Bar(chartDiv);
            materialChart.draw(data, google.charts.Bar.convertOptions(materialOptions));
            button.innerText = 'Change to Classic';
            button.onclick = drawClassicChart;
        }
<script>
ثبت پرسش جدید

پاسخ‌ها

4
امیر علی
امیر علی
@ajdar9667

تخصص: طراح و توسعه دهنده fullstack

سلام برای چهی فایل رو بعد از لود بخونه؟ شما یه تابع مینویسی بعد از لود شدن صفحه یه ajax بزنه و اطلاعات رو بگیره

مجید
مجید
@majeeddehghan

تخصص: برنامه نویس

@ajdar9667 در زدن ajax و گرفتن از اطلاعات مشکلی ندارم چجوری میشه بعد از دریافت، اطلاعات را داخل جاوا اسکریپت قرار داد؟ اینجوری نمودار نمایش داده میشه؟

شاید پاسخ شما همین‌جا باشد

AliSo
AliSo
@alisoleimani.dev

تخصص: برنامه نویس PHP

اگر تابع ایجکس رو به صورت async صدا بزنید میتونید متغیر data رو داخل js بدون مشکل از response ایجکس مقدار دهی کنید و بعد چارت رو رسم کنید.
اگر با این روش اشنایی ندارید راه حل ساده تر اینه که داخل onSuccess ایجکس کار های مربوط به چارت رو انجام بدید و داخل اون تابع چارت رو رسم کنید

مجید
مجید
@majeeddehghan

تخصص: برنامه نویس

@alisoleimani.dev امانش هست بیشتر راهنمایی کنید در خصوص async؟

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام