Browse Source

UI: Refactoring

pull/9484/head
Artem Dzhereleiko 3 years ago
parent
commit
e35e8e7a21
  1. 29
      ui-ngx/src/app/modules/home/components/widget/lib/settings/common/color-range-list.component.ts
  2. 6
      ui-ngx/src/app/modules/home/components/widget/lib/settings/common/color-range-panel.component.ts
  3. 44
      ui-ngx/src/app/modules/home/components/widget/lib/settings/common/color-settings-panel.component.ts

29
ui-ngx/src/app/modules/home/components/widget/lib/settings/common/color-range-list.component.ts

@ -14,7 +14,7 @@
/// limitations under the License. /// limitations under the License.
/// ///
import { Component, forwardRef, Input, OnInit } from '@angular/core'; import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';
import { import {
AbstractControl, AbstractControl,
ControlValueAccessor, ControlValueAccessor,
@ -24,9 +24,10 @@ import {
UntypedFormBuilder, UntypedFormBuilder,
UntypedFormGroup UntypedFormGroup
} from '@angular/forms'; } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { ColorRange } from '@shared/models/widget-settings.models'; import { ColorRange } from '@shared/models/widget-settings.models';
import { TbPopoverComponent } from '@shared/components/popover.component'; import { TbPopoverComponent } from '@shared/components/popover.component';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({ @Component({
selector: 'tb-color-range-list', selector: 'tb-color-range-list',
@ -40,9 +41,10 @@ import { TbPopoverComponent } from '@shared/components/popover.component';
} }
] ]
}) })
export class ColorRangeListComponent implements OnInit, ControlValueAccessor { export class ColorRangeListComponent implements OnInit, ControlValueAccessor, OnDestroy {
@Input() disabled: boolean; @Input()
disabled: boolean;
@Input() @Input()
popover: TbPopoverComponent; popover: TbPopoverComponent;
@ -54,23 +56,26 @@ export class ColorRangeListComponent implements OnInit, ControlValueAccessor {
colorRangeListFormGroup: UntypedFormGroup; colorRangeListFormGroup: UntypedFormGroup;
private propagateChange = null; private destroy$ = new Subject<void>();
constructor(private fb: UntypedFormBuilder, private propagateChange = null;
public dialog: MatDialog) {
} constructor(private fb: UntypedFormBuilder) {}
ngOnInit(): void { ngOnInit(): void {
this.colorRangeListFormGroup = this.fb.group({ this.colorRangeListFormGroup = this.fb.group({
rangeList: this.fb.array([]) rangeList: this.fb.array([])
}); });
this.colorRangeListFormGroup.valueChanges.subscribe(() => { this.colorRangeListFormGroup.valueChanges.pipe(
this.updateModel(); takeUntil(this.destroy$)
}); ).subscribe(() => this.updateModel());
} }
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
registerOnChange(fn: any): void { registerOnChange(fn: any): void {
this.propagateChange = fn; this.propagateChange = fn;
@ -89,7 +94,7 @@ export class ColorRangeListComponent implements OnInit, ControlValueAccessor {
} }
} }
private colorRangeControl(range: ColorRange): AbstractControl { private colorRangeControl(range: ColorRange): UntypedFormGroup {
return this.fb.group({ return this.fb.group({
from: [range?.from, []], from: [range?.from, []],
to: [range?.to, []], to: [range?.to, []],

6
ui-ngx/src/app/modules/home/components/widget/lib/settings/common/color-range-panel.component.ts

@ -55,11 +55,9 @@ export class ColorRangePanelComponent extends PageComponent implements OnInit {
} }
ngOnInit(): void { ngOnInit(): void {
this.colorRangeFormGroup = this.fb.group( this.colorRangeFormGroup = this.fb.group({
{
rangeList: [this.colorRangeSettings, []] rangeList: [this.colorRangeSettings, []]
} });
);
} }
copyColorSettings(comp: ColorRangeSettingsComponent) { copyColorSettings(comp: ColorRangeSettingsComponent) {

44
ui-ngx/src/app/modules/home/components/widget/lib/settings/common/color-settings-panel.component.ts

@ -16,9 +16,9 @@
import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core'; import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';
import { PageComponent } from '@shared/components/page.component'; import { PageComponent } from '@shared/components/page.component';
import { ColorRange, ColorSettings, ColorType, colorTypeTranslations } from '@shared/models/widget-settings.models'; import { ColorSettings, ColorType, colorTypeTranslations } from '@shared/models/widget-settings.models';
import { TbPopoverComponent } from '@shared/components/popover.component'; import { TbPopoverComponent } from '@shared/components/popover.component';
import { AbstractControl, FormGroup, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state'; import { AppState } from '@core/core.state';
import { deepClone } from '@core/utils'; import { deepClone } from '@core/utils';
@ -76,51 +76,15 @@ export class ColorSettingsPanelComponent extends PageComponent implements OnInit
}); });
} }
private colorRangeControl(range: ColorRange): AbstractControl {
return this.fb.group({
from: [range?.from, []],
to: [range?.to, []],
color: [range?.color, []]
});
}
get rangeListFormArray(): UntypedFormArray {
return this.colorSettingsFormGroup.get('rangeList') as UntypedFormArray;
}
get rangeListFormGroups(): FormGroup[] {
return this.rangeListFormArray.controls as FormGroup[];
}
trackByRange(index: number, rangeControl: AbstractControl): any {
return rangeControl;
}
removeRange(index: number) {
this.rangeListFormArray.removeAt(index);
this.colorSettingsFormGroup.markAsDirty();
setTimeout(() => {this.popover?.updatePosition();}, 0);
}
addRange() {
const newRange: ColorRange = {
color: 'rgba(0,0,0,0.87)'
};
this.rangeListFormArray.push(this.colorRangeControl(newRange));
this.colorSettingsFormGroup.markAsDirty();
setTimeout(() => {this.popover?.updatePosition();}, 0);
}
copyColorSettings(comp: ColorSettingsComponent) { copyColorSettings(comp: ColorSettingsComponent) {
const sourceSettings = deepClone(comp.modelValue); const sourceSettings = deepClone(comp.modelValue);
this.colorSettings = sourceSettings; this.colorSettings = sourceSettings;
this.colorSettingsFormGroup.patchValue({ this.colorSettingsFormGroup.patchValue({
type: this.colorSettings.type, type: this.colorSettings.type,
color: this.colorSettings.color, color: this.colorSettings.color,
colorFunction: this.colorSettings.colorFunction colorFunction: this.colorSettings.colorFunction,
rangeList: this.colorSettings.rangeList || []
}, {emitEvent: false}); }, {emitEvent: false});
this.colorSettingsFormGroup.setControl('rangeList',
this.fb.array((this.colorSettings.rangeList || []).map(r => this.colorRangeControl(r))), {emitEvent: false});
this.colorSettingsFormGroup.markAsDirty(); this.colorSettingsFormGroup.markAsDirty();
} }

Loading…
Cancel
Save