refactor: kod sablony cenovky vznika z nazvu

Kod pre hromadny import = nazov sablony bez diakritiky, velkymi pismenami,
medzery a interpunkcia -> _ (napr. Super cena so zlavou -> SUPER_CENA_SO_ZLAVOU).
Samostatne pole Kod v editore je nahradene zobrazenim kodu pri nazve
s upozornenim, ak rovnaky kod ma ina sablona.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub_HostacnyandClaude Opus 5.5 committed 2026-10-21 12:53:25 +02:00
1 parent 4510e4f999
commit 905170f66e
4 files changed
+20 -30

No files matched your search

+6 -8
View File
@@ -15,7 +15,6 @@ export interface BadgeRow {
| BadgeLayer[]
| {
layers?: BadgeLayer[];
code?: string | null;
width?: number;
align?: BadgeTemplate['align'];
paddingTop?: number;
@@ -30,7 +29,6 @@ export function badgeFromRow(d: BadgeRow): BadgeTemplate {
return {
id: d.id,
name: d.name,
code: cfg?.code || undefined,
svgRaw: d.svg_raw || '',
layersConfig: cfg ? cfg.layers || [] : (d.layers_config as BadgeLayer[]) || [],
width: cfg?.width || 110,
@@ -40,7 +38,8 @@ export function badgeFromRow(d: BadgeRow): BadgeTemplate {
};
}
// Kód šablóny: veľké písmená bez diakritiky, medzery a pomlčky → _ (napr. "Super cena" → SUPER_CENA)
// Kód šablóny pre hromadný import = názov šablóny upravený na kód:
// bez diakritiky, veľké písmená, medzery a interpunkcia → _ (napr. „Super cena – 1+1“ → SUPER_CENA_1_1)
export function normalizeBadgeCode(value: string | null | undefined): string {
return String(value || '')
.normalize('NFD')
@@ -51,14 +50,13 @@ export function normalizeBadgeCode(value: string | null | undefined): string {
.replace(/^_+|_+$/g, '');
}
// Šablóna podľa hodnoty zo súboru: najprv kód, potom názov šablóny
export const badgeCode = (b: Pick<BadgeTemplate, 'name'>) => normalizeBadgeCode(b.name);
// Šablóna podľa hodnoty zo súboru (kód alebo názov – oboje sa porovná po úprave na kód)
export function findBadgeByCode(badges: BadgeTemplate[], value: string | null | undefined): BadgeTemplate | undefined {
const wanted = normalizeBadgeCode(value);
if (!wanted) return undefined;
return (
badges.find((b) => b.code && normalizeBadgeCode(b.code) === wanted) ||
badges.find((b) => normalizeBadgeCode(b.name) === wanted)
);
return badges.find((b) => badgeCode(b) === wanted);
}
export interface BadgeProductData {