Click on comment chip will select same category in comments tab
Change-Id: Icf1ecd4cbc068519409bc6291f7bff988517c781
diff --git a/polygerrit-ui/app/elements/change/gr-change-summary/gr-change-summary.ts b/polygerrit-ui/app/elements/change/gr-change-summary/gr-change-summary.ts
index 021d7c4..72ed6e6 100644
--- a/polygerrit-ui/app/elements/change/gr-change-summary/gr-change-summary.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-summary/gr-change-summary.ts
@@ -55,6 +55,7 @@
import {notUndefined} from '../../../types/types';
import {uniqueDefinedAvatar} from '../../../utils/account-util';
import {PrimaryTab} from '../../../constants/constants';
+import {CommentTabState} from '../../../types/events';
export enum SummaryChipStyles {
INFO = 'info',
@@ -71,6 +72,9 @@
@property()
styleType = SummaryChipStyles.UNDEFINED;
+ @property()
+ category?: CommentTabState;
+
static get styles() {
return [
sharedStyles,
@@ -132,7 +136,9 @@
private handleClick(e: MouseEvent) {
e.stopPropagation();
e.preventDefault();
- fireShowPrimaryTab(this, PrimaryTab.COMMENT_THREADS);
+ fireShowPrimaryTab(this, PrimaryTab.COMMENT_THREADS, true, {
+ commentTab: this.category,
+ });
}
}
@@ -413,12 +419,14 @@
No Comments</gr-summary-chip
><gr-summary-chip
styleType=${SummaryChipStyles.WARNING}
+ category=${CommentTabState.DRAFTS}
icon="edit"
?hidden=${!draftCount}
>
${pluralize(draftCount, 'draft')}</gr-summary-chip
><gr-summary-chip
styleType=${SummaryChipStyles.WARNING}
+ category=${CommentTabState.UNRESOLVED}
icon="message"
?hidden=${!countUnresolvedComments}
>
@@ -433,6 +441,7 @@
${countUnresolvedComments} unresolved</gr-summary-chip
><gr-summary-chip
styleType=${SummaryChipStyles.CHECK}
+ category=${CommentTabState.SHOW_ALL}
icon="markChatRead"
?hidden=${!countResolvedComments}
>${countResolvedComments} resolved</gr-summary-chip
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index 61006f9..7b80977 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -152,11 +152,13 @@
ShowAlertEventDetail,
SwitchTabEvent,
ThreadListModifiedEvent,
+ TabState,
} from '../../../types/events';
import {GrButton} from '../../shared/gr-button/gr-button';
import {GrMessagesList} from '../gr-messages-list/gr-messages-list';
import {GrThreadList} from '../gr-thread-list/gr-thread-list';
import {
+ EventType,
fireAlert,
fireEvent,
firePageError,
@@ -555,6 +557,9 @@
@property({type: Boolean})
_isNewChangeSummaryUiEnabled = false;
+ @property({type: String})
+ _tabState?: TabState;
+
restApiService = appContext.restApiService;
checksService = appContext.checksService;
@@ -694,7 +699,7 @@
this.listen(window, 'scroll', '_handleScroll');
this.listen(document, 'visibilitychange', '_handleVisibilityChange');
- this.addEventListener('show-primary-tab', e =>
+ this.addEventListener(EventType.SHOW_PRIMARY_TAB, e =>
this._setActivePrimaryTab(e)
);
this.addEventListener('show-secondary-tab', e =>
@@ -853,6 +858,7 @@
this._selectedTabPluginHeader = '';
}
}
+ this._tabState = e.detail.tabState;
}
/**
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_html.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_html.ts
index 81aff90..7811ffb 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_html.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_html.ts
@@ -679,6 +679,7 @@
change="[[_change]]"
change-num="[[_changeNum]]"
logged-in="[[_loggedIn]]"
+ comment-tab-state="[[_tabState.commentTab]]"
only-show-robot-comments-with-human-reply=""
unresolved-only
></gr-thread-list>
diff --git a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts
index 22b2e43..79be65c 100644
--- a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts
+++ b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts
@@ -43,6 +43,8 @@
import {fireThreadListModifiedEvent} from '../../../utils/event-util';
import {KnownExperimentId} from '../../../services/flags/flags';
import {appContext} from '../../../services/app-context';
+import {assertNever} from '../../../utils/common-util';
+import {CommentTabState} from '../../../types/events';
interface CommentThreadWithInfo {
thread: CommentThread;
@@ -103,6 +105,9 @@
@property({type: Boolean})
_isNewChangeSummaryUiEnabled = false;
+ @property({type: Object, observer: '_commentTabStateChange'})
+ commentTabState?: CommentTabState;
+
flagsService = appContext.flagsService;
/** @override */
@@ -498,6 +503,26 @@
filterRobotThreadsWithoutHumanReply(threads?: CommentThread[]) {
return threads?.filter(t => !isRobotThread(t) || hasHumanReply(t));
}
+
+ _commentTabStateChange(
+ newValue?: CommentTabState,
+ oldValue?: CommentTabState
+ ) {
+ if (!newValue || newValue === oldValue) return;
+ switch (newValue) {
+ case CommentTabState.UNRESOLVED:
+ this._handleOnlyUnresolved();
+ break;
+ case CommentTabState.DRAFTS:
+ this._handleOnlyDrafts();
+ break;
+ case CommentTabState.SHOW_ALL:
+ this._handleAllComments();
+ break;
+ default:
+ assertNever(newValue, 'Unsupported preferred state');
+ }
+ }
}
declare global {
diff --git a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_html.ts b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_html.ts
index 8a52555..a0a82ab 100644
--- a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_html.ts
+++ b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_html.ts
@@ -102,7 +102,7 @@
name="filterComments"
type="radio"
on-click="_handleOnlyUnresolved"
- checked$="[[unresolvedOnly]]"
+ checked="[[unresolvedOnly]]"
/>
<label for="unresolvedRadio">
Unresolved ([[_countUnresolved(threads)]])
@@ -113,7 +113,7 @@
name="filterComments"
type="radio"
on-click="_handleOnlyDrafts"
- checked$="[[_draftsOnly]]"
+ checked="[[_draftsOnly]]"
/>
<label for="draftsRadio">
Drafts ([[_countDrafts(threads)]])
@@ -124,7 +124,7 @@
name="filterComments"
type="radio"
on-click="_handleAllComments"
- checked$="[[_showAllComments(_draftsOnly, unresolvedOnly)]]"
+ checked="[[_showAllComments(_draftsOnly, unresolvedOnly)]]"
/>
<label for="all">
All ([[_countAllThreads(threads)]])
diff --git a/polygerrit-ui/app/types/events.ts b/polygerrit-ui/app/types/events.ts
index 163c760..6b05fad 100644
--- a/polygerrit-ui/app/types/events.ts
+++ b/polygerrit-ui/app/types/events.ts
@@ -146,6 +146,18 @@
value?: number;
// scroll into the tab afterwards, from custom event
scrollIntoView?: boolean;
+ // define state of tab after opening
+ tabState?: TabState;
+}
+
+export interface TabState {
+ commentTab?: CommentTabState;
+}
+
+export enum CommentTabState {
+ UNRESOLVED = 'unresolved',
+ DRAFTS = 'drafts',
+ SHOW_ALL = 'show all',
}
export type SwitchTabEvent = CustomEvent<SwitchTabEventDetail>;
diff --git a/polygerrit-ui/app/utils/event-util.ts b/polygerrit-ui/app/utils/event-util.ts
index ee3c833..cf590e0 100644
--- a/polygerrit-ui/app/utils/event-util.ts
+++ b/polygerrit-ui/app/utils/event-util.ts
@@ -17,7 +17,7 @@
import {UrlEncodedCommentId} from '../types/common';
import {FetchRequest} from '../types/types';
-import {DialogChangeEventDetail} from '../types/events';
+import {DialogChangeEventDetail, TabState} from '../types/events';
export enum EventType {
SHOW_ALERT = 'show-alert',
@@ -27,6 +27,7 @@
TITLE_CHANGE = 'title-change',
THREAD_LIST_MODIFIED = 'thread-list-modified',
DIALOG_CHANGE = 'dialog-change',
+ SHOW_PRIMARY_TAB = 'show-primary-tab',
}
export function fireEvent(target: EventTarget, type: string) {
@@ -117,10 +118,15 @@
);
}
-export function fireShowPrimaryTab(target: EventTarget, tab: string) {
+export function fireShowPrimaryTab(
+ target: EventTarget,
+ tab: string,
+ scrollIntoView?: boolean,
+ tabState?: TabState
+) {
target.dispatchEvent(
- new CustomEvent('show-primary-tab', {
- detail: {tab},
+ new CustomEvent(EventType.SHOW_PRIMARY_TAB, {
+ detail: {tab, scrollIntoView, tabState},
composed: true,
bubbles: true,
})