diff --git a/public/app.js b/public/app.js index c0196aa..eca6457 100644 --- a/public/app.js +++ b/public/app.js @@ -502,7 +502,7 @@ async function selectTable(schema, tableName) { field: col.COLUMN_NAME, headerSort: true, // ✅ Явно включаем сортировку sorter: sorterType, // ✅ Тип сортировщика для отображения стрелок - // ✅ Форматтер для чисел (разделитель тысяч, запятая для дробной части) + // ✅ Форматтер и мутатор для чисел ...(sorterType === "number" && { formatter: function(cell) { const value = cell.getValue(); @@ -515,6 +515,17 @@ async function selectTable(schema, tableName) { minimumFractionDigits: 0, maximumFractionDigits: Math.min(decimalPlaces, 6) }).format(num); + }, + // ✅ Очистка пробелов при вводе/вставке чисел + mutatorEdit: function(value) { + if (value === null || value === undefined || value === '') return value; + // Убираем все пробелы (обычные, неразрывные, etc.) + let cleaned = String(value).replace(/[\s\u00A0\u2007\u202F]+/g, ''); + // Заменяем запятую на точку для дробных чисел + cleaned = cleaned.replace(',', '.'); + // Если результат - валидное число, возвращаем его + const num = parseFloat(cleaned); + return isNaN(num) ? value : num; } }), // ✅ Добавляем тултип для заголовка