Subversion Repositories DevTools

Rev

Rev 5955 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5355 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|                                                   |
5
'|                      REPORT                       |
6
'|                    SBOM Issues                    |
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
' Good idea to set when using redirect
12
Response.Expires = 0   ' always load the page, dont store
13
 
14
'To enable the script timeout to 5 mins
15
Server.ScriptTimeout=300
16
%>
17
<!--#include file="common/config.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/globals.asp"-->
20
<!--#include file="common/formating.asp"-->
21
<!--#include file="common/qstr.asp"-->
22
<!--#include file="common/common_dbedit.asp"-->
23
<%
24
'------------ ACCESS CONTROL ------------------
25
%>
26
<!--#include file="_access_control_general.asp"-->
27
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT>
28
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/base64encode.vbs"></SCRIPT> 
29
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/jiraIssues.vbs"></SCRIPT> 
30
<%
31
'------------ Variable Definition -------------
32
Dim rsQry
33
Dim parPv_id
34
Dim objSbomDetailsA, objSbomDetailsB
35
Dim objRelCollectorA, objRelCollectorB
36
Dim parSbomA, parSbomB
37
Dim retValCQIssues
38
Dim retValJIRAIssues
39
Dim topLevelId
40
Dim DEVIiss
41
Dim pvIdList
42
Dim objIssueDetails
43
Dim cqIssues
44
Dim jiraIssues
45
Dim rsBomPackages
46
Dim rsPkgDeps
47
Dim multiPackagesEnabled
48
 
49
'------------ Constants Declaration -----------
50
'------------ Variable Init -------------------
51
parSbomA = Request("sbomA")
52
parSbomB = Request("sbomB")
53
Set objRelCollectorA = CreateObject("Scripting.Dictionary")
54
Set objRelCollectorB = CreateObject("Scripting.Dictionary")
55
Set objSbomDetailsA = CreateObject("Scripting.Dictionary")
56
Set objSbomDetailsB = CreateObject("Scripting.Dictionary")
57
Set objIssueDetails = CreateObject("Scripting.Dictionary")
58
Set jiraIssues = CreateObject( "Scripting.Dictionary" )
59
Set rsBomPackages = Server.CreateObject("ADODB.Recordset")
60
Set rsPkgDeps = Server.CreateObject("ADODB.Recordset")
61
'----------------------------------------------
62
%>
63
<%
64
'----------------------------------------------------------------------------------------------------------------------------------------
65
Sub GetFormDetails ( nSourceSBOM, ByRef tempObjRelCollector )
66
   Dim rsQry, query
67
 
68
   ' Exit if nSourceRtagId is empty
69
   If nSourceSBOM = "" Then Exit Sub
70
 
71
   OraDatabase.Parameters.Add "SBOM",    nSourceSBOM,      ORAPARM_INPUT, ORATYPE_NUMBER
72
 
73
   query = _
74
   " SELECT pr.PROJ_NAME ||' &gt; '|| br.BRANCH_NAME ||' &gt; '|| b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE  AS LOCATION, "&_
75
   "        pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID, b.IS_READONLY, b.RTAG_ID_FK"&_
76
   "  FROM BRANCHES br,"&_
77
   "        BOMS b,"&_
78
   "         DM_PROJECTS pr"&_
79
   " WHERE br.PROJ_ID = pr.PROJ_ID"&_
80
   "    AND b.BRANCH_ID = br.BRANCH_ID"&_
81
   "   AND b.BOM_ID = :SBOM"
82
 
83
   Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
84
 
85
   OraDatabase.Parameters.Remove "SBOM"
86
 
87
   If rsQry.RecordCount > 0 Then
88
      tempObjRelCollector ("location") = rsQry("location")
89
      tempObjRelCollector ("official") = rsQry("IS_READONLY")
90
      tempObjRelCollector ("proj_id") = rsQry("proj_id")
91
      tempObjRelCollector ("branch_id") = rsQry("branch_id")
92
      tempObjRelCollector ("bom_id") = rsQry("bom_id")
93
      tempObjRelCollector ("rtag_id_fk") = rsQry("rtag_id_fk")
94
   Else
95
      Err.Raise 8, "Sub GetFormDetails in "& SCRIPT_NAME, "Empty record set returned. nSourceSBOM="& nSourceSBOM
96
   End If
97
 
98
   If tempObjRelCollector ("location") = "" Then
99
      tempObjRelCollector.Item ("location") = "N"
100
   End If
101
 
102
   rsQry.Close
103
   Set rsQry = Nothing
104
 
105
End Sub
106
'----------------------------------------------------------------------------------------------------------------------------------------
107
Sub GetPackageDetailsForIssue ( nIss_id, sPvIdList, tempIssDetails )
108
   Dim query
109
 
110
   query = " SELECT DISTINCT pkg.pkg_name, pv.pkg_version, pv.v_ext, pkg.pkg_id, pv.pv_id "&_
111
           " FROM package_versions pv, packages pkg, cq_issues iss "&_
112
           " WHERE pv.pkg_id = pkg.pkg_id AND pv.pv_id = iss.pv_id AND iss.iss_id = :ISS_ID AND pv.pv_id IN ("& sPvIdList &")"
113
 
114
   OraDatabase.Parameters.Add "ISS_ID", nIss_id, ORAPARM_INPUT, ORATYPE_NUMBER
115
 
116
   Set tempIssDetails = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
117
 
118
   OraDatabase.Parameters.Remove "ISS_ID"
119
 
120
   If tempIssDetails.RecordCount = 0 Then
121
      Err.Raise 8, "Sub GetPackageDetailsForIssue in "& SCRIPT_NAME, "Empty record set returned. nIss_id="& nIss_id
122
   End If
123
 
124
End Sub
125
'----------------------------------------------------------------------------------------------------------------------------------------
126
Sub GetPackageDetailsForJIRAIssue ( nIss_Key, sPvIdList, tempIssDetails )
127
   Dim query
128
 
129
   query = " SELECT DISTINCT pkg.pkg_name, pv.pkg_version, pv.v_ext, pkg.pkg_id, pv.pv_id "&_
130
           " FROM package_versions pv, packages pkg, jira_issues iss "&_
131
           " WHERE pv.pkg_id = pkg.pkg_id AND pv.pv_id = iss.pv_id AND iss.iss_key = :ISS_ID AND pv.pv_id IN ("& sPvIdList &")"
132
 
133
   OraDatabase.Parameters.Add "ISS_ID", nIss_Key, ORAPARM_INPUT, ORATYPE_NUMBER
134
 
135
   Set tempIssDetails = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
136
 
137
   OraDatabase.Parameters.Remove "ISS_ID"
138
 
139
   If tempIssDetails.RecordCount = 0 Then
140
      Err.Raise 8, "Sub GetPackageDetailsForJIRAIssue in "& SCRIPT_NAME, "Empty record set returned. nIss_Key="& nIss_Key
141
   End If
142
 
143
End Sub
144
'----------------------------------------------------------------------------------------------------------------------------------------
145
Function GetIssues( sPvIdList, oRsCqIssTemp )
146
   Dim sqlStrTemp, oRsTemp
147
 
148
   Set oRsTemp = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id FROM CQ_ISSUES WHERE pv_id IN ("& sPvIdList &")", cint(0))
149
 
150
   If oRsTemp.RecordCount <> 0 Then
151
 
152
      DEVIiss = "-1"
153
 
154
      While ((NOT oRsTemp.BOF) AND (NOT oRsTemp.EOF))
155
 
156
         If CInt(oRsTemp("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
157
            DEVIiss = DEVIiss &","& oRsTemp("iss_id")
158
         End If
159
 
160
         oRsTemp.MoveNext
161
      WEnd
162
 
163
      sqlStrTemp = GetQuery ("cq_issues.sql")
164
      sqlStrTemp = Replace( sqlStrTemp, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
165
      sqlStrTemp = Replace( sqlStrTemp, "/*DEVIiss*/", DEVIiss)
166
 
167
      On Error Resume Next
168
      Set oRsCqIssTemp = OraDatabase.DbCreateDynaset( sqlStrTemp, cint(0))
169
      GetIssues = Err.Number
170
   Else
171
 
172
    GetIssues = -1
173
 
174
   End If
175
 
176
End Function
177
'----------------------------------------------------------------------------------------------------------------------------------------
178
Function Get_JIRA_Issues ( sPvIdList, oRsJiraIssTemp )
179
 
180
    On Error Resume Next
181
    Call getJiraIssueDetails(sPvIdList, oRsJiraIssTemp, 1)
182
    If Err.Number <> 0 Then
183
        Get_JIRA_Issues = Err.Number
184
    ElseIf oRsJiraIssTemp.Count = 0 Then
185
        Get_JIRA_Issues = -1
186
    Else
187
        Get_JIRA_Issues = 0
188
    End If
189
 
190
End Function
191
'----------------------------------------------------------------------------------------------------------------------------------------
192
Sub GetPackageDependencies ( nPv_id_a, nPv_id_b, oRsTemp )
193
 
194
   OraDatabase.Parameters.Add "PV_ID_A", nPv_id_a, ORAPARM_INPUT, ORATYPE_NUMBER
195
   OraDatabase.Parameters.Add "PV_ID_B", nPv_id_b, ORAPARM_INPUT, ORATYPE_NUMBER
196
 
197
   Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("UniquePackageDependencies.sql"), ORADYN_DEFAULT )
198
 
199
   OraDatabase.Parameters.Remove "PV_ID_A"
200
   OraDatabase.Parameters.Remove "PV_ID_B"
201
 
202
End Sub
203
'----------------------------------------------------------------------------------------------------------------------------------------
204
Sub GetAllBomContents ( nSbom_id, oRsTemp )
205
 
206
   OraDatabase.Parameters.Add "SBOM_ID", nSbom_id,      ORAPARM_INPUT, ORATYPE_NUMBER
207
 
208
   Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("BomPackagesAndDeps.sql"), ORADYN_DEFAULT )
209
 
210
   OraDatabase.Parameters.Remove "SBOM_ID"
211
 
212
End Sub
213
'----------------------------------------------------------------------------------------------------------------------------------------
214
Sub GetBomPackages ( nSbomA, nSbomB, oRsTemp )
215
 
216
   OraDatabase.Parameters.Add "SBOM_A", nSbomA,      ORAPARM_INPUT, ORATYPE_NUMBER
217
   OraDatabase.Parameters.Add "SBOM_B", nSbomB,      ORAPARM_INPUT, ORATYPE_NUMBER
218
 
219
   Set oRsTemp = OraDatabase.DbCreateDynaset( GetQuery ("BomPackageDiff.sql"), ORADYN_DEFAULT )
220
 
221
   OraDatabase.Parameters.Remove "SBOM_A"
222
   OraDatabase.Parameters.Remove "SBOM_B"
223
 
224
End Sub
225
'----------------------------------------------------------------------------------------------------------------------------------------
226
 
227
 
228
 
229
%>
230
<%
231
'---------------------- Run Before Page ---------------------------
232
 
233
' Get release details
234
Call GetFormDetails ( parSbomA, objRelCollectorA )
235
Call GetFormDetails ( parSbomB, objRelCollectorB )
236
 
237
multiPackagesEnabled = FALSE
238
 
239
If parSbomA <> "" AND parSbomB <> "" Then
240
 
241
   If Request("form_btn_comp") = "Get Issues" Then
242
      Call OpenInWindow ( SCRIPT_NAME &"?sbomA="& parSbomA &"&sbomB="& parSbomB )
243
   End If
244
 
245
   Call   GetBomDetails   (parSbomA, objSbomDetailsA)
246
   Call   GetBomDetails   (parSbomB, objSbomDetailsB)
247
 
248
   objSbomDetailsA("bom_full_version") = objSbomDetailsA("bom_name")&"   "&   objSbomDetailsA("bom_version") &"."& objSbomDetailsA("bom_lifecycle")
249
   objSbomDetailsB("bom_full_version") = objSbomDetailsB("bom_name")&"   "&   objSbomDetailsB("bom_version") &"."& objSbomDetailsB("bom_lifecycle")
250
 
251
   ' Check for the submission of the "multiplepackageS" checkbox that enables multiple packages to be identified and rendered on the page
252
   ' for each issue, if applicable.
253
   If Request("multipackages") = "TRUE" Then
254
      multiPackagesEnabled = TRUE
255
   Else
256
      multiPackagesEnabled = FALSE
257
   End If
258
 
259
Else
260
   objSbomDetailsA("bom_full_version") = "Software Bill of Materials (SBOM)"
261
End If
262
 
263
'------------------------------------------------------------------
264
%>
265
<html>
266
   <head>
267
      <title>Deployment Manager - SBOM Issues Report</title>
268
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
269
      <meta http-equiv="Pragma" content="no-cache">
270
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6663 dpurdie 271
      <link rel="stylesheet" href="images/release_manager_style.css?ver=<%=VixVerNum%>" type="text/css">
272
      <link href="scripts/deployment_manager.css?ver=<%=VixVerNum%>" rel="stylesheet" type="text/css">
273
      <script language="JavaScript" src="scripts/common.js?ver=<%=VixVerNum%>"></script>
274
      <script language="JavaScript" src="scripts/remote_scripting.js?ver=<%=VixVerNum%>"></script>
5355 dpurdie 275
      <script language="JavaScript" type="text/javascript">
276
         <!--
277
 
278
         function RequestSBOMCombo( paramString, rowId )
279
         {
280
            var requestURL = 'RequestSBOMCombo.asp';
281
 
282
            // Set ajax divname
283
            ajaxdivname = rowId;
284
 
285
            //Append the name to search for to the requestURL
286
            var url = requestURL + paramString;
287
 
288
            rowId.options[0] = new Option('Loading...','');
289
            rowId.selectedIndex = 0;
290
 
291
            //Create the xmlHttp object to use in the request
292
            //stateChangeHandler will fire when the state has changed, i.e. data is received back
293
            xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
294
 
295
            //Send the xmlHttp get to the specified url
296
            //This is non-blocking (asynchronous)
297
            xmlHttp_Get(xmlHttp, url);
298
         }
299
 
300
         function RequestReleaseCombos( paramString, rowIdA, rowIdB )
301
         {
302
            var requestURL = 'RequestReleaseCombo.asp';
303
            // First release combo box.
304
 
305
            // Set ajax divname
306
            ajaxdivname = rowIdA;
307
 
308
            //Append the name to search for to the requestURL
309
            var url = requestURL + paramString;
310
 
311
            rowIdA.options[0] = new Option('Loading...','');
312
            rowIdA.selectedIndex = 0;
313
 
314
            //Create the xmlHttp object to use in the request
315
            //stateChangeHandler will fire when the state has changed, i.e. data is received back
316
            xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
317
 
318
            //Send the xmlHttp get to the specified url
319
            //This is blocking (synchronous)
320
            xmlHttp_Get_Synch(xmlHttp, url);
321
 
322
 
323
            // Second release combo box.
324
 
325
            ajaxdivname = rowIdB;
326
 
327
            rowIdB.options[0] = new Option('Loading...','');
328
            rowIdB.selectedIndex = 0;
329
 
330
            //Create the xmlHttp object to use in the request
331
            //stateChangeHandler will fire when the state has changed, i.e. data is received back
332
            xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
333
 
334
            //Send the xmlHttp get to the specified url
335
            //This is blocking (synchronous)
336
            xmlHttp_Get_Synch(xmlHttp, url);
337
         }
338
 
339
         function openSbom( elementId )
340
         {
341
            var url = 'Bom_Home.asp?bom_id=';
342
            var bom_id = document.getElementById(elementId).value;
343
 
344
            window.open( url + bom_id );
345
         }
346
 
347
         function setLeftOffset( elementId )
348
         {
349
            if ( document.getElementById(elementId) )
350
            {
351
               var offset = (getWindowWidth() / 2) - (document.getElementById(elementId).clientWidth / 2);
352
               document.getElementById(elementId).style.left = offset;
353
            }
354
         }
355
 
356
         function removePrompt ( elementId )
357
         {
358
            var selectElement = document.getElementById(elementId);
359
 
360
            if ( /^\d+$/.test(selectElement.options[0].value) == false)
361
            {
362
               selectElement.options[0] = null;
363
            }
364
         }
365
 
366
         function clearSelectBox ( elementId )
367
         {
368
            var selectElement = document.getElementById(elementId);
369
 
370
            selectElement.options.length = 0;
371
         }
372
         //-->
373
      </script>
374
   </head>
375
   <body onresize="setLeftOffset('loader');">
376
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
377
<!-- HEADER ++++++++++++++++ -->
378
<!--#include file="_header.asp"-->
379
<!-- +++++++++++++++++++++++ -->
380
<!-- BODY ---->
381
      <div align="center" class="report_header">
382
 
383
      <%=objSbomDetailsA("bom_full_version")%> Issues Report
384
 
385
      </div>
386
      <form name="FormName" method="post" action="<%=SCRIPT_NAME%>">
387
         <table width="100%"  border="0" cellspacing="10" cellpadding="0">
388
            <tr>
389
               <td align="left" class="body_col" colspan="2">Select SBOM To View</td>
390
            </tr>
391
            <tr>
392
               <td align="left">
393
                  <select name="proj" id="proj" class="form_item"
394
                     onchange="RequestReleaseCombos('?proj_id='+ this.value, FormName.rtagA, FormName.rtagB);removePrompt(this.id);clearSelectBox('sbomA');clearSelectBox('sbomB');">
395
                     <option value="">-- Select Project --</option>
396
                     <%
397
                     OraDatabase.Parameters.Add "PROJ_ID",    objRelCollectorA("proj_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
398
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
399
                     OraDatabase.Parameters.Remove "PROJ_ID"
400
 
401
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
402
                        <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
403
                        <%rsQry.MoveNext
404
                     WEnd
405
 
406
                     rsQry.Close
407
                     Set rsQry = Nothing
408
                     %>
409
                  </select>
410
               </td>
411
               <td align="left" class="body_col">Select SBOM To Compare To</td>
412
            </tr>
413
            <tr>
414
               <td align="left" width="25%">
415
                  <select name="rtagA" id="rtagA" class="form_item" onchange="RequestSBOMCombo('?branch_id='+ this.value, FormName.sbomA);removePrompt(this.id);">
416
      <!--           <option value="">-- Select Branch --</option>           -->
417
                     <%
418
                     OraDatabase.Parameters.Add "PROJ_ID",    objRelCollectorA("proj_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
419
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorA("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
420
 
421
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
422
 
423
                     OraDatabase.Parameters.Remove "PROJ_ID"
424
                     OraDatabase.Parameters.Remove "BRANCH_ID"
425
 
426
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
427
                        <option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option>
428
                        <%rsQry.MoveNext
429
                     WEnd
430
 
431
                     rsQry.Close
432
                     Set rsQry = Nothing
433
                     %>
434
                  </select>
435
               </td>
436
               <td align="left">
437
                  <select name="rtagB" id="rtagB" class="form_item" onchange="RequestSBOMCombo('?branch_id='+ this.value, FormName.sbomB);removePrompt(this.id);">
438
      <!--           <option value="">-- Select Branch --</option>           -->
439
                     <%
440
                     OraDatabase.Parameters.Add "PROJ_ID",    objRelCollectorB("proj_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
441
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorB("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
442
 
443
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
444
 
445
                     OraDatabase.Parameters.Remove "PROJ_ID"
446
                     OraDatabase.Parameters.Remove "BRANCH_ID"
447
 
448
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
449
                        <option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option>
450
                        <%rsQry.MoveNext
451
                     WEnd
452
 
453
                     rsQry.Close
454
                     Set rsQry = Nothing
455
                     %>
456
                  </select>
457
               </td>
458
            </tr>
459
            <tr>
460
               <td align="left" width="25%">
461
                  <select name="sbomA" id="sbomA" class="form_item">
462
                     <%
463
                     OraDatabase.Parameters.Add "BOM_ID",    objRelCollectorA("bom_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
464
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorA("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
465
 
466
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))
467
 
468
                     OraDatabase.Parameters.Remove "BOM_ID"
469
                     OraDatabase.Parameters.Remove "BRANCH_ID"
470
 
471
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
472
                        <option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option>
473
                        <%rsQry.MoveNext
474
                     WEnd
475
 
476
                     rsQry.Close
477
                     Set rsQry = Nothing
478
                     %>
479
                  </select>
480
               </td>
481
               <td align="left">
482
                  <select name="sbomB" id="sbomB" class="form_item">
483
                     <%
484
                     OraDatabase.Parameters.Add "BOM_ID",    objRelCollectorB("bom_id"),   ORAPARM_INPUT,  ORATYPE_NUMBER
485
                     OraDatabase.Parameters.Add "BRANCH_ID",    objRelCollectorB("branch_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
486
 
487
                     Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))
488
 
489
                     OraDatabase.Parameters.Remove "BOM_ID"
490
                     OraDatabase.Parameters.Remove "BRANCH_ID"
491
 
492
                     While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
493
                        <option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option>
494
                        <%rsQry.MoveNext
495
                     WEnd
496
 
497
                     rsQry.Close
498
                     Set rsQry = Nothing
499
                     %>
500
                  </select>
501
               </td>
502
            </tr>
503
            <%If parSbomA <> "" OR parSbomB <> "" Then%>
504
               <tr>
505
                  <td align="left" width="25%">
506
                     <%If parSbomA <> "" Then%>
507
                     <a href="javascript:;" onclick="openSbom('sbomA')" class="body_txt_drk">Go To SBOM A &raquo;</a>
508
                     <%End If%>
509
                  </td>
510
                  <td align="left">
511
                     <%If parSbomB <> "" Then%>
512
                     <a href="javascript:;" onclick="openSbom('sbomB')" class="body_txt_drk">Go To SBOM B &raquo;</a>
513
                     <%End If%>
514
                  </td>
515
               </tr>
516
            <%End If%>
517
            <tr>
518
               <td colspan="2">
519
                  <input class="form_btn_comp" name="form_btn_comp" type="submit" style="margin-right: 5px;" value="Get Issues" name="btn"/>
520
               </td>
521
            </tr>
522
         </table>
523
      </form>
524
 
525
      <!-- FORM holding a checkbox that allows user to modify the package vs issue renderering from one-per-issue to many-per-issue -->
526
      <form name="FormNameMultiplePackages" method="post" action='<%=SCRIPT_NAME & "?sbomA=" & parSbomA & "&sbomB=" & parSbomB%>'>
527
         <%If parSbomA <> "" OR parSbomB <> "" Then%>
528
            <table width="50%"  border="0" cellspacing="10" cellpadding="0">
529
               <tr>
530
                  <%If multiPackagesEnabled Then%>
531
                     <td width="1%" ><input name="multipackages" value="TRUE" type="checkbox" onclick="submit(); return false;" checked></td>
532
                  <%Else%>
533
                     <td width="1%" ><input name="multipackages" value="TRUE" type="checkbox" onclick="submit(); return false;"></td>
534
                  <%End If%>
535
                  <td align="left" class="body_col">Show multiple package/issue associations.</td>
536
               </tr>
537
            </table>
538
         <%End If%>
539
      </form>
540
 
541
      <%
542
      If parSbomA = "" OR parSbomB = "" Then%>
543
         <div align="center" class="report_msg">Select both SBOMs to compare.</div>
544
      <%ElseIf parSbomA = parSbomB Then%>
545
         <div align="center" class="report_msg">Select two different SBOMs to compare.</div>
546
      <%Else%>
547
         <img src="images/ajax-loader.gif" width="100px" height="100px" id="loader" name="loader" style="position: absolute; z-index: 100; display: block; top: 110px;" onload="setLeftOffset(this.id);">
548
         <div align="center" class="report_msg" id="report_heading">Issues found in BOM <%=objSbomDetailsA("bom_version") &"."& objSbomDetailsA("bom_lifecycle")%> but not in SBOM <%=objSbomDetailsB("bom_version") &"."& objSbomDetailsB("bom_lifecycle")%></div>
549
         <br>
550
         <%
551
         Dim issueCounter
552
 
553
         issueCounter = 0
554
 
555
         Call GetBomPackages( parSbomA, parSbomB, rsBomPackages )
556
 
557
         If rsBomPackages.RecordCount > 0 Then
558
 
559
            While (NOT rsBomPackages.BOF) AND (NOT rsBomPackages.EOF)
560
 
561
               pvIdList = rsBomPackages("pv_id")
562
 
563
               Call GetPackageDependencies( rsBomPackages("pv_id"), rsBomPackages("prev_pv_id"), rsPkgDeps )
564
 
565
               While (NOT rsPkgDeps.BOF) AND (NOT rsPkgDeps.EOF)
566
 
567
                  pvIdList = pvIdList & "," & rsPkgDeps("dpv_id")
568
 
569
                  rsPkgDeps.MoveNext
570
               WEnd
571
 
572
               ' Acquire all of the issues for the package now so we can make a decision on whether to display the field set + legend + issue content
573
               ' for this BOM package. The "get issues" functions will return -1 if no records are found, and 0 if no error and records present.
574
               retValCQIssues = GetIssues( pvIdList, cqIssues )
575
 
576
               retValJIRAIssues = Get_JIRA_Issues( pvIdList, jiraIssues )
577
 
578
               If retValCQIssues = 0 OR retValJIRAIssues = 0 Then%>
579
                  <fieldset>
580
                     <legend style="padding: 0px 4px 3px 4px;" >
581
                        <a href="javascript:;" onclick="MM_openBrWindow('../release_manager/_wform_versions_history_release_notes.asp?OLDpv_id=<%=rsBomPackages("pv_id")%>&pkg_id=<%=rsBomPackages("pkg_id")%>&FLpkg_version=*<%=rsBomPackages("v_ext")%>&FLuser_name=*&rfile=<%=SCRIPT_NAME%>&pv_id=<%=rsBomPackages("pv_id")%>&#ANC_<%=rsBomPackages("pv_id")%>','History','resizable=yes,width=850,height='+ ( screen.height - 100 )  );" class="report_sub_header"><%=rsBomPackages("pkg_name")%>&nbsp;<%=rsBomPackages("pkg_version")%></a>
582
                     </legend>
583
 
584
                     <%If retValCQIssues = 0 Then
585
 
586
                        Dim firstPackageRow
587
 
588
                        issueCounter = issueCounter + 1
589
                        %>
590
                        <table width="100%" border="0" cellspacing="2" cellpadding="3">
591
                           <tr>
592
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="70px" class="form_field">Issue Id</td>
593
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="65%" class="form_field">CLEARQUEST Issue Title</td>
594
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="80px" class="form_field">Status</td>
595
                              <td background="images/bg_form_lightbluedark.gif" nowrap class="form_field">Package(s)</td>
596
                           </tr>
597
 
598
                           <%
599
                           While (NOT cqIssues.BOF) AND (NOT cqIssues.EOF)
600
 
601
                              Call GetPackageDetailsForIssue( cqIssues("iss_id"), pvIdList, objIssueDetails )
602
 
603
                              firstPackageRow = TRUE
604
                              Do While (NOT objIssueDetails.BOF) AND (NOT objIssueDetails.EOF)%>
605
                                 <tr>
606
                                    <%If firstPackageRow Then%>
607
                                       <%firstPackageRow = FALSE%>
608
 
609
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=cqIssues("iss_num")%></td>
610
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=cqIssues("summary")%></td>
611
                                       <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=cqIssues("status")%></td>
612
                                    <%Else%>
613
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
614
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
615
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
616
                                    <%End If%>
617
 
618
                                    <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item">
619
                                       <a href="javascript:;" onclick="MM_openBrWindow('../release_manager/_wform_versions_history_release_notes.asp?OLDpv_id=<%=objIssueDetails("pv_id")%>&pkg_id=<%=objIssueDetails("pkg_id")%>&FLpkg_version=*<%=objIssueDetails("v_ext")%>&FLuser_name=*&rfile=<%=SCRIPT_NAME%>&pv_id=<%=objIssueDetails("pv_id")%>&#ANC_<%=objIssueDetails("pv_id")%>','History','resizable=yes,width=850,height='+ ( screen.height - 100 )  );" class="report_link">
620
                                          <%Response.Write(objIssueDetails("pkg_name") &" "& objIssueDetails("pkg_version"))%>
621
                                       </a>
622
                                    </td>
623
                                 </tr>
624
                                 <%
625
                                 objIssueDetails.MoveNext
626
                                 If multiPackagesEnabled = FALSE Then Exit Do
627
                              Loop
628
                              cqIssues.MoveNext
629
                           WEnd
630
                           %>
631
                        </table>
632
                     <%End If
633
 
634
                     If retValJIRAIssues = 0 Then
635
 
636
                        issueCounter = issueCounter + 1
637
                        %>
638
                        <table width="100%" border="0" cellspacing="2" cellpadding="3">
639
                           <tr>
640
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="70px" class="form_field">Issue Id</td>
641
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="55%" class="form_field">JIRA Issue Summary</td>
642
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="10%" class="form_field">Issue&nbsp;Type&nbsp;</td>
643
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="80px" class="form_field">Status</td>
644
                              <td background="images/bg_form_lightbluedark.gif" nowrap class="form_field">Package(s)</td>
645
                           </tr>
646
 
647
                           <%
648
                           Dim key, el
649
                           For Each key In jiraIssues
650
                               Set el = jiraIssues.item(key)
651
 
652
                              Call GetPackageDetailsForJIRAIssue( key, pvIdList, objIssueDetails )
653
 
654
                              firstPackageRow = TRUE
655
                              Do While (NOT objIssueDetails.BOF) AND (NOT objIssueDetails.EOF)%>
656
                                 <tr>
657
                                    <%If firstPackageRow Then%>
658
                                       <%firstPackageRow = FALSE%>
659
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=key%></td>
660
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=el.item("summary")%></td>
661
                                       <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=el.item("issuetype")%></td>
662
                                       <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item"><%=el.item("status")%></td>
663
                                    <%Else%>
664
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
665
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
666
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
667
                                       <td background="images/bg_form_lightgray.gif" valign="top" class="form_item"></td>
668
                                    <%End If%>
669
 
670
                                    <td nowrap background="images/bg_form_lightgray.gif" valign="top" class="form_item">
671
                                       <a href="javascript:;" onclick="MM_openBrWindow('../release_manager/_wform_versions_history_release_notes.asp?OLDpv_id=<%=objIssueDetails("pv_id")%>&pkg_id=<%=objIssueDetails("pkg_id")%>&FLpkg_version=*<%=objIssueDetails("v_ext")%>&FLuser_name=*&rfile=<%=SCRIPT_NAME%>&pv_id=<%=objIssueDetails("pv_id")%>&#ANC_<%=objIssueDetails("pv_id")%>','History','resizable=yes,width=850,height='+ ( screen.height - 100 )  );" class="report_link">
672
                                          <%Response.Write(objIssueDetails("pkg_name") &" "& objIssueDetails("pkg_version"))%>
673
                                       </a>
674
                                    </td>
675
                                 </tr>
676
                                 <%
677
                                 objIssueDetails.MoveNext
678
                                 If multiPackagesEnabled = FALSE Then Exit Do
679
                              Loop
680
                           Next
681
                           %>
682
                        </table>
683
                     <%End If%>
684
                  </fieldset>
685
                  <br>
686
               <%End If
687
               rsBomPackages.MoveNext
688
            WEnd
689
         End If
690
 
691
         If issueCounter = 0 Then
692
         %>
693
            <div align="center" class="report_sub_header">No issues found</div>
694
         <%
695
         End If
696
         %>
697
         <script>
698
         <!--
699
            document.getElementById("loader").style.display = "none";
700
         //-->
701
         </script>
702
         <%
703
 
704
         ' Clean up objects before quitting
705
         On Error Resume Next
706
         rsBomPackages.Close
707
         rsPkgDeps.Close
708
         cqIssues.Close
709
         jiraIssues.Close
710
 
711
         Set objRelCollectorA = Nothing
712
         Set objRelCollectorB = Nothing
713
         Set objSbomDetailsA = Nothing
714
         Set objSbomDetailsB = Nothing
715
 
716
         Set rsBomPackages = Nothing
717
         Set rsPkgDeps = Nothing
718
         Set cqIssues = Nothing
719
         Set jiraIssues = Nothing
720
 
721
      End If%>
722
<!-- FOOTER -->
723
<!--#include file="_footer.asp"-->
724
   </body>
725
</html>