From c6ab89a2629854320cc041e397969003ea25c240 Mon Sep 17 00:00:00 2001
From: kurilova
Date: Wed, 26 Mar 2025 10:40:39 +0000
Subject: [PATCH 1/2] Enable save button when optout field has changes
---
.../general-settings.component.html | 7 +++--
.../general-settings.component.ts | 30 +++++++++----------
2 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/modules/ui/src/app/pages/general-settings/general-settings.component.html b/modules/ui/src/app/pages/general-settings/general-settings.component.html
index 8485c5c3c..06df6b91f 100644
--- a/modules/ui/src/app/pages/general-settings/general-settings.component.html
+++ b/modules/ui/src/app/pages/general-settings/general-settings.component.html
@@ -109,7 +109,8 @@
!isFormValues ||
vm.isLessThanOneInterface ||
settingsDisable ||
- settingForm.pristine
+ (settingForm.pristine &&
+ (analyticsForm.pristine || !optOutHasChanges))
">
Save
@@ -171,8 +172,8 @@
-
-
+
+
Opt out from Google Analytics
diff --git a/modules/ui/src/app/pages/general-settings/general-settings.component.ts b/modules/ui/src/app/pages/general-settings/general-settings.component.ts
index 8ac79384a..fa55d9b79 100644
--- a/modules/ui/src/app/pages/general-settings/general-settings.component.ts
+++ b/modules/ui/src/app/pages/general-settings/general-settings.component.ts
@@ -30,7 +30,6 @@ import {
import { Subject, takeUntil, tap } from 'rxjs';
import { OnlyDifferentValuesValidator } from './only-different-values.validator';
import { CalloutType } from '../../model/callout-type';
-import { EventType } from '../../model/event-type';
import { FormKey, SystemConfig } from '../../model/setting';
import { GeneralSettingsStore } from './general-settings.store';
import { LoaderService } from '../../services/loader.service';
@@ -87,7 +86,6 @@ declare const gtag: Function;
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class GeneralSettingsComponent implements OnInit, OnDestroy {
- optOut = false;
private readonly fb = inject(FormBuilder);
private readonly onlyDifferentValuesValidator = inject(
OnlyDifferentValuesValidator
@@ -108,9 +106,9 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy {
}
}
public readonly CalloutType = CalloutType;
- public readonly EventType = EventType;
public readonly FormKey = FormKey;
public settingForm!: FormGroup;
+ public analyticsForm!: FormGroup;
public readonly Routes = Routes;
viewModel$ = this.settingsStore.viewModel$;
@@ -126,14 +124,6 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy {
return this.settingForm.get(FormKey.INTERNET) as FormControl;
}
- get logLevel(): FormControl {
- return this.settingForm.get(FormKey.LOG_LEVEL) as FormControl;
- }
-
- get monitorPeriod(): FormControl {
- return this.settingForm.get(FormKey.MONITOR_PERIOD) as FormControl;
- }
-
get isFormValues(): boolean {
return (
this.deviceControl?.value?.value &&
@@ -149,8 +139,13 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy {
return this.settingForm.hasError('hasSameValues');
}
+ get optOutHasChanges(): boolean {
+ return this.analyticsForm.value.optOut;
+ }
+
ngOnInit() {
this.createSettingForm();
+ this.createAnalyticsForm();
this.cleanFormErrorMessage();
this.settingsStore.getInterfaces();
this.getSystemConfig();
@@ -187,6 +182,7 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy {
} else {
this.createSystemConfig();
this.settingForm.markAsPristine();
+ this.analyticsForm.markAsPristine();
}
}
@@ -213,6 +209,12 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy {
);
}
+ private createAnalyticsForm() {
+ this.analyticsForm = this.fb.group({
+ optOut: new FormControl(false),
+ });
+ }
+
private setDefaultFormValues() {
this.settingsStore.setDefaultFormValues(this.settingForm);
}
@@ -244,14 +246,10 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy {
config: data,
});
gtag('consent', 'update', {
- analytics_storage: this.optOut ? 'denied' : 'granted',
+ analytics_storage: this.analyticsForm.value.optOut ? 'denied' : 'granted',
});
}
- private resetForm(): void {
- this.settingForm.reset();
- }
-
ngOnDestroy() {
this.destroy$.next(true);
this.destroy$.unsubscribe();
From 2d6be6603bb92f5c6a363f2e7427cfb25e692d5c Mon Sep 17 00:00:00 2001
From: kurilova
Date: Wed, 26 Mar 2025 12:29:54 +0000
Subject: [PATCH 2/2] Fix tests
---
.../pages/general-settings/general-settings.component.ts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/modules/ui/src/app/pages/general-settings/general-settings.component.ts b/modules/ui/src/app/pages/general-settings/general-settings.component.ts
index fa55d9b79..cc2878592 100644
--- a/modules/ui/src/app/pages/general-settings/general-settings.component.ts
+++ b/modules/ui/src/app/pages/general-settings/general-settings.component.ts
@@ -124,6 +124,14 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy {
return this.settingForm.get(FormKey.INTERNET) as FormControl;
}
+ get logLevel(): FormControl {
+ return this.settingForm.get(FormKey.LOG_LEVEL) as FormControl;
+ }
+
+ get monitorPeriod(): FormControl {
+ return this.settingForm.get(FormKey.MONITOR_PERIOD) as FormControl;
+ }
+
get isFormValues(): boolean {
return (
this.deviceControl?.value?.value &&