135 lines
6.7 KiB
HTML
135 lines
6.7 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>DayZ Web Map</title>
|
|
<link rel="stylesheet" href="/style.css">
|
|
</head>
|
|
<body>
|
|
<button class="settings-toggle" id="settingsToggle" type="button" aria-label="Open filters">☰</button>
|
|
<div class="top-right-toggles">
|
|
<button class="players-toggle" id="labelSettingsToggle" type="button" aria-label="Open label settings">Labels</button>
|
|
<button class="players-toggle" id="playersToggle" type="button" aria-label="Open players">Players</button>
|
|
<button class="loot-toggle" id="lootToggle" type="button" aria-label="Open loot">Loot</button>
|
|
</div>
|
|
<aside class="label-settings-panel" id="labelSettingsPanel">
|
|
<div class="label-settings-header">
|
|
<div>
|
|
<strong>Label Settings</strong>
|
|
<div class="label-settings-subtitle">Tune ordinary loot label placement without touching filters.</div>
|
|
</div>
|
|
<div class="label-settings-actions">
|
|
<button class="collapse-button" id="labelSettingsReset" type="button">Reset</button>
|
|
<button class="collapse-button" id="labelSettingsClose" type="button" aria-label="Close label settings">✕</button>
|
|
</div>
|
|
</div>
|
|
<div class="label-settings-body" id="labelSettingsBody">
|
|
<label class="setting-card" for="ordinaryLootSpread">
|
|
<span class="setting-title">Ordinary loot spread</span>
|
|
<span class="setting-value" id="ordinaryLootSpreadValue">2.0x</span>
|
|
<input type="range" id="ordinaryLootSpread" min="1" max="4" step="0.1" value="2">
|
|
<span class="setting-help">Controls how far regular loot labels may move away from the point to avoid collisions.</span>
|
|
</label>
|
|
<label class="setting-card" for="groupedLootSpread">
|
|
<span class="setting-title">Grouped loot spread</span>
|
|
<span class="setting-value" id="groupedLootSpreadValue">2.0x</span>
|
|
<input type="range" id="groupedLootSpread" min="1" max="4" step="0.1" value="2">
|
|
<span class="setting-help">Controls how far merged same-name loot labels may sit from the cluster center.</span>
|
|
</label>
|
|
<label class="setting-card" for="sameLootMergeRadius">
|
|
<span class="setting-title">Same-name merge radius</span>
|
|
<span class="setting-value" id="sameLootMergeRadiusValue">110 px</span>
|
|
<input type="range" id="sameLootMergeRadius" min="20" max="240" step="5" value="110">
|
|
<span class="setting-help">Items with the same name inside this screen radius share one text label with multiple connector lines.</span>
|
|
</label>
|
|
<label class="setting-card" for="lineAnchorMode">
|
|
<span class="setting-title">Line anchor on text</span>
|
|
<select id="lineAnchorMode">
|
|
<option value="auto-nearest">Auto nearest</option>
|
|
<option value="top-left">Top left</option>
|
|
<option value="bottom-center">Bottom center</option>
|
|
<option value="top-center">Top center</option>
|
|
<option value="top-right">Top right</option>
|
|
<option value="middle-left">Middle left</option>
|
|
<option value="middle-right">Middle right</option>
|
|
<option value="bottom-left">Bottom left</option>
|
|
<option value="bottom-right">Bottom right</option>
|
|
</select>
|
|
<span class="setting-help">Chooses from which corner or side midpoint of the text the connector line starts. Auto nearest selects the closest standard point on the text rectangle to the item point.</span>
|
|
</label>
|
|
<label class="setting-card toggle-setting">
|
|
<span class="setting-title">Merge same-name loot labels</span>
|
|
<input type="checkbox" id="mergeSameLootLabels" checked>
|
|
<span class="setting-help">When enabled, nearby ordinary loot with the same name is shown as one label with several lines.</span>
|
|
</label>
|
|
</div>
|
|
</aside>
|
|
<aside class="players-panel" id="playersPanel">
|
|
<div class="players-panel-header">
|
|
<strong>Players</strong>
|
|
<button class="collapse-button" id="playersClose" type="button" aria-label="Close players">✕</button>
|
|
</div>
|
|
<div class="players-server" id="serverInfo">Server: loading...</div>
|
|
<div class="players-list" id="playersList"></div>
|
|
</aside>
|
|
<aside class="loot-panel" id="lootPanel">
|
|
<div class="players-panel-header">
|
|
<strong>Ground Loot</strong>
|
|
<button class="collapse-button" id="lootClose" type="button" aria-label="Close loot">✕</button>
|
|
</div>
|
|
<div class="players-server" id="lootInfo">Loot: loading...</div>
|
|
<div class="loot-list" id="lootList"></div>
|
|
</aside>
|
|
<div class="shell">
|
|
<aside class="panel" id="settingsPanel">
|
|
<div class="panel-header">
|
|
<div>
|
|
<h1>DayZ Web Map</h1>
|
|
<div id="status">Connecting...</div>
|
|
<div id="serverBadge" class="server-badge">Server: loading...</div>
|
|
</div>
|
|
<button class="collapse-button" id="collapseButton" type="button" aria-label="Hide filters">✕</button>
|
|
</div>
|
|
<div class="panel-body" id="settingsPanelBody">
|
|
<div class="group">
|
|
<div class="group-title">Controls</div>
|
|
<label class="toggle-row"><input type="checkbox" id="followPlayer"><span>Follow player</span></label>
|
|
<label class="toggle-row"><input type="checkbox" id="showLabels" checked><span>Global labels</span></label>
|
|
<label class="toggle-row"><input type="checkbox" id="showLoot" checked><span>All loot</span></label>
|
|
</div>
|
|
|
|
<div class="group">
|
|
<div class="group-title">Entity Filters</div>
|
|
<div id="entityFilterList" class="filter-list"></div>
|
|
</div>
|
|
|
|
<div class="group">
|
|
<div class="group-title">Loot Filters</div>
|
|
<div id="lootFilterList" class="filter-list"></div>
|
|
</div>
|
|
|
|
<div class="group">
|
|
<div class="group-title">Display</div>
|
|
<label class="range-row" for="distanceFilter"><span>Distance filter</span><input type="range" id="distanceFilter" min="0" max="5000" step="50" value="2000"></label>
|
|
<div id="distanceValue">2000 m</div>
|
|
<label class="range-row" for="textSize"><span>Default text size</span><input type="range" id="textSize" min="10" max="24" step="1" value="14"></label>
|
|
<div id="textSizeValue">14 px</div>
|
|
</div>
|
|
|
|
<div class="hint">Drag to move. Use wheel or pinch to zoom. Open a filter card to tune color, marker size, text size and labels.</div>
|
|
</div>
|
|
</aside>
|
|
<main class="viewport" id="viewport">
|
|
<div class="canvas" id="canvas">
|
|
<div id="tiles"></div>
|
|
<svg id="paths"></svg>
|
|
<div id="itemLabels"></div>
|
|
<div id="markers"></div>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
<script src="/app.js"></script>
|
|
</body>
|
|
</html>
|