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 | 21x 21x 21x 21x 8230x 21x 1x 21x 4x 21x 15818x 2x 15816x 15816x 2x 15814x 15814x 4x 15810x 21x 592x 1x 591x 1x 590x 590x 2x 588x 21x 7909x 7905x 7905x 7905x 5907x 1998x 21x 292x 292x 292x 292x 7901x 7901x 292x | 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 }; |