66 < label for ="gcount "> ✅ = </ label >
77 < output name ="gcount " id ="gcount "> 0</ output > /< output name ="gtotal "> </ output > ,
88 < label for ="rcount "> ❌ = </ label >
9- < output name ="rcount " id ="rcount "> 2 </ output > /< output name ="rtotal "> </ output > ,
9+ < output name ="rcount " id ="rcount "> 0 </ output > /< output name ="rtotal "> </ output > ,
1010 < label for ="acount "> 🔍 = </ label >
11- < output name ="acount " id ="acount "> 0</ output > /< output name ="atotal "> </ output > < br />
11+ < output name ="acount " id ="acount "> 0</ output > /< output name ="atotal "> </ output >
12+ < br />
1213 (< label for ="xcount "> ∅ = </ label >
1314 < output name ="xcount " id ="xcount "> 0</ output > /< output name ="xtotal "> </ output > )
1415</ form >
1516< script >
1617 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- }
18+ let itemString = localStorage . getItem ( "{{ $formId }}" ) ;
4319
44- clChange ( "{{ $formId }}" ) ;
20+ if ( itemString !== "" ) {
21+ setCLItemsFromString ( "{{ $formId }}" , itemString ) ;
22+ } else {
23+ clChange ( "{{ $formId }}" ) ;
24+ }
4525 } ) ;
4626
27+ /*
4728 function clChange(formId) {
4829 let form = document.getElementById(formId);
4930 let counts = {R: 0, G: 0, A: 0, X:0};
6849 form.elements["atotal"].value = numClItems;
6950 form.elements["xtotal"].value = listItems.length;
7051 }
52+ */
53+
54+
55+ function getStringFromCLItems ( formId ) {
56+ let result = "" ;
57+
58+ let form = document . getElementById ( formId ) ;
59+
60+ let listItems = form . getElementsByTagName ( "li" ) ;
61+
62+ for ( let elem of listItems ) {
63+ let menu = elem . getElementsByTagName ( "select" ) [ 0 ] ;
64+ result += menu . value ;
65+ }
66+
67+ return result ;
68+ }
69+
70+
71+ function setCLItemsFromString ( formId , clString ) {
72+ let counts = { R : 0 , G : 0 , A : 0 , X :0 } ;
73+
74+ let form = document . getElementById ( formId ) ;
75+ let listItems = form . getElementsByTagName ( "li" ) ;
76+
77+ if ( clString . length < listItems . length ) {
78+ clString = clString . padEnd ( listItems . length , "R" ) ;
79+ } else if ( clString . length > listItems . length ) {
80+ clString = clString . substring ( 0 , listItems . length ) ;
81+ }
82+
83+ for ( let i = 0 ; i < clString . length ; i ++ ) {
84+ let char = clString . charAt ( i ) ;
85+ counts [ char ] ++ ;
86+ let menu = listItems [ i ] . getElementsByTagName ( "select" ) [ 0 ] ;
87+ menu . value = char ;
88+ }
89+
90+ form . elements [ "rcount" ] . value = counts [ "R" ] ;
91+ form . elements [ "gcount" ] . value = counts [ "G" ] ;
92+ form . elements [ "acount" ] . value = counts [ "A" ] ;
93+ form . elements [ "xcount" ] . value = counts [ "X" ] ;
94+
95+
96+ let numClItems = listItems . length - counts [ "X" ] ;
97+
98+ form . elements [ "rtotal" ] . value = numClItems ;
99+ form . elements [ "gtotal" ] . value = numClItems ;
100+ form . elements [ "atotal" ] . value = numClItems ;
101+ form . elements [ "xtotal" ] . value = counts [ "X" ] ;
102+
103+ let itemChoices = getStringFromCLItems ( "{{ $formId }}" ) ;
104+ localStorage . setItem ( "{{ $formId }}" , itemChoices ) ;
105+ }
106+
107+
108+ function clChange ( formId ) {
109+ let itemChoices = getStringFromCLItems ( formId ) ;
110+ setCLItemsFromString ( formId , itemChoices ) ;
111+ }
71112</ script >
0 commit comments