-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhow-tests-work.html
More file actions
859 lines (780 loc) · 32.3 KB
/
how-tests-work.html
File metadata and controls
859 lines (780 loc) · 32.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>FCE — How the tests work</title>
<link rel="stylesheet" href="style.css" />
<script>
try {
const p = location.pathname.split("/").pop() || "index.html";
localStorage.setItem("fce_last_page", p);
if (p && p.endsWith(".html") && !p.includes("index.html")) {
localStorage.setItem("fce_last_docs_page", p);
}
} catch {}
</script>
</head>
<body>
<header class="topbar">
<button id="menuBtn" aria-label="Menu" aria-controls="menu" aria-expanded="false">☰</button>
<a href="index.html?home=1" class="title brand-link" id="brandLink" style="text-decoration:none; color:inherit;" aria-label="To the instrument">
<span class="brand-short" aria-hidden="true">FCE</span>
<span class="brand-long" aria-hidden="true">
<span class="lang lang-en">To the instrument</span>
<span class="lang lang-no hidden">Til instrumentet</span>
<span class="lang lang-lt hidden">Į instrumentą</span>
</span>
</a>
<span class="topbar-page is-hidden" id="topbarPage"></span>
<div class="topbar-right">
<div class="lang-select-wrapper">
<select id="langSelect" class="lang-select" aria-label="Language">
<option value="en">EN</option>
<option value="no">NO</option>
<option value="lt">LT</option>
</select>
</div>
</div>
</header>
<nav id="menu" class="menu">
<div class="menu-header">
<button id="closeMenuBtn" class="menu-close-btn" aria-label="Close menu">×</button>
</div>
<a class="menu-item" href="index.html?home=1">
<span class="lang lang-en">Home</span>
<span class="lang lang-no hidden">Hjem</span>
<span class="lang lang-lt hidden">Pradžia</span>
</a>
<a class="menu-item" href="index.html?view=history">
<span class="lang lang-en">History</span>
<span class="lang lang-no hidden">Historikk</span>
<span class="lang lang-lt hidden">Istorija</span>
</a>
<div class="menu-section" id="menuSectionCore">
<button type="button" class="menu-section-toggle" id="menuToggleCore" aria-expanded="false" aria-controls="menuPanelCore">
<span class="menu-section-label">
<span class="lang lang-en">Core Docs</span>
<span class="lang lang-no hidden">Kjernedokumentasjon</span>
<span class="lang lang-lt hidden">Pagrindiniai dokumentai</span>
</span>
<span class="menu-chevron" aria-hidden="true">▸</span>
</button>
<div class="menu-section-panel" id="menuPanelCore" role="region" aria-labelledby="menuToggleCore">
<a class="menu-item menu-item-nested" href="about.html">
<span class="lang lang-en">About</span>
<span class="lang lang-no hidden">Om</span>
<span class="lang lang-lt hidden">Apie</span>
</a>
<a class="menu-item menu-item-nested" href="concept.html">
<span class="lang lang-en">Concept</span>
<span class="lang lang-no hidden">Konsept</span>
<span class="lang lang-lt hidden">Koncepcija</span>
</a>
<a class="menu-item menu-item-nested" href="what-fce-measures.html">
<span class="lang lang-en">What FCE Measures</span>
<span class="lang lang-no hidden">Hva FCE måler</span>
<span class="lang lang-lt hidden">Ką FCE matuoja</span>
</a>
<a class="menu-item menu-item-nested" href="scope.html">
<span class="lang lang-en">Scope & Limits</span>
<span class="lang lang-no hidden">Omfang & begrensninger</span>
<span class="lang lang-lt hidden">Apimtis ir ribos</span>
</a>
<a class="menu-item menu-item-nested" href="how-to-use.html">
<span class="lang lang-en">How to Use</span>
<span class="lang lang-no hidden">Hvordan bruke</span>
<span class="lang lang-lt hidden">Kaip naudoti</span>
</a>
<a class="menu-item menu-item-nested" href="how-tests-work.html" aria-current="page">
<span class="lang lang-en">How the tests work</span>
<span class="lang lang-no hidden">Hvordan testene fungerer</span>
<span class="lang lang-lt hidden">Kaip veikia testai</span>
</a>
<a class="menu-item menu-item-nested" href="faq.html">
<span class="lang lang-en">FAQ</span>
<span class="lang lang-no hidden">FAQ</span>
<span class="lang lang-lt hidden">DUK</span>
</a>
</div>
</div>
<div class="menu-section" id="menuSectionContext">
<button type="button" class="menu-section-toggle" id="menuToggleContext" aria-expanded="false" aria-controls="menuPanelContext">
<span class="menu-section-label">
<span class="lang lang-en">Context & Development</span>
<span class="lang lang-no hidden">Kontekst og utvikling</span>
<span class="lang lang-lt hidden">Kontekstas ir plėtra</span>
</span>
<span class="menu-chevron" aria-hidden="true">▸</span>
</button>
<div class="menu-section-panel" id="menuPanelContext" role="region" aria-labelledby="menuToggleContext">
<a class="menu-item menu-item-nested" href="why.html">
<span class="lang lang-en">Why this exists</span>
<span class="lang lang-no hidden">Hvorfor dette finnes</span>
<span class="lang lang-lt hidden">Kodėl tai egzistuoja</span>
</a>
<a class="menu-item menu-item-nested" href="applications.html">
<span class="lang lang-en">Applications / Use Contexts</span>
<span class="lang lang-no hidden">Bruksområder / kontekster</span>
<span class="lang lang-lt hidden">Taikymo sritys / naudojimo kontekstai</span>
</a>
<a class="menu-item menu-item-nested" href="validation-research.html">
<span class="lang lang-en">Validation / Research</span>
<span class="lang lang-no hidden">Validering / forskning</span>
<span class="lang lang-lt hidden">Validavimas / tyrimai</span>
</a>
</div>
</div>
</nav>
<div id="menuOverlay" class="menu-overlay hidden"></div>
<main class="page">
<section class="container">
<!-- EN -->
<div class="lang lang-en">
<section class="hero">
<h2>How the tests work</h2>
<p class="lead">
This page explains what each task measures, what you do during the task, and what counts as an error.
</p>
<blockquote class="quote">
“Respond as quickly and accurately as you can. Accuracy and consistency both matter.”
</blockquote>
</section>
<div style="margin: 24px auto; text-align: center; max-width: 760px; padding: 0 16px;">
<a href="index.html#instrument"
style="padding: 10px 20px; font-size: 14px; text-decoration: none;
border: 1px solid rgba(255,255,255,0.15);
border-radius: 8px;
background: rgba(255,255,255,0.05);
color: #eee;
transition: all 0.2s ease;
display: inline-block;">
Open instrument
</a>
</div>
<section class="card">
<h3>General rule</h3>
<p>
All tasks are short and standardized. The goal is not perfection. The goal is consistent execution that can be compared over time.
</p>
<ul>
<li>Wait for the task signal.</li>
<li>Respond only when required.</li>
<li>Try to be both fast and accurate.</li>
<li>Avoid clicking or tapping too early.</li>
</ul>
</section>
<section class="card">
<h3>Reaction Time</h3>
<p class="muted">
Measures simple response speed and response consistency.
</p>
<p><strong>What you do:</strong></p>
<ul>
<li>Wait for the signal to appear.</li>
<li>Click or tap as quickly as possible when it appears.</li>
<li>Repeat across trials.</li>
</ul>
<p><strong>What gets recorded:</strong></p>
<ul>
<li>reaction time on valid responses</li>
<li>false starts</li>
<li>session variability</li>
</ul>
<p class="muted">
A false start means responding before the signal appears.
</p>
</section>
<section class="card">
<h3>Go / No-Go</h3>
<p class="muted">
Measures response initiation and inhibition control.
</p>
<p><strong>What you do:</strong></p>
<ul>
<li>Respond immediately on <strong>GO</strong> trials.</li>
<li>Do nothing on <strong>NO-GO</strong> trials.</li>
</ul>
<p><strong>What gets recorded:</strong></p>
<ul>
<li>reaction time on GO trials</li>
<li>misses on GO trials</li>
<li>false alarms on NO-GO trials</li>
<li>session variability</li>
</ul>
<p class="muted">
Missing a GO trial and responding on a NO-GO trial are both treated as errors.
</p>
</section>
<section class="card">
<h3>Divided Attention</h3>
<p class="muted">
Measures performance while handling two demands at once.
</p>
<p><strong>What you do:</strong></p>
<ul>
<li>Perform the Go / No-Go task.</li>
<li>At the same time, count brief blue flashes during the session.</li>
<li>Enter the flash count at the end.</li>
</ul>
<p><strong>What gets recorded:</strong></p>
<ul>
<li>GO reaction time</li>
<li>misses and false alarms</li>
<li>flash-count accuracy</li>
<li>combined execution stability</li>
</ul>
<p class="muted">
This is not only a response task. It is a dual-demand task.
</p>
</section>
<section class="card">
<h3>Precision (Target Pointing)</h3>
<p class="muted">
Measures motor accuracy and motor consistency across repeated target hits.
</p>
<p><strong>What you do:</strong></p>
<ul>
<li>Tap or click the target as accurately as possible when it appears.</li>
<li>Repeat across trials.</li>
</ul>
<p><strong>What gets recorded:</strong></p>
<ul>
<li>distance from target center</li>
<li>normalized error</li>
<li>response timing</li>
<li>consistency across trials</li>
</ul>
<p class="muted">
Best results come from a stable position and, when available, fullscreen use.
</p>
</section>
<section class="card">
<h3>About errors and unusable sessions</h3>
<p>
Errors are not hidden. FCE records them because they are part of the functional signal.
</p>
<ul>
<li>early responses can count as false starts</li>
<li>misses and false alarms affect inhibitory tasks</li>
<li>very noisy or incomplete sessions may be marked <em>Not usable</em></li>
</ul>
<p class="muted">
Not usable does not mean failure. It means the session was not reliable enough for comparison.
</p>
</section>
<section class="card">
<h3>Use Training first if needed</h3>
<p>
If a task feels unfamiliar, use <strong>Training</strong> mode before building baseline or running checks.
</p>
<p class="muted">
Training lets you get used to the task without affecting your baseline.
</p>
</section>
</div>
<!-- NO -->
<div class="lang lang-no hidden">
<section class="hero">
<h2>Hvordan testene fungerer</h2>
<p class="lead">
Denne siden forklarer hva hver oppgave måler, hva du gjør i oppgaven, og hva som teller som feil.
</p>
<blockquote class="quote">
«Svar så raskt og nøyaktig du kan. Både nøyaktighet og konsistens betyr noe.»
</blockquote>
</section>
<div style="margin: 24px auto; text-align: center; max-width: 760px; padding: 0 16px;">
<a href="index.html#instrument"
style="padding: 10px 20px; font-size: 14px; text-decoration: none;
border: 1px solid rgba(255,255,255,0.15);
border-radius: 8px;
background: rgba(255,255,255,0.05);
color: #eee;
transition: all 0.2s ease;
display: inline-block;">
Åpne instrument
</a>
</div>
<section class="card">
<h3>Generell regel</h3>
<p>
Alle oppgaver er korte og standardiserte. Målet er ikke perfeksjon. Målet er konsistent utførelse som kan sammenlignes over tid.
</p>
<ul>
<li>Vent på signalet.</li>
<li>Svar bare når det kreves.</li>
<li>Prøv å være både rask og presis.</li>
<li>Unngå å klikke eller trykke for tidlig.</li>
</ul>
</section>
<section class="card">
<h3>Reaksjonstid</h3>
<p class="muted">
Måler enkel responshastighet og responskonsistens.
</p>
<p><strong>Hva du gjør:</strong></p>
<ul>
<li>Vent på at signalet vises.</li>
<li>Klikk eller trykk så raskt som mulig når det vises.</li>
<li>Gjenta over flere forsøk.</li>
</ul>
<p><strong>Hva som registreres:</strong></p>
<ul>
<li>reaksjonstid på gyldige responser</li>
<li>feilstarter</li>
<li>variabilitet i økten</li>
</ul>
<p class="muted">
En feilstart betyr at du svarte før signalet kom.
</p>
</section>
<section class="card">
<h3>Go / No-Go</h3>
<p class="muted">
Måler responsstart og inhibisjonskontroll.
</p>
<p><strong>Hva du gjør:</strong></p>
<ul>
<li>Svar umiddelbart på <strong>GO</strong>-forsøk.</li>
<li>Gjør ingenting på <strong>NO-GO</strong>-forsøk.</li>
</ul>
<p><strong>Hva som registreres:</strong></p>
<ul>
<li>reaksjonstid på GO-forsøk</li>
<li>bom på GO-forsøk</li>
<li>falske alarmer på NO-GO-forsøk</li>
<li>variabilitet i økten</li>
</ul>
<p class="muted">
Å bomme på GO og å svare på NO-GO behandles begge som feil.
</p>
</section>
<section class="card">
<h3>Delt oppmerksomhet</h3>
<p class="muted">
Måler prestasjon mens du håndterer to krav samtidig.
</p>
<p><strong>Hva du gjør:</strong></p>
<ul>
<li>Utfør Go / No-Go-oppgaven.</li>
<li>Telle samtidig korte blå blink gjennom økten.</li>
<li>Skriv inn blinktallet til slutt.</li>
</ul>
<p><strong>Hva som registreres:</strong></p>
<ul>
<li>GO-reaksjonstid</li>
<li>bom og falske alarmer</li>
<li>nøyaktighet i blinktelling</li>
<li>samlet utførelsesstabilitet</li>
</ul>
<p class="muted">
Dette er ikke bare en responstest. Det er en todelt krav-oppgave.
</p>
</section>
<section class="card">
<h3>Presisjon (målpeking)</h3>
<p class="muted">
Måler motorisk nøyaktighet og motorisk konsistens over gjentatte mål.
</p>
<p><strong>Hva du gjør:</strong></p>
<ul>
<li>Trykk eller klikk på målet så nøyaktig som mulig når det vises.</li>
<li>Gjenta over flere forsøk.</li>
</ul>
<p><strong>Hva som registreres:</strong></p>
<ul>
<li>avstand fra målens sentrum</li>
<li>normalisert feil</li>
<li>responstiming</li>
<li>konsistens over forsøk</li>
</ul>
<p class="muted">
Best resultat får du med stabil sittestilling og, når tilgjengelig, fullskjerm.
</p>
</section>
<section class="card">
<h3>Om feil og ikke brukbare økter</h3>
<p>
Feil skjules ikke. FCE registrerer dem fordi de er en del av det funksjonelle signalet.
</p>
<ul>
<li>tidlige responser kan telle som feilstarter</li>
<li>bom og falske alarmer påvirker inhibisjonsoppgaver</li>
<li>svært støyende eller ufullstendige økter kan markeres som <em>Ikke brukbar</em></li>
</ul>
<p class="muted">
Ikke brukbar betyr ikke at du mislyktes. Det betyr at økten ikke var pålitelig nok til sammenligning.
</p>
</section>
<section class="card">
<h3>Bruk Trening først ved behov</h3>
<p>
Hvis en oppgave kjennes uvant, bruk <strong>Trening</strong> før du bygger baseline eller kjører sjekker.
</p>
<p class="muted">
Trening lar deg bli vant til oppgaven uten å påvirke baseline.
</p>
</section>
</div>
<!-- LT -->
<div class="lang lang-lt hidden">
<section class="hero">
<h2>Kaip veikia testai</h2>
<p class="lead">
Šiame puslapyje paaiškinama, ką matuoja kiekviena užduotis, ką jūs darote ir kas laikoma klaida.
</p>
<blockquote class="quote">
„Atsakykite kuo greičiau ir kuo tiksliau. Svarbus ir tikslumas, ir pastovumas.“
</blockquote>
</section>
<div style="margin: 24px auto; text-align: center; max-width: 760px; padding: 0 16px;">
<a href="index.html#instrument"
style="padding: 10px 20px; font-size: 14px; text-decoration: none;
border: 1px solid rgba(255,255,255,0.15);
border-radius: 8px;
background: rgba(255,255,255,0.05);
color: #eee;
transition: all 0.2s ease;
display: inline-block;">
Atidaryti instrumentą
</a>
</div>
<section class="card">
<h3>Bendra taisyklė</h3>
<p>
Visos užduotys yra trumpos ir standartizuotos. Tikslas nėra tobulumas. Tikslas yra pastovus atlikimas, kurį būtų galima lyginti laikui bėgant.
</p>
<ul>
<li>Laukite signalo.</li>
<li>Atsakykite tik tada, kai to reikia.</li>
<li>Stenkitės būti ir greiti, ir tikslūs.</li>
<li>Venkite spausti ar bakstelėti per anksti.</li>
</ul>
</section>
<section class="card">
<h3>Reakcijos laikas</h3>
<p class="muted">
Matuoja paprastą reakcijos greitį ir reakcijos pastovumą.
</p>
<p><strong>Ką jūs darote:</strong></p>
<ul>
<li>Laukiate, kol pasirodys signalas.</li>
<li>Spustelite arba bakstelite kuo greičiau, kai jis pasirodo.</li>
<li>Kartojate per kelis bandymus.</li>
</ul>
<p><strong>Kas registruojama:</strong></p>
<ul>
<li>reakcijos laikas galiojantiems atsakymams</li>
<li>klaidingi startai</li>
<li>sesijos kintamumas</li>
</ul>
<p class="muted">
Klaidingas startas reiškia, kad sureagavote prieš pasirodant signalui.
</p>
</section>
<section class="card">
<h3>Go / No-Go</h3>
<p class="muted">
Matuoja atsako inicijavimą ir inhibicijos kontrolę.
</p>
<p><strong>Ką jūs darote:</strong></p>
<ul>
<li>Nedelsdami atsakote į <strong>GO</strong> bandymus.</li>
<li>Nieko nedarote per <strong>NO-GO</strong> bandymus.</li>
</ul>
<p><strong>Kas registruojama:</strong></p>
<ul>
<li>reakcijos laikas GO bandymuose</li>
<li>praleidimai GO bandymuose</li>
<li>klaidingi atsakai NO-GO bandymuose</li>
<li>sesijos kintamumas</li>
</ul>
<p class="muted">
Tiek praleistas GO, tiek atsakas per NO-GO laikomi klaidomis.
</p>
</section>
<section class="card">
<h3>Dalytas dėmesys</h3>
<p class="muted">
Matuoja atlikimą, kai vienu metu tenka valdyti du reikalavimus.
</p>
<p><strong>Ką jūs darote:</strong></p>
<ul>
<li>Atliekate Go / No-Go užduotį.</li>
<li>Tuo pačiu metu skaičiuojate trumpus mėlynus blyksnius sesijos metu.</li>
<li>Pabaigoje įvedate blyksnių skaičių.</li>
</ul>
<p><strong>Kas registruojama:</strong></p>
<ul>
<li>GO reakcijos laikas</li>
<li>praleidimai ir klaidingi atsakai</li>
<li>blyksnių skaičiavimo tikslumas</li>
<li>bendras atlikimo stabilumas</li>
</ul>
<p class="muted">
Tai nėra tik reakcijos užduotis. Tai dvigubo reikalavimo užduotis.
</p>
</section>
<section class="card">
<h3>Tikslumas (taikinio nuspaudimas)</h3>
<p class="muted">
Matuoja motorinį tikslumą ir motorinį pastovumą per pakartotinius taikinius.
</p>
<p><strong>Ką jūs darote:</strong></p>
<ul>
<li>Bakstelite arba spustelite taikinį kuo tiksliau, kai jis pasirodo.</li>
<li>Kartojate per kelis bandymus.</li>
</ul>
<p><strong>Kas registruojama:</strong></p>
<ul>
<li>atstumas nuo taikinio centro</li>
<li>normalizuota paklaida</li>
<li>atsako laikas</li>
<li>pastovumas per bandymus</li>
</ul>
<p class="muted">
Geriausi rezultatai gaunami išlaikant stabilią padėtį ir, kai įmanoma, naudojant viso ekrano režimą.
</p>
</section>
<section class="card">
<h3>Apie klaidas ir netinkamas sesijas</h3>
<p>
Klaidos nėra slepiamos. FCE jas registruoja, nes jos yra funkcinio signalo dalis.
</p>
<ul>
<li>ankstyvi atsakai gali būti laikomi klaidingais startais</li>
<li>praleidimai ir klaidingi atsakai veikia inhibicijos užduotis</li>
<li>labai triukšmingos ar neužbaigtos sesijos gali būti pažymėtos kaip <em>Netinkama naudoti</em></li>
</ul>
<p class="muted">
Netinkama naudoti nereiškia nesėkmės. Tai reiškia, kad sesija nebuvo pakankamai patikima palyginimui.
</p>
</section>
<section class="card">
<h3>Jei reikia, pirmiausia naudokite Treniruotę</h3>
<p>
Jei užduotis atrodo neįprasta, prieš kurdami bazę ar vykdydami patikras pirmiausia naudokite <strong>Treniruotę</strong>.
</p>
<p class="muted">
Treniruotė leidžia priprasti prie užduoties nepaveikiant jūsų bazės.
</p>
</section>
</div>
<nav class="docs-nav">
<div class="docs-nav-left">
<a href="how-to-use.html" class="docs-nav-btn">
<span class="lang lang-en">← How to Use</span>
<span class="lang lang-no hidden">← Hvordan bruke</span>
<span class="lang lang-lt hidden">← Kaip naudoti</span>
</a>
</div>
<div class="docs-nav-center">
<a href="index.html#instrument" class="docs-nav-btn">
<span class="lang lang-en">Open instrument</span>
<span class="lang lang-no hidden">Åpne instrument</span>
<span class="lang lang-lt hidden">Atidaryti instrumentą</span>
</a>
</div>
<div class="docs-nav-right">
<a href="faq.html" class="docs-nav-btn">
<span class="lang lang-en">FAQ →</span>
<span class="lang lang-no hidden">FAQ →</span>
<span class="lang lang-lt hidden">DUK →</span>
</a>
</div>
</nav>
<footer class="footer muted">
<p>FCE — Functional Cognition & Execution</p>
<p class="footer-builtby">Designed and built by Zwoomer</p>
</footer>
</section>
</main>
<script>
(function () {
const menu = document.getElementById("menu");
const overlay = document.getElementById("menuOverlay");
const menuBtn = document.getElementById("menuBtn");
const closeMenuBtn = document.getElementById("closeMenuBtn");
function openMenu() {
menu.classList.add("open");
overlay.classList.remove("hidden");
document.body.classList.add("menu-open");
if (menuBtn) menuBtn.setAttribute("aria-expanded", "true");
}
function closeMenu() {
menu.classList.remove("open");
overlay.classList.add("hidden");
document.body.classList.remove("menu-open");
if (menuBtn) menuBtn.setAttribute("aria-expanded", "false");
}
menuBtn && menuBtn.addEventListener("click", () => {
if (menu.classList.contains("open")) closeMenu();
else openMenu();
});
closeMenuBtn && closeMenuBtn.addEventListener("click", closeMenu);
overlay && overlay.addEventListener("click", closeMenu);
document.addEventListener("keydown", (e) => {
if (e.key === "Escape" && menu.classList.contains("open")) closeMenu();
});
document.querySelectorAll(".menu-item").forEach(item => {
item.addEventListener("click", (e) => {
if (!item.classList.contains("is-disabled")) closeMenu();
else e.preventDefault();
});
});
const LANG_KEY = "fce_lang";
const hasLtContent = !!document.querySelector(".lang-lt");
let currentLang = localStorage.getItem(LANG_KEY);
if (!currentLang) {
const oldLang = localStorage.getItem("fce_lang_v1");
if (oldLang) {
currentLang = oldLang;
try { localStorage.setItem(LANG_KEY, currentLang); } catch {}
} else {
currentLang = "en";
}
}
if (currentLang === "lt" && !hasLtContent) {
currentLang = "en";
try { localStorage.setItem(LANG_KEY, currentLang); } catch {}
}
const langSelect = document.getElementById("langSelect");
if (langSelect) {
const hasLtOption = Array.from(langSelect.options).some(opt => opt.value === "lt");
if (!hasLtOption) {
const ltOption = document.createElement("option");
ltOption.value = "lt";
ltOption.textContent = "LT";
langSelect.appendChild(ltOption);
}
}
if (langSelect) langSelect.value = currentLang;
const I18N_PAGES = {
en: {
about: "About",
concept: "Concept",
"what-fce-measures": "What FCE Measures",
scope: "Scope & Limits",
"how-to-use": "How to use",
"how-tests-work": "How the tests work",
faq: "FAQ"
},
no: {
about: "Om",
concept: "Konsept",
"what-fce-measures": "Hva FCE måler",
scope: "Omfang & begrensninger",
"how-to-use": "Hvordan bruke",
"how-tests-work": "Hvordan testene fungerer",
faq: "FAQ"
},
lt: {
about: "Apie",
concept: "Koncepcija",
"what-fce-measures": "Ką FCE matuoja",
scope: "Apimtis ir ribos",
"how-to-use": "Kaip naudoti",
"how-tests-work": "Kaip veikia testai",
faq: "DUK"
}
};
function getPageTitle(lang) {
const pageName = (location.pathname.split("/").pop() || "how-tests-work.html").replace(".html", "");
return (I18N_PAGES[lang] && I18N_PAGES[lang][pageName])
? I18N_PAGES[lang][pageName]
: (I18N_PAGES.en[pageName] || "How the tests work");
}
function updateTopbarPage() {
const topbarPage = document.getElementById("topbarPage");
if (topbarPage) {
topbarPage.textContent = getPageTitle(currentLang);
}
}
function applyLanguage(lang) {
let contentLang = lang;
if (contentLang === "lt" && !hasLtContent) {
contentLang = "en";
}
const uiLang = contentLang;
currentLang = contentLang;
try { localStorage.setItem(LANG_KEY, contentLang); } catch {}
if (langSelect) langSelect.value = currentLang;
document.querySelectorAll(".lang-en").forEach(el => el.classList.toggle("hidden", contentLang !== "en"));
document.querySelectorAll(".lang-no").forEach(el => el.classList.toggle("hidden", contentLang !== "no"));
document.querySelectorAll(".lang-lt").forEach(el => el.classList.toggle("hidden", contentLang !== "lt"));
document.querySelectorAll(".menu .lang-en, .docs-nav .lang-en").forEach(el => {
el.classList.toggle("hidden", uiLang !== "en");
});
document.querySelectorAll(".menu .lang-no, .docs-nav .lang-no").forEach(el => {
el.classList.toggle("hidden", uiLang !== "no");
});
document.querySelectorAll(".menu .lang-lt, .docs-nav .lang-lt").forEach(el => {
el.classList.toggle("hidden", uiLang !== "lt");
});
updateTopbarPage();
setupScrollObserver();
}
let scrollObserver = null;
function setupScrollObserver() {
if (scrollObserver) scrollObserver.disconnect();
const pageHeading = document.querySelector(".lang:not(.hidden) .hero h2") || document.querySelector(".hero h2");
const topbarPage = document.getElementById("topbarPage");
if (!topbarPage || !pageHeading) return;
function updateVisibility(isIntersecting) {
if (isIntersecting) topbarPage.classList.add("is-hidden");
else topbarPage.classList.remove("is-hidden");
}
scrollObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => updateVisibility(entry.isIntersecting));
}, { threshold: 0.25 });
scrollObserver.observe(pageHeading);
}
langSelect && langSelect.addEventListener("change", (e) => applyLanguage(e.target.value));
applyLanguage(currentLang);
function updateBrandLinkHint() {
const brandLink = document.getElementById("brandLink");
if (!brandLink) return;
const hints = { en: "To the instrument", no: "Til instrumentet", lt: "Į instrumentą" };
const hint = hints[currentLang] || hints.en;
brandLink.setAttribute("data-hint", hint);
brandLink.setAttribute("aria-label", hint);
}
updateBrandLinkHint();
langSelect && langSelect.addEventListener("change", () => {
updateBrandLinkHint();
});
function storeScrollPosition() {
try {
const scrollPos = window.scrollY || window.pageYOffset || 0;
if (scrollPos > 0) {
localStorage.setItem("fce_doc_scroll_how-tests-work", String(scrollPos));
}
} catch (e) {}
}
document.addEventListener("visibilitychange", () => {
if (document.visibilityState === "hidden") {
storeScrollPosition();
}
});
window.addEventListener("beforeunload", storeScrollPosition);
try {
if (window.location.hash === "#restore-scroll") {
const storedScroll = localStorage.getItem("fce_doc_scroll_how-tests-work");
if (storedScroll) {
const scrollPos = parseInt(storedScroll, 10);
if (!isNaN(scrollPos) && scrollPos > 0) {
history.replaceState(null, "", window.location.pathname);
requestAnimationFrame(() => {
window.scrollTo(0, scrollPos);
});
}
}
}
} catch (e) {}
})();
</script>
<script src="menu-sections.js" defer></script>
<script src="docs.js"></script>
</body>
</html>