From 8553bf460e8e3a234f6399c7252d2c0342a0c526 Mon Sep 17 00:00:00 2001 From: Wyatt Allen Date: Mon, 18 Sep 2017 17:57:20 -0700 Subject: [PATCH] Set a maximum length on topic display This change introduces the gr-limited-text element, which, given a string of text and a numeric limit, will display the text up to that limit. If the length of the text exceeds that limit, an ellipsis is added to indicate the truncation and a tooltip is enabled to display the full string. Displaying the topic string is limited to a reasonable number of characters in this way in both the change metadata and the change list. Bug: Issue 7197 Change-Id: If826fc2f2657e8ed12275e65f25f2d40c3180838 --- .../gr-change-list-item.html | 6 +- .../gr-change-metadata.html | 1 + .../gr-limited-text/gr-limited-text.html | 23 ++++++ .../shared/gr-limited-text/gr-limited-text.js | 69 ++++++++++++++++ .../gr-limited-text/gr-limited-text_test.html | 81 +++++++++++++++++++ .../shared/gr-linked-chip/gr-linked-chip.html | 11 ++- .../shared/gr-linked-chip/gr-linked-chip.js | 3 + polygerrit-ui/app/test/index.html | 1 + 8 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.html create mode 100644 polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.js create mode 100644 polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text_test.html diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html index 4ff10cb956..e1b88e8276 100644 --- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html +++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html @@ -23,6 +23,7 @@ limitations under the License. + @@ -146,7 +147,10 @@ limitations under the License. [[change.branch]] diff --git a/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.html b/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.html new file mode 100644 index 0000000000..8f88b6adba --- /dev/null +++ b/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.html @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.js b/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.js new file mode 100644 index 0000000000..8d1763c1f3 --- /dev/null +++ b/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text.js @@ -0,0 +1,69 @@ +// Copyright (C) 2017 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. +(function() { + 'use strict'; + + /* + * The gr-limited-text element is for displaying text with a maximum length + * (in number of characters) to display. If the length of the text exceeds the + * configured limit, then an ellipsis indicates that the text was truncated + * and a tooltip containing the full text is enabled. + */ + + Polymer({ + is: 'gr-limited-text', + + properties: { + /** The un-truncated text to display. */ + text: String, + + /** The maximum length for the text to display before truncating. */ + limit: Number, + + /** Boolean property used by Gerrit.TooltipBehavior. */ + hasTooltip: { + type: Boolean, + value: false, + }, + }, + + observers: [ + '_updateTitle(text, limit)', + ], + + behaviors: [ + Gerrit.TooltipBehavior, + ], + + /** + * The text or limit have changed. Recompute whether a tooltip needs to be + * enabled. + */ + _updateTitle(text, limit) { + this.hasTooltip = text.length > limit; + if (this.hasTooltip) { + this.setAttribute('title', text); + } else { + this.removeAttribute('title'); + } + }, + + _computeDisplayText(text, limit) { + if (text.length > limit) { + return text.substr(0, limit - 1) + '…'; + } + return text; + }, + }); +})(); diff --git a/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text_test.html b/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text_test.html new file mode 100644 index 0000000000..362f8e3a86 --- /dev/null +++ b/polygerrit-ui/app/elements/shared/gr-limited-text/gr-limited-text_test.html @@ -0,0 +1,81 @@ + + + + +gr-limited-text + + + + + + + + + + + + + + diff --git a/polygerrit-ui/app/elements/shared/gr-linked-chip/gr-linked-chip.html b/polygerrit-ui/app/elements/shared/gr-linked-chip/gr-linked-chip.html index ef5dab8e0d..60f664f664 100644 --- a/polygerrit-ui/app/elements/shared/gr-linked-chip/gr-linked-chip.html +++ b/polygerrit-ui/app/elements/shared/gr-linked-chip/gr-linked-chip.html @@ -15,7 +15,9 @@ limitations under the License. --> + + @@ -61,7 +63,14 @@ limitations under the License. }
- [[text]] + +