ФЭНДОМ


function($elem) {
	var type = $elem.attr('data-calc');
 
	function createCalcField(fieldName, opts) {
		opts = opts || {};
		return '<div class="CalcField"><div class="CalcFieldName">' + fieldName + '</div><div class="CalcFieldValue"><input' + ('inputClass' in opts ? ' class="' + opts.inputClass + '"' : '') + (opts.disabled ? ' disabled' : '') + ' placeholder="' + (opts.inputPlaceholder || '') + '" type="text" /></div></div>';
	}
 
	function createCalcTitle(caclTitle) {
		return '<div class="CalcTitle">' + caclTitle + '</div>';
	}
	switch (type) {
		case 'armor':
			$elem.addClass('Calc');
			$elem.append(createCalcTitle('Калькулятор брони'), createCalcField('Броня', {
				inputPlaceholder: 'Введите число...'
			}), createCalcField('Поглощение', {
				disabled: true
			}));
 
			function calculate(armor) {
				return 100 * (armor / (armor + 300));
			}
			var $armorInput = $elem.find('> div:nth-child(2) input');
			var $armorOutput = $elem.find('> div:nth-child(3) input');
 
			function fixNumberFormat(val) {
				val = $.trim(val);
				val = val.replace(/\s/g, '').replace(/,/g, '.');
				return val;
			}
			$armorInput.on('input', function() {
				var fixedFormat = fixNumberFormat(String($armorInput.val()));
				var calculatedVal = calculate(Number(fixedFormat));
				if (!calculatedVal || calculatedVal === Infinity || -calculatedVal === Infinity) {
					$armorOutput.val('Неверное значение брони!');
				} else {
					$armorOutput.val(calculatedVal + '%');
					$armorInput.val(fixedFormat);
				}
			});
			break;
		default:
			throw new Error('Калькулятора ' + type + ' не существует');
	}
}
Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.