Subversion Repositories DevTools

Rev

Rev 6191 | Rev 6197 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5357 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|
5
'|  diff.asp
6
'|
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
<%
15
'To enable the script timeout to 20 mins
16
Server.ScriptTimeout=1200
17
%>
18
<!--#include file="common/conf.asp"-->
19
<!--#include file="common/globals.asp"-->
20
<!--#include file="common/formating.asp"-->
21
<!--#include file="common/qstr.asp"-->
22
<!--#include file="common/common_subs.asp"-->
23
<!--#include file="common/common_dbedit.asp"-->
24
<!--#include file="common/_form_window_common.asp"-->
25
<!--#include file="common/_rtree_common.asp"-->
26
<%
27
'------------ ACCESS CONTROL ------------------
28
%>
29
<!--#include file="_access_control_login.asp"-->
30
<!--#include file="_access_control_general.asp"-->
31
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT>
6191 dpurdie 32
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/base64encode.vbs"></SCRIPT>
33
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/jiraIssues.vbs"></SCRIPT>
5357 dpurdie 34
<%
35
'------------ Variable Definition -------------
36
Dim rsQry
37
Dim objRelCollectorA
38
Dim objRelCollectorB
39
Dim parRtagA
40
Dim parRtagB
41
Dim dDiffFilter
42
Dim colorA, colorB, ChangeTypeIcon
43
Dim btnMerge, btnRemove
44
Dim rowId
45
Dim email
46
Dim genReport
47
Dim FSO
48
Dim NewTextFile
49
Dim pkgA, pkgB, pkgname, delimiter, rsQryA, rsQryB, rsQryCommentsA, rsQryCommentsB, sqlstrA, counterA, sqlstrB, counterB
50
Dim SSsql, retVal, rsCQ, DEVIiss
51
Dim a, b, c, d, pkgversion, errormsg, ChangeASource, ChangeAUpdate, ChangeBSource, ChangeBUpdate, pvCollectionA, pvCollectionB
52
Dim source_change, scFlag
53
Dim changeType
6189 dpurdie 54
Dim pkgSeen
5357 dpurdie 55
Dim isaSdk                  ' Target is an SDK based package
56
Dim isMergable              ' Target package can be modified
57
 
58
'------------ Constants Declaration -----------
6196 dpurdie 59
Const LIMG_PENDING = "<img src='data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Merge Pending'>"
60
Const LIMG_UNCHANGED = "<img src='images/i_unchanged.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Unchnaged'>"
5357 dpurdie 61
Const LIMG_UPDATED = "<img src='images/i_updated.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Updated'>"
6196 dpurdie 62
Const LIMG_OUTDATED = "<img src='images/i_outdated.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Possibly Outdated'>"
5357 dpurdie 63
Const LIMG_RIPPLED = "<img src='images/i_rippled.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Rippled'>"
64
Const LIMG_ADDED = "<img src='images/i_added.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Added'>"
65
Const LIMG_REMOVED = "<img src='images/i_removed.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Removed'>"
66
Const LIMG_FILTER_ON = "<img src='images/i_data_table.gif' border='0' align='absmiddle' hspace='0' title='Filter in use.'>"
67
Const LIMG_FILTER_OFF = "<img src='images/i_data_table_off.gif' border='0' align='absmiddle' hspace='0' title='Filter not in use.'>"
68
Const LIMG_DROP_DOWN_ARROW = "<img src='images/i_drop_down_arrow.gif' width='5' height='15' hspace='1' border='0' align='absmiddle'>"
69
Const LCOLOR_NOT_CHANGED = "#F5F5F5"
70
Const LCOLOR_CHANGED = "#d2f7c9"
6196 dpurdie 71
Const LCOLOR_OUTDATED = "#ffd292"
5357 dpurdie 72
Const LCOLOR_RIPPLED = "#D8F8F8"
73
Const LCOLOR_BLANK = "#FFFFFF"
74
Const LIMG_MERGE = "<img src='images/bt_move_all_right.gif' title='Click to merge.' border='0'>"
75
Const LIMG_MERGE_WARN = "<img src='images/bt_move_warn_right.gif' title='Right hand side version is newer.' border='0'>"
76
Const LIMG_REMOVE = "<img src='images/bt_remove.gif' title='Remove this version from release.' border='0'>"
77
Const LIMG_UNDO = "<img src='images/bt_undo.gif' title='Undo merge/remove.' border='0'>"
78
Const LIMG_SDK = "<img src='images/i_sdkpkg.png' width='18' height='18' border='0' title='Package is imported from an SDK and cannot be modified'>"
79
'------------ Variable Init -------------------
80
parRtagA = Request("rtagA")
81
parRtagB = Request("rtagB")
82
Set objRelCollectorA = CreateObject("Scripting.Dictionary")
83
Set objRelCollectorB = CreateObject("Scripting.Dictionary")
84
Set dDiffFilter = CreateObject("Scripting.Dictionary")
6189 dpurdie 85
Set pkgSeen = CreateObject("Scripting.Dictionary")
5357 dpurdie 86
'----------------------------------------------
87
If Request("btn") = "Mail Me Report" Then
88
    email = true
89
    genReport = true
90
End If
91
If Request("btn") = "Show Me Report" Then
92
    genReport = true
93
End If
94
'--------------------------------------------------------------------------------------------------------------------------
95
Sub GetDiffFilterValues ( outDepFilter )
96
    Dim FilterVal, aFilterValues
97
 
98
    If Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) <> "" Then
99
        aFilterValues = Split( Replace( Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER), " ", ""), ",")
100
 
101
        For Each FilterVal In aFilterValues
102
            outDepFilter.Item (CStr( FilterVal )) = ""
103
        Next
104
 
105
    End If
106
 
107
End Sub
108
'--------------------------------------------------------------------------------------------------------------------------
109
Sub Javascript()
110
    NewTextFile.WriteLine("<script language=""JavaScript"" type=""text/javascript"">")
111
    NewTextFile.WriteLine("function MM_findObj(n, d) { //v4.0")
112
    NewTextFile.WriteLine("  var p,i,x;")
113
    NewTextFile.WriteLine("  if(!d) d=document; ")
114
    NewTextFile.WriteLine("  if((p=n.indexOf(""?""))>0&&parent.frames.length) {")
6191 dpurdie 115
    NewTextFile.WriteLine("    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);")
5357 dpurdie 116
    NewTextFile.WriteLine("  }")
117
    NewTextFile.WriteLine("  if(!(x=d[n])&&d.all) x=d.all[n]; ")
118
    NewTextFile.WriteLine("  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];")
119
    NewTextFile.WriteLine("  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);")
120
    NewTextFile.WriteLine("  if(!x && document.getElementById) x=document.getElementById(n); ")
121
    NewTextFile.WriteLine("  return x;")
122
    NewTextFile.WriteLine("}")
123
 
124
    NewTextFile.WriteLine("function toggleSPAN(x) {")
125
    NewTextFile.WriteLine("    var el = MM_findObj('spanPkgInfo' + x);")
126
    NewTextFile.WriteLine("    if (el.style.display != ""block"") {")
127
    NewTextFile.WriteLine("        el.style.display = ""block"";")
128
    NewTextFile.WriteLine("    } else {")
129
    NewTextFile.WriteLine("        el.style.display = ""none"";")
130
    NewTextFile.WriteLine("    }")
131
    NewTextFile.WriteLine("}")
132
 
133
    NewTextFile.WriteLine("function MM_getElementsByClassName(cn) {")
134
    NewTextFile.WriteLine("    var allT=document.getElementsByTagName('*'), allCN=[], i=0, a;")
135
    NewTextFile.WriteLine("    while(a=allT[i++]) {")
136
    NewTextFile.WriteLine("        a.className==cn ? allCN[allCN.length]=a : null;")
137
    NewTextFile.WriteLine("    }")
138
    NewTextFile.WriteLine("    return allCN")
139
    NewTextFile.WriteLine("}")
140
 
141
    NewTextFile.WriteLine("    function MM_toggleAll(cn, show){")
142
    NewTextFile.WriteLine("        var allEl = MM_getElementsByClassName(cn);")
143
    NewTextFile.WriteLine("        for (var ii=0; ii<allEl.length;ii++){")
144
    NewTextFile.WriteLine("            var el = allEl[ii];")
145
    NewTextFile.WriteLine("            if(show) {")
146
    NewTextFile.WriteLine("                el.style.display = ""block"";")
147
    NewTextFile.WriteLine("            } else {")
148
    NewTextFile.WriteLine("                el.style.display = ""none"";")
149
    NewTextFile.WriteLine("            }")
150
    NewTextFile.WriteLine("        }")
151
    NewTextFile.WriteLine("    }")
152
 
153
    NewTextFile.WriteLine("</script>")
154
End Sub
155
'--------------------------------------------------------------------------------------------------------------------------
156
Sub GetFixedIssues(pv_id)
157
    '
158
    ' Clearcase issues
159
    '
160
    Set sqlstrA = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE pv_id="& pv_id &"  AND iss_state = "& enumISSUES_STATE_FIXED, cint(0))
161
 
162
    If sqlstrA.RecordCount <> 0 Then
163
        NewTextFile.WriteLine()
164
        NewTextFile.WriteLine("<blockquote><blockquote>Fixed ClearQuest Issues:</blockquote></blockquote>")
165
        NewTextFile.WriteLine("<blockquote><blockquote><blockquote><table class='fixed_issues' width='100%'>")
166
        NewTextFile.WriteLine("<tr>")
167
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Id</td>")
168
        NewTextFile.WriteLine("<td width='55%' class='form_field'>Summary</td>")
169
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Type</td>")
170
        NewTextFile.WriteLine("<td width='15%' class='form_field'>Priority</td>")
171
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Status</td>")
172
        NewTextFile.WriteLine("</tr>")
173
 
174
        For counterA=1 to sqlstrA.RecordCount
175
            DEVIiss = "-1"
176
 
177
            If CInt(sqlstrA("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
178
                DEVIiss = DEVIiss &","& sqlstrA("iss_id")
179
            End If
180
 
181
            SSsql = ReadFile( rootPath & "queries\cq_issues.sql" )
182
            SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
183
            SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)
184
            retVal = Get_CQ_Issues ( SSsql, rsCQ )
185
 
186
            NewTextFile.WriteLine("<tr>")
187
            NewTextFile.WriteLine("<td nowrap class='form_item'>"&rsCQ("iss_num")&"</td>")
188
 
189
            NewTextFile.WriteLine("<td class='form_item'>"&NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )&"</td>")
190
            NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("issue_type")&"</td>")
191
            NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("priority")&"</td>")
192
            NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("Status")&"</td>")
193
            NewTextFile.WriteLine("</tr>")
194
 
195
            sqlstrA.MoveNext
196
        Next
197
        sqlstrA.Close()
6191 dpurdie 198
        NewTextFile.WriteLine( "                        </table></blockquote></blockquote></blockquote>")
5357 dpurdie 199
    End If
6191 dpurdie 200
 
5357 dpurdie 201
    ' Must also handle Jira Issues
202
    On Error Resume Next
203
 
204
    Dim issueInfo, el, key
205
    Set issueInfo = CreateObject( "Scripting.Dictionary" )
206
    Call getJiraIssueDetails(pv_id, issueInfo, 1)
207
    If issueInfo.Count > 0 Then
208
        ' Table Header
209
        NewTextFile.WriteLine()
210
        NewTextFile.WriteLine("<blockquote><blockquote>Jira Issues:</blockquote></blockquote>")
211
        NewTextFile.WriteLine("<blockquote><blockquote><blockquote><table class='fixed_issues' width='100%'>")
212
        NewTextFile.WriteLine("<tr>")
213
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Issue Id</td>")
214
        NewTextFile.WriteLine("<td width='58%' class='form_field'>Summary</td>")
215
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Issue Type</td>")
216
        NewTextFile.WriteLine("<td width='10%' class='form_field'>Priority</td>")
217
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Status</td>")
218
        NewTextFile.WriteLine("<td width='8%' class='form_field'>Resolution</td>")
219
        NewTextFile.WriteLine("</tr>")
220
 
221
        ' Table Body
222
        For Each key In issueInfo
223
            Set el = issueInfo.item(key)
224
 
225
            NewTextFile.WriteLine("<tr>")
226
            NewTextFile.WriteLine("<td nowrap class='form_item'>"&key&"</td>")
227
            NewTextFile.WriteLine("<td class='form_item'>"&NewLine_To_BR ( To_HTML ( el.item("summary") ) )&"</td>")
228
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("issuetype")&"</td>")
229
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("priority")&"</td>")
230
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("status")&"</td>")
231
            NewTextFile.WriteLine("<td class='form_item'>"&el.item("resolution")&"</td>")
232
            NewTextFile.WriteLine("</tr>")
233
        Next
6191 dpurdie 234
        NewTextFile.WriteLine( "                        </table></blockquote></blockquote></blockquote>")
5357 dpurdie 235
    Set issueInfo = nothing
236
    End If
237
End Sub
238
'--------------------------------------------------------------------------------------------------------------------------
239
Sub LastPvIdA(a)
240
 
241
    Dim qryA
242
    Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a, cint(0))
243
 
244
    'If a <> qryA("last_pv_id") Then
245
        a = qryA("last_pv_id")
246
    'Else
247
    '    errormsg = true
248
    'End If
249
 
250
    If pvCollectionA.Exists(CStr(a)) Then
251
        errormsg = true
252
        Exit Sub
253
    End If
254
 
255
    qryA.Close()
256
End Sub
257
'--------------------------------------------------------------------------------------------------------------------------
258
Sub LastPvIdB(b)
259
    Dim qryB
260
    Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b, cint(0))
261
 
262
    'If b <> qryB("last_pv_id") Then
263
        b = qryB("last_pv_id")
264
    'Else
265
    '    errormsg = true
266
    'End If
267
 
268
    If pvCollectionB.Exists(CStr(b)) Then
269
        errormsg = true
270
        Exit Sub
271
    End If
272
 
273
    qryB.Close()
274
End Sub
275
'--------------------------------------------------------------------------------------------------------------------------
276
Sub pkg_Version(pv)
277
    Dim qry
278
    Set qry = OraDatabase.DbCreateDynaset("SELECT PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&pv, cint(0))
279
    pkgversion = qry("pkg_version")
280
    qry.Close()
281
End Sub
282
'--------------------------------------------------------------------------------------------------------------------------
283
Sub LastPvIdAa(a)
284
    Dim qryA
285
    Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a, cint(0))
286
    c = qryA("last_pv_id")
287
    qryA.Close()
288
End Sub
289
'--------------------------------------------------------------------------------------------------------------------------
290
Sub LastPvIdBb(b)
291
    Dim qryB
292
    Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b, cint(0))
293
    d = qryB("last_pv_id")
294
    qryB.Close()
295
End Sub
296
'--------------------------------------------------------------------------------------------------------------------------
297
Sub Comments(Pv_Id)
298
    Dim comments
299
    Set comments = OraDatabase.DbCreateDynaset("SELECT COMMENTS, PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&Pv_id, cint(0))
300
 
301
    scFlag = false
302
    If comments("comments") <> "Rippled Build." Then
303
        NewTextFile.WriteLine("<blockquote><blockquote><font color="&chr(34)&"blue"&chr(34)&">Version: "& comments("pkg_version")&"</font></blockquote></blockquote>")
304
        If comments("comments") <> "" Then
305
            NewTextFile.WriteLine("<blockquote><blockquote>Comments: </blockquote></blockquote>")
306
            NewTextFile.WriteLine("<blockquote><blockquote><blockquote>"& TextToHTML(comments("comments")) &"</blockquote></blockquote></blockquote>")
307
            source_change = true
308
            scFlag = true
309
        End If
310
    End If
311
 
312
End Sub
313
'--------------------------------------------------------------------------------------------------------------------------
314
Sub Release(pvId)
315
    Dim release
316
    Set release = OraDatabase.DbCreateDynaset("SELECT INSERT_STAMP FROM RELEASE_CONTENT WHERE PV_ID="&pvId, cint(0))
317
 
318
    If release("insert_stamp") <> "" Then
319
        NewTextFile.Write(release("insert_stamp"))
320
    Else
321
        NewTextFile.Write("Version Not Used.")
322
    End If
323
 
324
End Sub
325
'--------------------------------------------------------------------------------------------------------------------------
326
Sub Header()
327
    NewTextFile.WriteLine("<html>")
328
    NewTextFile.WriteLine("<head>")
329
End Sub
330
'--------------------------------------------------------------------------------------------------------------------------
331
Sub Footer()
332
    NewTextFile.WriteLine("</body>")
333
    NewTextFile.WriteLine("</html>")
334
End Sub
335
'--------------------------------------------------------------------------------------------------------------------------
336
Sub Styles()
337
  NewTextFile.WriteLine("<style type="&chr(34)&"text/css"&chr(34)&">")
338
  NewTextFile.WriteLine("body { font-family:Verdana,Arial,Helvetica,sans-serif; }")
339
  NewTextFile.WriteLine("table { border-collapse:collapse; }")
340
  NewTextFile.WriteLine("table.fixed_issues td { border-width:1; border-style:solid; border-color:black; padding:3 5 3 5; }")
341
  NewTextFile.WriteLine(".fixed_issues { border-width:1; border-style:solid; border-color:black; }")
342
  NewTextFile.WriteLine(".page_title { color:red; font-size:110%; text-align:center; }")
343
  NewTextFile.WriteLine(".highlight_text { color:blue; }")
344
  NewTextFile.WriteLine(".form_field { background-color:#EAE5D7; font:bold 70% Tahoma,sans-serif; }")
345
  NewTextFile.WriteLine(".form_item { background-color:#EAE5D7; color:red; font:bold 70% Tahoma,sans-serif; vertical-align:top; }")
346
 
347
  NewTextFile.WriteLine(".changesa { background-color:red; }")
348
  NewTextFile.WriteLine(".changesb { background-color:#FF9933; }")
349
  NewTextFile.WriteLine(".changesnone { color:#999999; }")
350
 
351
  NewTextFile.WriteLine(".texta { color:red; }")
352
  NewTextFile.WriteLine(".textb { color:#FF9933; }")
353
  NewTextFile.WriteLine(".textnone { color:#999999; }")
354
 
355
  NewTextFile.WriteLine("</style>")
356
End Sub
357
'--------------------------------------------------------------------------------------------------------------------------
358
Function GetIsDiffFilterInUseIcon()
359
    GetIsDiffFilterInUseIcon = LIMG_FILTER_OFF & LIMG_DROP_DOWN_ARROW
360
 
361
    If dDiffFilter.Count > 0 Then
362
        GetIsDiffFilterInUseIcon = LIMG_FILTER_ON & LIMG_DROP_DOWN_ARROW
363
    End If
364
 
365
End Function
366
'--------------------------------------------------------------------------------------------------------------------------
367
Function GetIsDiffFilterChecked( nFilterId )
368
 
369
    If dDiffFilter.Exists ( CStr(nFilterId)  ) Then
370
        GetIsDiffFilterChecked = "checked"
371
    End If
372
 
373
End Function
374
'---------------------------------------------------------------------------------------------------------------------------
375
Function  Get_CQ_Issues ( SSsql, OOrsCQ )
376
 
377
    On Error Resume Next
378
    Set OOrsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))
379
    Get_CQ_Issues = Err.Number
380
 
381
End Function
382
'--------------------------------------------------------------------------------------------------------------------------
383
Public Function TextToHTML ( sString )
384
    Dim mString
385
 
386
    If (sString = "") OR IsNull(sString) Then Exit Function
387
 
388
    mString = Server.HTMLEncode( sString )
389
    mString = Replace(mString, VBNewLine, "<br>")
390
 
391
    TextToHTML = mString
392
End Function
393
'--------------------------------------------------------------------------------------------------------------------------
394
 
395
Sub GetFormDetails ( nSourceRtagId, ByRef outobjDetails )
396
    Dim rsQry, query
397
 
398
    ' Exit if nSourceRtagId is empty
399
    If nSourceRtagId = "" Then Exit Sub
400
 
401
    OraDatabase.Parameters.Add "SOURCE_RTAG_ID",     nSourceRtagId,        ORAPARM_INPUT, ORATYPE_NUMBER
402
 
403
    query = _
404
    " SELECT pr.PROJ_NAME ||' &gt; '|| rt.RTAG_NAME    AS LOCATION, "&_
405
    "          rt.OFFICIAL, pr.PROJ_ID, rt.RTAG_ID"&_
406
    "  FROM RELEASE_TAGS rt,"&_
407
    "            PROJECTS pr"&_
408
    " WHERE rt.PROJ_ID = pr.PROJ_ID"&_
409
    "    AND rt.RTAG_ID = :SOURCE_RTAG_ID"
410
 
411
    Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
412
 
413
    OraDatabase.Parameters.Remove "SOURCE_RTAG_ID"
414
 
415
    If rsQry.RecordCount > 0 Then
416
        outobjDetails.Item ("location") = rsQry("location")
417
        outobjDetails.Item ("official") = rsQry("official")
418
        outobjDetails.Item ("proj_id") = rsQry("proj_id")
419
        outobjDetails.Item ("rtag_id") = rsQry("rtag_id")
420
    Else
421
        Err.Raise 8, "Sub GetFormDetails in "& ScriptName, "Empty record set returned. nSourceRtagId="& nSourceRtagId
422
    End If
423
 
424
    rsQry.Close
425
    Set rsQry = Nothing
426
End Sub
427
'--------------------------------------------------------------------------------------------------------------------------
428
Sub GetDiffStateIcon( nDiffState, outIcon )
429
 
430
    Select Case nDiffState
431
        Case "U"
432
            outIcon  = LIMG_UPDATED
433
        Case "UW"
6196 dpurdie 434
            outIcon  = LIMG_OUTDATED
5357 dpurdie 435
        Case "A"
436
            outIcon = LIMG_ADDED
437
        Case "R"
438
            outIcon = LIMG_REMOVED
439
        Case "UR"
440
            outIcon = LIMG_RIPPLED
6196 dpurdie 441
        Case "B"
442
            outIcon = LIMG_UNCHANGED
5357 dpurdie 443
        Case Else
444
            outIcon = ""
445
    End Select
446
 
447
End Sub
448
'--------------------------------------------------------------------------------------------------------------------------
449
Function Get_Record_Count ( SSsql )
450
    Dim rsTemp
451
    Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT COUNT(*) as record_count FROM "& SSsql , cint(0))
452
 
453
    If (NOT rsTemp.BOF) AND (NOT rsTemp.EOF) Then
454
        Get_Record_Count = rsTemp("record_count")
455
    Else
456
        Get_Record_Count = 0
457
    End If
458
    rsTemp.Close
459
    Set rsTemp = nothing
460
End Function
461
'--------------------------------------------------------------------------------------------------------------------------
462
Sub MergePackages ()
463
    Dim aFullList, aAddPkgList, aRemovePkgList, dAddPkgList, dRemovePkgList, PvId
464
    Dim OraParameter
465
    Dim rc
466
 
467
    Set dAddPkgList = CreateObject("Scripting.Dictionary")
468
    Set dRemovePkgList = CreateObject("Scripting.Dictionary")
469
 
470
    '--- Get Add Packages ---
471
    ' Get full list of "addpkg" parameter
472
    aFullList = Split ( Replace( Request("addpkg"), " ", "" ), "," )
473
 
474
    ' Clean empty parameters
475
    For Each PvId In aFullList
476
        If PvId <> "" Then
477
            dAddPkgList.Add CStr( PvId ), Empty
478
        End If
479
    Next
480
 
481
    aFullList = NULL
482
    aAddPkgList = dAddPkgList.Keys
483
 
484
    '--- Get Remove Packages ---
485
    ' Get full list of "removepkg" parameter
486
    aFullList = Split ( Replace( Request("removepkg"), " ", "" ), "," )
487
 
488
    ' Clean empty parameters
489
    For Each PvId In aFullList
490
        If PvId <> "" Then
491
            dRemovePkgList.Add CStr( PvId ), Empty
492
        End If
493
    Next
494
 
495
    aFullList = NULL
496
    aRemovePkgList = dRemovePkgList.Keys
497
 
498
    '-- Add package List to release --
499
    OraDatabase.Parameters.Add "PV_ID",     NULL, ORAPARM_INPUT, ORATYPE_NUMBER
500
    OraDatabase.Parameters.Add "VIEW_ID",  NULL, ORAPARM_BOTH, ORATYPE_NUMBER
501
    OraDatabase.Parameters.Add "RTAG_A",    Request("rtagA"), ORAPARM_INPUT, ORATYPE_NUMBER
502
    OraDatabase.Parameters.Add "RTAG_B",    Request("rtagB"), ORAPARM_INPUT, ORATYPE_NUMBER
503
    OraDatabase.Parameters.Add "PROJB",     objRelCollectorB.Item("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBER
504
    OraDatabase.Parameters.Add "COMMENTS", "Merging from "& objRelCollectorA.Item("location") &" to "& objRelCollectorB.Item("location"), ORAPARM_INPUT, ORATYPE_VARCHAR2
505
    OraDatabase.Parameters.Add "USER_ID",  objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
506
    OraDatabase.Parameters.Add "OPERATION",NULL, ORAPARM_INPUT, ORATYPE_CHAR
507
 
508
    Set OraParameter = OraDatabase.Parameters
509
 
510
 
511
    On Error Resume Next
512
 
513
 
514
    ' Begin Database entry
515
    objEH.TryORA ( OraSession )
516
 
517
    '-- Add Packages --
518
    OraParameter("OPERATION").Value = "A"
519
    For Each PvId In aAddPkgList
520
        OraParameter("PV_ID").Value = PvId
521
        ' DEVI-45275, Merge into Planned (pending) table instead of release_content table.
522
        If Err.Number = 0 Then
523
            OraDatabase.ExecuteSQL _
524
            "BEGIN  "&_
525
            "  :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_A ); "&_
526
            "  PK_PLANNED.MERGE_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID, :OPERATION );  "&_
527
            "END;"
528
        End If
529
    Next
530
 
531
    '-- Remove Packages --
532
    If Err.Number = 0 Then
533
        OraParameter("OPERATION").Value = "S"
534
        For Each PvId In aRemovePkgList
535
            OraParameter("PV_ID").Value = PvId
536
 
537
            If Err.Number = 0 Then
538
                ' Does this PV_ID exist in the destination release's planned table?
539
                rc = Get_Record_Count ("PLANNED pl WHERE pl.pv_id = " & PvId & " AND pl.rtag_id = " & Request("rtagB") )
540
                If  rc > 0 Then
541
                    ' Given that merging now merges into pending, the merge page may be used to remove items that have
6189 dpurdie 542
                    ' previously been merged but have not yet been committed to the destination release.
5357 dpurdie 543
                    OraDatabase.ExecuteSQL _
6189 dpurdie 544
                   "BEGIN "&_
545
                   " PK_ENVIRONMENT.MAKE_REJECT ( :PV_ID, :RTAG_B, :USER_ID ); "&_
546
                   "END; "
5357 dpurdie 547
                Else
548
                    ' DEVI-45275, Merge into Planned (pending) table instead of release_content table.
549
                    OraDatabase.ExecuteSQL _
550
                    "BEGIN  "&_
551
                    "  :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_B ); "&_
552
                    "  PK_PLANNED.MERGE_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID, :OPERATION );  "&_
553
                    "END;"
554
                End If
555
            End If
556
        Next
557
 
558
        '-- Log Project Merge Action
559
        If Err.Number = 0 Then
560
            OraDatabase.ExecuteSQL _
561
            "BEGIN  LOG_PROJECT_ACTION ( :PROJB, 'merge_release', :USER_ID, :COMMENTS, :RTAG_B );  END;"
562
        End If
563
 
564
    End If
565
 
566
    objEH.CatchORA ( OraSession )     ' sets up LastOraFailed as appropriate
567
 
568
    ' NOTE, The Touch_Release stored procedure does a commit itself, so we should not do it unless all the ExecuteSQL's we
569
    ' have just performed, were successful
570
    If objEH.LastOraFailed = FALSE Then
571
        '-- Force package state recalculate
572
        objEH.TryORA ( OraSession )
573
        OraDatabase.ExecuteSQL _
574
            "BEGIN  "&_
575
            "  TOUCH_RELEASE ( :RTAG_B );  "&_
576
            "END;"
577
        objEH.CatchORA ( OraSession )
578
    End If
579
 
580
    Set OraParameter = Nothing
581
    OraDatabase.Parameters.Remove "PV_ID"
582
    OraDatabase.Parameters.Remove "VIEW_ID"
583
    OraDatabase.Parameters.Remove "RTAG_A"
584
    OraDatabase.Parameters.Remove "RTAG_B"
585
    OraDatabase.Parameters.Remove "USER_ID"
586
    OraDatabase.Parameters.Remove "PROJB"
587
    OraDatabase.Parameters.Remove "COMMENTS"
588
    OraDatabase.Parameters.Remove "OPERATION"
589
    'Response.write "<br>"& sAddPkgList &"-"& dAddPkgList.Count &"-"& UBound( aFullList )
590
End Sub
591
'--------------------------------------------------------------------------------------------------------------------------
592
Function AddTrailingZeros(byval n, byval count)
593
    if len(n) >= count then
594
        AddTrailingZeros = n
595
        exit function
596
    end if
597
 
598
    dim c, s, i
599
    c = count - len(n)
600
 
601
    for i = 1 to c
602
        s = s & "0"
603
    next
604
    s = cstr(n) & s
605
 
606
    AddTrailingZeros = s
607
End function
608
'--------------------------------------------------------------------------------------------------------------------------
609
'------------ RUN BEFORE PAGE RENDER ----------
610
If Request("btn") = "Exit" Then
611
    Call OpenInWindow ( "index.asp" )
612
End If
613
 
614
' Get release details
615
Call GetFormDetails ( parRtagA, objRelCollectorA )
616
Call GetFormDetails ( parRtagB, objRelCollectorB )
617
setActiveProject (objRelCollectorB.Item("proj_id"))
618
isMergable = releaseIsMergable(objRelCollectorB.Item("official"))
619
 
620
If (Request("btn") = "Merge") AND isMergable Then
621
    Call MergePackages ()
622
End If
623
 
624
If Request("btn") = "Swap Compare" Then
625
    Call OpenInWindow ( ScriptName &"?rtagA="& parRtagB &"&rtagB="& parRtagA )
626
End If
627
 
6191 dpurdie 628
If Request("btn") = "Refresh" Then
5357 dpurdie 629
    ' Store filter in cookie
630
    Response.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) = Request("difilter")
631
End If
632
 
633
Call GetDiffFilterValues ( dDiffFilter )
634
'----------------------------------------------
635
%>
636
<html>
637
<head>
638
<title>Release Manager</title>
639
<link rel="shortcut icon" href="<%=FavIcon%>"/>
640
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
641
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
642
<link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
643
<link rel="stylesheet" href="images/navigation.css" type="text/css">
644
<script language="JavaScript" src="images/common.js"></script>
645
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
6070 dpurdie 646
<!--#include file="_menu_def.asp"-->
647
<script language="JavaScript1.2" src="images/popup_menu.js"></script>
5357 dpurdie 648
<!-- TIPS -->
649
<script language="JavaScript" src="images/tipster.js"></script>
650
<script language="JavaScript" src="images/_help_tips.js"></script>
651
<script language="JavaScript" type="text/javascript">
652
<!--
653
 
654
function RequestReleaseCombo( paramString, rowId )
655
{
656
    var requestURL = 'RequestReleaseCombo.asp';
657
 
658
    // Set ajax divname
659
    ajaxdivname = rowId;
660
 
661
    //Append the name to search for to the requestURL
662
    var url = requestURL + paramString;
663
 
664
    //Progress
665
    //alert(MM_findObj( rowId ));
666
 
667
    //MM_findObj( rowId ).options[0] = new Option('Loading...','');
668
    //MM_findObj( rowId ).selectedIndex = 0;
669
    rowId.options[0] = new Option('Loading...','');
670
    rowId.selectedIndex = 0;
671
 
672
 
673
    //Create the xmlHttp object to use in the request
674
    //stateChangeHandler will fire when the state has changed, i.e. data is received back
675
    // This is non-blocking (asynchronous)
676
    xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
677
 
678
    //Send the xmlHttp get to the specified url
679
    xmlHttp_Get(xmlHttp, url);
680
}
681
 
5725 dpurdie 682
function SetDisplay(name, mode)
683
{
6191 dpurdie 684
    var o;
685
    if (o = MM_findObj(name))
686
    {
687
        o.style.display = mode;
688
    }
5725 dpurdie 689
}
5357 dpurdie 690
 
691
function MergePackage ( pkga, pkgb, rowId )
692
{
693
    // Set merge hidden field with new value
694
    MM_findObj( 'ADDPKG_' + rowId ).value = pkga;
6070 dpurdie 695
    MM_findObj( 'ADDPKG_' + rowId ).removeAttribute("disabled");
5357 dpurdie 696
 
697
    var divA = MM_findObj( 'PVA' + rowId );
698
    var divB = MM_findObj( 'PVB' + rowId );
699
 
700
    // Set text equal
701
    divB.innerHTML = divA.innerHTML;
702
 
703
    // Set highlight to blank
704
    divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
705
    divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
706
 
707
     // Set Change state icon to blank
5725 dpurdie 708
    SetDisplay( 'IMGSTATE' + rowId, 'none');
5357 dpurdie 709
 
710
    // Remove Merge Button
5725 dpurdie 711
    SetDisplay( 'IMGMERGE' + rowId, 'none');
712
    SetDisplay( 'IMGREMOVE' + rowId, 'none');
5357 dpurdie 713
 
714
    // Show undo button
5725 dpurdie 715
    SetDisplay( 'IMGUNDO' + rowId, 'block');
5357 dpurdie 716
}
717
 
718
 
719
function RemovePackage ( pkga, pkgb, rowId )
720
{
721
    // Set remove hidden field with new value
722
    MM_findObj( 'REMOVEPKG_' + rowId ).value = pkgb;
6070 dpurdie 723
    MM_findObj( 'REMOVEPKG_' + rowId ).removeAttribute("disabled");
5357 dpurdie 724
 
725
    var divA = MM_findObj( 'PVA' + rowId );
726
    var divB = MM_findObj( 'PVB' + rowId );
727
 
728
    // Set text equal
729
    divB.style.textDecoration = 'line-through';
730
 
731
    // Set highlight to blank
6070 dpurdie 732
    if (GetChangeType(rowId) != "A")
5357 dpurdie 733
    {
734
        divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
735
    }
736
    divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
737
 
738
     // Set Change state icon to blank
5725 dpurdie 739
    SetDisplay( 'IMGSTATE' + rowId , 'none');
5357 dpurdie 740
 
741
    // Remove Merge Button
5725 dpurdie 742
    SetDisplay( 'IMGMERGE' + rowId , 'none');
743
    SetDisplay( 'IMGREMOVE' + rowId , 'none');
5357 dpurdie 744
 
745
    // Show undo button
5725 dpurdie 746
    SetDisplay( 'IMGUNDO' + rowId ,'block');
5357 dpurdie 747
}
748
 
6070 dpurdie 749
function GetChangeType(rowId)
750
{
751
    var cht = MM_findObj( 'IMGSTATE' + rowId );
752
    var chd = '?';
753
    if (cht) {
754
       chd = cht.getAttribute('data_ct');
755
    }
756
    return chd;
757
}
5357 dpurdie 758
 
759
function UndoPackage ( rowId )
760
{
761
    // Set merge/remove hidden field with new value
762
    MM_findObj( 'ADDPKG_' + rowId ).value = '';
6070 dpurdie 763
    MM_findObj( 'ADDPKG_' + rowId ).setAttribute("disabled", "disabled" );
5357 dpurdie 764
    MM_findObj( 'REMOVEPKG_' + rowId ).value = '';
6070 dpurdie 765
    MM_findObj( 'REMOVEPKG_' + rowId ).setAttribute("disabled", "disabled" );
5357 dpurdie 766
 
767
    var divA = MM_findObj( 'PVA' + rowId );
768
    var divB = MM_findObj( 'PVB' + rowId );
769
 
770
    // Set text equal
6190 dpurdie 771
    //divB.innerHTML = divB.getAttribute('data_pkg');
5357 dpurdie 772
    divB.style.textDecoration = 'none';
773
 
774
    // Set highlight to blank
6070 dpurdie 775
    divA.style.backgroundColor = divA.getAttribute('data_color');
776
    divB.style.backgroundColor = divB.getAttribute('data_color');
5357 dpurdie 777
 
778
     // Set Change state icon to blank
5725 dpurdie 779
    SetDisplay( 'IMGSTATE' + rowId, 'block');
5357 dpurdie 780
 
781
    // Remove Merge Button
6070 dpurdie 782
    var chd = GetChangeType(rowId);
783
    if (chd == "R")
5357 dpurdie 784
    {
5725 dpurdie 785
        SetDisplay( 'IMGMERGE' + rowId, 'block');
5357 dpurdie 786
    }
6070 dpurdie 787
    else if ( (chd == "A") || (chd == "") )
5357 dpurdie 788
    {
5725 dpurdie 789
        SetDisplay( 'IMGREMOVE' + rowId, 'block');
5357 dpurdie 790
    }
791
    else
792
    {
5725 dpurdie 793
        SetDisplay( 'IMGMERGE' + rowId, 'block');
794
        SetDisplay( 'IMGREMOVE' + rowId,'block');
5357 dpurdie 795
    }
796
 
797
    // Show undo button
5725 dpurdie 798
    SetDisplay( 'IMGUNDO' + rowId, 'none');
5357 dpurdie 799
}
800
 
801
 
802
function MergeAll()
803
{
804
    var elem
805
 
806
    if (document.all)
807
    {
808
        // Run this for IE
809
        elem = document.all;
810
    } else {
811
        // Run this for other browsers
812
        elem = document.getElementsByTagName('div');
813
    }
814
 
815
    for (i in elem)
816
    {
817
        if (elem[i].id)
818
        {
819
            if (elem[i].id.indexOf('SHORT_') == 0) elem[i].style.display = 'none';
820
            if (elem[i].id.indexOf('LONG_') == 0) elem[i].style.display = 'block';
821
        }
822
    }
823
}
6196 dpurdie 824
 
825
//  An object to contain the filter data
826
var filter;
827
 
828
// Flip the current state of each Filter check boxes
829
function initFilter() {
830
    filter = new Object();
831
    filter.btn = document.getElementById("difilterBtn");
832
    filter.x = document.getElementsByName("difilter");
833
    filter.len = filter.x.length;
834
 
835
    saveFilterState();
836
    filter.oValues = filter.Values.slice(0);
837
    setFilterTitle();
838
}
839
 
840
function toggleFilters()
841
{
842
    switch ( filter.State )
843
    {
844
    case 'Flip':
845
        for (var i = 0; i < filter.len; i++) {
846
            filter.x[i].checked = !filter.x[i].checked;
847
        }
848
        filter.State = 'On';
849
        break;
850
 
851
    case 'On':
852
        for (var i = 0; i < filter.len; i++) {
853
            filter.x[i].checked = true;
854
        }
855
        filter.State = 'Off';
856
        break;
857
 
858
    case 'Off':
859
        for (var i = 0; i < filter.len; i++) {
860
            filter.x[i].checked = false;
861
        }
862
        filter.State = 'Restore';
863
        break;
864
 
865
    case 'Restore':
866
        for (var i = 0; i < filter.len; i++) {
867
            filter.x[i].checked = filter.Values[i];
868
        }
869
        filter.State = 'Reset';
870
        break;
871
 
872
    default:
873
        for (var i = 0; i < filter.len; i++) {
874
            filter.x[i].checked = filter.oValues[i];
875
        }
876
        filter.State = 'Flip';
877
        break;
878
    }
879
 
880
    setFilterTitle();
881
    EnableRefresh();
882
}
883
 
884
// Enable the "Refresh" button - when filter is changed
885
function EnableRefresh(state)
886
{
887
    if ( filter.btn ) {
888
        // Check if shown values match the initial values
889
        var btnState = true;
890
        for (var i = 1; i < filter.len; i++) {
891
            console.log ( filter.x[i].checked,filter.oValues[i],  filter.x[i].checked != filter.oValues[i] )
892
            if ( filter.x[i].checked != filter.oValues[i] ) {
893
                btnState = false;
894
                break;
895
            }
896
        }
897
        filter.btn.disabled = btnState; 
898
    }
899
}
900
// One of the filter buttons has been clicked
901
//  First one is special (and we don't want to know about its click)
902
function filterClicked(e)
903
{
904
    if ( ! e.target.id ) {
905
        saveFilterState();
906
        setFilterTitle();
907
        EnableRefresh();
908
    }
909
}
910
 
911
function saveFilterState()
912
{
913
    filter.State = 'Flip';
914
    filter.Title = filter.x[0];
915
    filter.Values = new Array(filter.len);
916
    for (var i = 0; i < filter.len; i++) {
917
        filter.Values[i] = filter.x[i].checked;
918
    }
919
}
920
 
921
function setFilterTitle()
922
{
923
    filter.Title.checked = false;
924
    filter.Title.title = "Toggle filters: Flip, On, Off, Restore, Reset - " + filter.State;
925
}
926
 
5357 dpurdie 927
//-->
928
</script>
6191 dpurdie 929
<style>
930
#filterTable td { background-color:#E4E9EC }
931
}
932
</style>
5357 dpurdie 933
</head>
6070 dpurdie 934
<!-- HEADER -->
935
<!--#include file="_header.asp"-->
5357 dpurdie 936
<form name="FormName" method="post" action="<%=ScriptName%>">
937
    <!-- BODY ---->
938
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
939
        <tr>
940
            <td width="20%">
941
            <td width="60%">
942
            <td width="20%">
943
        </tr>
944
        <tr>
945
            <td background="images/bg_home_orange.gif" valign="top">
946
                <!-- SELECT RELEASE A ---------------------------------------------->
947
                <br>
948
                <table width="100%"  border="0" cellspacing="10" cellpadding="0">
949
                    <tr>
950
                        <td align="left" class="body_col"><img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13">&nbsp;Select Release A<hr size="1px" color="Olive" noshade></td>
951
                    </tr>
952
                    <tr>
953
                        <td align="left">
954
                            <select name="projA" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagA );">
955
                                <option value="">-- Select Project --</option>
956
                                <%
957
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorA.Item("proj_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
958
 
959
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
960
 
961
                                OraDatabase.Parameters.Remove "PROJ_ID"
962
 
963
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
964
                                    <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
965
                                    <%rsQry.MoveNext
966
                                WEnd
967
 
968
                                rsQry.Close
969
                                Set rsQry = Nothing
970
                                %>
971
                            </select>
972
                        </td>
973
                    </tr>
974
                    <tr>
975
                        <td align="left">
976
                            <select name="rtagA" id="rtagA" class="form_item">
977
                                <%
978
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorA.Item("proj_id"),    ORAPARM_INPUT,  ORATYPE_NUMBER
979
                                OraDatabase.Parameters.Add "RTAG_ID",     objRelCollectorA.Item("rtag_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
980
 
981
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
982
 
983
                                OraDatabase.Parameters.Remove "PROJ_ID"
984
                                OraDatabase.Parameters.Remove "RTAG_ID"
985
 
986
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
987
                                        <option value="<%=rsQry("rtag_id")%>" <%=rsQry("selected")%>><%=rsQry("rtag_name")%></option>
988
                                    <%rsQry.MoveNext
989
                                WEnd
990
 
991
                                rsQry.Close
992
                                Set rsQry = Nothing
993
                                %>
994
                            </select>
995
                        </td>
996
                    </tr>
997
                    <%If (parRtagA <> "") Then%>
998
                        <tr>
999
                            <td align="left"><a href="dependencies.asp?rtag_id=<%=parRtagA%>" class="body_txt_drk">Go To Release A &raquo;</a></td>
1000
                        </tr>
1001
                    <%End If%>
6191 dpurdie 1002
                                            <tr class="body_txt">
1003
                                                <td>
1004
                                                    <%If (parRtagA <> "") AND (parRtagB <> "")Then%>
1005
                                                        <!-- DIFF FILTER +++++++++++++++++++++++++++++++++++++++++++ -->
6196 dpurdie 1006
                                                        <p>&nbsp;
1007
                                                        <fieldset style="width:200px;" onclick="filterClicked(event);">
6191 dpurdie 1008
                                                            <legend class="body_txt"><%=GetIsDiffFilterInUseIcon() %>&nbsp;Filter&nbsp;Results...</legend>
1009
                                                            <table width="100%"  border="0" cellspacing="2" cellpadding="0" id=filterTable class="body_txt">
1010
                                                                <tr >
6196 dpurdie 1011
                                                                    <td><input id="filterFipper" name="difilter" type="checkbox" onclick="toggleFilters();"></td>
1012
                                                                    <td colspan=1>Hide the marked change types.</td>
6191 dpurdie 1013
                                                                </tr>
1014
                                                                <tr>
1015
                                                                    <td width="1"><input name="difilter" type="checkbox" value="<%=enumDB_NUM_DIFF_UPDATED%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_UPDATED)%>></td>
1016
                                                                    <td width="50" nowrap class="form_field"><%=LIMG_UPDATED%>Updated</td>
1017
                                                                </tr>
1018
                                                                <tr>
1019
                                                                    <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_WARN%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_WARN)%>></td>
6196 dpurdie 1020
                                                                    <td nowrap class="form_field"><%=LIMG_OUTDATED%>Updated with Warning</td>
6191 dpurdie 1021
                                                                </tr>
1022
                                                                <tr>
1023
                                                                    <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_NEW%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_NEW)%>></td>
1024
                                                                    <td nowrap class="form_field"><%=LIMG_ADDED%>Added</td>
1025
                                                                </tr>
1026
                                                                <tr>
1027
                                                                    <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_REMOVED%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_REMOVED)%>></td>
1028
                                                                    <td nowrap class="form_field"><%=LIMG_REMOVED%>Removed</td>
1029
                                                                </tr>
1030
                                                                <tr>
1031
                                                                    <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_RIPPLE%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE)%>></td>
1032
                                                                    <td nowrap class="form_field"><%=LIMG_RIPPLED%>Rippled</td>
1033
                                                                </tr>
1034
                                                                <tr>
1035
                                                                    <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_NO_CHANGE%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_NO_CHANGE)%>></td>
6196 dpurdie 1036
                                                                    <td nowrap class="form_field"><%=LIMG_UNCHANGED%>Unchanged</td>
6191 dpurdie 1037
                                                                </tr>
1038
                                                                <tr>
1039
                                                                    <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_PENDING%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_PENDING)%>></td>
6196 dpurdie 1040
                                                                    <td nowrap class="form_field"><%=LIMG_PENDING%>Pending</td>
6191 dpurdie 1041
                                                                </tr>
1042
                                                                <tr>
1043
                                                                    <td>&nbsp;</td>
6196 dpurdie 1044
                                                                    <td width="100%">
1045
                                                                        <input id=difilterBtn name="btn" type="submit" class="form_btn" value="Refresh" disabled="true">
1046
                                                                    </td>
6191 dpurdie 1047
                                                                </tr>
1048
                                                            </table>
6196 dpurdie 1049
                                                            <img src onerror='initFilter();'>
6191 dpurdie 1050
                                                        </fieldset>
1051
                                                        <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
1052
                                                    <%End If%>
1053
                                                </td>
1054
                                                <td></td>
1055
                                            </tr>
1056
 
5357 dpurdie 1057
                </table>
1058
 
1059
                <!-- SELECT RELEASE A END ---------------------------------------------->
1060
            </td>
1061
 
1062
            <td rowspan="2" valign="top" background="images/bg_lght_gray.gif" align="center">
1063
                <!-- DIFF -------------------------------------------------------->
1064
                <br>
1065
                <table width="100%" border="0" cellspacing="10" cellpadding="0">
1066
                    <tr>
1067
                        <td>
1068
                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
1069
                                <tr>
1070
                                    <td width="1%"></td>
1071
                                    <td width="100%" align="left" class="form_ttl">DIFF / MERGE RELEASE
1072
                                        <%If genReport Then%>
1073
                                        &nbsp;[Generating Report]
1074
                                        <%End If%>
1075
                                        </td>
1076
                                    <td width="1%"></td>
1077
                                </tr>
1078
                                <tr>
1079
                                    <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
1080
                                    <td background="images/lbox_bg_blue.gif" align="left" class="wform_ttl">&nbsp;</td>
1081
                                    <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
1082
                                </tr>
1083
                                <tr>
1084
                                    <td width="1%" bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
1085
                                    <td bgcolor="#FFFFFF" valign="top" class="form_item">
1086
                                        <table width="100%"  border="0" cellspacing="0" cellpadding="5">
1087
                                            <tr>
1088
                                                <td width="100%" bgcolor="#DAD7C8">
1089
                                                    <input type="submit" name="btn" value="Compare" class="form_btn_comp" style="margin-right:5px;">
1090
                                                    <input type="submit" name="btn" value="Swap Compare" class="form_btn_comp">
1091
                                                    <span class="body_txt">
1092
                                                        <input name="btn" type="submit" class="form_btn" value="Mail Me Report">
1093
                                                        <% '<input name="btn" type="submit" class="form_btn" value="Show Me Report"> %>
1094
                                                    </span>
1095
                                                </td>
1096
                                                <td width="1" align="right" bgcolor="#DAD7C8" nowrap>
1097
                                                    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
1098
                                                        <tr>
5684 dpurdie 1099
                                                            <%
1100
                                                                Dim mergeMessage, mergeDisabled
1101
                                                                mergeDisabled = " disabled"
1102
                                                                If (parRtagA = "") Then
1103
                                                                    mergeMessage = "Select Release A"
6191 dpurdie 1104
                                                                ElseIf (parRtagB = "") Then
5684 dpurdie 1105
                                                                    mergeMessage = "Select Release B"
6191 dpurdie 1106
                                                                ElseIf NOT isMergable Then
5684 dpurdie 1107
                                                                    mergeMessage = "Release B cannot be modified"
1108
                                                                Else
1109
                                                                    mergeDisabled = ""
1110
                                                                End If
1111
                                                            %>
1112
                                                            <td class="err_alert nowrap" style="padding-right:1em">
1113
                                                                <%=mergeMessage%>
1114
                                                            </td>
5357 dpurdie 1115
                                                            <td>
5684 dpurdie 1116
                                                                <input type="submit" name="btn" value="Merge" class="form_btn_comp" style="margin-right:10px;" <%=mergeDisabled%>>
5357 dpurdie 1117
                                                            </td>
1118
                                                            <td>
1119
                                                                <input type="submit" name="btn" value="Exit" class="form_btn_comp">
1120
                                                            </td>
1121
                                                        </tr>
1122
                                                    </table>
1123
                                                </td>
1124
                                            </tr>
1125
                                        </table>
1126
 
1127
                                        <%
1128
                                        ' Successfull Merge
1129
                                        If (Request("btn") = "Merge") Then
1130
                                            Call Messenger ( "Merge has completed successfully.", 3, "100%" )
1131
                                        End If
1132
 
1133
                                        Set FSO=Server.CreateObject("Scripting.FileSystemObject")
1134
                                        Set NewTextFile=FSO.CreateTextFile(Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html"), true)
1135
 
1136
                                        Call Header()
1137
 
1138
                                        If (parRtagA <> "") AND (parRtagB <> "")Then%>
1139
                                            <table width="100%"  border="0" cellspacing="1" cellpadding="0">
1140
                                                <tr>
1141
                                                    <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorA.Item("official")) & objRelCollectorA.Item("location")%> </td>
1142
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
1143
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="20"></td>
1144
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
1145
                                                    <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorB.Item("official")) & objRelCollectorB.Item("location")%></td>
1146
                                                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
1147
                                                </tr>
1148
                                                <%
1149
                                                OraDatabase.Parameters.Add "RTAG_A",     parRtagA,    ORAPARM_INPUT, ORATYPE_NUMBER
1150
                                                OraDatabase.Parameters.Add "RTAG_B",     parRtagB,    ORAPARM_INPUT, ORATYPE_NUMBER
6189 dpurdie 1151
                                                OraDatabase.Parameters.Add "NO_CHANGE",  GetIsDiffFilterChecked(enumDB_NUM_DIFF_NO_CHANGE), ORAPARM_INPUT, ORATYPE_VARCHAR2
1152
                                                OraDatabase.Parameters.Add "ADDED",      GetIsDiffFilterChecked(enumDB_NUM_DIFF_NEW),       ORAPARM_INPUT, ORATYPE_VARCHAR2
6190 dpurdie 1153
                                                OraDatabase.Parameters.Add "UPDATED",    NULL,                                              ORAPARM_INPUT, ORATYPE_VARCHAR2
6189 dpurdie 1154
                                                OraDatabase.Parameters.Add "REMOVED",    GetIsDiffFilterChecked(enumDB_NUM_DIFF_REMOVED),   ORAPARM_INPUT, ORATYPE_VARCHAR2
5357 dpurdie 1155
 
1156
                                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleaseDiff.sql"), cint(0))
1157
 
1158
                                                OraDatabase.Parameters.Remove "RTAG_A"
1159
                                                OraDatabase.Parameters.Remove "RTAG_B"
1160
                                                OraDatabase.Parameters.Remove "NO_CHANGE"
1161
                                                OraDatabase.Parameters.Remove "ADDED"
1162
                                                OraDatabase.Parameters.Remove "UPDATED"
1163
                                                OraDatabase.Parameters.Remove "REMOVED"
1164
 
1165
                                                Set rsQryA = OraDatabase.DbCreateDynaset( "SELECT RT.RTAG_NAME, PRJ.PROJ_NAME FROM RELEASE_TAGS RT, PROJECTS PRJ WHERE RTAG_ID="& parRtagA &" AND RT.PROJ_ID=PRJ.PROJ_ID", cint(0))
1166
                                                Set rsQryB = OraDatabase.DbCreateDynaset( "SELECT RT.RTAG_NAME, PRJ.PROJ_NAME FROM RELEASE_TAGS RT, PROJECTS PRJ WHERE RTAG_ID="& parRtagB &" AND RT.PROJ_ID=PRJ.PROJ_ID", cint(0))
1167
 
1168
                                                Call Javascript()
1169
                                                Call Styles()
1170
 
1171
                                                NewTextFile.WriteLine("<title>Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"</title>")
1172
                                                NewTextFile.WriteLine("<div class=""page_title"">Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"</div><br>")
1173
                                                NewTextFile.WriteLine("<b>Key:</b><br><blockquote>")
1174
                                                NewTextFile.WriteLine("<span class=changesa><b>SOURCE CODE CHANGES</b></span><span class=texta> Indicates Changes to a Package in "& rsQryA("rtag_name") &".</span><br>")
1175
                                                NewTextFile.WriteLine("<span class=changesb><b>SOURCE CODE CHANGES</b></span><span class=textb> Indicates Changes to a Package in "& rsQryB("rtag_name") &".</span><br>")
1176
                                                NewTextFile.WriteLine("<span class=changesnone><b>Grey Text</b></span><span class=textnone> No Source Code Changes to a Package in either Release.</span>")
1177
                                                NewTextFile.WriteLine("</blockquote>")
1178
 
1179
                                                NewTextFile.WriteLine("<b>Toggle Sections:</b><blockquote>")
1180
                                                NewTextFile.WriteLine("<a href=""javascript:;"" onClick=""MM_toggleAll('divPkgInfo','1');"">Expand All</a>")
1181
                                                NewTextFile.WriteLine("<a href=""javascript:;"" onClick=""MM_toggleAll('divPkgInfo','');"">Collapse All</a>")
1182
                                                NewTextFile.WriteLine("</blockquote>")
1183
 
1184
                                                Dim currView_id
1185
                                                currView_id = -1
1186
 
1187
                                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))
1188
                                                    errormsg = false
1189
                                                    rowId = rsQry("pv_id_a") &"_"& rsQry("pv_id_b")
1190
 
1191
                                                    btnMerge = LIMG_MERGE
1192
                                                    btnRemove = LIMG_REMOVE
1193
 
1194
                                                    changeType = rsQry("change_type")
1195
                                                    isaSdk = rsQry("PKG_SDK_B")
1196
 
1197
                                                    If changeType = "U" OR changeType = "UW" OR changeType = "UR" Then
1198
                                                        Dim MajorA, MajorB, MinorA, MinorB, PatchA, PatchB, BuildA, BuildB, pos, pkgVersionA, pkgVersionB, majMinA, majMinB
1199
                                                        MajorA = NULL
1200
                                                        MajorB = NULL
1201
                                                        MinorA = NULL
1202
                                                        MinorB = NULL
1203
 
1204
                                                        pkgVersionA = rsQry("pkg_version_a")
1205
                                                        pkgVersionB = rsQry("pkg_version_b")
1206
 
1207
                                                        PatchA = rsQry("patch_number_a")
1208
                                                        PatchB = rsQry("patch_number_b")
1209
                                                        BuildA = rsQry("build_number_a")
1210
                                                        BuildB = rsQry("build_number_b")
1211
 
1212
 
1213
                                                        ' Find the first occurence of the dot in package version A
1214
                                                        pos = InStr(pkgVersionA, ".")
1215
                                                        If pos <> 0 Then
1216
                                                            ' Extract the Major Version for A
1217
                                                            MajorA = Mid(pkgVersionA, 1, pos - 1)
1218
                                                            ' Delete the Major Version Value from the string to get the minor and patch version
1219
                                                            pkgVersionA = Mid(pkgVersionA, pos + 1, Len(pkgVersionA))
1220
                                                            ' Find the second occurence of the dot in package version A
1221
                                                            pos = InStr(pkgVersionA, ".")
1222
                                                            ' Extract the Minor Version for A
1223
                                                            If pos <> 0 Then
1224
                                                                MinorA = Mid(pkgVersionA, 1, pos - 1)
1225
                                                            End If
1226
                                                        End If
1227
 
1228
                                                        ' Find the first occurence of the dot in package version B
1229
                                                        pos = InStr(pkgVersionB, ".")
1230
                                                        If pos <> 0 Then
1231
                                                            ' Extract the Major Version for B
1232
                                                            MajorB = Mid(pkgVersionB, 1, pos - 1)
1233
                                                            ' Delete the Major Version Value from the string to get the minor and patch version
1234
                                                            pkgVersionB = Mid(pkgVersionB, pos + 1, Len(pkgVersionB))
1235
                                                            ' Find the second occurence of the dot in package version B
1236
                                                            pos = InStr(pkgVersionB, ".")
1237
                                                            ' Extract the Minor Version for B
1238
                                                            If pos <> 0 Then
1239
                                                                MinorB = Mid(pkgVersionB, 1, pos - 1)
1240
                                                            End If
1241
                                                        End If
1242
 
1243
                                                        If MajorA = MajorB Then
1244
                                                            If MinorA = MinorB Then
1245
                                                                If IsNumeric(PatchA) AND IsNumeric(PatchB) Then
1246
                                                                    If CInt(PatchB) > CInt(PatchA) Then
1247
                                                                        btnMerge = LIMG_MERGE_WARN
1248
                                                                    Else
1249
                                                                        btnMerge = LIMG_MERGE
1250
                                                                    End If
1251
                                                                End If
1252
                                                            Else
1253
                                                                If IsNumeric(MinorA) AND IsNumeric(MinorB) Then
1254
                                                                    If CInt(MinorB) > CInt(MinorA) Then
1255
                                                                        btnMerge = LIMG_MERGE_WARN
1256
                                                                    Else
1257
                                                                        btnMerge = LIMG_MERGE
1258
                                                                    End If
1259
                                                                End If
1260
                                                            End If
1261
                                                        Else
1262
                                                            If IsNumeric(MajorA) AND IsNumeric(MajorB) Then
1263
                                                                If     CInt(MajorB) > CInt(MajorA) Then
1264
                                                                    btnMerge = LIMG_MERGE_WARN
1265
                                                                Else
1266
                                                                    btnMerge = LIMG_MERGE
1267
                                                                End If
1268
                                                            End If
1269
                                                        End If
6191 dpurdie 1270
 
1271
                                                        If btnMerge = LIMG_MERGE_WARN Then
1272
                                                            changeType = "UW"
1273
                                                        End If
5357 dpurdie 1274
                                                    End If
1275
 
6190 dpurdie 1276
                                                    ' -------- END GROUP ------------------------
1277
                                                    %>
1278
                                                    <%
1279
                                                    'Determine if we are dealing with a PV_ID that we have already encountered and displayed as a pending addition
1280
                                                    'If we are, we do not need to display anything more about it, so skip the row.
1281
                                                    ' NOTE. the result set is sorted by change type (see releasediff.sql) such that if there are multiple entries
1282
                                                    '         for the same PV_ID, they are sorted in the following order: pending, unchanged, additions, removals, updates.
1283
                                                    '         This is important to the row skip filtering carried out below.
1284
                                                    Dim skipRow
1285
                                                    If rsQry("pv_id_a") Then
1286
                                                        skipRow = pkgSeen.Exists(CStr(rsQry("pv_id_a")))
1287
                                                        pkgSeen.Item(CStr(rsQry("pv_id_a"))) = 1
1288
                                                    Else
1289
                                                        skipRow = FALSE
1290
                                                    End If
5357 dpurdie 1291
 
6190 dpurdie 1292
                                                    If GetIsDiffFilterChecked(enumDB_NUM_DIFF_PENDING) <> "" Then
1293
                                                        If changeType = "APS" OR changeType = "APA" Then
1294
                                                            skipRow = TRUE
5357 dpurdie 1295
                                                        End If
6190 dpurdie 1296
                                                    End If
1297
 
1298
                                                    If GetIsDiffFilterChecked(enumDB_NUM_DIFF_UPDATED) <> "" Then
1299
                                                        If changeType = "U" Then
1300
                                                            skipRow = TRUE
5357 dpurdie 1301
                                                        End If
6190 dpurdie 1302
                                                    End If
6189 dpurdie 1303
 
6190 dpurdie 1304
                                                    If GetIsDiffFilterChecked(enumDB_NUM_DIFF_WARN) <> "" Then
1305
                                                        If changeType = "UW" Then
1306
                                                            skipRow = TRUE
6189 dpurdie 1307
                                                        End If
6190 dpurdie 1308
                                                    End If
6189 dpurdie 1309
 
6190 dpurdie 1310
                                                    If GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE) <> "" Then
1311
                                                        If changeType = "UR" Then
1312
                                                            skipRow = TRUE
1313
                                                        End If
1314
                                                    End If
5357 dpurdie 1315
 
6190 dpurdie 1316
                                                    If NOT skipRow Then
6196 dpurdie 1317
                                                        Call GetDiffStateIcon ( changeType, ChangeTypeIcon )
1318
 
1319
                                                    colorA = LCOLOR_NOT_CHANGED
1320
                                                    colorB = LCOLOR_NOT_CHANGED
1321
                                                    Select Case changeType
1322
                                                        Case "U"
1323
                                                            colorA = LCOLOR_CHANGED
1324
                                                            colorB = LCOLOR_CHANGED
1325
                                                        Case "UW"
1326
                                                            colorA = LCOLOR_OUTDATED
1327
                                                            colorB = LCOLOR_OUTDATED
1328
                                                            btnMerge = LIMG_MERGE_WARN
1329
                                                        Case "UR"
1330
                                                            colorA = LCOLOR_RIPPLED
1331
                                                            colorB = LCOLOR_RIPPLED
1332
                                                        Case "A"
1333
                                                            colorA = LCOLOR_BLANK
1334
                                                        Case "R"
1335
                                                            colorB = LCOLOR_BLANK
1336
                                                    End Select
1337
 
1338
 
6190 dpurdie 1339
                                                    ' -------- GROUP BY BASE VIEW  -----------------
1340
                                                    If CDbl(currView_id) <> CDbl(rsQry("view_id")) Then
1341
                                                    %>
1342
                                                        <tr>
1343
                                                            <td valign="top" nowrap class="form_ttl"><b><%=rsQry("view_name")%></b></td>
1344
                                                            <td class="form_ttl">&nbsp;</td>
1345
                                                            <td class="form_ttl">&nbsp;</td>
1346
                                                            <td class="form_ttl">&nbsp;</td>
1347
                                                            <td class="form_ttl">&nbsp;</td>
1348
                                                            <td class="form_ttl">&nbsp;</td>
1349
                                                        </tr>
1350
                                                    <%
1351
                                                        currView_id = CDbl(rsQry("view_id"))
1352
                                                    End If
1353
                                                    %>
1354
                                                        <tr>
1355
                                                            <td class="body_row" nowrap>
1356
                                                                <DIV id="PVA<%=rowId%>" style="background:<%=colorA%>; padding:5px;" data_color="<%=colorA%>">
1357
                                                                    <%=rsQry("pkg_name_a") &" "& rsQry("pkg_version_a")%>
1358
                                                                </DIV>
1359
                                                            </td>
5357 dpurdie 1360
 
6190 dpurdie 1361
                                                            <%
1362
                                                            Dim pkgADisplayControl
1363
                                                            pkgADisplayControl = isMergable
1364
                                                            If IsNull( changeType ) OR (changeType = "A")  OR (changeType = "B") OR (changeType = "APA")  OR (changeType = "APS")  Then pkgADisplayControl = FALSE
1365
                                                            If isaSdk Then pkgADisplayControl = FALSE
1366
                                                            %>
1367
                                                            <td bgcolor="#F5F5F5">
1368
                                                                <%If pkgADisplayControl Then%>
1369
                                                                    <DIV id="IMGMERGE<%=rowId%>"><a href="javascript:;" onClick="MergePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnMerge%></a></DIV>
1370
                                                                <%End If%>
1371
                                                            </td>
5357 dpurdie 1372
 
6190 dpurdie 1373
                                                            <td bgcolor="#E4E9EC">
1374
                                                                <DIV id="IMGSTATE<%=rowId%>" DATA_CT="<%=changeType%>"><%=ChangeTypeIcon%></DIV>
1375
                                                            </td>
5357 dpurdie 1376
 
6190 dpurdie 1377
                                                            <%
1378
                                                            Dim pkgBDisplayControl
1379
                                                            pkgBDisplayControl = isMergable
1380
                                                            If changeType = "R" Then pkgBDisplayControl = FALSE
1381
                                                            If isaSdk Then pkgBDisplayControl = FALSE
1382
                                                            %>
1383
                                                            <td bgcolor="#F5F5F5">
1384
                                                                <%If pkgBDisplayControl Then%>
1385
                                                                    <DIV id="IMGREMOVE<%=rowId%>" ><a href="javascript:;" onClick="RemovePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnRemove%></a></DIV>
6191 dpurdie 1386
                                                                <%ElseIf isaSdk Then %>
6190 dpurdie 1387
                                                                    <DIV ><%=LIMG_SDK%></DIV>
1388
                                                                <%End If%>
1389
                                                            </td>
5357 dpurdie 1390
 
6190 dpurdie 1391
                                                            <td class="body_row" nowrap>
6191 dpurdie 1392
                                                                <DIV id="PVB<%=rowId%>"
1393
                                                                     style="background:<%=colorB%>; padding:5px;"
6190 dpurdie 1394
                                                                     data_color="<%=colorB%>"
1395
                                                                     data_pkg="<%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>"
1396
                                                                     >
1397
                                                                    <%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>
1398
                                                                    <%If ChangeType = "APS" Then%>
1399
                                                                            (removal pending<%=Quick_Help("RemovalPending")%>)
1400
                                                                    <%ElseIf ChangeType = "APA" Then%>
1401
                                                                            (addition pending<%=Quick_Help("AdditionPending")%>)
1402
                                                                    <%End If %>
1403
                                                                </DIV>
1404
                                                                <input type="hidden" disabled="disabled" name="addpkg" id="ADDPKG_<%=rowId%>" value="">
1405
                                                                <input type="hidden" disabled="disabled" name="removepkg" id="REMOVEPKG_<%=rowId%>" value="">
1406
                                                            </td>
5357 dpurdie 1407
 
6190 dpurdie 1408
                                                            <td bgcolor="#F5F5F5">
1409
                                                                <DIV id="IMGUNDO<%=rowId%>" style="display:none;" >
1410
                                                                    <a href="javascript:;" onClick="UndoPackage( '<%=rowId%>' );"><%=LIMG_UNDO%></a>
1411
                                                                </DIV>
1412
                                                            </td>
1413
                                                        </tr>
1414
                                                    <%End If %>
5357 dpurdie 1415
 
6190 dpurdie 1416
                                                    <%
1417
                                                    If genReport AND NOT skipRow  Then
1418
                                                        If rsQry("pv_id_a") Then
1419
                                                            Set rsQryCommentsA = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_a"), cint(0))
1420
                                                        End If
5357 dpurdie 1421
 
6190 dpurdie 1422
                                                        If rsQry("pv_id_b") Then
1423
                                                            Set rsQryCommentsB = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))
1424
                                                        End If
5357 dpurdie 1425
 
6190 dpurdie 1426
                                                        pkgA = rsQry("pkg_name_a")
1427
                                                        pkgB = rsQry("pkg_name_b")
5357 dpurdie 1428
 
6190 dpurdie 1429
                                                        If pkgA <> "" then
1430
                                                            pkgname = pkgA
1431
                                                        Else
1432
                                                            pkgname = pkgB
1433
                                                        End If
5357 dpurdie 1434
 
6190 dpurdie 1435
                                                        If changeType = "U" OR  changeType = "UW" Then
1436
                                                            ChangeASource = false
1437
                                                            ChangeAUpdate = false
1438
                                                            ChangeBSource = false
1439
                                                            ChangeBUpdate = false
5357 dpurdie 1440
 
6190 dpurdie 1441
                                                            'NewTextFile.WriteLine("<br><b><font face="&chr(34)&"arial"&chr(34)&">"&pkgname&"</font></b>")
1442
                                                            NewTextFile.Write("<a href=""javascript:;"" class=""body_scol"" onClick=""toggleSPAN('"& rowId &"');"">"& pkgname &"</a>")
1443
                                                            NewTextFile.WriteLine("<DIV class=divPkgInfo id=""spanPkgInfo"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")
1444
                                                            NewTextFile.Write(rsQryA("rtag_name")&" uses: "&rsQry("pkg_version_a")&" (")
1445
                                                            Call Release(rsQry("pv_id_a"))
1446
                                                            NewTextFile.WriteLine(")<br>")
1447
                                                            NewTextFile.Write(rsQryB("rtag_name")&" uses: "&rsQry("pkg_version_b")&" (")
1448
                                                            Call Release(rsQry("pv_id_b"))
1449
                                                            NewTextFile.WriteLine(")<br>")
5357 dpurdie 1450
 
6190 dpurdie 1451
                                                            a = rsQry("pv_id_a")
1452
                                                            b = rsQry("pv_id_b")
1453
                                                            c = rsQry("pv_id_a")
1454
                                                            d = rsQry("pv_id_b")
5357 dpurdie 1455
 
6190 dpurdie 1456
                                                            Set pvCollectionA = CreateObject("Scripting.Dictionary")
1457
                                                            Set pvCollectionB = CreateObject("Scripting.Dictionary")
1458
                                                            On Error Resume Next
1459
                                                            While CLng(a) <> CLng(b) and NOT errormsg
5357 dpurdie 1460
 
6190 dpurdie 1461
                                                                'NewTextFile.WriteLine("A: "&a)
1462
                                                                'NewTextFile.WriteLine("B: "&b)
1463
                                                                pvCollectionA.Add CStr(a), Empty
1464
                                                                pvCollectionB.Add CStr(b), Empty
1465
                                                                If CLng(a) > CLng(b) Then
1466
                                                                    'NewTextFile.WriteLine("TestA")
1467
                                                                    Call LastPvIdA(a)
1468
                                                                ElseIf CLng(b) > CLng(a) Then
1469
                                                                    'NewTextFile.WriteLine("TestB")
1470
                                                                    Call LastPvIdB(b)
1471
                                                                End If
1472
                                                            Wend
5357 dpurdie 1473
 
6190 dpurdie 1474
                                                            Set pvCollectionA = Nothing
1475
                                                            Set pvCollectionB = Nothing
5357 dpurdie 1476
 
6190 dpurdie 1477
                                                            Call pkg_Version(a)
1478
                                                            NewTextFile.Write("Common PARENT package version: "&pkgversion&" (")
1479
                                                            Call Release(a)
1480
                                                            NewTextFile.WriteLine(")<br><br>")
1481
                                                            NewTextFile.WriteLine()
1482
                                                            NewTextFile.WriteLine("<b>"&rsQryA("rtag_name")&"</b>")
5357 dpurdie 1483
 
6190 dpurdie 1484
                                                            If pkgversion <> rsQry("pkg_version_a") Then
1485
                                                                NewTextFile.WriteLine("<blockquote><b><i>Versions between "& pkgversion &" and "& rsQry("pkg_version_a")&"</i></b></blockquote>")
5357 dpurdie 1486
 
6190 dpurdie 1487
                                                                If errormsg Then
1488
                                                                    NewTextFile.WriteLine("Error determining root!<br>")
1489
                                                                    NewTextFile.WriteLine()
1490
                                                                End If
5357 dpurdie 1491
 
6190 dpurdie 1492
                                                                source_change = false
5357 dpurdie 1493
 
6190 dpurdie 1494
                                                                While CLng(a) <> CLng(c) and NOT errormsg
1495
                                                                    Call Comments(c)
1496
                                                                    If scFlag = TRUE Then
1497
                                                                        Call GetFixedIssues(c)
5357 dpurdie 1498
                                                                    End If
6190 dpurdie 1499
                                                                    Call LastPvIdAa(c)
5357 dpurdie 1500
                                                                    NewTextFile.WriteLine()
6190 dpurdie 1501
                                                                Wend
5357 dpurdie 1502
 
6190 dpurdie 1503
                                                                If source_change = false Then
1504
                                                                    NewTextFile.WriteLine("<blockquote><b><i>No source changes to "& rsQryA("rtag_name")&". Only Rippled Builds.</i></b></blockquote><br>")
1505
                                                                    ChangeASource = true
5357 dpurdie 1506
                                                                End If
1507
 
6190 dpurdie 1508
                                                                Call pkg_Version(b)
1509
                                                                NewTextFile.WriteLine()
1510
                                                                NewTextFile.WriteLine()
5357 dpurdie 1511
 
6190 dpurdie 1512
                                                            ElseIf pkgversion = rsQry("pkg_version_a") Then
1513
                                                                NewTextFile.WriteLine("<blockquote><b><i>No updates to "& rsQryA("rtag_name")&"</i></b></blockquote><br>")
1514
                                                                ChangeAUpdate = true
1515
                                                                NewTextFile.WriteLine()
1516
                                                            End If
5357 dpurdie 1517
 
6190 dpurdie 1518
                                                            NewTextFile.WriteLine("<b>"&rsQryB("rtag_name")&"</b>")
5357 dpurdie 1519
 
6190 dpurdie 1520
                                                            If pkgversion <> rsQry("pkg_version_b") Then
1521
                                                                NewTextFile.WriteLine("<blockquote><b><i>Versions between "& pkgversion &" and "& rsQry("pkg_version_b")&"</i></b></blockquote>")
5357 dpurdie 1522
 
6190 dpurdie 1523
                                                                If errormsg Then
1524
                                                                    NewTextFile.WriteLine("Error determining root!<br>")
1525
                                                                    NewTextFile.WriteLine()
1526
                                                                End If
5357 dpurdie 1527
 
6190 dpurdie 1528
                                                                source_change = false
1529
 
1530
                                                                While CLng(b) <> CLng(d) and NOT errormsg
1531
                                                                    Call Comments(d)
1532
                                                                    If scFlag = TRUE Then
1533
                                                                        Call GetFixedIssues(d)
5357 dpurdie 1534
                                                                    End If
6190 dpurdie 1535
                                                                    Call LastPvIdBb(d)
1536
                                                                    NewTextFile.WriteLine()
1537
                                                                Wend
5357 dpurdie 1538
 
6190 dpurdie 1539
                                                                If source_change = false Then
1540
                                                                    NewTextFIle.WriteLine("<blockquote><b><i>No source changes to "& rsQryB("rtag_name")&". Only Rippled Builds.</i></b></blockquote><br>")
1541
                                                                    ChangeBSource = true
5357 dpurdie 1542
                                                                End If
1543
 
6190 dpurdie 1544
                                                            ElseIf pkgversion = rsQry("pkg_version_b") Then
1545
                                                                NewTextFile.WriteLine("<blockquote><b><i>No updates to "& rsQryB("rtag_name")&"</i></b></blockquote><br>")
1546
                                                                ChangeBUpdate = true
1547
                                                                NewTextFile.WriteLine()
1548
                                                            End If
5357 dpurdie 1549
 
6190 dpurdie 1550
                                                            NewTextFile.WriteLine("</DIV>")
1551
 
1552
                                                            If ChangeASource Then
1553
                                                                If ChangeBSource Then
1554
                                                                    NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &": .</b class=changesnone> Ripple Builds Only.</td><td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &": </b class=changesnone> Ripple Builds Only.</td>  </tr></table></blockquote>")
1555
                                                                ElseIf ChangeBUpdate Then
1556
                                                                    NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &": </b><span class=changesnone>Ripple Builds Only.</span></td><td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &": </b><span class=changesnone> No Updates.</span></td>  </tr></table></blockquote>")
1557
                                                                ElseIf NOT ChangeBSource AND NOT ChangeBUpdate Then
1558
                                                                    NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0""><tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <span class=changesnone>Ripple Builds Only.</span></td>    <td width=""50%"">    <b>"& Ucase(rsQryB("rtag_name")) &":</b> <b class=changesb> SOURCE CODE CHANGES.</b></td></tr></table></blockquote>")
5357 dpurdie 1559
                                                                End If
6190 dpurdie 1560
                                                            End If
5357 dpurdie 1561
 
6190 dpurdie 1562
                                                            If ChangeBSource Then
1563
                                                                If NOT ChangeAUpdate Then
1564
                                                                    If NOT ChangeASource AND NOT ChangeBUpdate Then
1565
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &": </b><b class=changesa> SOURCE CODE CHANGES</b>.</td>    <td width=""50%""> <b>"& Ucase(rsQryB("rtag_name")) &":</b> <span class=changesnone> Ripple Builds Only.</span></td>  </tr></table></blockquote>")
5357 dpurdie 1566
                                                                    End If
1567
                                                                End If
6190 dpurdie 1568
                                                            End If
5357 dpurdie 1569
 
6190 dpurdie 1570
                                                            If NOT ChangeASource Then
1571
                                                                If NOT ChangeAUpdate Then
1572
                                                                    If NOT ChangeBSource AND NOT ChangeBUpdate Then
1573
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <b class=changesa> SOURCE CODE CHANGES.</b></td><td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &":</b><b class=changesb> SOURCE CODE CHANGES.</b></td></tr></table></blockquote>")
1574
                                                                    ElseIf ChangeBUpdate Then
1575
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <b class=changesa> SOURCE CODE CHANGES.</b></td> <td width=""50%""><b>"& Ucase(rsQryB("rtag_name")) &":</b><span class=changesnone> No Updates.</span></td>  </tr></table></blockquote>")
5357 dpurdie 1576
                                                                    End If
6190 dpurdie 1577
                                                                ElseIf ChangeAUpdate Then
1578
                                                                    If NOT ChangeBSource AND NOT ChangeBUpdate Then
1579
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <span class=changesnone>No Updates.</span></td> <td width=""50%"">  <b></font>"& Ucase(rsQryB("rtag_name")) &":</b><b class=changesb> SOURCE CODE CHANGES.</b></td></tr></table></blockquote>")
1580
                                                                    ElseIf ChangeBSource Then
1581
                                                                        NewTextFile.WriteLine("<blockquote><table width=""100%"" border=""0"">  <tr><td width=""50%""><b>"& Ucase(rsQryA("rtag_name")) &":</b> <span class=changesnone>No Updates.</span></td> <td width=""50%""> </font><b>"& Ucase(rsQryB("rtag_name")) &":</b> <span class=changesnone> Ripple Builds Only.</span></td>  </tr></table></blockquote>")
1582
                                                                    End If
5357 dpurdie 1583
                                                                End If
6190 dpurdie 1584
                                                            End If
5357 dpurdie 1585
 
6190 dpurdie 1586
                                                        End If  'changeType = "U" OR  changeType = "UW"
5357 dpurdie 1587
 
6190 dpurdie 1588
                                                    End If  'email
5357 dpurdie 1589
 
1590
                                                    rsQry.MoveNext
1591
                                                WEnd
1592
 
1593
                                                rsQry.Close
1594
                                                Set rsQry = Nothing
1595
                                                %>
1596
                                                <%
1597
                                                Call Footer()
1598
                                                NewTextFile.Close
1599
                                                Set NewTextFile=Nothing
1600
                                                %>
1601
                                            </table>
1602
                                            <br>
1603
                                        <%Else%>
1604
                                            <br>
1605
                                            <%
1606
                                            If (parRtagB <> "") Then
1607
                                                Call Messenger ( "Select <b>Release A</b> to compare.", 3, "100%" )
1608
                                            ElseIf (parRtagA <> "") Then
1609
                                                Call Messenger ( "Select <b>Release B</b> to compare.", 3, "100%" )
1610
                                            Else
1611
                                                Call Messenger ( "Select <b>Release A</b> and <b>Release B</b> to compare.", 3, "100%" )
1612
                                            End If
1613
                                            %>
1614
                                        <%End If%>
1615
                                    </td>
1616
                                    <td width="1%" background="images/lbox_bgside_white.gif">&nbsp;</td>
1617
                                </tr>
1618
                                <tr>
1619
                                    <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
1620
                                    <td background="images/lbox_bg_blue.gif"></td>
1621
                                    <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
1622
                                </tr>
1623
                            </table>
1624
                        </td>
1625
                    </tr>
1626
                </table>
1627
                <!-- DIFF END ---------------------------------------------------->
1628
            </td>
1629
            <td valign="top" background="images/bg_home_orange.gif">
1630
 
1631
                <!-- SELECT RELEASE B ---------------------------------------------->
1632
                <br>
1633
                <table width="100%"  border="0" cellspacing="10" cellpadding="0">
1634
                    <tr>
1635
                        <td align="left" class="body_col">
1636
                            <img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13">&nbsp;Select Release B<hr size="1px" color="Olive" noshade>
1637
                        </td>
1638
                    </tr>
1639
                    <tr>
1640
                        <td align="left">
1641
                            <select name="projB" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagB );">
1642
                                <option value="">-- Select Project --</option>
1643
                                <%
1644
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorB.Item("proj_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
1645
 
1646
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
1647
 
1648
                                OraDatabase.Parameters.Remove "PROJ_ID"
1649
 
1650
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
1651
                                    <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
1652
                                    <%rsQry.MoveNext
1653
                                WEnd
1654
 
1655
                                rsQry.Close
1656
                                Set rsQry = Nothing
1657
                                %>
1658
                            </select>
1659
                        </td>
1660
                    </tr>
1661
                    <tr>
1662
                        <td align="left">
1663
                            <select name="rtagB" id="rtagB" class="form_item">
1664
                                <%
1665
                                OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorB.Item("proj_id"),    ORAPARM_INPUT,  ORATYPE_NUMBER
1666
                                OraDatabase.Parameters.Add "RTAG_ID",     objRelCollectorB.Item("rtag_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
1667
 
1668
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
1669
 
1670
                                OraDatabase.Parameters.Remove "PROJ_ID"
1671
                                OraDatabase.Parameters.Remove "RTAG_ID"
1672
 
1673
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
1674
                                        <option value="<%=rsQry("rtag_id")%>" <%=rsQry("selected")%>><%=rsQry("rtag_name")%></option>
1675
                                    <%rsQry.MoveNext
1676
                                WEnd
1677
 
1678
                                rsQry.Close
1679
                                Set rsQry = Nothing
1680
                                %>
1681
                            </select>
1682
                        </td>
1683
                    </tr>
1684
                    <%If (parRtagB <> "") Then%>
1685
                        <tr>
1686
                            <td align="left"><a href="dependencies.asp?rtag_id=<%=parRtagB%>" class="body_txt_drk">Go To Release B &raquo;</a></td>
1687
                        </tr>
1688
                    <%End If%>
1689
                </table>
1690
                <!-- SELECT RELEASE B END ---------------------------------------------->
1691
            </td>
1692
        </tr>
1693
        <tr>
1694
            <td valign="bottom" align="center" background="images/bg_home_orange.gif">
1695
                <img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30">
1696
            </td>
1697
            <td valign="bottom" background="images/bg_home_orange.gif" align="center">
1698
                <img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30">
1699
            </td>
1700
      </tr>
1701
    </table>
1702
</form>
1703
<%
1704
If email Then
1705
    Dim LocalPath
1706
    LocalPath = Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html")
1707
 
1708
    Send_Email    "Release Manager Notification",_
1709
                     ADMIN_EMAIL, _
1710
                     objAccessControl.UserEmail,_
1711
                     "Release Comparisons from Release Manager", _
1712
                     "Your requested report...",_
1713
                     LocalPath
1714
End If
1715
%>
5957 dpurdie 1716
<!-- FOOTER -->
1717
<!--#include file="_footer.asp"-->
5357 dpurdie 1718
</body>
1719
</html>
6191 dpurdie 1720