mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-22 14:51:45 +00:00
feat(import): selective GPX/KML element import and performance improvements
Add type-selector UI in the file import modal letting users choose which GPX elements (waypoints, routes, tracks) or KML/KMZ elements (points, paths) to import. KML LineString placemarks are now imported as path places with route_geometry. Performance improvements: - Extract MemoPlaceRow with React.memo and contentVisibility:auto to cut unnecessary re-renders in PlacesSidebar - Add weatherQueue to cap concurrent weather fetches at 3 - Replace sequential per-place deletes with a single bulkDelete API call (new DELETE /places/bulk endpoint + deletePlacesMany service) - Memoize atlas/photo/weather service calls to avoid redundant requests - Add multi-select mode to PlacesSidebar for bulk operations Add large GPX/KML/KMZ fixtures for integration/perf testing and two profiler analysis scripts under scripts/.
This commit is contained in:
@@ -10,6 +10,9 @@ const ru: Record<string, string> = {
|
||||
'common.add': 'Добавить',
|
||||
'common.loading': 'Загрузка...',
|
||||
'common.import': 'Импорт',
|
||||
'common.select': 'Выбрать',
|
||||
'common.selectAll': 'Выбрать всё',
|
||||
'common.deselectAll': 'Снять выделение со всех',
|
||||
'common.error': 'Ошибка',
|
||||
'common.unknownError': 'Неизвестная ошибка',
|
||||
'common.tooManyAttempts': 'Слишком много попыток. Попробуйте позже.',
|
||||
@@ -876,6 +879,8 @@ const ru: Record<string, string> = {
|
||||
'trip.toast.reservationAdded': 'Бронирование добавлено',
|
||||
'trip.toast.deleted': 'Удалено',
|
||||
'trip.confirm.deletePlace': 'Вы уверены, что хотите удалить это место?',
|
||||
'trip.confirm.deletePlaces': 'Удалить {count} мест?',
|
||||
'trip.toast.placesDeleted': '{count} мест удалено',
|
||||
|
||||
// Day Plan Sidebar
|
||||
'dayplan.emptyDay': 'На этот день мест не запланировано',
|
||||
@@ -920,6 +925,17 @@ const ru: Record<string, string> = {
|
||||
'places.importFileError': 'Ошибка импорта',
|
||||
'places.importAllSkipped': 'Все места уже были в поездке.',
|
||||
'places.gpxImported': '{count} мест импортировано из GPX',
|
||||
'places.gpxImportTypes': 'Что импортировать?',
|
||||
'places.gpxImportWaypoints': 'Путевые точки',
|
||||
'places.gpxImportRoutes': 'Маршруты',
|
||||
'places.gpxImportTracks': 'Треки (с геометрией пути)',
|
||||
'places.gpxImportNoneSelected': 'Выберите хотя бы один тип для импорта.',
|
||||
'places.kmlImportTypes': 'Что вы хотите импортировать?',
|
||||
'places.kmlImportPoints': 'Точки (Placemarks)',
|
||||
'places.kmlImportPaths': 'Маршруты (LineStrings)',
|
||||
'places.kmlImportNoneSelected': 'Выберите хотя бы один тип.',
|
||||
'places.selectionCount': '{count} выбрано',
|
||||
'places.deleteSelected': 'Удалить выбранные',
|
||||
'places.kmlKmzImported': '{count} мест импортировано из KMZ/KML',
|
||||
'places.urlResolved': 'Место импортировано из URL',
|
||||
'places.importList': 'Импорт списка',
|
||||
@@ -936,6 +952,7 @@ const ru: Record<string, string> = {
|
||||
'places.assignToDay': 'Добавить в какой день?',
|
||||
'places.all': 'Все',
|
||||
'places.unplanned': 'Незапланированные',
|
||||
'places.filterTracks': 'Треки',
|
||||
'places.search': 'Поиск мест...',
|
||||
'places.allCategories': 'Все категории',
|
||||
'places.categoriesSelected': 'категорий',
|
||||
@@ -1696,6 +1713,7 @@ const ru: Record<string, string> = {
|
||||
'undo.reorder': 'Места переупорядочены',
|
||||
'undo.optimize': 'Маршрут оптимизирован',
|
||||
'undo.deletePlace': 'Место удалено',
|
||||
'undo.deletePlaces': 'Места удалены',
|
||||
'undo.moveDay': 'Место перемещено в другой день',
|
||||
'undo.lock': 'Блокировка места изменена',
|
||||
'undo.importGpx': 'Импорт GPX',
|
||||
|
||||
Reference in New Issue
Block a user