##// END OF EJS Templates
components: reports componentized
ergo -
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -210,7 +210,7 b' class AlertChannel(Base, BaseModel):'
210 tmpl_vars["confirmed_total"] = len(reports)
210 tmpl_vars["confirmed_total"] = len(reports)
211
211
212 tmpl_vars["report_type"] = "error reports"
212 tmpl_vars["report_type"] = "error reports"
213 tmpl_vars["url_report_type"] = 'report'
213 tmpl_vars["url_report_type"] = 'report/list'
214
214
215 alert_type = tmpl_vars.get('alert_type', '')
215 alert_type = tmpl_vars.get('alert_type', '')
216 if 'slow_report' in alert_type:
216 if 'slow_report' in alert_type:
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
@@ -45,6 +45,9 b" angular.module('appenlight.components', ["
45 'appenlight.components.appenlightHeader',
45 'appenlight.components.appenlightHeader',
46 'appenlight.components.indexDashboardView',
46 'appenlight.components.indexDashboardView',
47 'appenlight.components.logsBrowserView',
47 'appenlight.components.logsBrowserView',
48 'appenlight.components.reportView',
49 'appenlight.components.reportsBrowserView',
50 'appenlight.components.reportsSlowBrowserView',
48 'appenlight.components.eventBrowserView',
51 'appenlight.components.eventBrowserView',
49 'appenlight.components.userProfileView',
52 'appenlight.components.userProfileView',
50 'appenlight.components.userIdentitiesView',
53 'appenlight.components.userIdentitiesView',
@@ -86,44 +86,44 b''
86 </div>
86 </div>
87 </script>
87 </script>
88
88
89 <ng-include src="'templates/loader.html'" ng-if="report.is_loading.report"></ng-include>
89 <ng-include src="'templates/loader.html'" ng-if="$ctrl.is_loading.report"></ng-include>
90
90
91 <div ng-if="!report.is_loading.report && report.report === null">
91 <div ng-if="!$ctrl.is_loading.report && $ctrl.report === null">
92 <strong>OOPS something went wrong :(</strong>
92 <strong>OOPS something went wrong :(</strong>
93 </div>
93 </div>
94
94
95 <div ng-if="report.report !== null && !report.is_loading.report">
95 <div ng-if="$ctrl.report !== null && !$ctrl.is_loading.report">
96
96
97 <div ng-if="report.stateHolder.AeUser.id" class="row">
97 <div ng-if="$ctrl.stateHolder.AeUser.id" class="row">
98 <div class="col-lg-12">
98 <div class="col-lg-12">
99 <a onclick="window.history.back()" class="btn btn-default" ng-if="report.window.history.length > 2"><span class="fa fa-arrow-circle-o-left"></span>
99 <a onclick="window.history.back()" class="btn btn-default" ng-if="$ctrl.window.history.length > 2"><span class="fa fa-arrow-circle-o-left"></span>
100 Go back</a>
100 Go back</a>
101 <a class="btn btn-default" ng-click="report.assignUsersModal()" ng-if="report.reportType == 'report'"><span
101 <a class="btn btn-default" ng-click="$ctrl.assignUsersModal()" ng-if="$ctrl.reportType == 'report'"><span
102 class="fa fa-flag"></span> Assign report
102 class="fa fa-flag"></span> Assign report
103 to user</a>
103 to user</a>
104
104
105 <a class="btn {{ report.report.group.fixed ? 'btn-success' : 'btn-default'}}" ng-click="report.markFixed()"
105 <a class="btn {{ $ctrl.report.group.fixed ? 'btn-success' : 'btn-default'}}" ng-click="$ctrl.markFixed()"
106 ng-if="report.reportType == 'report'">
106 ng-if="$ctrl.reportType == 'report'">
107 <span class="fa fa-check"></span> Mark fixed</a>
107 <span class="fa fa-check"></span> Mark fixed</a>
108
108
109 <span class="dropdown" ng-if="report.report.application.integrations.length" data-uib-dropdown on-toggle="toggled(open)">
109 <span class="dropdown" ng-if="$ctrl.report.application.integrations.length" data-uib-dropdown on-toggle="toggled(open)">
110 <a class="dropdown-toggle btn btn-default" data-uib-dropdown-toggle>
110 <a class="dropdown-toggle btn btn-default" data-uib-dropdown-toggle>
111 <span class="fa fa-send"></span> Integrations
111 <span class="fa fa-send"></span> Integrations
112 </a>
112 </a>
113 <ul class="dropdown-menu">
113 <ul class="dropdown-menu">
114 <li ng-repeat="choice in report.report.application.integrations">
114 <li ng-repeat="choice in $ctrl.report.application.integrations">
115 <a ng-click="report.runIntegration(choice.name)">{{choice.action}}</a>
115 <a ng-click="$ctrl.runIntegration(choice.name)">{{choice.action}}</a>
116 </li>
116 </li>
117 </ul>
117 </ul>
118 </span>
118 </span>
119
119
120 <a class="btn btn-default" ng-click="report.markPublic()">Make {{report.group.public ? 'private' : 'public'}}</a>
120 <a class="btn btn-default" ng-click="$ctrl.markPublic()">Make {{$ctrl.group.public ? 'private' : 'public'}}</a>
121
121
122 <span class="dropdown" data-uib-dropdown on-toggle="toggled(open)">
122 <span class="dropdown" data-uib-dropdown on-toggle="toggled(open)">
123 <a class="btn btn-danger" data-uib-dropdown-toggle><span class="fa fa-trash-o"></span> Delete</a>
123 <a class="btn btn-danger" data-uib-dropdown-toggle><span class="fa fa-trash-o"></span> Delete</a>
124 <ul class="dropdown-menu">
124 <ul class="dropdown-menu">
125 <li><a>No</a></li>
125 <li><a>No</a></li>
126 <li><a ng-click="report.delete()">Yes</a></li>
126 <li><a ng-click="$ctrl.delete()">Yes</a></li>
127 </ul>
127 </ul>
128 </span>
128 </span>
129 </div>
129 </div>
@@ -140,68 +140,68 b''
140 <table class="report-table with-ellipsis">
140 <table class="report-table with-ellipsis">
141 <tr>
141 <tr>
142 <td class="table-label">Occurences</td>
142 <td class="table-label">Occurences</td>
143 <td class="data">{{report.report.group.occurences}}</td>
143 <td class="data">{{$ctrl.report.group.occurences}}</td>
144 </tr>
144 </tr>
145 <tr ng-if="report.report.http_status">
145 <tr ng-if="$ctrl.report.http_status">
146 <td class="table-label">HTTP status</td>
146 <td class="table-label">HTTP status</td>
147 <td class="data">{{report.report.http_status}}</td>
147 <td class="data">{{$ctrl.report.http_status}}</td>
148 </tr>
148 </tr>
149 <tr ng-if="report.report.group.priority">
149 <tr ng-if="$ctrl.report.group.priority">
150 <td class="table-label">Priority</td>
150 <td class="table-label">Priority</td>
151 <td class="data">{{report.report.group.priority}}</td>
151 <td class="data">{{$ctrl.report.group.priority}}</td>
152 </tr>
152 </tr>
153 <tr ng-if="report.report.group.public">
153 <tr ng-if="$ctrl.report.group.public">
154 <td class="table-label">Public URL</td>
154 <td class="table-label">Public URL</td>
155 <td class="data">
155 <td class="data">
156 <form>
156 <form>
157 <textarea class="TextAreaField form-control" id="public-url" onclick="this.select()">{{report.$state.href(report.$state.current.name, report.$state.params, {absolute: true})}}</textarea>
157 <textarea class="TextAreaField form-control" id="public-url" onclick="this.select()">{{$ctrl.$state.href($ctrl.$state.current.name, $ctrl.$state.params, {absolute: true})}}</textarea>
158 </form>
158 </form>
159 </td>
159 </td>
160 </tr>
160 </tr>
161 <tr data-uib-tooltip="{{report.report.url}}">
161 <tr data-uib-tooltip="{{$ctrl.report.url}}">
162 <td class="table-label">URL</td>
162 <td class="table-label">URL</td>
163 <td class="data ellipsis"><a href="{{report.report.url}}">{{report.report.url}}</a></td>
163 <td class="data ellipsis"><a href="{{$ctrl.report.url}}">{{$ctrl.report.url}}</a></td>
164 </tr>
164 </tr>
165
165
166 <tr ng-if="report.report.ip">
166 <tr ng-if="$ctrl.report.ip">
167 <td class="table-label">Remote IP</td>
167 <td class="table-label">Remote IP</td>
168 <td class="data">{{report.report.ip}}</td>
168 <td class="data">{{$ctrl.report.ip}}</td>
169 </tr>
169 </tr>
170 <tr ng-if="report.report.user_agent" data-uib-tooltip="{{report.report.user_agent}}">
170 <tr ng-if="$ctrl.report.user_agent" data-uib-tooltip="{{$ctrl.report.user_agent}}">
171 <td class="table-label">User Agent</td>
171 <td class="table-label">User Agent</td>
172 <td class="data ellipsis">{{report.report.user_agent}}</td>
172 <td class="data ellipsis">{{$ctrl.report.user_agent}}</td>
173 </tr>
173 </tr>
174 <tr ng-if="report.report.message">
174 <tr ng-if="$ctrl.report.message">
175 <td class="table-label">Message</td>
175 <td class="table-label">Message</td>
176 <td class="data">{{report.report.message}}</td>
176 <td class="data">{{$ctrl.report.message}}</td>
177 </tr>
177 </tr>
178 <tr ng-if="report.report.duration > 0">
178 <tr ng-if="$ctrl.report.duration > 0">
179 <td class="table-label">Duration</td>
179 <td class="table-label">Duration</td>
180 <td class="data">
180 <td class="data">
181 <span>{{report.report.duration}}s</span>
181 <span>{{$ctrl.report.duration}}s</span>
182 </td>
182 </td>
183 </tr>
183 </tr>
184 <tr>
184 <tr>
185 <td class="table-label">First occured</td>
185 <td class="table-label">First occured</td>
186 <td class="data">
186 <td class="data">
187 <span uib-tooltip="{{report.report.group.first_timestamp}}"><iso-to-relative-time
187 <span uib-tooltip="{{$ctrl.report.group.first_timestamp}}"><iso-to-relative-time
188 time="{{report.report.group.first_timestamp}}"/></span>
188 time="{{$ctrl.report.group.first_timestamp}}"/></span>
189 </td>
189 </td>
190 </tr>
190 </tr>
191 <tr>
191 <tr>
192 <td class="table-label">Last occured</td>
192 <td class="table-label">Last occured</td>
193 <td class="data">
193 <td class="data">
194 <span uib-tooltip="{{report.report.group.last_timestamp}}"><iso-to-relative-time
194 <span uib-tooltip="{{$ctrl.report.group.last_timestamp}}"><iso-to-relative-time
195 time="{{report.report.group.last_timestamp}}"/></span>
195 time="{{$ctrl.report.group.last_timestamp}}"/></span>
196 </td>
196 </td>
197 </tr>
197 </tr>
198 </table>
198 </table>
199
199
200 <div ng-if="report.requestStats">
200 <div ng-if="$ctrl.requestStats">
201 <h3>Performance stats</h3>
201 <h3>Performance stats</h3>
202
202
203 <div class="perf_stats">
203 <div class="perf_stats">
204 <span class="stat" ng-repeat="stat in report.requestStats"
204 <span class="stat" ng-repeat="stat in $ctrl.requestStats"
205 ng-if="stat.calls > 0 || stat.value > 0"><strong>
205 ng-if="stat.calls > 0 || stat.value > 0"><strong>
206 <span class="{{stat.name}} bar" style="width:10px"></span> {{stat.calls}}
206 <span class="{{stat.name}} bar" style="width:10px"></span> {{stat.calls}}
207 <span ng-if="stat.name!='main'"><small>{{stat.name}} calls</small></span>
207 <span ng-if="stat.name!='main'"><small>{{stat.name}} calls</small></span>
@@ -213,14 +213,14 b''
213
213
214 <div style="width: 100%; overflow:hidden">
214 <div style="width: 100%; overflow:hidden">
215 <div class="{{stat.name}} bar" style="width:{{stat.percent}}%; height: 25px"
215 <div class="{{stat.name}} bar" style="width:{{stat.percent}}%; height: 25px"
216 ng-repeat="stat in report.requestStats"
216 ng-repeat="stat in $ctrl.requestStats"
217 data-uib-tooltip="{{stat.value}}s - Cumulative time spent in this request on all {{ stat.name }} calls"></div>
217 data-uib-tooltip="{{stat.value}}s - Cumulative time spent in this request on all {{ stat.name }} calls"></div>
218 <div class="row">
218 <div class="row">
219 <div class="col-xs-6 text-left">
219 <div class="col-xs-6 text-left">
220 <small>0s</small>
220 <small>0s</small>
221 </div>
221 </div>
222 <div class="col-xs-6 text-right">
222 <div class="col-xs-6 text-right">
223 <small>{{report.report.duration.toFixed(3)}}s</small>
223 <small>{{$ctrl.report.duration.toFixed(3)}}s</small>
224 </div>
224 </div>
225 </div>
225 </div>
226 </div>
226 </div>
@@ -230,14 +230,14 b''
230 <h3>Tags</h3>
230 <h3>Tags</h3>
231
231
232 <table class="report-table with-tags">
232 <table class="report-table with-tags">
233 <tr ng-repeat="(tag, value) in report.report.tags">
233 <tr ng-repeat="(tag, value) in $ctrl.report.tags">
234 <td class="table-label" ng-switch="tag"><!--
234 <td class="table-label" ng-switch="tag"><!--
235 --><span ng-switch-when="user_name">Username/UID</span><!--
235 --><span ng-switch-when="user_name">Username/UID</span><!--
236 --><span ng-switch-when="view_name">View Name</span><!--
236 --><span ng-switch-when="view_name">View Name</span><!--
237 --><span ng-switch-when="server_name">Server Name</span><!--
237 --><span ng-switch-when="server_name">Server Name</span><!--
238 --><span ng-switch-default>{{ tag }}</span>
238 --><span ng-switch-default>{{ tag }}</span>
239 </td>
239 </td>
240 <td class="data"><a ng-click="report.searchTag(tag, value)">{{ value }}</td>
240 <td class="data"><a ng-click="$ctrl.searchTag(tag, value)">{{ value }}</td>
241 </tr>
241 </tr>
242 </table>
242 </table>
243
243
@@ -250,61 +250,61 b''
250 <div class="frames">
250 <div class="frames">
251 <p class="text-center">Report history</p>
251 <p class="text-center">Report history</p>
252
252
253 <div class="panel" ng-if="!report.is_loading.history">
253 <div class="panel" ng-if="!$ctrl.is_loading.history">
254 <div class="panel-body">
254 <div class="panel-body">
255 <c3chart data-domid="report_history_chart" data-data="report.reportHistoryData" data-config="report.reportHistoryConfig">
255 <c3chart data-domid="report_history_chart" data-data="$ctrl.reportHistoryData" data-config="$ctrl.reportHistoryConfig">
256 </c3chart>
256 </c3chart>
257 </div>
257 </div>
258 </div>
258 </div>
259
259
260 <div class="row m-b-1">
260 <div class="row m-b-1">
261 <div class="col-sm-2 text-left">
261 <div class="col-sm-2 text-left">
262 <a class="switch_detail btn btn-sm btn-default {{report.report.group.previous_report ? '' : 'disabled'}}"
262 <a class="switch_detail btn btn-sm btn-default {{$ctrl.report.group.previous_report ? '' : 'disabled'}}"
263 ng-click="report.previousDetail()">
263 ng-click="$ctrl.previousDetail()">
264 <span class="fa fa-arrow-left"></span>
264 <span class="fa fa-arrow-left"></span>
265 Prev. detail</a>
265 Prev. detail</a>
266
266
267 </div>
267 </div>
268 <div class="col-sm-8 text-center">
268 <div class="col-sm-8 text-center">
269 <small>
269 <small>
270 <span uib-tooltip="{{report.report.start_time|isoToRelativeTime}}" class="m-r-1">
270 <span uib-tooltip="{{$ctrl.report.start_time|isoToRelativeTime}}" class="m-r-1">
271 {{report.report.start_time.replace('T', ' ')}} UTC</span>
271 {{$ctrl.report.start_time.replace('T', ' ')}} UTC</span>
272 <span class="text-muted">ID: {{report.report.request_id}}</span>
272 <span class="text-muted">ID: {{$ctrl.report.request_id}}</span>
273 </small>
273 </small>
274 </div>
274 </div>
275 <div class="col-sm-2 text-right">
275 <div class="col-sm-2 text-right">
276 <a class="switch_detail btn btn-sm btn-default {{report.report.group.next_report ? '' : 'disabled'}}"
276 <a class="switch_detail btn btn-sm btn-default {{$ctrl.report.group.next_report ? '' : 'disabled'}}"
277 ng-click="report.nextDetail()">
277 ng-click="$ctrl.nextDetail()">
278 Next detail <span class="fa fa-arrow-right"></span></a>
278 Next detail <span class="fa fa-arrow-right"></span></a>
279 </div>
279 </div>
280 </div>
280 </div>
281
281
282 <h3 class="word-wrap">{{report.report.error}}</h3>
282 <h3 class="word-wrap">{{$ctrl.report.error}}</h3>
283
283
284 <div ng-if="report.report.traceback">
284 <div ng-if="$ctrl.report.traceback">
285
285
286 <h3><strong>Traceback</strong></h3>
286 <h3><strong>Traceback</strong></h3>
287
287
288 <div class="btn-group">
288 <div class="btn-group">
289 <a ng-if="report.traceback.length-10 > 0 " ng-click="report.showLong = !report.showLong"
289 <a ng-if="$ctrl.traceback.length-10 > 0 " ng-click="$ctrl.showLong = !$ctrl.showLong"
290 class="btn btn-default {{report.showLong ? 'active' : ''}}">
290 class="btn btn-default {{$ctrl.showLong ? 'active' : ''}}">
291 <span class="fa fa-align-left"></span>
291 <span class="fa fa-align-left"></span>
292 <small>Show {{report.traceback.length-10}} remaining frames</small>
292 <small>Show {{$ctrl.traceback.length-10}} remaining frames</small>
293 </a>
293 </a>
294
294
295 <a class="btn btn-default {{report.showRaw ? 'active' : ''}}" ng-click="report.showRaw = !report.showRaw">
295 <a class="btn btn-default {{$ctrl.showRaw ? 'active' : ''}}" ng-click="$ctrl.showRaw = !$ctrl.showRaw">
296 <span class="fa fa-list"></span>
296 <span class="fa fa-list"></span>
297 <small>Raw version</small>
297 <small>Raw version</small>
298 </a>
298 </a>
299 </div>
299 </div>
300
300
301 <div ng-if="report.showRaw" class="m-t-1">
301 <div ng-if="$ctrl.showRaw" class="m-t-1">
302 <pre>{{report.rawTraceback}}</pre>
302 <pre>{{$ctrl.rawTraceback}}</pre>
303 </div>
303 </div>
304 <div ng-if="!report.showRaw" class="m-t-1">
304 <div ng-if="!$ctrl.showRaw" class="m-t-1">
305
305
306 <div ng-repeat="frame in report.traceback" class="frame {{$odd ? 'odd' : 'even'}}"
306 <div ng-repeat="frame in $ctrl.traceback" class="frame {{$odd ? 'odd' : 'even'}}"
307 ng-if="$index >= report.traceback.length-10 || report.traceback.length <= 10 || report.showLong">
307 ng-if="$index >= $ctrl.traceback.length-10 || $ctrl.traceback.length <= 10 || $ctrl.showLong">
308 <div class="frameline" ng-if="frame.line">
308 <div class="frameline" ng-if="frame.line">
309 <a class="inspect_vars" ng-click="frame.showVars = !frame.showVars" ng-if="frame.vars">
309 <a class="inspect_vars" ng-click="frame.showVars = !frame.showVars" ng-if="frame.vars">
310 <span class="fa fa-search dim btn btn-default"
310 <span class="fa fa-search dim btn btn-default"
@@ -346,47 +346,47 b''
346
346
347
347
348 <uib-tabset>
348 <uib-tabset>
349 <uib-tab select="report.selectedTab('slow_calls')" active="report.tabs.slow_calls">
349 <uib-tab select="$ctrl.selectedTab('slow_calls')" active="$ctrl.tabs.slow_calls">
350 <uib-tab-heading>
350 <uib-tab-heading>
351 Slow Calls
351 Slow Calls
352 </uib-tab-heading>
352 </uib-tab-heading>
353
353
354 <h3><strong>Slow Calls</strong></h3>
354 <h3><strong>Slow Calls</strong></h3>
355
355
356 <div ng-if="report.report.slow_calls.length > 0">
356 <div ng-if="$ctrl.report.slow_calls.length > 0">
357 <div ng-repeat="call in report.report.slow_calls" ng-include="'slow_call.html'"></div>
357 <div ng-repeat="call in $ctrl.report.slow_calls" ng-include="'slow_call.html'"></div>
358 </div>
358 </div>
359
359
360 <div ng-if="report.report.slow_calls.length == 0">
360 <div ng-if="$ctrl.report.slow_calls.length == 0">
361 No slow calls reported
361 No slow calls reported
362 </div>
362 </div>
363
363
364 </uib-tab>
364 </uib-tab>
365
365
366
366
367 <uib-tab select="report.selectedTab('request_details')" active="report.tabs.request_details">
367 <uib-tab select="$ctrl.selectedTab('request_details')" active="$ctrl.tabs.request_details">
368 <uib-tab-heading>
368 <uib-tab-heading>
369 Request details
369 Request details
370 </uib-tab-heading>
370 </uib-tab-heading>
371
371
372 <h3><strong>Extra</strong></h3>
372 <h3><strong>Extra</strong></h3>
373 <div class="var-listing" human-format vars="report.report.extra"></div>
373 <div class="var-listing" human-format vars="$ctrl.report.extra"></div>
374 <h3><strong>Request details</strong></h3>
374 <h3><strong>Request details</strong></h3>
375 <div class="var-listing" human-format vars="report.report.request"></div>
375 <div class="var-listing" human-format vars="$ctrl.report.request"></div>
376
376
377 </uib-tab>
377 </uib-tab>
378
378
379 <uib-tab select="report.selectedTab('logs')" active="report.tabs.logs">
379 <uib-tab select="$ctrl.selectedTab('logs')" active="$ctrl.tabs.logs">
380 <uib-tab-heading>
380 <uib-tab-heading>
381 Logs
381 Logs
382 </uib-tab-heading>
382 </uib-tab-heading>
383
383
384 <div ng-if="report.is_loading.logs!=false" class="text-center">
384 <div ng-if="$ctrl.is_loading.logs!=false" class="text-center">
385 <span class="fa fa-cog fa-spin fa-3x loader"></span>
385 <span class="fa fa-cog fa-spin fa-3x loader"></span>
386 </div>
386 </div>
387 <p ng-if="report.reportLogs.length == 0"> No logs found</p>
387 <p ng-if="$ctrl.reportLogs.length == 0"> No logs found</p>
388
388
389 <table class="table table-striped log-list" ng-if="report.reportLogs.length > 0">
389 <table class="table table-striped log-list" ng-if="$ctrl.reportLogs.length > 0">
390
390
391 <caption>Logs</caption>
391 <caption>Logs</caption>
392 <thead>
392 <thead>
@@ -396,7 +396,7 b''
396 </tr>
396 </tr>
397 </thead>
397 </thead>
398 <tbody>
398 <tbody>
399 <tr ng-repeat="log in report.reportLogs track by log.log_id">
399 <tr ng-repeat="log in $ctrl.reportLogs track by log.log_id">
400 <td>
400 <td>
401 <a class="tag {{log.log_level|lowercase}}">
401 <a class="tag {{log.log_level|lowercase}}">
402 <span class="name">level:</span> {{log.log_level}}</a>
402 <span class="name">level:</span> {{log.log_level}}</a>
@@ -421,18 +421,18 b''
421 </uib-tab>
421 </uib-tab>
422
422
423
423
424 <uib-tab select="report.selectedTab('comments')" active="report.tabs.comments">
424 <uib-tab select="$ctrl.selectedTab('comments')" active="$ctrl.tabs.comments">
425 <uib-tab-heading>
425 <uib-tab-heading>
426 Comments
426 Comments
427 <span class="label label-info">{{report.report.comments.length}}</span>
427 <span class="label label-info">{{$ctrl.report.comments.length}}</span>
428
428
429 </uib-tab-heading>
429 </uib-tab-heading>
430
430
431 <h3><strong>Comments</strong></h3>
431 <h3><strong>Comments</strong></h3>
432
432
433 <p ng-if="report.report.comments.length == 0">No comments yet - be first to add one!</p>
433 <p ng-if="$ctrl.report.comments.length == 0">No comments yet - be first to add one!</p>
434
434
435 <div class="comment" ng-repeat="comment in report.report.comments">
435 <div class="comment" ng-repeat="comment in $ctrl.report.comments">
436 <p name="comment-{{comment.comment_id}}"><span class="fa fa-comment"></span>
436 <p name="comment-{{comment.comment_id}}"><span class="fa fa-comment"></span>
437 <strong>{{comment.user_name}}</strong>
437 <strong>{{comment.user_name}}</strong>
438 <iso-to-relative-time time="{{comment.created_timestamp}}"/>
438 <iso-to-relative-time time="{{comment.created_timestamp}}"/>
@@ -440,32 +440,32 b''
440 <p class="well">{{comment.body}}</p>
440 <p class="well">{{comment.body}}</p>
441 </div>
441 </div>
442
442
443 <form name="commentForm" ng-submit="report.addComment()">
443 <form name="commentForm" ng-submit="$ctrl.addComment()">
444 <div class="form-group">
444 <div class="form-group">
445 <textarea type="text" class="form-control" id="report.commentForm" ng-model="report.comment" required
445 <textarea type="text" class="form-control" id="$ctrl.commentForm" ng-model="$ctrl.comment" required
446 mentio mentio-search="report.searchMentionedPeople(term)" mentio-items="report.mentionedPeople| filter:label:typedTerm" class="form-control"></textarea>
446 mentio mentio-search="$ctrl.searchMentionedPeople(term)" mentio-items="$ctrl.mentionedPeople| filter:label:typedTerm" class="form-control"></textarea>
447
447
448 </div>
448 </div>
449 <div class="form-group">
449 <div class="form-group">
450 <button class="btn btn-info" ng-disabled="report.commentForm.$invalid">Comment</button>
450 <button class="btn btn-info" ng-disabled="$ctrl.commentForm.$invalid">Comment</button>
451 </div>
451 </div>
452 </form>
452 </form>
453
453
454 <div ng-repeat="comment in report.report.comments" class="{{$odd ? 'odd' : 'even'}}" class="repeat-animate">
454 <div ng-repeat="comment in $ctrl.report.comments" class="{{$odd ? 'odd' : 'even'}}" class="repeat-animate">
455 </div>
455 </div>
456
456
457 </uib-tab>
457 </uib-tab>
458
458
459 <uib-tab select="report.selectedTab('affected_users')" active="report.tabs.affected_users">
459 <uib-tab select="$ctrl.selectedTab('affected_users')" active="$ctrl.tabs.affected_users">
460 <uib-tab-heading>
460 <uib-tab-heading>
461 Affected users
461 Affected users
462 <span class="label label-warning">{{report.report.affected_users_count}}</span>
462 <span class="label label-warning">{{$ctrl.report.affected_users_count}}</span>
463
463
464 </uib-tab-heading>
464 </uib-tab-heading>
465
465
466 <h3><strong>50 most affected users ID's by this issue:</strong></h3>
466 <h3><strong>50 most affected users ID's by this issue:</strong></h3>
467 <ul class="affected-user-list">
467 <ul class="affected-user-list">
468 <li ng-repeat="user in report.report.top_affected_users">
468 <li ng-repeat="user in $ctrl.report.top_affected_users">
469 <strong>{{user.username}}</strong> <span class="badge" uib-tooltip="occurences">{{user.count}}</span>
469 <strong>{{user.username}}</strong> <span class="badge" uib-tooltip="occurences">{{user.count}}</span>
470 </li>
470 </li>
471 </ul>
471 </ul>
@@ -17,12 +17,17 b''
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.controllers').controller('ReportsViewController', ReportsViewController);
20 angular.module('appenlight.components.reportView', [])
21 ReportsViewController.$inject = ['$window', '$location', '$state', '$uibModal',
21 .component('reportView', {
22 templateUrl: 'components/views/report-view/report-view.html',
23 controller: ReportViewController
24 });
25
26 ReportViewController.$inject = ['$window', '$location', '$state', '$uibModal',
22 '$cookies', 'reportGroupPropertyResource', 'reportGroupResource',
27 '$cookies', 'reportGroupPropertyResource', 'reportGroupResource',
23 'logsNoIdResource', 'stateHolder'];
28 'logsNoIdResource', 'stateHolder'];
24
29
25 function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) {
30 function ReportViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) {
26 var vm = this;
31 var vm = this;
27 vm.window = $window;
32 vm.window = $window;
28 vm.stateHolder = stateHolder;
33 vm.stateHolder = stateHolder;
@@ -1,29 +1,29 b''
1 <ng-include src="'templates/loader.html'" ng-if="reports_list.is_loading"></ng-include>
1 <ng-include src="'templates/loader.html'" ng-if="$ctrl.is_loading"></ng-include>
2
2
3 <div ng-if="reports_list.is_loading === false">
3 <div ng-if="$ctrl.is_loading === false">
4
4
5 <p class="search-params">
5 <p class="search-params">
6 <strong>Search params:</strong>
6 <strong>Search params:</strong>
7 <span ng-repeat="tag in reports_list.searchParams.tags" class="tag">
7 <span ng-repeat="tag in $ctrl.searchParams.tags" class="tag">
8 <strong>{{tag.type}}</strong>
8 <strong>{{tag.type}}</strong>
9 {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}
9 {{ tag.type == 'resource' ? $ctrl.applications[tag.value].resource_name : tag.value }}
10
10
11 <a ng-click="reports_list.removeSearchTag(tag)"><span class="fa fa-times"></span></a>
11 <a ng-click="$ctrl.removeSearchTag(tag)"><span class="fa fa-times"></span></a>
12 </span>
12 </span>
13 </p>
13 </p>
14
14
15 <form class="form">
15 <form class="form">
16 <div class="typeahead-tags">
16 <div class="typeahead-tags">
17 <input type="text" id="typeAhead" ng-model="reports_list.filterTypeAhead" placeholder="Start typing to filter reports - filter by tags, exception, priority or other properties."
17 <input type="text" id="typeAhead" ng-model="$ctrl.filterTypeAhead" placeholder="Start typing to filter reports - filter by tags, exception, priority or other properties."
18 ng-keydown="reports_list.typeAheadTag($event)"
18 ng-keydown="$ctrl.typeAheadTag($event)"
19 uib-typeahead="tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter"
19 uib-typeahead="tag as tag.text for tag in $ctrl.filterTypeAheadOptions | filter:$viewValue:aheadFilter"
20 typeahead-min-length="1" class="form-control"
20 typeahead-min-length="1" class="form-control"
21 typeahead-template-url="templates/directives/search_type_ahead.html">
21 typeahead-template-url="templates/directives/search_type_ahead.html">
22 </div>
22 </div>
23 </form>
23 </form>
24
24
25
25
26 <div class="well position-absolute increse-zindex" ng-show="reports_list.showDatePicker" ng-model="reports_list.pickerDate" ng-change="reports_list.pickerDateChanged()"
26 <div class="well position-absolute increse-zindex" ng-show="$ctrl.showDatePicker" ng-model="$ctrl.pickerDate" ng-change="$ctrl.pickerDateChanged()"
27 class="animate-show">
27 class="animate-show">
28 <uib-datepicker></uib-datepicker>
28 <uib-datepicker></uib-datepicker>
29 </div>
29 </div>
@@ -32,29 +32,29 b''
32
32
33
33
34 <div class="text-center">
34 <div class="text-center">
35 <uib-pagination total-items="reports_list.itemCount" items-per-page="reports_list.itemsPerPage" ng-model="reports_list.page" max-size="10"
35 <uib-pagination total-items="$ctrl.itemCount" items-per-page="$ctrl.itemsPerPage" ng-model="$ctrl.page" max-size="10"
36 class="pagination pagination-sm" boundary-links="true" direction-links="false"
36 class="pagination pagination-sm" boundary-links="true" direction-links="false"
37 ng-change="reports_list.paginationChange()"
37 ng-change="$ctrl.paginationChange()"
38 ng-show="!reports_list.is_loading"></uib-pagination>
38 ng-show="!$ctrl.is_loading"></uib-pagination>
39 </div>
39 </div>
40
40
41 <div class="panel panel-default">
41 <div class="panel panel-default">
42 <!-- Default panel contents -->
42 <!-- Default panel contents -->
43
43
44 <table class="table table-striped report-list" ng-show="!reports_list.is_loading">
44 <table class="table table-striped report-list" ng-show="!$ctrl.is_loading">
45 <caption>Reports</caption>
45 <caption>Reports</caption>
46 <thead>
46 <thead>
47 <tr>
47 <tr>
48 <th class="c1 ordering occurences">#</th>
48 <th class="c1 ordering occurences">#</th>
49 <th class="c2 application">Application</th>
49 <th class="c2 application">Application</th>
50 <th class="c4 when">When <input type="checkbox" ng-model="reports_list.notRelativeTime"
50 <th class="c4 when">When <input type="checkbox" ng-model="$ctrl.notRelativeTime"
51 ng-change="reports_list.changeRelativeTime()"
51 ng-change="$ctrl.changeRelativeTime()"
52 title="Tick to see UTC time instead relative"></th>
52 title="Tick to see UTC time instead relative"></th>
53 <th class="c5 error_type">Error</th>
53 <th class="c5 error_type">Error</th>
54 </tr>
54 </tr>
55 </thead>
55 </thead>
56 <tbody>
56 <tbody>
57 <tr ng-repeat="report in reports_list.reportsPage track by report.id">
57 <tr ng-repeat="report in $ctrl.reportsPage track by report.id">
58 <td class="c1 occurences">
58 <td class="c1 occurences">
59 <span class="priority-{{report.group.priority}}" data-uib-tooltip="Report priority">{{report.group.priority}}</span>
59 <span class="priority-{{report.group.priority}}" data-uib-tooltip="Report priority">{{report.group.priority}}</span>
60 <span class="count {{report.presentation.className}}" data-uib-tooltip="{{report.presentation.tooltip}}">
60 <span class="count {{report.presentation.className}}" data-uib-tooltip="{{report.presentation.tooltip}}">
@@ -65,10 +65,10 b''
65 <div class="app_name">{{report.resource_name}}</div>
65 <div class="app_name">{{report.resource_name}}</div>
66 <span class="server">@{{report.tags.server_name}}</span></td>
66 <span class="server">@{{report.tags.server_name}}</span></td>
67 <td class="c3 when">
67 <td class="c3 when">
68 <span ng-show="!reports_list.notRelativeTime"><span data-uib-tooltip="{{report.group.last_timestamp}}"><iso-to-relative-time
68 <span ng-show="!$ctrl.notRelativeTime"><span data-uib-tooltip="{{report.group.last_timestamp}}"><iso-to-relative-time
69 time="{{report.group.last_timestamp}}"/></span>
69 time="{{report.group.last_timestamp}}"/></span>
70 </span>
70 </span>
71 <span ng-show="reports_list.notRelativeTime">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>
71 <span ng-show="$ctrl.notRelativeTime">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>
72 </td>
72 </td>
73 <td class="c4 report ellipsis"><a ui-sref="report.view_detail({groupId:report.group.id, reportId:report.id})" title="{{report.error}}">{{report.error || 'Unknown Exception'}}</a> <br/>
73 <td class="c4 report ellipsis"><a ui-sref="report.view_detail({groupId:report.group.id, reportId:report.id})" title="{{report.error}}">{{report.error || 'Unknown Exception'}}</a> <br/>
74 <span class="url">{{ report.tags.view_name || report.url_path}}</td>
74 <span class="url">{{ report.tags.view_name || report.url_path}}</td>
@@ -80,10 +80,10 b''
80
80
81
81
82 <div class="text-center">
82 <div class="text-center">
83 <uib-pagination total-items="reports_list.itemCount" items-per-page="reports_list.itemsPerPage" ng-model="reports_list.page" max-size="10"
83 <uib-pagination total-items="$ctrl.itemCount" items-per-page="$ctrl.itemsPerPage" ng-model="$ctrl.page" max-size="10"
84 class="pagination pagination-sm" boundary-links="true" direction-links="false"
84 class="pagination pagination-sm" boundary-links="true" direction-links="false"
85 ng-change="reports_list.paginationChange()"
85 ng-change="$ctrl.paginationChange()"
86 ng-show="!reports_list.is_loading"></uib-pagination>
86 ng-show="!$ctrl.is_loading"></uib-pagination>
87 </div>
87 </div>
88
88
89 </div>
89 </div>
@@ -17,13 +17,16 b''
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.controllers')
20 angular.module('appenlight.components.reportsBrowserView', [])
21 .controller('ReportsListController', ReportsListController);
21 .component('reportsBrowserView', {
22 templateUrl: 'components/views/reports-browser-view/reports-browser-view.html',
23 controller: reportsBrowserViewController
24 });
22
25
23 ReportsListController.$inject = ['$location', '$cookies',
26 reportsBrowserViewController.$inject = ['$location', '$cookies',
24 'stateHolder', 'typeAheadTagHelper', 'reportsResource'];
27 'stateHolder', 'typeAheadTagHelper', 'reportsResource'];
25
28
26 function ReportsListController($location, $cookies, stateHolder,
29 function reportsBrowserViewController($location, $cookies, stateHolder,
27 typeAheadTagHelper, reportsResource) {
30 typeAheadTagHelper, reportsResource) {
28 var vm = this;
31 var vm = this;
29 vm.applications = stateHolder.AeUser.applications_map;
32 vm.applications = stateHolder.AeUser.applications_map;
@@ -1,14 +1,14 b''
1 <ng-include src="'templates/loader.html'" ng-if="reports_list.is_loading"></ng-include>
1 <ng-include src="'templates/loader.html'" ng-if="$ctrl.is_loading"></ng-include>
2
2
3 <div ng-if="reports_list.is_loading === false">
3 <div ng-if="$ctrl.is_loading === false">
4
4
5 <p class="search-params">
5 <p class="search-params">
6 <strong>Search params:</strong>
6 <strong>Search params:</strong>
7 <span ng-repeat="tag in reports_list.searchParams.tags" class="tag">
7 <span ng-repeat="tag in $ctrl.searchParams.tags" class="tag">
8 <strong>{{tag.type}}</strong>
8 <strong>{{tag.type}}</strong>
9 {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}
9 {{ tag.type == 'resource' ? $ctrl.applications[tag.value].resource_name : tag.value }}
10
10
11 <a ng-click="reports_list.removeSearchTag(tag)"><span class="fa fa-times"></span></a>
11 <a ng-click="$ctrl.removeSearchTag(tag)"><span class="fa fa-times"></span></a>
12 </span>
12 </span>
13 </p>
13 </p>
14
14
@@ -16,16 +16,16 b''
16
16
17 <form class="form">
17 <form class="form">
18 <div class="typeahead-tags">
18 <div class="typeahead-tags">
19 <input type="text" id="typeAhead" ng-model="reports_list.filterTypeAhead" placeholder="Start typing to filter slowness reports - filter by tags, average response time, priority or other properties."
19 <input type="text" id="typeAhead" ng-model="$ctrl.filterTypeAhead" placeholder="Start typing to filter slowness reports - filter by tags, average response time, priority or other properties."
20 ng-keydown="reports_list.typeAheadTag($event)"
20 ng-keydown="$ctrl.typeAheadTag($event)"
21 uib-typeahead="tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter"
21 uib-typeahead="tag as tag.text for tag in $ctrl.filterTypeAheadOptions | filter:$viewValue:aheadFilter"
22 typeahead-min-length="1" class="form-control"
22 typeahead-min-length="1" class="form-control"
23 typeahead-template-url="templates/directives/search_type_ahead.html">
23 typeahead-template-url="templates/directives/search_type_ahead.html">
24 </div>
24 </div>
25 </form>
25 </form>
26
26
27
27
28 <div class="well position-absolute increse-zindex" ng-show="reports_list.showDatePicker" ng-model="reports_list.pickerDate" ng-change="reports_list.pickerDateChanged()"
28 <div class="well position-absolute increse-zindex" ng-show="$ctrl.showDatePicker" ng-model="$ctrl.pickerDate" ng-change="$ctrl.pickerDateChanged()"
29 class="animate-show">
29 class="animate-show">
30 <uib-datepicker></uib-datepicker>
30 <uib-datepicker></uib-datepicker>
31 </div>
31 </div>
@@ -34,31 +34,31 b''
34
34
35
35
36 <div class="text-center">
36 <div class="text-center">
37 <uib-pagination total-items="reports_list.itemCount" items-per-page="reports_list.itemsPerPage" ng-model="reports_list.page" max-size="10"
37 <uib-pagination total-items="$ctrl.itemCount" items-per-page="$ctrl.itemsPerPage" ng-model="$ctrl.page" max-size="10"
38 class="pagination pagination-sm" boundary-links="true" direction-links="false"
38 class="pagination pagination-sm" boundary-links="true" direction-links="false"
39 ng-change="reports_list.paginationChange()"
39 ng-change="$ctrl.paginationChange()"
40 ng-show="!reports_list.is_loading"></uib-pagination>
40 ng-show="!$ctrl.is_loading"></uib-pagination>
41 </div>
41 </div>
42
42
43
43
44 <div class="panel panel-default">
44 <div class="panel panel-default">
45 <!-- Default panel contents -->
45 <!-- Default panel contents -->
46
46
47 <table class="table table-striped report-list" ng-show="!reports_list.is_loading">
47 <table class="table table-striped report-list" ng-show="!$ctrl.is_loading">
48 <caption>Slow Request Reports</caption>
48 <caption>Slow Request Reports</caption>
49 <thead>
49 <thead>
50 <tr>
50 <tr>
51 <td class="c1 ordering occurences">#</td>
51 <td class="c1 ordering occurences">#</td>
52 <td class="c2 average_duration">Avg. duration</td>
52 <td class="c2 average_duration">Avg. duration</td>
53 <td class="c3 application">Application</td>
53 <td class="c3 application">Application</td>
54 <td class="c5 when">When <input type="checkbox" ng-model="reports_list.notRelativeTime"
54 <td class="c5 when">When <input type="checkbox" ng-model="$ctrl.notRelativeTime"
55 ng-change="reports_list.changeRelativeTime()"
55 ng-change="$ctrl.changeRelativeTime()"
56 title="Tick to see UTC time instead relative"></td>
56 title="Tick to see UTC time instead relative"></td>
57 <td class="c6 error_type">Location</td>
57 <td class="c6 error_type">Location</td>
58 </tr>
58 </tr>
59 </thead>
59 </thead>
60 <tbody>
60 <tbody>
61 <tr ng-repeat="report in reports_list.reportsPage track by report.id">
61 <tr ng-repeat="report in $ctrl.reportsPage track by report.id">
62 <td class="c1 occurences">
62 <td class="c1 occurences">
63 <span class="priority-{{report.group.priority}}" data-uib-tooltip="Report priority">{{report.group.priority}}</span>
63 <span class="priority-{{report.group.priority}}" data-uib-tooltip="Report priority">{{report.group.priority}}</span>
64 <span class="count {{report.presentation.className}}" data-uib-tooltip="{{report.presentation.tooltip}}">
64 <span class="count {{report.presentation.className}}" data-uib-tooltip="{{report.presentation.tooltip}}">
@@ -70,10 +70,10 b''
70 <div class="app_name">{{report.resource_name}}</div>
70 <div class="app_name">{{report.resource_name}}</div>
71 <span class="server">@{{report.tags.server_name}}</span></td>
71 <span class="server">@{{report.tags.server_name}}</span></td>
72 <td class="c4 when">
72 <td class="c4 when">
73 <span ng-show="!reports_list.notRelativeTime"><span data-uib-tooltip="{{report.group.last_timestamp}}"><iso-to-relative-time
73 <span ng-show="!$ctrl.notRelativeTime"><span data-uib-tooltip="{{report.group.last_timestamp}}"><iso-to-relative-time
74 time="{{report.group.last_timestamp}}"/></span>
74 time="{{report.group.last_timestamp}}"/></span>
75 </span>
75 </span>
76 <span ng-show="reports_list.notRelativeTime">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>
76 <span ng-show="$ctrl.notRelativeTime">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>
77 </td>
77 </td>
78 <td class="c5 report ellipsis">
78 <td class="c5 report ellipsis">
79 <a ui-sref="report.view_detail({groupId:report.group.id, reportId:report.id})">{{ report.tags.view_name || report.url_path}} </span></a></td>
79 <a ui-sref="report.view_detail({groupId:report.group.id, reportId:report.id})">{{ report.tags.view_name || report.url_path}} </span></a></td>
@@ -86,10 +86,10 b''
86 </div>
86 </div>
87
87
88 <div class="text-center">
88 <div class="text-center">
89 <uib-pagination total-items="reports_list.itemCount" items-per-page="reports_list.itemsPerPage" ng-model="reports_list.page" max-size="10"
89 <uib-pagination total-items="$ctrl.itemCount" items-per-page="$ctrl.itemsPerPage" ng-model="$ctrl.page" max-size="10"
90 class="pagination pagination-sm" boundary-links="true" direction-links="false"
90 class="pagination pagination-sm" boundary-links="true" direction-links="false"
91 ng-change="reports_list.paginationChange()"
91 ng-change="$ctrl.paginationChange()"
92 ng-show="!reports_list.is_loading"></uib-pagination>
92 ng-show="!$ctrl.is_loading"></uib-pagination>
93 </div>
93 </div>
94
94
95 </div>
95 </div>
@@ -21,13 +21,16 b''
21
21
22 /* Controllers */
22 /* Controllers */
23
23
24 angular.module('appenlight.controllers')
24 angular.module('appenlight.components.reportsSlowBrowserView', [])
25 .controller('ReportsListSlowController', ReportsListSlowController);
25 .component('reportsSlowBrowserView', {
26 templateUrl: 'components/views/reports-slow-browser-view/reports-slow-browser-view.html',
27 controller: ReportsSlowBrowserViewController
28 });
26
29
27 ReportsListSlowController.$inject = ['$location', '$cookies',
30 ReportsSlowBrowserViewController.$inject = ['$location', '$cookies',
28 'stateHolder', 'typeAheadTagHelper', 'slowReportsResource']
31 'stateHolder', 'typeAheadTagHelper', 'slowReportsResource']
29
32
30 function ReportsListSlowController($location, $cookies, stateHolder, typeAheadTagHelper, slowReportsResource) {
33 function ReportsSlowBrowserViewController($location, $cookies, stateHolder, typeAheadTagHelper, slowReportsResource) {
31 var vm = this;
34 var vm = this;
32 vm.applications = stateHolder.AeUser.applications_map;
35 vm.applications = stateHolder.AeUser.applications_map;
33 stateHolder.section = 'slow_reports';
36 stateHolder.section = 'slow_reports';
@@ -34,30 +34,26 b" angular.module('appenlight').config(['$stateProvider', '$urlRouterProvider', fun"
34 $stateProvider.state('report', {
34 $stateProvider.state('report', {
35 abstract: true,
35 abstract: true,
36 url: '/ui/report',
36 url: '/ui/report',
37 templateUrl: 'templates/reports/parent_view.html'
37 template: '<ui-view></ui-view>'
38 });
38 });
39
39
40 $stateProvider.state('report.list', {
40 $stateProvider.state('report.list', {
41 url: '?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
41 url: '/list?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
42 templateUrl: 'templates/reports/list.html',
42 component: 'reportsBrowserView'
43 controller: 'ReportsListController as reports_list'
44 });
43 });
45
44
46 $stateProvider.state('report.list_slow', {
45 $stateProvider.state('report.list_slow', {
47 url: '/list_slow?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
46 url: '/list_slow?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
48 templateUrl: 'templates/reports/list_slow.html',
47 component: 'reportsSlowBrowserView'
49 controller: 'ReportsListSlowController as reports_list'
50 });
48 });
51
49
52 $stateProvider.state('report.view_detail', {
50 $stateProvider.state('report.view_detail', {
53 url: '/:groupId/:reportId',
51 url: '/:groupId/:reportId',
54 templateUrl: 'templates/reports/view.html',
52 component: 'reportView'
55 controller: 'ReportsViewController as report'
56 });
53 });
57 $stateProvider.state('report.view_group', {
54 $stateProvider.state('report.view_group', {
58 url: '/:groupId',
55 url: '/:groupId',
59 templateUrl: 'templates/reports/view.html',
56 component: 'reportView'
60 controller: 'ReportsViewController as report'
61 });
57 });
62 $stateProvider.state('events', {
58 $stateProvider.state('events', {
63 url: '/ui/events',
59 url: '/ui/events',
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now