wekan/client/lib/customFields.js

39 lines
1 KiB
JavaScript
Raw Normal View History

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;
}
}