Subversion Repositories DevTools

Rev

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

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'|  sdk_details.asp
'|  Edit an SDK Version
'|
'=====================================================
%>
<%
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 modifyState

'------------ Constants Declaration -----------
'------------ Variable Init -------------------
'------------ Before Render -------------------
modifyState = "disabled"
If canActionControlInProject("CreateSdk") Then modifyState = ""

%>
<script language="JavaScript" type="text/javascript">
//# sourceURL=sdk_details.asp

//  Get getSdkVersionDetails
//      When this is complete we will populate the remainder of the
//      page.
var sdkDetails = {};
getAjaxData (
    "sdk_opr_json.asp",
    { action: "getSdkVersionDetails", sdktag_id : <%=parSdkTag_id%> },
    function(data){
        sdkDetails = data.aaData;
        $("#sdkd_section_head").text( sdkDetails.SDK_NAME + " : " + sdkDetails.SDKTAG_NAME);
        $("#sel_state").val([sdkDetails.SDK_STATE]);
        detailsAvailable();
    });    
 
//  Populate the bulk of the display
//      Called once the sdkDetails have been delivered 
function detailsAvailable()
{
    //  Initial population of the Ref SDK Names   
    populateSdkNames(sdkDetails.SDK_ID);
    populateContent(<%=parSdkTag_id%>);    

    $("#sel_sdkname").change(function(){
        populateSdkVersions( $("#sel_sdkname").val());
    });

    $("#chk_sdkversion").change(function(){
        populateSdkVersions( $("#sel_sdkname").val());
    });
        
    $("#sel_sdkversion").change(function(){
        $('#sdk_content').dataTable().api().ajax.reload();
    });

    //  Detect change to the packages displayed
    //      Redisplay on change       
    $("#sel_exposed").change(function(){
        $('#sdk_content').dataTable().api().ajax.reload();
    });

    //  Detect change to the SDK State
    //      Disable all clickable elements - unless a WIP
    $("#sel_state").change(function(){
        sdkDetails.SDK_STATE = $(this).val();
        $('.clickable').attr('disabled',$(this).val() !== 'U');

        getAjaxData (
            "sdk_opr_json.asp",
            { action: "setSdkState", sdktagId : <%=parSdkTag_id%>, sdk_state : $(this).val() }
            );
    });
}


//  Configure the Summary Table
function populateContent(sdktag_id)
{
    table = $('#sdk_content').DataTable({
        deferRender: true,
        dom: "frtiS",
        sScrollY: $( document ).height() - 300,
        scrollCollapse: true,
        processing: true,
        retrieve:true,
        serverSide: true,
        ajax : {
            url : "sdk_details_json.asp",
            data : function (o){
                o.sdktag_id = sdktag_id;
                o.sdk_statefilter = $("#sel_exposed").is(':checked');
                var d = $("#sel_sdkversion").val();
                if (d != null ) {
                    o.sdk_reftag_id = d;
                }
            },
        },
        "ordering": true,
        "order": [[ 1, "asc" ]],

         "columns": [
            { "data": "PV_ID", visible : false },
            { "data": "PKG_NAME" },
            { "data": "PKG_VERSION" , width : "5%" },
            { "data": "REF_PKG_VERSION", width : "5%" },
            { "data": "REF_SDKPKG_CHECK" , width : "1%" },
            { "data": "SDKPKG_CHECK" , width : "1%"},
        ],
    });
}


//  Process each row of table data before it is presented to the table scroller
//  Process the raw Ajax data
//      Create a checkbox for the state
//      Add a data item to the entry - to allow traceback when saving
$('#sdk_content').on('xhr.dt', function ( e, settings, json ) {
        $.each(json.aaData, function(idx,row){
            if (row.SDKPKG_STATE != null) {
                var checked = row.SDKPKG_STATE == "E" ? 'checked' : '';
                var disabled = (sdkDetails.SDK_STATE === 'U' ) ? '' : ' disabled ';
                row.SDKPKG_CHECK = '<input type="checkbox" class=clickable <%=modifyState%> '+ checked + disabled + ' data-pvid='+ row.PV_ID +'>';
            } else {
                row.SDKPKG_CHECK = "";
            }

            if (row.REF_SDKPKG_STATE != null)
            {
                var checked = row.REF_SDKPKG_STATE == "E" ? 'checked' : '';
                row.REF_SDKPKG_CHECK = '<input type="checkbox" ' + checked + ' disabled >';
            } else {
                row.REF_SDKPKG_CHECK = "";
            }

        });
    } );

// Process click on checkboxes within the datatable
//      this - a DOM node
//      $(this) - The jquery wrapped node
//
$('#sdk_content').on( 'click', 'tbody td :checkbox', function () {
    getAjaxData (
        "sdk_opr_json.asp",
        { action : 'setSdkContentState', 
          sdktagId : <%=parSdkTag_id%>, 
          pv_id : $(this).data('pvid'), 
          sdkpkg_state : this.checked ? 'E' : '-' 
        });
    });

// Single click on row - Highlight selected row
$('#sdk_content').on( 'click', 'tbody tr', function () {
    if ( $(this).hasClass('selected') ) {
        $(this).removeClass('selected');
    }
    else {
        table.$('tr.selected').removeClass('selected');
        $(this).addClass('selected');
    }
} );


//  Populate the Reference Project
//      sdk_id  - Select this entry if possible
function populateSdkNames(sdk_id) {
    getAjaxData (
        "sdk_opr_json.asp",
        { action: "getSdkNames" },
        function(data){
            // Populate selection
            var $options = $("#sel_sdkname").empty();
            var name
            $options.append($("<option />").val(null).text('Select One'));
            $.each(data.aaData, function (index, value) {
                $options.append($("<option />").val(value.SDK_ID).text(value.SDK_NAME));
            });
            $options.val(sdk_id);
            populateSdkVersions(sdk_id)
        });    
}
    
//  Populate the SDK Versions selection drop down
//      sdk_id  - Identify the family to select
//
function populateSdkVersions(sdk_id){
    getAjaxData (
        "sdk_opr_json.asp",
        { action: "getSdkVersions", sdk_id : sdk_id, mode: $("#chk_sdkversion").is(':checked') },
        function(data){
            // Populate selection
            var $options = $("#sel_sdkversion").empty();
            $options.append($("<option />").val(null).text('Select One'));
            $.each(data.aaData, function (index, value) {
                $options.append($("<option />").val(value.SDKTAG_ID).text(value.SDKTAG_NAME));
            });
        });    
}

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
            //console.log ("UpdateData", data);
            if (data.result != 0)
            {
                setInfo("Error:" + ((data.error != 0) ? data.emsgSummary : "Reason not given"));
                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');
        }
    });

}

// Local Help
formTips.tips.sdk_state = stdTip(200, 'State', 
                                     'WIP - Under development. Can be modified but is not available for use by other releases.' +
                                     '<p>Release - Available for other releases to use' +
                                     '<p>Deprecated - This version of the SDK has been superceded. Not available for use.');

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

    <div style="float:left">
        <fieldset style="padding:2px">
            <legend>Display</legend>
            <span>Show Exposed</span>
            <input id=sel_exposed type=checkbox>
        </fieldset>
    </div>

    <div style="float:left">
        <fieldset style="padding:2px" <%=modifyState%>>
            <legend>State</legend>
            <select id=sel_state>
                <option value="U">WIP</option>
                <option value="R">Released</option>
                <option value="D">Deprecated</option>
            </select>
            <%=Quick_Help("sdk_state")%>
        </fieldset>
    </div>

    <div style="float:left">
        <fieldset style="padding:2px">
            <legend>Ref Sdk</legend>
            <select id=sel_sdkname>
                <option>Select One</option>
            </select>
            <select id=sel_sdkversion>
            </select>
            <input id=chk_sdkversion type=checkbox>Show All
        </fieldset>
    </div>

</div>

<div class="form_ttl tleft" id=sdkd_section_head>
  <!-- Section Header ---->
</div>

<!-- Section Body ---->
<div class="rounded_box">
  <table id=sdk_content class="full_table display" >
      <thead>
      <tr class="body_col form_align">
        <th width="1%"> PV_ID
        <th width="10%"> Package Name
        <th> Package Version
        <th> Ref Version
        <th> Ref State
        <th width="1%"> State
      </thead>
  </table>

  <!-- Info / Ajax Progress bar -->
  <div class='bg_dialog body_txt' style='position:relative;min-height: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>
<%If isDefined("rmDebug") Then%>
    <div class="rmDebug" >RmDebug: <%=rmDebug%></div>
<%End If%>
</div>