Skip to content

Instantly share code, notes, and snippets.

@adibenc
Last active November 9, 2019 02:53
Show Gist options
  • Save adibenc/1aaf31fc002494a2388ec83457a82623 to your computer and use it in GitHub Desktop.
Save adibenc/1aaf31fc002494a2388ec83457a82623 to your computer and use it in GitHub Desktop.
Unique date select
<?php
class Gerak_model extends CI_Model{
function tampil_data(){
$data = $this->db->get('data_gerak');
}
function input_data($data,$table){
$this->db->insert($table,$data);
}
// $time1 = $tanggal." ".($waktu-1).':'.'00'.':'.'00';
// $time2 = $tanggal." ".($waktu).':'.'00'.':'.'00';
// $query = "SELECT count(*) as jumlah FROM data_gerak WHERE tanggal BETWEEN '".$time1."' and '".$time2."'";
// -- group by substr(tanggal,1,10)";
// echo $this->db->last_query();
// return $this->db->last_query();
function getDistinctDate(){
$query = "SELECT DISTINCT substr(tanggal,1,10) as gerakdate FROM data_gerak";
$data = $this->db->query($query);
return $data;
}
function getDataByTime($tanggal=0){
$query = "SELECT count(*) as jumlah FROM data_gerak WHERE substr(tanggal,1,10)='".$tanggal."'";
$data = $this->db->query($query)->row();
return $data->jumlah;
}
function getDataGroupDay(){
$time1 = $tanggal." ".($waktu-1).':'.'00'.':'.'00';
$time2 = $tanggal." ".($waktu).':'.'00'.':'.'00';
$query = "SELECT count(*) as jumlah FROM data_gerak
group by substr(tanggal,1,10)";
$data = $this->db->query($query);
// return $this->db->last_query();
return $data;
}
function getPerHour($time1, $time2, $date){
$query = 'SELECT count(*) as jumlah
FROM `data_gerak`
WHERE date(tanggal) = "'.$date.'" and hour(tanggal)
BETWEEN "'.$time1.'" and "'.$time2.'"';
$q=$this->db->query($query);
return $q->result_array();
}
function truncateData(){
$query = "TRUNCATE TABLE data_gerak";
$this->db->query($query);
}
}
?>
<?php
ini_set('max_execution_time', 0);
ini_set('memory_limit','2048M');
defined('BASEPATH') OR exit('No direct script access allowed');
class Data{
}
class Grafik extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model("Grafik_model");
$this->load->model("Gerak_model");
$this->load->library('form_validation');
}
public function index($date)
{
$data["g_perwaktu"] = $this->Product_model->getAll();
$data['tgl'] = $date;
$this->load->view("admin/product/g_perwaktu2", $data);
}
public function getPerHari()
{
// $data["g_perhari"] = $this->Grafik_model->getPerDay();
// $data['tgl'] = $date;
// $data["perWaktu"] =$this->Grafik_model->getPerHour()
$this->load->view("admin/product/g_perhari");
}
public function getPerJam($date='2019-08-05')
{
$data["g_perwaktu"] = $this->Product_model->getAll();
$data['tgl'] = $date;
$dir = "data/";
$files = scandir($dir);
$data['ls']=$this->getDir();
$data['statistik']=$this->getStatistik($date);
$this->load->view("admin/product/g_perwaktu",$data);
}
public function preout($v=""){
echo "<pre>";
var_dump($v);
echo "</pre>";
}
public function getDir($dir='data/'){
$files = scandir($dir);
// print_r($files);
//gen label tanggal
$arrayTanggal=[];
$at=0;
foreach($files as $f){
if($at<2){
$at++;
continue;
}
$st=substr($f,0,4)."-".substr($f,4,2)."-".substr($f,6,2);
// echo $st;
$arrayTanggal[]=$st;
$at++;
}
return $arrayTanggal;
}
public function getDbDate(){
//gen label tanggal
$arrayTanggal=[];
$at=0;
$gerak = $this->Gerak_model->getDistinctDate();
$gas = $this->Grafik_model->getDistinctDate();
foreach($gerak->result() as $ge){
$arrayTanggal[]=$ge->gerakdate;
}
foreach($gas->result() as $g){
$arrayTanggal[]=$g->gasdate;
}
$dir=$this->getDir();
$arr=array_unique($arrayTanggal);
$arrayTanggal=[];
foreach($arr as $e){
$arrayTanggal[]=$e;
}
return $arrayTanggal;
}
public function getData(){
header('Content-Type:text/json');
$dir = "data/";
$files = scandir($dir);
// print_r($files);
//gen label tanggal
// $arrayTanggal=$this->getDir();
$arrayTanggal=$this->getDbDate();
$labels=$arrayTanggal;
$datasets=[];
$data=[
["Sensor Gas",'rgb(40, 178, 170, 0.2)','rgba(135, 206, 250, 1)'],
["Gerakan",'#B0C4DE','#00FFFF']
];
$dc=0;
foreach($data as $d){
$singleset=new Data();
$singleset->label=$d[0];
$dataarr=[];
$bgarr=[];
$borderarr=[];
// get from db
//iterate
foreach($arrayTanggal as $att){
$jumlah="";
if($dc==0){
//get data gas by tanggal
$jumlah = $this->Grafik_model->getDataByTime($att);
}else{
//get data gerak by tanggal
$jumlah = $this->Gerak_model->getDataByTime($att);
}
$dataarr[]=$jumlah;
}
foreach($labels as $l){
$dbarr=[];
$bgarr[]=$d[1];
$borderarr[]=$d[2];
}
// $dataarr=$dbarr;
$singleset->data=$dataarr;
$singleset->backgroundColor=$bgarr;//json_encode();
$singleset->borderColor=$borderarr;//json_encode($borderarr);
$singleset->borderWidth=1;
$datasets[]=$singleset;
$dc++;
}
$ret=new Data();
$ret->labels=$labels;
$ret->datasets=$datasets;
echo json_encode($ret);
}
public function getDataWaktu($tanggal='2019-08-05'){
header('Content-Type:text/json');
// print_r($files);
//gen label tanggal
$tanggal=$this->input->get('tanggal');
$labels=[
['07','08','Pagi'],
['11','12','Siang'],
['16','17','Sore'],
];
$datasets=[];
$data=[
["Jumlah Kepadatan",'#B0C4DE','#00FFFF'],
["Rata-rata Polusi Per Tanggal",'rgb(40, 178, 170, 0.2)','rgba(135, 206, 250, 1)'],
];
$dc=0;
foreach($data as $d){
$singleset=new Data();
$singleset->label=$d[0];
$dataarr=[];
$bgarr=[];
$borderarr=[];
// get from db
//iterate
foreach($labels as $att){
$jumlah="";
if($dc==0){
//get data gerak by time tgl
$jumlah = $this->Gerak_model->getPerHour($att[0], $att[1], $tanggal)[0]['jumlah'];
}else{
//get data gas by time tgl
$jumlah = $this->Grafik_model->getPerHour($att[0], $att[1], $tanggal)->rata;
}
// $dbarr[]=$jumlah;
$dataarr[]=$jumlah;
}
foreach($labels as $l){
$dbarr=[];
$bgarr[]=$d[1];
$borderarr[]=$d[2];
}
// $dataarr=$dbarr;
$singleset->data=$dataarr;
$singleset->backgroundColor=$bgarr;//json_encode();
$singleset->borderColor=$borderarr;//json_encode($borderarr);
$singleset->borderWidth=1;
$datasets[]=$singleset;
$dc++;
}
$ret=new Data();
$ret->labels=$labels;
$ret->datasets=$datasets;
echo json_encode($ret);
}
public function getStatistik($tanggal='2019-08-05'){
$tgl=$tanggal;
$st=[];
$dgaPagi =$this->Grafik_model->getPerHour('07', '08', $tgl)->rata;
$dgaSiang =$this->Grafik_model->getPerHour('11', '12', $tgl)->rata;
$dgaSore =$this->Grafik_model->getPerHour('16', '17', $tgl)->rata;
$dgePagi =$this->Gerak_model->getPerHour('07', '08', $tgl)[0]['jumlah'];
$dgeSiang =$this->Gerak_model->getPerHour('11', '12', $tgl)[0]['jumlah'];
$dgeSore =$this->Gerak_model->getPerHour('16', '17', $tgl)[0]['jumlah'];
$data=["Nilai",];
$ret=[];
foreach($data as $d){
$da=new Data();
$da->nama=$d;
$da->dgaPagi=$dgaPagi?$dgaPagi:0;
$da->dgaSiang=$dgaSiang?$dgaSiang:0;
$da->dgaSore=$dgaSore?$dgaSore:0;
$da->dgePagi=$dgePagi?$dgePagi:0;
$da->dgeSiang=$dgeSiang?$dgeSiang:0;
$da->dgeSore=$dgeSore?$dgeSore:0;
$d=$da;
$ret[]=$d;
}
// $st=$data;
// var_dump($st);
return $ret;
}
public function getgerak(){
$this->Gerak_model->truncateData();
$dir = "data/";
$files = scandir($dir);
//print_r($files);
for($i=0;$i<count($files);$i++)
{ if(substr($files[$i],0,4)=='2019')
{
// echo "Folder = ".$files[$i]." berisi : <br/>";
// $files[$i] = $dir."/".$files[$i];
$file_avi = scandir($dir."/".$files[$i]);
$no=1;
for($j=0;$j<count($file_avi);$j++)
{ if(substr($file_avi[$j],-4)=='.avi')
{
$path_file_avi = $files[$i]."/".$file_avi[$j];
// masukkan ke db dan buat grafiknya, digabung dgn data mq7
// echo $no.". ".$file_avi[$j]." >> ".date("d-m-Y H:i:s",filemtime($path_file_avi))." >> ".filesize($path_file_avi)." byte <br/>";
//========================================================================================
// mecah waktu
//========================================================================================
$array_name = explode("_", $file_avi[$j]);
$waktuText = $array_name[3];
$waktuTextArray = str_split($waktuText);
$waktu=$waktuTextArray[0].$waktuTextArray[1].":".$waktuTextArray[2].$waktuTextArray[3].":".$waktuTextArray[4].$waktuTextArray[5];
$tanggal = $files[$i]." ".$waktu;
$nama = $file_avi[$j];
//=======================
$data = array(
'nama' => $nama,
'tanggal' => $tanggal,
);
$this->Gerak_model->input_data($data,'data_gerak');
// echo $no.". ".$file_avi[$j]." >> ".date("d-m-Y H:i:s",filemtime($path_file_avi))." >> ".filesize($path_file_avi)." byte <br/>";
$no++;
}
}
}
}
echo "Sukses Simpan!";
}
}
?>
<?php
class Grafik_model extends CI_Model{
function report(){
$query = $this->db->query("SELECT * from gas");
if($query->num_rows() > 0){
foreach($query->result() as $data){
$hasil[] = $data;
}
return $hasil;
}
}
function getDistinctDate(){
$query = "SELECT DISTINCT substr(waktu,1,10) as gasdate FROM gas";
$data = $this->db->query($query);
return $data;
}
// $time1 = $tanggal." ".($waktu-1).':'.'00'.':'.'00';
// $time2 = $tanggal." ".($waktu).':'.'00'.':'.'00';
// $query = "SELECT count(*) as jumlah FROM data_gerak WHERE tanggal BETWEEN '".$time1."' and '".$time2."'";
function getDataByTime($tanggal=0){
$query = "SELECT count(*) as jumlah FROM gas WHERE substr(waktu,1,10)='".$tanggal."'";
$data = $this->db->query($query)->row();
return $data->jumlah;
}
function getPerHour($time1, $time2, $date){
$query = 'SELECT AVG(ppm) as rata,count(*) as jumlah
FROM `gas` WHERE date(waktu) = "'.$date.'" and hour(waktu) BETWEEN "'.$time1.'" and "'.$time2.'"';
$q=$this->db->query($query);
return $q->row();
}
function getPerDay($date){
$query = 'SELECT AVG(ppm) as rata FROM `gas` WHERE date(waktu) = "'.$date.'"';
return $this->db->query($query)->result_array();
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment