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