Browse Source

Merge branch 'master' into feature/new-menu

pull/15888/head
Igor Kulikov 3 months ago
parent
commit
a1932d0c81
  1. 7
      ui-ngx/src/app/modules/home/components/alarm-rules/cf-alarm-rule-condition.component.ts
  2. 10
      ui-ngx/src/app/modules/home/components/alarm-rules/cf-alarm-rule.component.ts
  3. 8
      ui-ngx/src/app/modules/home/components/alarm-rules/create-cf-alarm-rules.component.ts
  4. 14
      ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-actions.service.ts
  5. 12
      ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-delete-dialog.component.ts
  6. 6
      ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-installed-items-table.component.ts
  7. 16
      ui-ngx/src/app/shared/components/time-unit-input.component.ts

7
ui-ngx/src/app/modules/home/components/alarm-rules/cf-alarm-rule-condition.component.ts

@ -142,10 +142,9 @@ export class CfAlarmRuleConditionComponent implements ControlValueAccessor, Vali
} }
ngOnChanges(changes: SimpleChanges) { ngOnChanges(changes: SimpleChanges) {
if (changes.arguments) { if (changes.arguments && !changes.arguments.firstChange) {
if (changes.arguments && !changes.arguments.firstChange) { this.recalculateArgumentValidity();
this.recalculateArgumentValidity(); this.onValidatorChange();
}
} }
} }

10
ui-ngx/src/app/modules/home/components/alarm-rules/cf-alarm-rule.component.ts

@ -84,6 +84,7 @@ export class CfAlarmRuleComponent implements ControlValueAccessor, OnInit, Valid
}); });
private propagateChange = (v: any) => { }; private propagateChange = (v: any) => { };
private onValidatorChange = () => { };
constructor(private dialog: MatDialog, constructor(private dialog: MatDialog,
private fb: FormBuilder, private fb: FormBuilder,
@ -97,12 +98,21 @@ export class CfAlarmRuleComponent implements ControlValueAccessor, OnInit, Valid
registerOnTouched(fn: any): void { registerOnTouched(fn: any): void {
} }
registerOnValidatorChange(fn: () => void): void {
this.onValidatorChange = fn;
}
ngOnInit() { ngOnInit() {
this.alarmRuleFormGroup.valueChanges.pipe( this.alarmRuleFormGroup.valueChanges.pipe(
takeUntilDestroyed(this.destroyRef) takeUntilDestroyed(this.destroyRef)
).subscribe(() => { ).subscribe(() => {
this.updateModel(); this.updateModel();
}); });
this.alarmRuleFormGroup.statusChanges.pipe(
takeUntilDestroyed(this.destroyRef)
).subscribe(() => {
this.onValidatorChange();
});
} }
setDisabledState(isDisabled: boolean): void { setDisabledState(isDisabled: boolean): void {

8
ui-ngx/src/app/modules/home/components/alarm-rules/create-cf-alarm-rules.component.ts

@ -77,12 +77,16 @@ export class CreateCfAlarmRulesComponent implements ControlValueAccessor, Valida
private usedSeverities: AlarmSeverity[] = []; private usedSeverities: AlarmSeverity[] = [];
private propagateChange = (v: any) => { }; private propagateChange = (v: any) => { };
private onValidatorChange = () => { };
constructor(private fb: FormBuilder, constructor(private fb: FormBuilder,
private destroyRef: DestroyRef) { private destroyRef: DestroyRef) {
this.createAlarmRulesFormGroup.valueChanges.pipe( this.createAlarmRulesFormGroup.valueChanges.pipe(
takeUntilDestroyed(this.destroyRef) takeUntilDestroyed(this.destroyRef)
).subscribe(() => this.updateModel()); ).subscribe(() => this.updateModel());
this.createAlarmRulesFormGroup.statusChanges.pipe(
takeUntilDestroyed(this.destroyRef)
).subscribe(() => this.onValidatorChange());
} }
registerOnChange(fn: any): void { registerOnChange(fn: any): void {
@ -92,6 +96,10 @@ export class CreateCfAlarmRulesComponent implements ControlValueAccessor, Valida
registerOnTouched(fn: any): void { registerOnTouched(fn: any): void {
} }
registerOnValidatorChange(fn: () => void): void {
this.onValidatorChange = fn;
}
createAlarmRulesFormArray(): UntypedFormArray { createAlarmRulesFormArray(): UntypedFormArray {
return this.createAlarmRulesFormGroup.get('createAlarmRules') as UntypedFormArray; return this.createAlarmRulesFormGroup.get('createAlarmRules') as UntypedFormArray;
} }

14
ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-actions.service.ts

@ -17,11 +17,9 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { Observable, of } from 'rxjs'; import { Observable, of } from 'rxjs';
import { map, mergeMap } from 'rxjs/operators';
import { MpItemVersionView } from '@shared/models/iot-hub/iot-hub-version.models'; import { MpItemVersionView } from '@shared/models/iot-hub/iot-hub-version.models';
import { ItemType } from '@shared/models/iot-hub/iot-hub-item.models'; import { ItemType } from '@shared/models/iot-hub/iot-hub-item.models';
import { DeviceInstalledItemDescriptor, IotHubInstalledItem } from '@shared/models/iot-hub/iot-hub-installed-item.models'; import { DeviceInstalledItemDescriptor, IotHubInstalledItem } from '@shared/models/iot-hub/iot-hub-installed-item.models';
import { IotHubApiService } from '@core/http/iot-hub-api.service';
import { EntityId } from '@shared/models/id/entity-id'; import { EntityId } from '@shared/models/id/entity-id';
import { TbIotHubAddItemDialogComponent, IotHubAddItemDialogData, IotHubAddItemDialogResult } from './iot-hub-add-item-dialog.component'; import { TbIotHubAddItemDialogComponent, IotHubAddItemDialogData, IotHubAddItemDialogResult } from './iot-hub-add-item-dialog.component';
import { TbIotHubItemDetailDialogComponent, IotHubItemDetailDialogData, IotHubItemDetailDialogMode } from './iot-hub-item-detail-dialog.component'; import { TbIotHubItemDetailDialogComponent, IotHubItemDetailDialogData, IotHubItemDetailDialogMode } from './iot-hub-item-detail-dialog.component';
@ -35,8 +33,7 @@ import { TbIotHubInstalledItemsDialogComponent, IotHubInstalledItemsDialogData }
export class IotHubActionsService { export class IotHubActionsService {
constructor( constructor(
private dialog: MatDialog, private dialog: MatDialog
private iotHubApiService: IotHubApiService
) {} ) {}
openItemDetail(item: MpItemVersionView, installedItem?: IotHubInstalledItem, installedItemsCount?: number, openItemDetail(item: MpItemVersionView, installedItem?: IotHubInstalledItem, installedItemsCount?: number,
@ -109,13 +106,8 @@ export class IotHubActionsService {
panelClass: ['tb-dialog'], panelClass: ['tb-dialog'],
disableClose: true, disableClose: true,
autoFocus: false, autoFocus: false,
data: { itemName: installedItem.itemName, itemType: installedItem.itemType } data: { installedItemId: installedItem.id.id, itemName: installedItem.itemName, itemType: installedItem.itemType }
}).afterClosed().pipe( }).afterClosed();
mergeMap((confirmed) =>
confirmed
? this.iotHubApiService.deleteInstalledItem(installedItem.id.id).pipe(map(() => true))
: of(false) )
);
} }
installDevice(item: MpItemVersionView): Observable<string> { installDevice(item: MpItemVersionView): Observable<string> {

12
ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-delete-dialog.component.ts

@ -20,8 +20,11 @@ import { Router } from '@angular/router';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state'; import { AppState } from '@core/core.state';
import { DialogComponent } from '@shared/components/dialog.component'; import { DialogComponent } from '@shared/components/dialog.component';
import { IotHubInstalledItem } from 'src/app/shared/models/iot-hub/iot-hub-installed-item.models';
import { IotHubApiService } from '@core/http/iot-hub-api.service';
export interface IotHubDeleteDialogData { export interface IotHubDeleteDialogData {
installedItemId: string;
itemName: string; itemName: string;
itemType?: string; itemType?: string;
} }
@ -38,13 +41,18 @@ export class TbIotHubDeleteDialogComponent extends DialogComponent<TbIotHubDelet
protected store: Store<AppState>, protected store: Store<AppState>,
protected router: Router, protected router: Router,
protected dialogRef: MatDialogRef<TbIotHubDeleteDialogComponent, boolean>, protected dialogRef: MatDialogRef<TbIotHubDeleteDialogComponent, boolean>,
@Inject(MAT_DIALOG_DATA) public data: IotHubDeleteDialogData @Inject(MAT_DIALOG_DATA) public data: IotHubDeleteDialogData,
private iotHubApiService: IotHubApiService
) { ) {
super(store, router, dialogRef); super(store, router, dialogRef);
} }
confirm(): void { confirm(): void {
this.dialogRef.close(true); this.iotHubApiService.deleteInstalledItem(this.data.installedItemId).subscribe(
() => {
this.dialogRef.close(true);
}
);
} }
cancel(): void { cancel(): void {

6
ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-installed-items-table.component.ts

@ -156,12 +156,9 @@ export class TbIotHubInstalledItemsTableComponent implements OnInit, OnChanges,
} }
deleteItem(item: IotHubInstalledItem): void { deleteItem(item: IotHubInstalledItem): void {
this.isLoading = true;
this.iotHubActions.deleteItem(item).subscribe(deleted => { this.iotHubActions.deleteItem(item).subscribe(deleted => {
if (deleted) { if (deleted) {
this.loadData(); this.loadData();
} else {
this.isLoading = false;
} }
}); });
} }
@ -247,12 +244,9 @@ export class TbIotHubInstalledItemsTableComponent implements OnInit, OnChanges,
} }
updateItem(item: IotHubInstalledItem, publishedInfo: ItemPublishedVersionInfo): void { updateItem(item: IotHubInstalledItem, publishedInfo: ItemPublishedVersionInfo): void {
this.isLoading = true;
this.iotHubActions.updateItem(item, publishedInfo.publishedVersion, publishedInfo.publishedVersionId).subscribe(result => { this.iotHubActions.updateItem(item, publishedInfo.publishedVersion, publishedInfo.publishedVersionId).subscribe(result => {
if (result === 'updated') { if (result === 'updated') {
this.loadData(); this.loadData();
} else {
this.isLoading = false;
} }
}); });
} }

16
ui-ngx/src/app/shared/components/time-unit-input.component.ts

@ -206,15 +206,13 @@ export class TimeUnitInputComponent implements ControlValueAccessor, Validator,
writeValue(sec: number) { writeValue(sec: number) {
if (sec !== this.modelValue) { if (sec !== this.modelValue) {
if (isDefinedAndNotNull(sec) && isNumeric(sec) && Number(sec) !== 0) { if (isDefinedAndNotNull(sec) && isNumeric(sec) && Number(sec) !== 0) {
this.timeInputForm.patchValue(this.parseTime(sec), {emitEvent: true}); this.timeInputForm.patchValue(this.parseTime(sec), {emitEvent: false});
this.modelValue = sec; this.modelValue = sec;
} else { } else {
this.timeInputForm.patchValue({ this.timeInputForm.patchValue(this.secondsModel(0), {emitEvent: false});
time: 0,
timeUnit: TimeUnit.SECONDS
}, {emitEvent: false});
this.modelValue = 0; this.modelValue = 0;
} }
this.refreshTimeValidators();
} }
} }
@ -242,6 +240,14 @@ export class TimeUnitInputComponent implements ControlValueAccessor, Validator,
} }
} }
} }
return this.secondsModel(value);
}
private secondsModel(time: number): TimeUnitInputModel {
return {
time,
timeUnit: TimeUnit.SECONDS
};
} }
private createStepMultipleOfValidator(): ValidatorFn { private createStepMultipleOfValidator(): ValidatorFn {

Loading…
Cancel
Save