REM-Client b4a20f12: QoL - depot search over all depots, depot item by mail, loadout sharing and seller bases (Mark), nav map bookmark folders/colours/export/import/route by double click, group waypoints on the map, price alerts from the dealer, Base Manager page Trade log, friends Invite/Mail (rem-server 69c8c01)

This commit is contained in:
2026-11-10 16:27:30 +01:00
parent 9795731c3c
commit c583a67be4
31 changed files with 90 additions and 11 deletions
+48 -2
View File
@@ -67,6 +67,18 @@
.bookmark .lbl { color: #f2b13c; }
.bookmark.locked .s { border-color: #f2b13c; background-color: #8a6420; }
.bookmark.sel .s { border-color: #ffffff; }
/* REM: a bookmark's own colour over its dot; the group's shared waypoints */
.mi .bc { position: absolute; left: -4dp; top: -4dp; width: 8dp; height: 8dp; border-radius: 4dp; }
.gwp .s { left: -5dp; top: -5dp; width: 10dp; height: 10dp; background-color: #6fd08c; border: 2dp #05080d; transform: rotate(45deg); }
.gwp .lbl { color: #6fd08c; }
.hit.fold { padding: 6dp 10dp 2dp 10dp; color: #f2b13c; font-size: 12dp; border-bottom: 0; }
.hit .dot { width: 8dp; height: 8dp; border-radius: 4dp; margin: 5dp 8dp 0 0; }
.hit .hw { font-size: 11dp; color: #8197ad; margin-left: 6dp; white-space: nowrap; }
.mtools { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; margin: 2dp 10dp 4dp 10dp; }
.mtools .mk { margin: 0 6dp 0 0; padding: 0 6dp; font-size: 11dp; color: #8197ad; border: 1dp #24405c; border-radius: 2dp; }
.mtools .mk:hover, .mtools .mk.on { color: #f2b13c; border-color: #f2b13c; }
.sw { width: 14dp; height: 14dp; border-radius: 7dp; margin: 0 5dp 0 0; border: 1dp #24405c; }
.sw:hover { border-color: #ffffff; }
.hit .mk { margin-left: 6dp; padding: 0 6dp; font-size: 11dp; color: #8197ad; border: 1dp #24405c; border-radius: 2dp; }
.hit .mk:hover { color: #f2b13c; border-color: #f2b13c; }
.hit .mk.del:hover { color: #ef6a5b; border-color: #ef6a5b; }
@@ -119,6 +131,7 @@
<div class="mi" data-for="i : items" data-attr-class="'mi ' + i.cls + (i.selected ? ' sel' : '')" data-style-left="i.left" data-style-top="i.top">
<div class="ring2" data-if="i.selected"></div>
<div class="s" data-style-transform="i.rot"></div>
<div class="bc" data-if="i.color != ''" data-style-background-color="i.color"></div>
<div class="lbl" data-if="i.label != ''" data-style-left="i.lleft" data-style-top="i.ltop">{{ i.label }}</div>
</div>
<div class="pop" data-if="popup" data-style-left="pop_left" data-style-top="pop_top">
@@ -170,9 +183,42 @@
<h3>Known uncharted systems</h3>
<div class="hit" data-for="u : uncharted_list"><span class="hn">{{ u.name }}</span><span class="hk">{{ u.kind }}</span></div>
</div>
<div class="marks" data-if="bookmarks.size &gt; 0 &amp;&amp; search == ''">
<div class="marks" data-if="search == ''">
<h3>Bookmarks</h3>
<div class="hit" data-for="b : bookmarks" data-action="gomark" data-ctx="mark" data-attr-data-arg="b.key"><span class="hn">{{ b.name }}</span><span class="mk" data-action="mark_lock" data-attr-data-arg="b.key">{{ b.kind == 'locked' ? 'Unlock' : 'Lock' }}<span class="tip">{{ b.kind == 'locked' ? 'Locked: it can be neither moved nor deleted. Click to unlock.' : 'Lock it in place: no moving, no deleting.' }}</span></span><span class="mk del" data-if="b.kind != 'locked'" data-action="mark_del" data-attr-data-arg="b.key">&#215;</span></div>
<div class="mtools">
<span class="mk" data-class-on="marks_all" data-action="marks_all">All systems<span class="tip">Every bookmark, of every system - a click goes there, a double click sets a waypoint (the route).</span></span>
<span class="mk" data-action="marks_export">Export<span class="tip">Copies the bookmarks as text (REM-BOOKMARK lines) - to paste into Discord or a file.</span></span>
<span class="mk" data-action="marks_import">Import<span class="tip">Adds the REM-BOOKMARK lines of the clipboard (someone's export).</span></span>
</div>
<div class="hint" style="padding: 2dp 10dp;" data-if="marks_note != ''">{{ marks_note }}</div>
<div class="hint" style="padding: 2dp 10dp;" data-if="bookmarks.size == 0">No bookmarks here. Pick a place and press Bookmark.</div>
<div data-for="b : bookmarks">
<div class="hit fold" data-if="b.kind == 'folder'">{{ b.name }}</div>
<div class="hit" data-if="b.kind != 'folder'" data-action="gomark" data-dbl="markroute" data-ctx="mark" data-attr-data-arg="b.key"><span class="dot" data-style-background-color="b.color"></span><span class="hn">{{ b.name }}</span><span class="hw" data-if="b.where != ''">{{ b.where }}</span><span class="mk" data-action="mark_lock" data-attr-data-arg="b.key">{{ b.kind == 'locked' ? 'Unlock' : 'Lock' }}<span class="tip">{{ b.kind == 'locked' ? 'Locked: it can be neither moved nor deleted. Click to unlock.' : 'Lock it in place: no moving, no deleting.' }}</span></span><span class="mk del" data-if="b.kind != 'locked'" data-action="mark_del" data-attr-data-arg="b.key">&#215;</span><span class="tip">Click: go there. Double click: a waypoint there (the route). Right click: more.</span></div>
</div>
<div data-if="pick_mark" style="margin: 6dp 10dp;">
<div style="display: flex; flex-direction: row; align-items: center;">
<span class="hint" style="margin-right: 6dp;">Folder</span>
<input class="text" type="text" data-value="mark_folder" maxlength="32" style="flex: 1; margin-right: 6dp;"/>
<div class="btn" style="margin: 0; padding: 1dp 8dp;" data-action="mark_folder_set">Set</div>
</div>
<div style="display: flex; flex-direction: row; align-items: center; margin-top: 6dp;">
<span class="hint" style="margin-right: 6dp;">Colour</span>
<span class="sw" style="background-color: #f2b13c;" data-action="mark_color" data-arg=""></span>
<span class="sw" style="background-color: #5cc8f0;" data-action="mark_color" data-arg="#5cc8f0"></span>
<span class="sw" style="background-color: #6fd08c;" data-action="mark_color" data-arg="#6fd08c"></span>
<span class="sw" style="background-color: #ef6a5b;" data-action="mark_color" data-arg="#ef6a5b"></span>
<span class="sw" style="background-color: #b48cf2;" data-action="mark_color" data-arg="#b48cf2"></span>
<span class="sw" style="background-color: #f2e85c;" data-action="mark_color" data-arg="#f2e85c"></span>
<span class="sw" style="background-color: #ffffff;" data-action="mark_color" data-arg="#ffffff"></span>
</div>
</div>
</div>
<div class="marks" data-if="search == ''">
<h3>Group route</h3>
<div class="mtools"><span class="mk" data-class-on="wp_sharing" data-action="wp_share">{{ wp_sharing ? 'Stop sharing' : 'Share my waypoints' }}<span class="tip">Your group sees your waypoints on its map (green diamonds) and can follow them.</span></span></div>
<div class="hint" style="padding: 2dp 10dp;">{{ wp_note }}</div>
<div class="hit" data-for="g : group_wps"><span class="hn">{{ g.name }}</span><span class="hw">{{ g.where }}</span><span class="mk" data-action="wp_follow" data-attr-data-arg="g.name">{{ g.kind == 'following' ? 'Stop following' : 'Follow' }}<span class="tip">Following: that pilot's waypoints become yours (and change with theirs) - the HUD shows them.</span></span></div>
</div>
<div class="pcard" data-if="!has_pick"><div class="k">Click the map to pick a place. Wheel zooms, drag moves, double click opens a system.</div></div>
<div class="objs" data-if="objectives.size &gt; 0">