尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Drag-and-drop web viewer for EUC trip logs (.dbb, .csv, .gpx, .xlsx): a 3D
map with terrain, playback, and charts, all client-side. No backend, no upload to
anyone's server. Your files are parsed in your browser and never leave it.
Pairs with the EUC Planet app, which records the logs directly, but exports from DarknessBot or euc.world work too.
If it's useful to you, a PayPal donation keeps it going.
Map and library. Drop a file, or several. Trips are grouped into a tree, can be
renamed, assigned to a wheel, filtered, and exported back out as .csv or .dbb.
The trace can be coloured by any metric (speed, PWM, current, torque, …) with a
choice of palettes.
Trip inspector. A 3D terrain map with playback, a live dashboard, and a stack of charts you can reorder, hide, or combine into your own overlays. Pinch or use Trim to pick a section; Compare rides a second trip alongside the first, lined up by a time offset that it can work out for you.
Wheel forensics. Whole-history analysis: estimated range from battery delta, Wh/km, an internal-resistance proxy from the voltage sag slope, temperature rise, and trend charts binned by month, quarter, year, or cumulative distance. Range can be normalised to 20 °C using ambient temperatures fetched from the free Open-Meteo archive. Prints to a PDF with a sensible filename.
Dropbox sync. Optional. A scoped app-folder connection that keeps /trips in step
with the library, with archive, upload, and a stop button for long runs.
Video Overlay Studio. Composites telemetry over ride footage in the browser and
renders out an MP4 via WebCodecs. An optional Dragy .vbo adds GPS speed.
index.html Main map + trip library
inspector.html Single-trip inspector (3D map, playback, charts, compare)
analytics.html Wheel forensics (whole-history analysis + print)
video.html Video Overlay Studio
storage.html Storage explorer (what is in IndexedDB / localStorage)
wheel-check.html Wheel sync check
static/
favicon.svg
img/telemetry-icons/ Overlay icons for the video studio
css/style.css Main app styles
css/inspector.css Inspector styles
css/analytics.css Forensics styles (incl. print rules)
css/video.css Video studio styles
js/app.js Main app (Leaflet map, trip tree, recent files, Dropbox UI)
js/inspector.js Inspector (MapLibre GL 3D map, charts, playback, compare)
js/analytics.js Forensics metrics, trend charts, weather normalisation
js/parser-worker.js Web Worker: parses .dbb/.csv/.gpx/.xlsx with JSZip + SheetJS
js/dropbox-source.js Dropbox scoped app (PKCE OAuth, app folder)
js/euc-world-export.js euc.world bookmarklet: exports your tours as a .dbb
js/source-hints.js Upload-screen "how to export from DarknessBot / euc.world"
js/video-editor.js Video studio (WebCodecs render, mp4-muxer)
js/euc-game.js Minigame on the load screen (hold the logo, or #skills)
serve.cmd python -m http.server 8000
External libraries (all from CDN, pinned):
.dbb zip archives).xlsx)s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.pngNo build step. Commit and push; GitHub Pages serves main from the root.
eucplanet-trip-viewer (version 3), primary storage
recentFiles: up to 5 recently uploaded files with their parsed trackscurrentSession: last-loaded allTracks array (key "tracks")weatherCache: daily ambient temperatures from Open-Meteo, keyed by
"{lat}|{lon}" rounded to 0.1°dbb_tracks, fallback for small datasets (silently fails over quota)The inspector (inspector.html?i=<index>) and the forensics page read IndexedDB
first, then fall back to localStorage. <index> is the position in allTracks
after sorting newest first.
Each track object:
{
name, date, dateStart, dateEnd,
points: [[lat, lon, speed, alt, volt, temp, battery, pwm, current, power,
gpsSpeed, torque, phaseCurrent], ...], // GPS-bearing rows
timeseries: [[sec, speed, voltage, temp, battery, altitude, lat, lon, mileageKm,
pwm, current, power, gpsSpeed, gForce, gForceX, gForceY,
torque, phaseCurrent], ...], // downsampled to <= 500
stats: { points, rows, distanceKm, maxSpeed, avgSpeed, maxAlt, minAlt,
maxVoltage, minVoltage, maxTemp }
}
Columns are append-only, so every reader guards for undefined: tracks cached by
an older version simply lack the trailing fields. gpsSpeed and the gForce* columns
come from newer EUC Planet exports; torque and phaseCurrent from 0.19+. A wheel
that does not report one of these logs a constant 0, so an all-zero column is
treated as absent rather than drawn as a flat line at zero.
The viewer can be embedded in any app (Android, iOS, Electron, iframe). A JavaScript
API (window.loadFileFromBase64) accepts base64-encoded .dbb or .csv data and
displays it on the map without manual upload. Add ?embedded to the URL to hide the
upload UI on load. See INTEGRATION.md for details and code examples.
It's static, so any static file server works:
serve.cmd # or: python -m http.server 8000
# then open http://localhost:8000/
Web Workers and IndexedDB require http://, not file://.