Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 20x 20x 20x 20x 7518x 20x 1x 20x 4x 20x 14394x 2x 14392x 14392x 2x 14390x 14390x 4x 14386x 20x 578x 1x 577x 1x 576x 576x 2x 574x 20x 7197x 7193x 7193x 7193x 5376x 1817x 20x 285x 285x 285x 285x 7189x 7189x 285x | const quarters = [ "WINTER", "SPRING", "SUMMER", "FALL" ]; const shortQuarters = [ "W", "S", "M", "F" ]; const qtrNumToQuarter = { '1': 'WINTER', '2': 'SPRING', '3': 'SUMMER', '4': 'FALL' }; const yyyyqToQyy = (yyyyq) => { return `${shortQuarters[parseInt(yyyyq.charAt(4)) - 1]}${yyyyq.substring(2, 4)}`; } const toFormat = (quarter, year) => { return year.toString() + (parseInt(quarter)).toString(); } const fromFormat = (format) => { return `${quarters[parseInt(format.charAt(4)) - 1]} ${format.substring(0, 4)}`; } const fromNumericYYYYQ = (yyyyqInt) => { if (typeof (yyyyqInt) != 'number') { throw new Error("param should be a number"); } const yyyyqStr = yyyyqInt.toString(); if (yyyyqStr.length !== 5) { throw new Error("param should be five digits"); } const qStr = yyyyqStr.substring(4, 5); if (!(qStr in qtrNumToQuarter)) { throw new Error("param should end in 1,2,3 or 4"); } return yyyyqStr; } const toNumericYYYYQ = (yyyyqStr) => { if (typeof (yyyyqStr) !== 'string') { throw new Error("param should be a string"); } if (yyyyqStr.length !== 5) { throw new Error("param should be five digits"); } const qStr = yyyyqStr.substring(4, 5); if (!(qStr in qtrNumToQuarter)) { throw new Error("param should end in 1,2,3 or 4"); } return parseInt(yyyyqStr); } const nextQuarter = (yyyyqInt) => { const _yyyyqStr = fromNumericYYYYQ(yyyyqInt); // just for type/format checking const qInt = yyyyqInt % 10; const yyyyInt = Math.floor(yyyyqInt / 10); if (qInt < 4) { return yyyyqInt + 1; } return (yyyyInt + 1) * 10 + 1; } const quarterRange = (beginYYYYQStr, endYYYYQStr) => { let quarterList = []; const beginYYYYQInt = toNumericYYYYQ(beginYYYYQStr); const endYYYYQInt = toNumericYYYYQ(endYYYYQStr); for (let yyyyqInt = beginYYYYQInt; yyyyqInt <= endYYYYQInt; yyyyqInt = nextQuarter(yyyyqInt)) { const yyyyqStr = fromNumericYYYYQ(yyyyqInt); quarterList.push({ yyyyq : yyyyqStr, qyy: yyyyqToQyy(yyyyqStr) }); } return quarterList; } export { fromFormat, toFormat, yyyyqToQyy, fromNumericYYYYQ, toNumericYYYYQ, nextQuarter, quarterRange, qtrNumToQuarter }; |