fix styling filter dealer report technician
This commit is contained in:
@@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user