Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <div class="row">
- <ol class="breadcrumb">
- <li><a href="#">
- <em class="fa fa-home"></em>
- </a></li>
- <li class="active">Dashboard</li>
- </ol>
- </div><!--/.row-->
- <div class="row">
- <div class="col-sm-12">
- <!-- <h3 class="page-header">Dashboard</h3> --><br>
- </div>
- </div><!--/.row-->
- <!-- <div class="panel panel-container">
- <div class="row">
- <div class="col-md-6 col-md-3 col-lg-3 no-padding">
- <div class="panel panel-teal panel-widget border-right">
- <div class="row no-padding"><em class="fa fa-xl fa-eyedropper color-blue"></em>
- <div>120</div>
- <div class="text-muted">DBD</div>
- </div>
- </div>
- </div>
- <div class="col-md-6 col-md-3 col-lg-3 no-padding">
- <div class="panel panel-blue panel-widget border-right">
- <div class="row no-padding"><em class="fa fa-xl fa-bath color-orange"></em>
- <div>52</div>
- <div class="text-muted">Diare</div>
- </div>
- </div>
- </div>
- <div class="col-md-6 col-md-3 col-lg-3 no-padding">
- <div class="panel panel-orange panel-widget border-right">
- <div class="row no-padding"><em class="fa fa-xl fa-heartbeat color-teal"></em>
- <div>24</div>
- <div class="text-muted">TBC</div>
- </div>
- </div>
- </div>
- <div class="col-md-6 col-md-3 col-lg-3 no-padding">
- <div class="panel panel-red panel-widget ">
- <div class="row no-padding"><em class="fa fa-xl fa-line-chart color-red"></em>
- <div>25.2k</div>
- <div class="text-muted">Jumlah Kasus</div>
- </div>
- </div>
- </div>
- </div>
- </div> -->
- <div class="row">
- <div class="col-lg-12">
- <div class="panel panel-default">
- <div class="panel-heading">
- Kendari Map
- </div>
- <div class="panel-body">
- <div class="col-md-6">
- <div class="row pull-left col-md-6">
- <?php
- if(isset($_POST['submit'])) {
- $data_penyakit = json_decode($_POST['data_penyakit_dipilih'], true);
- echo '<h4 class="text-left pull-left" id="penyakit_teks">Penyakit Dipilih : '.strtoupper($data_penyakit['penyakit']).'</h4>';
- }else{
- echo '<h4 class="text-left pull-left" id="penyakit_teks">Pilih Jenis Penyakit <i class="fa fa-hand-o-right" aria-hidden="true"></i></h4>';
- }
- // echo sha1(md5("uunskripsi"));
- ?>
- </div>
- <div class="btn-group pull-right col-md-6">
- <form class="" method="post">
- <input type="hidden" id="data_penyakit_dipilih" name="data_penyakit_dipilih" value="" />
- <input type="hidden" id="clust" name="clust" value="" />
- <button type="submit" name="submit" value="dbd" class="btn btn-md btn-danger" id="dbdBtn">DBD</button>
- <button type="submit" name="submit" value="diare" class="btn btn-md btn-warning" id="diareBtn">Diare</button>
- <button type="submit" name="submit" value="tbc" class="btn btn-md btn-success" id="tbcBtn">TBC</button>
- </form>
- </div>
- <hr>
- <!-- <div class="form-inline pull-right col-md-6">
- <label for="jml_clust" class="label-control">Jumlah Clustering :</label>
- <select class="form-control" id="jml_clust">
- <?php
- $cl = json_decode($_POST['clust'], true);
- for($i=2; $i<=10; $i++){
- if($i==$cl){
- echo '<option value="'.$i.'" selected>'.$i.'</option>';
- }else{
- echo '<option value="'.$i.'">'.$i.'</option>';
- }
- }
- ?>
- </select>
- </div> -->
- <!-- map -->
- <?php
- include 'kendari.svg';
- ?>
- <!-- map -->
- </div>
- <div class="col-md-6">
- <div class="header">
- <div class="nama_kecamatan">
- </div>
- </div>
- <div class="table-responsive">
- <table class="table table-bordered table-striped table-hover">
- <thead>
- <tr>
- <th rowspan="2">No.</th>
- <th rowspan="2" align="center">Tahun</th>
- <th rowspan="2" align='center'>Jumlah Penduduk</th>
- <th colspan="3" align='center'>Jumlah Kasus</th>
- </tr>
- <tr>
- <th align='center'>DBD</th>
- <th align='center'>Diare</th>
- <th align='center'>TBC</th>
- </tr>
- </thead>
- <tbody id="table_select">
- <tr>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- </tbody>
- </table>
- </div>
- <div id="descUun">
- </div>
- </div>
- </div>
- <div class="well">
- <?php
- include_once 'data_kecamatan.php';
- //untuk mewarnai map di js
- $region_color = json_encode($region);
- echo "<script> var region_color = ".$region_color."; </script>";
- //untuk mewarnai map di js
- if(isset($_POST['submit'])) {
- $data_penyakit = json_decode($_POST['data_penyakit_dipilih'], true);
- // $jml_clustering = json_decode($_POST['clust'], true);
- $jenis_penyakit = json_encode($data_penyakit['penyakit']);
- echo "<script> var jenis_penyakit = ".$jenis_penyakit."; </script>";
- $data_penyakit_baru = Array();
- for ($i=0; $i < count($region) ; $i++) {
- $data_penyakit_baru[$region[$i]['id_region']] = Array();
- $arr1 = Array();
- for ($j=2012; $j <=2016 ; $j++) {
- for ($k=0; $k <count($data_penyakit)-1 ; $k++) {
- if($j==$data_penyakit[$k]['tahun'] && $data_penyakit[$k]['kecamatan']==$region[$i]['id_region']){
- $arr1[$j] = $data_penyakit[$k]['jumlah_penderita'];
- }
- //if($j==2017){
- // $arr1[2017] = $data_penyakit[$k]['jumlah_penduduk'];
- //}
- }
- }
- $data_penyakit_baru[$region[$i]['id_region']] = $arr1;
- }
- echo "<script> var classF = ".json_encode($data_penyakit_baru)."; </script>";
- // Euclidien Distance Penyakit
- $euclidien_table = Array();
- foreach ($region as $reg1 => $r1) {
- $arr1 = Array();
- foreach ($data_penyakit_baru as $key => $value) {
- $arr1[$key] = $value;
- // echo $key."<br>";
- }
- $euclidien_table[$r1['id_region']] = $arr1;
- }
- // Euclidien Perhitungan
- $euclidien_distance = array();
- $euclidien_distance = mergeCluster($euclidien_table, $euclidien_distance, $data_penyakit_baru);
- // var_dump($euclidien_distance);
- $euclidien_distance_copy = $euclidien_distance;
- $new_region = false;
- $check = true;
- $test = 1;
- // print_r($euclidien_distance);
- $region_copy = $region;
- $data_merge = array();
- //dataset start
- while ($check) {
- if(count($euclidien_distance)==3){
- $check = false;
- $clustered = json_encode($euclidien_distance);
- echo "<script> var clustered = ".$clustered."; </script>";
- }
- echo "<table class='table table-hovered table-striped table-hovered'>";
- echo "<thead>
- <tr>
- <td>X</td>";
- $min_val = 2147483646; //max value for int
- $find_min = false;
- $col_remove = array();
- $tmp_arr = array();
- //table header for region
- foreach ($region as $key => $value) {
- echo "<td>(".$value['id_region'].")".$value['region_name']."</td>";
- }
- //table header for region
- echo "</tr>
- </thead>";
- echo "<tbody>";
- //Euclidien_Distance start
- foreach ($euclidien_distance as $key => $value) {
- echo "<tr>";
- echo "<td>".$key."</td>";
- foreach($col_remove as $rm){
- unset($value[$rm]);
- }
- $prev_min = 2147483646;
- $data_min = array();
- foreach ($value as $k => $v) {
- // mencari nilai terendah
- $prev_min = $min_val;
- if($v!==0){
- $min_val = min($min_val, $v);
- if($prev_min !== $min_val){
- $tmp_arr = array($key, $k);
- $find_min = true;
- }
- }
- echo "<td align=''>".$v."</td>";
- }
- echo "</tr>";
- }
- //Euclidien_Distance end
- echo "</tbody>";
- echo "</table>";
- //data merge remove duplicate key
- foreach ($data_merge as $dm_key => $dm_value) {
- //remove from data merge
- foreach ($tmp_arr as $tmp_key => $tmp_value) {
- if ($dm_key==$tmp_value && count($data_merge)>1) {
- unset($data_merge[$dm_key]);
- }
- }
- //remove from Euclidien_Distance
- foreach ($euclidien_distance as $ed_key => $ed_value) {
- if($dm_key==$ed_key){
- unset($euclidien_distance[$ed_key]);
- }
- }
- //remove from deep Euclidien_Distance
- foreach (array_keys($euclidien_distance) as $ak_key) {
- // echo 'here'.$ak_key."<br>";
- unset($euclidien_distance[$ak_key][$dm_key]);
- }
- }
- //reset data merge
- $tmp_arr_resolve = array();
- foreach ($tmp_arr as $tmp_key => $tmp_value) {
- if(!is_int($tmp_value)){
- $tmp_explode = explode('_', $tmp_value);
- foreach ($tmp_explode as $exp_value) {
- $tmp_arr_resolve[] = $exp_value;
- }
- }else {
- $tmp_arr_resolve[] = $tmp_value;
- }
- }
- ksort($data_merge);
- //data merge remove duplicate key
- //create new key name
- if($find_min){
- $new_name = '';
- foreach ($tmp_arr_resolve as $key => $value) {
- if($key == 0){
- $new_name = $value;
- }else{
- $new_name = $new_name."_".$value;
- }
- }
- $data_merge[$new_name] = $tmp_arr_resolve;
- }
- //create new key name
- // print_r($region);
- //clustering disini nah
- foreach ($data_merge as $key => $value) {
- $all_key = explode("_", $key);
- foreach ($all_key as $val) {
- $col_remove[$key][] = $val;
- unset($euclidien_distance[$val]);
- $unset_reg=0;
- foreach ($region as $reg_key => $reg_value) {
- if(($val)==$reg_value['id_region']){
- unset($region[$reg_key]);
- }
- }
- $new_region = true;
- }
- }
- //clustering disini nah
- //create region name
- if($new_region){
- foreach ($col_remove as $col_key => $col_rm) {
- $new_region_name = '';
- $new_region_index = '';
- $new_elem_region = array();
- foreach ($col_rm as $sub_key => $sub_val) {
- if($new_region_name !== ''){
- $new_region_name = $new_region_name.", ".$region_copy[$sub_val-1]['region_name'];
- $new_region_index = $new_region_index."_".($sub_val);
- }else{
- $new_region_name = $region_copy[$sub_val-1]['region_name'];
- $new_region_index = ($sub_val);
- }
- $new_elem_region["id_region"] = $new_region_index;
- $new_elem_region["region_name"] = $new_region_name;
- $new_elem_region["region_code"] = $new_region_name;
- }
- }
- array_unshift($region, $new_elem_region);
- $new_region= false;
- }
- //create region name
- //perhitungan data baru Euclidien Distance
- $new_euclidien_data = array();
- $new_euclidien_data = newMergeCluster($euclidien_table, $euclidien_distance, $data_penyakit_baru, $new_euclidien_data, $data_merge);
- //perhitungan data baru Euclidien Distance
- //memasukkan data clustering baru
- foreach ($new_euclidien_data as $key => $value) {
- $euclidien_distance[$key] = $value;
- }
- // ksort($region);
- ksort($euclidien_distance); //re-sorting array by key index
- //memasukkan data clustering baru
- //unset and set new euc data
- foreach (array_keys($euclidien_distance) as $key) {
- foreach ($data_merge as $k => $value) {
- $all_key = explode("_", $k);
- foreach ($all_key as $val) {
- unset($euclidien_distance[$key][$val]);
- }
- }
- //set new deep data array
- foreach ($new_euclidien_data as $ned_key => $ned_val) {
- $tmp_val_new = 0;
- if($key!==$ned_key){
- foreach (array_keys($ned_val) as $ned_key2) {
- if(!is_int($key)){
- $all_key = explode('_', $key);
- foreach ($all_key as $key_value) {
- if($ned_val[$key_value] > $tmp_val_new){
- $tmp_val_new = $ned_val[$key_value]; //set value new
- }
- }
- }else {
- if($key==$ned_key2){
- $tmp_val_new = $ned_val[$ned_key2]; //set value new data not clustered
- }
- }
- }
- }else {
- $tmp_val_new = 0;
- }
- $euclidien_distance[$key][$ned_key] = $tmp_val_new;
- ksort($euclidien_distance[$key]);
- }
- //set new deep data array
- }
- //unset and set new euc data
- //remove region
- foreach ($tmp_arr as $tmp_key => $tmp_value) {
- foreach ($region as $reg_key => $reg_value) {
- if ((string)$tmp_value==$reg_value['id_region']) {
- unset($region[$reg_key]);
- }
- }
- }
- //remove region
- echo "<br>".$test.".... MIN VAL : ".count($euclidien_distance);
- // print_r($data_merge);
- echo " => ".$min_val."<br><br>";
- asort($region); //re-sort region
- // print_r($region);
- $last = [];
- foreach ($region as $key => $value) {
- if($value['id_region']=='10'){
- $last = $value;
- unset($region[$key]);
- $region[] = $last;
- }
- }
- $test++;
- }
- //dataset end
- }
- // end submit
- function mergeCluster($euclidien_table, $euclidien_distance, $data_penyakit_baru){
- foreach ($euclidien_table as $key => $value) {
- foreach ($value as $val => $v) {
- if($val==$key){
- $euclidien_distance[$key][$val] = 0;
- }else{
- $abs = array();
- for ($tahun=2012; $tahun<2018 ; $tahun++) {
- // echo $data_penyakit_baru[$key][$tahun]." + ".$data_penyakit_baru[$val][$tahun]."<br>";
- // echo $data_penyakit_baru[$key][$tahun]."--".$data_penyakit_baru[$val][$tahun]."__";
- $abs[] = pow(abs($data_penyakit_baru[$key][$tahun] - $data_penyakit_baru[$val][$tahun]), 2);
- }
- $tempCalc = 0;
- for ($j=0; $j < count($abs) ; $j++) {
- $tempCalc = $tempCalc + $abs[$j];
- }
- $euc = sqrt($tempCalc);
- $euclidien_distance[$key][$val] = number_format($euc, 2, '.', '');
- // $euclidien_distance[$key][$val] = $euc;
- }
- }
- }
- return $euclidien_distance;
- }
- function newMergeCluster($euclidien_table, $euclidien_distance, $data_penyakit_baru, $new_euclidien_data, $data_merge){
- $temp_euc = array();
- foreach ($data_merge as $key => $value) {
- //set all values
- foreach ($value as $v => $val) {
- if(is_int($val)){
- foreach ($euclidien_table as $et_key => $et_val) {
- $abs = array();
- for ($tahun=2012; $tahun<2018 ; $tahun++) {
- $abs[] = pow(abs($data_penyakit_baru[$val][$tahun] - $data_penyakit_baru[$et_key][$tahun]), 2);
- }
- $tempCalc = 0;
- for ($j=0; $j < count($abs) ; $j++) {
- $tempCalc = $tempCalc + $abs[$j];
- }
- $euc = sqrt($tempCalc);
- $temp_euc[$val][$et_key] = number_format($euc, 2, '.', '');
- }
- }else{
- $val_explode = explode('_', $val);
- foreach ($val_explode as $val_value) {
- foreach ($euclidien_table as $et_key => $et_val) {
- $abs = array();
- for ($tahun=2012; $tahun<2018 ; $tahun++) {
- $nn = explode('_', $val);
- foreach ($nn as $n_key => $n_val) {
- if((int)$n_val!==$et_key){
- $abs[$n_key][] = pow(abs($data_penyakit_baru[$n_val][$tahun] - $data_penyakit_baru[$et_key][$tahun]), 2);
- // echo $data_penyakit_baru[$n_val][$tahun]." - ".$data_penyakit_baru[$et_key][$tahun]."<br>";
- // echo $n_val." xx ".$et_key."<br>";
- }
- }
- }
- $tempCalc = 0;
- foreach ($abs as $abs_key => $abs_value) {
- $temp_value = 0;
- for ($j=0; $j < count($abs_value) ; $j++) {
- $temp_value = $temp_value + $abs_value[$j];
- }
- if($temp_value > $tempCalc){
- $tempCalc = $temp_value;
- }
- }
- $euc = sqrt($tempCalc);
- $qwe = number_format($euc, 2, '.', '');
- $temp_euc[$val_value][$et_key] = number_format($euc, 2, '.', '');
- }
- }
- }
- }
- ksort($temp_euc);
- //set all values
- //mencari nilai terbesar dari semua values
- $max_temp = 0;
- $all_key = explode('_', $key);
- $temp_value = array();
- foreach ($euclidien_table as $et_key => $et_val) {
- $temp_distance = 0;
- foreach ($value as $v_key => $val) {
- if(is_int($val)){
- if(!in_array($et_key, $value)){
- if($temp_euc[$val][$et_key] > $temp_distance) {
- $temp_distance = $temp_euc[$val][$et_key];
- }
- $new_euclidien_data[$key][$et_key] = $temp_distance;
- }else {
- $new_euclidien_data[$key][$et_key] = 0;
- }
- }else {
- $val_explode = explode('_', $val);
- foreach ($val_explode as $ex_value) {
- if($temp_euc[$ex_value][$et_key] > $temp_distance) {
- $temp_distance = $temp_euc[$ex_value][$et_key];
- }
- $new_euclidien_data[$key][$et_key] = $temp_distance;
- }
- }
- }
- }
- //mencari nilai terbesar
- }
- return $new_euclidien_data;
- }
- ?>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script type="text/javascript">
- if (typeof clustered !== 'undefined'){
- var index = 3;
- var classList = [];
- var no = 0;
- var class_zxc = [];
- var zxcv = 1;
- for(var cF in classF){
- var average = 0;
- average = (parseInt(classF[cF]['2012'])+
- parseInt(classF[cF]['2013'])+
- parseInt(classF[cF]['2014'])+
- parseInt(classF[cF]['2015'])+
- parseInt(classF[cF]['2016']))/5;
- class_zxc[zxcv] = average;
- zxcv++;
- }
- for(var key in clustered) {
- var obj = clustered[key];
- var temClassVal = 0;
- var region_zxc = key.split("_");
- for(var x in region_zxc){
- temClassVal += parseFloat(class_zxc[region_zxc[x]]);
- //console.log(class_zxc[region_zxc[x]] + " => " + region_zxc[x]);
- }
- temClassVal = temClassVal/(region_zxc.length);
- classList[no] = {'value': temClassVal, 'key': key};
- no++;
- }
- //sorting class
- classList.sort((a,b) => (a.value > b.value) ? 1 : ((b.value > a.value) ? -1 : 0));
- var desc = document.getElementById("descUun").innerHTML = "<p class='h5'>Keterangan : <br>" +
- "Hasil Pengelompokkan dan Klasifikasi Penyakit <b>"+jenis_penyakit.toUpperCase()+"</b> "+ "</p>";
- for(cL in classList){
- var region_base = classList[cL].key.split("_");
- if(cL==0){
- desc = document.getElementById("descUun").innerHTML += "<div class='box_sakit_"+index+"'> <b> Baik</b>";
- }else if(cL==1){
- desc = document.getElementById("descUun").innerHTML += "<div class='box_sakit_"+index+"'> <b> Cukup Rawan</b>";
- }else if(cL==2){
- desc = document.getElementById("descUun").innerHTML += "<div class='box_sakit_"+index+"'> <b> Rawan</b>";
- }
- desc = document.getElementById("descUun").innerHTML += "</div>";
- for (var i=0; i<region_color.length; i++) {
- for(var j=0; j<region_base.length; j++){
- if(region_color[i]['id_region']==region_base[j]){
- desc = document.getElementById("descUun").innerHTML += region_color[i]["region_name"]+ ", ";
- var element = document.getElementById(region_color[i]['region_code']);
- element.classList.add("sakit_"+index, "sakit");
- }
- }
- }
- desc = document.getElementById("descUun").innerHTML += "<b>dengan index : "+(classList[cL]['value']).toFixed(2)+"</b>";
- index--;
- }
- }else {
- for (var i = 0; i < region_color.length; i++) {
- var element = document.getElementById(region_color[i]['region_code']);
- element.classList.add("sakit_"+((i%3)+1), "sakit");
- }
- }
- </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement