From 790d2bee4a57fc722ec57fe3eb828fad7070a488 Mon Sep 17 00:00:00 2001 From: sairina Date: Wed, 20 Apr 2022 21:01:59 -0700 Subject: [PATCH 1/9] Add category field - ability to use dropdown --- .../components/edit/CategoryOptions.vue | 246 ++++++++++++++++++ .../components/edit/DetailsTabView.vue | 6 +- .../channelEdit/vuex/contentNode/actions.js | 5 + .../frontend/shared/constants.js | 4 + .../contentcuration/frontend/shared/mixins.js | 2 + 5 files changed, 262 insertions(+), 1 deletion(-) create mode 100644 contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue b/contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue new file mode 100644 index 0000000000..ebc28c326c --- /dev/null +++ b/contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue @@ -0,0 +1,246 @@ + + + + diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/edit/DetailsTabView.vue b/contentcuration/contentcuration/frontend/channelEdit/components/edit/DetailsTabView.vue index 1cebc6c074..f8f14c6f19 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/components/edit/DetailsTabView.vue +++ b/contentcuration/contentcuration/frontend/channelEdit/components/edit/DetailsTabView.vue @@ -106,6 +106,8 @@ + + @@ -366,6 +368,7 @@ import LevelsOptions from './LevelsOptions.vue'; import ResourcesNeededOptions from './ResourcesNeededOptions.vue'; import LearningActivityOptions from './LearningActivityOptions.vue'; + import CategoryOptions from './CategoryOptions.vue'; import { getTitleValidators, @@ -459,6 +462,7 @@ LevelsOptions, ResourcesNeededOptions, LearningActivityOptions, + CategoryOptions, }, mixins: [constantsTranslationMixin, metadataTranslationMixin], props: { @@ -541,7 +545,7 @@ contentLevel: generateNestedNodesGetterSetter('grade_levels'), resourcesNeeded: generateNestedNodesGetterSetter('learner_needs'), contentLearningActivities: generateNestedNodesGetterSetter('learning_activities'), - + categories: generateNestedNodesGetterSetter('categories'), mastery_model() { return this.getExtraFieldsValueFromNodes('mastery_model'); }, diff --git a/contentcuration/contentcuration/frontend/channelEdit/vuex/contentNode/actions.js b/contentcuration/contentcuration/frontend/channelEdit/vuex/contentNode/actions.js index c608db3528..fc4b4e872c 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/vuex/contentNode/actions.js +++ b/contentcuration/contentcuration/frontend/channelEdit/vuex/contentNode/actions.js @@ -181,6 +181,7 @@ export function createContentNode(context, { parent, kind, ...payload }) { grade_levels: {}, learner_needs: {}, learning_activities: {}, + categories: {}, ...payload, }; @@ -217,6 +218,7 @@ function generateContentNodeData({ grade_levels = NOVALUE, learner_needs = NOVALUE, learning_activities = NOVALUE, + categories = NOVALUE, } = {}) { const contentNodeData = {}; if (title !== NOVALUE) { @@ -267,6 +269,9 @@ function generateContentNodeData({ if (learning_activities !== NOVALUE) { contentNodeData.learning_activities = learning_activities; } + if (categories !== NOVALUE) { + contentNodeData.categories = categories; + } if (extra_fields !== NOVALUE) { contentNodeData.extra_fields = contentNodeData.extra_fields || {}; diff --git a/contentcuration/contentcuration/frontend/shared/constants.js b/contentcuration/contentcuration/frontend/shared/constants.js index c7af961529..100c8a579d 100644 --- a/contentcuration/contentcuration/frontend/shared/constants.js +++ b/contentcuration/contentcuration/frontend/shared/constants.js @@ -1,3 +1,5 @@ +import invert from 'lodash/invert'; +import Subjects from 'kolibri-constants/labels/Subjects'; import featureFlagsSchema from 'static/feature_flags.json'; export { default as LearningActivities } from 'kolibri-constants/labels/LearningActivities'; @@ -8,6 +10,8 @@ export { default as AccessibilityCategories } from 'kolibri-constants/labels/Acc export { default as ContentLevels } from 'kolibri-constants/labels/Levels'; export { default as ResourcesNeededTypes } from 'kolibri-constants/labels/Needs'; +export const CategoriesLookup = invert(Subjects); + export const ContentDefaults = { author: 'author', provider: 'provider', diff --git a/contentcuration/contentcuration/frontend/shared/mixins.js b/contentcuration/contentcuration/frontend/shared/mixins.js index b7bedbaa60..8c64e09d66 100644 --- a/contentcuration/contentcuration/frontend/shared/mixins.js +++ b/contentcuration/contentcuration/frontend/shared/mixins.js @@ -674,6 +674,8 @@ const nonconformingKeys = { BASIC_SKILLS: 'allLevelsBasicSkills', FOUNDATIONS: 'basicSkills', foundationsLogicAndCriticalThinking: 'logicAndCriticalThinking', + toolsAndSoftwareTraining: 'softwareToolsAndTraining', + foundations: 'basicSkills', /* * TODO: the following are in ResourcesNeededTypes map from le-utils, but not in Kolibri, From 0e0fd400fb7bd43b77dc66ca5d7a939cdaffeb2f Mon Sep 17 00:00:00 2001 From: sairina Date: Fri, 22 Apr 2022 21:22:15 -0700 Subject: [PATCH 2/9] Add category field - all behaviors in dropdown accounted for --- .../components/edit/CategoryOptions.vue | 55 +++++++++++++------ 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue b/contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue index ebc28c326c..d6f5014ef5 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue +++ b/contentcuration/contentcuration/frontend/channelEdit/components/edit/CategoryOptions.vue @@ -22,7 +22,7 @@ v-bind="attrs" close v-on="on" - @input="remove(data.item)" + @input="remove(data.item.value)" > {{ data.item.text }} @@ -70,7 +70,7 @@