@extends('layouts.app') @section('titulo','Órdenes') @section('contenido') @php // Códigos de estado que protegen la OT de borrado $protegidos = ['EJE','APR']; // Helpers para chips y headers $tieneFiltro = fn ($k, $v = 1) => (string) request($k) === (string) $v; $sortUrl = function ($col) use ($sort, $dir) { $nuevoDir = ($sort === $col && $dir === 'desc') ? 'asc' : 'desc'; return request()->fullUrlWithQuery(['sort' => $col, 'dir' => $nuevoDir, 'page' => null]); }; $flecha = function ($col) use ($sort, $dir) { if ($sort !== $col) return '↕'; return '' . ($dir === 'asc' ? '↑' : '↓') . ''; }; @endphp
${p.dataset.codigo} — ${p.dataset.estadoNombre}`;
lista.appendChild(li);
});
if (protegidas.length > 8) {
const li = document.createElement('li');
li.textContent = `... y ${protegidas.length - 8} más`;
lista.appendChild(li);
}
} else {
block.classList.add('d-none');
}
const elimBlock = document.getElementById('modalEliminarBlock');
if (eliminables.length > 0) {
elimBlock.classList.remove('d-none');
document.getElementById('modalEliminarCount').textContent = eliminables.length;
} else {
elimBlock.classList.add('d-none');
}
document.getElementById('btnConfirmarEliminar').disabled = eliminables.length === 0;
});
// === Autocompletado predictivo del buscador ===
(function () {
const input = document.getElementById('inputBuscarOT');
const drop = document.getElementById('dropdownSugerencias');
const wrapper = document.getElementById('buscadorOT');
if (!input || !drop) return;
const claseActual = @json($clase ?? '');
const urlBuscar = @json(route('ordenes.buscar-equipo'));
let timer = null;
let abortCtrl = null;
let indiceActivo = -1;
const escapar = (s) => String(s ?? '').replace(/[&<>"']/g, c => ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
const resaltar = (texto, q) => {
if (!q) return escapar(texto);
const re = new RegExp('(' + q.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi');
return escapar(texto).replace(re, '$1');
};
function cerrarDropdown() {
drop.classList.add('d-none');
drop.innerHTML = '';
indiceActivo = -1;
}
function pintarVacio(q) {
drop.innerHTML = `