Merge "Move chunks - UX improvements"
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_html.ts b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_html.ts
index 88f7351..16b2582 100644
--- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_html.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_html.ts
@@ -116,6 +116,22 @@
>
</div>
</template>
+ <template is="dom-if" if="[[_isNewChangeSummaryUiEnabled]]">
+ <template is="dom-if" if="[[change.submitted]]">
+ <section
+ class$="[[_computeDisplayState(_showAllSections, change, _SECTION.SUBMITTED)]]"
+ >
+ <span class="title">Submitted</span>
+ <span class="value">
+ <gr-date-formatter
+ has-tooltip=""
+ date-str="[[change.submitted]]"
+ show-yesterday=""
+ ></gr-date-formatter>
+ </span>
+ </section>
+ </template>
+ </template>
<section
class$="[[_computeDisplayState(_showAllSections, change, _SECTION.UPDATED)]]"
>
@@ -124,6 +140,7 @@
<gr-date-formatter
has-tooltip=""
date-str="[[change.updated]]"
+ show-yesterday=""
></gr-date-formatter>
</span>
</section>
diff --git a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.ts b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.ts
index c64dc2a..05e9a73 100644
--- a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.ts
+++ b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.ts
@@ -30,6 +30,7 @@
isWithinHalfYear,
formatDate,
utcOffsetString,
+ wasYesterday,
} from '../../../utils/date-util';
import {TimeFormat, DateFormat} from '../../../constants/constants';
import {assertNever} from '../../../utils/common-util';
@@ -104,6 +105,9 @@
@property({type: Boolean})
hasTooltip = false;
+ @property({type: Boolean})
+ showYesterday = false;
+
/**
* The title to be used as the native tooltip or by the tooltip behavior.
*/
@@ -222,7 +226,8 @@
timeFormat?: string,
dateFormat?: DateFormatPair,
relative?: boolean,
- showDateAndTime?: boolean
+ showDateAndTime?: boolean,
+ showYesterday?: boolean
) {
if (!dateStr || !timeFormat || !dateFormat) {
return '';
@@ -238,6 +243,8 @@
let format = dateFormat.full;
if (isWithinDay(now, date)) {
format = timeFormat;
+ } else if (showYesterday && wasYesterday(now, date)) {
+ return `Yesterday at ${formatDate(date, timeFormat)}`;
} else {
if (isWithinHalfYear(now, date)) {
format = dateFormat.short;
diff --git a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_html.ts b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_html.ts
index a5dd6d0..a08a77d 100644
--- a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_html.ts
+++ b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_html.ts
@@ -25,7 +25,7 @@
</style>
<span>
[[_computeDateStr(dateStr, _timeFormat, _dateFormat, _relative,
- showDateAndTime)]]
+ showDateAndTime, showYesterday)]]
</span>
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
`;
diff --git a/polygerrit-ui/app/utils/date-util.ts b/polygerrit-ui/app/utils/date-util.ts
index 1dd2d2f..5101d11 100644
--- a/polygerrit-ui/app/utils/date-util.ts
+++ b/polygerrit-ui/app/utils/date-util.ts
@@ -69,6 +69,16 @@
return diff < Duration.DAY && date.getDay() === now.getDay();
}
+export function wasYesterday(now: Date, date: Date) {
+ const diff = now.valueOf() - date.valueOf();
+ // return true if date is withing 24 hours and not on the same day
+ if (diff < Duration.DAY && date.getDay() !== now.getDay()) return true;
+
+ // move now to yesterday
+ now.setDate(now.getDate() - 1);
+ return isWithinDay(now, date);
+}
+
/**
* Returns true if date is from one to six months.
*/
diff --git a/polygerrit-ui/app/utils/date-util_test.js b/polygerrit-ui/app/utils/date-util_test.js
index a003c65..76d8516 100644
--- a/polygerrit-ui/app/utils/date-util_test.js
+++ b/polygerrit-ui/app/utils/date-util_test.js
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import '../test/common-test-setup-karma.js';
-import {isValidDate, parseDate, fromNow, isWithinDay, isWithinHalfYear, formatDate} from './date-util.js';
+import {isValidDate, parseDate, fromNow, isWithinDay, isWithinHalfYear, formatDate, wasYesterday} from './date-util.js';
suite('date-util tests', () => {
suite('parseDate', () => {
@@ -64,6 +64,21 @@
});
});
+ suite('wasYesterday', () => {
+ test('less 24 hours', () => {
+ assert.isFalse(wasYesterday(new Date('May 08 2020 12:00:00'),
+ new Date('May 08 2020 02:00:00')));
+ assert.isTrue(wasYesterday(new Date('May 08 2020 12:00:00'),
+ new Date('May 07 2020 12:00:00')));
+ });
+ test('more 24 hours', () => {
+ assert.isTrue(wasYesterday(new Date('May 08 2020 12:00:00'),
+ new Date('May 07 2020 2:00:00')));
+ assert.isFalse(wasYesterday(new Date('May 08 2020 12:00:00'),
+ new Date('May 06 2020 14:00:00')));
+ });
+ });
+
suite('isWithinHalfYear', () => {
test('basics works', () => {
assert.isTrue(isWithinHalfYear(new Date('May 08 2020 12:00:00'),