
Angel Javier
VIP
Ómicron
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
¡Usuario popular!
Suscripción a IA
Tengo una tabla en mi vista de Laravel.
Cuando la ordeno por fecha (más reciente a más antiguo) me ordena desde el primero de julio, hacia abajo
¿No debería ser desde el 4 de julio hacia atrás?
Y Cuando ordeno al revez, también me muestra mayo, al revez y luego junio
Intenté ordenarlos desde mi controlador, pero no me funciona, de igual manera en mi vista he realizado varios cambios y nada.
¿Que puedo revisar para que me ordene de manera correcta?
Si ordeno decendente, debe mostrarme
Julio 4, 3,2 1
Y ascendente: mayo 31, Junio 1, ect
Código de mi vista:
Cuando la ordeno por fecha (más reciente a más antiguo) me ordena desde el primero de julio, hacia abajo
¿No debería ser desde el 4 de julio hacia atrás?
Y Cuando ordeno al revez, también me muestra mayo, al revez y luego junio
Intenté ordenarlos desde mi controlador, pero no me funciona, de igual manera en mi vista he realizado varios cambios y nada.
¿Que puedo revisar para que me ordene de manera correcta?
Si ordeno decendente, debe mostrarme
Julio 4, 3,2 1
Y ascendente: mayo 31, Junio 1, ect
Código de mi vista:
PHP:
@extends('layouts.admin')
@section('content')
<div class="card">
<div class="card-body">
<div class="container-fluid">
<div class="row">
<div class="col-lg-2 col-sm-12 col-md-2">
<label for="">{{ trans('global.from') }}</label>
<input type="date" class="form-control" name="from">
</div>
<div class="col-lg-2 col-sm-12 col-md-2">
<label for="">{{ trans('global.to') }}</label>
<input type="date" class="form-control" name="to">
</div>
<div class="col-lg-2 col-sm-12 col-md-2">
<label for="">{{ trans('global.employee_name') }}</label>
<input type="text" class="form-control" name="employee_name">
</div>
<div class="col-lg-6 col-sm-12 col-md-6">
<button class="btn btn-primary mt-4 filter">{{ trans('global.filter') }}</button>
<button class="btn btn-danger mt-4 reset-filters-btn">{{ trans('global.reset_filter') }}</button>
<a href="{{ route('admin.attendance.excuse') }}" class="btn btn-warning mt-4">{{ trans('global.add_absent_excuse') }}</a>
<button class="export-pdf btn mt-4 btn-success">{{ trans('global.export_pdf') }}</button>
@can('empleado_delete')
<button class="ver-pdf btn btn-info mt-4">Ver PDF</button>
@endcan
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped table-hover datatable">
<thead>
<tr>
<th>{{ trans('global.employee_name') }}</th>
<th>{{ trans('global.date') }}</th>
<th>{{ trans('global.entrance') }}</th>
<th>{{ trans('global.lunch_departure') }}</th>
<th>{{ trans('global.lunch_entry') }}</th>
<th>{{ trans('global.exit') }}</th>
<th>{{ trans('global.hours_worked') }}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<!-- Modal para mostrar el loader -->
<div class="modal fade" id="loadingModal" tabindex="-1" role="dialog" aria-labelledby="loadingModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body text-center">
<div class="spinner-border text-primary" role="status">
<span class="sr-only">Loading...</span>
</div>
<p class="mt-2">Exportando PDF...</p>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
@parent
<script>
$(document).ready(function() {
$('.export-pdf').on('click', function(e) {
e.preventDefault();
// Mostrar alerta de Bootstrap "Enviando Planilla, por favor espera"
showAlert('Enviando Planilla, por favor espera', 'alert-warning');
var params = $.param({
from: $('input[name="from"]').val(),
to: $('input[name="to"]').val(),
employee_name: $('input[name="employee_name"]').val()
});
var url = '{{ route("admin.attendance.downloadPdf") }}?' + params;
// Redireccionar a la URL de descarga del PDF para enviar por correo
window.location.href = url;
});
$('.ver-pdf').on('click', function(e) {
e.preventDefault();
// Mostrar alerta de Bootstrap "Generando PDF, por favor espera"
showAlert('Generando PDF, por favor espera', 'alert-warning');
var params = $.param({
from: $('input[name="from"]').val(),
to: $('input[name="to"]').val(),
employee_name: $('input[name="employee_name"]').val(),
view: true
});
var url = '{{ route("admin.attendance.downloadPdf") }}?' + params;
// Redireccionar a la URL de visualización del PDF
window.open(url, '_blank');
});
var table = $('.datatable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route("admin.attendance.fetchAttendance") }}',
data: function(d) {
// Agregar valores de filtro a la solicitud AJAX
d.from = $('input[name="from"]').val();
d.to = $('input[name="to"]').val();
d.employee_name = $('input[name="employee_name"]').val();
}
},
columns: [
{ data: 'employee_name', name: 'employee_name' },
{ data: 'date', name: 'date' },
{ data: 'entrance', name: 'entrance' },
{ data: 'lunch_departure', name: 'lunch_departure' },
{ data: 'lunch_entry', name: 'lunch_entry' },
{ data: 'exit', name: 'exit' },
{ data: 'hours_worked', name: 'hours_worked' }
],
dom: 'tip',
columnDefs: [
{
targets: 0,
orderable: true,
searchable: true,
className: 'dt-body-left'
}
],
initComplete: function(settings, json) {
var urlParams = new URLSearchParams(window.location.search);
var planillaEnviada = urlParams.get('planilla_enviada');
if (planillaEnviada === 'true') {
showAlert('Planilla enviada con éxito', 'alert-success');
}
}
});
$(document).on('click', '.filter', function(e) {
e.preventDefault();
table.draw();
});
$(document).on('click', '.reset-filters-btn', function(e) {
e.preventDefault();
$('input[name="from"]').val('');
$('input[name="to"]').val('');
$('input[name="employee_name"]').val('');
table.draw();
});
function showAlert(message, alertType) {
var alertDiv = '<div class="alert ' + alertType + ' alert-dismissible fade show" role="alert">';
alertDiv += message;
alertDiv += '<button type="button" class="close" data-dismiss="alert" aria-label="Close">';
alertDiv += '<span aria-hidden="true">×</span>';
alertDiv += '</button>';
alertDiv += '</div>';
$('.card-body').prepend(alertDiv);
}
});
</script>
@endsection