blob: 49a14167a6c7699df7bbc68f63897f7f61b9a22e [file] [log] [blame]
/**
* @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-font-styles">
/* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
</style>
<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);
}
.attempts.row {
flex-wrap: wrap;
}
.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: 24px;
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="attempts row">
<div class="title">Attempt</div>
<template is="dom-repeat" items="[[computeAttempts(run)]]">
<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
event-target="[[_target]]"
action="[[item]]"
></gr-checks-action>
</div>
</template>
</div>
`;