X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Futils%2FtimeControl.js;h=97d5ab6a1eff001115811a09a4fde0e678d6bc98;hb=e50a802531b99829c533f22ecd21e359e7e1e049;hp=6d47aac896fdb167b7f598a06c5e88d355866f86;hpb=714680114508183fba2c07231dbe8f90b5631b81;p=vchess.git diff --git a/client/src/utils/timeControl.js b/client/src/utils/timeControl.js index 6d47aac8..97d5ab6a 100644 --- a/client/src/utils/timeControl.js +++ b/client/src/utils/timeControl.js @@ -1,49 +1,48 @@ -function timeUnitToSeconds(value, unit) -{ +function timeUnitToSeconds(value, unit) { let seconds = value; - switch (unit) - { - case 'd': - seconds *= 24; - case 'h': - seconds *= 60; - case 'm': + switch (unit) { + case "d": + seconds *= 86400; //24*60*60 + break; + case "h": + seconds *= 3600; + break; + case "m": seconds *= 60; + break; } return seconds; } -function isLargerUnit(unit1, unit2) -{ - return (unit1 == 'd' && unit2 != 'd') - || (unit1 == 'h' && ['s','m'].includes(unit2)) - || (unit1 == 'm' && unit2 == 's'); +// Used only if increment, hence live game: no "day" unit +function isLargerUnit(unit1, unit2) { + return ( + (unit1 == "h" && ["s", "m"].includes(unit2)) || + (unit1 == "m" && unit2 == "s") + ); } -export function extractTime(cadence) -{ - let tcParts = cadence.replace(/ /g,"").split('+'); - // Concatenate usual time control suffixes, in case of none is provided +export function extractTime(cadence) { + let tcParts = cadence.replace(/ /g, "").split("+"); + // Concatenate usual time control suffix, in case of none is provided tcParts[0] += "m"; - tcParts[1] += "s"; - const mainTimeArray = tcParts[0].match(/([0-9]+)([smhd]+)/); - if (!mainTimeArray) - return null; - const mainTimeValue = parseInt(mainTimeArray[1]); + const mainTimeArray = tcParts[0].match(/^([0-9]+)([smhd]+)$/); + if (!mainTimeArray) return null; + const mainTimeValue = parseInt(mainTimeArray[1], 10); const mainTimeUnit = mainTimeArray[2][0]; const mainTime = timeUnitToSeconds(mainTimeValue, mainTimeUnit); let increment = 0; - if (tcParts.length >= 2) - { - const incrementArray = tcParts[1].match(/([0-9]+)([smhd]+)/); - if (!incrementArray) - return null; - const incrementValue = parseInt(incrementArray[1]); + if (tcParts.length >= 2) { + // Correspondance games don't use an increment: + if (mainTimeUnit == 'd') return null; + tcParts[1] += "s"; + const incrementArray = tcParts[1].match(/^([0-9]+)([smhd]+)$/); + if (!incrementArray) return null; + const incrementValue = parseInt(incrementArray[1], 10); const incrementUnit = incrementArray[2][0]; // Increment unit cannot be larger than main unit: - if (isLargerUnit(incrementUnit, mainTimeUnit)) - return null; + if (isLargerUnit(incrementUnit, mainTimeUnit)) return null; increment = timeUnitToSeconds(incrementValue, incrementUnit); } - return {mainTime:mainTime, increment:increment}; + return { mainTime: mainTime, increment: increment }; }