fix styling filter dealer report technician

This commit is contained in:
2025-07-09 11:15:09 +07:00
parent 685c6df82e
commit e468672bbe
2 changed files with 66 additions and 120 deletions

View File

@@ -62,55 +62,6 @@
text-align: center;
}
/* Select2 styling - Fixed to prevent conflicts */
.select2-container--default .select2-selection--single {
height: 38px !important;
border: 1px solid #ced4da !important;
border-radius: 0.375rem !important;
background-color: #ffffff !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
line-height: 36px !important;
padding-left: 12px !important;
color: #495057 !important;
background-color: transparent !important;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
height: 36px !important;
background-color: transparent !important;
}
.select2-container--default .select2-search--dropdown .select2-search__field {
border: 1px solid #ced4da !important;
border-radius: 0.375rem !important;
background-color: #ffffff !important;
color: #495057 !important;
}
.select2-dropdown {
border: 1px solid #ced4da !important;
border-radius: 0.375rem !important;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
background-color: #ffffff !important;
}
.select2-container--default .select2-results__option {
background-color: #ffffff !important;
color: #495057 !important;
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
background-color: #007bff !important;
color: #ffffff !important;
}
.select2-container--default .select2-results__option[aria-selected=true] {
background-color: #e9ecef !important;
color: #495057 !important;
}
/* Form label styling */
.form-label {
font-weight: 600;
@@ -299,7 +250,7 @@ $(document).ready(function() {
if (typeof $.fn.select2 !== 'undefined') {
$('#filter-dealer').select2({
placeholder: 'Pilih...',
placeholder: 'Semua Dealer',
allowClear: true,
width: '100%'
});
@@ -336,13 +287,10 @@ $(document).ready(function() {
console.log('Default set to "Semua Dealer"');
$('#default-dealer-info').text('Pilih dealer untuk memfilter data atau biarkan "Semua Dealer" untuk melihat data lengkap.');
// Load initial DataTable only once
// Load initial mechanics and then initialize DataTable
if (!isInitialized) {
console.log('Dealers loaded, initializing DataTable...');
setTimeout(function() {
initializeDataTable();
isInitialized = true;
}, 100);
console.log('Dealers loaded, loading initial mechanics...');
loadInitialMechanics();
}
} else {
toastr.error('Gagal memuat data dealer');
@@ -356,6 +304,43 @@ $(document).ready(function() {
});
}
function loadInitialMechanics() {
// Get initial filter values (empty dealer, default dates)
let dealerId = '';
const startDate = $('#filter-start-date').val();
const endDate = $('#filter-end-date').val();
// Show loading overlay
showLoadingOverlay("Memuat data laporan teknisi...");
// Get mechanics first, then initialize DataTable
$.ajax({
url: '{{ route("reports.technician.data") }}',
type: 'GET',
data: { dealer_id: dealerId, start_date: startDate, end_date: endDate },
success: function(response) {
if (response.status === 'success' && Array.isArray(response.mechanics)) {
mechanics = response.mechanics;
console.log('Initial mechanics loaded:', mechanics.length);
// Now initialize DataTable with mechanics ready
updateTableStructureWithMechanics();
isInitialized = true;
} else {
console.warn('Invalid mechanics data, using fallback');
mechanics = [];
updateTableStructureWithMechanics();
isInitialized = true;
}
},
error: function() {
console.warn('Error loading initial mechanics, using fallback');
mechanics = [];
updateTableStructureWithMechanics();
isInitialized = true;
}
});
}
function loadTechnicianData() {
console.log('loadTechnicianData called');
@@ -542,15 +527,6 @@ $(document).ready(function() {
dom: '<"row"<"col-sm-12"f>>' +
'<"row"<"col-sm-12"tr>>' +
'<"row"<"col-sm-12"i>>',
language: {
emptyTable: "Tidak ada data yang tersedia",
info: "Menampilkan _TOTAL_ entri",
infoEmpty: "Menampilkan 0 entri",
infoFiltered: "(difilter dari _MAX_ total entri)",
search: "Cari:",
zeroRecords: "Tidak ditemukan data yang sesuai",
processing: "Memuat data..."
},
initComplete: function() {
try {
var api = this.api();
@@ -778,10 +754,10 @@ $(document).ready(function() {
dataSrc: function(json) {
console.log('DataTable response:', json);
// Update mechanics from response
if (json.mechanics && Array.isArray(json.mechanics)) {
mechanics = json.mechanics;
}
// Don't update mechanics from datatable response - use existing mechanics
// if (json.mechanics && Array.isArray(json.mechanics)) {
// mechanics = json.mechanics;
// }
return json.data || [];
}
@@ -794,15 +770,6 @@ $(document).ready(function() {
dom: '<"row"<"col-sm-12"f>>' +
'<"row"<"col-sm-12"tr>>' +
'<"row"<"col-sm-12"i>>',
language: {
emptyTable: "Tidak ada data yang tersedia",
info: "Menampilkan _TOTAL_ entri",
infoEmpty: "Menampilkan 0 entri",
infoFiltered: "(difilter dari _MAX_ total entri)",
search: "Cari:",
zeroRecords: "Tidak ditemukan data yang sesuai",
processing: "Memuat data..."
},
initComplete: function() {
try {
var api = this.api();
@@ -911,13 +878,11 @@ $(document).ready(function() {
// Sum up values from all rows
data.forEach(function(row, index) {
console.log(`Row ${index}:`, row);
if (Array.isArray(mechanics) && mechanics.length > 0) {
mechanics.forEach(function(mechanic) {
if (mechanic && mechanic.id) {
const value = parseInt(row[`mechanic_${mechanic.id}_total`] || 0);
totals[`mechanic_${mechanic.id}_total`] += value;
console.log(`Mechanic ${mechanic.name}: adding ${value}, total now: ${totals[`mechanic_${mechanic.id}_total`]}`);
}
});
}
@@ -982,7 +947,6 @@ $(document).ready(function() {
const $cell = $cells.eq(cellIndex);
const value = parseInt($cell.text() || 0);
totals[`mechanic_${mechanic.id}_total`] += value;
console.log(`Row ${index}, Mechanic ${mechanic.name}: cell ${cellIndex} = ${value}, total now: ${totals[`mechanic_${mechanic.id}_total`]}`);
}
});
}
@@ -1098,7 +1062,8 @@ $(document).ready(function() {
// Reset initialization flag to allow re-initialization
isInitialized = false;
// Ambil mechanics terbaru dari endpoint filter
// Get mechanics first, then initialize DataTable
let dealerId = '';
if (typeof $.fn.select2 !== 'undefined' && $('#filter-dealer').data('select2')) {
dealerId = $('#filter-dealer').select2('val') || '';
@@ -1107,6 +1072,7 @@ $(document).ready(function() {
}
const startDate = $('#filter-start-date').val();
const endDate = $('#filter-end-date').val();
$.ajax({
url: '{{ route("reports.technician.data") }}',
type: 'GET',
@@ -1114,13 +1080,18 @@ $(document).ready(function() {
success: function(response) {
if (response.status === 'success' && Array.isArray(response.mechanics)) {
mechanics = response.mechanics;
updateTableStructureWithMechanics(); // DataTable akan rebuild dengan mechanics baru
console.log('Filter mechanics loaded:', mechanics.length);
updateTableStructureWithMechanics();
} else {
initializeDataTable(); // fallback
console.warn('Invalid mechanics data, using fallback');
mechanics = [];
updateTableStructureWithMechanics();
}
},
error: function() {
initializeDataTable();
console.warn('Error loading mechanics, using fallback');
mechanics = [];
updateTableStructureWithMechanics();
}
});
});
@@ -1155,10 +1126,12 @@ $(document).ready(function() {
dataTable.destroy();
dataTable = null;
}
// Ambil mechanics terbaru dari endpoint data reset
// Get mechanics first, then initialize DataTable
let dealerId = '';
const startDate = $('#filter-start-date').val();
const endDate = $('#filter-end-date').val();
$.ajax({
url: '{{ route("reports.technician.data") }}',
type: 'GET',
@@ -1166,13 +1139,18 @@ $(document).ready(function() {
success: function(response) {
if (response.status === 'success' && Array.isArray(response.mechanics)) {
mechanics = response.mechanics;
console.log('Reset mechanics loaded:', mechanics.length);
updateTableStructureWithMechanics();
} else {
initializeDataTable();
console.warn('Invalid mechanics data, using fallback');
mechanics = [];
updateTableStructureWithMechanics();
}
},
error: function() {
initializeDataTable();
console.warn('Error loading mechanics, using fallback');
mechanics = [];
updateTableStructureWithMechanics();
}
});
});