Browse Source

UI: Refactoring for error

pull/13092/head
Artem Dzhereleiko 2 years ago
parent
commit
98c91187ae
  1. 8
      ui-ngx/src/app/modules/home/components/widget/lib/settings/common/map/map-settings.component.html
  2. 2
      ui-ngx/src/app/shared/components/toggle-header.component.html
  3. 20
      ui-ngx/src/app/shared/components/toggle-header.component.ts
  4. 6
      ui-ngx/src/assets/locale/locale.constant-en_US.json

8
ui-ngx/src/app/modules/home/components/widget/lib/settings/common/map/map-settings.component.html

@ -41,10 +41,10 @@
</div> </div>
<tb-toggle-select [(ngModel)]="dataLayerMode" <tb-toggle-select [(ngModel)]="dataLayerMode"
[ngModelOptions]="{ standalone: true }"> [ngModelOptions]="{ standalone: true }">
<tb-toggle-option *ngIf="trip" value="trips" [error]="mapSettingsFormGroup.get('trips').invalid" errorText="widgets.maps.overlays.required-fields">{{ 'widgets.maps.overlays.trips' | translate }}</tb-toggle-option> <tb-toggle-option *ngIf="trip" value="trips" [error]="mapSettingsFormGroup.get('trips').invalid ? ('common.required-fields' | translate) : null">{{ 'widgets.maps.overlays.trips' | translate }}</tb-toggle-option>
<tb-toggle-option value="markers" [error]="mapSettingsFormGroup.get('markers').invalid" errorText="widgets.maps.overlays.required-fields">{{ 'widgets.maps.overlays.markers' | translate }}</tb-toggle-option> <tb-toggle-option value="markers" [error]="mapSettingsFormGroup.get('markers').invalid ? ('common.required-fields' | translate) : null">{{ 'widgets.maps.overlays.markers' | translate }}</tb-toggle-option>
<tb-toggle-option value="polygons" [error]="mapSettingsFormGroup.get('polygons').invalid" errorText="widgets.maps.overlays.required-fields">{{ 'widgets.maps.overlays.polygons' | translate }}</tb-toggle-option> <tb-toggle-option value="polygons" [error]="mapSettingsFormGroup.get('polygons').invalid ? ('common.required-fields' | translate) : null">{{ 'widgets.maps.overlays.polygons' | translate }}</tb-toggle-option>
<tb-toggle-option value="circles" [error]="mapSettingsFormGroup.get('circles').invalid" errorText="widgets.maps.overlays.required-fields">{{ 'widgets.maps.overlays.circles' | translate }}</tb-toggle-option> <tb-toggle-option value="circles" [error]="mapSettingsFormGroup.get('circles').invalid ? ('common.required-fields' | translate) : null">{{ 'widgets.maps.overlays.circles' | translate }}</tb-toggle-option>
</tb-toggle-select> </tb-toggle-select>
</div> </div>
<tb-map-data-layers *ngIf="trip" <tb-map-data-layers *ngIf="trip"

2
ui-ngx/src/app/shared/components/toggle-header.component.html

@ -45,7 +45,7 @@
{{ option.name }} {{ option.name }}
<mat-icon matTooltipPosition="above" <mat-icon matTooltipPosition="above"
matTooltipClass="tb-error-tooltip" matTooltipClass="tb-error-tooltip"
[matTooltip]="option.errorText | translate" [matTooltip]="option.error"
*ngIf="option.error && value !== option.value" *ngIf="option.error && value !== option.value"
class="tb-error tb-error-icon"> class="tb-error tb-error-icon">
warning warning

20
ui-ngx/src/app/shared/components/toggle-header.component.ts

@ -46,13 +46,12 @@ import { coerceBoolean } from '@shared/decorators/coercion';
import { startWith, takeUntil } from 'rxjs/operators'; import { startWith, takeUntil } from 'rxjs/operators';
import { Platform } from '@angular/cdk/platform'; import { Platform } from '@angular/cdk/platform';
import { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle'; import { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';
import { isDefinedAndNotNull } from '@core/utils'; import { isDefined } from '@core/utils';
export interface ToggleHeaderOption { export interface ToggleHeaderOption {
name: string; name: string;
value: any; value: any;
error?: boolean; error?: string;
errorText?: any;
} }
export type ToggleHeaderAppearance = 'fill' | 'fill-invert' | 'stroked'; export type ToggleHeaderAppearance = 'fill' | 'fill-invert' | 'stroked';
@ -70,11 +69,9 @@ export class ToggleOption implements OnChanges {
@Input() value: any; @Input() value: any;
@Input() error: boolean; @Input() error: string;
@Input() errorText: any; @Output() errorChange = new EventEmitter<string>();
@Output() errorChange = new EventEmitter<boolean>();
get viewValue(): string { get viewValue(): string {
return (this._element?.nativeElement.textContent || '').trim(); return (this._element?.nativeElement.textContent || '').trim();
@ -85,8 +82,8 @@ export class ToggleOption implements OnChanges {
) {} ) {}
ngOnChanges(changes: SimpleChanges) { ngOnChanges(changes: SimpleChanges) {
if (changes['error']) { if (changes?.error) {
if (!changes['error'].firstChange && changes['error'].currentValue !== changes['error'].previousValue) { if (!changes.error.firstChange && changes.error.currentValue !== changes.error.previousValue) {
this.errorChange.emit(this.error); this.errorChange.emit(this.error);
} }
} }
@ -121,7 +118,7 @@ export abstract class _ToggleBase extends PageComponent implements AfterContentI
private subscribeToToggleOptions() { private subscribeToToggleOptions() {
this.toggleOptions.forEach(option => { this.toggleOptions.forEach(option => {
if (isDefinedAndNotNull(option.error) || isDefinedAndNotNull(option.errorText)) { if (isDefined(option.error)) {
option.errorChange.pipe(takeUntil(this._destroyed)).subscribe(() => { option.errorChange.pipe(takeUntil(this._destroyed)).subscribe(() => {
this.syncToggleHeaderOptions(); this.syncToggleHeaderOptions();
}); });
@ -137,8 +134,7 @@ export abstract class _ToggleBase extends PageComponent implements AfterContentI
{ {
name: option.viewValue, name: option.viewValue,
value: option.value, value: option.value,
error: option.error, error: option.error
errorText: option.errorText
} }
); );
}); });

6
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -1137,7 +1137,8 @@
"key-required": "Key is required.", "key-required": "Key is required.",
"key-pattern": "Key is invalid.", "key-pattern": "Key is invalid.",
"key-max-length": "Key should be less than 256 characters." "key-max-length": "Key should be less than 256 characters."
} },
"required-fields": "Missing required fields"
}, },
"content-type": { "content-type": {
"json": "Json", "json": "Json",
@ -7980,8 +7981,7 @@
"trips": "Trips", "trips": "Trips",
"markers": "Markers", "markers": "Markers",
"polygons": "Polygons", "polygons": "Polygons",
"circles": "Circles", "circles": "Circles"
"required-fields": "Required fields are not filled in."
}, },
"data-layer": { "data-layer": {
"source": "Source", "source": "Source",

Loading…
Cancel
Save