Subversion Repositories DevTools

Rev

Rev 6973 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'|                                                   |
'|          Edit/View Build Configuration            |
'|                                                   |
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0   ' always load the page, dont store
%>
<!--#include file="common/conf.asp"-->
<!--#include file="common/globals.asp"-->
<!--#include file="common/formating.asp"-->
<!--#include file="common/qstr.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="common/_form_window_common.asp"-->
<!--#include file="_action_buttons.asp"-->
<!--#include file="class/classActionButtonControl.asp"-->
<% '------------ ACCESS CONTROL ------------------ %>
<!--#include file="_access_control_login_optional.asp"-->
<!--#include file="_access_control_general.asp"-->
<!--#include file="_access_control_action_project.asp"-->
<%
'------------ Variable Definition -------------
Dim parRtagId
Dim canModify
Dim disabledTxt : disabledTxt = ""
Dim disabledImage : disabledImage = ""
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parRtagId = Request("rtag_id")
objPMod.PersistInQryString("rtag_id")
canModify = releaseIsMergable(releaseInfoHash("official"))

If NOT canModify Then
    disabledTxt = " - Disabled"
    disabledImage = ",url('images/abtn__small_remove.gif')  no-repeat center center"
End If

'------------ RUN BEFORE PAGE RENDER ----------
'----------------------------------------------
Sub InsertLocalStyle%>
    <style type="text/css">
        td.useThis:not(.useRemove) {background: url('images/i_added.gif') no-repeat center center<%=disabledImage%>; cursor: pointer; }
        td.useThis.useRemove {background: url('images/i_removed.gif') no-repeat center center<%=disabledImage%>; cursor: pointer; }
        .tooOld:not(.forceShow),.hiddenChild:not(.forceShow) {display:none;}
        table.dataTable tbody tr.child{background-color: #e0e0e0;}
    </style>
<%End Sub
'----------------------------------------------
Sub InsertJavaScript %>
      <script language="JavaScript" type="text/JavaScript">

        formTips.tips.h_nvReport    = stdTip(400, 'Newer Version Report', 'This page will display newer (non-ripple) versions of packages in the current release.' +
                                                                    '<p>The intent of this page is to allow a developer to see if work has been performed on ' + 
                                                                    'packages in this release and consider including the new version into the release.' + 
                                                                    '<p>Its possible to merge a newer version into the current Release, and to undo the operation.' + 
                                                                    '<p>A filter allows only recent versions to be considered.' 
                                                                    );

        formTips.tips.h_merge       = stdTip(300, 'Merge Version', 'The selected version can be merged into the Release.' +
                                                                    '<p>The version will added as a Pending Merge.' + 
                                                                    '<p>Once all required versions have been selected they will need to be released into the Release.' 
                                                                    );



      $(document).ready(function() {
        var nvAgeLimit = 31; 

        // Generate Row Data from JavaScript data
        function getPkgName ( row, type, set, meta ) {
          var hasChild = (row[10] == 1);
          var vis='togglerows';

          if (row[10] != 1 ) {
              vis='invisible';
          }
          var img = "<img src='images/bt_plus.gif' border='0' align='absmiddle' hspace='3' class='pointer "+ vis +"'>"

          var hRef = "view_by_version.asp?pkg_id=" + row[2] + "&hideRipple=True" + "&fpkgversion=*" + row[5]
          return img + "<a href=" + hRef + ">" + row[3] + "</a>"
        }

        function getVersion ( row, type, set, meta ) {
          var hRef = "fixed_issues.asp?pv_id=" + row[0] + "&rtag_id=" + <%=parRtagId%>
          return "<a href=" + hRef + ">" + row[4] + "</a>"
        }

        function getNewerVersion ( row, type, set, meta ) {
          var img = "<img src='images/history.png' width=11 height=11 border='0' align='absmiddle' hspace='3' class='pointer showHistory fright' title='Show History'>"
          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'>"
          var hRef = "fixed_issues.asp?pv_id=" + row[7]
          return "<a href=" + hRef + ">" + row[8] + "</a>" + img2 + img
        }

        var nvTable;
        function loadTable() {
            /* Init DataTables */
            nvTable = $('#nvtable').DataTable({
                sDom : "rti",
                data : dataSet,
                columns : [
                { data : getPkgName },
                { data : getVersion  , orderable : false},
                { data : [1] },
                { data : [6] },
                { data : getNewerVersion  , orderable : false, className : 'tight'},
                { data : [9], orderData :[0,5] },
                { data : null, defaultContent: "", className : 'useThis' , orderable : false},
                ],
                createdRow : function( row, data, dataIndex, cells ) {
                    $(row).attr('data-npvid', data[7]).attr('data-pvid', data[0]);
                    if ( data[10] == 2 ) {
                        $(row).addClass('hiddenChild child');
                    }
                    if ( data[12] == 'A' ) {
                        $(row).addClass('forceShow');
                        $('td', row).eq(6).addClass('useRemove');
                    }
                    if ( nvAgeLimit > 0 ) {
                        if ( parseInt(data[11]) > nvAgeLimit ) {
                            $(row).addClass('tooOld');
                        }
                    }
                },
                infoCallback: function( settings, start, end, max, total, pre ) {
                     return getUpdateInfo();
                },
                scrollCollapse : true,
                paging : false,
                "order": [[0,'asc']],
                "info": true,
                "columnDefs" : [ 
                    {className : "dt-nowrap", targets: "_all" },
                ],
            });
        }

        //  Load Data once via AJAX
        //  When loaded
        //      display the datatable
        //      Update 'title' (hover text) on controls
        var dataSet;
        $.get({
            url: 'rep_new_versions_json.asp',
            dataType : 'json',
            data : {
                   rtag_id : <%=parRtagId%>,
                   action : 'getData'
                   },
            success : function(data, textStatus, jqXHR){
                dataSet = data.aaData;
                loadTable();
                $('td.useThis').prop('title', 'Merge this version into the Release<%=disabledTxt%>');
                $('td.useRemove').prop('title', 'Remove this version from pending merge<%=disabledTxt%>');
            }
        }).done( function(){
            $('#loading').remove();

        }).fail( function(jqXHR, textStatus, errorThrown){
                    setInfo("Error: " + errorThrown );
        });


        //  Add event listener for opening closing extended version list
        $('#nvtable tbody').on('click', 'img.togglerows', function () {
            clearInfo();
            var tr = $(this).closest('tr');
            var pvid = tr.data('pvid');
            var children = $('#nvtable tbody tr[data-pvid="'+pvid+'"].child');

            if ( tr.hasClass('shown') ) {
                // This row is already open - close it
                children.addClass('hiddenChild');
                tr.removeClass('shown');
                $(this).attr('src', 'images/bt_plus.gif');
            }
            else {
                // Open this row
                children.removeClass('hiddenChild');
                tr.addClass('shown');
                $(this).attr('src', 'images/bt_minus.gif');
            };
            updateInfo();
        });
<%If canModify Then %>
        // Add event listner to all a verion to be 'used'
        $('#nvtable tbody').on('click', '.useThis', function () {
            var tgtEl = $(this)
            var tr = $(this).closest('tr');
            var pvid = tr.data('pvid');
            var npvid = tr.data('npvid');
            var isaRemove = tgtEl.hasClass('useRemove');
            $("body").addClass("cursor-wait");
            $(tr).addClass('highlightRow');
            clearInfo();

            $.get({
                url: 'rep_new_versions_json.asp',
                dataType : 'json',
                data : {
                       rtag_id : <%=parRtagId%>,
                       action : 'mergeVersion',
                       pv_id : pvid,
                       npv_id : npvid,
                       mode : isaRemove ? 'R' : 'A'
                       },
                success : function(data, textStatus, jqXHR){
                            if (data.result != 0){
                                setInfo("Error: " + (data.hasOwnProperty('emsgSummary') ? data.emsgSummary : "Reason not given"));
                                return;
                            }
                            tgtEl.toggleClass('useRemove');
                            tr.toggleClass('forceShow');
                    }
            }).done( function(){

            }).always( function(){
                $("body").removeClass("cursor-wait");

            }).fail( function(jqXHR, textStatus, errorThrown){
                        setInfo("Error: " + errorThrown );
            });
        });
<%End If%>

       //  Toggle All the extended versions
        //  Show/Hide the ALL children, unless they have been 'merged'

        $('#toggleAll').click(function(event){
            event.stopPropagation();
            event.stopImmediatePropagation();
            clearInfo();

            var hide = $(this).hasClass('allOn');
            $(this).attr('src', hide ? 'images/bt_plus.gif' : 'images/bt_minus.gif');
            $(this).toggleClass('allOn');

            $('#nvtable tbody img.togglerows').each(function(idx, el){

                var tr = $(this).closest('tr');
                var pvid = tr.data('pvid');
                var children = $('#nvtable tbody tr[data-pvid="'+pvid+'"].child');

                if ( tr.hasClass('shown') && hide ) {
                    // This row is already open - close it
                    children.addClass('hiddenChild');
                    tr.removeClass('shown');
                    $(this).attr('src', 'images/bt_plus.gif');
                }
                if ( !tr.hasClass('shown') && !hide ) {
                    // Open this row
                    children.removeClass('hiddenChild');
                    tr.addClass('shown');
                    $(this).attr('src', 'images/bt_minus.gif');
                };
            });
            updateInfo();
        });

        //  Show History button
        $('#nvtable tbody').on('click', '.showHistory', function (event) {
            var tr = $(this).closest('tr');
            var pvid = tr.data('pvid');
            var npvid = tr.data('npvid');
            var data = nvTable.row( tr ).data();
            $(tr).addClass('highlightRow');
            var url = '_wform_versions_history_release_notes.asp?rtag_id=<%=parRtagId%>&hideRipple=True&pv_id='+npvid+'&pkg_id='+data[2]+'&FLpkg_version=*'+data[5];
            var features = 'left=50,top=50,resizable=yes,scrollbars=yes,width=1000,height='+ ( screen.height - 100 );
            window.open(url,'History', features);
        });

        // Show Project Version dialog
        
        $('#nvtable tbody').on('click', '.showProjects', function (event) {
            var tr = $(this).closest('tr');
            var pvid = tr.data('pvid');
            var npvid = tr.data('npvid');
            var data = nvTable.row( tr ).data();
            $(tr).addClass('highlightRow');
            $('#popmenu').load('rep_new_versions_info.asp', {pvid: npvid});
        });


        // Highlight row that has had specific operation
        // 
        $('#nvtable tbody').on('click', 'tr', function (event) {
            var allTr = $('#nvtable tbody tr').removeClass('body_row_sel_outline');
            allTr.filter('.highlightRow').addClass('body_row_sel_outline').removeClass('highlightRow');
        });

        //  Ajax Error message support
        function setInfo(txt) {
            $("#nvError").text(txt).addClass("errorPanel").show();
        }

        function clearInfo() {
            $("#nvError").text(" ").removeClass("errorPanel").hide();
        }

        // Update the (simulated ) table info
        function getUpdateInfo() {
            var children = $('#nvtable tbody tr');
            var total = children.length;
            var hidden = children.filter('.tooOld:not(.forceShow),.hiddenChild:not(.forceShow)').length;

            return "Showing "+ (total - hidden) +" of " + total + ". (" + hidden + " not shown)";

        }

        function updateInfo() {
            $("#nvtable_info").text(getUpdateInfo());
        }

        //  Update the table when the Age filter is modified
        $('#nvArg').change(function(event){
            nvAgeLimit = $("input[name='age']:checked").val();
            $('#nvAgeNum').val(nvAgeLimit);
            updateAge();
        });

        //  Update the table when the Age Number is modified
        $('#nvAgeNum').change(function(event){
            nvAgeLimit = $('#nvAgeNum').val();
            $("#nvAgeUsr").prop('checked', true);
            updateAge();
        });

        //  Reprocess the table after an age filter update
        function updateAge(){
            nvTable.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
                var data = this.data();
                var row = this.node();
                var hide = ( nvAgeLimit > 0  && (parseInt(data[11]) > nvAgeLimit) );

                if ( hide ) {
                    $(row).addClass('tooOld');
                } else {
                    $(row).removeClass('tooOld');
                }
            } );
            updateInfo();
        }

      })
    </script>
<%End Sub
'----------------------------------------------
Sub LeftPanelContent
%>
<fieldset class="body_rowg fset">
    <legend>Filter</legend>
        <span id=nvArg>
            <input     type="radio" name="age" value="1"> Last Day
            <br><input type="radio" name="age" value="7"> Last Week
            <br><input type="radio" name="age" value="14"> Last 2 Weeks
            <br><input type="radio" name="age" value="21"> Last 3 Weeks
            <br><input type="radio" name="age" value="31" checked="checked"> Last Month
            <br><input type="radio" name="age" value="62"> Last 2 Months
            <br><input type="radio" name="age" value="365"> Last Year
            <br><input type="radio" name="age" value="0"> All
        </span>
            <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">
</fieldset>
<%
End Sub

Sub MainPanelContent
%>
   <div class=Panel>
    <div class=rounded_box_caption>Newer Version Report<%=Quick_Help("h_nvReport")%></div>
    <div class="rounded_box">
       <div class=PanelFrame>
            <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!--#include file="messages/_msg_inline.asp"-->
            <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <div class=textPanel>
                <table id='nvtable' width="100%" class="stdGrey">
                   <thead>
                      <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>
                      <th nowrap>Version</th>
                      <th nowrap>Base View</th>
                      <th nowrap>Created</th>
                      <th nowrap>Newer Version</th>
                      <th nowrap>Created</th>
                      <th nowrap><%=Quick_Help("h_merge")%></th>
                   </thead>
                    <tr id='loading' >
                        <td colspan=7 class=tcenter>
                            <img src='images/transparent-background-loading.gif'>
                        </td>
                   </tr>
              </table>
            </div>
            <div id=nvError class='tleft err_alert'>
            </div>
       </div>
    </div>
   </div>
<%
End Sub
%>
<html>
   <head>
      <title>Release Manager</title>
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
      <meta http-equiv="Pragma" content="no-cache">
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <link rel="stylesheet" href="images/release_manager_style.css?ver=<%=VixVerNum%>" type="text/css">
      <link rel="stylesheet" href="images/navigation.css?ver=<%=VixVerNum%>" type="text/css">
      <script language="JavaScript" src="images/common.js?ver=<%=VixVerNum%>"></script>
      <!-- TIPS -->
      <script language="JavaScript" src="images/tipster.js?ver=<%=VixVerNum%>"></script>
      <script language="JavaScript" src="images/_help_tips.js?ver=<%=VixVerNum%>"></script>
      <!-- DROPDOWN MENUS -->
      <%bJqueryVix=TRUE%>
      <%bJqueryDataTables = TRUE%>
      <%sJqueryDataTablesCss="jquery/dataTables.vix.grey.css"%>
      <!--#include file="_jquery_includes.asp"-->
      <!--#include file="_menu_def.asp"-->
      <script language="JavaScript1.2" src="images/popup_menu.js?ver=<%=VixVerNum%>"></script>
      <%Call InsertJavaScript %>
      <%Call InsertLocalStyle %>
   </head>
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
      <!-- HEADER -->
      <!--#include file="_header.asp"-->
      <!-- BODY ---->
      <table class="full_table">
         <tr>
            <td width="146px" class="bg_panel" valign="top">
                <%Call LeftPanelContent%>
            </td>
            <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
                <%Call MainPanelContent%>
            </td>
         </tr>
         <tr>
            <td class="bg_panel_btm" height="350">
                <img src="images/release_stats.png" vspace="20" hspace="30"></td>
         </tr>
      </table>
      <!-- FOOTER -->
      <!--#include file="_footer.asp"-->
   </body>
</html>