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 | 24x 24x 24x 24x 9315x 24x 1x 24x 4x 24x 17584x 2x 17582x 17582x 2x 17580x 17580x 4x 17576x 24x 666x 1x 665x 1x 664x 664x 2x 662x 24x 8792x 8788x 8788x 8788x 6567x 2221x 24x 329x 329x 329x 329x 8784x 8784x 329x | 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 }; |