Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Upcoming Features
---

Placement Groups text copy updates ([#10399](https://github.com/linode/manager/pull/10399))
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ describe('VM Placement landing page', () => {
});

ui.button
.findByTitle('Create Placement Groups')
.findByTitle('Create Placement Group')
.should('be.visible')
.should('be.enabled')
.click();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export const DetailsPanel = (props: DetailsPanelProps) => {
/>

{tagsInputProps && <TagsInput {...tagsInputProps} />}

{isPlacementGroupsEnabled && (
<PlacementGroupsDetailPanel
handlePlacementGroupChange={handlePlacementGroupChange}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@ describe('Linode Create Details', () => {

await waitFor(() => {
expect(
getByText('Select a region above to see available Placement Groups.')
getByText(
'Select a Region for your Linode to see existing placement groups.'
)
).toBeVisible();
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ describe('PlacementGroupPanel', () => {
});

expect(
getByText('Select a region above to see available Placement Groups.')
getByText(
'Select a Region for your Linode to see existing placement groups.'
)
).toBeVisible();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,13 @@ export const PlacementGroupsAffinityTypeSelect = (props: Props) => {
textFieldProps={{
tooltipText: (
<Typography>
Linodes in a placement group that use β€˜Affinity’ always exist on the
same host. This can help with performance. Linodes in a placement
group that use β€˜Anti-affinity: Host’ are never on the same host. Use
Linodes in a placement group that use Affinity are physically closer
together, possibly on the same hardware. This can help with
performance. Linodes in a placement group that use Anti-affinity are
in separate fault domains, but still in the same data center. Use
this to support a high-availability model.
<br />
{/* TODO VM_Placement: Add link path or determine if removal desired */}
<Link to="TODO VM_Placement: update link">Learn more.</Link>
</Typography>
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ export const PlacementGroupsAssignLinodesDrawer = (
/>
)}
<Typography>
A Linode can only be assigned to a single Placement Group.
A Linode can only be assigned to one placement group.
</Typography>
<Box sx={{ alignItems: 'flex-end', display: 'flex' }}>
<LinodeSelect
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ describe('PlacementGroupsDetailPanel', () => {

expect(getByRole('combobox')).toBeDisabled();
expect(getByTestId('notice-warning')).toHaveTextContent(
'The selected region does not currently have Placement Group capabilities.'
'Currently, only specific regions support placement groups.'
);
expect(
queryByRole('button', { name: /create placement group/i })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export const PlacementGroupsDetailPanel = (props: Props) => {
variant="warning"
>
<Typography fontFamily={theme.font.bold}>
Select a region above to see available Placement Groups.
Select a Region for your Linode to see existing placement groups.
</Typography>
</Notice>
)}
Expand All @@ -93,8 +93,7 @@ export const PlacementGroupsDetailPanel = (props: Props) => {
variant="warning"
>
<Typography fontFamily={theme.font.bold}>
The selected region does not currently have Placement Group
capabilities. Only these{' '}
Currently, only specific{' '}
<TextTooltip
sxTypography={{
fontFamily: theme.font.bold,
Expand All @@ -111,7 +110,7 @@ export const PlacementGroupsDetailPanel = (props: Props) => {
displayText="regions"
minWidth={225}
/>{' '}
support Placement Groups.
support placement groups.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a case sensitive search for "Placement Group[s]" and found more instances of it capitalized. I understand current copy isn't finalized, but below are a few instances (there are more) where capitalization should be revisited by UX and copywriting for consistency in the future: (cc @abailly-akamai, so you can keep an eye out before release)

  • "Only regions supporting Placement Groups are listed." in PlacementGroupsCreateDrawer.tsx
  • "Loading your Placement Groups..." and "No available Placement Groups" in PlacementGroupsSelect.tsx
  • "Placement Groups are not available in this region" and "There are no Placement Groups in this region" in ConfigureForm.tsx
  • "There are no Placement Groups in this region." and "This region has reached its Placement Group capacity" in PlacementGroupsDetailPanel.tsx

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This capitalization business has been a new thing for this feature. I understand the intent but it seems to create a bit of distortion for people, and frankly although the capitalization rules have been explained to me (Product VS Instance) it does not fully make sense to me.

As to the points above, i was hoping to see more constants being made as a result of this PR since we have strings duplicates, hopefully that can be done in the final copy PR

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mjac0bs There are instances where the copy refers to Placement Group(s) as a product name, in which case both words are capitalized. In other cases, placement group(s) is used as a noun and we don't require capitalization. As the copy changes, so does the way the term is used. Thanks for the list of places to keep an eye on.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

frankly although the capitalization rules have been explained to me (Product VS Instance) it does not fully make sense to me.

I think I'm with ya. 😬 As long as it's clear to users...

</Typography>
</Notice>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ describe('PlacementGroupsLanding', () => {

expect(
getByText(
'Control the physical placement or distribution of virtual machines (VMs) instances within a data center or availability zone.'
'Control the physical placement or distribution of Linode instances within a data center or availability zone.'
)
).toBeInTheDocument();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ export const PlacementGroupsLanding = React.memo(() => {
}}
debounceTime={250}
hideLabel
label="Filter"
label="Search"
onChange={(e) => setQuery(e.target.value)}
placeholder="Filter"
placeholder="Search Placement Groups"
sx={{ mb: 4 }}
value={query}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const PlacementGroupsLandingEmptyState = ({
<ResourcesSection
buttonProps={[
{
children: 'Create Placement Groups',
children: 'Create Placement Group',
disabled: disabledCreateButton,
onClick: () => {
sendEvent({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import type {

export const headers: ResourcesHeaders = {
description:
'Control the physical placement or distribution of virtual machines (VMs) instances within a data center or availability zone.',
'Control the physical placement or distribution of Linode instances within a data center or availability zone.',
subtitle: '',
title: PLACEMENT_GROUP_LABEL,
};
Expand Down
9 changes: 4 additions & 5 deletions packages/manager/src/features/PlacementGroups/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@ export const MAX_NUMBER_OF_LINODES_IN_PLACEMENT_GROUP_MESSAGE =
export const PLACEMENT_GROUP_LINODES_ERROR_MESSAGE =
'There was an error loading Linodes for this Placement Group.';

export const PLACEMENT_GROUP_TOOLTIP_TEXT = `The Affinity Type and Region determine the maximum number of VMs per group.`;
export const PLACEMENT_GROUP_TOOLTIP_TEXT = `The Affinity Type and Region you selected determine the maximum number of Linodes per placement group.`;

export const PLACEMENT_GROUP_SELECT_TOOLTIP_COPY = `
Add your virtual machine (VM) to a group to best meet your needs.
You may want to group VMs closer together to help improve performance, or further apart to enable high-availability configurations.
Learn more.`;
Add your Linode to a group to best meet your needs.
You may want to group Linodes closer together to help improve performance, or further apart to enable high-availability configurations.`;

export const PLACEMENT_GROUP_HAS_NO_CAPACITY =
'This Placement Group does not have any capacity.';
'This placement group has reached the maximum Linode capacity.';