| /** |
| * @license |
| * Copyright (C) 2021 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| import {html} from '@polymer/polymer/lib/utils/html-tag'; |
| |
| export const htmlTemplate = html` |
| <style include="gr-checks-styles"> |
| /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */ |
| </style> |
| <style include="gr-hovercard-shared-style"> |
| #container { |
| min-width: 356px; |
| max-width: 356px; |
| padding: var(--spacing-xl) 0 var(--spacing-m) 0; |
| } |
| .row { |
| display: flex; |
| margin-top: var(--spacing-s); |
| } |
| .chipRow { |
| display: flex; |
| margin-top: var(--spacing-s); |
| } |
| .chip { |
| background: var(--gray-background); |
| color: var(--gray-foreground); |
| border-radius: 20px; |
| padding: var(--spacing-xs) var(--spacing-m) var(--spacing-xs) |
| var(--spacing-s); |
| } |
| .title { |
| color: var(--deemphasized-text-color); |
| margin-right: var(--spacing-m); |
| } |
| div.section { |
| margin: 0 var(--spacing-xl) var(--spacing-m) var(--spacing-xl); |
| display: flex; |
| } |
| div.sectionIcon { |
| flex: 0 0 30px; |
| } |
| div.chip iron-icon { |
| width: 16px; |
| height: 16px; |
| /* Positioning of a 16px icon in the middle of a 20px line. */ |
| position: relative; |
| top: 2px; |
| } |
| div.sectionIcon iron-icon { |
| position: relative; |
| top: 2px; |
| width: 20px; |
| height: 20px; |
| } |
| div.sectionIcon iron-icon.small { |
| position: relative; |
| top: 6px; |
| width: 16px; |
| height: 16px; |
| } |
| div.sectionContent iron-icon.link { |
| color: var(--link-color); |
| } |
| div.sectionContent .attemptIcon iron-icon, |
| div.sectionContent iron-icon.small { |
| width: 16px; |
| height: 16px; |
| margin-right: var(--spacing-s); |
| /* Positioning of a 16px icon in the middle of a 20px line. */ |
| position: relative; |
| top: 2px; |
| } |
| div.sectionContent .attemptIcon iron-icon { |
| margin-right: 0; |
| } |
| .attemptIcon, |
| .attemptNumber { |
| margin-right: var(--spacing-s); |
| color: var(--deemphasized-text-color); |
| text-align: center; |
| width: 20px; |
| font-size: var(--font-size-small); |
| } |
| div.action { |
| border-top: 1px solid var(--border-color); |
| margin-top: var(--spacing-m); |
| padding: var(--spacing-m) var(--spacing-xl) 0; |
| } |
| </style> |
| <div id="container" role="tooltip" tabindex="-1"> |
| <div class="section"> |
| <div hidden$="[[hideChip(run)]]" class="chipRow"> |
| <div class="chip"> |
| <iron-icon icon="gr-icons:[[computeChipIcon(run)]]"></iron-icon> |
| <span>[[run.status]]</span> |
| </div> |
| </div> |
| </div> |
| <div class="section"> |
| <div class="sectionIcon" hidden$="[[hideHeaderSectionIcon(run)]]"> |
| <iron-icon |
| class$="[[computeIcon(run)]]" |
| icon="gr-icons:[[computeIcon(run)]]" |
| ></iron-icon> |
| </div> |
| <div class="sectionContent"> |
| <h3 class="name heading-3"> |
| <span>[[run.checkName]]</span> |
| </h3> |
| </div> |
| </div> |
| <div class="section" hidden$="[[hideStatusSection(run)]]"> |
| <div class="sectionIcon"> |
| <iron-icon class="small" icon="gr-icons:info-outline"></iron-icon> |
| </div> |
| <div class="sectionContent"> |
| <div hidden$="[[!run.statusLink]]" class="row"> |
| <div class="title">Status</div> |
| <div> |
| <a href="[[_convertUndefined(run.statusLink)]]" target="_blank" |
| ><iron-icon |
| aria-label="external link to check status" |
| class="small link" |
| icon="gr-icons:launch" |
| ></iron-icon |
| >[[computeHostName(run.statusLink)]] |
| </a> |
| </div> |
| </div> |
| <div hidden$="[[!run.statusDescription]]" class="row"> |
| <div class="title">Message</div> |
| <div>[[run.statusDescription]]</div> |
| </div> |
| </div> |
| </div> |
| <div class="section" hidden$="[[hideAttempts(run)]]"> |
| <div class="sectionIcon"> |
| <iron-icon class="small" icon="gr-icons:arrow-forward"></iron-icon> |
| </div> |
| <div class="sectionContent"> |
| <div hidden$="[[hideAttempts(run)]]" class="row"> |
| <div class="title">Attempt</div> |
| <template is="dom-repeat" items="[[run.attemptDetails]]"> |
| <div> |
| <div class="attemptIcon"> |
| <iron-icon |
| class$="[[item.icon]]" |
| icon="gr-icons:[[item.icon]]" |
| ></iron-icon> |
| </div> |
| <div class="attemptNumber">[[computeAttempt(item.attempt)]]</div> |
| </div> |
| </template> |
| </div> |
| </div> |
| </div> |
| <div class="section" hidden$="[[hideTimestampSection(run)]]"> |
| <div class="sectionIcon"> |
| <iron-icon class="small" icon="gr-icons:schedule"></iron-icon> |
| </div> |
| <div class="sectionContent"> |
| <div hidden$="[[hideScheduled(run)]]" class="row"> |
| <div class="title">Scheduled</div> |
| <div>[[computeDuration(run.scheduledTimestamp)]]</div> |
| </div> |
| <div hidden$="[[!run.startedTimestamp]]" class="row"> |
| <div class="title">Started</div> |
| <div>[[computeDuration(run.startedTimestamp)]]</div> |
| </div> |
| <div hidden$="[[!run.finishedTimestamp]]" class="row"> |
| <div class="title">Ended</div> |
| <div>[[computeDuration(run.finishedTimestamp)]]</div> |
| </div> |
| <div hidden$="[[hideCompletion(run)]]" class="row"> |
| <div class="title">Completion</div> |
| <div>[[computeCompletionDuration(run)]]</div> |
| </div> |
| </div> |
| </div> |
| <div class="section" hidden$="[[hideDescriptionSection(run)]]"> |
| <div class="sectionIcon"> |
| <iron-icon class="small" icon="gr-icons:link"></iron-icon> |
| </div> |
| <div class="sectionContent"> |
| <div hidden$="[[!run.checkDescription]]" class="row"> |
| <div class="title">Description</div> |
| <div>[[run.checkDescription]]</div> |
| </div> |
| <div hidden$="[[!run.checkLink]]" class="row"> |
| <div class="title">Documentation</div> |
| <div> |
| <a href="[[_convertUndefined(run.checkLink)]]" target="_blank" |
| ><iron-icon |
| aria-label="external link to check documentation" |
| class="small link" |
| icon="gr-icons:launch" |
| ></iron-icon |
| >[[computeHostName(run.checkLink)]] |
| </a> |
| </div> |
| </div> |
| </div> |
| </div> |
| <template is="dom-repeat" items="[[computeActions(run)]]"> |
| <div class="action"> |
| <gr-checks-action action="[[item]]"></gr-checks-action> |
| </div> |
| </template> |
| </div> |
| `; |