Просмотр исходного кода

Show loading indicator on all tracks when opening a folder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
k4be 2 недель назад
Родитель
Сommit
ae5a700f36
1 измененных файлов с 12 добавлено и 6 удалено
  1. 12 6
      gpx-vis-frontend/js/browser.js

+ 12 - 6
gpx-vis-frontend/js/browser.js

@@ -516,12 +516,18 @@ const Browser = (() => {
     const tracks = dirContents[dirId].tracks;
     if (tracks.length === 0) return;
 
-    await Promise.all(tracks.map(async track => {
-      if (!MapView.hasTrack(track.id)) {
-        try {
-          const data = await API.getTrackPoints(track.id);
-          MapView.addTrack(data, track.id);
-        } catch (e) { /* ignore individual errors */ }
+    const toLoad = tracks.filter(t => !MapView.hasTrack(t.id));
+    toLoad.forEach(t => { loadingTrackIds.add(t.id); setTrackItemLoading(t.id, true); });
+
+    await Promise.all(toLoad.map(async track => {
+      try {
+        const data = await API.getTrackPoints(track.id);
+        trackDataCache[track.id] = data;
+        MapView.addTrack(data, track.id);
+      } catch (e) { /* ignore individual errors */ }
+      finally {
+        loadingTrackIds.delete(track.id);
+        setTrackItemLoading(track.id, false);
       }
     }));
     MapView.fitAll();