javascript - 如何在codeigniter中使用ajax将数据传递到bar Highchart?
问题描述
我已经使用 php 将数据传递到 bar highchart 并且它的工作。但是当我加载页面时大约需要5 秒(足够长)。在我做了一些研究之后,我发现许多论坛推荐使用 ajax 进行 Highchart。所以我只是猜测也许使用 ajax 可以使页面加载更快(如果我错了,请纠正我)。
但问题是,我不知道如何将 ajax 用于 Bar highchart。谁能帮助我并给我一些线索如何开始使用ajax将数据从Controller传递到ajax?
这是我当前的代码:
模型 :
public function isiChart()
{
$query = $this->db->query('select KODE_BRG,NAMA_BRG,COUNT(case when total=3 then 1 else null end) OOS,
COUNT(case when total >=1 and total <= 3 then 1 else null end) kurang_4,
COUNT(case when total>3 then 1 else null end) OSA from
(select b.KODE_BRG,d.NAMA_BRG,b.JUM_KARTON,b.JUM_SATUAN,b.JUM_KARTON*d.FRACT+b.JUM_SATUAN total
from assrkmd a
left join assrkmdstok b on b.TGL_RKM=a.TGL_RKM and b.KODE_MDS=a.KODE_MDS and b.KODE_CUS=a.KODE_CUS
left join asscus c on c.KODE_CUS=a.KODE_CUS
inner join asstok d on d.KODE_BRG=b.KODE_BRG
left join asssup e on e.KODE_SPL=d.KODE_SPL
left join asssgrup f on f.KODE_SGRUP=c.KODE_SGRUP
left join assgrup g on g.KODE_GRUP=f.KODE_GRUP
inner join assmds h on h.KODE_MDS=a.KODE_MDS
left join asssgrupbrg i on i.KODE_SGRUP=d.KODE_SGRUP
left join assgrupbrg j on j.KODE_GRUP=i.KODE_GRUP
inner join assgrupmds k on k.KODE_GROUP=h.KODE_GROUP
where h.TIPE_MDS =0 and a.CHECK_OUT is not null ) g
group by KODE_BRG,NAMA_BRG order by NAMA_BRG');
return $query;
控制器 :
public function index()
{
$data['db1'] = $this->m_mds->isiChart();
$data['content'] = 'tempelates/MDS/content';
$data['chart'] = 'tempelates/MDS/chart';
$this->load->view('tempelate',$data);
}
看法 :
<div class="col-md-12 col-sm-12">
<div class="x_panel">
<div class="x_title">
<h2>Bar graph <small>Sessions</small></h2>
<ul class="nav navbar-right panel_toolbox">
<li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<div id="container" style="overflow-x: auto;"></div>
</div>
</div>
</div>
<!-- jQuery -->
<script src="<?php echo base_url()?>assets/vendors/jquery/dist/jquery.min.js"></script>
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js"></script>
<script src="https://code.highcharts.com/stock/modules/accessibility.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
<?php foreach ($db1->result_array() as $key) { <---! Here i foreach data comes from Controller--->
$data[]= $key['NAMA_BRG'];
$data0[]=$key['OOS'];
$data1[]= $key['kurang_4'];
$data2[]=$key['OSA'];
}?>
<script>
Highcharts.chart('container', {
chart: {type: 'bar',options3d: { enabled: true, }},
title: {text: 'All Product vs Call'},
xAxis: {
categories: [<?php echo '"'.join('","',$data).'"';?> ],
title: {text: null},
min: 0,max: 8,
scrollbar: {enabled: true},
tickLength: 0},
yAxis: {title: {text: ''}},
legend: {reversed: true},
plotOptions: {series: {stacking: 'normal'}},
credits: {enabled: true},
exporting: { enabled: true },
dataSorting: { enabled: true},
series: [{
name: 'OOS',
data: [<?php echo join(',',$data0);?>],
color: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
dataLabels: {enabled: true,
color: '#FFFFFF',
align: 'center',
format: '<b>{point.name}</b><br>{point.percentage:.1f} %',
y: 1, // 10 pixels down from the top
style: {
fontSize: '10px',
fontFamily: 'Verdana, sans-serif'
}
}
},{
name: '<4',
data: [<?php echo join(',',$data1);?>],
color: 'rgba(255, 99, 132, 0.3)',
borderColor: 'rgba(255, 99, 132, 1)',
dataLabels: {
enabled: true,color: '#FFFFFF',align: 'center',
format: '<b>{point.name}</b><br>{point.percentage:.1f} %',
y: 1, // 10 pixels down from the top
style: { fontSize: '10px',fontFamily: 'Verdana, sans-serif'}
}
},{
name: 'OSA',
data: [<?php echo join(',',$data2);?>],
color: 'rgb(51, 255, 153, 0.6)',
borderColor: 'rgb(51, 255, 153)',
dataLabels:{
enabled: true,
color: '#FFFFFF',
align: 'center',
format: '<b>{point.name}</b><br>{point.percentage:.1f} %',
// format: '{point.y:.1f}', // one decimal
y: 1, // 10 pixels down from the top
style: {fontSize: '10px',fontFamily: 'Verdana, sans-serif'}
}
}]
});
</script>
解决方案
推荐阅读
- typescript - 如何键入一个泛型函数,它基于第一个参数类型的扩展泛型类型?
- javascript - 如何让页面等到导航未在 puppeteer 中完成
- azure-devops - 我可以通过否定标记来筛选 Azure DevOps 中的积压工作吗?
- c# - DirectoryInfo.在 Windows Server 2016 上创建截断目录名称
- r - 通过长格式的某个变量获取索引
- sublimetext3 - 从 git bash 启动 Sublime Text 会导致终端无响应,直到 Sublime 关闭
- javascript - 如何一次只设置一个表格行“table-active”?
- python - 如何并行化程序以在 python 中读取和写入大文件?
- graphql - 如何给类型起别名(例如字符串、整数...)
- angular - 使用时间戳字段的 Angular Firestore 问题