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