Small change: defaults show up now
This commit is contained in:
parent
6188495a92
commit
811a98ebd3
1 changed files with 9 additions and 6 deletions
|
@ -98,6 +98,8 @@ export class TagRendering extends UIElement {
|
|||
private _question: string;
|
||||
private _primer: string;
|
||||
private _mapping: { k: TagsFilter, txt: string, priority?: number, substitute?: boolean }[];
|
||||
private _renderMapping: { k: TagsFilter, txt: string, priority?: number, substitute?: boolean }[];
|
||||
|
||||
private _tagsPreprocessor?: ((tags: any) => any);
|
||||
private _freeform: {
|
||||
key: string, template: string,
|
||||
|
@ -143,6 +145,7 @@ export class TagRendering extends UIElement {
|
|||
this._primer = options.primer ?? "";
|
||||
this._tagsPreprocessor = options.tagsPreprocessor;
|
||||
this._mapping = [];
|
||||
this._renderMapping = [];
|
||||
this._freeform = options.freeform;
|
||||
this.elementPriority = options.priority ?? 0;
|
||||
|
||||
|
@ -175,6 +178,8 @@ export class TagRendering extends UIElement {
|
|||
usedChoices.push(txt);
|
||||
// This is used to convert the radio button index into tags needed to add
|
||||
this._mapping.push(choiceSubbed);
|
||||
} else {
|
||||
this._renderMapping.push(choiceSubbed); // only used while rendering
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -289,11 +294,12 @@ export class TagRendering extends UIElement {
|
|||
IsKnown(): boolean {
|
||||
const tags = TagUtils.proprtiesToKV(this._source.data);
|
||||
|
||||
for (const oneOnOneElement of this._mapping) {
|
||||
for (const oneOnOneElement of this._mapping.concat(this._renderMapping)) {
|
||||
if (oneOnOneElement.k === null || oneOnOneElement.k.matches(tags)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return this._freeform !== undefined && this._source.data[this._freeform.key] !== undefined;
|
||||
}
|
||||
|
||||
|
@ -322,11 +328,10 @@ export class TagRendering extends UIElement {
|
|||
freeformScore = 0;
|
||||
}
|
||||
|
||||
if (this._mapping !== undefined) {
|
||||
|
||||
let highestScore = -100;
|
||||
let highestTemplate = undefined;
|
||||
for (const oneOnOneElement of this._mapping) {
|
||||
for (const oneOnOneElement of this._mapping.concat(this._renderMapping)) {
|
||||
if (oneOnOneElement.k == null ||
|
||||
oneOnOneElement.k.matches(tags)) {
|
||||
// We have found a matching key -> we use the template, but only if it scores better
|
||||
|
@ -347,9 +352,7 @@ export class TagRendering extends UIElement {
|
|||
// we render the found template
|
||||
return this._primer + this.ApplyTemplate(highestTemplate);
|
||||
}
|
||||
} else {
|
||||
return freeform;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue