Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
6951 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
7250 dpurdie 4
'   form_rep_new_versions.asp
7288 dpurdie 5
'   Show newer versions of packages in this release
7250 dpurdie 6
'
6951 dpurdie 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
<!--#include file="common/conf.asp"-->
15
<!--#include file="common/globals.asp"-->
16
<!--#include file="common/formating.asp"-->
17
<!--#include file="common/qstr.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/_form_window_common.asp"-->
20
<!--#include file="_action_buttons.asp"-->
21
<!--#include file="class/classActionButtonControl.asp"-->
22
<% '------------ ACCESS CONTROL ------------------ %>
6971 dpurdie 23
<!--#include file="_access_control_login_optional.asp"-->
6951 dpurdie 24
<!--#include file="_access_control_general.asp"-->
25
<!--#include file="_access_control_action_project.asp"-->
26
<%
27
'------------ Variable Definition -------------
28
Dim parRtagId
6971 dpurdie 29
Dim canModify
30
Dim disabledTxt : disabledTxt = ""
31
Dim disabledImage : disabledImage = ""
6951 dpurdie 32
'------------ Constants Declaration -----------
33
'------------ Variable Init -------------------
34
parRtagId = Request("rtag_id")
35
objPMod.PersistInQryString("rtag_id")
6971 dpurdie 36
canModify = releaseIsMergable(releaseInfoHash("official"))
6951 dpurdie 37
 
6971 dpurdie 38
If NOT canModify Then
39
    disabledTxt = " - Disabled"
40
    disabledImage = ",url('images/abtn__small_remove.gif')  no-repeat center center"
41
End If
6951 dpurdie 42
 
6971 dpurdie 43
'------------ RUN BEFORE PAGE RENDER ----------
6951 dpurdie 44
'----------------------------------------------
6971 dpurdie 45
Sub InsertLocalStyle%>
6953 dpurdie 46
    <style type="text/css">
6971 dpurdie 47
        td.useThis:not(.useRemove) {background: url('images/i_added.gif') no-repeat center center<%=disabledImage%>; cursor: pointer; }
48
        td.useThis.useRemove {background: url('images/i_removed.gif') no-repeat center center<%=disabledImage%>; cursor: pointer; }
6970 dpurdie 49
        .tooOld:not(.forceShow),.hiddenChild:not(.forceShow) {display:none;}
6971 dpurdie 50
        table.dataTable tbody tr.child{background-color: #e0e0e0;}
6953 dpurdie 51
    </style>
52
<%End Sub
53
'----------------------------------------------
6951 dpurdie 54
Sub InsertJavaScript %>
55
      <script language="JavaScript" type="text/JavaScript">
6971 dpurdie 56
 
57
        formTips.tips.h_nvReport    = stdTip(400, 'Newer Version Report', 'This page will display newer (non-ripple) versions of packages in the current release.' +
58
                                                                    '<p>The intent of this page is to allow a developer to see if work has been performed on ' + 
59
                                                                    'packages in this release and consider including the new version into the release.' + 
60
                                                                    '<p>Its possible to merge a newer version into the current Release, and to undo the operation.' + 
61
                                                                    '<p>A filter allows only recent versions to be considered.' 
62
                                                                    );
63
 
64
        formTips.tips.h_merge       = stdTip(300, 'Merge Version', 'The selected version can be merged into the Release.' +
65
                                                                    '<p>The version will added as a Pending Merge.' + 
66
                                                                    '<p>Once all required versions have been selected they will need to be released into the Release.' 
67
                                                                    );
68
 
69
 
70
 
6951 dpurdie 71
      $(document).ready(function() {
6970 dpurdie 72
        var nvAgeLimit = 31; 
6951 dpurdie 73
 
74
        // Generate Row Data from JavaScript data
75
        function getPkgName ( row, type, set, meta ) {
6970 dpurdie 76
          var hasChild = (row[10] == 1);
77
          var vis='togglerows';
78
 
79
          if (row[10] != 1 ) {
80
              vis='invisible';
6951 dpurdie 81
          }
82
          var img = "<img src='images/bt_plus.gif' border='0' align='absmiddle' hspace='3' class='pointer "+ vis +"'>"
83
 
84
          var hRef = "view_by_version.asp?pkg_id=" + row[2] + "&hideRipple=True" + "&fpkgversion=*" + row[5]
85
          return img + "<a href=" + hRef + ">" + row[3] + "</a>"
86
        }
87
 
88
        function getVersion ( row, type, set, meta ) {
6971 dpurdie 89
          var hRef = "fixed_issues.asp?pv_id=" + row[0] + "&rtag_id=" + <%=parRtagId%>
6951 dpurdie 90
          return "<a href=" + hRef + ">" + row[4] + "</a>"
91
        }
92
 
93
        function getNewerVersion ( row, type, set, meta ) {
6971 dpurdie 94
          var img = "<img src='images/history.png' width=11 height=11 border='0' align='absmiddle' hspace='3' class='pointer showHistory fright' title='Show History'>"
95
          var img2 = "<img src='images/i_used_by.gif' width=11 height=11 border='0' align='absmiddle' hspace='3' class='pointer showProjects fright' title='Show Projects using this version'>"
96
          var hRef = "fixed_issues.asp?pv_id=" + row[7]
97
          return "<a href=" + hRef + ">" + row[8] + "</a>" + img2 + img
6951 dpurdie 98
        }
99
 
6952 dpurdie 100
        var nvTable;
101
        function loadTable() {
102
            /* Init DataTables */
103
            nvTable = $('#nvtable').DataTable({
104
                sDom : "rti",
105
                data : dataSet,
7250 dpurdie 106
                autoWidth : false,
6952 dpurdie 107
                columns : [
108
                { data : getPkgName },
6953 dpurdie 109
                { data : getVersion  , orderable : false},
6952 dpurdie 110
                { data : [1] },
111
                { data : [6] },
6971 dpurdie 112
                { data : getNewerVersion  , orderable : false, className : 'tight'},
6970 dpurdie 113
                { data : [9], orderData :[0,5] },
6953 dpurdie 114
                { data : null, defaultContent: "", className : 'useThis' , orderable : false},
115
                ],
116
                createdRow : function( row, data, dataIndex, cells ) {
117
                    $(row).attr('data-npvid', data[7]).attr('data-pvid', data[0]);
6970 dpurdie 118
                    if ( data[10] == 2 ) {
119
                        $(row).addClass('hiddenChild child');
120
                    }
121
                    if ( data[12] == 'A' ) {
122
                        $(row).addClass('forceShow');
123
                        $('td', row).eq(6).addClass('useRemove');
124
                    }
125
                    if ( nvAgeLimit > 0 ) {
126
                        if ( parseInt(data[11]) > nvAgeLimit ) {
127
                            $(row).addClass('tooOld');
128
                        }
129
                    }
6953 dpurdie 130
                },
6970 dpurdie 131
                infoCallback: function( settings, start, end, max, total, pre ) {
132
                     return getUpdateInfo();
133
                },
6952 dpurdie 134
                scrollCollapse : true,
135
                paging : false,
136
                "order": [[0,'asc']],
137
                "info": true,
138
                "columnDefs" : [ 
139
                    {className : "dt-nowrap", targets: "_all" },
140
                ],
141
            });
142
        }
143
 
6971 dpurdie 144
        //  Load Data once via AJAX
145
        //  When loaded
146
        //      display the datatable
147
        //      Update 'title' (hover text) on controls
6952 dpurdie 148
        var dataSet;
149
        $.get({
150
            url: 'rep_new_versions_json.asp',
151
            dataType : 'json',
152
            data : {
153
                   rtag_id : <%=parRtagId%>,
154
                   action : 'getData'
155
                   },
156
            success : function(data, textStatus, jqXHR){
157
                dataSet = data.aaData;
158
                loadTable();
6971 dpurdie 159
                $('td.useThis').prop('title', 'Merge this version into the Release<%=disabledTxt%>');
160
                $('td.useRemove').prop('title', 'Remove this version from pending merge<%=disabledTxt%>');
6952 dpurdie 161
            }
6953 dpurdie 162
        }).done( function(){
163
            $('#loading').remove();
6952 dpurdie 164
 
6953 dpurdie 165
        }).fail( function(jqXHR, textStatus, errorThrown){
166
                    setInfo("Error: " + errorThrown );
6951 dpurdie 167
        });
168
 
6952 dpurdie 169
 
6973 dpurdie 170
        //  Add event listener for opening closing extended version list
6951 dpurdie 171
        $('#nvtable tbody').on('click', 'img.togglerows', function () {
6953 dpurdie 172
            clearInfo();
6951 dpurdie 173
            var tr = $(this).closest('tr');
6970 dpurdie 174
            var pvid = tr.data('pvid');
175
            var children = $('#nvtable tbody tr[data-pvid="'+pvid+'"].child');
6951 dpurdie 176
 
6970 dpurdie 177
            if ( tr.hasClass('shown') ) {
6951 dpurdie 178
                // This row is already open - close it
6970 dpurdie 179
                children.addClass('hiddenChild');
6951 dpurdie 180
                tr.removeClass('shown');
181
                $(this).attr('src', 'images/bt_plus.gif');
182
            }
183
            else {
184
                // Open this row
6970 dpurdie 185
                children.removeClass('hiddenChild');
6951 dpurdie 186
                tr.addClass('shown');
187
                $(this).attr('src', 'images/bt_minus.gif');
188
            };
6970 dpurdie 189
            updateInfo();
6951 dpurdie 190
        });
6971 dpurdie 191
<%If canModify Then %>
6953 dpurdie 192
        // Add event listner to all a verion to be 'used'
193
        $('#nvtable tbody').on('click', '.useThis', function () {
194
            var tgtEl = $(this)
195
            var tr = $(this).closest('tr');
196
            var pvid = tr.data('pvid');
197
            var npvid = tr.data('npvid');
198
            var isaRemove = tgtEl.hasClass('useRemove');
199
            $("body").addClass("cursor-wait");
6973 dpurdie 200
            $(tr).addClass('highlightRow');
6953 dpurdie 201
            clearInfo();
202
 
203
            $.get({
204
                url: 'rep_new_versions_json.asp',
205
                dataType : 'json',
206
                data : {
207
                       rtag_id : <%=parRtagId%>,
208
                       action : 'mergeVersion',
209
                       pv_id : pvid,
210
                       npv_id : npvid,
211
                       mode : isaRemove ? 'R' : 'A'
212
                       },
213
                success : function(data, textStatus, jqXHR){
6970 dpurdie 214
                            if (data.result != 0){
6953 dpurdie 215
                                setInfo("Error: " + (data.hasOwnProperty('emsgSummary') ? data.emsgSummary : "Reason not given"));
6971 dpurdie 216
                                return;
6953 dpurdie 217
                            }
6971 dpurdie 218
                            tgtEl.toggleClass('useRemove');
219
                            tr.toggleClass('forceShow');
220
                    }
6953 dpurdie 221
            }).done( function(){
222
 
223
            }).always( function(){
224
                $("body").removeClass("cursor-wait");
225
 
226
            }).fail( function(jqXHR, textStatus, errorThrown){
227
                        setInfo("Error: " + errorThrown );
228
            });
229
        });
6971 dpurdie 230
<%End If%>
6953 dpurdie 231
 
6952 dpurdie 232
       //  Toggle All the extended versions
6970 dpurdie 233
        //  Show/Hide the ALL children, unless they have been 'merged'
6951 dpurdie 234
 
6952 dpurdie 235
        $('#toggleAll').click(function(event){
236
            event.stopPropagation();
237
            event.stopImmediatePropagation();
6953 dpurdie 238
            clearInfo();
6951 dpurdie 239
 
6952 dpurdie 240
            var hide = $(this).hasClass('allOn');
241
            $(this).attr('src', hide ? 'images/bt_plus.gif' : 'images/bt_minus.gif');
242
            $(this).toggleClass('allOn');
6970 dpurdie 243
 
6952 dpurdie 244
            $('#nvtable tbody img.togglerows').each(function(idx, el){
6951 dpurdie 245
 
6952 dpurdie 246
                var tr = $(this).closest('tr');
6970 dpurdie 247
                var pvid = tr.data('pvid');
248
                var children = $('#nvtable tbody tr[data-pvid="'+pvid+'"].child');
6951 dpurdie 249
 
6970 dpurdie 250
                if ( tr.hasClass('shown') && hide ) {
6952 dpurdie 251
                    // This row is already open - close it
6970 dpurdie 252
                    children.addClass('hiddenChild');
6952 dpurdie 253
                    tr.removeClass('shown');
254
                    $(this).attr('src', 'images/bt_plus.gif');
255
                }
6970 dpurdie 256
                if ( !tr.hasClass('shown') && !hide ) {
6952 dpurdie 257
                    // Open this row
6970 dpurdie 258
                    children.removeClass('hiddenChild');
6952 dpurdie 259
                    tr.addClass('shown');
260
                    $(this).attr('src', 'images/bt_minus.gif');
261
                };
262
            });
6970 dpurdie 263
            updateInfo();
6952 dpurdie 264
        });
6951 dpurdie 265
 
6971 dpurdie 266
        //  Show History button
267
        $('#nvtable tbody').on('click', '.showHistory', function (event) {
268
            var tr = $(this).closest('tr');
269
            var pvid = tr.data('pvid');
270
            var npvid = tr.data('npvid');
271
            var data = nvTable.row( tr ).data();
6973 dpurdie 272
            $(tr).addClass('highlightRow');
6977 dpurdie 273
            var url = '_wform_versions_history_release_notes.asp?rtag_id=<%=parRtagId%>&hideRipple=True&pv_id='+npvid+'&pkg_id='+data[2]+'&FLpkg_version=*'+data[5];
6971 dpurdie 274
            var features = 'left=50,top=50,resizable=yes,scrollbars=yes,width=1000,height='+ ( screen.height - 100 );
275
            window.open(url,'History', features);
276
        });
277
 
278
        // Show Project Version dialog
279
 
280
        $('#nvtable tbody').on('click', '.showProjects', function (event) {
281
            var tr = $(this).closest('tr');
282
            var pvid = tr.data('pvid');
283
            var npvid = tr.data('npvid');
284
            var data = nvTable.row( tr ).data();
6973 dpurdie 285
            $(tr).addClass('highlightRow');
6971 dpurdie 286
            $('#popmenu').load('rep_new_versions_info.asp', {pvid: npvid});
287
        });
288
 
6973 dpurdie 289
 
290
        // Highlight row that has had specific operation
291
        // 
292
        $('#nvtable tbody').on('click', 'tr', function (event) {
293
            var allTr = $('#nvtable tbody tr').removeClass('body_row_sel_outline');
294
            allTr.filter('.highlightRow').addClass('body_row_sel_outline').removeClass('highlightRow');
295
        });
296
 
6953 dpurdie 297
        //  Ajax Error message support
298
        function setInfo(txt) {
299
            $("#nvError").text(txt).addClass("errorPanel").show();
300
        }
301
 
302
        function clearInfo() {
303
            $("#nvError").text(" ").removeClass("errorPanel").hide();
304
        }
305
 
6970 dpurdie 306
        // Update the (simulated ) table info
307
        function getUpdateInfo() {
308
            var children = $('#nvtable tbody tr');
309
            var total = children.length;
310
            var hidden = children.filter('.tooOld:not(.forceShow),.hiddenChild:not(.forceShow)').length;
311
 
312
            return "Showing "+ (total - hidden) +" of " + total + ". (" + hidden + " not shown)";
313
 
314
        }
6973 dpurdie 315
 
6970 dpurdie 316
        function updateInfo() {
317
            $("#nvtable_info").text(getUpdateInfo());
318
        }
319
 
320
        //  Update the table when the Age filter is modified
321
        $('#nvArg').change(function(event){
322
            nvAgeLimit = $("input[name='age']:checked").val();
323
            $('#nvAgeNum').val(nvAgeLimit);
324
            updateAge();
325
        });
326
 
327
        //  Update the table when the Age Number is modified
328
        $('#nvAgeNum').change(function(event){
329
            nvAgeLimit = $('#nvAgeNum').val();
330
            $("#nvAgeUsr").prop('checked', true);
331
            updateAge();
332
        });
333
 
334
        //  Reprocess the table after an age filter update
335
        function updateAge(){
336
            nvTable.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
337
                var data = this.data();
338
                var row = this.node();
339
                var hide = ( nvAgeLimit > 0  && (parseInt(data[11]) > nvAgeLimit) );
340
 
341
                if ( hide ) {
342
                    $(row).addClass('tooOld');
343
                } else {
344
                    $(row).removeClass('tooOld');
345
                }
346
            } );
347
            updateInfo();
348
        }
349
 
6952 dpurdie 350
      })
351
    </script>
352
<%End Sub
6951 dpurdie 353
'----------------------------------------------
354
Sub LeftPanelContent
355
%>
6970 dpurdie 356
<fieldset class="body_rowg fset">
357
    <legend>Filter</legend>
358
        <span id=nvArg>
6971 dpurdie 359
            <input     type="radio" name="age" value="1"> Last Day
360
            <br><input type="radio" name="age" value="7"> Last Week
6970 dpurdie 361
            <br><input type="radio" name="age" value="14"> Last 2 Weeks
362
            <br><input type="radio" name="age" value="21"> Last 3 Weeks
363
            <br><input type="radio" name="age" value="31" checked="checked"> Last Month
364
            <br><input type="radio" name="age" value="62"> Last 2 Months
365
            <br><input type="radio" name="age" value="365"> Last Year
366
            <br><input type="radio" name="age" value="0"> All
367
        </span>
368
            <br><input type="radio" id=nvAgeUsr name="age" value="0"> Last <input type="number" id=nvAgeNum value="31" size=4 min=1 style="width:4em;font-size:11px">
6951 dpurdie 369
</fieldset>
370
<%
371
End Sub
372
 
373
Sub MainPanelContent
374
%>
375
   <div class=Panel>
6971 dpurdie 376
    <div class=rounded_box_caption>Newer Version Report<%=Quick_Help("h_nvReport")%></div>
6951 dpurdie 377
    <div class="rounded_box">
378
       <div class=PanelFrame>
379
            <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
380
            <!--#include file="messages/_msg_inline.asp"-->
381
            <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
382
            <div class=textPanel>
383
                <table id='nvtable' width="100%" class="stdGrey">
384
                   <thead>
6971 dpurdie 385
                      <th nowrap><img id='toggleAll' src='images/bt_plus.gif' border='0' align='absmiddle' hspace='3' class='pointer' title='Expand/Hide other versions'>Package Name</th>
6952 dpurdie 386
                      <th nowrap>Version</th>
387
                      <th nowrap>Base View</th>
388
                      <th nowrap>Created</th>
389
                      <th nowrap>Newer Version</th>
390
                      <th nowrap>Created</th>
6971 dpurdie 391
                      <th nowrap><%=Quick_Help("h_merge")%></th>
6951 dpurdie 392
                   </thead>
393
                    <tr id='loading' >
394
                        <td colspan=7 class=tcenter>
395
                            <img src='images/transparent-background-loading.gif'>
396
                        </td>
397
                   </tr>
398
              </table>
399
            </div>
6953 dpurdie 400
            <div id=nvError class='tleft err_alert'>
401
            </div>
6951 dpurdie 402
       </div>
403
    </div>
404
   </div>
405
<%
406
End Sub
407
%>
408
<html>
409
   <head>
410
      <title>Release Manager</title>
411
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
412
      <meta http-equiv="Pragma" content="no-cache">
413
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
414
      <link rel="stylesheet" href="images/release_manager_style.css?ver=<%=VixVerNum%>" type="text/css">
415
      <link rel="stylesheet" href="images/navigation.css?ver=<%=VixVerNum%>" type="text/css">
416
      <script language="JavaScript" src="images/common.js?ver=<%=VixVerNum%>"></script>
6971 dpurdie 417
      <!-- TIPS -->
418
      <script language="JavaScript" src="images/tipster.js?ver=<%=VixVerNum%>"></script>
419
      <script language="JavaScript" src="images/_help_tips.js?ver=<%=VixVerNum%>"></script>
6951 dpurdie 420
      <!-- DROPDOWN MENUS -->
6971 dpurdie 421
      <%bJqueryVix=TRUE%>
6951 dpurdie 422
      <%bJqueryDataTables = TRUE%>
7250 dpurdie 423
      <%sJqueryDataTablesCss="dataTables.vix.grey.css"%>
6951 dpurdie 424
      <!--#include file="_jquery_includes.asp"-->
425
      <!--#include file="_menu_def.asp"-->
426
      <script language="JavaScript1.2" src="images/popup_menu.js?ver=<%=VixVerNum%>"></script>
427
      <%Call InsertJavaScript %>
6953 dpurdie 428
      <%Call InsertLocalStyle %>
6951 dpurdie 429
   </head>
430
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
431
      <!-- HEADER -->
432
      <!--#include file="_header.asp"-->
433
      <!-- BODY ---->
434
      <table class="full_table">
435
         <tr>
436
            <td width="146px" class="bg_panel" valign="top">
437
                <%Call LeftPanelContent%>
438
            </td>
439
            <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
440
                <%Call MainPanelContent%>
441
            </td>
442
         </tr>
443
         <tr>
444
            <td class="bg_panel_btm" height="350">
445
                <img src="images/release_stats.png" vspace="20" hspace="30"></td>
446
         </tr>
447
      </table>
448
      <!-- FOOTER -->
449
      <!--#include file="_footer.asp"-->
450
   </body>
451
</html>
452