Changeset 084b046 in Klonkt for src/assets/js/ward.js
- Timestamp:
- 08/12/2026 08:04:38 PM (3 months ago)
- Children:
- 5218863
- Parents:
- a5a6249
- File:
-
- 1 edited
-
src/assets/js/ward.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/js/ward.js
ra5a6249 r084b046 7 7 * pagina en dit bestand tekent hem. Alles wat nieuw is komt van /ward/api/*. 8 8 */ 9 'use strict';9 import { SkyRenderer } from '/ward/sky.js'; 10 10 11 11 const state = JSON.parse(document.getElementById('ward-state').textContent); … … 215 215 } 216 216 217 /** De controle kost per guardian een remote fetch, dus hij komt ná het tekenen. */ 217 /** 218 * De hemel en de kaarten zijn één scherm met twee standen. 219 * 220 * De hemel draait ALTIJD en ligt achter de kaarten; in kaartenstand is hij 221 * decor en vangt hij geen tikken, in berichtenstand vallen de kaarten weg en 222 * wordt hij de interface. Dat is precies de beweging uit Shaer: de kaarten 223 * vallen weg en wat eronder lag was er al. 224 */ 225 function wireSky() { 226 const canvas = document.getElementById('sky'); 227 const btn = document.getElementById('mode'); 228 const main = document.getElementById('app'); 229 let convs = []; 230 231 const sky = new SkyRenderer(canvas, (i) => { 232 const c = convs[i]; 233 if (c) window.location.href = `/ward/thread?with=${encodeURIComponent(c.uri)}`; 234 }); 235 236 let messagesMode = false; 237 const setMode = (on) => { 238 messagesMode = on; 239 sky.interactive = on; 240 canvas.setAttribute('aria-hidden', String(!on)); 241 // touch-action pas uitzetten als de hemel echt bedienbaar is: anders kun 242 // je in kaartenstand niet meer scrollen. 243 canvas.style.touchAction = on ? 'none' : ''; 244 canvas.style.pointerEvents = on ? 'auto' : 'none'; 245 document.body.classList.toggle('messages-mode', on); 246 btn.textContent = on ? state.strings.toCards : state.strings.toSky; 247 btn.setAttribute('aria-pressed', String(on)); 248 main.querySelectorAll('section').forEach((sec) => { sec.hidden = on; }); 249 }; 250 251 btn.addEventListener('click', () => setMode(!messagesMode)); 252 setMode(false); 253 254 (async () => { 255 try { 256 const r = await fetch('/ward/api/conversations', { headers: { Accept: 'application/json' } }); 257 if (!r.ok) return; 258 convs = (await r.json()).items || []; 259 await sky.setFaces(convs.map((c) => ({ name: c.name, icon: c.icon, ageMs: c.ageMs }))); 260 sky.start(); 261 } catch { /* zonder hemel blijft het scherm gewoon werken */ } 262 })(); 263 } 264 265 /** De controle kost per guardian een remote fetch, dus hij komt ná het tekenen. *//** De controle kost per guardian een remote fetch, dus hij komt ná het tekenen. */ 218 266 async function loadChecks() { 219 267 if (!state.guardians.length) return; … … 240 288 renderGuardians(null); 241 289 wireBuoy(); 290 wireSky(); 242 291 loadFeed(); 243 292 renderOffers();
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)