5 <title>WebKit Performance Monitor (Beta)</title>
6 <script src="js/jquery.min.js" defer></script>
7 <script src="js/handlebars.js" defer></script>
8 <script src="js/ember.js" defer></script>
9 <script src="js/ember-data.js" defer></script>
10 <script src="js/d3/d3.min.js" defer></script>
11 <script src="js/statistics.js" defer></script>
12 <script src="data.js" defer></script>
13 <script src="app.js" defer></script>
14 <script src="manifest.js" defer></script>
15 <script src="popup.js" defer></script>
16 <link rel="stylesheet" href="app.css">
17 <link rel="stylesheet" href="chart-pane.css">
19 <script type="text/x-handlebars" data-template-name="index">
22 {{view App.NumberOfDaysControlView tagName="ul" numberOfDays=numberOfDays}}
25 <a href="#" class="control-button" {{action toggleEditMode}}>
26 {{#if controller.editMode}}
36 <table {{bind-attr class=":dashboard editMode:editMode:readonly"}}>
40 {{#each headerColumns}}
41 {{#if controller.editMode}}
43 <a href="#" title="Remove column" {{action "removeColumn" index}}>
44 {{partial "close-button"}}
52 {{#if controller.editMode}}
53 <td>{{input value=newColumnHeader action="addColumn" placeholder="Add a column"}}</td>
60 {{#if controller.editMode}}
62 <a href="#" title="Remove row" {{action "removeRow" this}}>
63 {{partial "close-button"}}
65 {{input value=header}}
68 <th><span class="label">{{header}}</span></th>
73 {{#if controller.editMode}}
74 {{view App.PopupView list=pickerData label='Choose'}}
78 {{#link-to 'charts' (query-params paneList=paneList)}}
81 domain=controller.sharedDomain
82 enableSelection=false}}
86 <div class="failure">{{failure}}</div>
88 <div class="progress">{{partial "spinner"}}</div>
91 {{#if controller.editMode}}
92 <a href="#" title="Reset pane" class="reset" {{action "resetPane" this}}>
93 {{partial "close-button"}}
99 {{#if controller.editMode}}
104 {{#if controller.editMode}}
106 <td>{{input value=newRowHeader action="addRow" placeholder="Add a row"}}</td>
117 <script type="text/x-handlebars" data-template-name="charts">
120 <ul class="controls">
121 <li>{{view App.PopupView list=platforms label='Add pane'}}</li>
123 <ul class="controls">
124 <li>{{view App.StartTimeSliderView startTime=startTime oldestStartTime=oldestStartTime}}</li>
128 {{#each panes itemController="pane"}}
129 <section class="chart-pane" tabindex="0">
131 <h1 {{action "toggleDetails"}}>
132 {{#each metric.path}}
136 - {{ platform.name}}</h2>
137 <a href="#" title="Close" class="close-button" {{action "close"}}>{{partial "close-button"}}</a>
138 {{#if App.Manifest.bugTrackers}}
139 <a href="#" title="Bugs"
140 {{bind-attr class=":bugs-button singlySelectedPoint::disabled"}}
141 {{action "toggleBugsPane"}}>
142 {{partial "bugs-button"}}
145 {{#if App.Manifest.repositoriesWithReportedCommits}}
146 <a href="#" title="Search" class="search-button" {{action "toggleSearchPane"}}>{{partial "search-button"}}</a>
151 <div class="svg-container">
155 domain=mainPlotDomain
157 currentItem=currentItem
158 currentTime=sharedTime
159 selectedItem=selectedItem
160 highlightedItems=highlightedItems
162 sharedSelection=sharedSelection
163 selectionChanged="rangeChanged"
164 selectionIsLocked=timeRangeIsLocked
165 bugsChangeCount=bugsChangeCount
169 <div class="failure">{{failure}}</div>
171 <div class="progress">{{partial "spinner"}}</div>
175 <div class="details">
176 <div class="overview">
181 domain=overviewDomain
182 domainChanged="overviewDomainChanged"
183 selection=mainPlotDomain
184 selectionChanged="zoomed"}}
188 {{partial "chart-details"}}
193 <form {{bind-attr class=":search-pane showingSearchPane::hidden"}}>
194 <span class="repositories">
195 {{view Ember.Select content=App.Manifest.repositoriesWithReportedCommits
196 optionLabelPath='content.id'
197 selection=commitSearchRepository}}
199 {{input action="searchCommit" placeholder="Name or email" value=commitSearchKeyword}}
202 <div {{bind-attr class=":bugs-pane showingBugsPane::hidden"}}>
204 {{#each details.bugTrackers}}
208 <form {{action "associateBug" this editedBugNumber on="submit"}}>
209 {{input type=text value=editedBugNumber}}
221 <script type="text/x-handlebars" data-template-name="components/interactive-chart">
223 <div class="selection-toolbar" style="display: none;">
224 <a href="#" class="button" {{action "zoom"}}>
225 <svg class="zoom" viewBox="0 0 100 100">
226 <g stroke-width="0" stroke="none">
227 <polygon points="25,25 5,50 25,75"/>
228 <polygon points="75,25 95,50 75,75"/>
230 <line x1="20" y1="50" x2="80" y2="50" stroke-width="10"></line>
237 <script type="text/x-handlebars" data-template-name="chart-details">
238 <div class="details-table-container">
239 <table class="details-table">
241 {{#each details.bugTrackers}}
247 <a {{bind-attr href=bugUrl}} target="_blank">{{bugNumber}}</a>
254 <tr><th>Current</th><td>{{details.currentValue}} {{chartData.unit}}
255 {{#if details.oldValue}}
256 (from {{details.oldValue}})
258 {{#if details.buildNumber}}
262 {{#if details.buildURL}}
263 <a {{bind-attr href=details.buildURL}} target="_blank">{{details.buildNumber}}</a>
265 {{details.buildNumber}}
267 ({{details.buildTime}})
271 {{#each details.revisions}}
276 <a {{bind-attr href=url}} target="_blank">{{label}}</a>
283 <td colspan="2">{{commits-viewer repository=repository revisionInfo=this}}</td>
290 <script type="text/x-handlebars" data-template-name="components/commits-viewer">
298 <a {{bind-attr href=url}} target="_blank">{{author}}</a>
311 <script type="text/x-handlebars" data-template-name="close-button">
312 <svg class="close-button icon-button" viewBox="0 0 100 100">
313 <g stroke="black" stroke-width="10">
314 <circle cx="50" cy="50" r="45" fill="transparent"/>
315 <polygon points="30,30 70,70" />
316 <polygon points="30,70 70,30" />
321 <script type="text/x-handlebars" data-template-name="bugs-button">
322 <svg class="bugs-button icon-button" viewBox="0 0 100 100">
323 <g stroke="black" stroke-width="15">
324 <circle cx="50" cy="50" r="40" fill="transparent"/>
325 <line x1="50" y1="25" x2="50" y2="55"/>
326 <circle cx="50" cy="67.5" r="2.5" fill="transparent"/>
331 <script type="text/x-handlebars" data-template-name="search-button">
332 <svg class="search-button icon-button" viewBox="0 0 100 100">
333 <g stroke="black" stroke-width="15">
334 <circle cx="60" cy="40" r="30" fill="transparent"/>
335 <line x1="10" y1="90" x2="40" y2="60"/>
340 <script type="text/x-handlebars" data-template-name="spinner">
341 <svg class="spinner" viewBox="0 0 100 100">
342 <line x1="10" y1="50" x2="30" y2="50" stroke="black" stroke-width="10" stroke-linecap="round"/>
343 <line x1="21.72" y1="21.72" x2="35.86" y2="35.86" stroke="black" stroke-width="10" stroke-linecap="round"/>
344 <line x1="50" y1="10" x2="50" y2="30" stroke="black" stroke-width="10" stroke-linecap="round"/>
345 <line x1="78.28" y1="21.72" x2="64.14" y2="35.86" stroke="black" stroke-width="10" stroke-linecap="round"/>
346 <line x1="70" y1="50" x2="90" y2="50" stroke="black" stroke-width="10" stroke-linecap="round"/>
347 <line x1="65.86" y1="65.86" x2="78.28" y2="78.28" stroke="black" stroke-width="10" stroke-linecap="round"/>
348 <line x1="50" y1="70" x2="50" y2="90" stroke="black" stroke-width="10" stroke-linecap="round"/>
349 <line x1="21.72" y1="78.28" x2="35.86" y2="65.86" stroke="black" stroke-width="10" stroke-linecap="round"/>
353 <script type="text/x-handlebars" data-template-name="navbar">
354 <nav id="navigation" role="navigation">
355 <h1><a href="#">WebKit Perf Monitor</a></h1>
357 {{#link-to 'index' tagName='li'}}
358 {{#link-to 'index'}}Dashboard{{/link-to}}
360 {{#link-to 'charts' tagName='li'}}
361 {{#link-to 'charts'}}Charts{{/link-to}}
367 <script type="text/x-handlebars" data-template-name="number-of-days-controls">
368 <li class="numberOfDaysIs1">
369 <a href="#" class="control-button" {{action "setNumberOfDays" 1}}>1D</a>
371 <li class="numberOfDaysIs7">
372 <a href="#" class="control-button" {{action "setNumberOfDays" 7}}>1W</a>
374 <li class="numberOfDaysIs30">
375 <a href="#" class="control-button" {{action "setNumberOfDays" 30}}>1M</a>
377 <li class="numberOfDaysIs90">
378 <a href="#" class="control-button" {{action "setNumberOfDays" 90}}>3M</a>
380 <li class="numberOfDaysIs183">
381 <a href="#" class="control-button" {{action "setNumberOfDays" 183}}>6M</a>
383 <li class="numberOfDaysIs365">
384 <a href="#" class="control-button" {{action "setNumberOfDays" 365}}>1Y</a>
388 <script type="text/x-handlebars" data-template-name="start-time-slider">
389 <label><input type="range"> <span class="numberOfDays">X</span> days</label>
392 <script type="text/x-handlebars" data-template-name="popup">
393 <span class="label">{{view App.PopupButtonView tagName="a" label=view.label }}</span>
394 {{view view.popupListContainerView viewName="popupListContainerViewInstance"}}
397 <script type="text/x-handlebars" data-template-name="popup-list">
401 {{else }} {{#if children}}
402 <li>{{view App.PopupView list=children label=label}}</li>
406 <a href="#" class="label" {{action actionName actionArgument}}>{{label}}</a>
408 <a class="label">{{label}}</a>