mirror of
https://github.com/wekan/wekan.git
synced 2025-09-22 01:50:48 +02:00
38 lines
1 KiB
JavaScript
38 lines
1 KiB
JavaScript
class CustomField {
|
|
constructor(definition) {
|
|
this.definition = definition;
|
|
}
|
|
}
|
|
|
|
export class CustomFieldStringTemplate extends CustomField {
|
|
constructor(definition) {
|
|
super(definition);
|
|
this.format = definition.settings.stringtemplateFormat;
|
|
this.separator = definition.settings.stringtemplateSeparator;
|
|
}
|
|
|
|
getFormattedValue(rawValue) {
|
|
const ret = (rawValue ?? [])
|
|
.filter(value => !!value.trim())
|
|
.map(value => {
|
|
let _ret = this.format.replace(/[%$]\{.+?[^0-9]\}/g, function(_match) {
|
|
let __ret;
|
|
if (_match.match(/%\{value\}/i)) {
|
|
__ret = value;
|
|
} else {
|
|
_match = _match.replace(/^\$/, "");
|
|
try {
|
|
const _json = JSON.parse(_match);
|
|
__ret = value.replace(new RegExp(_json.regex, _json.flags), _json.replace);
|
|
} catch (err) {
|
|
console.error(err);
|
|
}
|
|
}
|
|
return __ret;
|
|
});
|
|
return _ret;
|
|
})
|
|
.join(this.separator ?? '');
|
|
return ret;
|
|
}
|
|
}
|