48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
// lib/validator.js
|
|
// Валидация данных для калькуляторов
|
|
|
|
/**
|
|
* Валидирует обязательные поля
|
|
* @param {Object} data - Данные для проверки
|
|
* @param {string[]} requiredFields - Массив обязательных полей
|
|
* @returns {{ valid: boolean, error?: string }}
|
|
*/
|
|
function validateRequiredFields(data, requiredFields) {
|
|
for (const field of requiredFields) {
|
|
if (!data[field] || data[field] === '') {
|
|
return {
|
|
valid: false,
|
|
error: `Поле "${field}" обязательно для заполнения`,
|
|
};
|
|
}
|
|
}
|
|
return { valid: true };
|
|
}
|
|
|
|
/**
|
|
* Валидирует числовые поля
|
|
* @param {Object} data - Данные для проверки
|
|
* @param {string[]} numericFields - Массив полей, которые должны быть числами
|
|
* @returns {{ valid: boolean, error?: string }}
|
|
*/
|
|
function validateNumericFields(data, numericFields) {
|
|
for (const field of numericFields) {
|
|
if (data[field] !== undefined && data[field] !== null && data[field] !== '') {
|
|
const num = Number(data[field]);
|
|
if (isNaN(num) || num < 0) {
|
|
return {
|
|
valid: false,
|
|
error: `Поле "${field}" должно быть положительным числом`,
|
|
};
|
|
}
|
|
}
|
|
}
|
|
return { valid: true };
|
|
}
|
|
|
|
module.exports = {
|
|
validateRequiredFields,
|
|
validateNumericFields,
|
|
};
|
|
|