Commit 5d38ccdf authored by Diogo Santos's avatar Diogo Santos
Browse files

Improved logic of Range Interval checkbox

parent db749c89
Loading
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -130,8 +130,7 @@
                    
                                </div>
                            </div>

                            <ng-container *ngIf="isRangeIntervalChecked[i]">
                            <ng-container *ngIf="val.get('rangeInterval')?.value === 'closed'">
                                <mat-form-field class="col-lg-2 mt-2">
                                    <mat-label>Value From</mat-label>
                                    <input matInput formControlName="valueFrom">
@@ -161,8 +160,8 @@
                                                 subValueTypeCtrl.value === 'SMALLINT'                          ||
                                                 subValueTypeCtrl.value === 'LONGINT'">
                                <div class="col-lg-2 text-center mt-2">
                                    <mat-checkbox color="primary" (change)="toggleRangeInterval(i)">Range
                                        Interval
                                    <mat-checkbox color="primary" formControlName="rangeInterval" (change)="rangeIntervalCheckboxChanged(i, $event)">
                                        Range Interval
                                    </mat-checkbox>
                                </div>
                            </ng-container>
@@ -196,7 +195,7 @@
                                </mat-form-field>
                            </div>

                            <ng-container *ngIf="isRangeIntervalChecked[i]">
                            <ng-container *ngIf="val.get('rangeInterval')?.value === 'closed'">
                                <mat-form-field class="col-lg-2 mt-2 order-2 order-md-3">
                                    <mat-label>Value From</mat-label>
                                    <input matInput formControlName="valueFrom">
@@ -226,8 +225,8 @@
                                                 subValueTypeCtrl.value === 'SMALLINT'                          ||
                                                 subValueTypeCtrl.value === 'LONGINT'">
                                <div class="col-lg-2 text-center mt-2 order-5">
                                    <mat-checkbox color="primary" formControlName="rangeInterval" (change)="toggleRangeInterval(i)">Range 
                                        Interval
                                    <mat-checkbox color="primary" formControlName="rangeInterval" (change)="rangeIntervalCheckboxChanged(i, $event)">
                                        Range Interval
                                    </mat-checkbox>
                                </div>
                            </ng-container>
+8 −21
Original line number Diff line number Diff line
@@ -58,8 +58,6 @@ export class EditServiceSpecCharacteristicsComponent implements OnInit {

  isCharValueBlockExpanded: boolean[] = []

  isRangeIntervalChecked: boolean[] = []

  ngOnInit() {
    if (this.data.specToBeUpdated) {
      if (!this.data.specToBeUpdated.validFor) this.data.specToBeUpdated.validFor = {endDateTime:null, startDateTime:null}
@@ -69,7 +67,6 @@ export class EditServiceSpecCharacteristicsComponent implements OnInit {
      this.data.specToBeUpdated.serviceSpecCharacteristicValue.forEach( val => {
        formArray.push(this.updateFormArrayItem(val))
        this.isCharValueBlockExpanded.push(false)
        this.isRangeIntervalChecked.push(false)
      })

      this.subValueTypeCtrl.patchValue(this.data.specToBeUpdated.serviceSpecCharacteristicValue[0].valueType)
@@ -123,7 +120,6 @@ export class EditServiceSpecCharacteristicsComponent implements OnInit {


  updateFormArrayItem(CharValue: ServiceSpecCharacteristicValue): UntypedFormGroup {
    const rangeInterval = CharValue.valueFrom != null || CharValue.valueTo != null ? "closed" : null
    return new UntypedFormGroup({
      value: new UntypedFormGroup({
        alias: new UntypedFormControl(CharValue.value.alias),
@@ -134,7 +130,7 @@ export class EditServiceSpecCharacteristicsComponent implements OnInit {
      valueType: new UntypedFormControl(CharValue.valueType),
      valueFrom: new UntypedFormControl(CharValue.valueFrom),
      valueTo: new UntypedFormControl(CharValue.valueTo),
      rangeInterval: new UntypedFormControl(rangeInterval)
      rangeInterval: new UntypedFormControl(CharValue.rangeInterval)
    })
  }

@@ -166,24 +162,18 @@ export class EditServiceSpecCharacteristicsComponent implements OnInit {
    )

    this.isCharValueBlockExpanded.push(false)
    this.isRangeIntervalChecked.push(false)
  }

  deleteFormArrayItem(index) {
    const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as UntypedFormArray
    formArray.removeAt(index)
    this.isCharValueBlockExpanded.splice(index, 1)
    this.isRangeIntervalChecked.splice(index, 1)
  }

  expandCharValueBlock(index) {
    this.isCharValueBlockExpanded[index] = !this.isCharValueBlockExpanded[index] 
  }

  toggleRangeInterval(index) {
    this.isRangeIntervalChecked[index] = !this.isRangeIntervalChecked[index]
  }

  isDefaultCheckboxChanged(index, event: MatCheckboxChange) {
    if (this.editFormCharacteristic.get('valueType').value === "ENUM" && event.checked) {
      const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as UntypedFormArray
@@ -193,6 +183,11 @@ export class EditServiceSpecCharacteristicsComponent implements OnInit {
    }
  }

  rangeIntervalCheckboxChanged(index, event: MatCheckboxChange) {
    const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as UntypedFormArray
    formArray.at(index).get('rangeInterval')?.setValue(event.checked ? 'closed' : null);
  }

  closeDialog() { 
    this.dialogRef.close()
  }
@@ -200,15 +195,7 @@ export class EditServiceSpecCharacteristicsComponent implements OnInit {
  submitDialog() {
    
    if (this.newSpec) {
      const specChar = this.editFormCharacteristic.getRawValue();
      // rangeInterval should not be null for integer characteristics in order to be validated by the API.
      // Without this code rangeInterval would be null and therefore no validation would be done.
      specChar.serviceSpecCharacteristicValue.forEach(value => {
        if (value.valueFrom != null || value.valueTo != null) {
          value.rangeInterval = 'closed';
        }
      });
      this.data.serviceSpec.serviceSpecCharacteristic.push(specChar);
      this.data.serviceSpec.serviceSpecCharacteristic.push(this.editFormCharacteristic.getRawValue())
    } else {
      const updateCharacteristIndex = this.data.serviceSpec.serviceSpecCharacteristic.findIndex(char => char.id === this.data.specToBeUpdated.id)
      this.data.serviceSpec.serviceSpecCharacteristic[updateCharacteristIndex] = this.editFormCharacteristic.getRawValue()