se hacen modificaciones de catalogo a peticion de observaciones de carlos 24052026
This commit is contained in:
@@ -90,7 +90,8 @@
|
||||
.breadcrumb__link:hover { color: var(--color-primary); }
|
||||
.breadcrumb__sep { color: var(--color-text-disabled); }
|
||||
.breadcrumb__current { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
|
||||
|
||||
.breadcrumb__back { display: inline-flex; align-items: center; gap: 4px; padding: 2px 10px; background: transparent; border: 1px solid var(--color-border); border-radius: var(--radius-sm); color: var(--color-text-muted); font-size: var(--text-body-sm); cursor: pointer; transition: var(--transition-fast); }
|
||||
.breadcrumb__back:hover { background: var(--color-primary-muted); color: var(--color-primary); }
|
||||
.header-actions { display: flex; align-items: center; gap: var(--space-3); }
|
||||
|
||||
/* ── Catalog mode toggle (OEM / Local) ── */
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
return;
|
||||
}
|
||||
this.el('brandCatalogOverlay').style.display = 'block';
|
||||
document.body.style.overflow = 'hidden';
|
||||
//document.body.style.overflow = 'hidden';
|
||||
this.loadBrands();
|
||||
},
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
document.body.style.overflow = '';
|
||||
this.reset();
|
||||
},
|
||||
|
||||
|
||||
reset: function() {
|
||||
this.state = 'brands';
|
||||
this.nav = { brand: null, brandId: null, model: null, modelId: null, year: null, yearId: null, engine: null, myeId: null, category: null, categoryId: null };
|
||||
|
||||
@@ -259,7 +259,20 @@
|
||||
if (nav.nxPartType) parts.push({ label: nav.nxPartType.name, action: null });
|
||||
else if (nav.partType) parts.push({ label: nav.partType.name, action: null });
|
||||
|
||||
//Botón para retroceder
|
||||
var backAction = null;
|
||||
if (parts.length > 1) {
|
||||
var prev = parts[parts.length - 2];
|
||||
backAction = prev ? prev.action : 'loadBrands';
|
||||
}
|
||||
|
||||
var html = '';
|
||||
//Botón para retroceder
|
||||
if (backAction) {
|
||||
html += '<button class="breadcrumb__back" data-bc-action="' + backAction + '">← Atrás</button>';
|
||||
html += '<span class="breadcrumb__sep" aria-hidden="true">|</span>';
|
||||
}
|
||||
//--------
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
if (i > 0) html += '<span class="breadcrumb__sep" aria-hidden="true">/</span>';
|
||||
if (i < parts.length - 1 && parts[i].action) {
|
||||
@@ -286,6 +299,7 @@
|
||||
else if (action === 'loadNxPartTypes') { resetNavFrom('part_types'); loadNexpartPartTypes(); }
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function resetNav() {
|
||||
@@ -1668,20 +1682,22 @@
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function vsYearChanged() {
|
||||
var yearId = vsYear.value;
|
||||
vsBrand.innerHTML = '<option value="">Marca...</option>';
|
||||
vsModel.innerHTML = '<option value="">Modelo...</option>';
|
||||
vsEngine.innerHTML = '<option value="">Motor...</option>';
|
||||
vsBrand.disabled = true;
|
||||
vsModel.disabled = true;
|
||||
vsEngine.disabled = true;
|
||||
vsClear.style.display = yearId ? '' : 'none';
|
||||
vsClear.style.display = (yearId || vsBrand.value || vsModel.value) ? '' : 'none';
|
||||
|
||||
if (!yearId) return;
|
||||
|
||||
// Load brands filtered by year
|
||||
// Resetear marca solo si no hay nada seleccionado en ella
|
||||
vsBrand.disabled = false;
|
||||
vsEngine.innerHTML = '<option value="">Motor...</option>';
|
||||
vsEngine.disabled = true;
|
||||
|
||||
if (!yearId) {
|
||||
//carga todo
|
||||
vsLoadAllBrands();
|
||||
return;
|
||||
}
|
||||
// Filtrar marcas por año
|
||||
apiFetch(API + '/brands?year_id=' + yearId + '&mode=' + catalogMode).then(function (data) {
|
||||
var brands = data.data || data;
|
||||
if (!brands) return;
|
||||
@@ -1689,21 +1705,39 @@
|
||||
brands.map(function (b) {
|
||||
return '<option value="' + b.id_brand + '">' + esc(b.name_brand) + '</option>';
|
||||
}).join('');
|
||||
// si hay marca seleccionada despliega modelos
|
||||
if (vsBrand.value) vsBrandChanged();
|
||||
});
|
||||
}
|
||||
function vsLoadAllBrands() {
|
||||
apiFetch(API + '/brands?mode=' + catalogMode).then(function (data) {
|
||||
var brands = data.data || data;
|
||||
if (!brands) return;
|
||||
var current = vsBrand.value;
|
||||
vsBrand.innerHTML = '<option value="">Marca...</option>' +
|
||||
brands.map(function (b) {
|
||||
return '<option value="' + b.id_brand + '">' + esc(b.name_brand) + '</option>';
|
||||
}).join('');
|
||||
if (current) vsBrand.value = current;
|
||||
});
|
||||
}
|
||||
|
||||
function vsBrandChanged() {
|
||||
var brandId = vsBrand.value;
|
||||
var yearId = vsYear.value;
|
||||
vsClear.style.display = (yearId || brandId) ? '' : 'none';
|
||||
|
||||
vsModel.innerHTML = '<option value="">Modelo...</option>';
|
||||
vsEngine.innerHTML = '<option value="">Motor...</option>';
|
||||
vsModel.disabled = true;
|
||||
vsModel.disabled = false; // cambio
|
||||
vsEngine.disabled = true;
|
||||
|
||||
if (!brandId) return;
|
||||
if (!brandId) {
|
||||
vsModel.disabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Load models filtered by brand AND year
|
||||
vsModel.disabled = false;
|
||||
// Cargar modelos con o sin año
|
||||
apiFetch(API + '/models?brand_id=' + brandId + (yearId ? '&year_id=' + yearId : '')).then(function (data) {
|
||||
var models = data.data || data;
|
||||
if (!models) return;
|
||||
@@ -1711,32 +1745,53 @@
|
||||
models.map(function (m) {
|
||||
return '<option value="' + m.id_model + '">' + esc(m.display_name || m.name_model) + '</option>';
|
||||
}).join('');
|
||||
// si hay modelo seleccionado despliega año
|
||||
if (vsModel.value) vsModelChanged();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function vsModelChanged() {
|
||||
var modelId = vsModel.value;
|
||||
var yearVal = vsYear.value;
|
||||
|
||||
vsEngine.innerHTML = '<option value="">Motor...</option>';
|
||||
vsEngine.disabled = true;
|
||||
|
||||
if (!modelId || !yearVal) return;
|
||||
if (!modelId) return;
|
||||
|
||||
vsEngine.disabled = false;
|
||||
apiFetch(API + '/engines?model_id=' + modelId + '&year_id=' + yearVal).then(function (data) {
|
||||
var engines = data.data || data;
|
||||
if (!engines) return;
|
||||
vsEngine.innerHTML = '<option value="">Motor...</option>' +
|
||||
engines.map(function (e) {
|
||||
var label = e.name_engine + (e.trim_level ? ' (' + e.trim_level + ')' : '');
|
||||
return '<option value="' + e.id_mye + '">' + esc(label) + '</option>';
|
||||
}).join('');
|
||||
// If only 1 engine, auto-select
|
||||
if (engines.length === 1) {
|
||||
vsEngine.value = engines[0].id_mye;
|
||||
vsEngineChanged();
|
||||
}
|
||||
});
|
||||
// Si hay año carga motores
|
||||
if (yearVal) {
|
||||
vsEngine.disabled = false;
|
||||
apiFetch(API + '/engines?model_id=' + modelId + '&year_id=' + yearVal).then(function (data) {
|
||||
var engines = data.data || data;
|
||||
if (!engines) return;
|
||||
vsEngine.innerHTML = '<option value="">Motor...</option>' +
|
||||
engines.map(function (e) {
|
||||
var label = e.name_engine + (e.trim_level ? ' (' + e.trim_level + ')' : '');
|
||||
return '<option value="' + e.id_mye + '">' + esc(label) + '</option>';
|
||||
}).join('');
|
||||
if (engines.length === 1) {
|
||||
vsEngine.value = engines[0].id_mye;
|
||||
vsEngineChanged();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Sin año
|
||||
var brandId = vsBrand.value;
|
||||
if (!brandId) return;
|
||||
nav.brand = { id: parseInt(brandId), name: vsBrand.options[vsBrand.selectedIndex].text };
|
||||
nav.model = { id: parseInt(modelId), name: vsModel.options[vsModel.selectedIndex].text };
|
||||
nav.year = null;
|
||||
nav.engine = null;
|
||||
nav.level = 'categories';
|
||||
pushNavState();
|
||||
loadCategoriesForMode();
|
||||
setTimeout(function () {
|
||||
var body = document.getElementById('pageBody');
|
||||
if (body) body.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
}, 300);
|
||||
}
|
||||
}
|
||||
|
||||
function vsEngineChanged() {
|
||||
|
||||
Reference in New Issue
Block a user