I have to make two requests. With the first one I get the data “nom_largo” and “cod_alfabeta”.
With this code I make the second request.
The first request works perfect, I receive the data and generate a virtual list. (view image)
The second request is made but does not show the results.
What I do is obtain the data of the branches where the product is located. And then with a FOR, remove the branches that have no stock, and save everything in a variable.
And finally insert the variable, which contains a list, into the virtual list of the first request.
I want to show the branches with and accordion-list. So to show this I use accordionBeforeOpen but it shows me the accordion-list when i close the accordion, instead on open.
CODE /////////////////////////////////
FIRST REQUEST
//BUSQUEDA DE MEDICAMENTOS
$$('.busqueda-boton').on('click', function () {
var datosbusqueda = app.form.convertToData('#busqueda-form');
var busqueda = datosbusqueda.medicamento;
var busquedaUpper = busqueda.toUpperCase();
var lista_medicamentos = [];
var i = 0;
app.request({
url: 'http://xxxxxxxx/webapps/get_producto.php?NOM_LARGO=%' + busquedaUpper + '%',
method: 'POST',
dataType: 'XML',
crossDomain: true,
//data: busqueda,
success: function (data, textStatus) {
var doc = $$(new DOMParser().parseFromString(data, 'text/html'));
doc.find('producto').forEach(function (itm) {
// console.log($$(itm).find('nom_largo').text());
//console.log($$(itm).find('cod_alfabeta').text());
var nombre_med = $$(itm).find('nom_largo').text();
var codigo_med = $$(itm).find('cod_alfabeta').text();
var s = {};
s.nombre = nombre_med;
s.codigo = codigo_med;
lista_medicamentos.push(s);
i++;
});
//console.log(lista_medicamentos);
var virtualList = app.virtualList.create({
// List Element
el: '.virtual-list-busqueda',
// Pass array with items
items: lista_medicamentos,
emptyTemplate: 'No se encontraron resultados.',
// List item Template7 template
itemTemplate: '<li class="accordion-item btn-sucursales" id="medicamento{{codigo}}" data-codigo="{{codigo}}">' +
'<a href="#" class="item-link btn-sucursales-a item-content no-padding-left" data-codigo="{{codigo}}">' +
'<div class="item-inner padding-left">' +
'<div class="item-title">' +
'<span class="busqueda-resultados-titulo"><b>{{nombre}}</b></span>' +
'<div class="item-footer">Ver sucursales</div>' +
'</div>' +
'</div>' +
'</a>' +
'<div class="accordion-item-content" id="medic_suc{{codigo}}">' +
'<div class="list">' +
'<ul class="bg-color-transparent text-color-gray">' + **//Here insert the second rerquest**
'</ul>' +
' </div>' +
'</div>' +
'</li>',
// Item height
//height: app.theme === 'ios' ? 63 : (app.theme === 'md' ? 73 : 46),
});
virtualList.clearCache();
},
error: function (xhr, textStatus, errorThrown) {},
});
});
//FIN BUSQUEDA MEDICAMENTOS
SECOND REQUEST
// búsqueda/search del código sucursales
app.on('accordionBeforeOpen', function (el) {
var cod_alfabeta = $$(el).attr('data-codigo');
console.log(cod_alfabeta);
var lista_sucursales = [];
app.request({
url: 'http://xxxxxxxxxx/webapps/get_stock.php?cod_alfabeta=' + cod_alfabeta,
method: 'POST',
dataType: 'XML',
crossDomain: true,
success: function (data, textStatus) {
var docsuc = $$(new DOMParser().parseFromString(data, 'text/html'));
docsuc.find('sucursal').forEach(function (itmsuc) {
var nombre_suc = $$(itmsuc).find('nom_sucursal').text();
var localidad_suc = $$(itmsuc).find('des_localidad').text();
var telefono_suc = $$(itmsuc).find('des_tel').text();
var direccion_suc = $$(itmsuc).find('des_direccion').text();
var stock_suc = $$(itmsuc).find('can_stk').text();
var suc = {};
suc.sucursal = nombre_suc;
suc.localidad = localidad_suc;
suc.telefono = telefono_suc;
suc.direccion = direccion_suc;
suc.stock = stock_suc;
lista_sucursales.push(suc);
});
console.log(lista_sucursales);
//lista/list sucursales
var todo = "";
var t;
for (t = 0; t < lista_sucursales.length; t++) {
console.log(lista_sucursales.length);
if (lista_sucursales[t].stock > 0) {
console.log(lista_sucursales[t].stock);
var sucursal = '<li>' +
'<div class="item-content">' +
'<div class="item-media"><i class="material-icons">place</i></div>' +
'<div class="item-inner no-margin-left">' +
'<div class="item-title">' +
'<div class="item-header">' + lista_sucursales[t].sucursal + '</div>' +
'<b>' + lista_sucursales[t].direccion + '</b><small>, ' + lista_sucursales[t].localidad + '</small>' +
'<div class="item-footer">Tel.: ' + lista_sucursales[t].telefono + '</div>' +
'</div>' +
'</div>' +
'</div>' +
'</li>';
var todo = todo.concat(sucursal);
console.log(t);
} else {
console.log(lista_sucursales[t].stock);
console.log(t);
};
};
//fin/end FOR
//console.log(todo);
$$(todo).appendTo( $$('#medic_suc' + codigo_med + ' .list ul') );
},
error: function (xhr, textStatus, errorThrown) {
},
});
});