1+ {{ $formId := index .Params 0 }}
2+ < form id ="{{ $formId }} ">
3+ < ul style ="list-style-type: none;padding-left: 0px; ">
4+ {{ .Inner }}
5+ </ ul >
6+ < label for ="gcount "> ✅ = </ label >
7+ < output name ="gcount " id ="gcount "> 0</ output > /< output name ="gtotal "> </ output > ,
8+ < label for ="rcount "> ❌ = </ label >
9+ < output name ="rcount " id ="rcount "> 2</ output > /< output name ="rtotal "> </ output > ,
10+ < label for ="acount "> 🔍 = </ label >
11+ < output name ="acount " id ="acount "> 0</ output > /< output name ="atotal "> </ output > < br />
12+ (< label for ="xcount "> ∅ = </ label >
13+ < output name ="xcount " id ="xcount "> 0</ output > /< output name ="xtotal "> </ output > )
14+ </ form >
15+ < script >
16+ document . addEventListener ( 'DOMContentLoaded' , ( ) => {
17+ if ( localStorage . getItem ( "{{ $formId }}" ) ) {
18+ let choiceList = localStorage . getItem ( "{{ $formId }}" ) ;
19+ let form = document . getElementById ( formId ) ;
20+ let counts = { R : 0 , G : 0 , A : 0 , X :0 } ;
21+
22+ let listItems = form . getElementsByTagName ( "li" ) ;
23+
24+ for ( const [ index , elem ] of listItems . entries ( ) ) {
25+ let menu = elem . getElementsByTagName ( "select" ) [ 0 ] ;
26+ let mvalue = choiceList [ index ] ;
27+ menu . value = mvalue ;
28+
29+ counts [ mvalue ] ++ ;
30+ }
31+
32+ form . elements [ "rcount" ] . value = counts [ "R" ] ;
33+ form . elements [ "gcount" ] . value = counts [ "G" ] ;
34+ form . elements [ "acount" ] . value = counts [ "A" ] ;
35+ form . elements [ "xcount" ] . value = counts [ "X" ] ;
36+
37+ let numClItems = listItems . length ;
38+ form . elements [ "rtotal" ] . value = numClItems ;
39+ form . elements [ "gtotal" ] . value = numClItems ;
40+ form . elements [ "atotal" ] . value = numClItems ;
41+ form . elements [ "xtotal" ] . value = numClItems ;
42+ }
43+
44+ clChange ( "{{ $formId }}" ) ;
45+ } ) ;
46+
47+ function clChange ( formId ) {
48+ let form = document . getElementById ( formId ) ;
49+ let counts = { R : 0 , G : 0 , A : 0 , X :0 } ;
50+
51+ let listItems = form . getElementsByTagName ( "li" ) ;
52+
53+ for ( let elem of listItems ) {
54+ let menu = elem . getElementsByTagName ( "select" ) [ 0 ] ;
55+ let mvalue = menu . value ;
56+
57+ counts [ mvalue ] ++ ;
58+ }
59+
60+ form . elements [ "rcount" ] . value = counts [ "R" ] ;
61+ form . elements [ "gcount" ] . value = counts [ "G" ] ;
62+ form . elements [ "acount" ] . value = counts [ "A" ] ;
63+ form . elements [ "xcount" ] . value = counts [ "X" ] ;
64+
65+ let numClItems = listItems . length - counts [ "X" ] ;
66+ form . elements [ "rtotal" ] . value = numClItems ;
67+ form . elements [ "gtotal" ] . value = numClItems ;
68+ form . elements [ "atotal" ] . value = numClItems ;
69+ form . elements [ "xtotal" ] . value = listItems . length ;
70+ }
71+ </ script >
0 commit comments