add PreisField and use it in Gegenstand

This commit is contained in:
Sven Balzer 2025-05-06 13:33:13 +02:00
parent 5e94198077
commit 32331729cc
2 changed files with 46 additions and 1 deletions

View File

@ -123,6 +123,15 @@ html {
}
}
& .price-input {
display: grid;
grid-template-columns: minmax(min-content, 1fr) max-content;
& input {
padding: 0;
}
}
& .placeholder {
font-size: 0.8em;
border-top: 1px solid;

View File

@ -277,6 +277,42 @@ function get_minified_formula(formula, data) {
return Roll.getFormula(output);
}
class PreisUnitField extends StringField {
constructor(options={}, context={}) {
return super({
required: true,
choices: {
"kreuzer": "DSA41.currency.kreuzer",
"heller": "DSA41.currency.heller",
"silbertaler": "DSA41.currency.silbertaler",
"dukaten": "DSA41.currency.dukaten",
},
initial: "silbertaler",
...options
}, context);
}
}
class PreisField extends SchemaField {
constructor() {
return super({
value: new NumberField({ integer: true, initial: 0, min: 0 }),
unit: new PreisUnitField(),
});
}
_toInput(config) {
const value_input = this.fields["value"].toInput({ value: config.value.value, });
const unit_input = this.fields["unit"] .toInput({ value: config.value.unit, localize: true });
let outer_div = document.createElement("div");
outer_div.className = "price-input";
outer_div.replaceChildren(value_input, unit_input);
return outer_div;
}
}
class AttributeField extends SchemaField {
constructor() {
return super({
@ -685,7 +721,7 @@ class DSA41_GegenstandData extends TypeDataModel {
static defineSchema() {
return {
gewicht: new NumberField({ integer: false, initial: 0, min: 0 }),
preis: new NumberField({ integer: true, initial: 0, min: 0 }),
preis: new PreisField(),
};
}
}