Skip to content
Snippets Groups Projects
Commit 15bcea00 authored by Pierre Dureau's avatar Pierre Dureau
Browse files

Issue #3475962 by pdureau: Cleaner meta:enum conversion

parent 56348467
No related branches found
No related tags found
1 merge request!222Issue #3475962 by pdureau: Cleaner meta:enum conversion
Pipeline #301047 passed with warnings
...@@ -20,13 +20,7 @@ class PropConverter { ...@@ -20,13 +20,7 @@ class PropConverter {
'boolean' => [ 'boolean' => [
'$ref' => 'ui-patterns://boolean', '$ref' => 'ui-patterns://boolean',
], ],
'checkboxes' => [ 'checkboxes' => $this->convertCheckboxes($setting),
'$ref' => 'ui-patterns://enum_list',
'items' => [
'enum' => \array_keys($setting['options']),
'meta:enum' => $setting['options'],
],
],
'links' => [ 'links' => [
'$ref' => 'ui-patterns://links', '$ref' => 'ui-patterns://links',
], ],
...@@ -34,16 +28,8 @@ class PropConverter { ...@@ -34,16 +28,8 @@ class PropConverter {
'$ref' => 'ui-patterns://machine_name', '$ref' => 'ui-patterns://machine_name',
], ],
'number' => $this->convertNumber($setting), 'number' => $this->convertNumber($setting),
'radios' => [ 'radios' => $this->convertEnum($setting),
'$ref' => 'ui-patterns://enum', 'select' => $this->convertEnum($setting),
'enum' => \array_keys($setting['options']),
'meta:enum' => $setting['options'],
],
'select' => [
'$ref' => 'ui-patterns://enum',
'enum' => \array_keys($setting['options']),
'meta:enum' => $setting['options'],
],
'textfield' => [ 'textfield' => [
'$ref' => 'ui-patterns://string', '$ref' => 'ui-patterns://string',
], ],
...@@ -57,6 +43,40 @@ class PropConverter { ...@@ -57,6 +43,40 @@ class PropConverter {
}; };
} }
/**
* Convert checkboxes.
*/
private function convertCheckboxes(array $setting): array {
$values = \array_keys($setting['options']);
$labels = \array_values($setting['options']);
$prop = [
'$ref' => 'ui-patterns://enum_list',
'items' => [
'enum' => $values,
],
];
if (!empty(array_diff($values, $labels))) {
$prop['items']['meta:enum'] = $setting['options'];
}
return $prop;
}
/**
* Convert select and radios.
*/
private function convertEnum(array $setting): array {
$values = \array_keys($setting['options']);
$labels = \array_values($setting['options']);
$prop = [
'$ref' => 'ui-patterns://enum',
'enum' => $values,
];
if (!empty(array_diff($values, $labels))) {
$prop['meta:enum'] = $setting['options'];
}
return $prop;
}
/** /**
* Convert number. * Convert number.
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment