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