Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
5190 dpurdie 1
//  Vix specific Javascript for jquery use
2
//
3
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4
//  Generate a confirmation dialog
5
//  Args:   text - Body of the message
6
//          parms - A simple object of options - see defaults
5266 dpurdie 7
//                  Special: position of 'center' will place in center of visible screen.
5190 dpurdie 8
//  Note: will return BEFORE the user makes a selection
9
//        Can call a function and/or a URL if confirmed
10
//        Can 'show' a progress element
11
//        See 'defaults' below for bits that can be modified
12
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
13
function vixConfirm(text, parms){
14
     var defaults = {
15
        resizable: true,
16
        height: 'auto',
17
        width : 'auto',
18
        modal: true,
19
        position: { my: "top", at: "top+100", of: window },
20
        title: "Confirm",
21
        icon: "images/i_warning.gif",
22
        url : null,
23
        ok : null,
24
        post : null,
25
        button : "Confirm",
5598 dpurdie 26
        progress : "#ProgressBar",
6577 dpurdie 27
        cancel : true,
28
        timeout : null,
6697 dpurdie 29
        dlg : null,
30
        deferred : null,
5190 dpurdie 31
     };
32
     $.extend( defaults, parms);
33
 
34
     defaults.open = function() {
35
        $(this).siblings('.ui-dialog-buttonpane').find('button:eq(1)').focus(); 
6577 dpurdie 36
        var markup = "";
37
        if (defaults.icon != null ) {
38
            markup += '<img src="'+ defaults.icon+ '" style="float:left; margin:0 7px 20px 0;">';
39
            }
40
        markup += text;
5190 dpurdie 41
        $(this).html(markup);
6577 dpurdie 42
         if ( defaults.timeout != null ) {
43
             setTimeout(function(){
44
                 defaults.dlg.dialog("close");
45
                }, defaults.timeout);
46
         }
5190 dpurdie 47
     };
48
 
49
    defaults.close = function() {
50
        $(this).remove();
51
    };
52
 
6697 dpurdie 53
    if(typeof(defaults.deferred) == typeof(true)){
54
        if ( defaults.deferred ) {
55
            defaults.deferred = new $.Deferred();
56
        }
57
    }
58
 
6577 dpurdie 59
    defaults.buttons = [];
60
    if ( defaults.button != null ) {
61
        defaults.buttons.push({
62
            text : defaults.button,
63
            click : function (){
64
                    if (defaults.ok != null ){
65
                        defaults.ok(defaults);
66
                    }
67
                    if ( defaults.progress != null) {
68
                        $(defaults.progress).show().css("visibility", "visible");    
69
                    }
70
                    if (defaults.url != null ) {
71
                        window.location.href = defaults.url;
72
                    }
73
                    if (defaults.post != null ) {
74
                        $('form[name="'+defaults.post+'"]').submit();    
75
                    }
6697 dpurdie 76
                    if ( defaults.deferred != null ) {
77
                        defaults.deferred.resolve();
78
                    }
6577 dpurdie 79
                    $(this).dialog("close");
5190 dpurdie 80
                }
6577 dpurdie 81
        });
82
    }
83
 
84
    if(typeof(defaults.cancel) == 'boolean' && defaults.cancel) {
85
        defaults.buttons.push({
86
            text : 'Cancel',
87
            click : function (){
88
                $(this).dialog("close");
6697 dpurdie 89
                if ( defaults.deferred != null) {
90
                        defaults.deferred.reject();
91
                    }
5190 dpurdie 92
                }
6577 dpurdie 93
        });
94
    }
5190 dpurdie 95
 
96
     var dd = $( "<div>Confirm</div>" ).dialog(defaults);
6577 dpurdie 97
     defaults.dlg = dd;
5190 dpurdie 98
     // Once the dialog has been instantiated the autosize dimensions are known
5266 dpurdie 99
     // and the dialog can be correctly positioned
100
     if (defaults.position == 'center')
101
     {
102
         dd.dialog("widget").center();
5560 dpurdie 103
         //console.log("Center in Window");
5266 dpurdie 104
     }
105
     else
106
     {
107
         dd.dialog("widget").position(defaults.position);
5560 dpurdie 108
         //console.log("Original position");
5266 dpurdie 109
     }
6697 dpurdie 110
 
111
     // If using deferred objects
112
     if ( defaults.deferred ) {
113
         return defaults.deferred.promise();
114
     }
5266 dpurdie 115
 
5190 dpurdie 116
     // Return false incase this is used as an onClick
117
     return false;
118
}
119
 
120
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
121
// Compatability function
122
//      Confirm Deletion of an item
6873 dpurdie 123
//      Assumes that the item is within an 
124
//          - 'anchor' and that an href can be located
125
//          - other and that a 'data-href' will specify the 'url'
126
//  
5190 dpurdie 127
//      Uses VixConfirm to do the heavy lifting
128
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
129
function vixConfirmDelete (txt)
130
{
131
    var href = window.event.currentTarget.href;
6873 dpurdie 132
    if ( !href ) {
133
        href = $(event.currentTarget).data('href');
134
    }
135
    vixConfirm('Are you sure you want to delete ' + txt + '?', { url: href })
5190 dpurdie 136
    return false;
137
}
138
 
139
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
140
//  Similar to 'alert', but uses the jquery dialog mechnaism
141
//  Note: will return BEFORE the user makes a selection
142
//  Returns a Defereed object that will be rejected when the dialog is closed.
143
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
144
function vixAlert(text){
145
     var dbo = $.Deferred();
5207 dpurdie 146
     var dd = $( "<div>Alert</div>" ).dialog({
5190 dpurdie 147
        resizable: true,
148
        height: 'auto',
149
        width : 'auto',
150
        modal: true,
151
        title:'Alert',
5227 dpurdie 152
        position: { my: "top", at: "top+100", of: window },
5190 dpurdie 153
        open: function() {
154
            $(this).html('<img src="images/i_critical.gif" style="float:left; margin:0 7px 20px 0;">' + text);
155
        },
156
        close : function() {
157
            $(this).remove();
158
            dbo.reject();
159
        },
160
        buttons: {
161
            "Ok": function() {
162
                $(this).dialog("close");
163
            }
164
        }
165
     });
5207 dpurdie 166
     // Once the dialog has been instantiated the autosize dimensions are known
5266 dpurdie 167
     // and the dialog can be correctly positioned
5227 dpurdie 168
     // Note: Appears that we need to position it twice
169
     //       Once in the dialog creation, and once here
5207 dpurdie 170
     dd.dialog("widget").position({ my: "top", at: "top+100", of: window });
171
 
172
     return dbo;
5190 dpurdie 173
}
174
 
5266 dpurdie 175
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
176
//  jQuery extension function
177
//  Position an element inthe center of the visible window. Not the document and not the window(viewport).
178
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
179
jQuery.fn.center = function () {
5190 dpurdie 180
 
5266 dpurdie 181
    //  Support many browsers
182
    var w = window.innerWidth  || document.documentElement.clientWidth  || document.body.clientWidth;
183
    var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
184
 
185
    this.css("position","fixed");
186
    this.css("top", Math.max(0,  ((h - $(this).outerHeight()) / 2) ) + "px");
187
    this.css("left", Math.max(0, ((w - $(this).outerWidth()) / 2) ) + "px");
188
    return this;
189
}
190
 
191
//--------- Support to open modal dialog in an iFrame
5590 dpurdie 192
//  Example: <a class="vixIframeDialog" href="aaa.asp" title="Some Title">Link Text</a>
5266 dpurdie 193
//
7003 dpurdie 194
var vixIframe;
195
if (typeof vixIframe === 'undefined') {
196
    vixIframe = {};
197
}
5266 dpurdie 198
$(document).ready(function () {
7003 dpurdie 199
 
5560 dpurdie 200
    $('.vixIframeDialog').on('click', function(e){
5590 dpurdie 201
		if (!vixIframe.parent) {
202
			e.preventDefault();
203
			vixIframe.parent = this;
204
			vixIframe.pagetitle = $(this).attr("title");
205
			if (! vixIframe.pagetitle) {
206
				vixIframe.pagetitle = $(this).text();
207
			}
208
			vixIframe.url = $(this).attr("href");
209
			vixIframeDialogCommon();
210
		}
5560 dpurdie 211
	});
5266 dpurdie 212
 
213
    //
214
    // Prevent (at least control) the user from navigating within the iframe
215
    // If this invocation is within an iFrame, then close the iFrame if
216
    // the user attempt to navigate away from the iFrame.
217
    //      This means that the iFrame cannot replace itself
218
    // 
219
    if (typeof parent.vixIframe.pagetitle !== 'undefined')
220
    {
5560 dpurdie 221
        //console.log("DocumentReady within iframe");
5266 dpurdie 222
        window.onunload = function(){
5560 dpurdie 223
            //console.log("Unloading within iframe");
5266 dpurdie 224
        }
225
    }
226
 
227
});
228
 
5560 dpurdie 229
//
230
//	Callable function to instantiate an Iframe Dialog
5590 dpurdie 231
//  Used in a replacement for MM_openBrWindow called MM_openVixIFrame
5560 dpurdie 232
// 	Parameters:
233
// 		pthis	- The parent's context
6625 dpurdie 234
//		url		- URL of the window content
5590 dpurdie 235
//  	winName	- Title of the new Window
236
 
237
function vixIframeDialog2(pthis, url, winName)
238
{
5560 dpurdie 239
	vixIframe.parent = pthis;
5590 dpurdie 240
	vixIframe.pagetitle = winName;
241
	vixIframe.url = url;
242
	vixIframeDialogCommon();
243
}
244
 
245
function vixIframeDialogCommon()
246
{
7003 dpurdie 247
	var iframe = $('<iframe onload="IframeLoaded(this);" id="iframe" style="border:0px; overflow: scroll;" src="' + vixIframe.url + '" height="50px" width="100%"" ></iframe>');
5560 dpurdie 248
	var $dialog = $('<div></div>').html(iframe);
249
	var $dialog2 = $dialog.dialog({
250
		autoOpen: true,
251
		modal: true,
7003 dpurdie 252
		height : 'auto',
5590 dpurdie 253
		width : 'auto',
254
		resizable: false,
5560 dpurdie 255
		position : { my:'top', at: 'top+100', of : window },
256
		dialogClass: "rounded_box",
257
		title: 'Loading - ' + vixIframe.pagetitle,
258
		close: function(event, ui){
259
			//console.log('closing dialog');
260
			$(this).dialog("destroy");
261
			vixIframe = {};
262
			window.onbeforeunload = null;
263
			window.onunload = null;
264
			},
5590 dpurdie 265
		// Prevent Chrome from adding scrollbars when dragged
266
		dragStop: function( event, ui ){
267
			vixIframe.IFrame.parentElement.style.overflow = "";
268
			},
269
		dragStart: function( event, ui ){
270
			vixIframe.IFrame.parentElement.style.overflow = "hidden";
271
			}
5560 dpurdie 272
	});
273
	vixIframe.Dialog = $dialog;
5590 dpurdie 274
	vixIframe.DialogProps = $dialog2;
5560 dpurdie 275
	vixIframe.DialogWidget = $($dialog2).dialog('widget');
5597 dpurdie 276
 
5560 dpurdie 277
	return false;
278
}
5590 dpurdie 279
//
280
//	Called when the iframe is loaded or reloaded
281
//
282
function IframeLoaded(iframe) {
283
	// Save to resize iframe
284
	vixIframe.IFrame = iframe;
5560 dpurdie 285
 
5590 dpurdie 286
	// Reset the title
287
	vixIframe.Dialog.dialog('option','title', vixIframe.pagetitle);
5266 dpurdie 288
 
5590 dpurdie 289
	// Resize the frame
290
	resizeIframe();
5266 dpurdie 291
};
5590 dpurdie 292
//
293
//	This function can be called from within the iframe to have it resized
294
//	Used if the iframe is too dynamic and extends itself from time to time
295
//
296
function resizeIframe()
297
{
298
    if (vixIframe.IFrame != null) {
7003 dpurdie 299
        var iframe = vixIframe.IFrame;
5590 dpurdie 300
		iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";
301
		$(vixIframe.Dialog).height(iframe.height);
302
		//console.log ("Resize Iframe:",iframe.height );
5266 dpurdie 303
 
5590 dpurdie 304
		iframe.width = iframe.contentWindow.document.body.scrollWidth + "px";
305
		$(vixIframe.Dialog).width(iframe.width);
306
		//console.log ("Resize Iframe:",iframe.width );
307
 
308
		// Reposition the dialog
309
		$(vixIframe.DialogWidget).position($(vixIframe.DialogProps).dialog("option").position);
310
	}
311
}
312
//
313
//	This function can be called from with the iframe to close the Iframe
314
//	Often wired up to the cancel button
315
function closeIFrame()
5266 dpurdie 316
{
317
    if (vixIframe.Dialog != null) {
5590 dpurdie 318
        //console.log('closing iframe');
5266 dpurdie 319
        vixIframe.Dialog.dialog('close');
320
        vixIframe = {};
321
    }
322
}
323
 
7003 dpurdie 324
//  Load a dialog into a dialog element
325
//  Like iFrame, but without the iFrame
7022 dpurdie 326
//  Useful options:
327
//      title   - Window Title
328
//      onLoad  - Function name to call after load
329
//      class   - Optional class to add to the dialog
6427 dpurdie 330
//
7022 dpurdie 331
function vixDialog( theURL, usrOptions ) {
332
 
7240 dpurdie 333
    $("body").addClass("cursor-wait");
7022 dpurdie 334
 
7240 dpurdie 335
    var options = $.extend({title : 'Dialog ', width : 300}, usrOptions,);
336
 
7003 dpurdie 337
	vixIframe.parent = this;
7022 dpurdie 338
	vixIframe.pagetitle = options.title;
7003 dpurdie 339
	vixIframe.url = theURL;
340
 
341
    var $dialog = $('<div></div>');
342
    $(document.body).append($dialog);
343
    $dialog.load( theURL, function(){
344
        var $dialog2 = $dialog.dialog({
345
            autoOpen: true,
346
            modal: true,
347
            height : 'auto', 
7240 dpurdie 348
            width : options.width,
7003 dpurdie 349
            resizable: true,
350
            position : { my:'top', at: 'top+100', of : window },
7022 dpurdie 351
            dialogClass: options.class,
352
            minHeight: 10,
7003 dpurdie 353
            title: 'Loading - ' + vixIframe.pagetitle,
7240 dpurdie 354
            open: function(event, ui){
355
                $("body").removeClass("cursor-wait");
356
            },
7003 dpurdie 357
            close: function(event, ui){
358
                //console.log('closing dialog');
359
                $(this).dialog("destroy");
360
                vixIframe = {};
361
                $(this).remove();
362
                window.onbeforeunload = null;
363
                window.onunload = null;
364
                },
365
            dragStop: function( event, ui ){
7022 dpurdie 366
                // Dragging adds a height which kill autosizing
367
                vixIframe.Dialog.closest('.ui-dialog').height('auto');
7003 dpurdie 368
                },
369
        });
370
        vixIframe.Dialog = $dialog;
371
        vixIframe.DialogProps = $dialog2;
372
 
373
        // Save to resize iframe
374
        vixIframe.IFrame = $dialog;
375
 
376
        // Reset the title
377
        vixIframe.Dialog.dialog('option','title', vixIframe.pagetitle);
378
 
379
        // Run init code for the frame
7022 dpurdie 380
        // Have a possible function name
381
        if ( options.onLoad ) {
382
            try {
383
                eval (options.onLoad + '();');
384
            } 
385
            catch (e) {
386
                console.log ("vixDialog failed to run the onLoad script:" + options.onLoad );
387
            }
388
        }
7003 dpurdie 389
    });
390
}
391
 
392
//
6626 dpurdie 393
//  Copy the HTML from an element into the clipboard
394
//  Highlight the element clipped
395
//
396
function vixEl2Clip( el ) {
397
    // Get the text and clean it up
398
    var html = $.trim(el.html());
399
 
400
    var breakToken = '_______break_______';
401
    var lineBreakedHtml = html.replace(/<br\s?\/?>/gi, breakToken).replace(/<p\.*?>(.*?)<\/p>/gi, breakToken + '$1' + breakToken);
402
    var text = $('<div>').html(lineBreakedHtml).text().replace(new RegExp(breakToken, 'g'), '\r\n');
403
    text = $.trim(text);
404
 
405
    // Copy to clipboard
406
    var $temp = $("<textarea>");
407
    $(el).append($temp);
408
    $temp.val(text).select();
409
    document.execCommand("copy");
410
    $temp.remove();
411
 
412
 
413
    // Highlight the text that has been selected
414
    el.effect("highlight", {}, 1000);
415
    // el.css('background-color', 'rgba(0, 102, 255, .5)');
416
    // el.animate({backgroundColor: 'transparent'}, '1000');
417
 
418
    return el;
419
}
420
 
421
//
6427 dpurdie 422
//  Add copy to clipboard icon to every element with a class of 'clip'
423
//
424
$( document ).ready(function() {
6626 dpurdie 425
    var myClipHandler = function (event) {
6427 dpurdie 426
        // Get element to clip
6626 dpurdie 427
        vixEl2Clip($(this).find('.clipSel').eq(0));
428
    }
5266 dpurdie 429
 
6626 dpurdie 430
    $('.clip').on("click", myClipHandler).on("dblclick", myClipHandler);
5266 dpurdie 431
 
6626 dpurdie 432
    // Add a clip image to every class of either .clip
433
    $('.clip').wrapInner('<span class=clipSel></span>').append(
6427 dpurdie 434
        $('<img />')
435
            .attr({
436
                title : "Copy to clipboard",
437
                src : "images/CopyToClipboard.ico",
438
                height : "12px",
439
                width : "12px",
440
                hspace : "0px",
441
                align : "absmiddle",
442
                border : "0"
443
                })
6626 dpurdie 444
    );
445
});
6427 dpurdie 446
 
6626 dpurdie 447
// Copy data from a named element to clipboard
448
// Supports multi-line data with <p> and <br> in it
449
//      Elements have a class of clipElement and have an attribute of data-target=elementId
450
$( document ).on('click', '.clipElement', function(event){
451
 
452
    var ename = $(this).data('target');
453
    var el = $('#' + ename);
454
    vixEl2Clip(el);
6427 dpurdie 455
});
456
 
6592 dpurdie 457
// Add a clipThis handler to each element with a clipThis class
6610 dpurdie 458
//      Will copy the text of the element to the clipboard
459
//      Add dynamically so that it will be invoked on dynamically created elements
6592 dpurdie 460
$( document ).on('click', '.clipThis', function(event){
461
    var txt = $(this).eq(0).text();
462
    vixTextToClipBoard(txt, {note : "Copied to Clipboard", duration : 1000});
463
});
464
 
6610 dpurdie 465
// Copy data from element to clipboard
466
//      Elements have a class of clipData and an attribute of data-clip=xxx
467
//  Add dynamically so that it will be invoked on dynamically created elements
468
$( document ).on('click', '.clipData', function(event){
469
    var txt = $(this).data('clip');
470
    vixTextToClipBoard(txt, {note : "Copied to Clipboard", duration : 1000});
471
});
472
 
473
 
474
// Invoke mailto on elements with a suitable class
475
//  Elements with class mailto. and a data item of email
476
// Add dynamically so that it will be invoked on newly created elements
477
$( document ).on('click', '.mailto', function(event){
478
    var email = $(this).data('email');
479
    var name =  $(this).data('name');
6623 dpurdie 480
    var uname =  $(this).data('uname');
6610 dpurdie 481
    if ( !name ) {
482
        name =  $(this).eq(0).text();
483
    }
484
 
485
    var menu = '<div class="rex_clm" >&nbsp;Select Operation</div>';
486
    if ( name ) {
487
        menu += '<div class="mmItem clipData" data-clip="' + name + '">Copy Name to Clipboard</div>';
488
    }
6623 dpurdie 489
    if ( uname ) {
490
        menu += '<div class="mmItem clipData" data-clip="' + uname + '">Copy Login Name to Clipboard</div>';
491
    }
6610 dpurdie 492
    menu += '<div class="mmItem clipData" data-clip="' + email + '">Copy Email Address to Clipboard</div>';
493
    menu += '<div onClick="window.open(\'mailto:' + email + '\', \'_blank\');" class="mmItem">Send Email</div>';
494
    showmenu(event,menu);
495
    event.stopImmediatePropagation();
496
    event.stopPropagation();
497
    return false;
498
});
499
 
6589 dpurdie 500
// Copy text to clipboard
6971 dpurdie 501
// Need to append a dummy eleemnt to a point inthe document that can be selected
502
// In a modal dialog, the 'body' cannot be used. Use 'clipRoot' if its available
6589 dpurdie 503
function vixTextToClipBoard(txt, options){
504
    if ( txt == null ) {
505
        return;
506
    }
507
    var opts  = {
508
        note : "Data copied to Clipboard",
509
        title: "Notification",
510
        notify : true,
511
        timeout : 100,
512
        duration: 2000,
513
    }
514
    $.extend(opts, options);
6427 dpurdie 515
 
6971 dpurdie 516
    var useEl = $('#clipRoot');
517
    if ( useEl.length === 0  ){
518
        useEl =$('body') ;
519
    }
520
 
6589 dpurdie 521
    var $temp = $("<textarea>");
6971 dpurdie 522
    useEl.prepend($temp);
6589 dpurdie 523
    $temp.val(txt).select();
524
    document.execCommand("copy");
525
    $temp.remove();
6427 dpurdie 526
 
6589 dpurdie 527
    if ( opts.notify ) {
528
        vixConfirm(opts.note, {
529
            title: opts.title,
6641 dpurdie 530
            icon : "images/i_info.png",
531
            cancel: false,
6589 dpurdie 532
            button: null,
533
            timeout : opts.timeout,
534
            modal : false,
6641 dpurdie 535
            minHeight: 10,
6589 dpurdie 536
            hide: { effect: 'fade', duration: opts.duration }
537
            });
538
    }
539
}
540
 
6651 dpurdie 541
//  Export Table as CSV support functions
542
//      Allow a table that has been tagged with a class of etable to be exported
543
// 
544
// Global variable for use of the table to CSV widget
545
// Used to convey info though the selection callback
546
//
547
var vixEtableData;
548
 
549
$( document ).ready(function() {
550
    vixEtableInit();
551
});
552
 
553
//      vixPostPageLoad is called when dynamic DOM elements are loaded 
554
function vixPostPageLoad(){
555
    vixEtableInit();
556
}
557
 
558
//  Init all elements marked with a class of 'etable'
559
//      Insert an icon
560
//      Remove original class so that the DOM can be scanned again
561
function vixEtableInit(){
562
    $('.etable').css('position', 'relative');
563
    $('.etable th:last-child').append(
564
            $('<img />')
565
                .attr({
566
                    title : "Export table as CSV",
567
                    src : "images/CopyToClipboard.ico",
568
                    height : "12px",
569
                    width : "12px",
570
                    hspace : "0px",
571
                    align : "absmiddle",
572
                    border : "0"
573
                    })
574
                .css({position : 'absolute', top : '0px', right : '0px'})
575
                .click(function(event){
576
                    vixEtableData =  $(this).closest('table');
577
                    var menu = '<div class="rex_clm" >&nbsp;Select Operation</div>';
6695 dpurdie 578
                    menu += '<div class="mmItem" onClick="vixEtableProc(\'popup\');">Show&nbsp;in&nbsp;New&nbsp;Window</div>';
579
                    menu += '<div class="mmItem" onClick="vixEtableProc(\'modal\');">Show in Dialog</div>';
6651 dpurdie 580
                    menu += '<div class="mmItem" onClick="vixEtableProc(\'download\');">Download File</div>';
581
                    menu += '<div class="mmItem" onClick="vixEtableProc(\'clip\');">Copy to Clipboard</div>';
582
                    showmenu(event,menu);
583
                    event.stopImmediatePropagation();
584
                    event.stopPropagation();
585
                    return false;
586
                    })
587
        );
588
    $('.etable').addClass('etable-done').removeClass('etable');
589
}
590
 
591
//  Global function to support post-selection processing of CSV data
592
function vixEtableProc(mode) {
593
    var tdata = vixEtableData.data('etable')
594
    var defData = {
595
        delivery: mode,
596
        filename: 'data.csv',
597
        rowFilter: '.csvData'
598
        };
599
    $.extend(defData, tdata) ;
600
    var data = vixEtableData.TableCSVExport(defData);
601
    if ( mode == 'clip' ) {
602
        vixTextToClipBoard(data, {note : "CSV copied to Clipboard", duration : 1000});
603
    }
604
}
605
 
6695 dpurdie 606
// Create a new window in the center of the current screen
607
//  A wrapper for window.open(), with a few smarts
608
//  Does not position correctly on Widows-Edge
609
function PopupCenter(url, title, w, h) {
610
    // Fixes dual-screen position                         Most browsers      Firefox
611
    var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : window.screenX;
612
    var dualScreenTop = window.screenTop != undefined ? window.screenTop : window.screenY;
6651 dpurdie 613
 
6695 dpurdie 614
    var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
615
    var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
6651 dpurdie 616
 
6695 dpurdie 617
    var left = ((width / 2) - (w / 2)) + dualScreenLeft;
618
    var top = ((height / 2) - (h / 2)) + dualScreenTop;
619
    var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
6651 dpurdie 620
 
6695 dpurdie 621
    // Puts focus on the newWindow
622
    if (window.focus) {
623
        newWindow.focus();
624
    }
6651 dpurdie 625
 
6695 dpurdie 626
    return newWindow;
627
}
6651 dpurdie 628
 
629
 
630
 
6695 dpurdie 631
 
632
 
633
 
634
 
635
 
636