Subversion Repositories DevTools

Rev

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