forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			29 lines
		
	
	
	
		
			857 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			857 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { Translation } from "../../i18n/Translation"
 | 
						|
import Translations from "../../i18n/Translations"
 | 
						|
import { Validator } from "../Validator"
 | 
						|
 | 
						|
export default class IntValidator extends Validator {
 | 
						|
    constructor(name?: string, explanation?: string) {
 | 
						|
        super(
 | 
						|
            name ?? "int",
 | 
						|
            explanation ?? "A whole number, either positive, negative or zero",
 | 
						|
            "numeric"
 | 
						|
        )
 | 
						|
    }
 | 
						|
 | 
						|
    isValid(str): boolean {
 | 
						|
        str = "" + str
 | 
						|
        return str !== undefined && str.indexOf(".") < 0 && !isNaN(Number(str))
 | 
						|
    }
 | 
						|
 | 
						|
    getFeedback(s: string): Translation {
 | 
						|
        const n = Number(s)
 | 
						|
        if (isNaN(n)) {
 | 
						|
            return Translations.t.validation.nat.notANumber
 | 
						|
        }
 | 
						|
        if (Math.floor(n) !== n) {
 | 
						|
            return Translations.t.validation.nat.mustBeWhole
 | 
						|
        }
 | 
						|
        return undefined
 | 
						|
    }
 | 
						|
}
 |