X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Futils%2FtimeControl.js;fp=client%2Fsrc%2Futils%2FtimeControl.js;h=c4a229506c81cbe3a84b4ed4548621436429fbf9;hb=dd75774d31a140cabf80790bdade9a40048c38d5;hp=0000000000000000000000000000000000000000;hpb=81d9ce72c32c32e62a8b43ca8e94fcb974f4a685;p=vchess.git diff --git a/client/src/utils/timeControl.js b/client/src/utils/timeControl.js new file mode 100644 index 00000000..c4a22950 --- /dev/null +++ b/client/src/utils/timeControl.js @@ -0,0 +1,46 @@ +function timeUnitToSeconds(value, unit) +{ + let seconds = value; + switch (unit) + { + case 'd': + seconds *= 24; + case 'h': + seconds *= 60; + case 'm': + seconds *= 60; + } + return seconds; +} + +function isLargerUnit(unit1, unit2) +{ + return (unit1 == 'd' && unit2 != 'd') + || (unit1 == 'h' && ['s','m'].includes(unit2)) + || (unit1 == 'm' && unit2 == 's'); +} + +export function extractTime(timeControl) +{ + const tcParts = timeControl.replace(/ /g,"").split('+'); + const mainTimeArray = tcParts[0].match(/([0-9]+)([smhd])/); + if (!mainTimeArray) + return null; + const mainTimeValue = parseInt(mainTimeArray[1]); + const mainTimeUnit = mainTimeArray[2]; + const mainTime = timeUnitToSeconds(mainTimeValue, mainTimeUnit); + let increment = 0; + if (tcParts.length >= 2) + { + const increment = tcParts[1].match(/([0-9]+)([smhd])/); + if (!increment) + return null; + const incrementValue = parseInt(increment[1]); + const incrementUnit = increment[2]; + // Increment unit cannot be larger than main unit: + if (isLargerUnit(incrementUnit, mainTimeUnit)) + return null; + increment = timeUnitToSeconds(incrementValue, incrementUnit); + } + return {mainTime:mainTime, increment:increment}; +}