Allow to store and retrieve combobox multivalues with commas
This commit is contained in:
parent
add23dab2f
commit
dcf88479bd
|
@ -17,6 +17,7 @@ import org.json.JSONObject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -239,6 +240,18 @@ public class Field implements Comparable, PropertiesModelBuilder, ViewStyleDefin
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
} else if (this.value instanceof Collection) {
|
||||||
|
Collection valueCollection = (Collection) this.value;
|
||||||
|
StringBuilder valueBuilder = new StringBuilder();
|
||||||
|
valueBuilder.append("[");
|
||||||
|
for (int i = 0; i < valueCollection.size(); i++) {
|
||||||
|
valueBuilder.append(parseString(valueCollection.stream().toArray()[i]));
|
||||||
|
if (i < valueCollection.size() - 1) {
|
||||||
|
valueBuilder.append(", ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
valueBuilder.append("]");
|
||||||
|
fieldValues.put(this.id, valueBuilder.toString());
|
||||||
} else {
|
} else {
|
||||||
fieldValues.put(this.id, this.value.toString());
|
fieldValues.put(this.id, this.value.toString());
|
||||||
}
|
}
|
||||||
|
@ -251,4 +264,13 @@ public class Field implements Comparable, PropertiesModelBuilder, ViewStyleDefin
|
||||||
public void toMap(Map<String, Object> fieldValues, int index) {
|
public void toMap(Map<String, Object> fieldValues, int index) {
|
||||||
fieldValues.put(this.id, this.value);
|
fieldValues.put(this.id, this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String parseString(Object value) {
|
||||||
|
if (value instanceof String) {
|
||||||
|
if (((String)value).contains(",")) {
|
||||||
|
return "\"" + value + "\"";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -106,7 +106,9 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
|
||||||
if (this.form.get('data').value.multiList) {
|
if (this.form.get('data').value.multiList) {
|
||||||
const originalValue = <string>this.form.get('value').value;
|
const originalValue = <string>this.form.get('value').value;
|
||||||
if (originalValue !== null && typeof originalValue === 'string') {
|
if (originalValue !== null && typeof originalValue === 'string') {
|
||||||
let values = (<string>this.form.get('value').value).slice(1, -1).split(', ');
|
let values = (<string>this.form.get('value').value).slice(1, -1).split(', ').filter((value) => !value.includes('"'));
|
||||||
|
let specialValue = (<string>this.form.get('value').value).split('"').filter((value) => !value.startsWith('[') && !value.endsWith(']') && !values.includes(value));
|
||||||
|
specialValue.forEach(value => values.push(value));
|
||||||
if (!originalValue.startsWith('[') && !originalValue.endsWith(']')) {
|
if (!originalValue.startsWith('[') && !originalValue.endsWith(']')) {
|
||||||
values = undefined;
|
values = undefined;
|
||||||
values = [originalValue];
|
values = [originalValue];
|
||||||
|
@ -385,8 +387,8 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
|
||||||
|
|
||||||
parseTags() {
|
parseTags() {
|
||||||
try{
|
try{
|
||||||
|
|
||||||
|
|
||||||
let stringValue = this.form.get('value').value;
|
let stringValue = this.form.get('value').value;
|
||||||
if (typeof stringValue === 'string') {
|
if (typeof stringValue === 'string') {
|
||||||
stringValue = (<string>stringValue).replace(new RegExp('{', 'g'), '{"').replace(new RegExp('=', 'g'), '":"').replace(new RegExp(',', 'g'), '",').replace(new RegExp(', ', 'g'), ', "').replace(new RegExp('}', 'g'), '"}');
|
stringValue = (<string>stringValue).replace(new RegExp('{', 'g'), '{"').replace(new RegExp('=', 'g'), '":"').replace(new RegExp(',', 'g'), '",').replace(new RegExp(', ', 'g'), ', "').replace(new RegExp('}', 'g'), '"}');
|
||||||
|
|
Loading…
Reference in New Issue