From 0d47e2358d3cf9ee4b6ca69325b9bd6b5db64386 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Fri, 15 Nov 2024 09:04:29 -0700
Subject: [PATCH] reset state on value change

---
 .../control-panel/control-panel.component.ts  | 28 +++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/projects/nshmp-apps/src/app/ncm/geophysical-profiles/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/ncm/geophysical-profiles/components/control-panel/control-panel.component.ts
index 884c79475..3f5409dd5 100644
--- a/projects/nshmp-apps/src/app/ncm/geophysical-profiles/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/ncm/geophysical-profiles/components/control-panel/control-panel.component.ts
@@ -1,4 +1,4 @@
-import {Component, computed, Signal} from '@angular/core';
+import {Component, computed, OnDestroy, OnInit, Signal} from '@angular/core';
 import {ReactiveFormsModule} from '@angular/forms';
 import {MatButtonModule} from '@angular/material/button';
 import {MatFormFieldModule} from '@angular/material/form-field';
@@ -19,6 +19,7 @@ import {Location} from '@ghsc/nshmp-utils-ts/libs/nshmp-lib/geo';
 import {NshmId} from '@ghsc/nshmp-utils-ts/libs/nshmp-lib/nshm';
 import {DoubleParameter} from '@ghsc/nshmp-utils-ts/libs/nshmp-ws-utils/metadata';
 import {environment} from 'projects/nshmp-apps/src/environments/environment';
+import {Subscription} from 'rxjs';
 
 import {AppService} from '../../services/app.service';
 
@@ -39,7 +40,7 @@ import {AppService} from '../../services/app.service';
   styleUrl: './control-panel.component.scss',
   templateUrl: './control-panel.component.html',
 })
-export class ControlPanelComponent {
+export class ControlPanelComponent implements OnInit, OnDestroy {
   formGroup = this.service.formGroup;
 
   parameters = computed(() => this.service.usage()?.response.parameters);
@@ -62,8 +63,31 @@ export class ControlPanelComponent {
     };
   });
 
+  private subs: Subscription[] = [];
+
   constructor(public service: AppService) {}
 
+  ngOnInit(): void {
+    const controls = this.formGroup.controls;
+
+    this.subs.push(
+      controls.depthInc.valueChanges.subscribe(() => this.service.resetState())
+    );
+    this.subs.push(
+      controls.depthMax.valueChanges.subscribe(() => this.service.resetState())
+    );
+    this.subs.push(
+      controls.depthMin.valueChanges.subscribe(() => this.service.resetState())
+    );
+    this.subs.push(
+      controls.locations.valueChanges.subscribe(() => this.service.resetState())
+    );
+  }
+
+  ngOnDestroy(): void {
+    this.subs.forEach(sub => sub.unsubscribe());
+  }
+
   removeLocation(index: number): void {
     this.formGroup.controls.locations.removeAt(index);
   }
-- 
GitLab