Files
interblue.pl/modules/pshowimporter/views/js/config_matchxmlfields.js
2024-10-25 14:16:28 +02:00

317 lines
11 KiB
JavaScript

// move menu up
var x = $('.modulecontainer').parent();
x.children('.col-lg-2').removeClass('col-lg-2').addClass('col-lg-12')
.children('.tabs').children('.list-group').addClass('list-group-horizontal')
.parent().parent().children('.panel').hide();
x.children('.col-lg-10').removeClass('col-lg-10').addClass('col-lg-12');
window.optionsToLoad = 0;
function waitForOptions() {
if (window.optionsToLoad > 0) {
setTimeout('waitForOptions()', 200);
return;
}
$('.full-screen-loader').fadeOut();
$('.bootstrap#footer').show();
checkMaxInputVars();
}
/**
* Watch max input vars reached
*/
var checkMaxInputVars = function () {
if (typeof maxInputVars === 'undefined') {
console.error("pshowimporter: maxInputVars not defined!");
return;
}
if (typeof maxInputVarsMsg === 'undefined') {
console.error("pshowimporter: maxInputVarsMsg not defined!");
return;
}
var qty = $('form#matchingFields').find('input,select,textarea').length;
if (qty > maxInputVars) {
alert(maxInputVarsMsg);
}
};
$(function () {
$(document).on('change', 'form#matchingFields select', function () {
checkMaxInputVars();
});
});
// object tag
$(function () {
$('button[name="matchfields"]').on('click', function (e) {
e.preventDefault();
var objectTag = $('select[name="matched[objectTag]"]').val();
if (typeof objectTag === 'undefined') {
return false;
}
$('.full-screen-loader').fadeIn();
$('.bootstrap#footer').hide();
$(this).addClass('disabled');
objectTag = objectTag.substring(0, objectTag.length - 1);
console.log(document.location.href + "&step=2&ajaxgetbytag=" + objectTag);
$.get(document.location.href + "&step=2&ajaxgetbytag=" + objectTag, function (data) {
$('#objectTag');//.removeClass('active');
$('.fieldsBox').html(data);//.addClass('active');
$('#saveAndNext').removeClass('hidden');
$('ul[role="tablist"] li:nth-child(2) a').click();
$('button[name="matchfields"]').removeClass('disabled');
$('.fieldsBox > table > tbody > tr').each(function () {
select = $(this).find('select');
if (select.length === 0)
return;
elems = $('.fieldsBox > table > tbody > tr select[name="' + select.attr('name') + '"]');
if (elems.length === 1)
return;
var i = 0;
elems.each(function () {
if (++i === 1)
return;
x = $(this).parent().parent();
x.prev().remove();
x.next().remove();
x.remove();
});
});
$('.objectTagRequired').removeClass('hidden');
var objectTagPath = '/' + objectTag.replace(/,/g, '/') + '/';
setTimeout(function () {
$('.putObjectTagHere').text(objectTagPath);
var prestaFields = $('select.prestashop_field');
window.optionsToLoad = prestaFields.length;
prestaFields.each(function () {
toggleFieldSettingsBtn($(this));
});
waitForOptions();
}, 1000);
});
console.log($('select[name="objectTag').val());
return false;
});
});
// field settings
function toggleFieldSettingsBtn(selectObj) {
if (selectObj.val() === 'none') {
selectObj.parent().next('td').find('.fieldSettingsBtn').eq(0)
.addClass('disabled')
.removeClass('btn-warning')
.removeClass('btn-success');
selectObj.parent().parent().next('tr').hide(500);
--window.optionsToLoad;
} else {
selectObj.parent().next('td').find('.fieldSettingsBtn').eq(0)
.removeClass('disabled')
.removeClass('btn-warning')
.removeClass('btn-success')
.addClass('btn-success');
var nameprefix = selectObj.attr('name').replace('[value]', '');
var url = document.location.href + '&page=getfieldsettingsform&fieldNamePrefix=' + nameprefix + '&field=' + selectObj.val();
var box = selectObj.parent().parent().next('tr').find('.field-settings');
box.html('<p>&nbsp;</p>\
<div class="ajax-loader">\
<div class="loader">\
<svg class="circular" viewBox="25 25 50 50">\
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"></circle>\
</svg>\
</div>\
</div>');
console.log(url);
$.get(url, function (response) {
box.html(response);
box.find('.panel').removeClass('panel').prepend('<p>&nbsp;</p>');
var data = box.find('#fieldset_0').html();
//console.log(data);
box.append(data).find('form').remove();
--window.optionsToLoad;
});
}
}
$(function () {
$(document).on('click', '.removeReplacement', function (e) {
e.preventDefault();
var replacementsInfo = $(this).parent().parent().parent().parent().parent().parent().find('.replacements-info').eq(0);
if (($(this).parent().parent().parent().parent().parent().parent().find('.replacement').length - 1) > 0) {
replacementsInfo.addClass('hidden');
} else {
replacementsInfo.removeClass('hidden');
}
$(this).parent().parent().parent().parent().remove();
return false;
});
$(document).on('click', '.addReplacement', function (e) {
e.preventDefault();
var replacementsInfo = $(this).parent().parent().parent().find('.replacements-info').eq(0);
if (!replacementsInfo.hasClass('hidden')) {
replacementsInfo.addClass('hidden');
}
var replacements = $(this).parent().parent().parent().find('.replacements').eq(0);
var nameKey = 'matched[' + replacements.attr('data-type') + '][' + replacements.attr('data-md5') + '][options][replacement][' + replacementCounter + ']';
var html = '<div class="form-group replacement">\
<div class="row">\
<div class="col-xs-6">\
<div class="form-group">\
<label class="control-label col-xs-3" for="' + nameKey + '[find]">\
' + lang_find + '\
</label>\
<div class="col-xs-9">\
<input type="text" name="' + nameKey + '[find]" id="' + nameKey + '[find]" \
class="form-control find" value="" placeholder="Enter value to replace">\
</div>\
</div>\
<div class="form-group">\
<label class="control-label col-xs-3" for="' + nameKey + '[replace]">\
' + lang_replace + '\
</label>\
<div class="col-xs-9">\
<input type="text" name="' + nameKey + '[replace]" id="' + nameKey + '[replace]" \
class="form-control replace" value="" placeholder="Enter new value">\
</div>\
</div>\
</div>\
<div class="col-xs-6">\
<div class="form-group">\
<label class="control-label col-lg-6">\
' + lang_regex + '\
<span class="label-tooltip" onclick="fancyMsgBox(\'' + lang_regex_info + '\');">?</span>\
</label>\
<div class="col-lg-6">\
<span class="switch prestashop-switch fixed-width-md">\
<input type="radio" name="' + nameKey + '[regex]" \
id="' + nameKey + '[regex]_on" value="1">\
<label for="' + nameKey + '[regex]_on">Yes</label>\
<input type="radio" name="' + nameKey + '[regex]" \
id="' + nameKey + '[regex]_off" value="0"checked="checked">\
<label for="' + nameKey + '[regex]_off">No</label>\
<a class="slide-button btn"></a>\
</span>\
</div>\
</div>\
<div class="form-group">\
<button class="removeReplacement btn btn-danger btn-sm pull-right">\
<i class="icon-trash"></i> Remove\
</button>\
</div>\
</div>\
</div>\
<hr>\
</div>';
++replacementCounter;
replacements.append(html);
return false;
});
$(document).on('click', '.fieldSettingsBtn', function () {
var settingsBox = $(this).parent().parent().parent().parent().next('tr');
if (!settingsBox.is(':visible')) {
$(this).removeClass('btn-success').addClass('btn-warning');
} else {
$(this).removeClass('btn-warning').addClass('btn-success');
}
settingsBox.toggle(500);
});
$(document).on('change', 'select.prestashop_field', function () {
toggleFieldSettingsBtn($(this));
});
// real time file value changing
$(document).on('keyup', 'input.editValueJs', function () {
var label = $(this).parent().parent().parent().parent().parent().parent().prev('tr.info').find('.label-tooltip').eq(0);
var labelOrgVal = label.attr('data-original-value');
var editValueDiv = $(this).parent().parent().parent().find('input[type="text"],input[type="number"]');
var prepend = editValueDiv.eq(0).val();
var append = editValueDiv.eq(1).val();
var cutFromStart = parseInt(editValueDiv.eq(2).val());
var cutFromEnd = parseInt(editValueDiv.eq(3).val());
var labelNewVal = prepend;
if (!isNaN(cutFromStart))
labelNewVal += labelOrgVal.substr(cutFromStart);
else
labelNewVal += labelOrgVal;
if (!isNaN(cutFromEnd) && cutFromEnd > (labelNewVal.length - prepend.length))
cutFromEnd = (labelNewVal.length - prepend.length);
if (!isNaN(cutFromEnd))
labelNewVal = labelNewVal.substr(0, labelNewVal.length - cutFromEnd);
labelNewVal += append;
label.text(labelNewVal);
});
$(document).on('change', 'input.editValueJs', function () {
$(this).trigger('keyup');
});
});