22< html class ="no-js " lang ="">
33
44< head >
5- < meta charset ="utf-8 ">
6- < meta http-equiv ="X-UA-Compatible " content ="IE=edge,chrome=1 ">
7- < title > PerfCascade - HAR and more Waterfall viewer</ title >
8- < meta name ="description " content ="">
9- < meta name ="viewport " content ="width=device-width, initial-scale=1 ">
10-
11- <!-- import PerfCascade styles /-->
12- < link rel ="stylesheet " href ="/build/stage/perf-cascade-demo.css ">
5+ < meta charset ="utf-8 ">
6+ < meta http-equiv ="X-UA-Compatible " content ="IE=edge,chrome=1 ">
7+ < title > PerfCascade - HAR and more Waterfall viewer</ title >
8+ < meta name ="description " content ="">
9+ < meta name ="viewport " content ="width=device-width, initial-scale=1 ">
10+
11+ <!-- import PerfCascade styles /-->
12+ < link rel ="stylesheet " href ="/build/stage/perf-cascade-demo.css ">
13+ < style >
14+ h1 {display : inline-block; font-size : 1em ; vertical-align : text-bottom; padding : 1em 3em 0 0 ; margin : 0 ;}
15+ input [type = file ] {display : inline-block; vertical-align : text-bottom; padding : 1em 0 0 ; margin : 0 ;}
16+ </ style >
1317</ head >
1418
1519< body >
1620
17- < div id ="legendHolder "> </ div >
21+ < div id ="legendHolder "> </ div >
22+ < h1 > Chrome HAR</ h1 > < input type ="file " id ="fileinput " />
23+ < select id ="page-selector " class ="page-selector "> </ select >
24+ < div id ="output " class ="output "> </ div >
1825
19- < input type ="file " id ="fileinput " />
20- < select id ="page-selector " class ="page-selector "> </ select >
21- < div id ="output " class ="output "> </ div >
26+ < h1 > WPT HAR</ h1 >
27+ < input type ="file " id ="fileinput2 " />
28+ < select id ="page-selector2 " class ="page-selector "> </ select >
29+ < div id ="output2 " class ="output "> </ div >
2230
23- < input type ="file " id ="fileinput2 " />
24- < select id ="page-selector2 " class ="page-selector "> </ select >
25- < div id ="output2 " class ="output "> </ div >
31+ <!-- import PerfCascade JS /-->
32+ < script src ="/build/stage/perf-cascade.js "> </ script >
33+ < script src ="/build/stage/perf-cascade-file-reader.js "> </ script >
34+ < script src ="https://raw.githubusercontent.com/github/fetch/master/fetch.js "> </ script >
2635
27- <!-- import PerfCascade JS /-->
28- < script src ="/build/stage/perf-cascade.js "> </ script >
29- < script src ="/build/stage/perf-cascade-file-reader.js "> </ script >
30- < script src ="https://raw.githubusercontent.com/github/fetch/master/fetch.js "> </ script >
31-
32- < script >
33- /**
36+ < script >
37+ /**
3438 * functionality for example page
3539 * `perfCascade` is a global object if not running in AMD or CommonJS context
3640 */
37- ( function ( perfCascade ) {
38-
39- /** holder DOM element to render PerfCascade into */
40- var outputHolderEl = document . getElementById ( "output" )
41- var pageSelectorEl = document . getElementById ( "page-selector" )
42- var outputHolder2El = document . getElementById ( "output2" )
43- var pageSelector2El = document . getElementById ( "page-selector2" )
44- var legendHolderEl = document . getElementById ( "legendHolder" )
45-
46- function setup ( options , fileinputId , outputHolder ) {
47- /**
48- * This is where the magic happens
49- */
50- function renderPerfCascadeChart ( logData ) {
51- /** remove all children of `outputHolderEl`,
52- * so you can upload new HAR files and get a new SVG */
53- while ( outputHolder . childNodes . length > 0 ) {
54- outputHolder . removeChild ( outputHolder . childNodes [ 0 ] )
55- }
56-
57- /** pass HAR and options to `newPerfCascadeHar` to generate the SVG element*/
58- var perfCascadeSvg = perfCascade . fromHar ( logData , options )
59-
60- /** append SVG to page - that's it */
61- outputHolder . appendChild ( perfCascadeSvg )
62- }
63-
64-
65- /** handle client side file upload via file-reader */
66- function onFileSubmit ( evt ) {
67- var files = evt . target . files
68- if ( ! files ) {
69- alert ( "Failed to load HAR file" )
70- return
71- }
72-
73- // Just needed for gzipped *.zhar files, you can use the standard FileReader api for normal .har files
74- perfCascadeFileReader . readFile ( files [ 0 ] , evt . target . value , function ( error , data ) {
75- if ( error ) {
76- console . error ( error )
77- } else {
78- renderPerfCascadeChart ( data )
79- }
80- } )
81- }
82-
83- if ( window [ "fetch" ] ) { /** load an initial HAR when opening the page */
84- //Source: http://www.webpagetest.org/result/151226_X7_b43d35e592fab70e0ba012fe11a41020/
85- // window["fetch"]("test-data/www.bbc.co.uk.160529_8V_7R3.har")
86- // window["fetch"]("test-data/www.bbc.com.har")
87- window [ "fetch" ] ( "test-data/github.com.MODIFIED.151226_X7_b43d35e592fab70e0ba012fe11a41020.har" )
88- . then ( f => f . json ( ) . then ( j => renderPerfCascadeChart ( j . log ) ) ) }
89-
90- /** hook up file input events */
91- document . getElementById ( fileinputId ) . addEventListener ( "change" , onFileSubmit , false )
92- }
93-
94- setup ( { pageSelector : pageSelectorEl , legendHolder : legendHolderEl } , "fileinput" , outputHolderEl ) ;
95- setup ( { pageSelector : pageSelector2El } , "fileinput2" , outputHolder2El ) ;
96- } ) ( window . perfCascade )
41+ ( function ( perfCascade ) {
42+
43+ /** holder DOM element to render PerfCascade into */
44+ var outputHolderEl = document . getElementById ( "output" )
45+ var pageSelectorEl = document . getElementById ( "page-selector" )
46+ var outputHolder2El = document . getElementById ( "output2" )
47+ var pageSelector2El = document . getElementById ( "page-selector2" )
48+ var legendHolderEl = document . getElementById ( "legendHolder" )
49+
50+ function setup ( options , fileinputId , outputHolder , harUrl ) {
51+ /**
52+ * This is where the magic happens
53+ */
54+ function renderPerfCascadeChart ( logData ) {
55+ /** remove all children of `outputHolderEl`,
56+ * so you can upload new HAR files and get a new SVG */
57+ while ( outputHolder . childNodes . length > 0 ) {
58+ outputHolder . removeChild ( outputHolder . childNodes [ 0 ] )
59+ }
60+
61+ /** pass HAR and options to `newPerfCascadeHar` to generate the SVG element*/
62+ var perfCascadeSvg = perfCascade . fromHar ( logData , options )
63+
64+ /** append SVG to page - that's it */
65+ outputHolder . appendChild ( perfCascadeSvg )
66+ }
67+
68+
69+ /** handle client side file upload via file-reader */
70+ function onFileSubmit ( evt ) {
71+ var files = evt . target . files
72+ if ( ! files ) {
73+ alert ( "Failed to load HAR file" )
74+ return
75+ }
76+
77+ // Just needed for gzipped *.zhar files, you can use the standard FileReader api for normal .har files
78+ perfCascadeFileReader . readFile ( files [ 0 ] , evt . target . value , function ( error , data ) {
79+ if ( error ) {
80+ console . error ( error )
81+ } else {
82+ renderPerfCascadeChart ( data )
83+ }
84+ } )
85+ }
86+
87+ if ( window [ "fetch" ] ) { /** load an initial HAR when opening the page */
88+ window [ "fetch" ] ( harUrl )
89+ . then ( f => f . json ( ) . then ( j => renderPerfCascadeChart ( j . log ) ) )
90+ }
91+
92+ /** hook up file input events */
93+ document . getElementById ( fileinputId ) . addEventListener ( "change" , onFileSubmit , false )
94+ }
95+
96+ //Source: http://www.webpagetest.org/result/151226_X7_b43d35e592fab70e0ba012fe11a41020/
97+ // window["fetch"]("test-data/www.bbc.co.uk.160529_8V_7R3.har")
98+ // window["fetch"]("test-data/www.bbc.com.har")
99+ setup ( { pageSelector : pageSelectorEl , legendHolder : legendHolderEl } , "fileinput" , outputHolderEl , "test-data/chrome_enorm-magazin.de.har" ) ;
100+ setup ( { pageSelector : pageSelector2El } , "fileinput2" , outputHolder2El , "test-data/wpt_github.com.151226_X7_b43d35e592fab70e0ba012fe11a41020.har" ) ;
101+ } ) ( window . perfCascade )
97102 </ script >
98103</ body >
99104
100- </ html >
105+ </ html >
0 commit comments