Themes(school): add invalidValues for conflicting uniform values

This commit is contained in:
Pieter Vander Vennet 2025-03-01 03:33:57 +01:00
parent a42e1f8161
commit 31312c2dc6
4 changed files with 17 additions and 3 deletions

View file

@ -839,6 +839,16 @@
"freeform": { "freeform": {
"key": "dress_code" "key": "dress_code"
}, },
"invalidValues": {
"or": [
{
"and": [
"dress_code~(^|.*;)uniform(.*|$)",
"dress_code~(^|.*;)(casual|obligated_colour)(.*|$)"
]
}
]
},
"mappings": [ "mappings": [
{ {
"if": "dress_code=uniform", "if": "dress_code=uniform",

View file

@ -268,7 +268,7 @@ export interface QuestionableTagRenderingConfigJson extends TagRenderingConfigJs
*/ */
default?: string default?: string
/** /**
* question: What values of the freeform key should be interpreted as 'unknown'? * question: What tag combintations key should be interpreted as 'unknown'?
* For example, if a feature has `shop=yes`, the question 'what type of shop is this?' should still asked * For example, if a feature has `shop=yes`, the question 'what type of shop is this?' should still asked
* ifunset: The question will be considered answered if any value is set for the key * ifunset: The question will be considered answered if any value is set for the key
* group: expert * group: expert

View file

@ -812,6 +812,10 @@ export default class TagRenderingConfig {
if (and.and.length === 0) { if (and.and.length === 0) {
return undefined return undefined
} }
console.log(">>> New properties", TagUtils.asProperties(and, currentProperties), this.invalidValues)
if (this.invalidValues?.matchesProperties(TagUtils.asProperties(and, currentProperties))) {
return undefined
}
return and return and
} }

View file

@ -7,7 +7,7 @@
import { MinimalThemeInformation } from "../../Models/ThemeConfig/ThemeConfig" import { MinimalThemeInformation } from "../../Models/ThemeConfig/ThemeConfig"
import Translations from "../i18n/Translations" import Translations from "../i18n/Translations"
import Tr from "../Base/Tr.svelte" import Tr from "../Base/Tr.svelte"
import { twMerge } from "tailwind-merge" import { Utils } from "../../Utils"
export let search: UIEventSource<string> = new UIEventSource<string>(undefined) export let search: UIEventSource<string> = new UIEventSource<string>(undefined)
export let themes: MinimalThemeInformation[] export let themes: MinimalThemeInformation[]
@ -20,7 +20,7 @@
<slot name="title" /> <slot name="title" />
<div <div
class={onlyIcons ? "flex gap-x-2 flex-wrap items-center justify-center" : ("theme-list my-2 gap-4 md:grid md:grid-flow-row md:grid-cols-2 lg:grid-cols-3")}> class={onlyIcons ? "flex gap-x-2 flex-wrap items-center justify-center" : ("theme-list my-2 gap-4 md:grid md:grid-flow-row md:grid-cols-2 lg:grid-cols-3")}>
{#each themes as theme (theme.id)} {#each Utils.NoNull(themes) as theme (theme.id)}
<ThemeButton {theme} {state} iconOnly={onlyIcons}> <ThemeButton {theme} {state} iconOnly={onlyIcons}>
{#if $search && hasSelection && themes?.[0] === theme} {#if $search && hasSelection && themes?.[0] === theme}
<span class="thanks hidden-on-mobile" aria-hidden="true"> <span class="thanks hidden-on-mobile" aria-hidden="true">