247 lines
12 KiB
PHP
247 lines
12 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
Module : /apps/php/index.php
|
|
Desc. : PHP - Halaman Utama Desktop
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : May 24th, 2010.
|
|
Last Modified : May 15th, 2024.
|
|
|
|
(c) 2010 - 2024, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
require_once(__DIR__."/../../../../vendor/autoload.php");
|
|
require_once(__DIR__."/func.emonev.php");
|
|
|
|
use siaupheng\fonia3\DB\MySQL;
|
|
use siaupheng\fonia3\Web\Param;
|
|
use siaupheng\fonia3\Web\Form;
|
|
use siaupheng\fonia3\Web\Register;
|
|
|
|
function random_color($trans = "0.6") {
|
|
$col_r = mt_rand( 0, 255 );
|
|
$col_g = mt_rand( 0, 255 );
|
|
$col_b = mt_rand( 0, 255 );
|
|
return "rgba(".$col_r.",".$col_g.",".$col_b.",".$trans.")";
|
|
}
|
|
|
|
$db = $db ?? new MySQL();
|
|
$ajson = [];
|
|
$data = Param::Get("data");
|
|
$tahun = $_SESSION['__WEB_APP']['REAL_THN'] ?? 0;
|
|
$bulan = $_SESSION['__WEB_APP']['REAL_BLN'];
|
|
$aapp = $_SESSION['__WEB_APP'];
|
|
|
|
if ( $data == "chart1" || $data == "chart2" ) {
|
|
$bulan = $_SESSION['__WEB_APP']['REAL_BLN'];
|
|
if ($bulan == 1) {
|
|
$qK = "(RealK_B1)";
|
|
$qF = "(RealF_B1,0)";
|
|
}
|
|
if ($bulan == 2) {
|
|
$qK = "(RealK_B1+RealK_B2)";
|
|
$qF = "(RealF_B1,RealF_B2)";
|
|
}
|
|
if ($bulan == 3) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3)";
|
|
}
|
|
if ($bulan == 4) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4)";
|
|
}
|
|
if ($bulan == 5) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5)";
|
|
}
|
|
if ($bulan == 6) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6)";
|
|
}
|
|
if ($bulan == 7) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7)";
|
|
}
|
|
if ($bulan == 8) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8)";
|
|
}
|
|
if ($bulan == 9) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9)";
|
|
}
|
|
if ($bulan == 10) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9+RealK_B10)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9,RealF_B10)";
|
|
}
|
|
if ($bulan == 11) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9+RealK_B10+RealK_B11)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9,RealF_B10,RealF_B11)";
|
|
}
|
|
if ($bulan == 12) {
|
|
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9+RealK_B10+RealK_B11+RealK_B12)";
|
|
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9,RealF_B10,RealF_B11,RealF_B12)";
|
|
}
|
|
}
|
|
|
|
if ( $data == "periode-show" ) {
|
|
$ajson = ['aktif'=>1, 'html'=>""];
|
|
if ($tahun == 0 || Param::Get("reset", 0) == 1) {
|
|
$form = new Form($db);
|
|
$lthn = $form->option("_", "OPTION_THN", $tahun, true, false, tahun_ang("Tahun "));
|
|
$lbln = $form->option("_", "OPTION_BLN", $bulan, true, false, bulan_array());
|
|
$ajson['aktif'] = 0;
|
|
$ajson['html'] = '
|
|
<div class="row mb-1">
|
|
<label class="col-sm-5 col-lg-4 col-form-label" for="OPTION_BLN">Bulan Data</label>
|
|
<div class="col">'.$lbln.'</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label class="col-sm-5 col-lg-4 col-form-label" for="OPTION_THN">Tahun Data</label>
|
|
<div class="col">'.$lthn.'</div>
|
|
</div>';
|
|
}
|
|
|
|
} else if ( $data == "periode-simpan" ) {
|
|
// penyimpanan periode tahun dan bulan login !
|
|
$alogin = $_SESSION['__WEB_APP'];
|
|
$alogin['REAL_THN'] = Param::Get("OPTION_THN", $alogin['REAL_THN']);
|
|
$alogin['REAL_BLN'] = Param::Get("OPTION_BLN", $alogin['REAL_BLN']);
|
|
$db->Query("SELECT * FROM vi_para_rpjmd WHERE '".$alogin['REAL_THN']."' BETWEEN Tahun_Min AND Tahun_Max ORDER BY RPJMDID DESC LIMIT 1");
|
|
if ($db->Next()) $alogin['REAL_RPJMDID'] = $db->Row("RPJMDID", 0);
|
|
$log_tw = 0;
|
|
if ($alogin['REAL_BLN'] <= 3) { $log_tw = 1; }
|
|
else if ($alogin['REAL_BLN'] <= 6) { $log_tw = 2; }
|
|
else if ($alogin['REAL_BLN'] <= 9) { $log_tw = 3; }
|
|
else if ($alogin['REAL_BLN'] <= 12) { $log_tw = 4; }
|
|
$alogin['REAL_TW'] = $log_tw;
|
|
|
|
// mapping tahun nomenklatur submap
|
|
$alogin['SUBMAP_TAHUN'] = map_tahun_submap($alogin['REAL_THN']);
|
|
$alogin['AKUN_TAHUN'] = map_tahun_akun($alogin['REAL_THN']);
|
|
// penyesuaian kembali konfigurasi periode --> REAL_RPJMDID
|
|
$db->Query("SELECT Tahun1,Tahun2,Tahun3,Tahun4,Tahun5,Tahun_Min,Tahun_Max,Ket Real_Periode FROM vi_para_rpjmd WHERE RPJMDID='".$alogin['REAL_RPJMDID']."' LIMIT 1");
|
|
if ($db->Next()) $alogin = array_merge($alogin, $db->AllRow());
|
|
if ($alogin['Tahun1']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T1_";
|
|
if ($alogin['Tahun2']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T2_";
|
|
if ($alogin['Tahun3']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T3_";
|
|
if ($alogin['Tahun4']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T4_";
|
|
if ($alogin['Tahun5']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T5_";
|
|
$_SESSION['__WEB_APP'] = $alogin;
|
|
$ajson['sukses'] = 1;
|
|
|
|
} else if ( $data == "periode-info") {
|
|
$ajson = ['html'=>'<a class="nav-link" onclick="IndexJS.periode_show(1);"><i class="bi-calendar"></i></a>'];
|
|
if ($tahun > 0) {
|
|
$txtinfo = bulan_array()[$bulan] .' '.$tahun;
|
|
$ajson['html'] = '<a class="nav-link text-info fw-bolder" title="'.$txtinfo.'" onclick="IndexJS.periode_show(1);"><i class="me-2 bi-calendar-check"></i>'.$txtinfo.'</a>';
|
|
}
|
|
|
|
} else if ( $data == "chart1" ) {
|
|
$ajson['tipe'] = "chart";
|
|
$db->Query("SELECT * FROM (SELECT M.S_OPD,(SUM(K.R_Keu)/SUM(K.Renc_Keu))*100 REAL_KEU,SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU) REAL_FISIK,(((SUM(K.R_Keu)/SUM(K.Renc_Keu))*100)+SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU))/2 REAL_KINERJA FROM (SELECT *,".$qK." R_Keu,GREATEST".$qF." R_Fisik FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."') K LEFT JOIN (SELECT OPDID,SUM(Renc_Keu) OPD_PAGU FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."' GROUP BY OPDID) TT ON (TT.OPDID=K.OPDID) LEFT JOIN para90_opd M ON (M.OPDID=K.OPDID) WHERE M.Aktif=1 GROUP BY K.OPDID) A ORDER BY A.REAL_KINERJA DESC LIMIT 10");
|
|
|
|
$adata['datasets'] = array();
|
|
$adata['labels'] = array();
|
|
$atmp1 = array(0); $atmp2 = array(0); $atmp3 = array(0);
|
|
$adata['labels'][] = "Belum Ada Realisasi";
|
|
if ($db->RecordCount()>0) {
|
|
$atmp1 = array(); $atmp2 = array(); $atmp3 = array();
|
|
$adata['labels'] = array();
|
|
}
|
|
while ($db->Next()){
|
|
$atmp1[] = round($db->Row("REAL_KEU"), 2);
|
|
$atmp2[] = round($db->Row("REAL_FISIK"), 2);
|
|
$atmp3[] = round($db->Row("REAL_KINERJA"), 2);
|
|
$adata['labels'][] = $db->Row("S_OPD");
|
|
}
|
|
$adata['datasets'][] = array('data'=>$atmp1, 'label'=>"Keuangan", 'backgroundColor'=>random_color(), 'order'=>1, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
|
|
$adata['datasets'][] = array('data'=>$atmp2, 'label'=>"Fisik", 'backgroundColor'=>random_color(), 'order'=>2, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
|
|
$adata['datasets'][] = array('data'=>$atmp3, 'label'=>"Kinerja", 'borderColor'=>random_color(), 'order'=>3, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#313131"), 'type'=>"line", 'fill'=>false);
|
|
|
|
$ajson['chart'] = array('type' => "bar",
|
|
'data' => $adata,
|
|
'options' => array(
|
|
'plugins' => [
|
|
'title' => ['display' => true, 'text' => '10 Perangkat Daerah dengan Kinerja Tertinggi'],
|
|
'legend' => ['position' => "bottom"],
|
|
],
|
|
'responsive' => true,
|
|
'aspectRatio' => 1.5,
|
|
//'scales' => ['yAxes' => ['display' => true, 'beginAtZero' => true, 'title'=> "Realisasi (%)"]],
|
|
'layout' => array('padding' => array('top' => 10))
|
|
)
|
|
);
|
|
|
|
} else if ( $data == "chart2" ) {
|
|
$ajson['tipe'] = "chart";
|
|
$db->Query("SELECT * FROM (SELECT M.S_OPD,(SUM(K.R_Keu)/SUM(K.Renc_Keu))*100 REAL_KEU,SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU) REAL_FISIK,(((SUM(K.R_Keu)/SUM(K.Renc_Keu))*100)+SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU))/2 REAL_KINERJA FROM (SELECT *,".$qK." R_Keu,GREATEST".$qF." R_Fisik FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."') K LEFT JOIN (SELECT OPDID,SUM(Renc_Keu) OPD_PAGU FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."' GROUP BY OPDID) TT ON (TT.OPDID=K.OPDID) LEFT JOIN para90_opd M ON (M.OPDID=K.OPDID) WHERE M.Aktif=1 GROUP BY K.OPDID) A ORDER BY A.REAL_KINERJA ASC LIMIT 10");
|
|
|
|
$adata['datasets'] = array();
|
|
$adata['labels'] = array();
|
|
$atmp1 = array(0); $atmp2 = array(0); $atmp3 = array(0);
|
|
$adata['labels'][] = "Belum Ada Realisasi";
|
|
if ($db->RecordCount()>0) {
|
|
$atmp1 = array(); $atmp2 = array(); $atmp3 = array();
|
|
$adata['labels'] = array();
|
|
}
|
|
while ($db->Next()){
|
|
$atmp1[] = round($db->Row("REAL_KEU"), 2);
|
|
$atmp2[] = round($db->Row("REAL_FISIK"), 2);
|
|
$atmp3[] = round($db->Row("REAL_KINERJA"), 2);
|
|
$adata['labels'][] = $db->Row("S_OPD");
|
|
}
|
|
$adata['datasets'][] = array('data'=>$atmp1, 'label'=>"Keuangan", 'backgroundColor'=>random_color(), 'order'=>1, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
|
|
$adata['datasets'][] = array('data'=>$atmp2, 'label'=>"Fisik", 'backgroundColor'=>random_color(), 'order'=>2, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
|
|
$adata['datasets'][] = array('data'=>$atmp3, 'label'=>"Kinerja", 'borderColor'=>random_color(), 'order'=>3, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#313131"), 'type'=>"line", 'fill'=>false);
|
|
|
|
$ajson['chart'] = array('type' => "bar",
|
|
'data' => $adata,
|
|
'options' => array(
|
|
'plugins' => [
|
|
'title' => ['display' => true, 'text' => '10 Perangkat Daerah dengan Kinerja Terendah'],
|
|
'legend' => ['position' => "bottom"],
|
|
],
|
|
'responsive' => true,
|
|
'aspectRatio' => 1.5,
|
|
//'scales' => ['yAxes' => ['display' => true, 'beginAtZero' => true, 'title'=>['text' => "Realisasi (%)"]]],
|
|
'layout' => array('padding' => array('top' => 10))
|
|
)
|
|
);
|
|
|
|
} else if ( $data == "default" ) {
|
|
$aapp = $_SESSION['__WEB_APP'];
|
|
$ajson['content'] = '
|
|
<div class="fade-in">
|
|
<div class="row">
|
|
<div class="col-sm-12 col-md-6">
|
|
<div class="card">
|
|
<div class="card-body pb-0 text-center" id="divHome1">
|
|
<img src="'.$aapp['WEB_PATH'].'assets/images/logo150.png" title="'.$aapp['REG_NAME'].'">
|
|
<p class="mt-2">'.$aapp['REG_ADDRESS'].'<br>
|
|
'.$aapp['REG_CITY'].' '.$aapp['REG_POSTCODE'].'</p>
|
|
<p class="mt-3 mb-3"><i>Register ID : '.Register::reg_id().'</i></p>
|
|
<p>'.$aapp['APP_NAMES'].'<br>'.$aapp['APP_NAME'].' Ver. '.$aapp['APP_VER'].'<br>
|
|
Updated : '.$aapp['APP_UPDATED'].'</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-6">
|
|
<div class="card">
|
|
<div class="card-body pb-0" id="divHome2">
|
|
<div class="c-chart-wrapper pb-2">
|
|
<canvas id="canvasChart2"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
';
|
|
}
|
|
|
|
send_json($ajson);
|
|
?>
|