Changeset 3a3a882 in Klonkt for src/views/shell.ejs
- Timestamp:
- 08/19/2026 06:33:11 PM (3 weeks ago)
- Branches:
- main
- Children:
- 8c91ed3
- Parents:
- 70dbef4
- File:
-
- 1 edited
-
src/views/shell.ejs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/views/shell.ejs
r70dbef4 r3a3a882 548 548 var body = document.body; 549 549 550 // DE CIRKEL HEEFT EEN EIGEN KEUZE, met een eigen standaard: Grid.550 // DE CIRKEL HEEFT MAAR EEN WEERGAVE: Grid. 551 551 // 552 // Twee redenen om die apart te houden van de gewone voorkeur. Ten eerste is 553 // Lezen daar geen optie (dat zijn berichten van anderen, van hun servers), dus 554 // "reader" betekent er iets anders dan hier: de gewone lijst. Ten tweede zou 555 // een tuimeling op de cirkel anders je SOLO-weergave veranderen -- je zet daar 556 // Grid uit en komt thuis in een andere feed terug dan je achterliet. 557 var CIRKEL_SLEUTEL = 'pcms-cirkel-view'; 552 // Lezen is daar geen optie -- dat zijn berichten van ANDEREN, van hun servers, 553 // en "het hele stuk" hebben wij daar niet in handen. De knop staat er wel, 554 // maar dood (zie view-switcher.ejs). Er valt dus niets te kiezen en dus ook 555 // niets te onthouden: de eigen cirkel-voorkeur die hier stond 556 // ('pcms-cirkel-view') is vervallen, want hij kon nog maar een waarde hebben. 557 // 558 // Wat WEL blijft: de cirkel raakt je solo-keuze niet aan. Die staat in 559 // 'pcms-feed-view' en wordt hier nergens geschreven, zodat je thuiskomt in de 560 // weergave die je achterliet. 558 561 function opCirkel() { return body.classList.contains('on-cirkel'); } 559 562 … … 562 565 try { 563 566 if (opCirkel()) { 564 // Alles behalve een uitdrukkelijke 'list' is grid: dat is de standaard. 565 body.dataset.feedView = (localStorage.getItem(CIRKEL_SLEUTEL) === 'list') ? 'reader' : 'grid'; 567 body.dataset.feedView = 'grid'; // de enige mogelijkheid daar 566 568 return; 567 569 } … … 588 590 var _feedC = ['on-home','on-tag','on-type','on-user','on-cirkel']; 589 591 var _onFeed = _feedC.some(function(c){ return body.classList.contains(c); }); 590 // Een weergave die op DEZE pagina niet bestaat, kan ook niet actief zijn.591 // Lezen ontbreekt in de cirkel (daar staan berichten van anderen), en wie592 // op de eigen feed Lezen koos houdt die voorkeur in localStorage. Zonder593 // terugval staat de hele pil dan grijs terwijl de tijdlijn gewoon te zien594 // is -- de lezer ziet nergens meer waar hij is. De VOORKEUR blijft staan:595 // terug op de eigen feed is Lezen weer actief.592 // Een weergave die op DEZE pagina niet KAN, kan ook niet actief zijn. In de 593 // cirkel staat Lezen er wel maar uitgeschakeld; pasWeergaveToe() heeft 594 // feedView daar al op 'grid' gezet, dus de terugval hieronder vuurt er niet. 595 // Hij blijft staan voor het geval een pagina een knop mist: zonder terugval 596 // staat de hele pil grijs terwijl er wel degelijk iets te zien is, en dan 597 // ziet de lezer nergens meer waar hij is. De solo-VOORKEUR blijft intact. 596 598 var _view = String(body.dataset.feedView || 'reader'); 597 599 if (!/^[a-z]+$/.test(_view)) _view = 'reader'; 598 600 if (!document.querySelector('.view-switch-btn[data-view="' + _view + '"]')) _view = 'reader'; 599 601 document.querySelectorAll('.view-switch-btn').forEach(function(b) { 600 b.setAttribute('aria-selected', (_onFeed && b.dataset.view === _view) ? 'true' : 'false');602 b.setAttribute('aria-selected', (_onFeed && !b.disabled && b.dataset.view === _view) ? 'true' : 'false'); 601 603 }); 602 604 document.querySelectorAll('.grid-cols-btn').forEach(function(b) { … … 635 637 var sw = e.target.closest('.view-switch-btn'); 636 638 if (sw) { 639 // Een dode knop doet niets. Een <button disabled> vuurt in de meeste 640 // browsers geen click, maar deze listener hangt op document en vangt ook 641 // wat er langs de randen komt -- dus expliciet, niet op goed vertrouwen. 642 if (sw.disabled) return; 637 643 var view = sw.dataset.view; 638 // EEN KEUZE MOET TERUG KUNNEN. Op de cirkel is Grid de enige knop (Lezen639 // bestaat daar niet, want dat zijn berichten van anderen), en een knop die640 // al actief is doet normaal niets -- dan zit je in Grid zonder weg terug.641 // Is dit de enige knop op deze pagina en staat hij al aan, dan brengt hij642 // je terug naar de standaard, en dat is daar de gewone lijst.643 if (document.querySelectorAll('.view-switch-btn').length === 1644 && sw.getAttribute('aria-selected') === 'true') {645 view = 'reader';646 }647 644 body.dataset.feedView = view; 648 // Op de cirkel onthouden we los, want daar betekent 'reader' de gewone 649 // lijst en hoort het je thuisweergave niet aan te raken. 645 // Op de cirkel schrijven we NIETS. Daar is Grid de enige mogelijkheid, dus 646 // er valt niets te onthouden -- en je solo-keuze mag er zeker niet door 647 // veranderen: die moet je terugvinden zoals je hem achterliet. 650 648 try { 651 if (opCirkel()) localStorage.setItem(CIRKEL_SLEUTEL, view === 'grid' ? 'grid' : 'list'); 652 else localStorage.setItem('pcms-feed-view', view); 649 if (!opCirkel()) localStorage.setItem('pcms-feed-view', view); 653 650 } catch(_) {} 654 651 syncAria();
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)