Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(549)

Side by Side Diff: go/src/infra/appengine/sheriff-o-matic/elements/som-app.html

Issue 2110723004: SoM: Navbar links++ (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Minor tweaks. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <link rel="import" href="/bower_components/polymer/polymer.html"> 1 <link rel="import" href="/bower_components/polymer/polymer.html">
2 <link rel="import" href="/bower_components/iron-ajax/iron-ajax.html"> 2 <link rel="import" href="/bower_components/iron-ajax/iron-ajax.html">
3 <link rel="import" href="/bower_components/iron-flex-layout/classes/iron-flex-la yout.html"> 3 <link rel="import" href="/bower_components/iron-flex-layout/classes/iron-flex-la yout.html">
4 <link rel="import" href="/bower_components/iron-icons/hardware-icons.html"> 4 <link rel="import" href="/bower_components/iron-icons/hardware-icons.html">
5 <link rel="import" href="/bower_components/iron-icon/iron-icon.html"> 5 <link rel="import" href="/bower_components/iron-icon/iron-icon.html">
6 <link rel="import" href="/bower_components/iron-icons/iron-icons.html"> 6 <link rel="import" href="/bower_components/iron-icons/iron-icons.html">
7 <link rel="import" href="/bower_components/iron-location/iron-location.html"> 7 <link rel="import" href="/bower_components/iron-location/iron-location.html">
8 <link rel="import" href="/bower_components/iron-pages/iron-pages.html"> 8 <link rel="import" href="/bower_components/iron-pages/iron-pages.html">
9 <link rel="import" href="/bower_components/neon-animation/animations/scale-up-an imation.html"> 9 <link rel="import" href="/bower_components/neon-animation/animations/scale-up-an imation.html">
10 <link rel="import" href="/bower_components/neon-animation/animations/fade-out-an imation.html"> 10 <link rel="import" href="/bower_components/neon-animation/animations/fade-out-an imation.html">
11 <link rel="import" href="/bower_components/paper-badge/paper-badge.html"> 11 <link rel="import" href="/bower_components/paper-badge/paper-badge.html">
12 <link rel="import" href="/bower_components/paper-button/paper-button.html"> 12 <link rel="import" href="/bower_components/paper-button/paper-button.html">
13 <link rel="import" href="/bower_components/paper-dialog/paper-dialog.html"> 13 <link rel="import" href="/bower_components/paper-dialog/paper-dialog.html">
14 <link rel="import" href="/bower_components/paper-drawer-panel/paper-drawer-panel .html"> 14 <link rel="import" href="/bower_components/paper-drawer-panel/paper-drawer-panel .html">
15 <link rel="import" href="/bower_components/paper-header-panel/paper-header-panel .html"> 15 <link rel="import" href="/bower_components/paper-header-panel/paper-header-panel .html">
16 <link rel="import" href="/bower_components/paper-icon-button/paper-icon-button.h tml"> 16 <link rel="import" href="/bower_components/paper-icon-button/paper-icon-button.h tml">
17 <link rel="import" href="/bower_components/paper-input/paper-input.html"> 17 <link rel="import" href="/bower_components/paper-input/paper-input.html">
18 <link rel="import" href="/bower_components/paper-spinner/paper-spinner.html"> 18 <link rel="import" href="/bower_components/paper-spinner/paper-spinner.html">
19 <link rel="import" href="/bower_components/paper-toolbar/paper-toolbar.html"> 19 <link rel="import" href="/bower_components/paper-toolbar/paper-toolbar.html">
20 <link rel="import" href="/elements/som-alert-item.html"> 20 <link rel="import" href="/elements/som-alert-item.html">
21 <link rel="import" href="/elements/som-bug-queue.html"> 21 <link rel="import" href="/elements/som-bug-queue.html">
22 <link rel="import" href="/elements/som-drawer.html"> 22 <link rel="import" href="/elements/som-drawer.html">
23 <link rel="import" href="/elements/som-examine.html"> 23 <link rel="import" href="/elements/som-examine.html">
24 <link rel="import" href="/elements/pages/som-help.html">
25 <link rel="import" href="/elements/pages/som-rotation-calendar.html">
24 26
25 <dom-module id="som-app"> 27 <dom-module id="som-app">
26 <template> 28 <template>
27 <style> 29 <style>
28 paper-toolbar { 30 paper-toolbar {
29 --paper-toolbar-background: black; 31 --paper-toolbar-background: black;
30 } 32 }
31 paper-toolbar a { 33 paper-toolbar a {
32 color: #fff; 34 color: #fff;
33 } 35 }
34 paper-header-panel /deep/ #mainContainer { 36 paper-header-panel /deep/ #mainContainer {
35 @apply(--layout-vertical); 37 @apply(--layout-vertical);
36 } 38 }
37 .last-updated, .user-name {
38 text-align: right;
39 padding-right: 1em;
40 }
41 paper-header-panel[main] { 39 paper-header-panel[main] {
42 --paper-header-panel-body: { 40 --paper-header-panel-body: {
43 background: #eee; 41 background: #eee;
44 } 42 }
45 } 43 }
46 .title { 44 #alertsList {
47 font-size: big; 45 padding: 0;
48 } 46 }
49 .som-title { 47 #noAlerts {
50 font-weight: bold; 48 margin: 1em;
49 text-align: center;
50 font-size: 2.5em;
51 line-height: 150%;
52 }
53 #refresh {
54 width: 25px;
55 height: 25px;
56 padding: 0;
57 }
58 .last-updated, .user-name {
59 text-align: right;
60 padding-right: 1em;
51 } 61 }
52 .list-item { 62 .list-item {
53 @apply(--layout-flex); 63 @apply(--layout-flex);
54 @apply(--layout-vertical); 64 @apply(--layout-vertical);
55 margin: 1em; 65 margin: 1em;
56 border-bottom: 1px solid #ddd; 66 border-bottom: 1px solid #ddd;
57 } 67 }
58 #refresh {
59 width: 25px;
60 height: 25px;
61 padding: 0;
62 }
63 #alertsList {
64 background: white;
65 border-left: 1px solid #ddd;
66 }
67 #noAlerts {
68 margin: 1em;
69 text-align: center;
70 font-size: 2.5em;
71 line-height: 150%;
72 }
73 .notification { 68 .notification {
74 box-sizing: border-box; 69 box-sizing: border-box;
75 width: 100%; 70 width: 100%;
76 padding: 8px 10px; 71 padding: 8px 10px;
77 margin: 10px auto 20px; 72 margin: 10px auto 20px;
78 border: 1px solid #666; 73 border: 1px solid #666;
79 border-radius: 5px; 74 border-radius: 5px;
80 } 75 }
81 76 .page-body {
77 background: white;
78 border-left: 1px solid #ddd;
79 padding: 1em;
80 }
81 .som-title {
82 font-weight: bold;
83 }
84 .title {
85 font-size: big;
86 }
82 @media (max-width: 1024px) { 87 @media (max-width: 1024px) {
83 .last-updated, .user-name { 88 .last-updated, .user-name {
84 padding-right: 0.5em; 89 padding-right: 0.5em;
85 font-size: 0.9em; 90 font-size: 0.9em;
86 } 91 }
87 } 92 }
88 </style> 93 </style>
89 <iron-location id="url" path="{{_path}}"></iron-location> 94 <iron-location id="url" path="{{_path}}"></iron-location>
90 <iron-ajax 95 <iron-ajax
91 auto 96 auto
92 id="annotations" 97 id="annotations"
93 url="/api/v1/annotations" 98 url="/api/v1/annotations"
94 handle-as="json" 99 handle-as="json"
95 last-error="{{_annotationsJsonError}}" 100 last-error="{{_annotationsJsonError}}"
96 last-response="{{annotationsJson}}" 101 last-response="{{annotationsJson}}"
97 debounce-duration="300"></iron-ajax> 102 debounce-duration="300"></iron-ajax>
98 <iron-ajax 103 <iron-ajax
99 id="annotationPost" 104 id="annotationPost"
100 method="post" 105 method="post"
101 handle-as="json" 106 handle-as="json"
102 last-error="{{_annotationPostError}}" 107 last-error="{{_annotationPostError}}"
103 on-response="_postResponse"></iron-ajax> 108 on-response="_postResponse"></iron-ajax>
104 <paper-drawer-panel responsive-width="1024px"> 109 <paper-drawer-panel responsive-width="1024px">
105 <paper-header-panel drawer> 110 <paper-header-panel drawer>
106 <paper-toolbar> 111 <paper-toolbar>
107 <span class="som-title">Sheriff-o-Matic</span> 112 <span class="som-title">Sheriff-o-Matic</span>
108 </paper-toolbar> 113 </paper-toolbar>
109 <som-drawer id="drawer" tree="[[_tree]]" path="{{_path}}" show-infra-fai lures="{{showInfraFailures}}" trees="{{_trees}}"></som-drawer> 114 <som-drawer id="drawer" tree="[[_tree]]" path="{{_path}}" static-pages=" [[_staticPages]]" show-infra-failures="{{showInfraFailures}}" trees="{{_trees}}" ></som-drawer>
110 </paper-header-panel> 115 </paper-header-panel>
111 <paper-header-panel main id="mainHeaderPanel" class="flex layout vertical" > 116 <paper-header-panel main id="mainHeaderPanel" class="flex layout vertical" >
112 <paper-toolbar> 117 <paper-toolbar>
113 <paper-icon-button icon="menu" paper-drawer-toggle></paper-icon-button > 118 <paper-icon-button icon="menu" paper-drawer-toggle></paper-icon-button >
114 <div class="layout horizontal flex"> 119 <div class="layout horizontal flex">
115 <div class="flex title">[[_tree]]</div> 120 <div class="flex title">[[_tree]]</div>
116 <div hidden$="[[_lastUpdate]]" class="flex last-updated"> 121 <div hidden$="[[_lastUpdate]]" class="flex last-updated">
117 Last updated: [[_lastUpdated]] 122 Last updated: [[_lastUpdated]]
118 </div> 123 </div>
119 <div class="user-name"> 124 <div class="user-name">
120 [[user]] (<a href$="[[logoutUrl]]">Log Out </a>) 125 [[user]] (<a href$="[[logoutUrl]]">Log Out </a>)
121 </div> 126 </div>
122 <paper-icon-button on-tap="_refresh" id="refresh" icon="refresh"></p aper-icon-button> 127 <paper-icon-button on-tap="_refresh" id="refresh" icon="refresh"></p aper-icon-button>
123 </div> 128 </div>
124 <paper-spinner active="[[_fetchingAlerts]]"></paper-spinner> 129 <paper-spinner active="[[_fetchingAlerts]]"></paper-spinner>
125 </paper-toolbar> 130 </paper-toolbar>
126 <div class="flex layout vertical"> 131 <iron-pages attr-for-selected='id' selected="[[_selectedPage]]" class="f lex layout vertical">
127 <iron-pages attr-for-selected='id' selected="[[_selectedPage]]" class= "flex layout vertical"> 132 <div id="alertsList" class="page-body">
128 <div id="alertsList"> 133 <div class="list-item" hidden$="[[_hideWebkitNotice]]">
129 <div class="list-item" hidden$="[[_hideWebkitNotice]]"> 134 <div class="notification">
130 <div class="notification"> 135 Chromium sheriffs: you now need to handle WebKit bot failures to o. <a href="http://www.chromium.org/blink/sheriffing" target="_blank">More infor mation</a>.
131 Chromium sheriffs: you now need to handle WebKit bot failures too. <a href="http://www.chromium.org/blink/sheriffing" target="_blank">More inf ormation</a>.
132 </div>
133 </div>
134 <div id="noAlerts" hidden$="[[_haveAlerts]]">
135 No alerts!
136 <br>
137 <img src="/images/jparent-jump.gif" alt="Julie Jumping" title="J ulie Jumping">
138 </div>
139 <div id="alertsListInner">
140 <template is="dom-repeat" items="[[_alerts]]" as="alert">
141 <div class="list-item" tabindex$="[[tabIndex]]">
142 <som-alert-item
143 alert="{{alert}}"
144 tree="[[_tree]]"
145 selected="[[selected]]"
146 annotation="[[_computeAnnotation(annotations, alert)]]"
147 on-annotation-change="_handleAnnotation"
148 on-link-bug="_handleLinkBug"
149 on-snooze="_handleSnooze"
150 ></som-alert-item>
151 </div>
152 </template>
153 </div> 136 </div>
154 </div> 137 </div>
155 <div id="examineAlert" class="flex layout vertical"> 138 <div id="noAlerts" hidden$="[[_haveAlerts]]">
156 <som-examine alert="[[_examinedAlert]]" class="flex layout vertica l"></som-examine> 139 No alerts!
140 <br>
141 <img src="/images/jparent-jump.gif" alt="Julie Jumping" title="Jul ie Jumping">
157 </div> 142 </div>
158 </iron-pages> 143 <div id="alertsListInner">
159 </div> 144 <template is="dom-repeat" items="[[_alerts]]" as="alert">
145 <div class="list-item" tabindex$="[[tabIndex]]">
146 <som-alert-item
147 alert="{{alert}}"
148 tree="[[_tree]]"
149 selected="[[selected]]"
150 annotation="[[_computeAnnotation(annotations, alert)]]"
151 on-annotation-change="_handleAnnotation"
152 on-link-bug="_handleLinkBug"
153 on-snooze="_handleSnooze"
154 ></som-alert-item>
155 </div>
156 </template>
157 </div>
158 </div>
159 <div id="examineAlert" class="flex layout vertical page-body">
160 <som-examine alert="[[_examinedAlert]]" class="flex layout vertical" ></som-examine>
161 </div>
162 <som-help id="helpSOM" class="page-body"></som-help>
163 <som-rotation-calendar id="rotationCalendar" class="flex layout vertic al page-body"></som-rotation-calendar>
164 </iron-pages>
160 </paper-header-panel> 165 </paper-header-panel>
161 </paper-drawer-panel> 166 </paper-drawer-panel>
162 <paper-dialog id="bugDialog" with-backdrop entry-animation="scale-up-animati on" exit-animation="fade-out-animation" on-iron-overlay-closed="_resetBugDialog" > 167 <paper-dialog id="bugDialog" with-backdrop entry-animation="scale-up-animati on" exit-animation="fade-out-animation" on-iron-overlay-closed="_resetBugDialog" >
163 <h2>Enter bug number</h2> 168 <h2>Enter bug number</h2>
164 <paper-input autofocus id="bug" label="Bug # or URL"></paper-input> 169 <paper-input autofocus id="bug" label="Bug # or URL"></paper-input>
165 <a hidden$="[[_filedBug]]" id="fileBugLink" target="_blank" on-tap="_fileB ugClicked"> 170 <a hidden$="[[_filedBug]]" id="fileBugLink" target="_blank" on-tap="_fileB ugClicked">
166 File bug 171 File bug
167 </a> 172 </a>
168 <div hidden$="[[!_filedBug]]" id="bugReminder"> 173 <div hidden$="[[!_filedBug]]" id="bugReminder">
169 Remember to enter the new bug number above! 174 Remember to enter the new bug number above!
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 showInfraFailures: { 286 showInfraFailures: {
282 type: Boolean, 287 type: Boolean,
283 value: true, 288 value: true,
284 }, 289 },
285 _snoozeModel: Object, 290 _snoozeModel: Object,
286 _trees: Object, 291 _trees: Object,
287 _tree: { 292 _tree: {
288 type: String, 293 type: String,
289 computed: '_computeTree(_path)', 294 computed: '_computeTree(_path)',
290 }, 295 },
296 _staticPages: {
297 type: Object,
298 value: {
299 "help-som" : {
300 pageId : "helpSOM",
301 displayText : "How to Use",
302 },
303 "calendar" : {
304 pageId : "rotationCalendar",
305 displayText : "Rotation Calendar",
306 },
307 },
308 },
291 _examinedAlert: { 309 _examinedAlert: {
292 type: Object, 310 type: Object,
293 computed: '_computeExaminedAlert(_alerts, _examinedAlertKey)', 311 computed: '_computeExaminedAlert(_alerts, _examinedAlertKey)',
294 }, 312 },
295 _examinedAlertKey: { 313 _examinedAlertKey: {
296 type: String, 314 type: String,
297 computed: '_computeExaminedAlertKey(_path)', 315 computed: '_computeExaminedAlertKey(_path)',
298 }, 316 },
299 user: String, 317 user: String,
300 }, 318 },
(...skipping 24 matching lines...) Expand all
325 let pathParts = path.split('/'); 343 let pathParts = path.split('/');
326 if (pathParts.length < 2 || pathParts[1] == "") { 344 if (pathParts.length < 2 || pathParts[1] == "") {
327 console.error('error: invalid pathParts', pathParts); 345 console.error('error: invalid pathParts', pathParts);
328 return ""; 346 return "";
329 } 347 }
330 348
331 return pathParts[1]; 349 return pathParts[1];
332 }, 350 },
333 351
334 _computeAlertsGroups: function(tree, trees) { 352 _computeAlertsGroups: function(tree, trees) {
335 if (tree === '') { 353 if (tree === '' || tree in this._staticPages) {
336 return []; 354 return [];
337 } 355 }
338 356
339 if (trees && trees[tree] && trees[tree].alert_streams) { 357 if (trees && trees[tree] && trees[tree].alert_streams) {
340 return trees[tree].alert_streams 358 return trees[tree].alert_streams
341 } 359 }
342 360
343 return [tree]; 361 return [tree];
344 }, 362 },
345 363
346 _computeRefreshEnabled: function(selectedPage) { 364 _computeRefreshEnabled: function(selectedPage) {
347 return selectedPage == "alertsList"; 365 return selectedPage == "alertsList";
348 }, 366 },
349 367
350 _computeSelectedPage: function(path) { 368 _computeSelectedPage: function(path) {
351 let pathParts = path.split('/'); 369 let pathParts = path.split('/');
352 if (pathParts.length < 2) { 370 if (pathParts.length < 2) {
353 console.error('error: pathParts < 2', pathParts); 371 console.error('error: pathParts < 2', pathParts);
354 } 372 }
355 if (pathParts.length < 3) { 373 if (pathParts.length == 2) {
356 return 'alertsList'; 374 if (pathParts[1] in this._staticPages) {
375 return this._staticPages[pathParts[1]].pageId;
376 } else {
377 // On the page for a tree
378 return 'alertsList';
379 }
357 } 380 }
358 if (pathParts[2] == 'examine') { 381 if (pathParts[2] == 'examine') {
359 return 'examineAlert'; 382 return 'examineAlert';
360 } 383 }
361 }, 384 },
362 385
363 _computeExaminedAlertKey: function(path) { 386 _computeExaminedAlertKey: function(path) {
364 let pathParts = path.split('/'); 387 let pathParts = path.split('/');
365 if (pathParts.length < 2) { 388 if (pathParts.length < 2) {
366 console.error('error: pathParts < 2', pathParts); 389 console.error('error: pathParts < 2', pathParts);
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 } 597 }
575 ).completes.then(() => { 598 ).completes.then(() => {
576 this.$.snoozeTime.value = ''; 599 this.$.snoozeTime.value = '';
577 }); 600 });
578 }, 601 },
579 602
580 }); 603 });
581 })(); 604 })();
582 </script> 605 </script>
583 </dom-module> 606 </dom-module>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698