diff options
Diffstat (limited to 'chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-timestamp.html')
-rw-r--r-- | chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-timestamp.html | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-timestamp.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-timestamp.html new file mode 100644 index 00000000000..1061e94fad9 --- /dev/null +++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/chopsui/chops-timestamp.html @@ -0,0 +1,87 @@ +<link rel="import" href="../polymer/polymer.html"> +<script src="../moment/min/moment.min.js"></script> +<script src="../moment-timezone/builds/moment-timezone-with-data.min.js"></script> + +<dom-module id="chops-timestamp"> + <template> + <style> + </style> + <template is="dom-if" if="[[!short]]"> + [[_formattedDate]] ([[_computeRelativeTime(_date)]]) + </template> + <template is="dom-if" if="[[short]]" title="[[_formattedDate]]"> + [[_computeRelativeTime(_date)]] + </template> + </template> + <script> + 'use strict'; + + /** + * `<chops-timestamp>` displays a formatted time string in PDT and the relative time. + * + * This element shows a time in a human readable form. + * + * @customElement + * @polymer + * @demo /demo/chops-timestamp_demo.html + */ + class ChopsTimestamp extends Polymer.Element { + static get is() { return 'chops-timestamp'; } + + static get properties() { + return { + /** The data for the time which can be in any format readable by + * Date.parse. + */ + timestamp: String, + /** When true, a shorter version of the date will be displayed. */ + short: { + type: Boolean, + value: false, + }, + /** The format of the date. */ + dateFormat: { + type: String, + value: "ddd, D MMM YYYY, h:mm a z", + }, + /** The moment object, which is stored in UTC, to be processed. */ + _date: { + type: Object, + value: () => (moment()), + computed: '_computeDate(timestamp)', + }, + /** The formatted date. */ + _formattedDate: { + type: String, + computed: '_computeDisplayedTime(_date, dateFormat)', + }, + } + } + + _computeDate(timestamp) { + // Check if timestamp is unix time first. + let date = Number.parseInt(timestamp); + if (Number.isNaN(date)) { + // Date.parse returns milliseconds since epoch but we want seconds. + date = Date.parse(timestamp) / 1000; + if (Number.isNaN(date)) { + // Default to now if all else fails. + date = (new Date()).getTime() / 1000; + } + } + + return moment.unix(date).tz('America/Los_Angeles'); + } + + _computeDisplayedTime(date, format) { + return date.format(format); + } + + _computeRelativeTime(date) { + return date.fromNow(); + } + + } + customElements.define(ChopsTimestamp.is, ChopsTimestamp); + </script> +<dom-module> |