Files
ShooterHub/frontend/gears.html

235 lines
11 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Gears ShooterHub</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<link rel="stylesheet" href="/css/app.css">
</head>
<body>
<div id="navbar"></div>
<div class="container py-4">
<h2 class="fw-bold mb-4"><i class="bi bi-archive me-2"></i><span data-i18n="gear.title">Gears &amp; Rigs</span></h2>
<!-- Tabs -->
<ul class="nav nav-tabs mb-4" id="gearsTabs">
<li class="nav-item">
<button class="nav-link active" data-bs-toggle="tab" data-bs-target="#invTab">
<i class="bi bi-list-ul me-1"></i><span data-i18n="gear.tab.inv">My Inventory</span>
</button>
</li>
<li class="nav-item">
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#rigTab">
<i class="bi bi-diagram-3 me-1"></i><span data-i18n="gear.tab.rigs">My Rigs</span>
</button>
</li>
</ul>
<div class="tab-content">
<!-- ── Inventory tab ─────────────────────────────────────────────────── -->
<div class="tab-pane fade show active" id="invTab">
<div class="d-flex justify-content-between align-items-center mb-3">
<h5 class="mb-0">My gear</h5>
<button class="btn btn-primary btn-sm" id="addGearBtn">
<i class="bi bi-plus-lg me-1"></i>Add gear
</button>
</div>
<div id="invSpinner" class="text-center py-4"><div class="spinner-border text-primary"></div></div>
<div id="invEmpty" class="alert alert-secondary d-none">You haven't added any gear yet.</div>
<div class="table-responsive d-none" id="invTableWrap">
<table class="table table-hover align-middle">
<thead class="table-light">
<tr>
<th>Nickname</th><th>Brand</th><th>Model</th><th>Type</th>
<th>Serial #</th><th>Purchased</th><th></th>
</tr>
</thead>
<tbody id="invBody"></tbody>
</table>
</div>
</div>
<!-- ── Rigs tab ──────────────────────────────────────────────────────── -->
<div class="tab-pane fade" id="rigTab">
<div class="d-flex justify-content-between align-items-center mb-3">
<h5 class="mb-0">My rigs</h5>
<button class="btn btn-primary btn-sm" id="createRigBtn">
<i class="bi bi-plus-lg me-1"></i>New rig
</button>
</div>
<div id="rigSpinner" class="text-center py-4"><div class="spinner-border text-primary"></div></div>
<div id="rigEmpty" class="alert alert-secondary d-none">You haven't created any rig yet.</div>
<div class="row g-3" id="rigCards"></div>
</div>
</div>
</div>
<!-- ── Modal: Add Gear (catalog search) ──────────────────────────────────── -->
<div class="modal fade" id="addGearModal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Add gear from catalog</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="input-group mb-3">
<input type="text" class="form-control" id="catalogSearch" placeholder="Search brand or model…">
<button class="btn btn-outline-secondary" id="catalogSearchBtn"><i class="bi bi-search"></i></button>
</div>
<div id="catalogSpinner" class="text-center d-none"><div class="spinner-border text-primary"></div></div>
<div id="catalogResults"></div>
<!-- Step 2: extra details after choosing an item -->
<div id="gearDetailsForm" class="d-none border-top pt-3 mt-3">
<h6 class="fw-semibold mb-3">Details for <span id="chosenGearName"></span></h6>
<input type="hidden" id="chosenGearId">
<div class="row g-3">
<div class="col-md-6">
<label class="form-label">Nickname <span class="text-muted small">(optional)</span></label>
<input type="text" class="form-control" id="gearNickname">
</div>
<div class="col-md-6">
<label class="form-label">Serial number <span class="text-muted small">(optional)</span></label>
<input type="text" class="form-control" id="gearSerial">
</div>
<div class="col-md-6">
<label class="form-label">Purchase date <span class="text-muted small">(optional)</span></label>
<input type="date" class="form-control" id="gearPurchase">
</div>
<div class="col-12">
<label class="form-label">Notes <span class="text-muted small">(optional)</span></label>
<textarea class="form-control" id="gearNotes" rows="2"></textarea>
</div>
</div>
<div id="addGearAlert" class="alert alert-danger mt-3 d-none"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary d-none" id="confirmAddGearBtn">Add to inventory</button>
</div>
</div>
</div>
</div>
<!-- ── Modal: Edit UserGear ───────────────────────────────────────────────── -->
<div class="modal fade" id="editGearModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Edit gear</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<input type="hidden" id="editGearId">
<div class="mb-3">
<label class="form-label">Nickname</label>
<input type="text" class="form-control" id="editNickname">
</div>
<div class="mb-3">
<label class="form-label">Serial number</label>
<input type="text" class="form-control" id="editSerial">
</div>
<div class="mb-3">
<label class="form-label">Purchase date</label>
<input type="date" class="form-control" id="editPurchase">
</div>
<div class="mb-3">
<label class="form-label">Notes</label>
<textarea class="form-control" id="editNotes" rows="3"></textarea>
</div>
<div id="editGearAlert" class="alert alert-danger d-none"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" id="saveEditGearBtn">Save</button>
</div>
</div>
</div>
</div>
<!-- ── Modal: Create / Edit Rig ───────────────────────────────────────────── -->
<div class="modal fade" id="rigModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="rigModalTitle">New rig</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<input type="hidden" id="rigId">
<div class="mb-3">
<label class="form-label">Name <span class="text-danger">*</span></label>
<input type="text" class="form-control" id="rigName" required>
</div>
<div class="mb-3">
<label class="form-label">Description</label>
<textarea class="form-control" id="rigDesc" rows="2"></textarea>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="rigPublic">
<label class="form-check-label" for="rigPublic">Public (visible to other shooters)</label>
</div>
<div id="rigModalAlert" class="alert alert-danger mt-3 d-none"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" id="saveRigBtn">Save</button>
</div>
</div>
</div>
</div>
<!-- ── Modal: Manage Rig Items ────────────────────────────────────────────── -->
<div class="modal fade" id="rigItemsModal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Items in "<span id="rigItemsName"></span>"</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<input type="hidden" id="rigItemsRigId">
<h6 class="fw-semibold">Current items</h6>
<ul class="list-group mb-4" id="rigItemsList"></ul>
<h6 class="fw-semibold">Add from inventory</h6>
<div class="input-group mb-2">
<select class="form-select" id="rigItemSelect"></select>
<select class="form-select" id="rigItemRole">
<option value="">Role (optional)</option>
<option value="PRIMARY">Primary Firearm</option>
<option value="OPTIC">Optic / Scope</option>
<option value="SUPPRESSOR">Suppressor</option>
<option value="BIPOD">Bipod</option>
<option value="MAGAZINE">Magazine</option>
<option value="OTHER">Other Accessory</option>
</select>
<button class="btn btn-outline-primary" id="addRigItemBtn"><i class="bi bi-plus-lg"></i> Add</button>
</div>
<div id="rigItemsAlert" class="alert alert-danger d-none"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div id="toastContainer"></div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="/js/api.js"></script>
<script src="/js/i18n.js"></script>
<script src="/js/calibers.js"></script>
<script src="/js/nav.js"></script>
<script src="/js/gears.js"></script>
</body>
</html>