fetch options from referenced strings

This commit is contained in:
Martin Raifer
2022-10-13 19:17:20 +02:00
parent 18b50ccd6d
commit b5e987b755

View File

@@ -26,7 +26,6 @@ export function uiFieldCombo(field, context) {
var _isMulti = (field.type === 'multiCombo' || field.type === 'manyCombo');
var _isNetwork = (field.type === 'networkCombo');
var _isSemi = (field.type === 'semiCombo');
var _optarray = field.options;
var _showTagInfoSuggestions = field.type !== 'manyCombo' && field.autoSuggestions !== false;
var _allowCustomValues = field.type !== 'manyCombo' && field.customValues !== false;
var _snake_case = (field.snake_case || (field.snake_case === undefined));
@@ -152,15 +151,16 @@ export function uiFieldCombo(field, context) {
function setStaticValues(callback) {
if (!_optarray) return;
var stringsField = field.resolveReference('stringsCrossReference');
if (!field.options || stringsField.options) return;
_comboData = _optarray.map(function(v) {
_comboData = (field.options || stringsField.options).map(function(v) {
return {
key: v,
value: field.t('options.' + v, { default: v }),
value: stringsField.t('options.' + v, { default: v }),
title: v,
display: field.t.append('options.' + v, { default: v }),
klass: field.hasTextForStringId('options.' + v) ? '' : 'raw-option'
display: stringsField.t.append('options.' + v, { default: v }),
klass: stringsField.hasTextForStringId('options.' + v) ? '' : 'raw-option'
};
});
@@ -170,6 +170,7 @@ export function uiFieldCombo(field, context) {
function setTaginfoValues(q, callback) {
var stringsField = field.resolveReference('stringsCrossReference');
var fn = _isMulti ? 'multikeys' : 'values';
var query = (_isMulti ? field.key : '') + q;
var hasCountryPrefix = _isNetwork && _countryCode && _countryCode.indexOf(q.toLowerCase()) === 0;
@@ -215,13 +216,13 @@ export function uiFieldCombo(field, context) {
_comboData = data.map(function(d) {
var k = d.value;
if (_isMulti) k = k.replace(field.key, '');
var label = field.t('options.' + k, { default: k });
var label = stringsField.t('options.' + k, { default: k });
return {
key: k,
value: _isMulti ? k : label,
display: field.t.append('options.' + k, { default: k }),
display: stringsField.t.append('options.' + k, { default: k }),
title: d.title || label,
klass: field.hasTextForStringId('options.' + k) ? '' : 'raw-option'
klass: stringsField.hasTextForStringId('options.' + k) ? '' : 'raw-option'
};
});
@@ -415,6 +416,7 @@ export function uiFieldCombo(field, context) {
combo.tags = function(tags) {
_tags = tags;
var stringsField = field.resolveReference('stringsCrossReference');
if (_isMulti || _isSemi) {
_multiData = [];
@@ -527,7 +529,7 @@ export function uiFieldCombo(field, context) {
.classed('raw-value', function(d) {
var k = d.key;
if (_isMulti) k = k.replace(field.key, '');
return !field.hasTextForStringId('options.' + k);
return !stringsField.hasTextForStringId('options.' + k);
})
.classed('draggable', allowDragAndDrop)
.classed('mixed', function(d) {
@@ -565,7 +567,7 @@ export function uiFieldCombo(field, context) {
}).filter(Boolean);
var showsValue = !isMixed && tags[field.key] && !(field.type === 'typeCombo' && tags[field.key] === 'yes');
var isRawValue = showsValue && !field.hasTextForStringId('options.' + tags[field.key]);
var isRawValue = showsValue && !stringsField.hasTextForStringId('options.' + tags[field.key]);
var isKnownValue = showsValue && !isRawValue;
var isReadOnly = !_allowCustomValues || isKnownValue;