Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
5051 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|  sdk_details.asp
5
'|  Edit an SDK Version
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
<!--#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
<%
20
'------------ ACCESS CONTROL ------------------
21
%>
22
<!--#include file="_access_control_general.asp"-->
5103 dpurdie 23
<!--#include file="common/globals_sdk.asp"-->
5051 dpurdie 24
<%
25
'------------ Variable Definition -------------
5089 dpurdie 26
dim modifyState
5051 dpurdie 27
 
28
'------------ Constants Declaration -----------
29
'------------ Variable Init -------------------
5102 dpurdie 30
'------------ Before Render -------------------
5089 dpurdie 31
modifyState = "disabled"
32
If canActionControlInProject("CreateSdk") Then modifyState = ""
33
 
5051 dpurdie 34
%>
35
<script language="JavaScript" type="text/javascript">
36
//# sourceURL=sdk_details.asp
5052 dpurdie 37
 
38
//  Get getSdkVersionDetails
39
//      When this is complete we will populate the remainder of the
40
//      page.
41
var sdkDetails = {};
42
getAjaxData (
43
    "sdk_opr_json.asp",
44
    { action: "getSdkVersionDetails", sdktag_id : <%=parSdkTag_id%> },
45
    function(data){
46
        sdkDetails = data.aaData;
47
        $("#sdkd_section_head").text( sdkDetails.SDK_NAME + " : " + sdkDetails.SDKTAG_NAME);
5098 dpurdie 48
        $("#sel_state").val([sdkDetails.SDK_STATE]);
5052 dpurdie 49
        detailsAvailable();
50
    });    
51
 
5054 dpurdie 52
//  Populate the bulk of the display
53
//      Called once the sdkDetails have been delivered 
5052 dpurdie 54
function detailsAvailable()
55
{
56
    //  Initial population of the Ref SDK Names   
5053 dpurdie 57
    populateSdkNames(sdkDetails.SDK_ID);
5751 dpurdie 58
    populateContent(<%=parSdkTag_id%>);
59
	updateClone();
5052 dpurdie 60
 
61
    $("#sel_sdkname").change(function(){
5751 dpurdie 62
		$("#sel_sdkversion").empty();
5052 dpurdie 63
        populateSdkVersions( $("#sel_sdkname").val());
5751 dpurdie 64
		updateShowDiffs();
65
		updateClone();
5052 dpurdie 66
    });
67
 
68
    $("#chk_sdkversion").change(function(){
69
        populateSdkVersions( $("#sel_sdkname").val());
70
    });
71
 
72
    $("#sel_sdkversion").change(function(){
5054 dpurdie 73
        $('#sdk_content').dataTable().api().ajax.reload();
5751 dpurdie 74
		updateShowDiffs();
75
		updateClone();
5052 dpurdie 76
    });
77
 
78
    //  Detect change to the packages displayed
79
    //      Redisplay on change       
80
    $("#sel_exposed").change(function(){
81
        $('#sdk_content').dataTable().api().ajax.reload();
82
    });
83
 
5751 dpurdie 84
    $("#sel_diff").change(function(){
85
        $('#sdk_content').dataTable().api().ajax.reload();
86
    });
87
 
5052 dpurdie 88
    //  Detect change to the SDK State
5055 dpurdie 89
    //      Disable all clickable elements - unless a WIP
5098 dpurdie 90
    $("#sel_state").change(function(){
5055 dpurdie 91
        sdkDetails.SDK_STATE = $(this).val();
92
        $('.clickable').attr('disabled',$(this).val() !== 'U');
5751 dpurdie 93
		updateClone();
5055 dpurdie 94
 
5052 dpurdie 95
        getAjaxData (
96
            "sdk_opr_json.asp",
97
            { action: "setSdkState", sdktagId : <%=parSdkTag_id%>, sdk_state : $(this).val() }
98
            );
99
    });
5051 dpurdie 100
}
101
 
5052 dpurdie 102
 
5051 dpurdie 103
//  Configure the Summary Table
5053 dpurdie 104
function populateContent(sdktag_id)
5052 dpurdie 105
{
5117 dpurdie 106
    table = $('#sdk_content').DataTable({
5052 dpurdie 107
        deferRender: true,
108
        dom: "frtiS",
5054 dpurdie 109
        sScrollY: $( document ).height() - 300,
5052 dpurdie 110
        scrollCollapse: true,
111
        processing: true,
112
        retrieve:true,
113
        serverSide: true,
5054 dpurdie 114
        ajax : {
5058 dpurdie 115
            url : "sdk_details_json.asp",
5054 dpurdie 116
            data : function (o){
117
                o.sdktag_id = sdktag_id;
118
                o.sdk_statefilter = $("#sel_exposed").is(':checked');
5751 dpurdie 119
                o.sdk_difffilter = $("#sel_diff").is(':checked');
5054 dpurdie 120
                var d = $("#sel_sdkversion").val();
121
                if (d != null ) {
122
                    o.sdk_reftag_id = d;
123
                }
124
            },
5052 dpurdie 125
        },
126
        "ordering": true,
127
        "order": [[ 1, "asc" ]],
5051 dpurdie 128
 
5052 dpurdie 129
         "columns": [
130
            { "data": "PV_ID", visible : false },
131
            { "data": "PKG_NAME" },
5055 dpurdie 132
            { "data": "PKG_VERSION" , width : "5%" },
133
            { "data": "REF_PKG_VERSION", width : "5%" },
134
            { "data": "REF_SDKPKG_CHECK" , width : "1%" },
135
            { "data": "SDKPKG_CHECK" , width : "1%"},
5751 dpurdie 136
            { "data": "DIFF" , visible : false},
5052 dpurdie 137
        ],
5684 dpurdie 138
        fnRowCallback: function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
139
            // Highlight diffs
5751 dpurdie 140
			switch(parseInt(aData.DIFF))
141
			{
142
			case 0:  break;
143
			case 3:  $('td:eq(2)', nRow).css('color', 'red'); break;
144
			case 4:  $('div:eq(0)', nRow).css({'background-color':'rgba(255, 0, 0, 0.5)', 'width' : '20px'}); break;
145
			default: $('td:eq(0)', nRow).css('color', 'red'); break;
146
			}
5684 dpurdie 147
        },
5052 dpurdie 148
    });
149
}
5051 dpurdie 150
 
151
 
152
//  Process each row of table data before it is presented to the table scroller
153
//  Process the raw Ajax data
154
//      Create a checkbox for the state
155
//      Add a data item to the entry - to allow traceback when saving
5055 dpurdie 156
$('#sdk_content').on('xhr.dt', function ( e, settings, json ) {
5114 dpurdie 157
        $.each(json.aaData, function(idx,row){
5684 dpurdie 158
 
5055 dpurdie 159
            if (row.SDKPKG_STATE != null) {
160
                var checked = row.SDKPKG_STATE == "E" ? 'checked' : '';
161
                var disabled = (sdkDetails.SDK_STATE === 'U' ) ? '' : ' disabled ';
5751 dpurdie 162
                row.SDKPKG_CHECK = '<div><input type="checkbox" class=clickable <%=modifyState%> '+ checked + disabled + ' data-pvid='+ row.PV_ID +'></div>';
5055 dpurdie 163
            } else {
164
                row.SDKPKG_CHECK = "";
165
            }
166
 
167
            if (row.REF_SDKPKG_STATE != null)
168
            {
169
                var checked = row.REF_SDKPKG_STATE == "E" ? 'checked' : '';
170
                row.REF_SDKPKG_CHECK = '<input type="checkbox" ' + checked + ' disabled >';
171
            } else {
172
                row.REF_SDKPKG_CHECK = "";
173
            }
5051 dpurdie 174
        });
175
    } );
176
 
5751 dpurdie 177
// Maintain ShowDiff element
178
// Only when ref sdk is present
179
function updateShowDiffs()
180
{
181
	var el = $("#sel_diff");
182
	var val = $("#sel_sdkversion").val();
183
	if (val)
184
	{
185
		el.removeAttr('disabled');
186
	}
187
	else
188
	{
189
		el.attr('disabled', 'disabled')
190
		el.attr('checked', false);
191
	}
192
}
193
 
194
 
195
// Maintain the Clone Action button
196
// Allow Copy if SDK is a WIP and there is a Referenec to copy from
197
function updateClone()
198
{
199
	var isaWip = sdkDetails.SDK_STATE === 'U';
200
	var hasaRef = $("#sel_sdkversion").val();
201
	var enable = !(isaWip && hasaRef); 
202
	$('#sel_clear').prop('disabled', !isaWip);
203
	$('#sel_clone').prop('disabled', enable);
204
	$('#sel_set').prop('disabled',!isaWip);
205
}
206
 
207
// Process the Clone Action
208
//
209
$('#sel_clone').on( 'click', function () {
210
    getAjaxData (
211
        "sdk_opr_json.asp",
212
        { action : 'cloneSdkPackages', 
213
          sdktagId : <%=parSdkTag_id%>,
214
          sdk_reftag_id : $("#sel_sdkversion").val() 
215
        },
216
		function(data){
217
			$('#sdk_content').dataTable().api().ajax.reload();
218
		});
219
    });
220
 
221
// Process the Clear Action
222
//
223
$('#sel_clear').on( 'click', function () {
224
    getAjaxData (
225
        "sdk_opr_json.asp",
226
        { action : 'setSdkPackages', 
227
          sdktagId : <%=parSdkTag_id%>,
228
          sdkpkg_state : '-',
229
        },
230
		function(data){
231
			$('#sdk_content').dataTable().api().ajax.reload();
232
		});
233
    });
234
 
235
// Process the Set  Action
236
//
237
$('#sel_set').on( 'click', function () {
238
    getAjaxData (
239
        "sdk_opr_json.asp",
240
        { action : 'setSdkPackages', 
241
          sdktagId : <%=parSdkTag_id%>,
242
          sdkpkg_state : 'E',
243
        },
244
		function(data){
245
			$('#sdk_content').dataTable().api().ajax.reload();
246
		});
247
    });
248
 
249
 
5051 dpurdie 250
// Process click on checkboxes within the datatable
251
//      this - a DOM node
252
//      $(this) - The jquery wrapped node
253
//
254
$('#sdk_content').on( 'click', 'tbody td :checkbox', function () {
5052 dpurdie 255
    getAjaxData (
256
        "sdk_opr_json.asp",
257
        { action : 'setSdkContentState', 
258
          sdktagId : <%=parSdkTag_id%>, 
259
          pv_id : $(this).data('pvid'), 
260
          sdkpkg_state : this.checked ? 'E' : '-' 
261
        });
262
    });
5051 dpurdie 263
 
5117 dpurdie 264
// Single click on row - Highlight selected row
265
$('#sdk_content').on( 'click', 'tbody tr', function () {
266
    if ( $(this).hasClass('selected') ) {
267
        $(this).removeClass('selected');
268
    }
269
    else {
270
        table.$('tr.selected').removeClass('selected');
271
        $(this).addClass('selected');
272
    }
273
} );
274
 
275
 
5054 dpurdie 276
//  Populate the Reference Project
277
//      sdk_id  - Select this entry if possible
5053 dpurdie 278
function populateSdkNames(sdk_id) {
5052 dpurdie 279
    getAjaxData (
280
        "sdk_opr_json.asp",
281
        { action: "getSdkNames" },
282
        function(data){
283
            // Populate selection
284
            var $options = $("#sel_sdkname").empty();
285
            var name
286
            $options.append($("<option />").val(null).text('Select One'));
287
            $.each(data.aaData, function (index, value) {
288
                $options.append($("<option />").val(value.SDK_ID).text(value.SDK_NAME));
289
            });
5053 dpurdie 290
            $options.val(sdk_id);
291
            populateSdkVersions(sdk_id)
5052 dpurdie 292
        });    
293
}
294
 
295
//  Populate the SDK Versions selection drop down
296
//      sdk_id  - Identify the family to select
297
//
298
function populateSdkVersions(sdk_id){
299
    getAjaxData (
300
        "sdk_opr_json.asp",
301
        { action: "getSdkVersions", sdk_id : sdk_id, mode: $("#chk_sdkversion").is(':checked') },
302
        function(data){
303
            // Populate selection
304
            var $options = $("#sel_sdkversion").empty();
305
            $options.append($("<option />").val(null).text('Select One'));
306
            $.each(data.aaData, function (index, value) {
307
                $options.append($("<option />").val(value.SDKTAG_ID).text(value.SDKTAG_NAME));
308
            });
309
        });    
310
}
5051 dpurdie 311
 
5052 dpurdie 312
function setInfo(txt) {
313
    $("#sdkd_info").text( txt);
314
}
5051 dpurdie 315
 
5052 dpurdie 316
function clearInfo(txt) {
317
    $("#sdkd_info").text(" ");
318
}
319
 
320
//  getAjaxData - with error processing
321
//      url - url to fetch
322
//      data    - additional data to pass to ajax request
323
//      success - function to call on success
324
function getAjaxData( url, data, success )
325
{
326
    clearInfo();
327
    $("#sdkd_progressBar").css('visibility', 'visible');
328
    $.ajax(
329
    {
330
        url : url,
331
        type: "POST",
332
        data : data,
333
        dataType : "json",
334
        cache: false,
335
        success:function(data, textStatus, jqXHR)
5051 dpurdie 336
        {
5052 dpurdie 337
            //data: return data from server
338
            //console.log ("UpdateData", data);
339
            if (data.result != 0)
5051 dpurdie 340
            {
5052 dpurdie 341
                setInfo("Error:" + ((data.error != 0) ? data.emsgSummary : "Reason not given"));
342
                return;
343
            }
344
            //  call user success function
345
            if (jQuery.isFunction(success))
5051 dpurdie 346
            {
5052 dpurdie 347
                success(data);
5051 dpurdie 348
            }
5052 dpurdie 349
        },
350
        error: function(jqXHR, textStatus, errorThrown)
351
        {
352
            setInfo("Error:" + errorThrown);
353
            //if fails
354
        },
355
        complete : function()
356
        {
357
            $("#sdkd_progressBar").css('visibility', 'hidden');
358
        }
359
    });
360
 
361
}
5098 dpurdie 362
 
363
// Local Help
364
formTips.tips.sdk_state = stdTip(200, 'State', 
365
                                     'WIP - Under development. Can be modified but is not available for use by other releases.' +
366
                                     '<p>Release - Available for other releases to use' +
367
                                     '<p>Deprecated - This version of the SDK has been superceded. Not available for use.');
368
 
5051 dpurdie 369
    </script>
5052 dpurdie 370
<!-- Tool Bar -->
371
<div class=rmbutton style="position:relative;background-color:#DAD7c8;height:38px;padding:7px;margin-bottom: 7px;">
372
 
373
    <div style="float:left">
5751 dpurdie 374
        <fieldset style="padding:2px;height:30px">
5052 dpurdie 375
            <legend>Display</legend>
376
            <span>Show Exposed</span>
377
            <input id=sel_exposed type=checkbox>
5751 dpurdie 378
            <span>Show Diffs</span>
379
			<input id=sel_diff type=checkbox disabled>
5052 dpurdie 380
        </fieldset>
381
    </div>
382
 
5098 dpurdie 383
    <div style="float:left">
5751 dpurdie 384
        <fieldset style="padding:2px;height:30px" <%=modifyState%>>
5052 dpurdie 385
            <legend>State</legend>
5098 dpurdie 386
            <select id=sel_state>
387
                <option value="U">WIP</option>
388
                <option value="R">Released</option>
389
                <option value="D">Deprecated</option>
390
            </select>
391
            <%=Quick_Help("sdk_state")%>
5052 dpurdie 392
        </fieldset>
393
    </div>
394
 
395
    <div style="float:left">
5751 dpurdie 396
        <fieldset style="padding:2px;height:30px">
5052 dpurdie 397
            <legend>Ref Sdk</legend>
398
            <select id=sel_sdkname>
399
                <option>Select One</option>
400
            </select>
401
            <select id=sel_sdkversion>
402
            </select>
403
            <input id=chk_sdkversion type=checkbox>Show All
404
        </fieldset>
405
    </div>
406
 
5751 dpurdie 407
	<div style="float:right">
408
		<fieldset style="padding:2px;height:30px">
409
			<legend>Actions</legend>
410
			<button id="sel_clear" disabled title="Deselect all">Clear</button>
411
			<button id="sel_clone" disabled title="Clone exposed reference packages">Merge</button>
412
			<button id="sel_set" disabled title="Select all">All</button>
413
		</fieldset>
414
	</div>
415
 
5052 dpurdie 416
</div>
417
 
418
<div class="form_ttl tleft" id=sdkd_section_head>
5051 dpurdie 419
  <!-- Section Header ---->
5052 dpurdie 420
</div>
5051 dpurdie 421
 
5052 dpurdie 422
<!-- Section Body ---->
423
<div class="rounded_box">
5117 dpurdie 424
  <table id=sdk_content class="full_table display" >
5052 dpurdie 425
      <thead>
426
      <tr class="body_col form_align">
427
        <th width="1%"> PV_ID
428
        <th width="10%"> Package Name
429
        <th> Package Version
5055 dpurdie 430
        <th> Ref Version
431
        <th> Ref State
5052 dpurdie 432
        <th width="1%"> State
433
      </thead>
434
  </table>
5051 dpurdie 435
 
5052 dpurdie 436
  <!-- Info / Ajax Progress bar -->
5116 dpurdie 437
  <div class='bg_dialog body_txt' style='position:relative;min-height:14px;' >
438
      <img id='sdkd_progressBar' style='visibility:hidden;position: absolute;display: block' src='icons/i_processing.gif' width='79' height='14'>
5052 dpurdie 439
      <div id=sdkd_info  style='position: absolute;'></div>
440
  </div>
5102 dpurdie 441
<%If isDefined("rmDebug") Then%>
442
    <div class="rmDebug" >RmDebug: <%=rmDebug%></div>
443
<%End If%>
5052 dpurdie 444
</div>
5957 dpurdie 445
<% Call Destroy_All_Objects %>
446