Przeglądaj źródła

Better validation for tracks and events

Lukas Angerer 2 lat temu
rodzic
commit
49a9868cfa

+ 1 - 1
src/RunnersMeet.Client/src/app/events/event-edit/event-edit.component.html

@@ -5,7 +5,7 @@
 		<span class="p-float-label">
 			<input type="text" pInputText
 				id="title" name="title" [(ngModel)]="event.title"
-				required>
+				required minlength="5">
 			<label for="title">Title</label>
 		</span>
 	</div>

+ 2 - 2
src/RunnersMeet.Client/src/app/tracks/track-edit/track-edit.component.html

@@ -15,10 +15,10 @@
 </dl>
 
 <h1>Edit Track Details</h1>
-<form class="vertical-form" (ngSubmit)="updateTrack($event)" *ngIf="track">
+<form #mainForm="ngForm" class="vertical-form" (ngSubmit)="updateTrack(mainForm, $event)" *ngIf="track">
 	<div class="form-field form-field--full-width">
 		<span class="p-float-label">
-			<input type="text" pInputText id="displayName" name="displayName" [(ngModel)]="track.displayName">
+			<input type="text" pInputText id="displayName" name="displayName" [(ngModel)]="track.displayName" required minlength="5">
 			<label for="displayName">Title</label>
 		</span>
 	</div>

+ 6 - 1
src/RunnersMeet.Client/src/app/tracks/track-edit/track-edit.component.ts

@@ -2,6 +2,7 @@ import { Component, Input, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
 import { TracksApiService } from 'src/app/tracks-api.service';
 import { Track } from '../track';
+import { NgForm } from '@angular/forms';
 
 @Component({
   selector: 'app-track-edit',
@@ -25,7 +26,11 @@ export class TrackEditComponent implements OnInit {
 		});
 	}
 
-	public updateTrack(event: SubmitEvent): void {
+	public updateTrack(form: NgForm, event: SubmitEvent): void {
+		if (!form.valid) {
+			return;
+		}
+
 		if (this.track) {
 			this.tracksApi.updateTrack(this.track).then(result => {
 				this.track = result;

+ 3 - 0
src/RunnersMeet.Server/Domain/EventData.cs

@@ -1,3 +1,4 @@
+using System.ComponentModel.DataAnnotations;
 using LiteDB;
 
 namespace RunnersMeet.Server.Domain;
@@ -6,6 +7,8 @@ public class EventData
 {
 	public DateTime StartTime { get; set; }
 
+	[Required]
+	[MinLength(5)]
 	public string Title { get; set; } = String.Empty;
 
 	public string Description { get; set; } = String.Empty;

+ 4 - 0
src/RunnersMeet.Server/Domain/Track.cs

@@ -1,5 +1,7 @@
 // ReSharper disable UnusedAutoPropertyAccessor.Global
 // ReSharper disable PropertyCanBeMadeInitOnly.Global
+
+using System.ComponentModel.DataAnnotations;
 using LiteDB;
 
 namespace RunnersMeet.Server.Domain;
@@ -15,6 +17,8 @@ public class Track : IUserData
 	/// </summary>
 	public string OwnerId { get; set; } = String.Empty;
 	public string FileHash { get; set; } = String.Empty;
+	[Required]
+	[MinLength(5)]
 	public string DisplayName { get; set; } = String.Empty;
 	public string Description { get; set; } = String.Empty;
 	public double Distance { get; set; }