Subversion Repositories DevTools

Rev

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