123 lines
4.3 KiB
PHP
123 lines
4.3 KiB
PHP
<style>
|
|
.table th,
|
|
.table td {
|
|
padding: 8px;
|
|
}
|
|
|
|
table.dataTable tbody td {
|
|
padding: 4px 4px !important;
|
|
}
|
|
|
|
.col-12 {
|
|
max-width: 98% !important;
|
|
}
|
|
|
|
.dataTables_filter {
|
|
position: absolute;
|
|
}
|
|
|
|
.right-align-input {
|
|
text-align: right;
|
|
}
|
|
</style>
|
|
|
|
|
|
<div class="row">
|
|
<div class="col-12" id="second_page">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="row" style="padding-bottom: 10px;">
|
|
<div class="col-6" style="align-self: center;">
|
|
<h4 style="position: relative;"><?= $page_title ?></h4>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="table-responsive">
|
|
<table id="scroll-horizontal-datatable" class="table w-100 nowrap">
|
|
<thead>
|
|
<tr>
|
|
<?php
|
|
// Get headers dynamically
|
|
$headers = array_keys($data[0]);
|
|
foreach ($headers as $header): ?>
|
|
<th><?= esc($header) ?></th>
|
|
<?php endforeach; ?>
|
|
<th>TOTAL</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<?php
|
|
// Initialize column-wise totals
|
|
$columnTotals = array_fill_keys($headers, 0);
|
|
foreach ($data as $row):
|
|
$rowTotal = 0; // Initialize row total
|
|
?>
|
|
<tr>
|
|
<?php foreach ($row as $key => $value):
|
|
$numValue = is_numeric($value) ? (int) $value : 0;
|
|
if ($key != 'TAT_Category') {
|
|
$columnTotals[$key] += $numValue;
|
|
$rowTotal += $numValue;
|
|
}
|
|
?>
|
|
<td><?= esc($value) ?></td>
|
|
<?php endforeach; ?>
|
|
<td><strong><?= esc($rowTotal) ?></strong></td> <!-- Row Total -->
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<?php foreach ($columnTotals as $key => $total): ?>
|
|
<th><?= ($key == "TAT_Category" || $key == 'ACM_Name') ? "TOTAL" : esc($total) ?></th>
|
|
<?php endforeach; ?>
|
|
<th><strong><?= array_sum(array_filter($columnTotals, 'is_numeric')) ?></strong></th> <!-- Grand Total -->
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
|
|
</div> <!-- end card-body -->
|
|
</div> <!-- end card -->
|
|
</div> <!-- end col-12 -->
|
|
</div> <!-- end row -->
|
|
|
|
<script>
|
|
$(document).ready(function() {
|
|
var ticketsTable = $('#scroll-horizontal-datatable');
|
|
|
|
if (ticketsTable.length) {
|
|
ticketsTable.DataTable({
|
|
scrollX: true,
|
|
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
|
|
"<'row'<'col-sm-12'tr>>" +
|
|
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
|
buttons: [
|
|
{
|
|
extend: 'csv',
|
|
text: 'CSV',
|
|
title: 'BDS TAT BAND WISE DATA',
|
|
},
|
|
{
|
|
extend: 'excel',
|
|
text: 'Excel',
|
|
title: 'BDS TAT BAND WISE DATA',
|
|
},
|
|
|
|
],
|
|
language: {
|
|
search: "_INPUT_",
|
|
searchPlaceholder: "Search..."
|
|
},
|
|
paging: true,
|
|
pageLength: 10,
|
|
ordering: false
|
|
});
|
|
} else {
|
|
console.error("Table not found.");
|
|
}
|
|
});
|
|
</script>
|