update trip report
This commit is contained in:
@ -97,79 +97,79 @@ class ReportsController extends Controller
|
|||||||
|
|
||||||
$list = DB::select($q, $d);
|
$list = DB::select($q, $d);
|
||||||
|
|
||||||
// RETURN 1 - LIST
|
// // RETURN 1 - LIST
|
||||||
if($req->type != 'report'){
|
// if($req->type != 'report'){
|
||||||
$apiResp = Responses::success("success list vehicles report");
|
$apiResp = Responses::success("success list vehicles report");
|
||||||
$apiResp["data"] = $list;
|
$apiResp["data"] = $list;
|
||||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// RETURN 2 - REPORT
|
// // RETURN 2 - REPORT
|
||||||
if($req->type == 'report'){
|
// if($req->type == 'report'){
|
||||||
$headings = ['Name', 'License Plate', 'Number of Trip', 'Total Mileage'];
|
// $headings = ['Name', 'License Plate', 'Number of Trip', 'Total Mileage'];
|
||||||
|
|
||||||
$export = new class($list, $headings) implements FromArray, WithHeadings {
|
// $export = new class($list, $headings) implements FromArray, WithHeadings {
|
||||||
private $list;
|
// private $list;
|
||||||
private $headings;
|
// private $headings;
|
||||||
|
|
||||||
public function __construct($list, $headings)
|
// public function __construct($list, $headings)
|
||||||
{
|
// {
|
||||||
$this->list = $list;
|
// $this->list = $list;
|
||||||
$this->headings = $headings;
|
// $this->headings = $headings;
|
||||||
}
|
// }
|
||||||
|
|
||||||
public function array(): array
|
// public function array(): array
|
||||||
{
|
// {
|
||||||
return array_map(function ($item) {
|
// return array_map(function ($item) {
|
||||||
return [
|
// return [
|
||||||
$item->name,
|
// $item->name,
|
||||||
$item->nopol1,
|
// $item->nopol1,
|
||||||
$item->numOfTrip,
|
// $item->numOfTrip,
|
||||||
$item->total_milleage,
|
// $item->total_milleage,
|
||||||
];
|
// ];
|
||||||
}, $this->list);
|
// }, $this->list);
|
||||||
}
|
// }
|
||||||
|
|
||||||
public function headings(): array
|
// public function headings(): array
|
||||||
{
|
// {
|
||||||
return $this->headings;
|
// return $this->headings;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Start table from A3
|
// // Start table from A3
|
||||||
public function startCell(): string
|
// public function startCell(): string
|
||||||
{
|
// {
|
||||||
return 'A3';
|
// return 'A3';
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Add title & border styling
|
// // Add title & border styling
|
||||||
public function styles(Worksheet $sheet)
|
// public function styles(Worksheet $sheet)
|
||||||
{
|
// {
|
||||||
$tgl0 = date('d-m-Y', $GLOBALS['from_date']);
|
// $tgl0 = date('d-m-Y', $GLOBALS['from_date']);
|
||||||
$tgl1 = date('d-m-Y', $GLOBALS['to_date']);
|
// $tgl1 = date('d-m-Y', $GLOBALS['to_date']);
|
||||||
|
|
||||||
// Title in A1
|
// // Title in A1
|
||||||
$sheet->setCellValue('A1', 'Vehicle Trip Report $tgl0 until $tgl1');
|
// $sheet->setCellValue('A1', 'Vehicle Trip Report $tgl0 until $tgl1');
|
||||||
$sheet->mergeCells('A1:D1'); // Merge across 4 columns
|
// $sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16);
|
||||||
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16);
|
// $sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
|
||||||
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
|
// $sheet->mergeCells('A1:D1'); // Merge across 4 columns
|
||||||
|
|
||||||
// Get last row
|
// // Get last row
|
||||||
$lastRow = $this->list->count() + 3; // 3 = heading row
|
// $lastRow = $this->list->count() + 3; // 3 = heading row
|
||||||
$range = "A3:D{$lastRow}";
|
// $range = "A3:D{$lastRow}";
|
||||||
|
|
||||||
// Add borders
|
// // Add borders
|
||||||
$sheet->getStyle($range)->getBorders()->getAllBorders()
|
// $sheet->getStyle($range)->getBorders()->getAllBorders()
|
||||||
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
// ->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||||
|
|
||||||
// Bold headings
|
// // Bold headings
|
||||||
$sheet->getStyle('A3:D3')->getFont()->setBold(true);
|
// $sheet->getStyle('A3:D3')->getFont()->setBold(true);
|
||||||
|
|
||||||
return [];
|
// return [];
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
|
|
||||||
return Excel::download($export, 'trip_report.xlsx');
|
// return Excel::download($export, 'trip_report.xlsx');
|
||||||
}
|
// }
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$apiResp = Responses::error($e->getMessage());
|
$apiResp = Responses::error($e->getMessage());
|
||||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||||
|
|||||||
@ -183,25 +183,47 @@
|
|||||||
|
|
||||||
const DTable = {
|
const DTable = {
|
||||||
table: null,
|
table: null,
|
||||||
|
lastAjax: null, // keep track of the last ajax request
|
||||||
activate: function() {
|
activate: function() {
|
||||||
DTable.reload();
|
DTable.reload();
|
||||||
},
|
},
|
||||||
reload: function() {
|
reload: function() {
|
||||||
|
// Abort the last request if it's still running
|
||||||
|
if (DTable.lastAjax) {
|
||||||
|
DTable.lastAjax.abort();
|
||||||
|
}
|
||||||
|
|
||||||
DTable.table = $('#tVehicleTrips').DataTable({
|
DTable.table = $('#tVehicleTrips').DataTable({
|
||||||
processing: true,
|
processing: true,
|
||||||
serverSide: false,
|
serverSide: false,
|
||||||
bLengthChange: true,
|
bLengthChange: true,
|
||||||
deferRender: true,
|
deferRender: true,
|
||||||
destroy: true,
|
destroy: true,
|
||||||
ajax: {
|
ajax: function(data, callback, settings) {
|
||||||
|
// Abort previous
|
||||||
|
if (DTable.lastAjax) {
|
||||||
|
DTable.lastAjax.abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fire new request
|
||||||
|
DTable.lastAjax = $.ajax({
|
||||||
url: `{{ route('api_report_vehicle_trips_list') }}?
|
url: `{{ route('api_report_vehicle_trips_list') }}?
|
||||||
cptid=${AppState.current_company}
|
cptid=${AppState.current_company}
|
||||||
&from_date=${moment(safeVal('#tgl0')).startOf('day').unix()}
|
&from_date=${moment(safeVal('#tgl0')).startOf('day').unix()}
|
||||||
&to_date=${moment(safeVal('#tgl1')).endOf('day').unix()}`,
|
&to_date=${moment(safeVal('#tgl1')).endOf('day').unix()}`,
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
complete: function() {
|
success: function(json) {
|
||||||
// removeTableSkeletonLoading()
|
callback(json);
|
||||||
},
|
},
|
||||||
|
error: function(xhr, status, error) {
|
||||||
|
if (status !== 'abort') {
|
||||||
|
console.error("AJAX error:", error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
complete: function() {
|
||||||
|
DTable.lastAjax = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
deferRender: true,
|
deferRender: true,
|
||||||
columns: [
|
columns: [
|
||||||
@ -240,7 +262,7 @@
|
|||||||
buttons: [
|
buttons: [
|
||||||
{
|
{
|
||||||
extend: 'excelHtml5',
|
extend: 'excelHtml5',
|
||||||
title: 'Trip Report',
|
title: `Vehicle Trip Report - ${moment(safeVal('#tgl0')).format('DD MMM YYYY')} to ${moment(safeVal('#tgl1')).format('DD MMM YYYY')}`,
|
||||||
className: 'd-none' // hide default button
|
className: 'd-none' // hide default button
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user