Skip to content

Commit

Permalink
add strategy attribute conditions - Includes and Excludes to Platform…
Browse files Browse the repository at this point in the history
…, Device and Country types (#1148)

Co-authored-by: Irina Southwell <“[email protected]”>
  • Loading branch information
IrinaSouth and Irina Southwell committed Apr 17, 2024
1 parent eef07f2 commit 301dd33
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,7 @@ class EditAttributeStrategyWidgetState
Widget _nameField() {
if (_wellKnown != null) {
return Text(_nameFieldMap[_wellKnown!]!,
style: Theme.of(context).textTheme.titleSmall!.copyWith(
));
style: Theme.of(context).textTheme.titleSmall!.copyWith());
} else {
return TextFormField(
controller: _fieldName,
Expand Down Expand Up @@ -160,7 +159,7 @@ class EditAttributeStrategyWidgetState
padding: const EdgeInsets.all(4.0),
// margin: EdgeInsets.all(8.0),
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(6.0)),
borderRadius: BorderRadius.all(Radius.circular(6.0)),
),
height: 42,
child: OutlinedButton(
Expand All @@ -173,13 +172,13 @@ class EditAttributeStrategyWidgetState
),
isExpanded: true,
items: _matchers.map((RolloutStrategyAttributeConditional
dropDownStringItem) {
dropDownStringItem) {
return DropdownMenuItem<
RolloutStrategyAttributeConditional>(
RolloutStrategyAttributeConditional>(
value: dropDownStringItem,
child: Text(
transformStrategyAttributeConditionalValueToString(
dropDownStringItem),
dropDownStringItem, _wellKnown),
style: Theme.of(context).textTheme.bodyMedium));
}).toList(),
hint: Text('Select condition',
Expand Down Expand Up @@ -229,26 +228,26 @@ class EditAttributeStrategyWidgetState
StrategyAttributeDeviceNameExtension.fromJson(e),
))
else if (_wellKnown == StrategyAttributeWellKnownNames.platform)
Expanded(
flex: 4,
child: MultiSelectDropdown(
values: widget.attribute.values,
possibleValues: StrategyAttributePlatformName.values,
enumToDisplayNameMapper: _platformNameMapper,
hint: 'Select Platform',
enumToJsonMapper: (e) =>
(e as StrategyAttributePlatformName).toJson(),
jsonToEnumMapper: (e) =>
StrategyAttributePlatformNameExtension.fromJson(e),
))
else
Expanded(flex: 4, child: _fieldValueEditorByFieldType())
Expanded(
flex: 4,
child: MultiSelectDropdown(
values: widget.attribute.values,
possibleValues: StrategyAttributePlatformName.values,
enumToDisplayNameMapper: _platformNameMapper,
hint: 'Select Platform',
enumToJsonMapper: (e) =>
(e as StrategyAttributePlatformName).toJson(),
jsonToEnumMapper: (e) =>
StrategyAttributePlatformNameExtension.fromJson(e),
))
else
Expanded(flex: 4, child: _fieldValueEditorByFieldType())
]);
}

void _updateAttributeFieldName() {
final newWellKnown =
StrategyAttributeWellKnownNamesExtension.fromJson(_fieldName.text);
StrategyAttributeWellKnownNamesExtension.fromJson(_fieldName.text);

if (newWellKnown != _wellKnown) {
setState(() {
Expand All @@ -264,7 +263,7 @@ class EditAttributeStrategyWidgetState
padding: const EdgeInsets.all(4.0),
margin: const EdgeInsets.all(8.0),
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(6.0)),
borderRadius: BorderRadius.all(Radius.circular(6.0)),
),
height: 42,
child: OutlinedButton(
Expand Down Expand Up @@ -348,7 +347,7 @@ class EditAttributeStrategyWidgetState
padding: const EdgeInsets.all(4.0),
margin: const EdgeInsets.all(8.0),
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(6.0)),
borderRadius: BorderRadius.all(Radius.circular(6.0)),
),
height: 42,
child: OutlinedButton(
Expand Down Expand Up @@ -400,7 +399,7 @@ class EditAttributeStrategyWidgetState
padding: const EdgeInsets.all(4.0),
margin: const EdgeInsets.all(8.0),
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(6.0)),
borderRadius: BorderRadius.all(Radius.circular(6.0)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
Expand Down Expand Up @@ -429,8 +428,10 @@ class EditAttributeStrategyWidgetState
child: Tooltip(
message: 'Add value',
child: TextButton.icon(
onPressed: () => _valueFieldChanged(_value.text),
icon: const Icon(Icons.add_outlined, size: 16.0), label: const Text("Add"),),
onPressed: () => _valueFieldChanged(_value.text),
icon: const Icon(Icons.add_outlined, size: 16.0),
label: const Text("Add"),
),
),
)
],
Expand Down Expand Up @@ -463,9 +464,8 @@ class EditAttributeStrategyWidgetState
if (val.isEmpty) {
return;
} else {
List<String> valuesList = val.split(",")
.map((name) => name.trim())
.toList();
List<String> valuesList =
val.split(",").map((name) => name.trim()).toList();
if (_attributeType == RolloutStrategyFieldType.NUMBER) {
for (var element in valuesList) {
try {
Expand All @@ -480,9 +480,7 @@ class EditAttributeStrategyWidgetState
// ignore: empty_catches
} catch (e) {}
}
}

else {
} else {
if (!widget.attribute.values.contains(val)) {
setState(() {
for (var element in valuesList) {
Expand All @@ -498,8 +496,8 @@ class EditAttributeStrategyWidgetState

String _countryNameMapper(dynamic val) {
return ((val is StrategyAttributeCountryName)
? val.toJson().toString()
: val.toString())
? val.toJson().toString()
: val.toString())
.toString()
.replaceAll('_', ' ')
.replaceAll('of the', '')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ List<RolloutStrategyAttributeConditional> defineMatchers(
StrategyAttributeWellKnownNames? wellKnown) {
final equalsOnlyMatchers = <RolloutStrategyAttributeConditional>[
RolloutStrategyAttributeConditional.EQUALS,
RolloutStrategyAttributeConditional.NOT_EQUALS
RolloutStrategyAttributeConditional.NOT_EQUALS,
RolloutStrategyAttributeConditional.EXCLUDES,
RolloutStrategyAttributeConditional.INCLUDES
];

final semanticVersionMatchers = <RolloutStrategyAttributeConditional>[
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import 'package:mrapi/api.dart';

String transformStrategyAttributeConditionalValueToString(
RolloutStrategyAttributeConditional dropDownStringItem) {
RolloutStrategyAttributeConditional dropDownStringItem,
StrategyAttributeWellKnownNames? wellKnown) {
switch (dropDownStringItem) {
case RolloutStrategyAttributeConditional.EQUALS:
return 'equals';
Expand All @@ -20,8 +21,18 @@ String transformStrategyAttributeConditionalValueToString(
case RolloutStrategyAttributeConditional.LESS_EQUALS:
return 'less or equals';
case RolloutStrategyAttributeConditional.INCLUDES:
if (wellKnown == StrategyAttributeWellKnownNames.platform &&
wellKnown == StrategyAttributeWellKnownNames.country &&
wellKnown == StrategyAttributeWellKnownNames.device) {
return 'includes';
}
return 'includes substring';
case RolloutStrategyAttributeConditional.EXCLUDES:
if (wellKnown == StrategyAttributeWellKnownNames.platform &&
wellKnown == StrategyAttributeWellKnownNames.country &&
wellKnown == StrategyAttributeWellKnownNames.device) {
return 'excludes';
}
return 'excludes substring';
case RolloutStrategyAttributeConditional.REGEX:
return 'regex';
Expand Down

0 comments on commit 301dd33

Please sign in to comment.