function add_delete_itemsB(el) {
var form = Fabrik.getBlock('form_xx');
var repeat = el.getRepeatNum();
var id_itemA = el.form.formElements.get('tableA_22_repeat___id_itemA_' + repeat).getValue();
var id_item_old = el.form.formElements.get('tableA_22_repeat___id_item_old_' + repeat).getValue();
var groupId = 23;
var group = el.form.form.getElement('#group' + groupId);
var subGroup = group.getElements('.fabrikSubGroup');
// first we delete existing items of group 23 - when we re-select item in group 22 we delete previus added related items in group 23
// set some logic when we need deletion
if (id_itemA != null && id_itemA != 'undefined' && id_item_old != null && id_item_old != 'undefined' && id_item_old.length > 0 && id_itemA != id_item_old) {
// console.log('true');
document.getElements('input[id^="tableB_23_repeat___id_itemA_chk_"]').each(function (el, index) {
var id_itemA_chk = form.formElements.get(el.id).getValue();
if (id_itemA_chk == id_item_old) {
k = index;
var del_btn = form.form.getElements('#group' + groupId + ' .deleteGroup')[k];
var del_e = new Event.Mock(del_btn, 'click');
form.deleteGroup(del_e, group, subGroup[k]);
//console.log('deleting index' + k);
}
});
}
// adding ites to group 23
if (id_itemA != '') {
if (id_item_old == '') {
update: document.id('tableA_22_repeat___id_item_old_' + repeat).value = id_itemA;
}
// user_ajax to get related ids of itemB
var url = "index.php?option=com_fabrik&format=raw&task=plugin.userAjax";
new Request({
url: url,
data: {
method: 'get_ids_itemB',
'ids_itemA': ids_itemA
},
onComplete: function(response) {
// decode response and convert it to JS array
json = JSON.decode(response);
var ids_itemB = [];
var ids_itemB = JSON.parse(response);
// console.log(ids_itemB.length);
if (!Array.isArray(id_itemB) || !id_itemB.length) {
// console.log('No related data.');
} else {
alert('We will add: ' + id_itemB.length + ' itemB');
// loop over array and add repeats in group 23
for (var i = 0; i < ids_itemB.length; i++) {
// check if first item in group 23 have valaue
var id_itemB = el.form.formElements.get('tableB_23_repeat___id_itemB_0').getValue();
// lets see how many items already have in group 23; c is our "repeat" counter for group 23
var c = $('group23').getElements('.fabrikSubGroup').length;
// if first item of group not have value we put first id_itemB from array otherwise it will be skipped
if (id_itemB == '') {
// set values into elments
update: document.id('tableB_23_repeat___id_itemB_0').value = Object.values(id_ventil[i]);
update: document.id('tableB_23_repeat___id_itemA_chk_' + c).value = id_itemA; // to know which itemB is related with itemA
update: document.id('tableA_22_repeat___id_item_old_' + repeat).value = id_itemA; // to store id_itemA. if we change selection id_itemA we need previus value to know which id_itemB we need to delete
}
else {
var add_btn = el.form.form.getElement('#group23 .addGroup');
var add_e = new Event.Mock(add_btn, 'click');
el.form.duplicateGroup(add_e, false);
update: document.id('tableB_23_repeat___id_itemB_' + c).value = Object.values(id_ventil[i]);
update: document.id('tableB_23_repeat___id_itemA_chk_' + c).value = id_itemA; // to know which itemB is related with itemA
update: document.id('tableA_22_repeat___id_item_old_' + repeat).value = id_itemA; // to store id_itemA. if we change selection id_itemA we need previus value to know which id_itemB we need to delete
}
}
}
}
}).send();
update: document.id('tableA_22_repeat___id_item_old_' + repeat).value = id_itemA;
}
};