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
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |