Files
DESKTOP-GBA0BK8\Admin 7c8c8b1c76 first commit
2023-04-08 12:19:53 -04:00

58 lines
1.3 KiB
JavaScript

import _ from '../lodash.custom';
const _get_localized = function(ret, locales) {
if (typeof(ret) == 'object' && typeof(ret.names) == 'object') {
for (let locale of locales) {
if (ret.names[locale]) {
return ret.names[locale];
}
}
return '';
}
return ret;
}
class Record {
data = {};
default_locales = [];
constructor(data, default_locales) {
this.data = data || {};
this.default_locales = default_locales || ['en'];
}
get(prop, default_value) {
return this.get_with_locales(prop, this.default_locales, default_value);
}
get_with_locales(prop, locales, default_value) {
// Treat pseudo-property 'name' as if it never existed
if (prop.substr(-5) === '.name') {
prop = prop.substr(0, prop.length - 5);
}
// TODO handle most_specific_subdivision (here or in PHP)?
let ret = _.get(this.data, prop, default_value);
// Localize property, if possible
ret = _get_localized(ret, locales);
return ret;
}
/**
* Get error message, if any
* @return string Error Message
*/
error() {
return _.get(this.data, 'extra.error', '');
}
}
export default Record;