Subversion Repositories DevTools

Rev

Rev 6641 | Rev 6789 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6641 Rev 6706
Line 412... Line 412...
412
            document.execCommand("copy");
412
            document.execCommand("copy");
413
            $temp.remove();
413
            $temp.remove();
414
        };
414
        };
415
 
415
 
416
        // Export Data
416
        // Export Data
417
        $('#btnExport').click(function(e){
417
        $('#btnExport').click(function(event){
418
            var csv = [];
-
 
419
            var csvHdr = [];
-
 
420
            var lines = [];
-
 
421
            var linesHdr = '';
418
            vixEtableData =  $(this).closest('table');
422
            var date = new Date();
419
            var menu = '<div class="rex_clm" >&nbsp;Select Operation</div>';
423
            var tstamp = (date.getFullYear() * 10000) + ((date.getMonth() + 1) * 100) + date.getDate()
420
            menu += '<div class="mmItem" onClick="statNewWin();">Show&nbsp;in&nbsp;New&nbsp;Window</div>';
424
            var noDetails = $('#noDetails').get(0).checked;
421
            menu += '<div class="mmItem" onClick="statDialog();">Show in Dialog</div>';
425
 
-
 
426
            function createHeader() {
422
            menu += '<div class="mmItem" onClick="statDownLoad();">Download File</div>';
427
                //  Insert DateStamp as YYMMDD
423
            menu += '<div class="mmItem" onClick="statClip();">Copy to Clipboard</div>';
428
                csv.push(tstamp);
424
            showmenu(event,menu);
429
                csvHdr.push('Date');
425
            event.stopImmediatePropagation();
430
 
-
 
431
                //  Insert Release ID
-
 
432
                csv.push(<%=DB_RTAG_ID%>);
-
 
433
                csvHdr.push('RtagId');
426
            event.stopPropagation();
434
                csv.push("<%=DB_PROJ_NAME%>");
-
 
435
                csvHdr.push('Project Name');
427
            return false;
436
                csv.push("<%=DB_RTAG_NAME%>");
-
 
437
                csvHdr.push('Release Name');
428
        });
438
            }
429
    });
439
 
430
 
440
            function addInfo(info) {
-
 
441
                csv.push(info.total);
-
 
442
                csvHdr.push('Total Packages');
-
 
443
                csv.push(info.withTests);
-
 
444
                csvHdr.push('Packages with Tests');
-
 
445
                csv.push(info.testCount);
-
 
446
                csvHdr.push('Total Unit Tests');
-
 
447
                csv.push(info.loc);
-
 
448
                csvHdr.push('Total Lines of Code');
-
 
449
            }
-
 
450
 
431
 
-
 
432
    // Show Stats in a new window
451
            function saveCsv() {
433
    function statNewWin() {
-
 
434
        var title = "CSV Stats";
452
                if ( csv.length ) {
435
        var data = getData();
-
 
436
        var generator = PopupCenter('', title, 800, 400);
-
 
437
        generator.document.write('<html><head><title>'+title+'</title>');
-
 
438
        generator.document.write('</head><body >');
-
 
439
        generator.document.write('<textArea style="width:100%; height:100%;" wrap="off" >');
453
                    lines.push(csv.join(","));
440
        generator.document.write(data.join('\r\n'));
-
 
441
        generator.document.write('</textArea>');
-
 
442
        generator.document.write('</body></html>');
-
 
443
        generator.document.close();
-
 
444
    };
-
 
445
 
-
 
446
    // Show Stats in a new dialog
-
 
447
    function statDialog() {
-
 
448
        var title = "CSV Stats";
454
                    csv = [];
449
        var data = getData();
-
 
450
        var newDiv = $(document.createElement('div'));
-
 
451
        $(newDiv).html(data.join('<br>'));
-
 
452
        $(newDiv).dialog({width: 800, height: 400, modal:true, position: { my: "top", at: "top+100", of: window }, title: title});
-
 
453
    };
455
 
454
 
-
 
455
    // Show Stats in a new dialog
-
 
456
    function statDownLoad() {
-
 
457
        filename = 'data.csv';
-
 
458
        var data = getData().join('\r\n');
-
 
459
        var blob = new Blob(['\ufeff'+data], { type: 'text/csv;charset=utf-8;' });
-
 
460
        if (navigator.msSaveBlob) { // IE 10+
-
 
461
            navigator.msSaveBlob(blob, options.filename);
-
 
462
        } else {
456
                    var nextLineHdr = csvHdr.join(",");
463
            var link = document.createElement("a");
-
 
464
            var url = URL.createObjectURL(blob);
-
 
465
            var isSafari = navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1;
-
 
466
            if (isSafari) //if Safari open in new window to save file with random filename.
457
                    if ( nextLineHdr.length > linesHdr.length ) {
467
                link.setAttribute("target", "_blank");
-
 
468
            link.setAttribute("href", url);
-
 
469
            link.setAttribute("download", filename);
-
 
470
            link.style = "visibility:hidden";
-
 
471
            document.body.appendChild(link);
-
 
472
            link.click();
-
 
473
            document.body.removeChild(link);
-
 
474
        }
-
 
475
    };
-
 
476
 
-
 
477
    // Copy to Clipboard
-
 
478
    function statClip(){
458
                        linesHdr = nextLineHdr 
479
        var lines = getData(); 
-
 
480
        vixTextToClipBoard(lines.join('\r\n'),{note:'CSV Data copied to clipboard'});
-
 
481
    };
-
 
482
 
-
 
483
    // Get the data in CSV form
-
 
484
    function getData(){
459
                    }
485
        var csv = [];
-
 
486
        var csvHdr = [];
460
                    
487
        var lines = [];
-
 
488
        var linesHdr = '';
-
 
489
        var date = new Date();
-
 
490
        var tstamp = (date.getFullYear() * 10000) + ((date.getMonth() + 1) * 100) + date.getDate()
-
 
491
        var noDetails = $('#noDetails').get(0).checked;
-
 
492
 
-
 
493
        function createHeader() {
-
 
494
            //  Insert DateStamp as YYMMDD
-
 
495
            csv.push(tstamp);
-
 
496
            csvHdr.push('Date');
-
 
497
 
-
 
498
            //  Insert Release ID
-
 
499
            csv.push(<%=DB_RTAG_ID%>);
-
 
500
            csvHdr.push('RtagId');
-
 
501
            csv.push("<%=DB_PROJ_NAME%>");
-
 
502
            csvHdr.push('Project Name');
-
 
503
            csv.push("<%=DB_RTAG_NAME%>");
-
 
504
            csvHdr.push('Release Name');
-
 
505
        }
-
 
506
 
-
 
507
        function addInfo(info) {
-
 
508
            csv.push(info.total);
-
 
509
            csvHdr.push('Total Packages');
-
 
510
            csv.push(info.withTests);
-
 
511
            csvHdr.push('Packages with Tests');
-
 
512
            csv.push(info.testCount);
-
 
513
            csvHdr.push('Total Unit Tests');
-
 
514
            csv.push(info.loc);
-
 
515
            csvHdr.push('Total Lines of Code');
-
 
516
        }
-
 
517
 
-
 
518
        function saveCsv() {
-
 
519
            if ( csv.length ) {
461
                    lines.push();
520
                lines.push(csv.join(","));
462
                    csvHdr = [];
521
                csv = [];
-
 
522
 
-
 
523
                var nextLineHdr = csvHdr.join(",");
-
 
524
                if ( nextLineHdr.length > linesHdr.length ) {
-
 
525
                    linesHdr = nextLineHdr 
463
                }
526
                }
-
 
527
                
-
 
528
                lines.push();
-
 
529
                csvHdr = [];
464
            }
530
            }
-
 
531
        }
465
 
532
 
466
            // Generate a CSV representation of the data in the table
533
        // Generate a CSV representation of the data in the table
467
            // Support two forms - grouped and un grouped
534
        // Support two forms - grouped and un grouped
468
            //
535
        //
469
            if (pkgStats.noGroup) {
536
        if (pkgStats.noGroup) {
470
                // Ungrouped - all packages
537
            // Ungrouped - all packages
471
                createHeader();
538
            createHeader();
472
                csv.push('ALL');
539
            csv.push('ALL');
473
                csvHdr.push('Group');
540
            csvHdr.push('Group');
474
                addInfo(pkgStats.info);
541
            addInfo(pkgStats.info);
475
                if ( !noDetails )
542
            if ( !noDetails )
476
                {
543
            {
477
                    pkgStats.table.rows().every(function(rowIdx, tableLoop, rowLoop) {
-
 
478
                        var data = this.data();
-
 
479
                        csv.push($(data[0]).text(), $(data[2]).text(), data[3] );
-
 
480
                        csvHdr.push('Package','Tests','LoC');
-
 
481
                    });
-
 
482
                }
-
 
483
                saveCsv();
-
 
484
            } else {
-
 
485
                // Grouped by package
-
 
486
                var lastGroup = null;
-
 
487
                pkgStats.table.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
544
                pkgStats.table.rows().every(function(rowIdx, tableLoop, rowLoop) {
488
                    var data = this.data();
545
                    var data = this.data();
489
                    var group = data[7];
-
 
490
                    if ( group != lastGroup ) {
-
 
491
                        lastGroup = group;
-
 
492
                        saveCsv();
-
 
493
                        createHeader();
-
 
494
                        csv.push(group);
-
 
495
                        csvHdr.push('Group');
-
 
496
                        addInfo(pkgStats.groupinfo[group]);
-
 
497
                    }
-
 
498
                    if ( !noDetails )
-
 
499
                    {
-
 
500
                        csv.push($(data[0]).text(), $(data[2]).text(), data[3]);
546
                    csv.push($(data[0]).text(), $(data[2]).text(), data[3] );
501
                        csvHdr.push('Package','Tests','LoC');
547
                    csvHdr.push('Package','Tests','LoC');
502
                    }
-
 
503
                });
548
                });
504
                saveCsv();
-
 
505
            }
549
            }
-
 
550
            saveCsv();
-
 
551
        } else {
-
 
552
            // Grouped by package
-
 
553
            var lastGroup = null;
-
 
554
            pkgStats.table.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
-
 
555
                var data = this.data();
-
 
556
                var group = data[7];
-
 
557
                if ( group != lastGroup ) {
-
 
558
                    lastGroup = group;
-
 
559
                    saveCsv();
506
            lines.unshift(linesHdr);
560
                    createHeader();
-
 
561
                    csv.push(group);
-
 
562
                    csvHdr.push('Group');
-
 
563
                    addInfo(pkgStats.groupinfo[group]);
-
 
564
                }
-
 
565
                if ( !noDetails )
-
 
566
                {
507
            vixTextToClipBoard(lines.join('\r\n'),{note:'CSV Data copied to clipboard'});
567
                    csv.push($(data[0]).text(), $(data[2]).text(), data[3]);
-
 
568
                    csvHdr.push('Package','Tests','LoC');
-
 
569
                }
508
            });
570
            });
-
 
571
            saveCsv();
509
        });
572
        }
-
 
573
        lines.unshift(linesHdr);
-
 
574
        return lines;
-
 
575
    };
-
 
576
 
510
  </script>
577
  </script>
511
 
578
 
512
   </head>
579
   </head>
513
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
580
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
514
      <!-- HEADER -->
581
      <!-- HEADER -->