Skip to content

Commit

Permalink
Merge pull request learningequality#12686 from AllanOXDi/metadata-com…
Browse files Browse the repository at this point in the history
…posable

Helper function(s) to manage display of metadata tags in the new cards
  • Loading branch information
AllanOXDi authored Oct 22, 2024
2 parents 3e417b6 + 8abdf6e commit 3d12dae
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 4 deletions.
4 changes: 4 additions & 0 deletions kolibri/core/assets/src/mixins/commonCoreStrings.js
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,10 @@ export const coreStrings = createTranslator('CommonCoreStrings', {
message: 'Activity type',
context: 'Indicate the kind of learning activity, such as: reading, listening, watching, etc.',
},
multipleLearningActivities: {
message: 'Multiple learning activities',
context: 'Label indicating the resource contains several different learning activities.',
},

// Library Categories
school: {
Expand Down
4 changes: 0 additions & 4 deletions kolibri/plugins/learn/assets/src/views/commonLearnStrings.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,6 @@ export const learnStrings = createTranslator('CommonLearnStrings', {
context:
'Title of the modal window where a user will confirm or cancel marking a resource as complete manually.',
},
multipleLearningActivities: {
message: 'Multiple learning activities',
context: 'Label indicating the resource contains several different learning activities.',
},
suggestedTime: {
message: 'Suggested time',
context: 'Time suggested by coach for how long an independent practice quiz should take',
Expand Down
73 changes: 73 additions & 0 deletions packages/kolibri-common/composables/useCoachMetadataTags.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { ref } from 'kolibri.lib.vueCompositionApi';
import { ContentNodeKinds } from 'kolibri.coreVue.vuex.constants';
import coreStrings from 'kolibri.utils.coreStrings';
import commonCoreStringsMixin from 'kolibri.coreVue.mixins.commonCoreStrings';

export function useCoachMetadataTags(contentNode) {
const tags = ref([]);

const getCategoryTags = () => {
if (!contentNode.categories) return [];
return contentNode.categories.map(category =>
commonCoreStringsMixin.methods.coreString(category),
);
};

const getLevelTags = () => {
if (!contentNode.grade_levels) return [];
return contentNode.grade_levels.map(grade_levels =>
commonCoreStringsMixin.methods.coreString(grade_levels),
);
};

const getLanguageTag = () => {
if (!contentNode.lang) return [];
return contentNode.lang.lang_name;
};

const getActivityTag = () => {
if (!contentNode.learning_activities) return [];

return contentNode.learning_activities.length > 1
? [coreStrings.$tr('multipleLearningActivities')]
: contentNode.learning_activities.map(activity =>
commonCoreStringsMixin.methods.coreString(activity),
);
};

const getDurationTag = () => {
if (!contentNode.duration) return [];
return contentNode.duration.map(duration => coreStrings.formatDuration(duration));
};

const getSpecificCategoryTag = () => {
if (!contentNode.categories) return [];
const specificCategories = contentNode.categories.filter(
category => category.split('.').length > 2,
);
return specificCategories.map(category => commonCoreStringsMixin.methods.coreString(category));
};

if (
contentNode.kind === ContentNodeKinds.CHANNEL ||
contentNode.kind === ContentNodeKinds.TOPIC
) {
tags.value = [
...getCategoryTags().slice(0, 3),
...getLevelTags().slice(0, 3),
...getLanguageTag(),
];
} else {
tags.value = [
...getActivityTag(),
...getDurationTag(),
...getLevelTags(),
...getSpecificCategoryTag(),
...getLanguageTag(),
].slice(0, 3);
}

return {
tags,
};
}

0 comments on commit 3d12dae

Please sign in to comment.