Subversion Repositories DevTools

Rev

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

<%@LANGUAGE="VBSCRIPT"%>
<%
'   sdk_versions.asp
'   This file is designed to be injected (loaded) into a 'div' on a window
'
'   Display the SDK Versions available for the specified SDK
'   Allow selection of an SDK Version
'       - To be edited
'       - Allow filering of SDK Versions
'       - Allow state change of versions
'       - Allow creation of new versions
'   
%>
<%
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"-->
<%
'------------ ACCESS CONTROL ------------------
%>
<!--#include file="_access_control_general.asp"-->
<!--#include file="common/globals_sdk.asp"-->
<%
'------------ Variable Definition -------------
Dim editMode
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
editMode = "disabled"
If canActionControl("AdminSdk") Then editMode = ""

%>
<script>
//# sourceURL=sdk_versions.asp

//  Populate the header of this page
//
//  Get getSdkVersionDetails
//      When this is complete we will populate the remainder of the
//      page.
var table;
var sdkDetails = {};
getAjaxData (
    "sdk_opr_json.asp",
    { action: "getSdkDetails", sdk_id : <%=parSdk_id%> },
    function(data){
        sdkDetails = data.aaData;
        $("#sdk_section_head").text( sdkDetails.SDK_NAME);
        detailsAvailable();
    });    

//  Basic details are available
//      Configure the remainder of the widgets on the page
function detailsAvailable()
{
    //  Configure the Summary Table
    table = $('#sdk_versions').DataTable({
            deferRender: true,
            dom: "rtiS",
            sScrollY: $( document ).height() - 300,
            scrollCollapse: true,
            processing: true,
            retrieve:true,
            serverSide: true,
            ajax : {
                url : "sdk_versions_json.asp",
                data : function (o){
                    o.sdk_id = <%=parSdk_id%>;
                    o.sdkstateFilter = getDisplayFilter();
                }
            },

            ordering: true,
             order: [[ 1, "asc" ]],
             columns: [
                { data: "SDKTAG_ID", visible : false },
                { data: "SDKTAG_NAME", width: "20%", className: "dt-nowrap"  },
                { data: "DESCRIPTION" },
                { data: "CREATED_STAMP_TXT", className: "dt-nowrap" },
                { data: "CREATOR_NAME" , className: "dt-nowrap"},
                { data: "SDK_STATE_TEXT", width: "5%"},
                { data: "SDK_CONTROLS", orderable: false, width: "5%",className: "dt-nowrap" }
            ],
            //  Add class to rows that we want to highlight
            createdRow : function( row, data, index) {
                $(row).addClass('mainTable');
                }
            });

//  Process each row of table data before it is presented to the table scroller
//  Process the raw Ajax data
//      Add 'Edit' box
//      Decode State
$('#sdk_versions').on('xhr.dt', function ( e, settings, json ) {
        $.each(json.aaData, function(idx,row){

            switch (row.SDK_STATE)
            {
            case 'U' : row.SDK_STATE_TEXT = 'WIP'; break; 
            case 'R' : row.SDK_STATE_TEXT = 'Released'; break; 
            case 'D' : row.SDK_STATE_TEXT = 'Deprecated'; break; 
            default  : row.SDK_STATE_TEXT = 'Unknown:' + row.SDK_STATE; break; 
            }
            row.SDK_CONTROLS  = '';
            row.SDK_CONTROLS += "<img <%=editMode%> class='rmbutton editSdk' data-sdktag_id='" + row.SDKTAG_ID + "' title='View/Edit Version Name and Description' src='images/i_memo.gif' />";
<%If canActionControlInProject("CreateSdk") Then %>
            row.SDK_CONTROLS += "<img class='rmbutton modifySdk' data-sdktag_id='" + row.SDKTAG_ID + "' title='Modify content of the SDK' style='margin-left:3px' src='images/i_edit.gif' / >";
<%Else%>
            row.SDK_CONTROLS += "<img class='rmbutton modifySdk' data-sdktag_id='" + row.SDKTAG_ID + "' title='View content of the SDK' style='margin-left:3px' src='images/i_drill_down.gif' / >";
<%End If%>
            row.SDK_CONTROLS += "<img class='rmbutton showUse' data-sdktag_id='" + row.SDKTAG_ID + "' title='Show Users of this SDK' style='margin-left:3px' src='images/i_dependency.gif' />";
<%If canActionControlInProject("CreateSdk") Then %>
            row.SDK_CONTROLS += "<img class='rmbutton delSdk' disabled data-sdktag_id='" + row.SDKTAG_ID + "' title='Delete this version' style='margin-left:3px' src='images/i_delete.gif' />";
<%Else%>
            row.SDK_CONTROLS += "<img class='rmbutton NodelSdk' disabled data-sdktag_id='" + row.SDKTAG_ID + "' title='Delete this version' style='margin-left:3px' src='images/i_delete_disable.gif' />";
<%End If%>

        });
    } );


// Highlight selected row
//  Need to handle nested tables. Just highlight mainTable
$('#sdk_versions tbody').on( 'click', 'tr', function () {
    if ($(this).hasClass('mainTable')) {
        if ( $(this).hasClass('selected') ) {
            $(this).removeClass('selected');
        }
        else {
            table.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    }
} );

// Edit Button
$('#sdk_versions tbody').on( 'click', '.editSdk', function (e) {
     var sdktag_id = $(this).data().sdktag_id;
     $('#popmenu').load('sdk_version_edit.asp', {sdktag_id : sdktag_id});
} );

// Modify Button
$('#sdk_versions tbody').on( 'click', '.modifySdk', function (e) {
     var sdktag_id = $(this).data().sdktag_id;
     $("#sdk_versions").trigger('newPageBody', {url: 'sdk_details.asp', data : {sdktag_id : sdktag_id}});
} );

// Show Button
//  Add/remove child rows and adjust size of the parent scroll window
$('#sdk_versions tbody').on( 'click', '.showUse', function (e) {
     var sdktag_id = $(this).data().sdktag_id;
     var tr = $(this).closest('tr');
     var row = table.row( tr );
     var sb = $('#sdk_versions_wrapper .dataTables_scrollBody');
     var th = sb.height();
     var button = $(this);

     if ( row.child.isShown() ) {
        //  Hide existing data
        var h = row.child().height();
        row.child.hide();
        sb.height(th - h);
        //button.text('Show');
     }
     else {
        // Fetch and display data
        getAjaxData (
            "sdk_opr_json.asp",
            { action: "getSdkUsage", sdktag_id : sdktag_id },
            function(data){
                var txt = '<div style="border: black 1px solid;margin:10px 30px;"><table>';                
                if ( data.aaData.length <= 0 ) {
                    txt += 'No users found';
                }
                else {
                    txt += '<tr><th>Project<th>Release';
                    $.each(data.aaData, function(idx,item){
                        txt += '<tr><td>' + '<a href="'+"rtree.asp?proj_id=" + item.PROJ_ID+'">'+ item.PROJ_NAME +'</a>';
                        txt += '<td>' +   '<a href="'+"dependencies.asp?rtag_id=" + item.RTAG_ID+'">'+item.RTAG_NAME+'</a>';
                    });
                }
                txt += '</table></div>';
                row.child(txt).show();
                var h = row.child().height();
                sb.height( h + th);
                //button.text('Hide');
            });
    }        
});

// Delete Button
$('#sdk_versions tbody').on( 'click', '.delSdk', function (e) {
     var sdktag_id = $(this).data().sdktag_id;
     if ( confirm("Are you sure that you want to delete this version of the SDK") != true ) {
         return;
     }

     getAjaxData (
         "sdk_opr_json.asp",
         { action: "deleteSdkVersion", sdktagId : sdktag_id },
         function(data){
             if (data.useCount > 0 ){
                 alert("Not deleted. SDK is in use");
             } else {
                 $.event.trigger('newPageBody', {url: 'sdk_versions.asp', data : {sdk_id : <%=parSdk_id%>}});
             }
         });
} );


//  Double click in row - Select the SDK Version for display/edit
//$('#sdk_versions tbody').on( 'dblclick', 'tr', function () {
//    $("#sdk_versions").trigger('newPageBody', {url: 'sdk_details.asp', data : {sdktag_id : table.row(this).data().SDKTAG_ID}});
//} );

//  Display control changes
$('#sel_display').on('change', function(){
    if (getDisplayFilter() == '') {
        $('#sel_released').prop('checked', true)
    }
    table.ajax.reload();
});

function getDisplayFilter()
{
    var filter="";
    if ($('#sel_deprecated').is(':checked')){ filter += ",'D'"; }
    if ($('#sel_released').is(':checked'))  { filter += ",'R'"; }
    if ($('#sel_wip').is(':checked'))       { filter += ",'U'"; }

    return filter.substring(1);
}

//  Wire up the 'Add' button
//  This will pop up a dialog loaded from an external file
//
$( '#addSdkVersion' ).click(function() {
    $('#popmenu').load('sdk_version_add.asp', {sdk_id : <%=parSdk_id%>});
    });

//  Listen for any trigger to force the table to be refreshed
$('#sdk_versions').on("sdkVersionAdded", function(){
    table.ajax.reload();
    });
}


function setInfo(txt) {
    $("#sdkd_info").text( txt);
}

function clearInfo(txt) {
    $("#sdkd_info").text(" ");
}

//  getAjaxData - with error processing
//      url - url to fetch
//      data    - additional data to pass to ajax request
//      success - function to call on success
function getAjaxData( url, data, success )
{
    clearInfo();
    $("#sdkd_progressBar").css('visibility', 'visible');
    $.ajax(
    {
        url : url,
        type: "POST",
        data : data,
        dataType : "json",
        cache: false,
        success:function(data, textStatus, jqXHR)
        {
            //data: return data from server
            if (data.result != 0)
            {
                setInfo("Error:" + ((data.error != 0) ? data.emsgSummary : "Reason not given"));
                if (data.error >= 0) disableForm();
                return;
            }
            //  call user success function
            if (jQuery.isFunction(success))
            {
                success(data);
            }
        },
        error: function(jqXHR, textStatus, errorThrown)
        {
            setInfo("Error:" + errorThrown);
            //if fails
        },
        complete : function()
        {
            $("#sdkd_progressBar").css('visibility', 'hidden');
        }
    });

}

</script>
<div class=rmbutton style="position:relative;background-color:#DAD7c8;height:38px;padding:7px;margin-bottom: 7px;">

    <div id=sel_display style="float:left">
        <fieldset style="padding:2px">
            <legend>Display</legend>
            <span>Deprecated</span> <input id=sel_deprecated type=checkbox>
            <span>Released</span>   <input checked id=sel_released type=checkbox>
            <span>WIP</span>        <input checked id=sel_wip type=checkbox>
        </fieldset>
    </div>

</div>

<div class="form_ttl tleft" id=sdk_section_head>
  <!-- Section Header ---->
  Sdk Name
</div>
<div class="rounded_box">
    <table id=sdk_versions class="full_table display" >
        <thead>
        <tr class="body_col form_align">
          <th width="1%"> SDK&nbsp;ID
          <th width="10%"> Version
          <th> Description
          <th> Created
          <th> By
          <th> State
          <th> Configure
        </thead>
    </table>
    <div class=bg_dialog style="position:relative">&nbsp;
<%If canActionControlInProject("CreateSdk") Then %>
        <span id="addSdkVersion" title="Add New SDK Version" style="float:left;">
            <img src="icons/btn_add.gif" width="13" height="13" align="absmiddle" border="0" hspace="3" >
            <a class=abtnItem>New</a>
        </span>
<%End If%>
  <!-- Info / Ajax Progress bar -->
  <div class='bg_dialog body_txt' style='float:left;min-height:1em;margin-left:14px' >
      <img id='sdkd_progressBar' style='visibility:hidden;position:absolute;display:block' src='icons/i_processing.gif' width='79' height='14'>
      <div id=sdkd_info  style='position: absolute;'></div>
  </div>

    </div>
<%If isDefined("rmDebug") Then%>
    <div class="rmDebug" >RmDebug: <%=rmDebug%></div>
<%End If%>
</div>