summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-tree-status.html
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-tree-status.html')
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-tree-status.html143
1 files changed, 143 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-tree-status.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-tree-status.html
new file mode 100644
index 00000000000..03345719555
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-tree-status.html
@@ -0,0 +1,143 @@
+<link rel="import" href="../polymer/polymer.html">
+
+<dom-module id="chops-tree-status">
+ <template>
+ <style>
+ .closed {
+ background-color: hsl(0, 70%, 71%);
+ }
+ .maintenance {
+ background-color: hsl(300, 100%, 75%);
+ }
+ .open {
+ background-color: hsl(98, 67%, 62%);
+ }
+ .throttled {
+ background-color: hsl(59, 100%, 71%);
+ }
+ .tree-banner {
+ box-sizing: border-box;
+ color: #222;
+ margin: 0.5em auto;
+ padding: 0.5em 8px;
+ width: 100%;
+ }
+ </style>
+ <div class="error" hidden$="[[!_hasError]]">
+ Error fetching tree status from <a href$="[[statusUrl]]" target="_blank">[[statusUrl]]</a>
+ </div>
+ <div class$="treeStatus [[_status]]" hidden$="[[_hasError]]">
+ Tree status: [[_message]] by
+ <a href$="mailto:[[_email]]">[[_username]]</a>
+ on [[_time]]
+ (<a href$="[[statusUrl]]" target="_blank">More</a>)
+ </div>
+ </template>
+ <script>
+ 'use strict';
+ /**
+ * `<chops-tree-status>` is an element used for displaying the tree status
+ * available via the statusUrl.
+ *
+ * Provide a statusUrl like 'https://infra-status.appspot.com/' or
+ * 'http://chromium-status.appspot.com/'
+ *
+ * @customElement
+ * @polymer
+ * @demo /demo/chops-tree-status_demo.html
+ */
+ class ChopsTreeStatus extends Polymer.Element {
+ static get is() { return 'chops-tree-status'; }
+
+ static get properties() {
+ return {
+ /**
+ * The url where the tree's status can be found.
+ *
+ * @type String
+ */
+ statusUrl: {
+ type: String,
+ value: '',
+ },
+ /**
+ * The error data json. This property should only be passed in if
+ * there was an error getting the status.
+ *
+ * @type Object{error}
+ */
+ statusErrorJson: {
+ type: Object,
+ value: () => { return {}; },
+ },
+ /**
+ * The tree status data json. This can be taken directly from the
+ * 'current?format=json' page and passed directly to <chops-tree-status>
+ *
+ * @type Object{username, generatl_status, date, message}
+ */
+ statusJson: {
+ type: Object,
+ value: () => {
+ return {message: 'Unknown', date: 'Unknown', general_state: '', username: ''};
+ },
+ },
+ _hasError: {
+ type: Boolean,
+ computed: '_computeHasError(statusErrorJson)',
+ value: false,
+ },
+
+ // Processed JSON data
+ _email: {
+ type: String,
+ computed: '_computeEmail(statusJson)',
+ },
+ _message: {
+ type: String,
+ computed: '_computeMessage(statusJson)',
+ },
+ _status: {
+ type: String,
+ computed: '_computeStatus(statusJson)',
+ },
+ _time: {
+ type: String,
+ computed: '_computeTime(statusJson)',
+ },
+ _username: {
+ type: String,
+ computed: '_computeUsername(_email)',
+ },
+ };
+ }
+
+ _computeHasError(errorJson) {
+ return !!errorJson && Object.keys(errorJson).length > 0;
+ }
+
+ _computeEmail(json) {
+ return json ? json.username : '';
+ }
+
+ _computeStatus(json) {
+ return json ? json.general_state : ''
+ }
+
+ _computeMessage(json) {
+ return json ? json.message : 'Unknown';
+ }
+
+ _computeTime(json) {
+ return json ? `${json.date.split(".")[0]} GMT`: 'Unknown';
+ }
+
+ _computeUsername(email) {
+ let cutoff = email.indexOf('@');
+ return (cutoff < 0) ? 'Unknown' : email.substring(0, cutoff);
+ }
+
+ }
+ customElements.define(ChopsTreeStatus.is, ChopsTreeStatus);
+ </script>
+</dom-module>