Version 2.3 by SuperUwe Trueggelmann on 2022-09-28

Show last authors
1 {{groovy}}
2 int intPageStatus = 0
3 int intThTime = 0
4 int intBndDCy = 0
5 float flChVTime = 0.0
6 ArrayList lstEvalMethod = []
7 ArrayList lstEvalMethods = lstEvalMethod[][]
8 int i,j
9 String strListAllEval = ""
10 String strCommand
11
12
13 boolean doTH = false
14
15 strCommand = request.get("butAction")?: "none"
16 if (strCommand == null){
17 strCommand = "none"
18 intPageStatus = 0
19 }
20 else{
21 strCommand = services.cleanStr.alphanum(strCommand)
22 if (strCommand == "Calculate the Test Plan") {intPageStatus = 20}
23 if (strCommand == "Create a new Test Plan") {intPageStatus = 40}
24 // println strCommand + " received, pagestatus = " + intPageStatus
25 }
26
27 // PageStatus == 0: Starting, no parameters queried
28 // PageStatus == 10: Some parameters provided, but impossible to create the plan
29 // PageStatus == 20: Parameters provided, attempt to create the plan
30 // PageStatus == 30: Parameters verified, show plan
31 // PageStatus == 40: Plan shown, create a new plan
32
33 //Get params from URL
34 int intAc = (request.get("Ac") ?:1).toInteger()
35 objUc = request.get("Uc") ?:1.0
36 float flUc = objUc.toFloat()
37 int intTmax = (request.get("Tmax") ?:50).toInteger()
38 String strScenario = request.get("scenario") ?:"icc"
39 boolean boP = (request.get("p") ?:false).toBoolean()
40 boolean boM = (request.get("m") ?:false).toBoolean()
41 boolean boIcc = (request.get("icc") ?:false).toBoolean()
42 boolean boPv = (request.get("pv") ?:false).toBoolean()
43 boolean boDi = (request.get("di") ?:false).toBoolean()
44 boolean boO = (request.get("o") ?:false).toBoolean()
45 boolean boE = (request.get("e") ?:false).toBoolean()
46 boolean boIcm = (request.get("icm") ?:false).toBoolean()
47
48 // Test Method Applicability
49 if (intPageStatus == 20) {
50 lstEvalMethods.add([true,"Vis","VisualExamination"])
51 lstEvalMethods.add([true,"Wrp","Card Warpage"])
52 lstEvalMethods.add([true,"Dim","Dimensions of cards"])
53 lstEvalMethods.add([true,"Fun","Testably Functional"])
54 if (boP && (["fc","gp"].contains(strScenario))){lstEvalMethods.add([true,"AdhXcut","Delamination - Cross cut tape test"])}
55 else{lstEvalMethods.add([false,"AdhXcut","Delamination - Cross cut tape test"])}
56 if(boIcm){lstEvalMethods.add([true,"AdhICM","Adhesion of ICM to card"])}
57 else{lstEvalMethods.add([false,"AdhICM","Adhesion of ICM to card"])}
58 if(["icc","fc"].contains(strScenario)){lstEvalMethods.add([true,"AdhPeel","Peel strength"])}
59 else{lstEvalMethods.add([false,"AdhPeel","Peel strength"])}
60 if(boP && (["fc","gp"].contains(strScenario))){lstEvalMethods.add([true,"AdhPatch","Peel Strength of Patches covering graphical personalisation"])}
61 else{lstEvalMethods.add([false,"AdhPatch","Peel Strength of Patches covering graphical personalisation"])}
62 int intEvalMethodCount = 8
63
64 // Create max list of Evaluation Methods based on product configuration
65 for(i;i<8;i++){
66 if(lstEvalMethods[i][0]){
67 strListAllEval = strListAllEval + lstEvalMethods[i][2]
68 if(i<6){strListAllEval=strListAllEval + "\n"}
69 }
70 }
71 xcontext.put("strListAllEval",strListAllEval)
72 // TH
73 if (["icc","fc","gp"].contains(strScenario)){
74 doTH=true
75 intThTime=Math.max(12,Math.min(intAc*12,120))
76 xcontext.put("doTH",doTH)
77 xcontext.put("intThTime",intThTime)
78 }
79
80 // THSeq
81 if (["icc","fc","gp"].contains(strScenario)){
82 doTHSeq=true
83 xcontext.put("doTHSeq",doTHSeq)
84 }
85
86 // ChP
87 if (["icc","fc","gp"].contains(strScenario)){
88 doChP=true
89 xcontext.put("doChP",doChP)
90 }
91
92 // ChV
93 if (["icc","fc","gp"].contains(strScenario) && !(boE)){
94 doChV=true
95 flChVTime=Math.max(12,Math.min(intAc*12,120))
96 xcontext.put("doChV",doChV)
97 xcontext.put("flChVTime",flChVTime)
98 }
99
100 // TExp
101 if (["icc","fc","gp"].contains(strScenario)){
102 doTExp=true
103 xcontext.put("doTExp",doTExp)
104 }
105
106 // AbrMT
107 if (["icc","fc","gp"].contains(strScenario) && (boM)){
108 doAbrMT=true
109 int intCyAbrMT=Math.max(50,Math.min(intAc*50 + 2*intAc*flUc,500))
110 xcontext.put("doAbrMT",doAbrMT)
111 xcontext.put("intCyAbrMT",intCyAbrMT)
112 }
113
114 // AdhMag
115 if (["icc","fc","gp"].contains(strScenario) && boM){
116 doAdhMag=true
117 xcontext.put("doAdhMag",doAdhMag)
118 }
119
120 intPageStatus = 30
121 }
122
123 // AbrST
124 if (["icc","fc","gp"].contains(strScenario) && !(boE)){
125 doAbrST=true
126 int intCyAbrST=(Math.max(10,Math.min(4.5*intAc*flUc,450))).toInteger()
127 xcontext.put("doAbrST",doAbrST)
128 xcontext.put("intCyAbrST",intCyAbrST)
129 }
130
131 // Tw
132 if (["icc","fc"].contains(strScenario) && (boIcm)){
133 doTw=true
134 int intTwF=Math.max(8,Math.min(Math.ceil(2.15*(3 + flUc*0.5)),15))
135 int intTwCy=50
136 xcontext.put("doTw",doTw)
137 xcontext.put("intTwF",intTwF)
138 xcontext.put("intTwCy",intTwCy)
139 }
140
141 // TwA
142 if (["icc","fc"].contains(strScenario) && !(boIcm) &&(boPv)){
143 doTwA=true
144 int intTwAF=(Math.max(8,Math.min((2.15*(3 + flUc*0.5)),15))).toInteger()
145 int intTwACy=50
146 xcontext.put("doTwA",doTwA)
147 xcontext.put("intTwAF",intTwAF)
148 xcontext.put("intTwACy",intTwACy)
149 }
150
151 // BndA
152 if (["icc","fc"].contains(strScenario) && !(boIcm) && !(boIcc) && !(boPv) && !(boDi) && !(boE)){
153 doBndA=true
154 int intBndACy=(Math.max(1000,Math.min(1000*((intAc*flUc/2).toInteger()),50000))).toInteger()
155 xcontext.put("doBndA",doBndA)
156 xcontext.put("intBndACy",intBndACy)
157 }
158
159 // BndB
160 if (["icc","fc"].contains(strScenario) && !(boIcm) && !(boIcc) && !(boPv) && !(boDi) && !(boE)){
161 doBndB=true
162 int intBndBCy=(Math.max(1000,Math.min(500*((intAc*flUc/2).toInteger()),50000))).toInteger()
163 xcontext.put("doBndB",doBndB)
164 xcontext.put("intBndBCy",intBndBCy)
165 }
166
167 // BndD
168 if (["icc","fc","gp"].contains(strScenario)){
169 boolean doBndD=true
170 intBndDCy=(Math.max(1000,Math.min(1000+1000*(Math.rint(500*intAc*flUc/1000)),4000)))
171 xcontext.put("doBndD",doBndD)
172 xcontext.put("intBndDCy",intBndDCy)
173 }
174
175 // BndS
176 if (["icc","fc"].contains(strScenario) && (boDi)){
177 doBndS=true
178 int intBndSCy=(Math.max(100,Math.min(100+100*(Math.rint(20*intAc*flUc/100)),400)))
179 xcontext.put("doBndS",doBndS)
180 xcontext.put("intBndSCy",intBndSCy)
181 }
182
183 // BndW
184 if (["icc","fc"].contains(strScenario) && (boIcm)){
185 doBndW=true
186 xcontext.put("doBndW",doBndW)
187 }
188
189 // TH_BndD
190 if (["icc","fc","gp"].contains(strScenario)){
191 doTH_BndD=true
192 int intTH_BndDSimCy = Math.rint(intAc / 3) + 1
193 int intTH_BndDTime = Math.max(3,Math.min(3*Math.rint(intThTime/(intTH_BndDSimCy*3)),120))
194 int intTH_BndDCy = Math.max(400,Math.min(400*Math.rint(intBndDCy/(intTH_BndDSimCy*400)),4000))
195 xcontext.put("doTH_BndD",doTH_BndD)
196 xcontext.put("intTH_BndDSimCy",intTH_BndDSimCy)
197 xcontext.put("intTH_BndDTime",intTH_BndDTime)
198 xcontext.put("intTH_BndDCy",intTH_BndDCy)
199 }
200
201 // THSeq_BndD
202 if (["icc","fc","gp"].contains(strScenario)){
203 doTHSeq_BndD=true
204 int intTHSeq_BndDSimCy = 1 // Math.rint(intAc / 3) + 1
205 int intTHSeq_BndDTimeH = 60
206 int intTHSeq_BndDTimeL = 6
207 int intTHSeq_BndDCy = intBndDCy
208 xcontext.put("doTHSeq_BndD",doTHSeq_BndD)
209 xcontext.put("intTHSeq_BndDSimCy",intTHSeq_BndDSimCy)
210 xcontext.put("intTHSeq_BndDTimeH",intTHSeq_BndDTimeH)
211 xcontext.put("intTHSeq_BndDTimeL",intTHSeq_BndDTimeL)
212 xcontext.put("intTHSeq_BndDCy",intTHSeq_BndDCy)
213 }
214
215 // Vnl_BndD
216 if (["icc","fc","gp"].contains(strScenario) && !(boE) && (intAc>2)){
217 doVnl_BndD=true
218 int intVnl_BndDSimCy = Math.rint(intAc / 3) + 1
219 int intVnl_BndDTime = Math.max(3,Math.min(3*Math.rint(flChVTime/(intVnl_BndDSimCy*3)),120))
220 int intVnl_BndDCy = Math.max(400,Math.min(400*Math.rint(intBndDCy/(intVnl_BndDSimCy*400)),4000))
221 xcontext.put("doVnl_BndD",doVnl_BndD)
222 xcontext.put("intVnl_BndDSimCy",intVnl_BndDSimCy)
223 xcontext.put("intVnl_BndDTime",intVnl_BndDTime)
224 xcontext.put("intVnl_BndDCy",intVnl_BndDCy)
225 }
226
227
228
229 if (intPageStatus == 40) {
230 intPageStatus = 0
231 }
232 xcontext.put("intAc", intAc)
233 xcontext.put("flUc", flUc)
234 xcontext.put("intTmax", intTmax)
235 xcontext.put("intPageStatus",intPageStatus)
236 xcontext.put("strScenario",strScenario)
237 xcontext.put("boP",boP)
238 xcontext.put("boM",boM)
239 xcontext.put("boIcc",boIcc)
240 xcontext.put("boPv",boPv)
241 xcontext.put("boDi",boDi)
242 xcontext.put("boO",boO)
243 xcontext.put("boE",boE)
244 xcontext.put("boIcm",boIcm)
245 xcontext.put("boP",boP)
246
247
248 {{/groovy}}
249
250 {{velocity}}
251 {{html wiki=false clean=false}}
252 #set($fmtTblHeadLeft = 'style="background-color:#400040; border-color:#d0d3d4; color: white; vertical-align:middle;text-align:left;"')
253 #set($fmtTblHeadCenter = 'style="background-color:#400040; border-color:#d0d3d4; color: white; vertical-align:middle; text-align:center;"')
254 #set($fmtTblLeft = 'style="background-color:#d0d3d4; border-color:#400040; color: #400040; vertical-align:middle;text-align:left;"')
255 #set($fmtTblCenter = 'style="background-color:#d0d3d4; border-color:#400040; color: #400040; vertical-align:middle; text-align:center;"')
256
257 <form action="">
258 <table id="table1"; cellspacing="5px" cellpadding="5%" border="1" width="100%"; align="left">
259 <col style="width:25%">
260 <col style="width:25%">
261 <tr>
262 #if ($xcontext.intPageStatus == 0 || $xcontext.intPageStatus == 10)
263 <th $fmtTblHeadLeft colSpan=2>Enter the Application Profile Parameters:</th>
264 #end
265 #if ($xcontext.intPageStatus >= 20)
266 <th $fmtTblHeadLeft colSpan=2>Application Profile Parameters:</th>
267 #end
268 </tr>
269 <tr>
270 #if ($xcontext.intPageStatus == 0 || $xcontext.intPageStatus == 10)
271 <th $fmtTblHeadLeft>1. Enter expected Service Life in years - Ac</th>
272 #end
273 #if ($xcontext.intPageStatus >= 20)
274 <th $fmtTblHeadLeft>Service Life in years - Ac</th>
275 #end
276 #if ($xcontext.intPageStatus >= 20)
277 <td $fmtTblCenter>
278 $xcontext.intAc
279 </td>
280 #end
281 #if ($xcontext.intPageStatus < 20)
282 <td $fmtTblCenter>
283 <input type="number" step="1" id="Ac" name="Ac" value="$xcontext.intAc" min="1" max="10">
284 </td>
285 #end
286 </tr>
287 <tr>
288 #if ($xcontext.intPageStatus < 20)
289 <th $fmtTblHeadLeft>2. Enter Number of Uses per day - Uc</th>
290 #end
291 #if ($xcontext.intPageStatus >= 20)
292 <th $fmtTblHeadLeft>Number of Uses per day - Uc</th>
293 #end
294 #if ($xcontext.intPageStatus < 20)
295 <td $fmtTblCenter>
296 <input type="number" step="0.1" id="Uc" name="Uc" value="$xcontext.flUc" min="0.1" max="10">
297 </td>
298 #end
299 #if ($xcontext.intPageStatus >= 20)
300 <td $fmtTblCenter>
301 $xcontext.flUc
302 </td>
303 #end
304 </tr>
305 <tr>
306 #if ($xcontext.intPageStatus < 20)
307 <th $fmtTblHeadLeft>3. Enter maximum storage temperature - T<sub>max</sub></th>
308 #end
309 #if ($xcontext.intPageStatus >= 20)
310 <th $fmtTblHeadLeft>Maximum storage temperature - T<sub>max</sub></th>
311 #end
312 #if ($xcontext.intPageStatus < 20)
313 <td $fmtTblCenter>
314 <input type="number" step="5" id="Tmax" name="Tmax" value="$xcontext.intTmax" min="50" max="100"> °C
315 </td>
316 #end
317 #if ($xcontext.intPageStatus >= 20)
318 <td $fmtTblCenter>
319 $xcontext.intTmax °C
320 </td>
321 #end
322 </tr>
323 <tr>
324 #if ($xcontext.intPageStatus == 0 || $xcontext.intPageStatus == 10)
325 <th $fmtTblHeadLeft>3. Select the Test Scenario (the Scope of the Evaluation)</th>
326 #end
327 #if ($xcontext.intPageStatus >= 20)
328 <th $fmtTblHeadLeft>Test Scenario</th>
329 #end
330 #if ($xcontext.intPageStatus >= 20)
331 <td $fmtTblCenter>
332 #if ($xcontext.strScenario == "fc")
333 Finished Card including Personalisation
334 #end
335 #if ($xcontext.strScenario == "icc")
336 Unpersonalised Card
337 #end
338 #if ($xcontext.strScenario == "gp")
339 Graphical Personalisation Layer only
340 #end
341 </td>
342 #end
343 #if ($xcontext.intPageStatus < 20)
344 <td $fmtTblCenter>
345 <select name="scenario">
346 <option value="icc">CB or ICC - Unpersonalised Card</option>
347 <option value="fc">FC - Finished, Personalised Card</option>
348 <option value="gp">GP - Graphical Personalization Only</option>
349 </select>
350 </td>
351 #end
352 </tr>
353 <tr>
354 #if ($xcontext.intPageStatus == 0 || $xcontext.intPageStatus == 10)
355 <th $fmtTblHeadLeft>4. Check each of the Technologies present on the card:</th>
356 #end
357 #if ($xcontext.intPageStatus >= 20)
358 <th $fmtTblHeadLeft>Technologies present on the card</th>
359 #end
360 #if ($xcontext.intPageStatus >= 20)
361 <td $fmtTblCenter>
362 #if ($xcontext.boP) Graphical Personalisation Layer <br> #end
363 #if ($xcontext.boM) Magnetic Stripe <br> #end
364 #if ($xcontext.boIcc) IC Card with Contact Interface <br> #end
365 #if ($xcontext.boPv) IC Card with Proximity or Vicinity Interface <br> #end
366 #if ($xcontext.boDi) IC Card with Contact and Contactless Interface <br> #end
367 #if ($xcontext.boO) Optical Memory <br> #end
368 #if ($xcontext.boE) Embossing <br> #end
369 #if ($xcontext.boIcm) ICM exposed on the surface <br> #end
370 </td>
371 #end
372 #if ($xcontext.intPageStatus < 20)
373 <td $fmtTblCenter>
374 <input type="checkbox" id="p" name="p" value=true>
375 <label for "p">Graphical Perso Layer</label><br>
376 <input type="checkbox" id="m" name="m" value=true>
377 <label for "p">Magnetic Stripe</label><br>
378 <input type="checkbox" id="icc" name="icc" value=true>
379 <label for "p">ICC with Contact Interface</label><br>
380 <input type="checkbox" id="pv" name="pv" value=true>
381 <label for "p">PICC or VICC Interface</label><br>
382 <input type="checkbox" id="di" name="di" value=true>
383 <label for "p">Dual Interface</label><br>
384 <input type="checkbox" id="o" name="o" value=true>
385 <label for "p">Optical Memory</label><br>
386 <input type="checkbox" id="e" name="e" value=true>
387 <label for "p">Embossing</label><br>
388 <input type="checkbox" id="icm" name="icm" value=true>
389 <label for "p"><a href="https://trucert.com/bin/view/StartPage/Standardization/Card%20Service%20Life%20Test%20Plan%20WebTool/Explanation%3A%20ICM%20exposed%20on%20the%20surface/WebHome" target="_blank">ICM exposed on the surface</a></label><br>
390 </td>
391 #end
392 </tr>
393 #if ($xcontext.intPageStatus < 20)
394 <tr>
395 <th $fmtTblHeadLeft>5. Click this Button</th>
396 <td $fmtTblCenter>
397 <input class="btn btn-primary" type="submit" name="butAction" value="Calculate the Test Plan">
398 </td>
399 </tr>
400 #end
401 </table>
402 {{/html}}
403
404 ##{{html wiki="true"}}
405 #if ( $xcontext.intPageStatus == 30)
406 #set($fmtTblHdLeft = '(% style="background-color:#400040; border:1px solid #d0d3d4; color: white; vertical-align:middle;text-align:left;" %)')
407 #set($fmtTblHdLeft2C = '(% style="background-color:#400040; border:1px solid #d0d3d4; color: white; vertical-align:middle;text-align:left" colspan="2" %)')
408 #set($fmtTblHdLeft3C = '(% style="background-color:#400040; border:1px solid #d0d3d4; color: white; vertical-align:middle;text-align:left" colspan="3" %)')
409 #set($fmtTblHdCenter = '(% style="background-color:#400040; border:1px solid #d0d3d4; color: white; vertical-align:middle; text-align:center;" %)')
410 #set($fmtTblLeft = '(% style="background-color:#d0d3d4; border:1px solid #400040; color: #400040; vertical-align:middle; text-align:left;" %)')
411 #set($fmtTblCenter = '(% style="background-color:#d0d3d4; border:1px solid #400040; color: #400040; vertical-align:middle; text-align:center;" %)')
412 #set($fmtTblCenter2C = '(% style="background-color:#d0d3d4; border:1px solid #400040; color: #400040; vertical-align:middle; text-align:center;" colspan="2" %)')
413 |=${fmtTblHdLeft3C}Test Plan:
414 |=${fmtTblHdLeft}Test Method|=${fmtTblHdLeft}Parameters|=${fmtTblHdLeft}Evaluation Methods following exposure
415 #if ($xcontext.doTH)
416 |${fmtTblHdLeft}ISO/IEC 24789-2 - Temperature and humidity aging|${fmtTblLeft}Exposure Time: $xcontext.intThTime h at 50 °C and 95% r.H.|${fmtTblLeft}${xcontext.strListAllEval}
417 #end
418 #if ($xcontext.doTHSeq)
419 |${fmtTblHdLeft}ISO/IEC 24789-2 - Temperature Exposure with Humidity Variation (50°C/95 % r.H. followed by 50°C/25 % r.H.)|${fmtTblLeft}Exposure Time: 50 °C and 95 %r.H. for 60 h, followed by 50 °C and 25 %r.H. for 6 h|${fmtTblLeft}${xcontext.strListAllEval}
420 #end
421 #if ($xcontext.doChP)
422 |${fmtTblHdLeft}ISO/IEC 10373-1 - Exposure to Chemicals - Exposure to Artificial Perspiration|${fmtTblLeft}Exposure Time: 24 h|${fmtTblLeft}Visual examination
423 #end
424 #if ($xcontext.doChV)
425 |${fmtTblHdLeft}ISO/IEC 24789-2 - Plasticised vinyl storage|${fmtTblLeft}Exposure Time: ${xcontext.flChVTime} h|${fmtTblLeft}Visual examination
426 #end
427 #if ($xcontext.doTExp)
428 |${fmtTblHdLeft}ISO/IEC 10373-1 - Resistance to heat|${fmtTblLeft}Exposure Temperature: ${xcontext.intTmax} °C|${fmtTblLeft}The sample after Stress Exposure shall not show a deflection greater than 10 mm when evaluated as defined in //ISO/IEC 10373-1 - Resistance to heat// after being exposed to the test at the Exposure Temperature.
429 #end
430 #if ($xcontext.doAbrMT)
431 |${fmtTblHdLeft}ISO/IEC 24789-2 - Magnetic stripe abrasion|${fmtTblLeft}Abrasion Cycles: ${xcontext.intCyAbrMT}|${fmtTblLeft}The evaluation is implicitly defined in the method in ISO/IEC 24789-2, determining the number of cycles until the magnetic signal has degraded to a certain extent.
432 #end
433 #if ($xcontext.doAdhMag)
434 |${fmtTblHdLeft}ISO/IEC 10373-2 - Magnetic stripe adhesion|${fmtTblLeft}n/a|${fmtTblLeft}The evaluation is implicitly defined in the method in ISO/IEC 10373-2. Iin addition verify that:
435 - no loss of magnetic material outside the cut area occurred, and that
436 - on the adhesive tape the only magnetic material visible is cutting debris along the cuts in the stripe with a permitted maximum length of 0,5 mm.
437 #end
438 #if ($xcontext.doAbrST)
439 |${fmtTblHdLeft}ISO/IEC 24789-2 - Surface abrasion|${fmtTblLeft}Abrasion Cycles: ${xcontext.intCyAbrST}|${fmtTblLeft}Visual examination
440 #end
441 #if ($xcontext.doTw)
442 |${fmtTblHdLeft}ISO/IEC 10373-1 - 3 Wheel Test|${fmtTblLeft}Force 3 Wheel Test: ${xcontext.intTwF} N for ${xcontext.intTwCy} cycles per side (front and back)|${fmtTblLeft}Testably functional
443 #end
444 #if ($xcontext.doTwA)
445 |${fmtTblHdLeft}ISO/IEC 18328-2 – Advanced 3 Wheel Test|${fmtTblLeft}Force 3 Wheel Test ${xcontext.intTwAF} N for ${xcontext.intTwACy} cycles per side (front and back)|${fmtTblLeft}Testably functional
446 #end
447 #if ($xcontext.doBndA)
448 |${fmtTblHdLeft}ISO/IEC 24789-2 - ID-1 Card Flexure Axis A|${fmtTblLeft}Flex Cycles: ${xcontext.intBndACy}|${fmtTblLeft}Visual examination
449 Testably functional
450 #end##
451 #if ($xcontext.doBndB)
452 |${fmtTblHdLeft}ISO/IEC 24789-2 - ID-1 Card Flexure Axis B|${fmtTblLeft}Flex Cycles: ${xcontext.intBndBCy}|${fmtTblLeft}Visual examination
453 Testably functional
454 #end##
455 #if ($xcontext.doBndD)
456 |${fmtTblHdLeft}ISO/IEC 10373-1 - Dynamic Bending Stress|${fmtTblLeft}Bending Cycles: ${xcontext.intBndDCy}|${fmtTblLeft}Visual examination
457 Testably functional
458 #end
459 #if ($xcontext.doBndS)
460 |${fmtTblHdLeft}ISO/IEC 24789-2 - Shortened Bending Stress|${fmtTblLeft}Bending Cycles: ${xcontext.intBndSCy}|${fmtTblLeft}Visual examination
461 Testably functional
462 #end
463 #if ($xcontext.doBndW)
464 |${fmtTblHdLeft}ISO/IEC 24789-2 - Adhesion of ICM to Card - Wrapping test|${fmtTblLeft}Wrapping Cycles: as defined in the Stress Exposure Method|${fmtTblLeft}Visual examination as defined in the Stress Exposure Method
465 #end
466 #if ($xcontext.doTH_BndD)
467 |${fmtTblHdLeft}ISO/IEC 24789-2 - Temperature and Humidity Aging alternating with Dynamic Bending Stress|${fmtTblLeft}Repeat the following sequence ${xcontext.intTH_BndDSimCy} times:
468 - ISO/IEC 24789-2 - Temperature and humidity aging with an Exposure Time of ${xcontext.intTH_BndDTime} h
469 - ISO/IEC 10373-1 - Dynamic Bending Stress for ${xcontext.intTH_BndDCy} Bending Cycles; subjecting the card for ¼ of the cycles to each of the 4 Dynamic Bending orientations|${fmtTblLeft}Visual examination
470 Testably functional
471 #end
472 #if ($xcontext.doTHSeq_BndD)
473 |${fmtTblHdLeft}ISO/IEC 24789-2 - Temperature Exposure with Humidity Variation followed by Dynamic Bending StressStress|${fmtTblLeft}Repeat the following sequence ${xcontext.intTHSeq_BndDSimCy} times:
474 - ISO/IEC 24789-2 - ISO/IEC 24789-2 - Temperature Exposure with humidity variation at 50 °C and 95% rH for ${xcontext.intTHSeq_BndDTimeH} h Exposure Time;
475 - ISO/IEC 24789-2 - ISO/IEC 24789-2 - Temperature Exposure with humidity variation at 50 °C and 25% rH for ${xcontext.intTHSeq_BndDTimeL} h Exposure Time;
476 - ISO/IEC 10373-1 - Dynamic Bending Stress for ${xcontext.intTHSeq_BndDCy} Bending Cycles; subjecting the card for ¼ of the cycles to each of the 4 Dynamic Bending orientations|${fmtTblLeft}Visual examination
477 Testably functional
478 #end
479 #if ($xcontext.doVnl_BndD)
480 |${fmtTblHdLeft}ISO/IEC 24789-2 - Softener Sequence - Plasticised vinyl storage alternating with Dynamic Bending StressStressStress|${fmtTblLeft}Repeat the following sequence ${xcontext.intVnl_BndDSimCy} times:
481 - ISO/IEC 24789-2 - Plasticised vinyl storage for ${xcontext.intVnl_BndDTime} h;
482 - ISO/IEC 10373-1 - Dynamic Bending Stress for ${xcontext.intVnl_BndDCy} Bending Cycles; subjecting the card for ¼ of the cycles to each of the 4 Dynamic Bending orientations;|${fmtTblLeft}Visual examination
483 Testably functional
484 #end
485 ##
486 ## 'Create a new Test Plan' button at the bottom
487 ##
488 |=${fmtTblHdLeft}Click this Button to calculate a new Test Plan|${fmtTblCenter2C}{{html wiki=false clean=false}}
489 <form action="" class="xformInline" method="post" name="Contact Edit Form">
490 <input class="btn btn-primary" type="submit" name="butAction" value="Create a new Test Plan" align="center">
491 </form>
492 {{/html}}|
493 #end
494 {{/velocity}}
495
496 [[ICM exposed on the surface>>doc:Main.Standardization.Card Service Life Test Plan WebTool.Explanation\: ICM exposed on the surface.WebHome]]
© 2022 TruCert Assessment Services Inc.
V01-00