1-
2- < html >
3- < head >
4- < link href ="style/greyscale.css " rel ="stylesheet " type ="text/css ">
5- < script src ="http://code.jquery.com/jquery-latest.js "> </ script >
6-
7- < title > GraphChi Dashboard</ title >
8- </ head >
9-
1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="utf-8 ">
5+ < title > GraphChi Admin Dashboard</ title >
6+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
7+ < meta name ="description " content ="">
8+ < meta name ="author " content ="">
9+
10+ < script src ="bootstrap/js/jquery.js "> </ script >
11+
12+
13+ <!-- Le styles -->
14+ < link href ="bootstrap/css/bootstrap.css " rel ="stylesheet ">
15+ < link href ="style/graphchi.css " rel ="stylesheet ">
16+
17+ < style type ="text/css ">
18+ body {
19+ padding-top : 60px ;
20+ padding-bottom : 40px ;
21+ }
22+ .sidebar-nav {
23+ padding : 9px 0 ;
24+ }
25+ </ style >
26+ < link href ="bootstrap/css/bootstrap-responsive.css " rel ="stylesheet ">
27+
28+ <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
29+ <!--[if lt IE 9]>
30+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
31+ <![endif]-->
32+
33+ <!-- Le fav and touch icons -->
34+
35+
1036
1137< script type ="text/javascript ">
1238
1339function createPswWindow ( num , nShards , windowStartFrac , windowEndFrac , beingRecreated ) {
1440 var bgElement = document . getElementById ( "psw_bg" )
1541 var shardElement = document . createElement ( "div" )
1642
17- var shardHeight = 320 ;
18- var shardWidth = Math . floor ( ( parseInt ( bgElement . style . width ) - nShards * 12 ) / nShards ) ;
43+ var shardHeight = bgElement . clientHeight - 20 ;
44+ var shardWidth = Math . floor ( ( parseInt ( bgElement . clientWidth ) - nShards * 12 ) / nShards ) ;
1945
2046 shardElement . setAttribute ( "id" , "shard" + num )
2147 shardElement . setAttribute ( "class" , "psw" )
2955 b . appendChild ( document . createTextNode ( "(recreate)" ) )
3056
3157 }
32- shardElement . appendChild ( b )
58+ shardElement . appendChild ( b )
3359
3460 // Window
3561 winElement = document . createElement ( "div" )
4571}
4672
4773function updatePageranks ( data ) {
48- var s = "" ;
49- for ( i = 0 ; i < 20 ; i ++ ) {
74+ var s = "<table> " ;
75+ for ( i = 0 ; i < 20 ; i ++ ) {
5076 var r ;
5177 eval ( "r = data.rank" + i )
52- s = s + r + "<br/>"
78+ r = r . split ( ":" )
79+ s = s + "<tr><td >" + ( i + 1 ) + ". " + "</td><td width='150px'>" + r [ 1 ] + " </td><td style='text-align: right;'>" + r [ 2 ] + "</td></tr>"
5380 }
81+ s = s + "</table>"
5482 document . getElementById ( "pageranks" ) . innerHTML = s ;
5583}
5684
85+ function updatePics ( ) {
86+ document . getElementById ( "updatesimg" ) . src = "plots/updates.png?" + Math . random ( )
87+ document . getElementById ( "edgesimg" ) . src = "plots/edges.png?" + Math . random ( )
88+ document . getElementById ( "ingestsimg" ) . src = "plots/ingests.png?" + Math . random ( )
89+ document . getElementById ( "bufedgesimg" ) . src = "plots/bufedges.png?" + Math . random ( )
90+
91+ }
92+
5793function update ( ) {
5894 $ . getJSON ( "/ajax/getinfo" , "" ,
5995 function ( data ) {
69105 }
70106 }
71107
72- document . getElementById ( "filename" ) . innerHTML = graphname ;
108+ document . getElementById ( "filename" ) . innerHTML = graphname . split ( "/" ) . pop ( ) ;
73109 document . getElementById ( "state" ) . innerHTML = data . state ;
74110
75111 document . getElementById ( "nvertices" ) . innerHTML = data . nvertices ;
76112
77113 if ( data . ingestedges != undefined ) {
78- document . getElementById ( "ingest" ) . innerHTML = data . ingestedges + " (" +
79- data . ingestspeed + " edges/sec)" ;
114+ document . getElementById ( "ingest" ) . innerHTML = data . ingestedges ;
115+ document . getElementById ( "ingestspeed" ) . innerHTML =
116+ data . ingestspeed ;
80117 }
81118 document . getElementById ( "updates" ) . innerHTML = data . updates ;
82119 document . getElementById ( "iteration" ) . innerHTML = data . iteration + " / " + data . numIterations ;
83120 document . getElementById ( "runtime" ) . innerHTML = data . runTime ;
84121 document . getElementById ( "curwindow" ) . innerHTML = data . windowStart + " - " + data . windowEnd ;
85- document . getElementById ( "updatessec" ) . innerHTML = Math . floor ( data . updates / ( data . runTime + 0.01 ) ) + " updates/sec" ;
122+ document . getElementById ( "updatessec" ) . innerHTML = Math . floor ( data . updates / ( data . runTime + 0.01 ) ) ;
86123
87124 $ . each ( data . shards , function ( i , shard ) {
88125 if ( shard . windowStart != undefined ) {
96133
97134 updatePageranks ( data )
98135
99- document . getElementById ( "shard" + data . interval ) . style . backgroundColor = "#ff1100" ;
136+ shardEl = document . getElementById ( "shard" + data . interval )
137+
138+ if ( shardEl != undefined ) {
139+ shardEl . style . backgroundColor = "#666666" ;
140+ shardEl . style . border = "1px solid red"
141+ }
100142 }
101143 ) ;
102144
103145}
104146
105147function load ( ) {
106148 setInterval ( function ( ) { update ( ) } , 500 ) ;
149+ setInterval ( function ( ) { updatePics ( ) } , 5000 ) ;
107150}
108151</ script >
109152
110153
111- < body onload ="load() ">
112-
113- < h2 > Parallel Sliding Windows view</ h2 >
114-
115- < div id ="upper " style ="float: bottom; ">
116-
117- < div id ="summary " class ="infobox ">
118- < table >
119- < tr > < td > Input</ td > < td > < span id ="filename "> input</ td > </ tr >
120- < tr > < td > Vertices</ td > < td > < span id ="nvertices "> __</ span > </ td > </ tr >
121- < tr > < td > Edges</ td > < td > < span id ="nedges "> __</ span > </ td > </ tr >
122- < tr > < td > Updates executed</ td > < td > < span id ="updates "> 0</ span > </ td > </ tr >
123- < tr > < td > Updates / sec</ td > < td > < span id ="updatessec "> 0</ span > </ td > </ tr >
124- < tr > < td > Iteration</ td > < td > < span id ="iteration "> 0</ span > </ td > </ tr >
125- < tr > < td > Runtime</ td > < td > < span id ="runtime "> 0</ span > </ td > </ tr >
154+
155+ </ head >
156+
157+
158+
159+ < body onLoad ="load() ">
160+
161+ < div class ="navbar navbar-fixed-top ">
162+ < div class ="navbar-inner ">
163+ < div class ="container-fluid ">
164+ < a class ="btn btn-navbar " data-toggle ="collapse " data-target =".nav-collapse ">
165+ < span class ="icon-bar "> </ span >
166+ < span class ="icon-bar "> </ span >
167+ < span class ="icon-bar "> </ span >
168+ </ a >
169+ < a class ="brand " href ="# "> GraphChi Admin Dashboard</ a >
170+ <!-- <div class="btn-group pull-right">
171+ <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
172+ <i class="icon-user"></i> Username
173+ <span class="caret"></span>
174+ </a>
175+ <ul class="dropdown-menu">
176+ <li><a href="#">Profile</a></li>
177+ <li class="divider"></li>
178+ <li><a href="#">Sign Out</a></li>
179+ </ul>
180+ </div>
181+
182+ -->
183+ < div class ="nav-collapse ">
184+ < ul class ="nav ">
185+ < li class ="active "> < a target ="_new " href ="http://code.google.com/p/graphchi "> GraphChi @ Google Code</ a > </ li >
186+
187+ </ ul >
188+ </ div >
189+ </ div >
190+
191+ </ div >
192+ </ div >
193+
194+ < div class ="container-fluid ">
195+ < div class ="row-fluid ">
196+ < div class ="span3 ">
197+ < div class ="well sidebar-nav ">
198+ <!-- <ul class="nav nav-list">
199+ <li class="nav-header">Sidebar</li>
200+ <li class="active"><a href="#">Link</a></li>
201+ <li><a href="#">Link</a></li>
202+ <li><a href="#">Link</a></li>
203+ <li><a href="#">Link</a></li>
204+ </ul> -->
205+
206+ < span class ="nav-header2 "> Summary</ span >
207+ < table style ="margin: 5px; ">
208+ < tr > < td class ="leftcol "> Input</ td > < td class ="rightcol "> < span id ="filename "> input</ span > </ td > </ tr >
209+ < tr > < td class ="leftcol "> State</ td > < td class ="rightcol "> < span id ="state "> --</ span > </ td > </ tr >
210+ < tr > < td class ="leftcol "> Vertices</ td > < td class ="rightcol "> < span id ="nvertices "> __</ span > </ td > </ tr >
211+ < tr > < td class ="leftcol "> Edges</ td > < td class ="rightcol "> < span id ="nedges "> __</ span > </ td > </ tr >
212+ < tr > < td class ="leftcol "> Updates executed</ td > < td class ="rightcol "> < span id ="updates "> 0</ span > </ td > </ tr >
213+ < tr > < td class ="leftcol "> Updates / sec</ td > < td class ="rightcol "> < span id ="updatessec "> 0</ span > </ td > </ tr >
214+ < tr > < td class ="leftcol "> Iteration</ td > < td class ="rightcol "> < span id ="iteration "> 0</ span > </ td > </ tr >
215+ < tr > < td class ="leftcol "> Runtime</ td > < td class ="rightcol "> < span id ="runtime "> 0</ span > </ td > </ tr >
126216
127217</ table >
128- </ div >
129218
130- < div id ="ingest " class ="infobox ">
131- < table >
132- < tr > < td > Ingest</ td > < td > < span id =ingest > 0</ span > </ td > </ tr >
219+ < span class ="nav-header2 style= "margin-top: 20px; ""> Ingest</ span >
220+ < table style ="margin: 5px; ">
221+ < tr > < td class ="leftcol "> Streamed edges</ td > < td class ="rightcol "> < span id ="ingest "> --</ span > </ td > </ tr >
222+ < tr > < td class ="leftcol "> - edges / sec</ td > < td class ="rightcol "> < span id ="ingestspeed "> --</ span > </ td > </ tr >
133223
134224</ table >
135- </ div >
136-
137- < div id ="appoutput " class ="infobox ">
138-
139- < span id ="topheader "> Top 10</ span >
140- < p >
141- < div id ="pageranks ">
142- </ div >
143- </ p >
144- </ div >
145-
146-
147- </ div >
148-
149- < p >
150-
151- < hr noshade />
225+ < span class ="nav-header2 " style ="margin-top: 20px; " > App output</ span >
152226
153- < div id ="pswblock ">
154-
155- Execution interval: < span id ="curwindow " style ="font-style:oblique; "> </ span >
156- < div id ="psw_bg " style ="width: 1000px; height: 340px; background-color: #FCF99F; border: 2px dotted; ">
157- </ div >
158-
159- </ div >
160-
161- </ p >
162- </ body >
227+ < div id ="pageranks " class ="appresult ">
228+ 1. dsfsfsf < br />
229+ 2. dsfsfsf < br />
230+ 3. dsfsfsf < br />
231+ 4. dsfsfsf < br />
232+ 5. dsfsfsf < br />
233+ 6. dsfsfsf < br />
163234
235+ </ div >
236+
237+
238+ </ div > <!--/.well -->
239+ </ div > <!--/span-->
240+ < div class ="span9 ">
241+ Execution interval: < span id ="curwindow " style ="font-style:oblique; "> </ span > < br />
242+
243+ < div class ="hero-unit2 ">
244+ < div id ="psw_bg " style ="margin: 4px; height: 200px; overflow: auto; " >
245+
246+ </ div >
247+ </ div >
248+ < div class ="row-fluid ">
249+ < div class ="span4 ">
250+ < h2 > Updates/sec</ h2 >
251+ < p >
252+ < img src ="plots/updates.png " id ="updatesimg " />
253+ </ p >
254+ </ div > <!--/span-->
255+ < div class ="span4 ">
256+ < h2 > Ingests/sec</ h2 >
257+ < p >
258+ < img src ="plots/ingests.png " id ="ingestsimg " />
259+ </ p >
260+ </ div > <!--/span-->
261+ < div class ="span4 ">
262+ < h2 > Delta</ h2 >
263+ < p > Image </ p >
264+ </ div > <!--/span-->
265+ </ div > <!--/row-->
266+ < div class ="row-fluid ">
267+ < div class ="span4 ">
268+ < h2 > Edges</ h2 >
269+ < p >
270+ < img src ="plots/edges.png " id ="edgesimg " />
271+ </ p > </ div > <!--/span-->
272+ < div class ="span4 ">
273+ < h2 > Input/Output</ h2 >
274+ < p > Line for reads and writes/sec </ p >
275+ </ div > <!--/span-->
276+ < div class ="span4 ">
277+ < h2 > Buffered Edges</ h2 >
278+ < p >
279+ < img src ="plots/bufedges.png " id ="bufedgesimg " />
280+ </ p >
281+
282+ </ div > <!--/span-->
283+ </ div > <!--/row-->
284+ </ div > <!--/span-->
285+ </ div > <!--/row-->
286+
287+ < hr >
288+
289+ < footer >
290+ < p > © Aapo Kyrola et al. 2012 / Carnegie Mellon University</ p >
291+ </ footer >
292+
293+ </ div > <!--/.fluid-container-->
294+
295+ <!-- Le javascript
296+ ================================================== -->
297+ <!-- Placed at the end of the document so the pages load faster -->
298+ < script src ="bootstrap/js/bootstrap-transition.js "> </ script >
299+ < script src ="bootstrap/js/bootstrap-alert.js "> </ script >
300+ < script src ="bootstrap/js/bootstrap-modal.js "> </ script >
301+ < script src ="bootstrap/js/bootstrap-dropdown.js "> </ script >
302+ < script src ="bootstrap/js/bootstrap-scrollspy.js "> </ script >
303+ < script src ="bootstrap/js/bootstrap-tab.js "> </ script >
304+ < script src ="bootstrap/js/bootstrap-tooltip.js "> </ script >
305+ < script src ="bootstrap/js/bootstrap-popover.js "> </ script >
306+ < script src ="bootstrap/js/bootstrap-button.js "> </ script >
307+ < script src ="bootstrap/js/bootstrap-collapse.js "> </ script >
308+ < script src ="bootstrap/js/bootstrap-carousel.js "> </ script >
309+ < script src ="bootstrap/js/bootstrap-typeahead.js "> </ script >
310+
311+ </ body >
164312</ html >
0 commit comments