You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
378 lines
13 KiB
378 lines
13 KiB
9 months ago
|
<style>
|
||
|
#wpBayar {
|
||
|
min-width: 600px;
|
||
|
max-width: auto;
|
||
|
height: 600px;
|
||
|
margin: 0 auto;
|
||
|
}
|
||
|
</style>
|
||
|
<?php
|
||
|
|
||
|
ini_set('memory_limit', '4096M');
|
||
|
|
||
|
echo 'Initial memory usage: ' . memory_get_usage() . ' bytes' . PHP_EOL;
|
||
|
|
||
|
$tahun2 = date('Y');
|
||
|
$rentang_tahun = range($tahun2, 2022);
|
||
|
|
||
|
$dataraporkwl = "[";
|
||
|
foreach ($raporbyr as $row) {
|
||
|
$x = (($row->WPBYR / $row->JMLWP ?: 1)) * 100;
|
||
|
$y = (($row->WPBYRTERATUR / $row->WPBYR ?: 1)) * 100;
|
||
|
$dd = $row->KWLADM;
|
||
|
$dataraporkwl .= "{x: " . $x . ", y: " . $y . ", z: 1, name: '" . addslashes($row->NAMA) . "', drilldown: \"" . $dd . "\", jmlwp: " . $row->JMLWP . ", wpbyr: " . $row->WPBYR . ", wpbyrteratur: " . $row->WPBYRTERATUR . "},";
|
||
|
}
|
||
|
$dataraporkwl = rtrim($dataraporkwl, ',') . "]";
|
||
|
|
||
|
$drilldownSeries = [];
|
||
|
|
||
|
// per KPP
|
||
|
foreach ($drilldownData['kpp'] as $kwladm => $kpps) {
|
||
|
$parentPoint = null;
|
||
|
$data = [];
|
||
|
|
||
|
foreach ($raporbyr as $row) {
|
||
|
if ($row->KWLADM == $kwladm) {
|
||
|
$parentPoint = [
|
||
|
'name' => $row->NAMA,
|
||
|
'x' => ($row->WPBYR / ($row->JMLWP ?: 1)) * 100,
|
||
|
'y' => ($row->WPBYRTERATUR / ($row->WPBYR ?: 1)) * 100,
|
||
|
'color' => '#FF0000', // Give it a distinct color
|
||
|
'dataLabels' => [
|
||
|
'enabled' => true,
|
||
|
'format' => '{point.name}',
|
||
|
'style' => ['fontWeight' => 'bold']
|
||
|
],
|
||
|
'jmlwp' => $row->JMLWP,
|
||
|
'wpbyr' => $row->WPBYR,
|
||
|
'wpbyrteratur' => $row->WPBYRTERATUR
|
||
|
];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($parentPoint) {
|
||
|
$data[] = $parentPoint;
|
||
|
}
|
||
|
|
||
|
foreach ($kpps as $kpp) {
|
||
|
$data[] = [
|
||
|
'name' => $kpp['name'],
|
||
|
'x' => $kpp['x'],
|
||
|
'y' => $kpp['y'],
|
||
|
'z' => $kpp['z'],
|
||
|
'drilldown' => (string) $kpp['drilldown'],
|
||
|
'jmlwp' => $kpp['jmlwp'],
|
||
|
'wpbyr' => $kpp['wpbyr'],
|
||
|
'wpbyrteratur' => $kpp['wpbyrteratur']
|
||
|
];
|
||
|
}
|
||
|
|
||
|
$drilldownSeries[] = [
|
||
|
'id' => (string) $kwladm,
|
||
|
'name' => "KPP in " . $kwladm,
|
||
|
'data' => $data
|
||
|
];
|
||
|
}
|
||
|
|
||
|
// per Seksi
|
||
|
foreach ($drilldownData['sie'] as $kppadm => $sies) {
|
||
|
$parentPoint = null;
|
||
|
$data = [];
|
||
|
|
||
|
foreach ($raporbyrkpp as $row) {
|
||
|
if ($row->KPPADM == $kppadm) {
|
||
|
$parentPoint = [
|
||
|
'name' => $row->NAMA,
|
||
|
'x' => ($row->WPBYR / ($row->JMLWP ?: 1)) * 100,
|
||
|
'y' => ($row->WPBYRTERATUR / ($row->WPBYR ?: 1)) * 100,
|
||
|
'color' => '#00FF00', // Give it a distinct color
|
||
|
'dataLabels' => [
|
||
|
'enabled' => true,
|
||
|
'format' => '{point.name}',
|
||
|
'style' => ['fontWeight' => 'bold']
|
||
|
],
|
||
|
'jmlwp' => $row->JMLWP,
|
||
|
'wpbyr' => $row->WPBYR,
|
||
|
'wpbyrteratur' => $row->WPBYRTERATUR
|
||
|
];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($parentPoint) {
|
||
|
$data[] = $parentPoint;
|
||
|
}
|
||
|
|
||
|
foreach ($sies as $sie) {
|
||
|
$data[] = [
|
||
|
'name' => $sie['name'],
|
||
|
'x' => $sie['x'],
|
||
|
'y' => $sie['y'],
|
||
|
'z' => $sie['z'],
|
||
|
'drilldown' => (string) ($kppadm . '_' . $sie['drilldown']),
|
||
|
'jmlwp' => $sie['jmlwp'],
|
||
|
'wpbyr' => $sie['wpbyr'],
|
||
|
'wpbyrteratur' => $sie['wpbyrteratur']
|
||
|
];
|
||
|
}
|
||
|
|
||
|
$drilldownSeries[] = [
|
||
|
'id' => (string) $kppadm,
|
||
|
'name' => "SIE in " . $kppadm,
|
||
|
'data' => $data
|
||
|
];
|
||
|
}
|
||
|
|
||
|
// per Pegawai
|
||
|
foreach ($drilldownData['peg'] as $key => $pegs) {
|
||
|
$parentPoint = null;
|
||
|
$data = [];
|
||
|
|
||
|
list($kppadm, $kodesie) = explode('_', $key);
|
||
|
foreach ($raporbyrsie as $row) {
|
||
|
if ($row->KPPADM == $kppadm && $row->KODESIE == $kodesie) {
|
||
|
$parentPoint = [
|
||
|
'name' => $row->NAMA,
|
||
|
'x' => ($row->WPBYR / ($row->JMLWP ?: 1)) * 100,
|
||
|
'y' => ($row->WPBYRTERATUR / ($row->WPBYR ?: 1)) * 100,
|
||
|
'color' => '#0000FF',
|
||
|
'dataLabels' => [
|
||
|
'enabled' => true,
|
||
|
'format' => '{point.name}',
|
||
|
'style' => ['fontWeight' => 'bold']
|
||
|
],
|
||
|
'jmlwp' => $row->JMLWP,
|
||
|
'wpbyr' => $row->WPBYR,
|
||
|
'wpbyrteratur' => $row->WPBYRTERATUR
|
||
|
];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($parentPoint) {
|
||
|
$data[] = $parentPoint;
|
||
|
}
|
||
|
|
||
|
foreach ($pegs as $peg) {
|
||
|
$data[] = [
|
||
|
'name' => $peg['name'],
|
||
|
'x' => $peg['x'],
|
||
|
'y' => $peg['y'],
|
||
|
'z' => $peg['z'],
|
||
|
'drilldown' => null,
|
||
|
'jmlwp' => $peg['jmlwp'],
|
||
|
'wpbyr' => $peg['wpbyr'],
|
||
|
'wpbyrteratur' => $peg['wpbyrteratur']
|
||
|
];
|
||
|
}
|
||
|
|
||
|
$drilldownSeries[] = [
|
||
|
'id' => (string) $key,
|
||
|
'name' => "PEG in " . $key,
|
||
|
'data' => $data
|
||
|
];
|
||
|
}
|
||
|
|
||
|
$d['drilldownSeries'] = $drilldownSeries;
|
||
|
?>
|
||
|
<div class="main-content">
|
||
|
<div class="container-fluid">
|
||
|
<div class="row">
|
||
|
<div class="col-sm-12 mb-2">
|
||
|
<form class="form-inline" action="<?php base_url('rapor/wpdaftar') ?>" method="post">
|
||
|
<label class="my-1 mr-2">Tahun :</label>
|
||
|
<select class="custom-select my-1 mr-sm-2" id="tahun" name="tahun">
|
||
|
<?php
|
||
|
foreach ($rentang_tahun as $tahun) {
|
||
|
if ($tahun == $tahunx) {
|
||
|
$sel = "selected";
|
||
|
} else {
|
||
|
$sel = "";
|
||
|
}
|
||
|
echo "<option value=\"" . $tahun . "\" " . $sel . ">" . $tahun . "</option>";
|
||
|
}
|
||
|
?>
|
||
|
</select>
|
||
|
<label class="my-1 mr-2">s.d. Bulan :</label>
|
||
|
<select class="custom-select my-1 mr-sm-2" id="bulan" name="bulan">
|
||
|
<?php
|
||
|
foreach ($refbulan as $rowb) {
|
||
|
if ($rowb->KODE == $bulanx) {
|
||
|
$isSelected = ' selected="selected"';
|
||
|
} else {
|
||
|
$isSelected = '';
|
||
|
}
|
||
|
echo "<option value='" . $rowb->KODE . "'" . $isSelected . ">" . ucfirst(strtolower($rowb->NM_PANJANG)) . "</option>";
|
||
|
}
|
||
|
?>
|
||
|
</select>
|
||
|
|
||
|
<button type="submit" class="btn btn-primary my-1">Proses</button>
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="row clearfix">
|
||
|
<div class="col-md-12">
|
||
|
<div class="card">
|
||
|
<div class="card-header">
|
||
|
<h3 class="text-center">WP Daftar</h3>
|
||
|
<div class="card-header-right">
|
||
|
<ul class="list-unstyled card-option">
|
||
|
<li><i class="ik ik-chevron-left action-toggle"></i></li>
|
||
|
<li><i class="ik ik-minus minimize-card"></i></li>
|
||
|
<li><i class="ik ik-x close-card"></i></li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="card-body">
|
||
|
<div id="wpBayar" style="height:600px"></div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!-- <div class="row clearfix">
|
||
|
<div class="col-md-12">
|
||
|
<div class="card">
|
||
|
<div class="card-header">
|
||
|
<h3 class="text-center">Data</h3>
|
||
|
<div class="card-header-right">
|
||
|
<ul class="list-unstyled card-option">
|
||
|
<li><i class="ik ik-chevron-left action-toggle"></i></li>
|
||
|
<li><i class="ik ik-minus minimize-card"></i></li>
|
||
|
<li><i class="ik ik-x close-card"></i></li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="card-body">
|
||
|
<table class="table table-hover">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th class="text-center">No</th>
|
||
|
<th class="text-center">Unit</th>
|
||
|
<th class="text-center">Jumlah WP</th>
|
||
|
<th class="text-center">WP Bayar <?= $tahunx ?></th>
|
||
|
<th class="text-center">WP Bayar Teratur<?= $tahunx ?></th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<?php
|
||
|
$no = 1;
|
||
|
foreach ($raporbyr as $row) { ?>
|
||
|
<tr>
|
||
|
<td><?= $no++ ?></td>
|
||
|
<td><?= $row->KWLADM ?>-<?= $row->NAMA ?></td>
|
||
|
<td class="text-right"><?= number_format($row->JMLWP, 0, ',', '.') ?></td>
|
||
|
<td class="text-right"><?= number_format($row->WPBYR, 0, ',', '.') ?></td>
|
||
|
<td class="text-right"><?= number_format($row->WPBYRTERATUR, 0, ',', '.') ?></td>
|
||
|
</tr>
|
||
|
<?php } ?>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div> -->
|
||
|
</div>
|
||
|
</div>
|
||
|
<?php echo view('inc/js.php') ?>
|
||
|
<script>
|
||
|
Highcharts.chart('wpBayar', {
|
||
|
chart: {
|
||
|
type: 'bubble',
|
||
|
plotBorderWidth: 1,
|
||
|
zoomType: 'xy',
|
||
|
panning: true,
|
||
|
panKey: 'shift'
|
||
|
},
|
||
|
legend: {
|
||
|
enabled: false
|
||
|
},
|
||
|
title: {
|
||
|
text: ''
|
||
|
},
|
||
|
credits: {
|
||
|
enabled: false
|
||
|
},
|
||
|
accessibility: {
|
||
|
point: {
|
||
|
valueDescriptionFormat: '{index}. {point.name}, WPbayar: {point.x}%, WPBayarT: {point.y}%, index: {point.z}%.'
|
||
|
}
|
||
|
},
|
||
|
xAxis: {
|
||
|
gridLineWidth: 1,
|
||
|
type: 'logarithmic',
|
||
|
title: {
|
||
|
text: 'Jumlah WP Terdaftar'
|
||
|
},
|
||
|
labels: {
|
||
|
format: '{value:.2f}%'
|
||
|
},
|
||
|
accessibility: {
|
||
|
rangeDescription: 'Range: 0 to 100 %.'
|
||
|
}
|
||
|
},
|
||
|
yAxis: {
|
||
|
startOnTick: false,
|
||
|
endOnTick: false,
|
||
|
type: 'logarithmic',
|
||
|
title: {
|
||
|
text: 'Kanwil'
|
||
|
},
|
||
|
labels: {
|
||
|
format: '{value:.2f}%'
|
||
|
},
|
||
|
maxPadding: 0.2,
|
||
|
accessibility: {
|
||
|
rangeDescription: 'Range: 0 to 100 persen.'
|
||
|
}
|
||
|
},
|
||
|
tooltip: {
|
||
|
useHTML: true,
|
||
|
headerFormat: '<table>',
|
||
|
pointFormatter: function () {
|
||
|
return '<tr><th colspan="2"><h5>' + this.name + '</h5></th></tr>' +
|
||
|
'<tr><th>%WP Bayar:</th><td>' + Highcharts.numberFormat(this.x, 2) + '%</td></tr>' +
|
||
|
'<tr><th>%WP Bayar Teratur:</th><td>' + Highcharts.numberFormat(this.y, 2) + '%</td></tr>' +
|
||
|
'<tr><th>Jumlah WP:</th><td>' + Highcharts.numberFormat(this.jmlwp, 0, '.', ',') + '</td></tr>' +
|
||
|
'<tr><th>WP Bayar:</th><td>' + Highcharts.numberFormat(this.wpbyr, 0, '.', ',') + '</td></tr>' +
|
||
|
'<tr><th>WP Bayar Teratur:</th><td>' + Highcharts.numberFormat(this.wpbyrteratur, 0, '.', ',') + '</td></tr>';
|
||
|
},
|
||
|
footerFormat: '</table>',
|
||
|
followPointer: true
|
||
|
},
|
||
|
plotOptions: {
|
||
|
bubble: {
|
||
|
minSize: 5,
|
||
|
maxSize: 25
|
||
|
}
|
||
|
series: {
|
||
|
dataLabels: {
|
||
|
enabled: true,
|
||
|
format: '{point.name}', \
|
||
|
allowOverlap: true
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
series: [{
|
||
|
data: <?php echo $dataraporkwl; ?>,
|
||
|
colorByPoint: true
|
||
|
}],
|
||
|
drilldown: {
|
||
|
activeDataLabelStyle: {
|
||
|
color: '#FFFFFF',
|
||
|
textDecoration: 'none',
|
||
|
textOutline: '1px #000000'
|
||
|
},
|
||
|
breadcrumbs: {
|
||
|
position: {
|
||
|
align: 'right'
|
||
|
},
|
||
|
},
|
||
|
series: <?php echo json_encode($drilldownSeries); ?>
|
||
|
},
|
||
|
});
|
||
|
|
||
|
console.log('Main series data:', <?php echo $dataraporkwl; ?>);
|
||
|
console.log('Drilldown series:', <?php echo json_encode($drilldownSeries, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT); ?>);
|
||
|
</script>
|