@@ -78,7 +78,39 @@ abstract class AFormWidget {
78
78
}
79
79
80
80
static Widget getSimpleLabelValue (
81
- String label, String value, PresentationMode pm) {
81
+ String label, SmashFormItem item, PresentationMode pm,
82
+ {String ? forceValue}) {
83
+ dynamic value = forceValue;
84
+ if (value == null ) {
85
+ value = item.value;
86
+ if (value == null ) {
87
+ return Container ();
88
+ } else if (value is List && value.isEmpty) {
89
+ return Container ();
90
+ }
91
+ // if value has a label in the map, use it
92
+ List <String > valueLabels = [];
93
+ if (item.map["values" ] != null &&
94
+ item.map["values" ]? ["items" ] != null &&
95
+ item.map["values" ]? ["items" ] is List ) {
96
+ for (var listItem in item.map["values" ]? ["items" ]) {
97
+ var itemMap = listItem["item" ];
98
+ var itemLabel = itemMap? ["label" ];
99
+ var itemValue = itemMap? ["value" ];
100
+ if (itemLabel == null || itemValue == null ) {
101
+ continue ;
102
+ }
103
+ if (itemValue == value ||
104
+ (value is List && value.contains (itemValue))) {
105
+ valueLabels.add (itemLabel);
106
+ }
107
+ }
108
+ }
109
+ if (valueLabels.isNotEmpty) {
110
+ value = valueLabels.join (", " );
111
+ }
112
+ }
113
+
82
114
Widget field;
83
115
if (pm.detailMode == DetailMode .NORMAL ) {
84
116
field = Column (
@@ -89,7 +121,7 @@ abstract class AFormWidget {
89
121
color: pm.labelTextColor, bold: pm.doLabelBold),
90
122
Padding (
91
123
padding: const EdgeInsets .only (left: 12.0 , top: 8 ),
92
- child: SmashUI .normalText (value,
124
+ child: SmashUI .normalText (value. toString () ,
93
125
color: pm.valueTextColor, bold: pm.doValueBold),
94
126
),
95
127
],
@@ -103,7 +135,7 @@ abstract class AFormWidget {
103
135
color: pm.labelTextColor, bold: pm.doLabelBold),
104
136
Padding (
105
137
padding: const EdgeInsets .only (left: 12.0 ),
106
- child: SmashUI .normalText (value,
138
+ child: SmashUI .normalText (value. toString () ,
107
139
color: pm.valueTextColor, bold: pm.doValueBold),
108
140
),
109
141
],
@@ -718,8 +750,8 @@ class DateWidget extends AFormWidget {
718
750
if (itemReadonly && presentationMode.detailMode != DetailMode .DETAILED ) {
719
751
widget = ListTile (
720
752
leading: icon,
721
- title: AFormWidget . getSimpleLabelValue (
722
- label, valueString , presentationMode),
753
+ title:
754
+ AFormWidget . getSimpleLabelValue ( label, formItem , presentationMode),
723
755
);
724
756
} else {
725
757
widget = ListTile (
@@ -786,8 +818,8 @@ class TimeWidget extends AFormWidget {
786
818
if (itemReadonly && presentationMode.detailMode != DetailMode .DETAILED ) {
787
819
widget = ListTile (
788
820
leading: icon,
789
- title: AFormWidget . getSimpleLabelValue (
790
- label, valueString , presentationMode),
821
+ title:
822
+ AFormWidget . getSimpleLabelValue ( label, formItem , presentationMode),
791
823
);
792
824
} else {
793
825
widget = ListTile (
@@ -1030,8 +1062,8 @@ class AutoCompleteStringComboWidget extends AFormWidget {
1030
1062
if (itemReadonly && presentationMode.detailMode != DetailMode .DETAILED ) {
1031
1063
widget = ListTile (
1032
1064
leading: icon,
1033
- title: AFormWidget . getSimpleLabelValue (
1034
- label, valueString , presentationMode),
1065
+ title:
1066
+ AFormWidget . getSimpleLabelValue ( label, formItem , presentationMode),
1035
1067
);
1036
1068
} else {
1037
1069
widget = ListTile (
@@ -1109,7 +1141,8 @@ class ConnectedStringComboWidget extends AFormWidget {
1109
1141
widget = ListTile (
1110
1142
leading: icon,
1111
1143
title: AFormWidget .getSimpleLabelValue (
1112
- label, finalString, presentationMode),
1144
+ label, formItem, presentationMode,
1145
+ forceValue: finalString),
1113
1146
);
1114
1147
} else {
1115
1148
widget = ListTile (
@@ -1246,8 +1279,8 @@ class MultiStringComboWidget extends AFormWidget {
1246
1279
// ! TODO
1247
1280
widget = ListTile (
1248
1281
leading: icon,
1249
- title: AFormWidget . getSimpleLabelValue (
1250
- label, valueString , presentationMode),
1282
+ title:
1283
+ AFormWidget . getSimpleLabelValue ( label, formItem , presentationMode),
1251
1284
);
1252
1285
} else {
1253
1286
widget = ListTile (
0 commit comments