Skip to content

Commit

Permalink
PMW-4: Allow to add new planregistrations
Browse files Browse the repository at this point in the history
  • Loading branch information
geertplaisier committed May 8, 2024
1 parent dacc7a8 commit 6b0ca3b
Show file tree
Hide file tree
Showing 11 changed files with 172 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,18 @@ export class PlanmonitorWonenApiMockService implements PlanmonitorWonenApiServic
PlancategorieHelper.getNewPlancategorie({ ID: "2_3", Planregistratie_ID: "2", Woningtype: WoningtypeEnum.ONBEKEND, Totaal_Gepland: 25, Totaal_Gerealiseerd: 15 }),
]);
}
return of([
PlancategorieHelper.getNewPlancategorie({ ID: "1_NieuwbouwEnum_NIEUWBOUW", Planregistratie_ID: "1", Nieuwbouw: NieuwbouwEnum.NIEUWBOUW, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WoningtypeEnum_EENGEZINS", Planregistratie_ID: "1", Woningtype: WoningtypeEnum.EENGEZINS, Totaal_Gepland: 120, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WoningtypeEnum_MEERGEZINS", Planregistratie_ID: "1", Woningtype: WoningtypeEnum.MEERGEZINS, Totaal_Gepland: 80, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WoningtypeEnum_ONBEKEND", Planregistratie_ID: "1", Woningtype: WoningtypeEnum.ONBEKEND, Totaal_Gepland: 10, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_FlexwoningenEnum_FLEXWONINGEN", Planregistratie_ID: "1", Flexwoningen: FlexwoningenEnum.FLEXWONINGEN, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WonenEnZorgEnum_ZORGGESCHIKT", Planregistratie_ID: "1", WonenenZorg: WonenEnZorgEnum.ZORGGESCHIKT, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_BetaalbaarheidEnum_ONBEKEND_KOOP_OF_HUUR", Planregistratie_ID: "1", Betaalbaarheid: BetaalbaarheidEnum.ONBEKEND_KOOP_OF_HUUR, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
]);
if (id === "1") {
return of([
PlancategorieHelper.getNewPlancategorie({ ID: "1_NieuwbouwEnum_NIEUWBOUW", Planregistratie_ID: "1", Nieuwbouw: NieuwbouwEnum.NIEUWBOUW, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WoningtypeEnum_EENGEZINS", Planregistratie_ID: "1", Woningtype: WoningtypeEnum.EENGEZINS, Totaal_Gepland: 120, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WoningtypeEnum_MEERGEZINS", Planregistratie_ID: "1", Woningtype: WoningtypeEnum.MEERGEZINS, Totaal_Gepland: 80, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WoningtypeEnum_ONBEKEND", Planregistratie_ID: "1", Woningtype: WoningtypeEnum.ONBEKEND, Totaal_Gepland: 10, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_FlexwoningenEnum_FLEXWONINGEN", Planregistratie_ID: "1", Flexwoningen: FlexwoningenEnum.FLEXWONINGEN, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_WonenEnZorgEnum_ZORGGESCHIKT", Planregistratie_ID: "1", WonenenZorg: WonenEnZorgEnum.ZORGGESCHIKT, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
PlancategorieHelper.getNewPlancategorie({ ID: "1_BetaalbaarheidEnum_ONBEKEND_KOOP_OF_HUUR", Planregistratie_ID: "1", Betaalbaarheid: BetaalbaarheidEnum.ONBEKEND_KOOP_OF_HUUR, Totaal_Gepland: 210, Totaal_Gerealiseerd: 0 }),
]);
}
return of([]);
}

public getPlanDetailplanningen$(id: string): Observable<DetailplanningModel[]> {
Expand All @@ -111,15 +114,18 @@ export class PlanmonitorWonenApiMockService implements PlanmonitorWonenApiServic
{ ID: "2_3_3", Planregistratie_ID: "2", Creator: "test", Created: "2024-02-15", Edited: null, Editor: null, Aantal_Gepland: 25, Jaartal: 2026, Plancategorie_ID: "2_3" },
]);
}
return of([
{ ID: "1_NieuwbouwEnum_NIEUWBOUW_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_NieuwbouwEnum_NIEUWBOUW" },
{ ID: "1_WoningtypeEnum_EENGEZINS_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 120, Jaartal: 2026, Plancategorie_ID: "1_WoningtypeEnum_EENGEZINS" },
{ ID: "1_WoningtypeEnum_MEERGEZINS_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 80, Jaartal: 2027, Plancategorie_ID: "1_WoningtypeEnum_MEERGEZINS" },
{ ID: "1_WoningtypeEnum_ONBEKEND_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 10, Jaartal: 2028, Plancategorie_ID: "1_WoningtypeEnum_ONBEKEND" },
{ ID: "1_FlexwoningenEnum_FLEXWONINGEN_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_FlexwoningenEnum_FLEXWONINGEN" },
{ ID: "1_WonenEnZorgEnum_ZORGGESCHIKT_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_WonenEnZorgEnum_ZORGGESCHIKT" },
{ ID: "1_BetaalbaarheidEnum_ONBEKEND_KOOP_OF_HUUR_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_BetaalbaarheidEnum_ONBEKEND_KOOP_OF_HUUR" },
]);
if (id === "1") {
return of([
{ ID: "1_NieuwbouwEnum_NIEUWBOUW_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_NieuwbouwEnum_NIEUWBOUW" },
{ ID: "1_WoningtypeEnum_EENGEZINS_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 120, Jaartal: 2026, Plancategorie_ID: "1_WoningtypeEnum_EENGEZINS" },
{ ID: "1_WoningtypeEnum_MEERGEZINS_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 80, Jaartal: 2027, Plancategorie_ID: "1_WoningtypeEnum_MEERGEZINS" },
{ ID: "1_WoningtypeEnum_ONBEKEND_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 10, Jaartal: 2028, Plancategorie_ID: "1_WoningtypeEnum_ONBEKEND" },
{ ID: "1_FlexwoningenEnum_FLEXWONINGEN_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_FlexwoningenEnum_FLEXWONINGEN" },
{ ID: "1_WonenEnZorgEnum_ZORGGESCHIKT_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_WonenEnZorgEnum_ZORGGESCHIKT" },
{ ID: "1_BetaalbaarheidEnum_ONBEKEND_KOOP_OF_HUUR_detail", Planregistratie_ID: "1", Creator: "test", Created: "2024-04-17", Edited: null, Editor: null, Aantal_Gepland: 210, Jaartal: 2026, Plancategorie_ID: "1_BetaalbaarheidEnum_ONBEKEND_KOOP_OF_HUUR" },
]);
}
return of([]);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,5 @@ export interface PlanregistratieModel {
Beoogd_Woonmilieu_ABF13: WoonmilieuABF13Enum;
Aantal_Studentenwoningen: number;
Toelichting_Kwalitatief: string;
IsNew?: boolean;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
mat-button-toggle-group {
--mat-standard-button-toggle-height: 40px;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<mat-button-toggle-group (change)="toggleChanged($event)" [value]="activeToggle$ | async">
<mat-button-toggle value="create">Plan intekenen</mat-button-toggle>
<mat-button-toggle value="edit">Plan bewerken</mat-button-toggle>
</mat-button-toggle-group>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { Component, ChangeDetectionStrategy } from '@angular/core';
import { MatButtonToggleChange } from '@angular/material/button-toggle';
import { PlanregistratiesService } from '../services/planregistraties.service';
import { map, Observable } from 'rxjs';

@Component({
selector: 'lib-planmonitor-toggle',
templateUrl: './planmonitor-toggle.component.html',
styleUrls: ['./planmonitor-toggle.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class PlanmonitorToggleComponent {

public activeToggle$: Observable<string>;

constructor(
private planregistratieService: PlanregistratiesService,
) {
this.activeToggle$ = this.planregistratieService.isCreatingNewPlan$()
.pipe(map(creatingNewPlan => creatingNewPlan ? 'create' : 'edit'));
}

public toggleChanged($event: MatButtonToggleChange) {
this.planregistratieService.setCreateNewPlan($event.value === 'create');
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ import { BaseComponentConfigComponent, ConfigurationComponentRegistryService } f
import { PLANMONITOR_WONEN_COMPONENT_ID } from './models/planmonitor-wonen-component-id';
import { PlanregistratiesMapComponent } from './planregistraties-map/planregistraties-map.component';
import { ComponentRegistrationService } from '@tailormap-viewer/core';
import { PLANMONITOR_WONEN_API_SERVICE } from './services/planmonitor-wonen-api.service.injection-token';
import { PlanmonitorWonenApiMockService } from './services/planmonitor-wonen-api-mock.service';
import { PLANMONITOR_WONEN_API_SERVICE } from './api/planmonitor-wonen-api.service.injection-token';
import { PlanmonitorWonenApiMockService } from './api/planmonitor-wonen-api-mock.service';
import { PlanregistratieDialogComponent } from './planregistratie-dialog/planregistratie-dialog.component';
import { SharedModule } from '@tailormap-viewer/shared';
import { PlanregistratieFormComponent } from './planregistratie-form/planregistratie-form.component';
import { PlancategorieListComponent } from './plancategorie-list/plancategorie-list.component';
import { PlanmonitorToggleComponent } from './planmonitor-toggle/planmonitor-toggle.component';



Expand All @@ -19,6 +20,7 @@ import { PlancategorieListComponent } from './plancategorie-list/plancategorie-l
PlanregistratieDialogComponent,
PlanregistratieFormComponent,
PlancategorieListComponent,
PlanmonitorToggleComponent,
],
imports: [
CommonModule,
Expand All @@ -35,5 +37,6 @@ export class PlanmonitorWonenModule {
) {
adminRegistryService.registerConfigurationComponents(PLANMONITOR_WONEN_COMPONENT_ID, 'Planmonitor wonen', BaseComponentConfigComponent);
viewerRegistryService.registerComponent("map", { type: PLANMONITOR_WONEN_COMPONENT_ID, component: PlanregistratiesMapComponent }, true);
viewerRegistryService.registerComponent("map-controls-left", { type: PLANMONITOR_WONEN_COMPONENT_ID + '_toggle', component: PlanmonitorToggleComponent }, true);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { Component, OnInit, ChangeDetectionStrategy, DestroyRef } from '@angular/core';
import { ChangeDetectionStrategy, Component, DestroyRef, OnInit } from '@angular/core';
import {
MapService, MapStyleModel, ModifyEnableToolArguments, ModifyToolConfigModel, ModifyToolModel, SelectToolConfigModel, SelectToolModel,
ToolTypeEnum,
DrawingEnableToolArguments,
DrawingToolConfigModel, DrawingToolModel, MapService, MapStyleModel, ModifyEnableToolArguments, ModifyToolConfigModel, ModifyToolModel,
SelectToolConfigModel, SelectToolModel, ToolTypeEnum,
} from '@tailormap-viewer/map';
import { combineLatest, distinctUntilChanged, map, Observable, switchMap, tap, withLatestFrom } from 'rxjs';
import { PlanregistratieModel } from '../models';
import { PlanregistratieModel, PlantypeEnum } from '../models';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { PlanregistratiesService } from '../services/planregistraties.service';
import { CssHelper } from '@tailormap-viewer/shared';
Expand All @@ -25,6 +26,7 @@ export class PlanregistratiesMapComponent implements OnInit {
private static PRIMARY_COLOR = '';
private selectTool: SelectToolModel | undefined;
private modifyTool: ModifyToolModel | undefined;
private addFeatureTool: DrawingToolModel | undefined;

constructor(
private planregistratieService: PlanregistratiesService,
Expand All @@ -37,6 +39,7 @@ export class PlanregistratiesMapComponent implements OnInit {
this.renderFeatures();
this.createSelectTool();
this.createModifyTool();
this.createAddFeatureTool();
this.toggleTools();
}

Expand All @@ -59,15 +62,15 @@ export class PlanregistratiesMapComponent implements OnInit {
this.mapService.renderFeatures$<PlanregistratieFeatureAttributes>(
PlanregistratiesMapComponent.LAYER_ID,
planregistratieFeatures$,
feature => PlanregistratiesMapComponent.getFeatureStyle(feature.attributes),
feature => PlanregistratiesMapComponent.getFeatureStyle(feature.attributes.Plantype, feature.attributes.selected),
).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
}

private createSelectTool() {
this.mapService.createTool$<SelectToolModel<PlanregistratieFeatureAttributes>, SelectToolConfigModel<PlanregistratieFeatureAttributes>>({
type: ToolTypeEnum.Select,
layers: [PlanregistratiesMapComponent.LAYER_ID],
style: feature => PlanregistratiesMapComponent.getFeatureStyle(feature.attributes, true),
style: feature => PlanregistratiesMapComponent.getFeatureStyle(feature.attributes.Plantype, true),
})
.pipe(
takeUntilDestroyed(this.destroyRef),
Expand Down Expand Up @@ -97,6 +100,21 @@ export class PlanregistratiesMapComponent implements OnInit {
});
}

private createAddFeatureTool() {
this.mapService.createTool$<DrawingToolModel, DrawingToolConfigModel>({
type: ToolTypeEnum.Draw,
style: PlanregistratiesMapComponent.getFeatureStyle(PlantypeEnum.UITBREIDING_OVERIG),
})
.pipe(
takeUntilDestroyed(this.destroyRef),
tap(({ tool }) => this.addFeatureTool = tool),
switchMap(({ tool }) => tool.drawEnd$),
)
.subscribe(drawEvent => {
this.planregistratieService.setNewFeatureGeometry(drawEvent.geometry);
});
}

private toggleTools() {
this.planregistratieService.getSelectedPlanregistratie$()
.pipe(
Expand All @@ -115,10 +133,26 @@ export class PlanregistratiesMapComponent implements OnInit {
toolManager.disableTool(this.modifyTool.id, true);
toolManager.enableTool<ModifyEnableToolArguments>(this.modifyTool.id, false, {
geometry: selectedPlan.GEOM,
style: PlanregistratiesMapComponent.getFeatureStyle(selectedPlan, true),
style: PlanregistratiesMapComponent.getFeatureStyle(selectedPlan.Plantype, true),
});
}
});
this.planregistratieService.isCreatingNewPlan$()
.pipe(
takeUntilDestroyed(this.destroyRef),
distinctUntilChanged(),
withLatestFrom(this.mapService.getToolManager$()),
)
.subscribe(([ isCreatingNew, toolManager ]) => {
if (!this.addFeatureTool) {
return;
}
if (isCreatingNew) {
toolManager.enableTool<DrawingEnableToolArguments>(this.addFeatureTool.id, true, { type: 'area' });
} else {
toolManager.disableTool(this.addFeatureTool.id, false);
}
});
this.planregistratieService.hasChanges$()
.pipe(
takeUntilDestroyed(this.destroyRef),
Expand All @@ -137,16 +171,16 @@ export class PlanregistratiesMapComponent implements OnInit {
});
}

private static getFeatureStyle(attributes: PlanregistratieFeatureAttributes, alwaysHighlighted = false): MapStyleModel {
const selected = attributes.selected || alwaysHighlighted;
private static getFeatureStyle(planType: PlantypeEnum, selected = false): MapStyleModel {
// const selected = attributes.selected || alwaysHighlighted;
return {
zIndex: selected ? 9999 : 9998,
strokeColor: selected ? PlanregistratiesMapComponent.PRIMARY_COLOR : 'rgb(0, 0, 0)',
strokeWidth: selected ? 6 : 1,
fillColor: PlantypeHelper.getPlantypeColor(attributes.Plantype),
fillColor: PlantypeHelper.getPlantypeColor(planType),
fillOpacity: 50,
pointType: 'square',
pointFillColor: PlantypeHelper.getPlantypeColor(attributes.Plantype),
pointFillColor: PlantypeHelper.getPlantypeColor(planType),
styleKey: 'planmonitor-highlight-style',
};
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import { Inject, Injectable } from '@angular/core';
import { PLANMONITOR_WONEN_API_SERVICE } from './planmonitor-wonen-api.service.injection-token';
import { PlanmonitorWonenApiServiceModel } from './planmonitor-wonen-api.service.model';
import { PLANMONITOR_WONEN_API_SERVICE } from '../api/planmonitor-wonen-api.service.injection-token';
import { PlanmonitorWonenApiServiceModel } from '../api/planmonitor-wonen-api.service.model';
import { BehaviorSubject, catchError, combineLatest, debounceTime, forkJoin, map, Observable, of, take, tap } from 'rxjs';
import { DetailplanningModel, PlancategorieModel, PlanregistratieModel } from '../models';
import {
DetailplanningModel, EigendomEnum, KnelpuntenMeerkeuzeEnum, KnelpuntenPlantypeEnum, OpdrachtgeverEnum, PlancategorieModel,
PlanregistratieModel, PlantypeEnum, ProjectstatusEnum, StatusPlanologischEnum, VertrouwelijkheidEnum, WoonmilieuABF13Enum,
WoonmilieuABF5Enum,
} from '../models';
import { LoadingStateEnum } from '@tailormap-viewer/shared';
import { PlancategorieHelper } from '../helpers/plancategorie.helper';
import { nanoid } from 'nanoid';
Expand All @@ -29,6 +33,7 @@ export class PlanregistratiesService {
public validChangedPlan$: Observable<boolean>;
private hasTableChanges = new BehaviorSubject<boolean>(false);
private hasFormChanges = new BehaviorSubject<boolean>(false);
private creatingNewPlan = new BehaviorSubject<boolean>(false);

constructor(
@Inject(PLANMONITOR_WONEN_API_SERVICE) private api: PlanmonitorWonenApiServiceModel,
Expand Down Expand Up @@ -94,6 +99,10 @@ export class PlanregistratiesService {
]).pipe(map(([ tableChanges, formChanges ]) => tableChanges || formChanges));
}

public isCreatingNewPlan$(): Observable<boolean> {
return this.creatingNewPlan.asObservable();
}

public setSelectedPlanregistratie(id: string | null) {
const registratie = id === null ? null : this.planRegistraties.value.find(p => p.ID === id);
this.selectedPlanregistratie.next(registratie || null);
Expand All @@ -104,6 +113,14 @@ export class PlanregistratiesService {
}
this.hasFormChanges.next(false);
this.hasTableChanges.next(false);
this.creatingNewPlan.next(false);
}

public setCreateNewPlan(createNewPlan: boolean) {
if (createNewPlan) {
this.setSelectedPlanregistratie(null);
}
this.creatingNewPlan.next(createNewPlan);
}

private loadRegistraties() {
Expand Down Expand Up @@ -149,6 +166,49 @@ export class PlanregistratiesService {
});
}

public setNewFeatureGeometry(geometry: string) {
const newPlan: PlanregistratieModel = {
ID: nanoid(),
GEOM: geometry,
Created: new Date(),
Creator: "",
Edited: null,
Editor: null,
Opdrachtgever_Naam: "",
Plannaam: "",
Bestemmingsplan: "",
Gemeente: "",
Regio: "",
Plaatsnaam: "",
Provincie: "",
Opmerkingen: "",
Levensloopbestendig_Ja: 0,
Levensloopbestendig_Nee: 0,
Oplevering_Eerste: 0,
Oplevering_Laatste: 0,
Flexwoningen: 0,
Aantal_Studentenwoningen: 0,
Jaar_Start_Project: (new Date()).getFullYear(),
Plantype: PlantypeEnum.UITBREIDING_UITLEG,
Beoogd_Woonmilieu_ABF13: WoonmilieuABF13Enum.DORPS,
Beoogd_Woonmilieu_ABF5: WoonmilieuABF5Enum.DORPS,
Opdrachtgever_Type: OpdrachtgeverEnum.GEMEENTE,
Knelpunten_Meerkeuze: KnelpuntenMeerkeuzeEnum.ANDERS,
Regionale_Planlijst: EigendomEnum.ONBEKEND,
Vertrouwelijkheid: VertrouwelijkheidEnum.GEMEENTE,
Status_Planologisch: StatusPlanologischEnum.IN_VOORBEREIDING,
Status_Project: ProjectstatusEnum.ONBEKEND,
Toelichting_Knelpunten: KnelpuntenPlantypeEnum.ONBEKEND,
Toelichting_Kwalitatief: "",
IsNew: true,
};
this.planRegistraties.next([
...this.planRegistraties.value,
newPlan,
]);
this.setSelectedPlanregistratie(newPlan.ID);
}

public save$() {
const updatedPlan = this.selectedPlanregistratie.value;
if (updatedPlan === null) {
Expand Down

0 comments on commit 6b0ca3b

Please sign in to comment.