Subversion Repositories DevTools

Rev

Rev 6876 | Rev 6879 | 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
 
628
If Request("btn") = "Swap Compare" Then
629
    Call OpenInWindow ( ScriptName &"?rtagA="& parRtagB &"&rtagB="& parRtagA )
630
End If
631
 
6191 dpurdie 632
If Request("btn") = "Refresh" Then
5357 dpurdie 633
    ' Store filter in cookie
634
    Response.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) = Request("difilter")
635
End If
636
 
637
Call GetDiffFilterValues ( dDiffFilter )
638
'----------------------------------------------
6877 dpurdie 639
Sub PanelA
640
 %>
641
    <!-- SELECT RELEASE A ---------------------------------------------->
642
    <table width="100%"  border="0" cellspacing="10" cellpadding="0">
643
        <tr>
644
            <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>
645
        </tr>
646
        <tr>
647
            <td align="left">
648
                <select name="projA" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagA );">
649
                    <option value="">-- Select Project --</option>
650
                    <%
651
                    OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorA.Item("proj_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
652
 
653
                    Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
654
 
655
                    OraDatabase.Parameters.Remove "PROJ_ID"
656
 
657
                    While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
658
                        <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
659
                        <%rsQry.MoveNext
660
                    WEnd
661
 
662
                    rsQry.Close
663
                    Set rsQry = Nothing
664
                    %>
665
                </select>
666
            </td>
667
        </tr>
668
        <tr>
669
            <td align="left">
670
                <select name="rtagA" id="rtagA" class="form_item">
671
                    <%
672
                    OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorA.Item("proj_id"),    ORAPARM_INPUT,  ORATYPE_NUMBER
673
                    OraDatabase.Parameters.Add "RTAG_ID",     objRelCollectorA.Item("rtag_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
674
 
675
                    Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
676
 
677
                    OraDatabase.Parameters.Remove "PROJ_ID"
678
                    OraDatabase.Parameters.Remove "RTAG_ID"
679
 
680
                    While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
681
                            <option value="<%=rsQry("rtag_id")%>" <%=rsQry("selected")%>><%=rsQry("rtag_name")%></option>
682
                        <%rsQry.MoveNext
683
                    WEnd
684
 
685
                    rsQry.Close
686
                    Set rsQry = Nothing
687
                    %>
688
                </select>
689
            </td>
690
        </tr>
691
        <%If (parRtagA <> "") Then%>
692
            <tr>
693
                <td align="left"><a href="dependencies.asp?rtag_id=<%=parRtagA%>" class="body_txt_drk">Go To Release A &raquo;</a></td>
694
            </tr>
695
        <%End If%>
696
                                <tr class="body_txt">
697
                                    <td>
698
                                        <%If (parRtagA <> "") AND (parRtagB <> "")Then%>
699
                                            <!-- DIFF FILTER +++++++++++++++++++++++++++++++++++++++++++ -->
700
                                            <p>&nbsp;
701
                                            <fieldset style="width:200px;" onclick="filterClicked(event);">
702
                                                <legend class="body_txt"><%=GetIsDiffFilterInUseIcon() %>&nbsp;Filter&nbsp;Results...</legend>
703
                                                <table width="100%"  border="0" cellspacing="2" cellpadding="0" id=filterTable class="body_txt">
704
                                                    <tr >
705
                                                        <td><input id="filterFipper" name="difilter" type="checkbox" onclick="toggleFilters();"></td>
706
                                                        <td colspan=1>Hide the marked change types.</td>
707
                                                    </tr>
708
                                                    <tr>
709
                                                        <td width="1"><input name="difilter" type="checkbox" value="<%=enumDB_NUM_DIFF_UPDATED%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_UPDATED)%>></td>
710
                                                        <td width="50" nowrap class="form_field"><%=LIMG_UPDATED%>Updated</td>
711
                                                    </tr>
712
                                                    <tr>
713
                                                        <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_WARN%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_WARN)%>></td>
714
                                                        <td nowrap class="form_field"><%=LIMG_OUTDATED%>Updated with Warning</td>
715
                                                    </tr>
716
                                                    <tr>
717
                                                        <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_NEW%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_NEW)%>></td>
718
                                                        <td nowrap class="form_field"><%=LIMG_ADDED%>Added</td>
719
                                                    </tr>
720
                                                    <tr>
721
                                                        <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_REMOVED%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_REMOVED)%>></td>
722
                                                        <td nowrap class="form_field"><%=LIMG_REMOVED%>Removed</td>
723
                                                    </tr>
724
                                                    <tr>
725
                                                        <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_RIPPLE%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE)%>></td>
726
                                                        <td nowrap class="form_field"><%=LIMG_RIPPLED%>Rippled</td>
727
                                                    </tr>
728
                                                    <tr>
729
                                                        <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_NO_CHANGE%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_NO_CHANGE)%>></td>
730
                                                        <td nowrap class="form_field"><%=LIMG_UNCHANGED%>Unchanged</td>
731
                                                    </tr>
732
                                                    <tr>
733
                                                        <td><input type="checkbox" name="difilter" value="<%=enumDB_NUM_DIFF_PENDING%>" <%=GetIsDiffFilterChecked(enumDB_NUM_DIFF_PENDING)%>></td>
734
                                                        <td nowrap class="form_field"><%=LIMG_PENDING%>Pending</td>
735
                                                    </tr>
736
                                                    <tr>
737
                                                        <td>&nbsp;</td>
738
                                                        <td width="100%">
739
                                                            <input id=difilterBtn name="btn" type="submit" class="form_btn" value="Refresh" disabled="true">
740
                                                        </td>
741
                                                    </tr>
742
                                                </table>
743
                                                <img src onerror='initFilter();'>
744
                                            </fieldset>
745
                                            <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
746
                                        <%End If%>
747
                                    </td>
748
                                    <td></td>
749
                                </tr>
750
 
751
    </table>
752
    <!-- SELECT RELEASE A END ---------------------------------------------->
753
 <%
754
End Sub
755
Sub PanelB
5357 dpurdie 756
%>
6877 dpurdie 757
    <!-- SELECT RELEASE B ---------------------------------------------->
758
    <table width="100%"  border="0" cellspacing="10" cellpadding="0">
759
        <tr>
760
            <td align="left" class="body_col">
761
                <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>
762
            </td>
763
        </tr>
764
        <tr>
765
            <td align="left">
766
                <select name="projB" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagB );">
767
                    <option value="">-- Select Project --</option>
768
                    <%
769
                    OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorB.Item("proj_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
770
 
771
                    Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
772
 
773
                    OraDatabase.Parameters.Remove "PROJ_ID"
774
 
775
                    While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
776
                        <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
777
                        <%rsQry.MoveNext
778
                    WEnd
779
 
780
                    rsQry.Close
781
                    Set rsQry = Nothing
782
                    %>
783
                </select>
784
            </td>
785
        </tr>
786
        <tr>
787
            <td align="left">
788
                <select name="rtagB" id="rtagB" class="form_item">
789
                    <%
790
                    OraDatabase.Parameters.Add "PROJ_ID",     objRelCollectorB.Item("proj_id"),    ORAPARM_INPUT,  ORATYPE_NUMBER
791
                    OraDatabase.Parameters.Add "RTAG_ID",     objRelCollectorB.Item("rtag_id"),    ORAPARM_INPUT, ORATYPE_NUMBER
792
 
793
                    Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
794
 
795
                    OraDatabase.Parameters.Remove "PROJ_ID"
796
                    OraDatabase.Parameters.Remove "RTAG_ID"
797
 
798
                    While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
799
                            <option value="<%=rsQry("rtag_id")%>" <%=rsQry("selected")%>><%=rsQry("rtag_name")%></option>
800
                        <%rsQry.MoveNext
801
                    WEnd
802
 
803
                    rsQry.Close
804
                    Set rsQry = Nothing
805
                    %>
806
                </select>
807
            </td>
808
        </tr>
809
        <%If (parRtagB <> "") Then%>
810
            <tr>
811
                <td align="left"><a href="dependencies.asp?rtag_id=<%=parRtagB%>" class="body_txt_drk">Go To Release B &raquo;</a></td>
812
            </tr>
813
        <%End If%>
814
        <tr class="body_txt">
815
            <td>
816
            <%If (parRtagA <> "") AND (parRtagB <> "") AND isMergable Then%>
817
            <!-- Bulk Operations +++++++++++++++++++++++++++++++++++++++++++ -->
818
            <p>&nbsp;
819
            <fieldset style="width:200px;" >
820
                <legend class="body_txt">Bulk Operations</legend>
821
                <div>
822
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("UASrc");'><%=LIMG_UPDATED%>Add - Updated</button>
823
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("UWASrc");'><%=LIMG_OUTDATED%>Add - Updated with Warning</button>
824
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("RASrc");'><%=LIMG_REMOVED%>Add - Removed</button>
825
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("ABSrc");'><%=LIMG_ADDED%>Remove - Added</button>
826
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("URASrc");'><%=LIMG_RIPPLED%>Add - Rippled</button>
827
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("BBSrc");'><%=LIMG_UNCHANGED%>Remove - Unchanged</button>
828
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("APSBSrc");'><%=LIMG_PENDING%>Remove - Pending Removal</button>
829
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("APABSrc");'><%=LIMG_PENDING%>Remove - Pending Addition</button>
830
                    <button type="button" class="BulkButton form_btn_comp" onClick='processAll("undoSrc");'><%=LIMG_PENDING%>Revert All</button>
831
                </div>
832
            </fieldset>
833
        <%End If%>
834
        </td>
835
        </tr>
836
    </table>
837
    <!-- SELECT RELEASE B END ---------------------------------------------->
838
<%
839
End Sub
840
Sub CenterPanel
841
 %>
842
    <!-- DIFF -------------------------------------------------------->
843
    <table width="100%" border="0" cellspacing="10" cellpadding="0">
844
        <tr>
845
            <td>
846
                <table width="100%" border="0" cellspacing="0" cellpadding="0" class='rounded_box rounded_box_pad'>
847
                    <caption>
848
                        DIFF / MERGE RELEASE
849
                        <%If genReport Then%>
850
                            &nbsp;[Generating Report]
851
                         <%End If%>
852
                    </caption>
853
                    <tr>
854
                        <td bgcolor="#FFFFFF" valign="top" class="form_item">
855
                            <table width="100%"  border="0" cellspacing="0" cellpadding="5">
856
                                <tr>
857
                                    <td width="100%" bgcolor="#DAD7C8">
858
                                        <input type="submit" name="btn" value="Compare" class="form_btn_comp" style="margin-right:5px;">
859
                                        <input type="submit" name="btn" value="Swap Compare" class="form_btn_comp">
860
                                        <span class="body_txt">
861
                                            <input name="btn" type="submit" class="form_btn" value="Mail Me Report">
862
                                            <%'<input name="btn" type="submit" class="form_btn" value="Show Me Report">%>
863
                                        </span>
864
                                    </td>
865
                                    <td width="1" align="right" bgcolor="#DAD7C8" nowrap>
866
                                        <table width="100%"  border="0" cellspacing="0" cellpadding="0">
867
                                            <tr>
868
                                                <%
869
                                                    Dim mergeMessage, mergeDisabled
870
                                                    mergeDisabled = " disabled"
871
                                                    If (parRtagA = "") Then
872
                                                        mergeMessage = "Select Release A"
873
                                                    ElseIf (parRtagB = "") Then
874
                                                        mergeMessage = "Select Release B"
875
                                                    ElseIf NOT isMergable Then
876
                                                        mergeMessage = "Release B cannot be modified"
877
                                                    Else
878
                                                        mergeDisabled = ""
879
                                                    End If
880
                                                %>
881
                                                <td class="err_alert nowrap" style="padding-right:1em">
882
                                                    <%=mergeMessage%>
883
                                                </td>
884
                                                <td>
885
                                                    <input type="submit" name="btn" value="Merge" class="form_btn_comp" style="margin-right:10px;" <%=mergeDisabled%>>
886
                                                </td>
887
                                                <td>
888
                                                    <input type="submit" name="btn" value="Exit" class="form_btn_comp">
889
                                                </td>
890
                                            </tr>
891
                                        </table>
892
                                    </td>
893
                                </tr>
894
                            </table>
895
 
896
                            <%
897
                            ' Successfull Merge
898
                            If (Request("btn") = "Merge") Then
899
                                Call Messenger ( "Merge has completed successfully.", 3, "100%" )
900
                            End If
901
 
902
                            If genReport Then
903
                                Set FSO=Server.CreateObject("Scripting.FileSystemObject")
904
                                Set NewTextFile=FSO.CreateTextFile(reportPath, true)
905
 
906
                                Call Header()
907
                            End If
908
 
909
                            If (parRtagA <> "") AND (parRtagB <> "")Then%>
910
                                <table width="100%"  border="0" cellspacing="1" cellpadding="0">
911
                                    <tr>
912
                                        <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorA.Item("official")) & objRelCollectorA.Item("location")%> </td>
913
                                        <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
914
                                        <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="20"></td>
915
                                        <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
916
                                        <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorB.Item("official")) & objRelCollectorB.Item("location")%></td>
917
                                        <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
918
                                    </tr>
919
                                    <%
920
                                    OraDatabase.Parameters.Add "RTAG_A",     parRtagA,    ORAPARM_INPUT, ORATYPE_NUMBER
921
                                    OraDatabase.Parameters.Add "RTAG_B",     parRtagB,    ORAPARM_INPUT, ORATYPE_NUMBER
922
                                    OraDatabase.Parameters.Add "NO_CHANGE",  GetIsDiffFilterChecked(enumDB_NUM_DIFF_NO_CHANGE), ORAPARM_INPUT, ORATYPE_VARCHAR2
923
                                    OraDatabase.Parameters.Add "ADDED",      GetIsDiffFilterChecked(enumDB_NUM_DIFF_NEW),       ORAPARM_INPUT, ORATYPE_VARCHAR2
924
                                    OraDatabase.Parameters.Add "UPDATED",    NULL,                                              ORAPARM_INPUT, ORATYPE_VARCHAR2
925
                                    OraDatabase.Parameters.Add "REMOVED",    GetIsDiffFilterChecked(enumDB_NUM_DIFF_REMOVED),   ORAPARM_INPUT, ORATYPE_VARCHAR2
926
 
927
                                    Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleaseDiff.sql"), cint(0))
928
 
929
                                    OraDatabase.Parameters.Remove "RTAG_A"
930
                                    OraDatabase.Parameters.Remove "RTAG_B"
931
                                    OraDatabase.Parameters.Remove "NO_CHANGE"
932
                                    OraDatabase.Parameters.Remove "ADDED"
933
                                    OraDatabase.Parameters.Remove "UPDATED"
934
                                    OraDatabase.Parameters.Remove "REMOVED"
935
 
936
                                    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))
937
                                    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))
938
 
939
                                    If genReport Then
940
                                        Call Javascript()
941
                                        Call Styles()
942
 
943
                                        NewTextFile.WriteLine("<title>Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"</title>")
944
                                        NewTextFile.WriteLine("<div class=""page_title"">Difference Report Between "&rsQryA("proj_name")&" "&rsQryA("rtag_name")&" and "&rsQryB("proj_name")&" "&rsQryB("rtag_name")&"</div><br>")
945
                                        NewTextFile.WriteLine("<b>Key:</b><br><blockquote>")
946
                                        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>")
947
                                        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>")
948
                                        NewTextFile.WriteLine("<span class=changesnone><b>Grey Text</b></span><span class=textnone> No Source Code Changes to a Package in either Release.</span>")
949
                                        NewTextFile.WriteLine("</blockquote>")
950
 
951
                                        NewTextFile.WriteLine("<b>Toggle Sections:</b><blockquote>")
952
                                        NewTextFile.WriteLine("<span class=pointer onClick=""MM_toggleAll('divPkgInfo','1');"">Expand All</span>")
953
                                        NewTextFile.WriteLine("<span class=pointer onClick=""MM_toggleAll('divPkgInfo','');"">Collapse All</span>")
954
                                        NewTextFile.WriteLine("</blockquote>")
955
                                    End If
956
 
957
                                    Dim currView_id
958
                                    currView_id = -1
959
 
960
                                    While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))
961
                                        errormsg = false
962
                                        rowId = rsQry("pv_id_a") &"_"& rsQry("pv_id_b")
963
 
964
                                        btnMerge = LIMG_MERGE
965
                                        btnRemove = LIMG_REMOVE
966
 
967
                                        changeType = rsQry("change_type")
968
                                        isaSdk = rsQry("PKG_SDK_B")
969
 
970
                                        If changeType = "U" OR changeType = "UW" OR changeType = "UR" Then
971
                                            Dim MajorA, MajorB, MinorA, MinorB, PatchA, PatchB, BuildA, BuildB, pos, pkgVersionA, pkgVersionB, majMinA, majMinB
972
                                            MajorA = NULL
973
                                            MajorB = NULL
974
                                            MinorA = NULL
975
                                            MinorB = NULL
976
 
977
                                            pkgVersionA = rsQry("pkg_version_a")
978
                                            pkgVersionB = rsQry("pkg_version_b")
979
 
980
                                            PatchA = rsQry("patch_number_a")
981
                                            PatchB = rsQry("patch_number_b")
982
                                            BuildA = rsQry("build_number_a")
983
                                            BuildB = rsQry("build_number_b")
984
 
985
 
986
                                            ' Find the first occurence of the dot in package version A
987
                                            pos = InStr(pkgVersionA, ".")
988
                                            If pos <> 0 Then
989
                                                ' Extract the Major Version for A
990
                                                MajorA = Mid(pkgVersionA, 1, pos - 1)
991
                                                ' Delete the Major Version Value from the string to get the minor and patch version
992
                                                pkgVersionA = Mid(pkgVersionA, pos + 1, Len(pkgVersionA))
993
                                                ' Find the second occurence of the dot in package version A
994
                                                pos = InStr(pkgVersionA, ".")
995
                                                ' Extract the Minor Version for A
996
                                                If pos <> 0 Then
997
                                                    MinorA = Mid(pkgVersionA, 1, pos - 1)
998
                                                End If
999
                                            End If
1000
 
1001
                                            ' Find the first occurence of the dot in package version B
1002
                                            pos = InStr(pkgVersionB, ".")
1003
                                            If pos <> 0 Then
1004
                                                ' Extract the Major Version for B
1005
                                                MajorB = Mid(pkgVersionB, 1, pos - 1)
1006
                                                ' Delete the Major Version Value from the string to get the minor and patch version
1007
                                                pkgVersionB = Mid(pkgVersionB, pos + 1, Len(pkgVersionB))
1008
                                                ' Find the second occurence of the dot in package version B
1009
                                                pos = InStr(pkgVersionB, ".")
1010
                                                ' Extract the Minor Version for B
1011
                                                If pos <> 0 Then
1012
                                                    MinorB = Mid(pkgVersionB, 1, pos - 1)
1013
                                                End If
1014
                                            End If
1015
 
1016
                                            If MajorA = MajorB Then
1017
                                                If MinorA = MinorB Then
1018
                                                    If IsNumeric(PatchA) AND IsNumeric(PatchB) Then
1019
                                                        If CInt(PatchB) > CInt(PatchA) Then
1020
                                                            btnMerge = LIMG_MERGE_WARN
1021
                                                        Else
1022
                                                            btnMerge = LIMG_MERGE
1023
                                                        End If
1024
                                                    End If
1025
                                                Else
1026
                                                    If IsNumeric(MinorA) AND IsNumeric(MinorB) Then
1027
                                                        If CInt(MinorB) > CInt(MinorA) Then
1028
                                                            btnMerge = LIMG_MERGE_WARN
1029
                                                        Else
1030
                                                            btnMerge = LIMG_MERGE
1031
                                                        End If
1032
                                                    End If
1033
                                                End If
1034
                                            Else
1035
                                                If IsNumeric(MajorA) AND IsNumeric(MajorB) Then
1036
                                                    If     CInt(MajorB) > CInt(MajorA) Then
1037
                                                        btnMerge = LIMG_MERGE_WARN
1038
                                                    Else
1039
                                                        btnMerge = LIMG_MERGE
1040
                                                    End If
1041
                                                End If
1042
                                            End If
1043
 
1044
                                            If btnMerge = LIMG_MERGE_WARN Then
1045
                                                changeType = "UW"
1046
                                            End If
1047
                                        End If
1048
 
1049
                                        ' -------- END GROUP ------------------------
1050
                                        %>
1051
                                        <%
1052
                                        'Determine if we are dealing with a PV_ID that we have already encountered and displayed as a pending addition
1053
                                        'If we are, we do not need to display anything more about it, so skip the row.
1054
                                        ' NOTE. the result set is sorted by change type (see releasediff.sql) such that if there are multiple entries
1055
                                        '         for the same PV_ID, they are sorted in the following order: pending, unchanged, additions, removals, updates.
1056
                                        '         This is important to the row skip filtering carried out below.
1057
                                        Dim skipRow
1058
                                        If rsQry("pv_id_a") Then
1059
                                            skipRow = pkgSeen.Exists(CStr(rsQry("pv_id_a")))
1060
                                            pkgSeen.Item(CStr(rsQry("pv_id_a"))) = 1
1061
                                        Else
1062
                                            skipRow = FALSE
1063
                                        End If
1064
 
1065
                                        If GetIsDiffFilterChecked(enumDB_NUM_DIFF_PENDING) <> "" Then
1066
                                            If changeType = "APS" OR changeType = "APA" Then
1067
                                                skipRow = TRUE
1068
                                            End If
1069
                                        End If
1070
 
1071
                                        If GetIsDiffFilterChecked(enumDB_NUM_DIFF_UPDATED) <> "" Then
1072
                                            If changeType = "U" Then
1073
                                                skipRow = TRUE
1074
                                            End If
1075
                                        End If
1076
 
1077
                                        If GetIsDiffFilterChecked(enumDB_NUM_DIFF_WARN) <> "" Then
1078
                                            If changeType = "UW" Then
1079
                                                skipRow = TRUE
1080
                                            End If
1081
                                        End If
1082
 
1083
                                        If GetIsDiffFilterChecked(enumDB_NUM_DIFF_RIPPLE) <> "" Then
1084
                                            If changeType = "UR" Then
1085
                                                skipRow = TRUE
1086
                                            End If
1087
                                        End If
1088
 
1089
                                        If NOT skipRow Then
1090
                                            Call GetDiffStateIcon ( changeType, ChangeTypeIcon )
1091
 
1092
                                        colorA = LCOLOR_NOT_CHANGED
1093
                                        colorB = LCOLOR_NOT_CHANGED
1094
                                        Select Case changeType
1095
                                            Case "U"
1096
                                                colorA = LCOLOR_CHANGED
1097
                                                colorB = LCOLOR_CHANGED
1098
                                            Case "UW"
1099
                                                colorA = LCOLOR_OUTDATED
1100
                                                colorB = LCOLOR_OUTDATED
1101
                                                btnMerge = LIMG_MERGE_WARN
1102
                                            Case "UR"
1103
                                                colorA = LCOLOR_RIPPLED
1104
                                                colorB = LCOLOR_RIPPLED
1105
                                            Case "A"
1106
                                                colorA = LCOLOR_BLANK
1107
                                            Case "R"
1108
                                                colorB = LCOLOR_BLANK
1109
                                        End Select
1110
 
1111
 
1112
                                        ' -------- GROUP BY BASE VIEW  -----------------
1113
                                        If CDbl(currView_id) <> CDbl(rsQry("view_id")) Then
1114
                                        %>
1115
                                            <tr>
1116
                                                <td valign="top" nowrap class="form_ttl"><b><%=rsQry("view_name")%></b></td>
1117
                                                <td class="form_ttl">&nbsp;</td>
1118
                                                <td class="form_ttl">&nbsp;</td>
1119
                                                <td class="form_ttl">&nbsp;</td>
1120
                                                <td class="form_ttl">&nbsp;</td>
1121
                                                <td class="form_ttl">&nbsp;</td>
1122
                                            </tr>
1123
                                        <%
1124
                                            currView_id = CDbl(rsQry("view_id"))
1125
                                        End If
1126
                                        %>
1127
                                            <tr>
1128
                                                <td class="body_row" nowrap>
1129
                                                    <DIV id="PVA<%=rowId%>" style="background:<%=colorA%>; padding:5px;" data_color="<%=colorA%>">
1130
                                                        <%=rsQry("pkg_name_a") &" "& rsQry("pkg_version_a")%>
1131
                                                    </DIV>
1132
                                                </td>
1133
 
1134
                                                <%
1135
                                                Dim pkgADisplayControl
1136
                                                pkgADisplayControl = isMergable
1137
                                                Dim pkgAClass: pkgAClass = changeType & "ASrc" 
1138
 
1139
                                                If IsNull( changeType ) OR (changeType = "A")  OR (changeType = "B") OR (changeType = "APA")  OR (changeType = "APS")  Then pkgADisplayControl = FALSE
1140
                                                If isaSdk Then pkgADisplayControl = FALSE
1141
                                                %>
1142
                                                <td bgcolor="#F5F5F5">
1143
                                                    <%If pkgADisplayControl Then%>
1144
                                                        <DIV id="IMGMERGE<%=rowId%>" class='<%=pkgAClass%> pointer' onClick="MergePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnMerge%></DIV>
1145
                                                    <%End If%>
1146
                                                </td>
1147
 
1148
                                                <td bgcolor="#E4E9EC">
1149
                                                    <DIV id="IMGSTATE<%=rowId%>" DATA_CT="<%=changeType%>"><%=ChangeTypeIcon%></DIV>
1150
                                                </td>
1151
 
1152
                                                <%
1153
                                                Dim pkgBDisplayControl
1154
                                                pkgBDisplayControl = isMergable
1155
                                                Dim pkgBClass: pkgBClass = changeType & "BSrc" 
1156
                                                If changeType = "R" Then pkgBDisplayControl = FALSE
1157
                                                If isaSdk Then pkgBDisplayControl = FALSE
1158
                                                %>
1159
                                                <td bgcolor="#F5F5F5">
1160
                                                    <%If pkgBDisplayControl Then%>
1161
                                                        <DIV id="IMGREMOVE<%=rowId%>" class='<%=pkgBClass%> pointer' onClick="RemovePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnRemove%></DIV>
1162
                                                    <%ElseIf isaSdk Then %>
1163
                                                        <DIV ><%=LIMG_SDK%></DIV>
1164
                                                    <%End If%>
1165
                                                </td>
1166
 
1167
                                                <td class="body_row" nowrap>
1168
                                                    <DIV id="PVB<%=rowId%>"
1169
                                                         style="background:<%=colorB%>; padding:5px;"
1170
                                                         data_color="<%=colorB%>"
1171
                                                         data_pkg="<%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>"
1172
                                                         >
1173
                                                        <%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>
1174
                                                        <%If ChangeType = "APS" Then%>
1175
                                                                (removal pending<%=Quick_Help("RemovalPending")%>)
1176
                                                        <%ElseIf ChangeType = "APA" Then%>
1177
                                                                (addition pending<%=Quick_Help("AdditionPending")%>)
1178
                                                        <%End If %>
1179
                                                    </DIV>
1180
                                                    <input type="hidden" disabled="disabled" name="addpkg" id="ADDPKG_<%=rowId%>" value="">
1181
                                                    <input type="hidden" disabled="disabled" name="removepkg" id="REMOVEPKG_<%=rowId%>" value="">
1182
                                                </td>
1183
 
1184
                                                <td bgcolor="#F5F5F5">
1185
                                                    <DIV id="IMGUNDO<%=rowId%>" style="display:none;" class='undoSrc pointer' onClick="UndoPackage( '<%=rowId%>' );"><%=LIMG_UNDO%></DIV>
1186
                                                </td>
1187
                                            </tr>
1188
                                        <%End If %>
1189
 
1190
                                        <%
1191
                                        If genReport AND NOT skipRow  Then
1192
                                            If rsQry("pv_id_a") Then
1193
                                                Set rsQryCommentsA = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_a"), cint(0))
1194
                                            End If
1195
 
1196
                                            If rsQry("pv_id_b") Then
1197
                                                Set rsQryCommentsB = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))
1198
                                            End If
1199
 
1200
                                            pkgA = rsQry("pkg_name_a")
1201
                                            pkgB = rsQry("pkg_name_b")
1202
 
1203
                                            If pkgA <> "" then
1204
                                                pkgname = pkgA
1205
                                            Else
1206
                                                pkgname = pkgB
1207
                                            End If
1208
 
1209
                                            If changeType = "U" OR  changeType = "UW" Then
1210
                                                ChangeASource = false
1211
                                                ChangeAUpdate = false
1212
                                                ChangeBSource = false
1213
                                                ChangeBUpdate = false
1214
 
1215
                                                If genReport Then
1216
                                                    'NewTextFile.WriteLine("<br><b><font face="&chr(34)&"arial"&chr(34)&">"&pkgname&"</font></b>")
1217
                                                    NewTextFile.Write("<span class=""body_scol pointer"" onClick=""toggleSPAN('"& rowId &"');"">"& pkgname &"</span>")
1218
                                                    NewTextFile.WriteLine("<DIV class=divPkgInfo id=""spanPkgInfo"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")
1219
                                                    NewTextFile.Write(rsQryA("rtag_name")&" uses: "&rsQry("pkg_version_a")&" (")
1220
                                                    Call Release(rsQry("pv_id_a"))
1221
                                                    NewTextFile.WriteLine(")<br>")
1222
                                                    NewTextFile.Write(rsQryB("rtag_name")&" uses: "&rsQry("pkg_version_b")&" (")
1223
                                                    Call Release(rsQry("pv_id_b"))
1224
                                                    NewTextFile.WriteLine(")<br>")
1225
 
1226
                                                    a = rsQry("pv_id_a")
1227
                                                    b = rsQry("pv_id_b")
1228
                                                    c = rsQry("pv_id_a")
1229
                                                    d = rsQry("pv_id_b")
1230
 
1231
                                                    Set pvCollectionA = CreateObject("Scripting.Dictionary")
1232
                                                    Set pvCollectionB = CreateObject("Scripting.Dictionary")
1233
                                                    On Error Resume Next
1234
                                                    While CLng(a) <> CLng(b) and NOT errormsg
1235
 
1236
                                                        'NewTextFile.WriteLine("A: "&a)
1237
                                                        'NewTextFile.WriteLine("B: "&b)
1238
                                                        pvCollectionA.Add CStr(a), Empty
1239
                                                        pvCollectionB.Add CStr(b), Empty
1240
                                                        If CLng(a) > CLng(b) Then
1241
                                                            'NewTextFile.WriteLine("TestA")
1242
                                                            Call LastPvIdA(a)
1243
                                                        ElseIf CLng(b) > CLng(a) Then
1244
                                                            'NewTextFile.WriteLine("TestB")
1245
                                                            Call LastPvIdB(b)
1246
                                                        End If
1247
                                                    Wend
1248
 
1249
                                                    Set pvCollectionA = Nothing
1250
                                                    Set pvCollectionB = Nothing
1251
 
1252
                                                    Call pkg_Version(a)
1253
                                                    NewTextFile.Write("Common PARENT package version: "&pkgversion&" (")
1254
                                                    Call Release(a)
1255
                                                    NewTextFile.WriteLine(")<br><br>")
1256
                                                    NewTextFile.WriteLine()
1257
                                                    NewTextFile.WriteLine("<b>"&rsQryA("rtag_name")&"</b>")
1258
 
1259
                                                    If pkgversion <> rsQry("pkg_version_a") Then
1260
                                                        NewTextFile.WriteLine("<blockquote><b><i>Versions between "& pkgversion &" and "& rsQry("pkg_version_a")&"</i></b></blockquote>")
1261
 
1262
                                                        If errormsg Then
1263
                                                            NewTextFile.WriteLine("Error determining root!<br>")
1264
                                                            NewTextFile.WriteLine()
1265
                                                        End If
1266
 
1267
                                                        source_change = false
1268
 
1269
                                                        While CLng(a) <> CLng(c) and NOT errormsg
1270
                                                            Call Comments(c)
1271
                                                            If scFlag = TRUE Then
1272
                                                                Call GetFixedIssues(c)
1273
                                                            End If
1274
                                                            Call LastPvIdAa(c)
1275
                                                            NewTextFile.WriteLine()
1276
                                                        Wend
1277
 
1278
                                                        If source_change = false Then
1279
                                                            NewTextFile.WriteLine("<blockquote><b><i>No source changes to "& rsQryA("rtag_name")&". Only Rippled Builds.</i></b></blockquote><br>")
1280
                                                            ChangeASource = true
1281
                                                        End If
1282
 
1283
                                                        Call pkg_Version(b)
1284
                                                        NewTextFile.WriteLine()
1285
                                                        NewTextFile.WriteLine()
1286
 
1287
                                                    ElseIf pkgversion = rsQry("pkg_version_a") Then
1288
                                                        NewTextFile.WriteLine("<blockquote><b><i>No updates to "& rsQryA("rtag_name")&"</i></b></blockquote><br>")
1289
                                                        ChangeAUpdate = true
1290
                                                        NewTextFile.WriteLine()
1291
                                                    End If
1292
 
1293
                                                    NewTextFile.WriteLine("<b>"&rsQryB("rtag_name")&"</b>")
1294
 
1295
                                                    If pkgversion <> rsQry("pkg_version_b") Then
1296
                                                        NewTextFile.WriteLine("<blockquote><b><i>Versions between "& pkgversion &" and "& rsQry("pkg_version_b")&"</i></b></blockquote>")
1297
 
1298
                                                        If errormsg Then
1299
                                                            NewTextFile.WriteLine("Error determining root!<br>")
1300
                                                            NewTextFile.WriteLine()
1301
                                                        End If
1302
 
1303
                                                        source_change = false
1304
 
1305
                                                        While CLng(b) <> CLng(d) and NOT errormsg
1306
                                                            Call Comments(d)
1307
                                                            If scFlag = TRUE Then
1308
                                                                Call GetFixedIssues(d)
1309
                                                            End If
1310
                                                            Call LastPvIdBb(d)
1311
                                                            NewTextFile.WriteLine()
1312
                                                        Wend
1313
 
1314
                                                        If source_change = false Then
1315
                                                            NewTextFIle.WriteLine("<blockquote><b><i>No source changes to "& rsQryB("rtag_name")&". Only Rippled Builds.</i></b></blockquote><br>")
1316
                                                            ChangeBSource = true
1317
                                                        End If
1318
 
1319
                                                    ElseIf pkgversion = rsQry("pkg_version_b") Then
1320
                                                        NewTextFile.WriteLine("<blockquote><b><i>No updates to "& rsQryB("rtag_name")&"</i></b></blockquote><br>")
1321
                                                        ChangeBUpdate = true
1322
                                                        NewTextFile.WriteLine()
1323
                                                    End If
1324
 
1325
                                                    NewTextFile.WriteLine("</DIV>")
1326
 
1327
                                                    If ChangeASource Then
1328
                                                        If ChangeBSource Then
1329
                                                            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>")
1330
                                                        ElseIf ChangeBUpdate Then
1331
                                                            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>")
1332
                                                        ElseIf NOT ChangeBSource AND NOT ChangeBUpdate Then
1333
                                                            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>")
1334
                                                        End If
1335
                                                    End If
1336
 
1337
                                                    If ChangeBSource Then
1338
                                                        If NOT ChangeAUpdate Then
1339
                                                            If NOT ChangeASource AND NOT ChangeBUpdate Then
1340
                                                                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>")
1341
                                                            End If
1342
                                                        End If
1343
                                                    End If
1344
 
1345
                                                    If NOT ChangeASource Then
1346
                                                        If NOT ChangeAUpdate Then
1347
                                                            If NOT ChangeBSource AND NOT ChangeBUpdate Then
1348
                                                                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>")
1349
                                                            ElseIf ChangeBUpdate Then
1350
                                                                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>")
1351
                                                            End If
1352
                                                        ElseIf 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> <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>")
1355
                                                            ElseIf ChangeBSource Then
1356
                                                                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>")
1357
                                                            End If
1358
                                                        End If
1359
                                                    End If
1360
                                                End If
1361
 
1362
                                            End If  'changeType = "U" OR  changeType = "UW"
1363
 
1364
                                        End If  'email
1365
 
1366
                                        rsQry.MoveNext
1367
                                    WEnd
1368
 
1369
                                    rsQry.Close
1370
                                    Set rsQry = Nothing
1371
                                    %>
1372
                                    <%
1373
                                    If genReport Then
1374
                                        Call Footer()
1375
                                        NewTextFile.Close
1376
                                        Set NewTextFile=Nothing
1377
                                    End If
1378
                                    %>
1379
                                </table>
1380
                                <br>
1381
                            <%Else%>
1382
                                <br>
1383
                                <%
1384
                                If (parRtagB <> "") Then
1385
                                    Call Messenger ( "Select <b>Release A</b> to compare.", 3, "100%" )
1386
                                ElseIf (parRtagA <> "") Then
1387
                                    Call Messenger ( "Select <b>Release B</b> to compare.", 3, "100%" )
1388
                                Else
1389
                                    Call Messenger ( "Select <b>Release A</b> and <b>Release B</b> to compare.", 3, "100%" )
1390
                                End If
1391
                                %>
1392
                            <%End If%>
1393
                        </td>
1394
                    </tr>
1395
                </table>
1396
            </td>
1397
        </tr>
1398
    </table>
1399
    <!-- DIFF END ---------------------------------------------------->
1400
<%
1401
End Sub
1402
%>
5357 dpurdie 1403
<html>
1404
<head>
1405
<title>Release Manager</title>
1406
<link rel="shortcut icon" href="<%=FavIcon%>"/>
1407
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
1408
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6579 dpurdie 1409
<link rel="stylesheet" href="images/release_manager_style.css?ver=<%=VixVerNum%>" type="text/css">
1410
<link rel="stylesheet" href="images/navigation.css?ver=<%=VixVerNum%>" type="text/css">
1411
<script language="JavaScript" src="images/common.js?ver=<%=VixVerNum%>"></script>
1412
<script language="JavaScript" src="scripts/remote_scripting.js?ver=<%=VixVerNum%>"></script>
6070 dpurdie 1413
<!--#include file="_menu_def.asp"-->
6579 dpurdie 1414
<script language="JavaScript1.2" src="images/popup_menu.js?ver=<%=VixVerNum%>"></script>
5357 dpurdie 1415
<!-- TIPS -->
6579 dpurdie 1416
<script language="JavaScript" src="images/tipster.js?ver=<%=VixVerNum%>"></script>
1417
<script language="JavaScript" src="images/_help_tips.js?ver=<%=VixVerNum%>"></script>
5357 dpurdie 1418
<script language="JavaScript" type="text/javascript">
1419
<!--
1420
 
1421
function RequestReleaseCombo( paramString, rowId )
1422
{
1423
    var requestURL = 'RequestReleaseCombo.asp';
1424
 
1425
    // Set ajax divname
1426
    ajaxdivname = rowId;
1427
 
1428
    //Append the name to search for to the requestURL
1429
    var url = requestURL + paramString;
1430
 
1431
    //Progress
1432
    //alert(MM_findObj( rowId ));
1433
 
1434
    //MM_findObj( rowId ).options[0] = new Option('Loading...','');
1435
    //MM_findObj( rowId ).selectedIndex = 0;
1436
    rowId.options[0] = new Option('Loading...','');
1437
    rowId.selectedIndex = 0;
1438
 
1439
 
1440
    //Create the xmlHttp object to use in the request
1441
    //stateChangeHandler will fire when the state has changed, i.e. data is received back
1442
    // This is non-blocking (asynchronous)
1443
    xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
1444
 
1445
    //Send the xmlHttp get to the specified url
1446
    xmlHttp_Get(xmlHttp, url);
1447
}
1448
 
5725 dpurdie 1449
function SetDisplay(name, mode)
1450
{
6191 dpurdie 1451
    var o;
1452
    if (o = MM_findObj(name))
1453
    {
1454
        o.style.display = mode;
1455
    }
5725 dpurdie 1456
}
5357 dpurdie 1457
 
1458
function MergePackage ( pkga, pkgb, rowId )
1459
{
1460
    // Set merge hidden field with new value
1461
    MM_findObj( 'ADDPKG_' + rowId ).value = pkga;
6070 dpurdie 1462
    MM_findObj( 'ADDPKG_' + rowId ).removeAttribute("disabled");
5357 dpurdie 1463
 
1464
    var divA = MM_findObj( 'PVA' + rowId );
1465
    var divB = MM_findObj( 'PVB' + rowId );
1466
 
1467
    // Set text equal
1468
    divB.innerHTML = divA.innerHTML;
1469
 
1470
    // Set highlight to blank
1471
    divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
1472
    divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
1473
 
1474
     // Set Change state icon to blank
5725 dpurdie 1475
    SetDisplay( 'IMGSTATE' + rowId, 'none');
5357 dpurdie 1476
 
1477
    // Remove Merge Button
5725 dpurdie 1478
    SetDisplay( 'IMGMERGE' + rowId, 'none');
1479
    SetDisplay( 'IMGREMOVE' + rowId, 'none');
5357 dpurdie 1480
 
1481
    // Show undo button
5725 dpurdie 1482
    SetDisplay( 'IMGUNDO' + rowId, 'block');
5357 dpurdie 1483
}
1484
 
1485
 
1486
function RemovePackage ( pkga, pkgb, rowId )
1487
{
1488
    // Set remove hidden field with new value
1489
    MM_findObj( 'REMOVEPKG_' + rowId ).value = pkgb;
6070 dpurdie 1490
    MM_findObj( 'REMOVEPKG_' + rowId ).removeAttribute("disabled");
5357 dpurdie 1491
 
1492
    var divA = MM_findObj( 'PVA' + rowId );
1493
    var divB = MM_findObj( 'PVB' + rowId );
1494
 
1495
    // Set text equal
1496
    divB.style.textDecoration = 'line-through';
1497
 
1498
    // Set highlight to blank
6070 dpurdie 1499
    if (GetChangeType(rowId) != "A")
5357 dpurdie 1500
    {
1501
        divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
1502
    }
1503
    divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
1504
 
1505
     // Set Change state icon to blank
5725 dpurdie 1506
    SetDisplay( 'IMGSTATE' + rowId , 'none');
5357 dpurdie 1507
 
1508
    // Remove Merge Button
5725 dpurdie 1509
    SetDisplay( 'IMGMERGE' + rowId , 'none');
1510
    SetDisplay( 'IMGREMOVE' + rowId , 'none');
5357 dpurdie 1511
 
1512
    // Show undo button
5725 dpurdie 1513
    SetDisplay( 'IMGUNDO' + rowId ,'block');
5357 dpurdie 1514
}
1515
 
6070 dpurdie 1516
function GetChangeType(rowId)
1517
{
1518
    var cht = MM_findObj( 'IMGSTATE' + rowId );
1519
    var chd = '?';
1520
    if (cht) {
1521
       chd = cht.getAttribute('data_ct');
1522
    }
1523
    return chd;
1524
}
5357 dpurdie 1525
 
1526
function UndoPackage ( rowId )
1527
{
1528
    // Set merge/remove hidden field with new value
1529
    MM_findObj( 'ADDPKG_' + rowId ).value = '';
6070 dpurdie 1530
    MM_findObj( 'ADDPKG_' + rowId ).setAttribute("disabled", "disabled" );
5357 dpurdie 1531
    MM_findObj( 'REMOVEPKG_' + rowId ).value = '';
6070 dpurdie 1532
    MM_findObj( 'REMOVEPKG_' + rowId ).setAttribute("disabled", "disabled" );
5357 dpurdie 1533
 
1534
    var divA = MM_findObj( 'PVA' + rowId );
1535
    var divB = MM_findObj( 'PVB' + rowId );
1536
 
1537
    // Set text equal
6190 dpurdie 1538
    //divB.innerHTML = divB.getAttribute('data_pkg');
5357 dpurdie 1539
    divB.style.textDecoration = 'none';
1540
 
1541
    // Set highlight to blank
6070 dpurdie 1542
    divA.style.backgroundColor = divA.getAttribute('data_color');
1543
    divB.style.backgroundColor = divB.getAttribute('data_color');
5357 dpurdie 1544
 
1545
     // Set Change state icon to blank
5725 dpurdie 1546
    SetDisplay( 'IMGSTATE' + rowId, 'block');
5357 dpurdie 1547
 
1548
    // Remove Merge Button
6070 dpurdie 1549
    var chd = GetChangeType(rowId);
1550
    if (chd == "R")
5357 dpurdie 1551
    {
5725 dpurdie 1552
        SetDisplay( 'IMGMERGE' + rowId, 'block');
5357 dpurdie 1553
    }
6070 dpurdie 1554
    else if ( (chd == "A") || (chd == "") )
5357 dpurdie 1555
    {
5725 dpurdie 1556
        SetDisplay( 'IMGREMOVE' + rowId, 'block');
5357 dpurdie 1557
    }
1558
    else
1559
    {
5725 dpurdie 1560
        SetDisplay( 'IMGMERGE' + rowId, 'block');
1561
        SetDisplay( 'IMGREMOVE' + rowId,'block');
5357 dpurdie 1562
    }
1563
 
1564
    // Show undo button
5725 dpurdie 1565
    SetDisplay( 'IMGUNDO' + rowId, 'none');
5357 dpurdie 1566
}
1567
 
1568
 
6196 dpurdie 1569
//  An object to contain the filter data
1570
var filter;
1571
 
1572
// Flip the current state of each Filter check boxes
1573
function initFilter() {
1574
    filter = new Object();
1575
    filter.btn = document.getElementById("difilterBtn");
1576
    filter.x = document.getElementsByName("difilter");
1577
    filter.len = filter.x.length;
1578
 
1579
    saveFilterState();
1580
    filter.oValues = filter.Values.slice(0);
1581
    setFilterTitle();
1582
}
1583
 
1584
function toggleFilters()
1585
{
1586
    switch ( filter.State )
1587
    {
1588
    case 'Flip':
1589
        for (var i = 0; i < filter.len; i++) {
1590
            filter.x[i].checked = !filter.x[i].checked;
1591
        }
1592
        filter.State = 'On';
1593
        break;
1594
 
1595
    case 'On':
1596
        for (var i = 0; i < filter.len; i++) {
1597
            filter.x[i].checked = true;
1598
        }
1599
        filter.State = 'Off';
1600
        break;
1601
 
1602
    case 'Off':
1603
        for (var i = 0; i < filter.len; i++) {
1604
            filter.x[i].checked = false;
1605
        }
1606
        filter.State = 'Restore';
1607
        break;
1608
 
1609
    case 'Restore':
1610
        for (var i = 0; i < filter.len; i++) {
1611
            filter.x[i].checked = filter.Values[i];
1612
        }
1613
        filter.State = 'Reset';
1614
        break;
1615
 
1616
    default:
1617
        for (var i = 0; i < filter.len; i++) {
1618
            filter.x[i].checked = filter.oValues[i];
1619
        }
1620
        filter.State = 'Flip';
1621
        break;
1622
    }
1623
 
1624
    setFilterTitle();
1625
    EnableRefresh();
1626
}
1627
 
1628
// Enable the "Refresh" button - when filter is changed
1629
function EnableRefresh(state)
1630
{
1631
    if ( filter.btn ) {
1632
        // Check if shown values match the initial values
1633
        var btnState = true;
1634
        for (var i = 1; i < filter.len; i++) {
1635
            console.log ( filter.x[i].checked,filter.oValues[i],  filter.x[i].checked != filter.oValues[i] )
1636
            if ( filter.x[i].checked != filter.oValues[i] ) {
1637
                btnState = false;
1638
                break;
1639
            }
1640
        }
1641
        filter.btn.disabled = btnState; 
1642
    }
1643
}
1644
// One of the filter buttons has been clicked
1645
//  First one is special (and we don't want to know about its click)
1646
function filterClicked(e)
1647
{
1648
    if ( ! e.target.id ) {
1649
        saveFilterState();
1650
        setFilterTitle();
1651
        EnableRefresh();
1652
    }
1653
}
1654
 
1655
function saveFilterState()
1656
{
1657
    filter.State = 'Flip';
1658
    filter.Title = filter.x[0];
1659
    filter.Values = new Array(filter.len);
1660
    for (var i = 0; i < filter.len; i++) {
1661
        filter.Values[i] = filter.x[i].checked;
1662
    }
1663
}
1664
 
1665
function setFilterTitle()
1666
{
1667
    filter.Title.checked = false;
1668
    filter.Title.title = "Toggle filters: Flip, On, Off, Restore, Reset - " + filter.State;
1669
}
1670
 
6877 dpurdie 1671
function processAll(tagClass)
1672
{
1673
    var elist = document.getElementsByClassName(tagClass);
1674
    for (let item of elist) {
1675
        item.onclick.apply(item);
1676
    }
1677
}
1678
 
5357 dpurdie 1679
//-->
1680
</script>
6191 dpurdie 1681
<style>
1682
#filterTable td { background-color:#E4E9EC }
6877 dpurdie 1683
.BulkButton {width: 100%;text-align: left; margin:1px;}
6191 dpurdie 1684
</style>
5357 dpurdie 1685
</head>
6070 dpurdie 1686
<!-- HEADER -->
1687
<!--#include file="_header.asp"-->
6240 dpurdie 1688
<form name="FormName" method="post" action="<%=ScriptName%>">
5357 dpurdie 1689
    <!-- BODY ---->
1690
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
1691
        <tr>
6877 dpurdie 1692
            <td width="20%" valign="top" class='bg_panel'><%Call PanelA%></td>
1693
            <td width="60%" rowspan="2" valign="top" align="center" class='bg_grey'><%Call CenterPanel%></td>
1694
            <td width="20%" valign="top" class='bg_panel'><%Call PanelB%></td>
5357 dpurdie 1695
        </tr>
1696
        <tr>
6876 dpurdie 1697
            <td class='bg_panel_btm'>
5357 dpurdie 1698
                <img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30">
1699
            </td>
6876 dpurdie 1700
            <td class='bg_panel_btm'>
5357 dpurdie 1701
                <img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30">
1702
            </td>
1703
      </tr>
1704
    </table>
1705
</form>
1706
<%
1707
If email Then
1708
    Send_Email    "Release Manager Notification",_
1709
                     ADMIN_EMAIL, _
1710
                     objAccessControl.UserEmail,_
1711
                     "Release Comparisons from Release Manager", _
1712
                     "Your requested report...",_
6197 dpurdie 1713
                     reportPath
5357 dpurdie 1714
End If
1715
%>
5957 dpurdie 1716
<!-- FOOTER -->
1717
<!--#include file="_footer.asp"-->
5357 dpurdie 1718
</body>
1719
</html>
6191 dpurdie 1720