Skip to content

Commit

Permalink
Fixes #35313 - CV Version Compare - add other content types
Browse files Browse the repository at this point in the history
  • Loading branch information
tazhibaevaaliya committed Aug 2, 2022
1 parent bfb0b08 commit aa3ae51
Show file tree
Hide file tree
Showing 16 changed files with 1,083 additions and 1,411 deletions.
10 changes: 10 additions & 0 deletions app/views/katello/api/v2/ansible_collections/compare.json.rabl
@@ -0,0 +1,10 @@
object false

extends "katello/api/v2/common/metadata"

child @collection[:results] => :results do
extends 'katello/api/v2/ansible_collections/base'
node :comparison do |result|
result.comparison
end
end
1 change: 1 addition & 0 deletions webpack/scenes/ContentViews/ContentViewsConstants.js
Expand Up @@ -67,6 +67,7 @@ export const cvModuleStreamsCompareKey = (versionOne, versionTwo) => `${MODULE_S
export const cvDebPackagesCompareKey = (versionOne, versionTwo) => `${DEB_PACKAGES_KEY}_COMPARE_${versionOne}_${versionTwo}`;
export const cvDockerTagsCompareKey = (versionOne, versionTwo) => `${DOCKER_TAGS_KEY}_COMPARE_${versionOne}_${versionTwo}`;
export const filesCompareKey = (versionOne, versionTwo) => `${FILES_KEY}_COMPARE_${versionOne}_${versionTwo}`;
export const generatedContentCompareKey = (pluralLabel, versionOne, versionTwo) => `${toUpper(pluralLabel)}_COMPARE_${versionOne}_${versionTwo}`;
// Repo added to content view status display and key
export const ADDED = __('Added');
export const NOT_ADDED = __('Not added');
Expand Down
13 changes: 13 additions & 0 deletions webpack/scenes/ContentViews/Details/ContentViewDetailActions.js
Expand Up @@ -56,6 +56,7 @@ import {
cvDockerTagsCompareKey,
cvDebPackagesCompareKey,
filesCompareKey,
generatedContentCompareKey,
} from '../ContentViewsConstants';
import api, { foremanApi, orgId } from '../../../services/api';
import { getResponseErrorMsgs } from '../../../utils/helpers';
Expand Down Expand Up @@ -169,6 +170,18 @@ export const getFilesComparison = (versionOne, versionTwo, params) => {
});
};

export const getContentComparison = (pluralLabel, versionOne, versionTwo, params) => {
const versions = { content_view_version_ids: [versionOne, versionTwo] };
const apiParams = { ...versions, ...params };
const apiUrl = `/${pluralLabel}/compare`;
return get({
key: generatedContentCompareKey(pluralLabel, versionOne, versionTwo),
params: apiParams,
errorToast: error => __(`Something went wrong while retrieving the packages! ${getResponseErrorMsgs(error.response)}`),
url: api.getApiUrl(apiUrl),
});
};

export const getFiles = params => get({
type: API_OPERATIONS.GET,
key: FILE_CONTENT,
Expand Down
13 changes: 13 additions & 0 deletions webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js
Expand Up @@ -44,6 +44,7 @@ import {
cvDockerTagsCompareKey,
cvDebPackagesCompareKey,
filesCompareKey,
generatedContentCompareKey,
} from '../ContentViewsConstants';

export const selectCVDetails = (state, cvId) =>
Expand Down Expand Up @@ -196,6 +197,18 @@ export const selectFilesComparisonStatus = (state, versionOne, versionTwo) =>
export const selectFilesComparisonError = (state, versionOne, versionTwo) =>
selectAPIError(state, filesCompareKey(versionOne, versionTwo));

export const selectGeneratedContentComparison = (state, versionOne, versionTwo, pluralLabel) =>
selectAPIResponse(state, generatedContentCompareKey(pluralLabel, versionOne, versionTwo))
|| {};

export const selectGeneratedContentComparisonStatus =
(state, versionOne, versionTwo, pluralLabel) =>
selectAPIStatus(state, generatedContentCompareKey(pluralLabel, versionOne, versionTwo))
|| STATUS.PENDING;

export const selectGeneratedContentComparisonError = (state, versionOne, versionTwo, pluralLabel) =>
selectAPIError(state, generatedContentCompareKey(pluralLabel, versionOne, versionTwo));

export const selectCVFilterRules = (state, filterId) =>
selectAPIResponse(state, cvFilterRulesKey(filterId));

Expand Down
Expand Up @@ -21,6 +21,8 @@ import {
selectDebPackagesComparisonStatus,
selectDockerTagsComparison,
selectDockerTagsComparisonStatus,
selectGeneratedContentComparison,
selectGeneratedContentComparisonStatus,
} from '../../ContentViewDetailSelectors';
import {
getPackageGroupsComparison,
Expand All @@ -30,8 +32,11 @@ import {
getModuleStreamsComparison,
getDebPackagesComparison,
getDockerTagsComparison,
getContentComparison,
} from '../../ContentViewDetailActions';

import ContentConfig from '../../../../Content/ContentConfig';

export const TableType = PropTypes.shape({
name: PropTypes.string,
getCountKey: PropTypes.func,
Expand All @@ -57,6 +62,7 @@ export default ({
const {
comparison,
} = item;

if (
Number(comparison?.[0]) === Number(versionId)
|| Number(comparison?.[1]) === Number(versionId)) {
Expand All @@ -68,6 +74,7 @@ export default ({
<TimesIcon style={{ color: '#6A6E73' }} />
);
};

return ([
{
name: __('RPM packages'),
Expand Down Expand Up @@ -265,5 +272,25 @@ export default ({
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
],
},
...ContentConfig.filter(config => !(config.names.pluralLabel === 'ostree_refs')).map(({
names: { pluralLowercase, pluralLabel, singularLabel },
columnHeaders,
}) => ({
name: pluralLowercase,
getCountKey: (itemVersionOne, itemVersionTwo) =>
itemVersionOne?.[`${singularLabel}_count`] || itemVersionTwo?.[`${singularLabel}_count`],
responseSelector: state =>
selectGeneratedContentComparison(state, versionOneId, versionTwoId, pluralLabel),
statusSelector: state =>
selectGeneratedContentComparisonStatus(state, versionOneId, versionTwoId, pluralLabel),
autocompleteEndpoint: `/${pluralLabel}/auto_complete_search`,
fetchItems: params =>
getContentComparison(pluralLabel, versionOneId, versionTwoId, params),
columnHeaders: [
...columnHeaders,
{ title: __(`Version ${versionOne}`), getProperty: item => compareContent(item, versionOneId) },
{ title: __(`Version ${versionTwo}`), getProperty: item => compareContent(item, versionTwoId) },
],
})),
]);
};

0 comments on commit aa3ae51

Please sign in to comment.