Allow wordlist combobox type to have multiple values
This commit is contained in:
parent
292c758a41
commit
5be674d07e
|
@ -12,6 +12,7 @@ import java.util.Map;
|
|||
|
||||
public class WordListData extends ComboBoxData<WordListData> {
|
||||
private List<Option> options;
|
||||
private Boolean multiList;
|
||||
|
||||
public List<Option> getOptions() {
|
||||
return options;
|
||||
|
@ -21,10 +22,18 @@ public class WordListData extends ComboBoxData<WordListData> {
|
|||
this.options = options;
|
||||
}
|
||||
|
||||
public Boolean getMultiList() {
|
||||
return multiList;
|
||||
}
|
||||
|
||||
public void setMultiList(Boolean multiList) {
|
||||
this.multiList = multiList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Element toXml(Document doc) {
|
||||
Element root = super.toXml(doc);
|
||||
root.setAttribute("multiList", this.multiList.toString());
|
||||
Element element = doc.createElement("options");
|
||||
if (this.options != null) {
|
||||
for (Option option : this.options) {
|
||||
|
@ -50,6 +59,8 @@ public class WordListData extends ComboBoxData<WordListData> {
|
|||
}
|
||||
}
|
||||
}
|
||||
Boolean temp = Boolean.parseBoolean(item.getAttribute("multiList"));
|
||||
this.multiList = temp != null ? temp : false;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -57,7 +68,6 @@ public class WordListData extends ComboBoxData<WordListData> {
|
|||
public WordListData fromData(Object data) {
|
||||
super.fromData(data);
|
||||
this.options = new LinkedList();
|
||||
|
||||
if (data != null) {
|
||||
List<Map<String, String>> options = ((Map<String, List<Map<String, String>>>) data).get("options");
|
||||
if (options != null) {
|
||||
|
@ -68,8 +78,8 @@ public class WordListData extends ComboBoxData<WordListData> {
|
|||
this.options.add(newOption);
|
||||
}
|
||||
}
|
||||
this.multiList = (Boolean) ((Map<String, Object>) data).get("multiList");
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@ export interface TextAreaFieldData extends FieldData {
|
|||
export interface WordListFieldData extends FieldData {
|
||||
type: DatasetProfileComboBoxType;
|
||||
options: Array<FieldDataOption>;
|
||||
multiList: boolean;
|
||||
}
|
||||
|
||||
export interface FieldDataOption extends FieldData {
|
||||
|
|
|
@ -7,11 +7,13 @@ import { FieldDataOptionEditorModel } from './field-data-option-editor-model';
|
|||
export class WordListFieldDataEditorModel extends FieldDataEditorModel<WordListFieldDataEditorModel> {
|
||||
public type: DatasetProfileComboBoxType = DatasetProfileComboBoxType.WordList;
|
||||
public options: Array<FieldDataOptionEditorModel>;
|
||||
public multipleList: boolean;
|
||||
|
||||
buildForm(disabled: boolean = false, skipDisable: Array<String> = []): FormGroup {
|
||||
const formGroup = this.formBuilder.group({
|
||||
type: [{ value: this.type, disabled: (disabled && !skipDisable.includes('WordListFieldDataEditorModel.type')) }],
|
||||
label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('WordListFieldDataEditorModel.label')) }]
|
||||
label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('WordListFieldDataEditorModel.label')) }],
|
||||
multiList: [{ value: this.multipleList, disabled: (disabled && !skipDisable.includes('WordListFieldDataEditorModel.multipleList'))}]
|
||||
});
|
||||
const optionsFormArray = new Array<FormGroup>();
|
||||
if (this.options) {
|
||||
|
@ -29,6 +31,7 @@ export class WordListFieldDataEditorModel extends FieldDataEditorModel<WordListF
|
|||
this.type = item.type;
|
||||
if (item.options) { this.options = item.options.map(x => new FieldDataOptionEditorModel().fromModel(x)); }
|
||||
this.label = item.label;
|
||||
this.multipleList = item.multiList;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
<h5 style="font-weight: bold" class="col-12">{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-WORD-LIST-TITLE'
|
||||
| translate}}</h5>
|
||||
<mat-checkbox class="col-auto" [formControl]="this.form.get('data').get('multiList')">
|
||||
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-MULTIPLE-WORDLIST' | translate}}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field class="col-12">
|
||||
<input matInput type="string"
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
<mat-hint>{{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }}</mat-hint>
|
||||
</mat-form-field>
|
||||
<mat-form-field *ngIf="form.get('data').value.type === datasetProfileComboBoxTypeEnum.WordList" class="col-md-12">
|
||||
<mat-select [formControl]="form.get('value')" placeholder="{{ form.get('data').value.label | translate }}" [required]="form.get('validationRequired').value">
|
||||
<mat-select [formControl]="form.get('value')" placeholder="{{ form.get('data').value.label | translate }}" [required]="form.get('validationRequired').value" [multiple]="form.get('data').value.multiList">
|
||||
<mat-option *ngFor="let opt of form.get('data').value.options" [value]="opt.value">{{opt.label}}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
|
|
|
@ -93,6 +93,18 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
|
|||
this.visibilityRulesService.updateValueAndVisibility(this.form.get('id').value, this.form.get('value').value);
|
||||
}
|
||||
|
||||
if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.ComboBox && this.form.get('data').value.type === DatasetProfileComboBoxType.WordList) {
|
||||
if (this.form.get('data').value.multiList) {
|
||||
const originalValue = <string>this.form.get('value').value;
|
||||
let values = (<string>this.form.get('value').value).slice(1, -1).split(', ');
|
||||
if (!originalValue.startsWith('[') && !originalValue.endsWith(']')) {
|
||||
values = undefined;
|
||||
values = [originalValue];
|
||||
}
|
||||
this.form.patchValue({ 'value': values });
|
||||
}
|
||||
}
|
||||
|
||||
// Setup autocomplete configuration if needed
|
||||
if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.ComboBox && this.form.get('data').value.type === DatasetProfileComboBoxType.Autocomplete) {
|
||||
if (!(this.form.controls['data'].value.multiAutoComplete)) {
|
||||
|
|
|
@ -334,7 +334,8 @@
|
|||
"FIELD-DATE-PICKER-PLACEHOLDER": "Input Placeholder",
|
||||
"FIELD-DATE-PICKER-LABEL": "Label",
|
||||
"FIELD-DATE-PICKER-VALUE": "Value",
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Multiple Autocomplete"
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Multiple Autocomplete",
|
||||
"FIELD-MULTIPLE-WORDLIST": "Multiple Selection"
|
||||
},
|
||||
"DEFAULT-VALUES": {
|
||||
"NONE": "Keine",
|
||||
|
|
|
@ -354,7 +354,8 @@
|
|||
"FIELD-DATE-PICKER-PLACEHOLDER": "Input Placeholder",
|
||||
"FIELD-DATE-PICKER-LABEL": "Label",
|
||||
"FIELD-DATE-PICKER-VALUE": "Value",
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Multiple Autocomplete"
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Multiple Autocomplete",
|
||||
"FIELD-MULTIPLE-WORDLIST": "Multiple Selection"
|
||||
},
|
||||
"DEFAULT-VALUES": {
|
||||
"NONE": "None",
|
||||
|
|
|
@ -354,7 +354,8 @@
|
|||
"FIELD-DATE-PICKER-PLACEHOLDER": "Marcador de entrada",
|
||||
"FIELD-DATE-PICKER-LABEL": "Etiqueta",
|
||||
"FIELD-DATE-PICKER-VALUE": "Valor",
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Autocompeltado múltiple"
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Autocompeltado múltiple",
|
||||
"FIELD-MULTIPLE-WORDLIST": "Multiple Selection"
|
||||
},
|
||||
"DEFAULT-VALUES": {
|
||||
"NONE": "Ninguno",
|
||||
|
|
|
@ -351,7 +351,8 @@
|
|||
"FIELD-DATE-PICKER-PLACEHOLDER": "Τοποθέτηση placeholder",
|
||||
"FIELD-DATE-PICKER-LABEL": "Ετικέτα",
|
||||
"FIELD-DATE-PICKER-VALUE": "Τιμή",
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Πολλαπλή Αυτόματη Συμπλήρωση"
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Πολλαπλή Αυτόματη Συμπλήρωση",
|
||||
"FIELD-MULTIPLE-WORDLIST": "Multiple Selection"
|
||||
},
|
||||
"DEFAULT-VALUES": {
|
||||
"NONE": "Κανένα",
|
||||
|
|
|
@ -351,7 +351,8 @@
|
|||
"FIELD-DATE-PICKER-PLACEHOLDER": "Girdi Yer tutucu",
|
||||
"FIELD-DATE-PICKER-LABEL": "Etiket",
|
||||
"FIELD-DATE-PICKER-VALUE": "Değer",
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Çoklu Otomatik Tamamlama"
|
||||
"FIELD-MULTIPLE-AUTOCOMPLETE": "Çoklu Otomatik Tamamlama",
|
||||
"FIELD-MULTIPLE-WORDLIST": "Multiple Selection"
|
||||
},
|
||||
"DEFAULT-VALUES": {
|
||||
"NONE": "Hiç",
|
||||
|
|
Loading…
Reference in New Issue