| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- window.setCustomField = function(obj)
- {
- const changeField = typeof obj == 'string' ? obj : $(obj).attr('name');
- if(dependFields && dependFields[changeField])
- {
- dependFields[changeField].forEach((field) => {
- window.checkDepends(field);
- window.setCustomField(field);
- });
- }
- if(!$('#customFieldsTable').length) return;
- $('#customFieldsTable .custom-btn').addClass('disabled').attr('type', 'button');
- if(typeof customFields === 'undefined' || !customFields) return;
- for(let name in customFields)
- {
- if($(`#${name}`).closest('tr').hasClass('hidden')) continue;
- const value = getCustomValue(customFields[name].type, name, customFields[name].separator);
- if(value != customFields[name].value)
- {
- $('#customFieldsTable .custom-btn').removeClass('disabled').attr('type', 'submit');
- return;
- }
- }
- };
- window.getCustomValue = function(type, name, split = ',')
- {
- if($(`.${name}-row-tr`).hasClass('hidden')) return '';
- let value = '';
- switch(type)
- {
- case 'radioList':
- value = $('input[name=' + name + ']:checked').val();
- break;
- case 'checkList':
- value = $('input[name^=' + name + ']:checked').map(function() { return $(this).val(); }).get();
- break;
- case 'picker':
- value = $('input[name=' + name + ']').val();
- break;
- case 'switcher':
- value = $('input[name=' + name + ']').is(':checked');
- break;
- default:
- value = $('input[name=' + name + ']').val();
- break;
- }
- if(Array.isArray(value)) value = value.join(split);
- return value;
- };
- window.checkDepends = function(fieldName)
- {
- if(typeof customFields === 'undefined' || !customFields) return;
- if(typeof fieldName === 'object') fieldName = fieldName.name;
- const field = customFields[fieldName];
- if(!field || !field.depends || !field.depends.length) return;
- let canShow = true;
- field.depends.forEach(function(depend)
- {
- if(customFields[depend.key])
- {
- const dependField = customFields[depend.key];
- const value = getCustomValue(dependField.type, dependField.name);
- if(depend.operator == 'eq' && value != depend.value) canShow = false;
- if(depend.operator == 'ne' && value == depend.value) canShow = false;
- if(depend.operator == 'lt' && value >= depend.value) canShow = false;
- if(depend.operator == 'gt' && value <= depend.value) canShow = false;
- if(depend.operator == 'in' && !value.split(',').includes(depend.value)) canShow = false;
- }
- });
- $(`.${field.name}-row-tr`).toggleClass('hidden', !canShow);
- };
- $(function()
- {
- setTimeout(function()
- {
- if(typeof customFields === 'undefined' || !customFields) return;
- for(let name in customFields) window.setCustomField(name);
- }, 100);
- });
|