Files
frontend-app-authoring/src/group-configurations/utils.js
ruzniaievdm 907ce50071 feat: [FC-0044] group configurations MFE page (#929)
* feat: group configurations - index page

* feat: [AXIMST-63] Index group configurations page

* fix: resolve discussions

* fix: resolve second round discussions

* feat: group configurations - content group actions

* feat: [AXIMST-75, AXIMST-69, AXIMST-81] Content group actions

* fix: resolve conversations

* feat: group configurations - sidebar

* feat: [AXIMST-87] group-configuration page sidebar

* refactor: [AXIMST-87] add changes after review

* refactor: [AXIMST-87] add changes after review

* refactor: [AXIMST-87] add changes ater review

---------

Co-authored-by: Kyrylo Hudym-Levkovych <kyr.hudym@kyrs-MacBook-Pro.local>

* fix: group configurations - the page reloads after the user saves changes

* feat: group configurations - experiment groups

* feat: [AXIMST-93, 99, 105] Group configuration - Experiment Groups

* fix: [AXIMST-518, 537] Group configuration - resolve bugs

* fix: review discussions

* fix: revert classname case

* fix: group configurations - resolve discussions

fix: [AXIMST-714] icon is aligned with text (#210)

* fix: add hook tests

* fix: add thunk tests

* fix: add slice tests

* chore: group configurations - messages

* fix: group configurations - remove delete in edit mode

---------

Co-authored-by: Kyr <40792129+khudym@users.noreply.github.com>
Co-authored-by: Kyrylo Hudym-Levkovych <kyr.hudym@kyrs-MacBook-Pro.local>
Co-authored-by: monteri <lansevermore>
2024-04-23 11:53:49 -04:00

54 lines
1.9 KiB
JavaScript

import { getConfig } from '@edx/frontend-platform';
import messages from './messages';
/**
* Formats the given URL to a unit page URL.
* @param {string} url - The original part of URL.
* @returns {string} - The formatted unit page URL.
*/
const formatUrlToUnitPage = (url) => new URL(url, getConfig().STUDIO_BASE_URL).href;
/**
* Retrieves a list of group count based on the number of items.
* @param {Array} items - The array of items to count.
* @param {function} formatMessage - The function for formatting localized messages.
* @returns {Array} - List of group count.
*/
const getGroupsCountMessage = (items, formatMessage) => {
if (!items?.length) {
return [];
}
return [formatMessage(messages.containsGroups, { len: items.length })];
};
/**
* Retrieves a list of usage count based on the number of items.
* @param {Array} items - The array of items to count.
* @param {function} formatMessage - The function for formatting localized messages.
* @returns {Array} - List of usage count.
*/
const getUsageCountMessage = (items, formatMessage) => {
if (!items?.length) {
return [formatMessage(messages.notInUse)];
}
return [formatMessage(messages.usedInLocations, { len: items.length })];
};
/**
* Retrieves a combined list of badge messages based on usage and group information.
* @param {Array} usage - The array of items indicating usage.
* @param {Object} group - The group information.
* @param {boolean} isExperiment - Flag indicating whether it is an experiment group configurations.
* @param {function} formatMessage - The function for formatting localized messages.
* @returns {Array} - Combined list of badges.
*/
const getCombinedBadgeList = (usage, group, isExperiment, formatMessage) => [
...(isExperiment ? getGroupsCountMessage(group.groups, formatMessage) : []),
...getUsageCountMessage(usage, formatMessage),
];
export { formatUrlToUnitPage, getCombinedBadgeList };