
On larger hosts we could not really convince teams to use the first name feature, because there will always be some first names that are ambiguous. Adding the initial letter of the second name for disambiguation was not visually appealing enough. Shortening the full name seems the more appropriate solution. "First names" had two primary goals: A dense reviewers column on the dashboard. And saving vertical space on the change page in the reviewers section. We will continue to use first names for the reviewer column only, but not anywhere else. We may re-evaluate how to render the reviewers column specifically, but this should not affect the entire application. On the change page we have tweaked the max-width of account chips such that two reviewer chips will fit next to each other, even when using full names. The overall width of the metadata column has grown a few pixels for that. Also included in this change: - Adding attention set related utility methods to account-util. - Tweaking the length of the account label in other places. - Making sure that the submit requirements component does not increase the width of the metadata column too much as currently very often seen on android-review. Screenshots: gerrit-review change page: Before: https://imgur.com/a/wuSWEU7 After: https://imgur.com/a/hl6uWOV gerrit-review dashboard: Before: https://imgur.com/a/Wb5DJ9o After: https://imgur.com/a/SudGTAU android-review change page: Before: https://imgur.com/a/h9Y5jqT After: https://imgur.com/a/m1awjpX Change-Id: I3189e76f6859bbf2bea370cdd976d5abb4b2d0be
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright (C) 2020 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.
|
|
*/
|
|
|
|
import {AccountInfo, ChangeInfo, ServerInfo} from '../types/common';
|
|
import {AccountTag} from '../constants/constants';
|
|
|
|
export function isServiceUser(account?: AccountInfo): boolean {
|
|
return !!account?.tags?.includes(AccountTag.SERVICE_USER);
|
|
}
|
|
|
|
export function removeServiceUsers(accounts?: AccountInfo[]): AccountInfo[] {
|
|
return accounts?.filter(a => !isServiceUser(a)) || [];
|
|
}
|
|
|
|
export function isAttentionSetEnabled(config: ServerInfo): boolean {
|
|
return !!config?.change?.enable_attention_set;
|
|
}
|
|
|
|
export function canHaveAttention(account: AccountInfo): boolean {
|
|
return !!account && !isServiceUser(account);
|
|
}
|
|
|
|
export function hasAttention(
|
|
config: ServerInfo,
|
|
account: AccountInfo,
|
|
change: ChangeInfo
|
|
): boolean {
|
|
return (
|
|
isAttentionSetEnabled(config) &&
|
|
canHaveAttention(account) &&
|
|
!!change?.attention_set?.hasOwnProperty(account._account_id)
|
|
);
|
|
}
|