* 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>
54 lines
1.9 KiB
JavaScript
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 };
|