Skip to content

Commit 52c78ce

Browse files
authored
Add inspector (#3)
* First attempt * Add the expected HTML bits for all the new JS magic --------- Co-authored-by: Max Carlson <>
1 parent 39ab380 commit 52c78ce

File tree

3 files changed

+68
-1
lines changed

3 files changed

+68
-1
lines changed

Unity/SpaceCraft/Assets/StreamingAssets/SpaceCraft/spacecraft.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,12 @@ class SpaceCraftSim {
174174
label: "Selector",
175175
position: "top-right"
176176
},
177+
{
178+
id: "inspector-qr",
179+
targetHtml: "StreamingAssets/SpaceCraft/inspector.html",
180+
label: "Inspector",
181+
position: "bottom-left" // Or another suitable position
182+
},
177183
];
178184

179185
// Initialize content promise

WebSites/spacetime/StreamingAssets/SpaceCraft/controller.js

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@
6666
* Base Controller class that provides common functionality for all controller types
6767
*/
6868
window.BaseController = class BaseController {
69+
selectedItemChanged(selectedItemJSON) {
70+
// Base implementation does nothing. Subclasses like InspectorController will override.
71+
}
6972

7073
// API constants
7174
static SUPABASE_URL = 'https://gwodhwyvuftyrvbymmvc.supabase.co';
@@ -1883,6 +1886,7 @@ window.BaseController = class BaseController {
18831886
// MAX: Log new selected item JSON if its ID has changed
18841887
if (this.simulatorState.selectedItemId !== previousSelectedItemId) {
18851888
this.logEvent('MAX', 'New selected item json (ID changed):', this.simulatorState.selectedItem);
1889+
this.selectedItemChanged(this.simulatorState.selectedItem);
18861890
}
18871891

18881892
this.updateUIFromState();
@@ -2408,7 +2412,9 @@ document.addEventListener('DOMContentLoaded', function() {
24082412
controller = new NavigatorController();
24092413
} else if (controllerType === 'selector') {
24102414
controller = new SelectorController();
2411-
} else {
2415+
} else if (controllerType === 'inspector') { // ADD THIS BLOCK
2416+
controller = new InspectorController();
2417+
} else {
24122418
console.error('Invalid controller type: ' + controllerType);
24132419
return;
24142420
}
@@ -2421,3 +2427,29 @@ document.addEventListener('DOMContentLoaded', function() {
24212427
window.controller = controller;
24222428
});
24232429

2430+
window.InspectorController = class InspectorController extends BaseController {
2431+
constructor() {
2432+
super('inspector'); // Client type
2433+
this.jsonOutputElement = null;
2434+
}
2435+
2436+
setupControllerSpecificUI() {
2437+
this.logEvent('Init', 'Setting up Inspector-specific UI');
2438+
this.jsonOutputElement = document.getElementById('inspector-json-output');
2439+
if (!this.jsonOutputElement) {
2440+
this.logEvent('Error', 'Inspector JSON output element not found!');
2441+
}
2442+
}
2443+
2444+
// This method will be called when the selected item data changes
2445+
selectedItemChanged(selectedItemJSON) {
2446+
this.logEvent('Inspector', 'Received new selected item JSON:', selectedItemJSON);
2447+
if (this.jsonOutputElement) {
2448+
if (selectedItemJSON) {
2449+
this.jsonOutputElement.textContent = JSON.stringify(selectedItemJSON, null, 2);
2450+
} else {
2451+
this.jsonOutputElement.textContent = 'No item currently selected.';
2452+
}
2453+
}
2454+
}
2455+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<!DOCTYPE html>
2+
<html lang="en-us">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6+
<title>SpaceCraft Inspector</title>
7+
<link rel="icon" href="https://brand.publiccode.net/logo/mark-128w128h.png">
8+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no, viewport-fit=cover">
9+
<meta name="controller-type" content="inspector">
10+
<link rel="preconnect" href="https://fonts.googleapis.com">
11+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12+
<link href="https://fonts.googleapis.com/css?family=Mulish:400italic,400,600italic,600,700italic,700" rel="stylesheet">
13+
14+
<!-- Shared Controller Styles -->
15+
<link rel="stylesheet" href="controller.css">
16+
<!-- Supabase library (Local Copy) -->
17+
<script src="supabase.min.js"></script>
18+
<!-- Shared Controller Logic -->
19+
<script src="controller.js"></script>
20+
</head>
21+
<body>
22+
<div class="container selector-container">
23+
<h1 class="page-title">Inspector</h1>
24+
<div id="status" class="status">Connecting...</div>
25+
<div id="target"></div>
26+
</div>
27+
<div id="inspector-json-output"></div>
28+
</body>
29+
</html>

0 commit comments

Comments
 (0)