6
6
< label for ="gcount "> ✅ = </ label >
7
7
< output name ="gcount " id ="gcount "> 0</ output > /< output name ="gtotal "> </ output > ,
8
8
< 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 > ,
10
10
< 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 />
12
13
(< label for ="xcount "> ∅ = </ label >
13
14
< output name ="xcount " id ="xcount "> 0</ output > /< output name ="xtotal "> </ output > )
14
15
</ form >
15
16
< script >
16
17
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 }}" ) ;
43
19
44
- clChange ( "{{ $formId }}" ) ;
20
+ if ( itemString !== "" ) {
21
+ setCLItemsFromString ( "{{ $formId }}" , itemString ) ;
22
+ } else {
23
+ clChange ( "{{ $formId }}" ) ;
24
+ }
45
25
} ) ;
46
26
27
+ /*
47
28
function clChange(formId) {
48
29
let form = document.getElementById(formId);
49
30
let counts = {R: 0, G: 0, A: 0, X:0};
68
49
form.elements["atotal"].value = numClItems;
69
50
form.elements["xtotal"].value = listItems.length;
70
51
}
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
+ }
71
112
</ script >
0 commit comments