Browse Source
Merge pull request #3707 from vvlladd28/improvement/profile/validator-topic
Add validator to unique MQTT device topic filter
pull/3711/head
Igor Kulikov
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
15 additions and
2 deletions
-
ui-ngx/src/app/modules/home/components/profile/device/mqtt-device-profile-transport-configuration.component.html
-
ui-ngx/src/app/modules/home/components/profile/device/mqtt-device-profile-transport-configuration.component.ts
-
ui-ngx/src/assets/locale/locale.constant-en_US.json
|
|
|
@ -63,6 +63,9 @@ |
|
|
|
</mat-error> |
|
|
|
</mat-form-field> |
|
|
|
</div> |
|
|
|
<mat-error *ngIf="mqttDeviceProfileTransportConfigurationFormGroup.get('configuration').hasError('unique')"> |
|
|
|
{{ 'device-profile.mqtt-device-topic-filters-unique' | translate }} |
|
|
|
</mat-error> |
|
|
|
<div class="tb-hint" innerHTML="{{ 'device-profile.support-level-wildcards' | translate }}"></div> |
|
|
|
<div class="tb-hint" innerHTML="{{ 'device-profile.single-level-wildcards-hint' | translate }}"></div> |
|
|
|
<div class="tb-hint" innerHTML="{{ 'device-profile.multi-level-wildcards-hint' | translate }}"></div> |
|
|
|
|
|
|
|
@ -51,7 +51,6 @@ export class MqttDeviceProfileTransportConfigurationComponent implements Control |
|
|
|
|
|
|
|
mqttTransportPayloadTypeTranslations = mqttTransportPayloadTypeTranslationMap; |
|
|
|
|
|
|
|
|
|
|
|
mqttDeviceProfileTransportConfigurationFormGroup: FormGroup; |
|
|
|
|
|
|
|
private requiredValue: boolean; |
|
|
|
@ -87,7 +86,7 @@ export class MqttDeviceProfileTransportConfigurationComponent implements Control |
|
|
|
deviceAttributesTopic: [null, [Validators.required, this.validationMQTTTopic()]], |
|
|
|
deviceTelemetryTopic: [null, [Validators.required, this.validationMQTTTopic()]], |
|
|
|
transportPayloadType: [MqttTransportPayloadType.JSON, Validators.required] |
|
|
|
}) |
|
|
|
}, {validator: this.uniqueDeviceTopicValidator}) |
|
|
|
}); |
|
|
|
this.mqttDeviceProfileTransportConfigurationFormGroup.valueChanges.subscribe(() => { |
|
|
|
this.updateModel(); |
|
|
|
@ -147,4 +146,14 @@ export class MqttDeviceProfileTransportConfigurationComponent implements Control |
|
|
|
return null; |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
private uniqueDeviceTopicValidator(control: FormGroup): { [key: string]: boolean } | null { |
|
|
|
if (control.value) { |
|
|
|
const formValue = control.value as MqttDeviceProfileTransportConfiguration; |
|
|
|
if (formValue.deviceAttributesTopic === formValue.deviceTelemetryTopic) { |
|
|
|
return {unique: true}; |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -885,6 +885,7 @@ |
|
|
|
"no-device-profiles-found": "No device profiles found.", |
|
|
|
"create-new-device-profile": "Create a new one!", |
|
|
|
"mqtt-device-topic-filters": "MQTT device topic filters", |
|
|
|
"mqtt-device-topic-filters-unique": "MQTT device topic filters need to be unique.", |
|
|
|
"mqtt-device-payload-type": "MQTT device payload", |
|
|
|
"mqtt-device-payload-type-json": "JSON", |
|
|
|
"mqtt-device-payload-type-proto": "Protobuf", |
|
|
|
|