olivetin/frontend/resources/vue/utils/choiceChecklistHelpers.js

55 lines
1.2 KiB
JavaScript

function parseLegacyChecklistValue (value) {
return value.split(',').map((segment) => segment.trim()).filter((segment) => segment !== '')
}
export function parseChecklistValue (value) {
if (!value || value === '') {
return []
}
const trimmed = value.trim()
if (trimmed.startsWith('[')) {
try {
const parsed = JSON.parse(trimmed)
if (!Array.isArray(parsed)) {
return []
}
return parsed.map((segment) => String(segment).trim()).filter((segment) => segment !== '')
} catch {
return []
}
}
return parseLegacyChecklistValue(value)
}
export function formatChecklistValue (selected) {
if (!Array.isArray(selected) || selected.length === 0) {
return ''
}
return JSON.stringify(selected)
}
export function toggleChoice (selected, value) {
const current = Array.isArray(selected) ? [...selected] : []
const index = current.indexOf(value)
if (index === -1) {
current.push(value)
return current
}
current.splice(index, 1)
return current
}
export function choiceLabel (choice) {
return choice.title || choice.value || ''
}
export function allChoiceValues (choices) {
return choices.map((choice) => choice.value)
}