first commit
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'b.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// plus minus report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$plus_lists = [] ;
|
||||
$minus_lists = [] ;
|
||||
$select_adjustment = $mysqli->query( "SELECT
|
||||
SUM(a.point) as total,
|
||||
SUM(CASE WHEN a.point > 0 THEN a.point ELSE 0 END) AS totalplus,
|
||||
SUM(CASE WHEN a.point < 0 THEN a.point ELSE 0 END) AS totalminus,
|
||||
a.staff_id
|
||||
FROM staff_adjustment_point a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL AND a.created_at LIKE '%" . $date_time . "%'
|
||||
AND b.deleted_at IS NULL
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
|
||||
|
||||
if ( $select_adjustment->num_rows > 0 ){
|
||||
while ( $row_adjustment = $select_adjustment->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_adjustment['staff_id']] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_adjustment['total'] ) ;
|
||||
|
||||
$split_lists['plus'][$get_department] = ( $split_lists['plus'][$get_department] + $row_adjustment['totalplus'] ) ;
|
||||
$split_lists['minus'][$get_department] = ( $split_lists['minus'][$get_department] + $row_adjustment['totalminus'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Adjustment by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// group chart
|
||||
var groupchart = new CanvasJS.Chart("groupContainer", {
|
||||
animationEnabled: true,
|
||||
title:{
|
||||
text: "Total of Adjustment by Department ( Plus & Minus )"
|
||||
},
|
||||
axisY: {
|
||||
title: "Point",
|
||||
includeZero: true
|
||||
},
|
||||
legend: {
|
||||
cursor:"pointer",
|
||||
itemclick : toggleDataSeries
|
||||
},
|
||||
toolTip: {
|
||||
shared: true,
|
||||
content: toolTipFormatter
|
||||
},
|
||||
data: <?= json_encode($split_grouplists) ?>
|
||||
});
|
||||
groupchart.render();
|
||||
|
||||
function toolTipFormatter(e) {
|
||||
var str = "";
|
||||
var total = 0 ;
|
||||
var str3;
|
||||
var str2 ;
|
||||
for (var i = 0; i < e.entries.length; i++){
|
||||
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
|
||||
total = e.entries[i].dataPoint.y + total;
|
||||
str = str.concat(str1);
|
||||
}
|
||||
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
|
||||
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
|
||||
return (str2.concat(str)).concat(str3);
|
||||
}
|
||||
|
||||
function toggleDataSeries(e) {
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
}
|
||||
else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
groupchart.render();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="groupContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// reject report
|
||||
$reject_lists = [] ;
|
||||
$select_association = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM staff_association a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'rejected', 'cancelled' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
|
||||
if ( $select_association->num_rows > 0 ){
|
||||
while ( $row_association = $select_association->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_association['staff_id']] ;
|
||||
|
||||
$reject_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_association['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// complete report
|
||||
$complete_lists = [] ;
|
||||
$select_association = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM staff_association a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'confirmed', 'rated' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_association->num_rows > 0 ){
|
||||
while ( $row_association = $select_association->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_association['staff_id']] ;
|
||||
|
||||
$complete_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_association['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// reject chart
|
||||
var rejectchart = new CanvasJS.Chart("rejectContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Reject by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($reject_lists) ?>
|
||||
}]
|
||||
});
|
||||
rejectchart.render() ;
|
||||
|
||||
|
||||
//
|
||||
var chart = new CanvasJS.Chart("chartContainer", {
|
||||
animationEnabled: true,
|
||||
theme: "light2",
|
||||
title:{
|
||||
text: "Total of Completed by Department"
|
||||
},
|
||||
axisY: {
|
||||
title: "Total"
|
||||
},
|
||||
data: [{
|
||||
type: "column",
|
||||
showInLegend: true,
|
||||
legendMarkerColor: "grey",
|
||||
legendText: "Department",
|
||||
dataPoints: <?= json_encode($complete_lists) ?>
|
||||
}]
|
||||
});
|
||||
chart.render();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="rejectContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="chartContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$select_attendance = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total,
|
||||
a.staff_id
|
||||
FROM staff_attendance_list a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL AND a.list_work_day > 0 AND a.list_date LIKE '%" . $date_time . "%'
|
||||
" . str_replace( 'a.branch_id', 'b.branch_id', $search_query ) . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
if ( $select_attendance ->num_rows > 0 ){
|
||||
while ( $row_attendance = $select_attendance->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_attendance['staff_id']] ;
|
||||
$type = $row_attendance['type'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_attendance['total'] ) ;
|
||||
|
||||
$split_lists[$type][$get_department] = ( $split_lists[$type][$get_department] + $row_attendance['total'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Attendance by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-12">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$select_attendance = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total,
|
||||
a.staff_id
|
||||
FROM staff_attendance_list a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL AND a.list_date LIKE '%" . $date_time . "%'
|
||||
" . str_replace( 'a.branch_id', 'b.branch_id', $search_query ) . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
if ( $select_attendance ->num_rows > 0 ){
|
||||
while ( $row_attendance = $select_attendance->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_attendance['staff_id']] ;
|
||||
$type = $row_attendance['type'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_attendance['total'] ) ;
|
||||
|
||||
$split_lists[$type][$get_department] = ( $split_lists[$type][$get_department] + $row_attendance['total'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Attendance by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-12">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// reject report
|
||||
$reject_lists = [] ;
|
||||
$select_grievance = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM grievance a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'rejected' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
|
||||
if ( $select_grievance->num_rows > 0 ){
|
||||
while ( $row_grievance = $select_grievance->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_grievance['staff_id']] ;
|
||||
|
||||
$reject_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_grievance['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// complete report
|
||||
$complete_lists = [] ;
|
||||
$select_grievance = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM grievance a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'confirmed' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_grievance->num_rows > 0 ){
|
||||
while ( $row_grievance = $select_grievance->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_grievance['staff_id']] ;
|
||||
|
||||
$complete_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_grievance['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// reject chart
|
||||
var rejectchart = new CanvasJS.Chart("rejectContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Reject by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($reject_lists) ?>
|
||||
}]
|
||||
});
|
||||
rejectchart.render() ;
|
||||
|
||||
|
||||
//
|
||||
var chart = new CanvasJS.Chart("chartContainer", {
|
||||
animationEnabled: true,
|
||||
theme: "light2",
|
||||
title:{
|
||||
text: "Total of Completed by Department"
|
||||
},
|
||||
axisY: {
|
||||
title: "Total"
|
||||
},
|
||||
data: [{
|
||||
type: "column",
|
||||
showInLegend: true,
|
||||
legendMarkerColor: "grey",
|
||||
legendText: "Department",
|
||||
dataPoints: <?= json_encode($complete_lists) ?>
|
||||
}]
|
||||
});
|
||||
chart.render();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="rejectContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="chartContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,167 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'b.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$select_latenesss = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total,
|
||||
a.staff_id
|
||||
FROM staff_attendance_list a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL AND a.list_late != '00:00:00' AND a.list_date LIKE '%" . $date_time . "%'
|
||||
" . str_replace( 'a.branch_id', 'b.branch_id', $search_query ) . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_latenesss->num_rows > 0 ){
|
||||
while ( $row_latenesss = $select_latenesss->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_latenesss['staff_id']] ;
|
||||
$type = $row_latenesss['type'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_latenesss['total'] ) ;
|
||||
|
||||
$split_lists[$type][$get_department] = ( $split_lists[$type][$get_department] + $row_latenesss['total'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Lateness King by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// group chart
|
||||
var groupchart = new CanvasJS.Chart("groupContainer", {
|
||||
animationEnabled: true,
|
||||
title:{
|
||||
text: "Total of Lateness King by Department ( Type )"
|
||||
},
|
||||
axisY: {
|
||||
title: "Type",
|
||||
includeZero: true
|
||||
},
|
||||
legend: {
|
||||
cursor:"pointer",
|
||||
itemclick : toggleDataSeries
|
||||
},
|
||||
toolTip: {
|
||||
shared: true,
|
||||
content: toolTipFormatter
|
||||
},
|
||||
data: <?= json_encode($split_grouplists) ?>
|
||||
});
|
||||
groupchart.render();
|
||||
|
||||
function toolTipFormatter(e) {
|
||||
var str = "";
|
||||
var total = 0 ;
|
||||
var str3;
|
||||
var str2 ;
|
||||
for (var i = 0; i < e.entries.length; i++){
|
||||
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
|
||||
total = e.entries[i].dataPoint.y + total;
|
||||
str = str.concat(str1);
|
||||
}
|
||||
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
|
||||
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
|
||||
return (str2.concat(str)).concat(str3);
|
||||
}
|
||||
|
||||
function toggleDataSeries(e) {
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
}
|
||||
else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
groupchart.render();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="groupContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'b.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$select_latenesss = $mysqli->query( "SELECT
|
||||
COUNT(a.type) as total,
|
||||
a.staff_id,
|
||||
a.type
|
||||
FROM staff_attendance_summary a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL AND a.created_at LIKE '%" . $date_time . "%'
|
||||
AND a.type IN ( 'late', 'absent' )
|
||||
AND b.deleted_at IS NULL
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id, a.type" ) ;
|
||||
if ( $select_latenesss->num_rows > 0 ){
|
||||
while ( $row_latenesss = $select_latenesss->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_latenesss['staff_id']] ;
|
||||
$type = $row_latenesss['type'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_latenesss['total'] ) ;
|
||||
|
||||
$split_lists[$type][$get_department] = ( $split_lists[$type][$get_department] + $row_latenesss['total'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Lateness King by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// group chart
|
||||
var groupchart = new CanvasJS.Chart("groupContainer", {
|
||||
animationEnabled: true,
|
||||
title:{
|
||||
text: "Total of Lateness King by Department ( Type )"
|
||||
},
|
||||
axisY: {
|
||||
title: "Type",
|
||||
includeZero: true
|
||||
},
|
||||
legend: {
|
||||
cursor:"pointer",
|
||||
itemclick : toggleDataSeries
|
||||
},
|
||||
toolTip: {
|
||||
shared: true,
|
||||
content: toolTipFormatter
|
||||
},
|
||||
data: <?= json_encode($split_grouplists) ?>
|
||||
});
|
||||
groupchart.render();
|
||||
|
||||
function toolTipFormatter(e) {
|
||||
var str = "";
|
||||
var total = 0 ;
|
||||
var str3;
|
||||
var str2 ;
|
||||
for (var i = 0; i < e.entries.length; i++){
|
||||
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
|
||||
total = e.entries[i].dataPoint.y + total;
|
||||
str = str.concat(str1);
|
||||
}
|
||||
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
|
||||
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
|
||||
return (str2.concat(str)).concat(str3);
|
||||
}
|
||||
|
||||
function toggleDataSeries(e) {
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
}
|
||||
else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
groupchart.render();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="groupContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'b.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$select_outstanding = $mysqli->query( "SELECT
|
||||
COUNT(a.type) as total,
|
||||
a.staff_id,
|
||||
a.type
|
||||
FROM staff_attendance_summary a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL AND a.created_at LIKE '%" . $date_time . "%'
|
||||
AND a.type IN ( 'passionate', 'merit' )
|
||||
AND b.deleted_at IS NULL
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id, a.type" ) ;
|
||||
if ( $select_outstanding->num_rows > 0 ){
|
||||
while ( $row_outstanding = $select_outstanding->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_outstanding['staff_id']] ;
|
||||
$type = $row_outstanding['type'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_outstanding['total'] ) ;
|
||||
|
||||
$split_lists[$type][$get_department] = ( $split_lists[$type][$get_department] + $row_outstanding['total'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Outstanding Employee by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// group chart
|
||||
var groupchart = new CanvasJS.Chart("groupContainer", {
|
||||
animationEnabled: true,
|
||||
title:{
|
||||
text: "Total of Outstanding Employee by Department ( Type )"
|
||||
},
|
||||
axisY: {
|
||||
title: "Type",
|
||||
includeZero: true
|
||||
},
|
||||
legend: {
|
||||
cursor:"pointer",
|
||||
itemclick : toggleDataSeries
|
||||
},
|
||||
toolTip: {
|
||||
shared: true,
|
||||
content: toolTipFormatter
|
||||
},
|
||||
data: <?= json_encode($split_grouplists) ?>
|
||||
});
|
||||
groupchart.render();
|
||||
|
||||
function toolTipFormatter(e) {
|
||||
var str = "";
|
||||
var total = 0 ;
|
||||
var str3;
|
||||
var str2 ;
|
||||
for (var i = 0; i < e.entries.length; i++){
|
||||
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
|
||||
total = e.entries[i].dataPoint.y + total;
|
||||
str = str.concat(str1);
|
||||
}
|
||||
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
|
||||
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
|
||||
return (str2.concat(str)).concat(str3);
|
||||
}
|
||||
|
||||
function toggleDataSeries(e) {
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
}
|
||||
else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
groupchart.render();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="groupContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'b.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$select_achievement = $mysqli->query( "SELECT
|
||||
SUM(a.staff_point_achievement) as totalpoint,
|
||||
a.staff_id
|
||||
FROM staff_monthly_achievement a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.reported_at LIKE '%" . $date_time . "%'
|
||||
AND b.deleted_at IS NULL
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
if ( $select_achievement ->num_rows > 0 ){
|
||||
while ( $row_achievement = $select_achievement->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_achievement['staff_id']] ;
|
||||
$type = $row_achievement['type'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_achievement['totalpoint'] ) ;
|
||||
|
||||
$split_lists[$type][$get_department] = ( $split_lists[$type][$get_department] + $row_achievement['totalpoint'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Point Achievement by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-12">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
// redeeem category
|
||||
$categories = [] ;
|
||||
$mysqli_category = $mysqli->query("SELECT a.category_id, b.title FROM redeem_category a
|
||||
LEFT JOIN redeem_category_translation b ON ( a.category_id = b.category_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en' ORDER BY a.sortable") ;
|
||||
if ( $mysqli_category->num_rows > 0 ){
|
||||
while ( $row_category = $mysqli_category->fetch_assoc() ){
|
||||
$categories[$row_category['category_id']] = $row_category['title'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// plus minus report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$plus_lists = [] ;
|
||||
$minus_lists = [] ;
|
||||
$select_redeem = $mysqli->query( "SELECT
|
||||
SUM(a.point) as totalpoint,
|
||||
a.staff_id,
|
||||
a.category_id
|
||||
FROM staff_redeem a
|
||||
WHERE a.deleted_at IS NULL AND a.created_at LIKE '%" . $date_time . "%'
|
||||
AND a.status = 'confirmed'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id, a.category_id" ) ;
|
||||
if ( $select_redeem->num_rows > 0 ){
|
||||
while ( $row_redeem = $select_redeem->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_redeem['staff_id']] ;
|
||||
$category_id = $row_redeem['category_id'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_redeem['totalpoint'] ) ;
|
||||
|
||||
$split_lists[$category_id][$get_department] = ( $split_lists[$category_id][$get_department] + $row_redeem['totalpoint'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $categories[$k_lists] ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Adjustment by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// group chart
|
||||
var groupchart = new CanvasJS.Chart("groupContainer", {
|
||||
animationEnabled: true,
|
||||
title:{
|
||||
text: "Total of Adjustment by Department ( Plus & Minus )"
|
||||
},
|
||||
axisY: {
|
||||
title: "Category",
|
||||
includeZero: true
|
||||
},
|
||||
legend: {
|
||||
cursor:"pointer",
|
||||
itemclick : toggleDataSeries
|
||||
},
|
||||
toolTip: {
|
||||
shared: true,
|
||||
content: toolTipFormatter
|
||||
},
|
||||
data: <?= json_encode($split_grouplists) ?>
|
||||
});
|
||||
groupchart.render();
|
||||
|
||||
function toolTipFormatter(e) {
|
||||
var str = "";
|
||||
var total = 0 ;
|
||||
var str3;
|
||||
var str2 ;
|
||||
for (var i = 0; i < e.entries.length; i++){
|
||||
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
|
||||
total = e.entries[i].dataPoint.y + total;
|
||||
str = str.concat(str1);
|
||||
}
|
||||
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
|
||||
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
|
||||
return (str2.concat(str)).concat(str3);
|
||||
}
|
||||
|
||||
function toggleDataSeries(e) {
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
}
|
||||
else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
groupchart.render();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="groupContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
// redeeem category
|
||||
$mains = [] ;
|
||||
$mysqli_main = $mysqli->query("SELECT a.main_id, b.title FROM setting_request a
|
||||
LEFT JOIN setting_request_translation b ON ( a.main_id = b.main_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en' ORDER BY a.sortable") ;
|
||||
if ( $mysqli_main->num_rows > 0 ){
|
||||
while ( $row_main = $mysqli_main->fetch_assoc() ){
|
||||
$mains[$row_main['main_id']] = $row_main['title'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// plus minus report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$plus_lists = [] ;
|
||||
$minus_lists = [] ;
|
||||
$select_request = $mysqli->query( "SELECT
|
||||
SUM(a.quantity) as totalquantity,
|
||||
a.staff_id,
|
||||
a.main_id
|
||||
FROM request a
|
||||
WHERE a.deleted_at IS NULL AND a.created_at LIKE '%" . $date_time . "%'
|
||||
AND a.status = 'confirmed'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id, a.main_id" ) ;
|
||||
if ( $select_request->num_rows > 0 ){
|
||||
while ( $row_request = $select_request->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_request['staff_id']] ;
|
||||
$main_id = $row_request['main_id'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_request['totalquantity'] ) ;
|
||||
|
||||
$split_lists[$main_id][$get_department] = ( $split_lists[$main_id][$get_department] + $row_request['totalquantity'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $mains[$k_lists] ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Request by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// group chart
|
||||
var groupchart = new CanvasJS.Chart("groupContainer", {
|
||||
animationEnabled: true,
|
||||
title:{
|
||||
text: "Total of Request by Department ( Plus & Minus )"
|
||||
},
|
||||
axisY: {
|
||||
title: "Category",
|
||||
includeZero: true
|
||||
},
|
||||
legend: {
|
||||
cursor:"pointer",
|
||||
itemclick : toggleDataSeries
|
||||
},
|
||||
toolTip: {
|
||||
shared: true,
|
||||
content: toolTipFormatter
|
||||
},
|
||||
data: <?= json_encode($split_grouplists) ?>
|
||||
});
|
||||
groupchart.render();
|
||||
|
||||
function toolTipFormatter(e) {
|
||||
var str = "";
|
||||
var total = 0 ;
|
||||
var str3;
|
||||
var str2 ;
|
||||
for (var i = 0; i < e.entries.length; i++){
|
||||
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
|
||||
total = e.entries[i].dataPoint.y + total;
|
||||
str = str.concat(str1);
|
||||
}
|
||||
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
|
||||
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
|
||||
return (str2.concat(str)).concat(str3);
|
||||
}
|
||||
|
||||
function toggleDataSeries(e) {
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
}
|
||||
else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
groupchart.render();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="groupContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.employment_branch', $user_branch_permission_sql_a ) ;
|
||||
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
// reject report
|
||||
$reject_lists = [] ;
|
||||
$select_employment = $mysqli->query( "SELECT
|
||||
COUNT(a.employment_department) as total,
|
||||
a.employment_department
|
||||
FROM staff_employment a
|
||||
WHERE a.deleted_at IS NULL AND a.employment_trash = '0' AND a.employment_modified LIKE '%" . $date_time . "%'
|
||||
AND a.employment_status IN ( 'Processing Rejected', 'Reject' )
|
||||
" . $search_query . "
|
||||
GROUP BY a.employment_department" ) ;
|
||||
if ( $select_employment->num_rows > 0 ){
|
||||
while ( $row_employment = $select_employment->fetch_assoc() ){
|
||||
$get_department = $department_lists[$row_employment['employment_department']] ;
|
||||
$get_department = ( $get_department == '' ? 'Cross Department' : $get_department ) ;
|
||||
|
||||
$reject_lists[] = [
|
||||
'label' => $get_department,
|
||||
'y' => floatval( $row_employment['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// complete report
|
||||
$complete_lists = [] ;
|
||||
$select_employment = $mysqli->query( "SELECT
|
||||
COUNT(a.employment_department) as total,
|
||||
a.employment_department
|
||||
FROM staff_employment a
|
||||
WHERE a.deleted_at IS NULL AND a.employment_trash = '0' AND a.employment_modified LIKE '%" . $date_time . "%'
|
||||
AND a.employment_status IN ( 'Confirmation' )
|
||||
" . $search_query . "
|
||||
GROUP BY a.employment_department" ) ;
|
||||
if ( $select_employment->num_rows > 0 ){
|
||||
while ( $row_employment = $select_employment->fetch_assoc() ){
|
||||
$get_department = $department_lists[$row_employment['employment_department']] ;
|
||||
$get_department = ( $get_department == '' ? 'Cross Department' : $get_department ) ;
|
||||
|
||||
$complete_lists[] = [
|
||||
'label' => $get_department,
|
||||
'y' => floatval( $row_employment['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// reject chart
|
||||
var rejectchart = new CanvasJS.Chart("rejectContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Rejected Staff Application"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($reject_lists) ?>
|
||||
}]
|
||||
});
|
||||
rejectchart.render() ;
|
||||
|
||||
|
||||
|
||||
// complete chart
|
||||
var completechart = new CanvasJS.Chart("completeContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Completed Staff Application"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($complete_lists) ?>
|
||||
}]
|
||||
});
|
||||
completechart.render() ;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="rejectContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="completeContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'b.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report
|
||||
$group_lists = [] ;
|
||||
$split_departmerns = [] ;
|
||||
$split_lists = [] ;
|
||||
$split_grouplists = [] ;
|
||||
$all_lists = [] ;
|
||||
$select_achievement = $mysqli->query( "SELECT
|
||||
SUM(a.staff_star) as totalstar,
|
||||
a.staff_id
|
||||
FROM staff_monthly_achievement a
|
||||
LEFT JOIN staff b ON ( a.staff_id = b.staff_id )
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.reported_at LIKE '%" . $date_time . "%'
|
||||
AND b.deleted_at IS NULL
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
if ( $select_achievement ->num_rows > 0 ){
|
||||
while ( $row_achievement = $select_achievement->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_achievement['staff_id']] ;
|
||||
$type = $row_achievement['type'] ;
|
||||
|
||||
$group_lists[$get_department] = ( $group_lists[$get_department] + $row_achievement['totalstar'] ) ;
|
||||
|
||||
$split_lists[$type][$get_department] = ( $split_lists[$type][$get_department] + $row_achievement['totalstar'] ) ;
|
||||
|
||||
$split_departmerns[$get_department] = $get_department ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $group_lists as $k => $v ){
|
||||
$get_departmentname = ( $k == '0' ? 'Cross Department' : $department_lists[$k] ) ;
|
||||
|
||||
$all_lists[] = [
|
||||
'label' => $get_departmentname,
|
||||
'y' => floatval( $v )
|
||||
] ;
|
||||
}
|
||||
|
||||
foreach ( $split_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $split_departmerns as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
$split_grouplists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// all chart
|
||||
var allchart = new CanvasJS.Chart("allContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Star Achievement by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($all_lists) ?>
|
||||
}]
|
||||
});
|
||||
allchart.render() ;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-12">
|
||||
<div id="allContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// reject report
|
||||
$reject_lists = [] ;
|
||||
$select_suggestion = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM suggestion a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'rejected' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
|
||||
if ( $select_suggestion->num_rows > 0 ){
|
||||
while ( $row_suggestion = $select_suggestion->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_suggestion['staff_id']] ;
|
||||
|
||||
$reject_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_suggestion['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// complete report
|
||||
$complete_lists = [] ;
|
||||
$select_suggestion = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM suggestion a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'confirmed' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_suggestion->num_rows > 0 ){
|
||||
while ( $row_suggestion = $select_suggestion->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_suggestion['staff_id']] ;
|
||||
|
||||
$complete_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_suggestion['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// reject chart
|
||||
var rejectchart = new CanvasJS.Chart("rejectContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Reject by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($reject_lists) ?>
|
||||
}]
|
||||
});
|
||||
rejectchart.render() ;
|
||||
|
||||
|
||||
//
|
||||
var chart = new CanvasJS.Chart("chartContainer", {
|
||||
animationEnabled: true,
|
||||
theme: "light2",
|
||||
title:{
|
||||
text: "Total of Completed by Department"
|
||||
},
|
||||
axisY: {
|
||||
title: "Total"
|
||||
},
|
||||
data: [{
|
||||
type: "column",
|
||||
showInLegend: true,
|
||||
legendMarkerColor: "grey",
|
||||
legendText: "Department",
|
||||
dataPoints: <?= json_encode($complete_lists) ?>
|
||||
}]
|
||||
});
|
||||
chart.render();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="rejectContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="chartContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'created_branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// reject report
|
||||
$reject_lists = [] ;
|
||||
$select_task = $mysqli->query( "SELECT COUNT(a.department_id) as total, a.department_id FROM task a
|
||||
WHERE a.deleted_at IS NULL AND a.status IN ( 'rejected', 'cancelled' ) AND a.updated_at LIKE '%" . $date_time . "%' " . $search_query . "
|
||||
GROUP BY a.department_id" ) ;
|
||||
if ( $select_task->num_rows > 0 ){
|
||||
while ( $row_task = $select_task->fetch_assoc() ){
|
||||
$reject_lists[] = [
|
||||
'label' => ( $row_task['department_id'] == '0' ? 'Cross Department' : $department_lists[$row_task['department_id']] ),
|
||||
'y' => floatval( $row_task['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
|
||||
// complete report by difficulty
|
||||
$difficulty_departments = [] ;
|
||||
$difficulty_lists = [] ;
|
||||
$difficulty_alllists = [] ;
|
||||
$select_task = $mysqli->query( "SELECT COUNT(a.difficulty) as total, a.department_id, a.difficulty FROM task a
|
||||
WHERE a.deleted_at IS NULL AND a.status IN ( 'approved' ) AND a.confirmed_at LIKE '%" . $date_time . "%' " . $search_query . "
|
||||
GROUP BY a.department_id, a.difficulty" ) ;
|
||||
if ( $select_task->num_rows > 0 ){
|
||||
while ( $row_task = $select_task->fetch_assoc() ){
|
||||
$difficulty_lists[$row_task['difficulty']][$row_task['department_id']]= $row_task['total'] ;
|
||||
$difficulty_departments[$row_task['department_id']] = $row_task['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $difficulty_lists as $k_lists => $v_lists ){
|
||||
|
||||
$temps = [] ;
|
||||
foreach ( $difficulty_departments as $k_department => $v_department ){
|
||||
$temps[] = [
|
||||
'label' => ( $v_department == '0' ? 'Cross Department' : $department_lists[$v_department] ),
|
||||
'y' => floatval( checkExists( $v_lists[$v_department], '0' ) )
|
||||
] ;
|
||||
}
|
||||
|
||||
|
||||
$difficulty_alllists[] = [
|
||||
'type' => 'bar',
|
||||
'showInLegend' => true,
|
||||
'name' => ucwords( $k_lists ),
|
||||
'dataPoints' => $temps
|
||||
] ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// complete report
|
||||
$complete_lists = [] ;
|
||||
$select_task = $mysqli->query( "SELECT COUNT(a.department_id) as total, a.department_id FROM task a
|
||||
WHERE a.deleted_at IS NULL AND a.status IN ( 'approved' ) AND a.confirmed_at LIKE '%" . $date_time . "%' " . $search_query . "
|
||||
GROUP BY a.department_id" ) ;
|
||||
if ( $select_task->num_rows > 0 ){
|
||||
while ( $row_task = $select_task->fetch_assoc() ){
|
||||
$complete_lists[] = [
|
||||
'label' => ( $row_task['department_id'] == '0' ? 'Cross Department' : $department_lists[$row_task['department_id']] ),
|
||||
'y' => floatval( $row_task['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// reject chart
|
||||
var rejectchart = new CanvasJS.Chart("rejectContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Reject by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($reject_lists) ?>
|
||||
}]
|
||||
});
|
||||
rejectchart.render() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// complete chart
|
||||
var completechart = new CanvasJS.Chart("completeContainer", {
|
||||
animationEnabled: true,
|
||||
title:{
|
||||
text: "Total of Completed by Department & Difficulty"
|
||||
},
|
||||
axisY: {
|
||||
title: "Difficulty",
|
||||
includeZero: true
|
||||
},
|
||||
legend: {
|
||||
cursor:"pointer",
|
||||
itemclick : toggleDataSeries
|
||||
},
|
||||
toolTip: {
|
||||
shared: true,
|
||||
content: toolTipFormatter
|
||||
},
|
||||
data: <?= json_encode($difficulty_alllists) ?>
|
||||
});
|
||||
completechart.render();
|
||||
|
||||
function toolTipFormatter(e) {
|
||||
var str = "";
|
||||
var total = 0 ;
|
||||
var str3;
|
||||
var str2 ;
|
||||
for (var i = 0; i < e.entries.length; i++){
|
||||
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\">" + e.entries[i].dataSeries.name + "</span>: <strong>"+ e.entries[i].dataPoint.y + "</strong> <br/>" ;
|
||||
total = e.entries[i].dataPoint.y + total;
|
||||
str = str.concat(str1);
|
||||
}
|
||||
str2 = "<strong>" + e.entries[0].dataPoint.label + "</strong> <br/>";
|
||||
str3 = "<span style = \"color:Tomato\">Total: </span><strong>" + total + "</strong><br/>";
|
||||
return (str2.concat(str)).concat(str3);
|
||||
}
|
||||
|
||||
function toggleDataSeries(e) {
|
||||
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
|
||||
e.dataSeries.visible = false;
|
||||
}
|
||||
else {
|
||||
e.dataSeries.visible = true;
|
||||
}
|
||||
completechart.render();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
var chart = new CanvasJS.Chart("chartContainer", {
|
||||
animationEnabled: true,
|
||||
theme: "light2",
|
||||
title:{
|
||||
text: "Total of Completed by Department"
|
||||
},
|
||||
axisY: {
|
||||
title: "Total"
|
||||
},
|
||||
data: [{
|
||||
type: "column",
|
||||
showInLegend: true,
|
||||
legendMarkerColor: "grey",
|
||||
legendText: "Department",
|
||||
dataPoints: <?= json_encode($complete_lists) ?>
|
||||
}]
|
||||
});
|
||||
chart.render();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="rejectContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="completeContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-12">
|
||||
<div id="chartContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch_id', $user_branch_permission_sql_a ) ;
|
||||
|
||||
$department_lists = [] ;
|
||||
$select_departments = $mysqli->query( "SELECT a.department_id, b.department_desc FROM setting_department a
|
||||
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
|
||||
WHERE a.deleted_at IS NULL AND b.lang = 'en'" ) ;
|
||||
if ( $select_departments->num_rows > 0 ){
|
||||
while ( $row_department = $select_departments->fetch_assoc() ){
|
||||
$department_lists[$row_department['department_id']] = dataFilter( $row_department['department_desc'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// staff department
|
||||
$staffdeparments = [] ;
|
||||
$select_staffdeparments = $mysqli->query( "SELECT a.staff_id, a.department_id FROM staff_department
|
||||
a
|
||||
WHERE a.deleted_at IS NULL
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_staffdeparments->num_rows > 0 ){
|
||||
while ( $row_staffdeparment = $select_staffdeparments->fetch_assoc() ){
|
||||
$staffdeparments[$row_staffdeparment['staff_id']] = $row_staffdeparment['department_id'] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// reject report
|
||||
$reject_lists = [] ;
|
||||
$select_training = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM staff_training a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'rejected', 'cancelled' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
|
||||
|
||||
if ( $select_training->num_rows > 0 ){
|
||||
while ( $row_training = $select_training->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_training['staff_id']] ;
|
||||
|
||||
$reject_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_training['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// complete report
|
||||
$complete_lists = [] ;
|
||||
$select_training = $mysqli->query( "SELECT
|
||||
COUNT(a.staff_id) as total, a.staff_id
|
||||
FROM staff_training a
|
||||
WHERE
|
||||
a.deleted_at IS NULL AND a.status IN ( 'confirmed', 'rated' ) AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
" . $search_query . "
|
||||
GROUP BY a.staff_id" ) ;
|
||||
if ( $select_training->num_rows > 0 ){
|
||||
while ( $row_training = $select_training->fetch_assoc() ){
|
||||
$get_department = $staffdeparments[$row_training['staff_id']] ;
|
||||
|
||||
$complete_lists[] = [
|
||||
'label' => ( $get_department == '0' ? 'Cross Department' : $department_lists[$get_department] ),
|
||||
'y' => floatval( $row_training['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// reject chart
|
||||
var rejectchart = new CanvasJS.Chart("rejectContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Reject by Department"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($reject_lists) ?>
|
||||
}]
|
||||
});
|
||||
rejectchart.render() ;
|
||||
|
||||
|
||||
//
|
||||
var chart = new CanvasJS.Chart("chartContainer", {
|
||||
animationEnabled: true,
|
||||
theme: "light2",
|
||||
title:{
|
||||
text: "Total of Completed by Department"
|
||||
},
|
||||
axisY: {
|
||||
title: "Total"
|
||||
},
|
||||
data: [{
|
||||
type: "column",
|
||||
showInLegend: true,
|
||||
legendMarkerColor: "grey",
|
||||
legendText: "Department",
|
||||
dataPoints: <?= json_encode($complete_lists) ?>
|
||||
}]
|
||||
});
|
||||
chart.render();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="rejectContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="chartContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
$search_query = str_replace( 'a.branch_id', 'a.branch', $user_branch_permission_sql_a ) ;
|
||||
|
||||
|
||||
// reject report
|
||||
$reject_lists = [] ;
|
||||
$select_visitor = $mysqli->query( "SELECT
|
||||
COUNT(a.category) as total,
|
||||
a.category
|
||||
FROM visitor a
|
||||
WHERE a.deleted_at IS NULL AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
AND a.status IN ( 'rejected', 'tested-rejected' )
|
||||
" . $search_query . "
|
||||
GROUP BY a.category" ) ;
|
||||
|
||||
if ( $select_visitor->num_rows > 0 ){
|
||||
while ( $row_visitor = $select_visitor->fetch_assoc() ){
|
||||
$category_id = $row_visitor['category'] ;
|
||||
$category_id = dataFilter( $category_id != '' ? $category_id : 'Unknown' ) ;
|
||||
|
||||
$reject_lists[] = [
|
||||
'label' => $category_id,
|
||||
'y' => floatval( $row_visitor['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// complete report
|
||||
$complete_lists = [] ;
|
||||
$select_visitor = $mysqli->query( "SELECT
|
||||
COUNT(a.category) as total,
|
||||
a.category
|
||||
FROM visitor a
|
||||
WHERE a.deleted_at IS NULL AND a.updated_at LIKE '%" . $date_time . "%'
|
||||
AND a.status IN ( 'approved', 'tested-approved', 'visited' )
|
||||
" . $search_query . "
|
||||
GROUP BY a.category" ) ;
|
||||
if ( $select_visitor->num_rows > 0 ){
|
||||
while ( $row_visitor = $select_visitor->fetch_assoc() ){
|
||||
$category_id = $row_visitor['category'] ;
|
||||
$category_id = dataFilter( $category_id != '' ? $category_id : 'Unknown' ) ;
|
||||
|
||||
$complete_lists[] = [
|
||||
'label' => $category_id,
|
||||
'y' => floatval( $row_visitor['total'] )
|
||||
] ;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
|
||||
// reject chart
|
||||
var rejectchart = new CanvasJS.Chart("rejectContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Rejected Visitor by Category"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($reject_lists) ?>
|
||||
}]
|
||||
});
|
||||
rejectchart.render() ;
|
||||
|
||||
|
||||
|
||||
// complete chart
|
||||
var completechart = new CanvasJS.Chart("completeContainer", {
|
||||
animationEnabled: true,
|
||||
title: {
|
||||
text: "Total of Completed Visitor by Category"
|
||||
},
|
||||
data: [{
|
||||
type: "pie",
|
||||
startAngle: 240,
|
||||
yValueFormatString: "##0",
|
||||
indexLabel: "{label} {y}",
|
||||
dataPoints: <?= json_encode($complete_lists) ?>
|
||||
}]
|
||||
});
|
||||
completechart.render() ;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="dashboard_section">
|
||||
<div class="row dashboard_chart">
|
||||
<div class="col-sm-6">
|
||||
<div id="rejectContainer" class="chart_div"></div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div id="completeContainer" class="chart_div"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user