finish setup
Some checks failed
Test / test (push) Has been cancelled

This commit is contained in:
2026-06-23 16:46:31 +02:00
parent 2ce8a23ce9
commit 773341fc84
16 changed files with 1780 additions and 4 deletions

View File

@@ -1334,6 +1334,164 @@
</dialog>
</div>
<div class="page" id="pagePathGuides" data-page-content="path-guides" hidden>
<div id="pathGuidesListView" class="mapsMirPage">
<header class="mapsMirHeader">
<div class="mapsMirHeaderText">
<h1 class="mapsMirTitle" data-i18n="pathGuides.title">Path guides</h1>
<p class="mapsMirSubtitle">
<span data-i18n="pathGuides.subtitle">Define fixed routes between positions using waypoints.</span>
<button type="button" class="mapsMirHelpBtn" id="pathGuidesHelpBtn" data-i18n-title="pathGuides.helpTitle" aria-label="Help">
<svg width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.5"/><text x="8" y="11.5" text-anchor="middle" font-size="10" font-weight="700" fill="currentColor">?</text></svg>
</button>
</p>
</div>
<div class="mapsMirHeaderActions">
<button type="button" class="mapsMirBtn mapsMirBtn--green" id="pathGuideCreateBtn">
<svg width="14" height="14" viewBox="0 0 14 14" aria-hidden="true"><path d="M7 1v12M1 7h12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
<span data-i18n="pathGuides.create">Create path guide</span>
</button>
<button type="button" class="mapsMirBtn mapsMirBtn--outline" id="pathGuidesClearFiltersBtn">
<svg width="14" height="14" viewBox="0 0 14 14" aria-hidden="true"><circle cx="7" cy="7" r="5.5" fill="none" stroke="currentColor" stroke-width="1.3"/><path d="M4.5 4.5l5 5" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/></svg>
<span data-i18n="pathGuides.clearFilters">Clear filters</span>
</button>
</div>
</header>
<div class="mapsMirFilterBar">
<label class="mapsMirFilterLabel" for="pathGuidesFilterInput" data-i18n="pathGuides.filterLabel">Filter:</label>
<input type="search" id="pathGuidesFilterInput" class="mapsMirFilterInput" data-i18n-placeholder="pathGuides.filterPlaceholder" placeholder="Filter by name or map..." autocomplete="off" />
<span id="pathGuidesFilterCount" class="mapsMirFilterCount">0 item(s) found</span>
<div class="mapsMirPager">
<button type="button" class="mapsMirPageBtn" id="pathGuidesPageFirst" aria-label="First page">&laquo;</button>
<button type="button" class="mapsMirPageBtn" id="pathGuidesPagePrev" aria-label="Previous page">&lsaquo;</button>
<span id="pathGuidesPageLabel" class="mapsMirPageLabel">Page 1 of 1</span>
<button type="button" class="mapsMirPageBtn" id="pathGuidesPageNext" aria-label="Next page">&rsaquo;</button>
<button type="button" class="mapsMirPageBtn" id="pathGuidesPageLast" aria-label="Last page">&raquo;</button>
</div>
</div>
<div class="mapsMirTableWrap">
<table class="mapsMirTable mapsMirTable--path-guides" id="pathGuidesTable">
<thead>
<tr>
<th class="pathGuideMirThIcon" aria-hidden="true"></th>
<th data-i18n="pathGuides.colName">Name</th>
<th data-i18n="pathGuides.colMap">Map</th>
<th data-i18n="pathGuides.colStarts">Starts</th>
<th data-i18n="pathGuides.colVias">Waypoints</th>
<th data-i18n="pathGuides.colGoals">Goals</th>
<th class="mapsMirThFunctions" data-i18n="pathGuides.colFunctions">Functions</th>
</tr>
</thead>
<tbody id="pathGuideList"></tbody>
</table>
<div id="pathGuideListEmpty" class="mapsMirEmpty" hidden data-i18n="pathGuides.empty">No path guides yet. Create waypoint positions on the map first, then add a path guide.</div>
</div>
</div>
<div id="pathGuideCreateView" class="mapsMirCreatePage" hidden>
<header class="mapsMirCreateHeader">
<div class="mapsMirCreateHeaderIntro">
<h1 class="mapsMirCreateTitle" data-i18n="pathGuides.createPage.title">Create path guide</h1>
<p class="mapsMirCreateSubtitle">
<span data-i18n="pathGuides.createPage.subtitle">Enter a name and select the map for this path guide.</span>
<button type="button" class="mapsMirHelpBtn" id="pathGuideCreateHelpBtn" data-i18n-title="pathGuides.helpTitle" aria-label="Help">
<svg width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.5"/><text x="8" y="11.5" text-anchor="middle" font-size="10" font-weight="700" fill="currentColor">?</text></svg>
</button>
</p>
</div>
<button type="button" class="mapsMirGoBackBtn" id="pathGuideCreateGoBackBtn">
<svg width="14" height="14" viewBox="0 0 14 14" aria-hidden="true"><path d="M9 3L5 7l4 4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
<span data-i18n="pathGuides.createPage.goBack">Go back</span>
</button>
</header>
<form id="pathGuideCreateForm" class="mapsMirCreateForm">
<div class="mapsMirCreatePanel">
<label class="mapsMirCreateField" for="pathGuideCreateName">
<span class="mapsMirCreateFieldLabel" data-i18n="pathGuides.name">Name</span>
<input type="text" id="pathGuideCreateName" required autocomplete="off" data-i18n-placeholder="pathGuides.createPage.namePlaceholder" placeholder="Enter path guide name..." />
</label>
<label class="mapsMirCreateField" for="pathGuideCreateSite">
<span class="mapsMirCreateFieldLabel" data-i18n="pathGuides.site">Site</span>
<select id="pathGuideCreateSite" required></select>
</label>
<label class="mapsMirCreateField" for="pathGuideCreateMap">
<span class="mapsMirCreateFieldLabel" data-i18n="pathGuides.map">Map</span>
<select id="pathGuideCreateMap" required></select>
</label>
<p class="mapsMirHint" data-i18n="pathGuides.mapHint">Create positions on the map editor before adding starts, waypoints, and goals.</p>
<div class="mapsMirCreateActions">
<button type="submit" class="mapsMirCreateSubmitBtn">
<span class="mapsMirCircleIcon mapsMirCircleIcon--ok" aria-hidden="true"></span>
<span data-i18n="pathGuides.createPage.continue">Continue</span>
</button>
<button type="button" class="mapsMirCreateCancelBtn" id="pathGuideCreateCancelBtn">
<span class="mapsMirCircleIcon" aria-hidden="true"></span>
<span data-i18n="common.cancel">Cancel</span>
</button>
</div>
</div>
</form>
</div>
<div id="pathGuideEditView" class="pathGuideEditPage" hidden>
<header class="pathGuideEditHeader">
<div class="pathGuideEditHeaderIntro">
<h1 class="pathGuideEditTitle" id="pathGuideEditPageTitle" data-i18n="pathGuides.editPage.title">Edit path guide positions</h1>
<p class="pathGuideEditSubtitle">
<span data-i18n="pathGuides.editPage.subtitle">Edit the path guide's positions.</span>
<button type="button" class="mapsMirHelpBtn" id="pathGuideEditHelpBtn" data-i18n-title="pathGuides.editPage.helpTitle" aria-label="Help">
<svg width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.5"/><text x="8" y="11.5" text-anchor="middle" font-size="10" font-weight="700" fill="currentColor">?</text></svg>
</button>
</p>
<p class="pathGuideEditMeta" id="pathGuideEditMeta" hidden></p>
</div>
<button type="button" class="mapsMirGoBackBtn" id="pathGuideEditGoBackBtn">
<svg width="14" height="14" viewBox="0 0 14 14" aria-hidden="true"><path d="M9 3L5 7l4 4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
<span data-i18n="pathGuides.editPage.goBack">Go back</span>
</button>
</header>
<div class="pathGuidePosGrid pathGuidePosGrid--page">
<section class="pathGuidePosPanel">
<h2 class="pathGuidePosTitle" data-i18n="pathGuides.starts">Start positions</h2>
<ul id="pathGuideStartsList" class="pathGuidePosList"></ul>
<select id="pathGuideAddStartSelect" class="pathGuidePosPicker" hidden aria-hidden="true" tabindex="-1"></select>
<button type="button" class="pathGuidePosAddBtn" id="pathGuideAddStartBtn" data-i18n="pathGuides.addStart">Add start</button>
</section>
<section class="pathGuidePosPanel">
<h2 class="pathGuidePosTitle" data-i18n="pathGuides.vias">Waypoints</h2>
<ul id="pathGuideViasList" class="pathGuidePosList pathGuidePosList--vias"></ul>
<select id="pathGuideAddViaSelect" class="pathGuidePosPicker" hidden aria-hidden="true" tabindex="-1"></select>
<button type="button" class="pathGuidePosAddBtn" id="pathGuideAddViaBtn" data-i18n="pathGuides.addVia">Add waypoint</button>
</section>
<section class="pathGuidePosPanel">
<h2 class="pathGuidePosTitle" data-i18n="pathGuides.goals">Goal positions</h2>
<ul id="pathGuideGoalsList" class="pathGuidePosList"></ul>
<select id="pathGuideAddGoalSelect" class="pathGuidePosPicker" hidden aria-hidden="true" tabindex="-1"></select>
<button type="button" class="pathGuidePosAddBtn" id="pathGuideAddGoalBtn" data-i18n="pathGuides.addGoal">Add goal</button>
</section>
</div>
<div class="pathGuideEditFooter">
<button type="button" class="mapsMirBtn mapsMirBtn--danger" id="pathGuideEditDeleteBtn" hidden data-i18n="common.delete">Delete</button>
<button type="button" class="mapsMirBtn mapsMirBtn--green" id="pathGuideEditSaveBtn" data-i18n="common.save">Save</button>
</div>
</div>
<dialog id="pathGuideDeleteConfirmDialog" class="mapsMirDialog">
<div class="mapsMirDialogPanel">
<h2 class="mapsMirDialogTitle" data-i18n="pathGuides.deleteTitle">Delete path guide?</h2>
<p id="pathGuideDeleteConfirmText" class="mapsMirDialogText"></p>
<div class="mapsMirDialogFooter">
<button type="button" class="mapsMirBtn mapsMirBtn--outline" id="pathGuideDeleteCancelBtn" data-i18n="common.no">No</button>
<button type="button" class="mapsMirBtn mapsMirBtn--danger" id="pathGuideDeleteYesBtn" data-i18n="common.yes">Yes</button>
</div>
</div>
</dialog>
</div>
<div class="page" id="pageUsers" data-page-content="users" hidden>
<div id="usersListView" class="mapsMirPage">
<header class="mapsMirHeader">
@@ -2620,6 +2778,7 @@ GET /api/v2.0.0/status</pre>
<script src="/user-groups.js"></script>
<script src="/io-modules.js"></script>
<script src="/paths.js"></script>
<script src="/path-guides.js"></script>
<script src="/map-editor.js"></script>
<script src="/topbar.js"></script>
<script src="/dashboard.js"></script>