From 78fa066dd16cb3eb31c090b42866d85a9fa68bea Mon Sep 17 00:00:00 2001 From: VIAUD Nathan <nathan.viaud@inria.fr> Date: Wed, 8 Nov 2023 17:03:22 +0100 Subject: [PATCH] fix --- .../components/inputs/badges/BadgesInput.vue | 4 ++-- src/shared/services/badge.service.ts | 17 +++++++++++++++++ src/shared/services/graph.service.ts | 10 ++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/features/forms/components/inputs/badges/BadgesInput.vue b/src/features/forms/components/inputs/badges/BadgesInput.vue index 7be85dac..47571e46 100644 --- a/src/features/forms/components/inputs/badges/BadgesInput.vue +++ b/src/features/forms/components/inputs/badges/BadgesInput.vue @@ -3,7 +3,7 @@ import BadgeItem from '@/src/features/badge/components/BadgeItem.vue'; import AddBadge from './components/AddBadge.vue'; import { computed, ComputedRef } from 'vue'; import { Badge } from '@/src/shared/interfaces'; -import { addNewBadge, openBadge } from '@/src/shared/services'; +import { addNewBadge, isBadgeValid, openBadge } from '@/src/shared/services'; const props = defineProps<{ inputValue: string[]; @@ -37,7 +37,7 @@ const badges: ComputedRef<Badge[]> = computed(() => { v-for="(badge, index) in badges" :key="index" :badge="badge" - :invalid="Object.keys(badge.rule.and).length === 0" + :invalid="!isBadgeValid(badge)" @click="openBadge(badge.id)" /> </div> diff --git a/src/shared/services/badge.service.ts b/src/shared/services/badge.service.ts index 62eac53f..cd7cd745 100644 --- a/src/shared/services/badge.service.ts +++ b/src/shared/services/badge.service.ts @@ -209,4 +209,21 @@ export async function saveCustomIcon(icon: string) { projectStore.addCustomIcon(iconPath); return iconPath; +} + +export function isBadgeValid(badge): boolean { + return badge.rule.and.length > 0; +} + +export function getValidBadges(){ + const epocNode = findNode('1'); + const badges = epocNode.data.formValues.badges; + if(!badges) return null; + + const res = {}; + for(const badgeId in badges) { + if(isBadgeValid(badges[badgeId])) res[badgeId] = badges[badgeId]; + } + + return res; } \ No newline at end of file diff --git a/src/shared/services/graph.service.ts b/src/shared/services/graph.service.ts index ff2ea6f8..faa5ac81 100644 --- a/src/shared/services/graph.service.ts +++ b/src/shared/services/graph.service.ts @@ -21,7 +21,7 @@ import { setNodesSelectability } from '@/src/shared/services/graph'; import { Question } from '@epoc/epoc-types/src/v2'; -import { createRule, getConditions } from '@/src/shared/services/badge.service'; +import { createRule, getConditions, getValidBadges } from '@/src/shared/services/badge.service'; import { Badge, NodeElement } from '@/src/shared/interfaces'; declare const api: ApiInterface; @@ -58,7 +58,7 @@ function createContentJSON() : EpocV1 { const ePocNode = nodes.value.find((node) => { return node.type === 'epoc'; }); const chapterNodes = nodes.value.filter((node) => { return node.type === 'chapter'; }); - const badges = ePocNode.data.formValues.badges; + const validBadges = getValidBadges(); const ePocValues = ePocNode.data.formValues; @@ -93,8 +93,10 @@ function createContentJSON() : EpocV1 { pageNode = getNextNode(pageNode); } }); - - if(badges) epoc.badges = exportBadgesToPage(badges); + + if(validBadges) { + epoc.badges = exportBadgesToPage(validBadges); + } return epoc; } -- GitLab