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
assets/layers/school
src

View file

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

View file

@ -268,7 +268,7 @@ export interface QuestionableTagRenderingConfigJson extends TagRenderingConfigJs
*/
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
* ifunset: The question will be considered answered if any value is set for the key
* group: expert

View file

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

View file

@ -7,7 +7,7 @@
import { MinimalThemeInformation } from "../../Models/ThemeConfig/ThemeConfig"
import Translations from "../i18n/Translations"
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 themes: MinimalThemeInformation[]
@ -20,7 +20,7 @@
<slot name="title" />
<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")}>
{#each themes as theme (theme.id)}
{#each Utils.NoNull(themes) as theme (theme.id)}
<ThemeButton {theme} {state} iconOnly={onlyIcons}>
{#if $search && hasSelection && themes?.[0] === theme}
<span class="thanks hidden-on-mobile" aria-hidden="true">