stash
This commit is contained in:
parent
95ddb484eb
commit
8622e488a4
16 changed files with 607 additions and 369 deletions
45
frontend/src/label-content.js
Normal file
45
frontend/src/label-content.js
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
// Turns a {kind, components} prefill into the literal string a print label should show/encode.
|
||||
// Keeping this keyed by `kind` rather than having each caller build its own string means the
|
||||
// format for a given kind of label content only has to be gotten right in one place.
|
||||
export const LABEL_CONTENT_BUILDERS = {
|
||||
// The self-contained Item URL (see docs/design-in-progress/items-labels.md) - what a
|
||||
// printed label actually encodes, since scanning it has to resolve the right
|
||||
// frontend/backend/item with no other context, not just this browser's history.
|
||||
"item-url": ({user, id}) => `${window.location.origin}/i/${user}/${id}`,
|
||||
};
|
||||
|
||||
export function buildLabelContent(prefill) {
|
||||
if (!prefill) {
|
||||
return "";
|
||||
}
|
||||
const build = LABEL_CONTENT_BUILDERS[prefill.kind];
|
||||
return build ? build(prefill.components) : "";
|
||||
}
|
||||
|
||||
// Named fields the field-specific label templates (see label-drawing.js's LABEL_TEMPLATES) draw
|
||||
// from - keyed by `kind` for the same reason LABEL_CONTENT_BUILDERS is. A field missing from the
|
||||
// result (rather than present-but-empty) is what LabelLayoutPreview.vue treats as "not available",
|
||||
// so builders should only include a field once its inputs actually check out.
|
||||
const LABEL_FIELD_BUILDERS = {
|
||||
"item-url": ({user, id}) => {
|
||||
if (!user || !id) {
|
||||
return {};
|
||||
}
|
||||
return {
|
||||
itemUrl: `${window.location.origin}/i/${user}/${id}`,
|
||||
// The compact "owner handle + id" form from docs/design-in-progress/items-labels.md -
|
||||
// meaningful only where context already makes clear it's a Toolshed item, unlike itemUrl.
|
||||
itemHandle: `${user}:${id}`,
|
||||
userHandle: user,
|
||||
itemId: String(id),
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
export function buildLabelFields(prefill) {
|
||||
if (!prefill) {
|
||||
return {};
|
||||
}
|
||||
const build = LABEL_FIELD_BUILDERS[prefill.kind];
|
||||
return build ? build(prefill.components) : {};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue