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