Skip to content

Commit

Permalink
BZ #1924265 - Custom subscriptions showing entitlements as -1 on Subs…
Browse files Browse the repository at this point in the history
…criptions page

Fixes #31864 - Add cell formatter for entitlements column (Katello#9163)

* Fixes #31864 - Add cell formatter for entitlements column

* Refs #31864 - Make Unlimited and NA not editable

* Refs #31864 - update editable check

(cherry picked from commit 18a7153)
  • Loading branch information
jeremylenz authored and zjhuntin committed Feb 24, 2021
1 parent 27ec9d8 commit 55fe8a0
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,34 @@ import { sprintf, translate as __ } from 'foremanReact/common/I18n';
import { KEYCODES } from 'foremanReact/common/keyCodes';
import { Table, FormControl, FormGroup, HelpBlock, Spinner } from 'patternfly-react';
import { validateQuantity } from '../../../scenes/Subscriptions/SubscriptionValidations';
import { getEntitlementsDisplayValue } from '../../../scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableHelpers';

const renderValue = (value, additionalData, onActivate) => {
const renderValue = (rawValue, additionalData, onActivate) => {
const { available, upstream_pool_id: upstreamPoolId, collapsible } = additionalData.rowData;

if (collapsible) {
return (
<td>{__('NA')}</td>
);
} else if (available < 0 || !upstreamPoolId) {
return (
<td>{available < 0 ? __('Unlimited') : available}</td>
);
}
const value = getEntitlementsDisplayValue({
rawValue, available, collapsible, upstreamPoolId,
});
const editable = (typeof value === 'number');

return (
<td className="editable">
<div
onClick={() => onActivate(additionalData)}
onKeyPress={(e) => {
if (e.keyCode === KEYCODES.ENTER) {
onActivate(additionalData);
}
}}
className="input"
role="textbox"
tabIndex={0}
>
{value}
</div>
<td className={editable ? 'editable' : ''}>
{editable &&
<div
onClick={() => onActivate(additionalData)}
onKeyPress={(e) => {
if (e.keyCode === KEYCODES.ENTER) {
onActivate(additionalData);
}
}}
className="input"
role="textbox"
tabIndex={0}
>
{value}
</div>
}
{!editable && value}
</td>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,9 @@ exports[`EntitlementsInlineEditFormatter value mode renders the value 1`] = `
`;

exports[`EntitlementsInlineEditFormatter value mode renders unlimited for -1 1`] = `
<td>
<td
className=""
>
Unlimited
</td>
`;
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import React from 'react';
import { Table as PfTable } from 'patternfly-react';
import { getEntitlementsDisplayValue } from '../../../scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableHelpers.js';

export default (rawValue, additionalData) => {
const { available, upstream_pool_id: upstreamPoolId, collapsible } = additionalData.rowData;
const value = getEntitlementsDisplayValue({
rawValue, available, collapsible, upstreamPoolId,
});

return (
<PfTable.Cell>
{value}
</PfTable.Cell>
);
};
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import { translate as __ } from 'foremanReact/common/I18n';


const getMaxQuantity = (subscription, upstreamAvailable) => {
if (upstreamAvailable === -1) {
return upstreamAvailable;
Expand Down Expand Up @@ -102,3 +105,17 @@ export const buildPools = updatedQuantity =>
id,
quantity,
}));

export const getEntitlementsDisplayValue = ({
rawValue, available, collapsible, upstreamPoolId,
}) => {
if (collapsible) {
return __('NA');
}
if ((available && available < 0) || !upstreamPoolId) {
return (
available < 0 ? __('Unlimited') : available
);
}
return rawValue;
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import React from 'react';
import { Icon } from 'patternfly-react';
import { translate as __ } from 'foremanReact/common/I18n';
import entitlementsValueFormatter from '../../../../components/pf3Table/formatters/entitlementsValueFormatter.js';
import { entitlementsInlineEditFormatter } from '../../../../components/pf3Table/formatters/EntitlementsInlineEditFormatter';
import { subscriptionTypeFormatter } from './SubscriptionTypeFormatter';
import { subscriptionNameFormatter } from './SubscriptionNameFormatter';
Expand All @@ -16,7 +17,7 @@ function getEntitlementsFormatter(inlineEditController, canManageSubscriptionAll
if (canManageSubscriptionAllocations) {
return entitlementsInlineEditFormatter(inlineEditController);
}
return cellFormatter;
return entitlementsValueFormatter;
}

export const createSubscriptionsTableSchema = (
Expand Down

0 comments on commit 55fe8a0

Please sign in to comment.