SASUnit Examples  Version 1.3.0
_reporttreehtml.sas
Go to the documentation of this file.
1 
33 %MACRO _reportTreeHTML (i_repdata =
34  ,o_html = 0
35  );
36 
37 %LOCAL l_title;
38 %LOCAL d_tree d_tree1 d_tree2 d_la i;
39 
40 %LET l_title = &g_project | SASUnit;
41 
42 %_tempFilename(d_tree)
43 %_tempFilename(d_tree1)
44 %_tempFilename(d_tree2)
45 %_tempFilename(d_la)
46 
47 /*-- generate tree structure 1 for test scenarios ----------------------------*/
48 DATA &d_tree1 (KEEP=label popup target lvl term lst1-lst5);
49  LENGTH label popup target $255 lvl term lst1-lst5 8;
50  RETAIN lst1-lst5 0;
51  SET &i_repdata;
52  BY scn_id cas_id tst_id;
53 
54  tst_type=tranwrd(tst_type,"^_","");
55  tst_desc=tranwrd(tst_desc,"^_","");
56 
57  IF _n_=1 THEN DO;
58  label = "&g_nls_reportTree_001";
59  popup = "&g_nls_reportTree_002";
60  target = "scn_overview.html";
61  lvl = 1;
62  term = 0;
63  lst1 = 0;
64  lst2 = 0;
65  lst3 = 0;
66  lst4 = 0;
67  OUTPUT;
68  END;
69 
70  IF first.scn_id THEN DO;
71  label = scn_path;
72  popup = "&g_nls_reportTree_003 " !! put(scn_id,z3.) !! ': 
' !! scn_desc;
73  target = "cas_overview.html#SCN" !! put(scn_id,z3.) !! "_";
74  lvl = 2;
75  term = 0;
76  lst2 = scn_last;
77  lst3 = 0;
78  lst4 = 0;
79  OUTPUT;
80  END;
81 
82  IF first.cas_id THEN DO;
83  label = put(cas_id,z3.);
84  popup = "&g_nls_reportTree_004 " !! put (cas_id,z3.) !! ': 
' !! cas_desc;
85  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html";
86  lvl = 3;
87  term = 0;
88  lst3 = cas_last;
89  lst4 = 0;
90  OUTPUT;
91  END;
92 
93  label = put (tst_id, z3.) !! ' (' !! trim(tst_type) !! ')';
94  popup = "&g_nls_reportTree_005 " !! put (tst_id,z3.) !! ': 
' !! tst_desc;
95  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html#TST" !! put (tst_id,z3.);
96  lvl = 4;
97  term = 1;
98  lst4 = last.cas_id;
99  OUTPUT;
100 
101 RUN;
102 
103 /*-- generate tree structure 2 for units under test --------------------------*/
104 DATA &d_tree2 (KEEP=label popup target lvl term lst1-lst5);
105  LENGTH label popup target $255 lvl term lst1-lst5 8;
106  RETAIN lst1-lst5 0;
107  SET &i_repdata;
108  BY cas_auton pgm_id scn_id cas_id tst_id;
109 
110  tst_type=tranwrd(tst_type,"^_","");
111  tst_desc=tranwrd(tst_desc,"^_","");
112  cas_pgm =tranwrd(cas_pgm,"^_","");
113 
114  IF _n_=1 THEN DO;
115  label = "&g_nls_reportTree_006";
116  popup = "&g_nls_reportTree_007";
117  target = "auton_overview.html";
118  lvl = 1;
119  term = 0;
120  lst1 = 1;
121  lst2 = 0;
122  lst3 = 0;
123  lst4 = 0;
124  lst5 = 0;
125  OUTPUT;
126  END;
127 
128  IF first.cas_auton THEN DO;
129  SELECT (cas_auton);
130  WHEN (0) label = tsu_sasunit;
131  WHEN (1) label = tsu_sasunit_os;
132  WHEN (2) label = tsu_sasautos;
133 %DO i=1 %TO 9;
134  WHEN (&i+2) label = tsu_sasautos&i;
135 %END;
136  OTHERWISE label="&g_nls_reportAuton_015";
137  END;
138  IF cas_auton=0 THEN
139  popup = "&g_nls_reportTree_009 sasunit:" !! '
' !! label;
140  ELSE IF cas_auton=1 THEN
141  popup = "&g_nls_reportTree_009 os_specific sasunit:" !! '
' !! label;
142  ELSE IF cas_auton=2 THEN
143  popup = "&g_nls_reportTree_009 sasautos:" !! '
' !! label;
144  ELSE IF cas_auton>2 THEN
145  popup = "&g_nls_reportTree_009 sasautos" !! left(put(cas_auton-2,1.)) !! ':
' !! label;
146  ELSE
147  popup = "&g_nls_reportTree_010";
148  target = "auton_overview.html#AUTON";
149  IF cas_auton NE . THEN target = trim(target) !! put(cas_auton,z3.);
150  target = trim(target) !! '_';
151  lvl = 2;
152  term = 0;
153  lst2 = auton_last;
154  lst3 = 0;
155  lst4 = 0;
156  lst5 = 0;
157  OUTPUT;
158  END;
159 
160  IF first.pgm_id THEN DO;
161  label = cas_pgm;
162  SELECT (cas_auton);
163  WHEN (0) popup = trim(tsu_sasunit) !! '/' !! cas_pgm;
164  WHEN (1) popup = trim(tsu_sasunit_os) !! '/' !! cas_pgm;
165  WHEN (2) popup = trim(tsu_sasautos) !! '/' !! cas_pgm;
166 %DO i=1 %TO 9;
167  WHEN (&i+2) popup = trim(tsu_sasautos&i) !! '/' !! cas_pgm;
168 %END;
169  OTHERWISE popup=cas_pgm;
170  END;
171  popup = "&g_nls_reportTree_011: " !! '
' !! popup;
172  target = "auton_overview.html#AUTON";
173  IF cas_auton NE . THEN target = trim(target) !! put(cas_auton,z3.);
174  target = trim(target) !! '_' !! put(pgm_id,z3.) !! "_";
175  lvl = 3;
176  term = 0;
177  lst3 = pgm_last;
178  lst4 = 0;
179  lst5 = 0;
180  OUTPUT;
181  END;
182 
183  IF first.cas_id THEN DO;
184  label = put(scn_id,z3.) !! "_" !! put(cas_id,z3.);
185  popup = "&g_nls_reportTree_012 " !! put(scn_id,z3.) !! ", &g_nls_reportTree_013 " !! put (cas_id,z3.) !! ': 
' !! cas_desc;
186  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html";
187  lvl = 4;
188  term = 0;
189  lst4 = pcs_last;
190  lst5 = 0;
191  OUTPUT;
192  END;
193 
194  label = put (tst_id, z3.) !! ' (' !! trim(tst_type) !! ')';
195  popup = "&g_nls_reportTree_014 " !! put (tst_id,z3.) !! '
' !! tst_desc;
196  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html#TST" !! put (tst_id,z3.);
197  lvl = 5;
198  term = 1;
199  lst5 = last.cas_id;
200  OUTPUT;
201 
202 RUN;
203 
204 /*-- Lookahead für Level -----------------------------------------------------*/
205 DATA &d_tree &d_la(KEEP=lvl RENAME=(lvl=nextlvl));
206  SET &d_tree1 &d_tree2 END=eof;
207  OUTPUT &d_tree;
208  IF _n_>1 THEN OUTPUT &d_la;
209  IF eof THEN DO;
210  lvl=1;
211  OUTPUT &d_la;
212  END;
213 RUN;
214 
215 DATA &d_tree;
216  MERGE &d_tree &d_la;
217 RUN;
218 
219 
220 /*-- generate HTML and javascript code ---------------------------------------*/
221 DATA _null_;
222  SET &d_tree END=eof;
223  FILE "&o_html" LRECL=1024;
224 
225  IF _n_=1 THEN DO;
226  %_reportHeaderHTML(&l_title)
227  PUT " <script type=""text/javascript"">";
228  PUT " <!-- // Hide script from old browsers";
229  PUT " ";
230  PUT " function toggleFolder(id, imageNode) ";
231  PUT " {";
232  PUT " var folder = document.getElementById(id);";
233  PUT " var l = imageNode.src.length;";
234  PUT " if (imageNode.src.substring(l-20,l)==""ftv2folderclosed.png"" || ";
235  PUT " imageNode.src.substring(l-18,l)==""ftv2folderopen.png"")";
236  PUT " {";
237  PUT " imageNode = imageNode.previousSibling;";
238  PUT " l = imageNode.src.length;";
239  PUT " }";
240  PUT " if (folder == null) ";
241  PUT " {";
242  PUT " } ";
243  PUT " else if (folder.style.display == ""block"") ";
244  PUT " {";
245  PUT " if (imageNode != null) ";
246  PUT " {";
247  PUT " imageNode.nextSibling.src = ""ftv2folderclosed.png"";";
248  PUT " if (imageNode.src.substring(l-13,l) == ""ftv2mnode.png"")";
249  PUT " {";
250  PUT " imageNode.src = ""ftv2pnode.png"";";
251  PUT " }";
252  PUT " else if (imageNode.src.substring(l-17,l) == ""ftv2mlastnode.png"")";
253  PUT " {";
254  PUT " imageNode.src = ""ftv2plastnode.png"";";
255  PUT " }";
256  PUT " }";
257  PUT " folder.style.display = ""none"";";
258  PUT " } ";
259  PUT " else ";
260  PUT " {";
261  PUT " if (imageNode != null) ";
262  PUT " {";
263  PUT " imageNode.nextSibling.src = ""ftv2folderopen.png"";";
264  PUT " if (imageNode.src.substring(l-13,l) == ""ftv2pnode.png"")";
265  PUT " {";
266  PUT " imageNode.src = ""ftv2mnode.png"";";
267  PUT " }";
268  PUT " else if (imageNode.src.substring(l-17,l) == ""ftv2plastnode.png"")";
269  PUT " {";
270  PUT " imageNode.src = ""ftv2mlastnode.png"";";
271  PUT " }";
272  PUT " }";
273  PUT " folder.style.display = ""block"";";
274  PUT " }";
275  PUT " }";
276  PUT " ";
277  PUT " // End script hiding -->";
278  PUT " </script>";
279  PUT " </head>";
280  PUT " ";
281  PUT " <body class=""ftvtree"">";
282  PUT " <div class=""directory"">";
283  PUT ' <h3><a class="el" href="overview.html" title="' "&g_nls_reportTree_015 &g_project" '" target="basefrm">' "&g_project" '</a></h3>';
284  PUT " <div style=""display: block;"">";
285  END;
286 
287  ARRAY lst{5} lst1-lst5;
288  RETAIN folder 0;
289  PUT "<p>" @;
290  DO i=1 TO lvl-1;
291  IF lst{i} THEN PUT '<img src="ftv2blank.png" width=16 height=22 />' @;
292  ELSE PUT '<img src="ftv2vertline.png" width=16 height=22 />' @;
293  END;
294  IF term THEN DO;
295  IF lst{i} THEN PUT '<img src="ftv2lastnode.png" width=16 height=22 />' @;
296  ELSE PUT '<img src="ftv2node.png" width=16 height=22 />' @;
297  PUT '<img src="ftv2doc.png" width=24 height=22 />' @;
298  END;
299  ELSE DO;
300  folder+1;
301  IF lst{i} THEN PUT '<img src="ftv2plastnode.png" width=16 height=22 '
302  'onclick="toggleFolder(''folder' folder +(-1) ''', this)"/>' @;
303  ELSE PUT '<img src="ftv2pnode.png" width=16 height=22 '
304  'onclick="toggleFolder(''folder' folder +(-1) ''', this)"/>' @;
305  PUT '<img src="ftv2folderclosed.png" width=24 height=22 '
306  'onclick="toggleFolder(''folder' folder +(-1) ''', this)"/>' @;
307  END;
308  PUT '<a class="el" href="' target +(-1) '" title="' popup +(-1) '" target="basefrm">' label +(-1) '</a></p>';
309  IF NOT term AND lvl<nextlvl THEN PUT '<div id="folder' folder +(-1) '">';
310  DO i=nextlvl+1 TO lvl;
311  PUT "</DIV>";
312  END;
313 
314  IF eof THEN DO;
315  PUT '</div></div></body></html>';
316  END;
317 
318 RUN;
319 
320 PROC DATASETS NOLIST NOWARN LIB=work;
321  DELETE %scan(&d_tree,1,.) %scan(&d_tree1,1,.) %scan(&d_tree2,1,.) %scan(&d_la,1,.);
322 QUIT;
323 
324 %MEND _reportTreeHTML;