forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			31 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import IntValidator from "./IntValidator" | ||
|  | import { Translation } from "../../i18n/Translation" | ||
|  | import Translations from "../../i18n/Translations" | ||
|  | 
 | ||
|  | export default class NatValidator extends IntValidator { | ||
|  |     constructor(name?: string, explanation?: string) { | ||
|  |         super(name ?? "nat", explanation ?? "A  whole, positive number or zero") | ||
|  |     } | ||
|  | 
 | ||
|  |     isValid(str): boolean { | ||
|  |         if (str === undefined) { | ||
|  |             return false | ||
|  |         } | ||
|  |         str = "" + str | ||
|  | 
 | ||
|  |         return str.indexOf(".") < 0 && !isNaN(Number(str)) && Number(str) >= 0 | ||
|  |     } | ||
|  | 
 | ||
|  |     getFeedback(s: string): Translation { | ||
|  |         const spr = super.getFeedback(s) | ||
|  |         if (spr !== undefined) { | ||
|  |             return spr | ||
|  |         } | ||
|  |         const n = Number(s) | ||
|  |         if (n < 0) { | ||
|  |             return Translations.t.validation.nat.mustBePositive | ||
|  |         } | ||
|  |         return undefined | ||
|  |     } | ||
|  | } |