Commit 75fa28f6fd92d986873010c7ce4b04932bed6e85

Authored by ArtemDzhereleiko
1 parent 327607e8

New Feature add the Select input on multiple input widget

@@ -104,6 +104,24 @@ @@ -104,6 +104,24 @@
104 </mat-error> 104 </mat-error>
105 </mat-form-field> 105 </mat-form-field>
106 </div> 106 </div>
  107 + <div class="input-field" *ngIf="key.settings.dataKeyValueType === 'select'">
  108 + <mat-form-field class="mat-block">
  109 + <mat-label>{{key.label}}</mat-label>
  110 + <mat-select formControlName="{{key.formId}}"
  111 + [required]="key.settings.required"
  112 + (focus)="key.isFocused = true;"
  113 + (blur)="key.isFocused = false; inputChanged(source, key)">
  114 + <mat-option *ngFor="let option of key.settings.selectOptions"
  115 + [value]="option.value !== 'null' ? option.value : null"
  116 + [disabled]="key.settings.isEditable === 'readonly'">
  117 + {{ getCustomTranslationText(option.label ? option.label : option.value) }}
  118 + </mat-option>
  119 + </mat-select>
  120 + <mat-error *ngIf="multipleInputFormGroup.get(key.formId).hasError('required')">
  121 + {{ getErrorMessageText(key.settings, 'required') }}
  122 + </mat-error>
  123 + </mat-form-field>
  124 + </div>
107 </div> 125 </div>
108 </div> 126 </div>
109 </fieldset> 127 </fieldset>
@@ -41,7 +41,7 @@ type FieldAlignment = 'row' | 'column'; @@ -41,7 +41,7 @@ type FieldAlignment = 'row' | 'column';
41 type MultipleInputWidgetDataKeyType = 'server' | 'shared' | 'timeseries'; 41 type MultipleInputWidgetDataKeyType = 'server' | 'shared' | 'timeseries';
42 type MultipleInputWidgetDataKeyValueType = 'string' | 'double' | 'integer' | 42 type MultipleInputWidgetDataKeyValueType = 'string' | 'double' | 'integer' |
43 'booleanCheckbox' | 'booleanSwitch' | 43 'booleanCheckbox' | 'booleanSwitch' |
44 - 'dateTime' | 'date' | 'time'; 44 + 'dateTime' | 'date' | 'time' | 'select';
45 type MultipleInputWidgetDataKeyEditableType = 'editable' | 'disabled' | 'readonly'; 45 type MultipleInputWidgetDataKeyEditableType = 'editable' | 'disabled' | 'readonly';
46 46
47 interface MultipleInputWidgetSettings { 47 interface MultipleInputWidgetSettings {
@@ -58,9 +58,15 @@ interface MultipleInputWidgetSettings { @@ -58,9 +58,15 @@ interface MultipleInputWidgetSettings {
58 attributesShared?: boolean; 58 attributesShared?: boolean;
59 } 59 }
60 60
  61 +interface MultipleInputWidgetSelectOption {
  62 + value: string;
  63 + label: string;
  64 +}
  65 +
61 interface MultipleInputWidgetDataKeySettings { 66 interface MultipleInputWidgetDataKeySettings {
62 dataKeyType: MultipleInputWidgetDataKeyType; 67 dataKeyType: MultipleInputWidgetDataKeyType;
63 dataKeyValueType: MultipleInputWidgetDataKeyValueType; 68 dataKeyValueType: MultipleInputWidgetDataKeyValueType;
  69 + selectOptions: MultipleInputWidgetSelectOption[];
64 required: boolean; 70 required: boolean;
65 isEditable: MultipleInputWidgetDataKeyEditableType; 71 isEditable: MultipleInputWidgetDataKeyEditableType;
66 disabledOnDataKey: string; 72 disabledOnDataKey: string;
@@ -445,6 +451,10 @@ export class MultipleInputWidgetComponent extends PageComponent implements OnIni @@ -445,6 +451,10 @@ export class MultipleInputWidgetComponent extends PageComponent implements OnIni
445 return messageText; 451 return messageText;
446 } 452 }
447 453
  454 + public getCustomTranslationText(value): string {
  455 + return this.utils.customTranslation(value, value);
  456 + }
  457 +
448 public visibleKeys(source: MultipleInputWidgetSource): MultipleInputWidgetDataKey[] { 458 public visibleKeys(source: MultipleInputWidgetSource): MultipleInputWidgetDataKey[] {
449 return source.keys.filter(key => !key.settings.dataKeyHidden); 459 return source.keys.filter(key => !key.settings.dataKeyHidden);
450 } 460 }