From 60d3ccaaaa216a81d1569474aeb5ca21bc3ab009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=E5=A4=A9?= Date: Mon, 29 Nov 2021 16:05:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- Readme.md | 3 ++ calendar.js | 55 ++++++++++++++++++++++++++++++ img/demo1.png | Bin 0 -> 55108 bytes index.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++---- package.json | 4 ++- 6 files changed, 146 insertions(+), 8 deletions(-) create mode 100644 calendar.js create mode 100644 img/demo1.png diff --git a/.gitignore b/.gitignore index ce19c5e..476a30b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ node_modules/ package-lock.json - +run.js # Thumbnails ._* diff --git a/Readme.md b/Readme.md index 0d9b9ba..b49c3ca 100644 --- a/Readme.md +++ b/Readme.md @@ -8,6 +8,9 @@ ``` +![demo1.png](./img/demo1.png) + + ## 安装 ```bash npm i -g bash-calendar diff --git a/calendar.js b/calendar.js new file mode 100644 index 0000000..81a8f79 --- /dev/null +++ b/calendar.js @@ -0,0 +1,55 @@ +/** + * {日历} + * @author yutent + * @date 2021/11/29 09:59:26 + */ + +//获取今年的年份/月份,返回的是数组 +export function getThisYearMonth() { + var d = new Date() + return [d.getFullYear(), d.getMonth()] +} + +//根据年份获取指定月份天数 +function getTotalDays(year, month) { + return new Date(year, month + 1, 0).getDate() +} + +//判断指定年月第一天是星期几 +function getFirstDay(year, month, day) { + return new Date(year, month, day || 1).getDay() +} + +//判断指定天数是否被选中 +function isPicked({ year, month, day }, item) { + return item.year === year && item.month === month && item.day === day +} + +function getToday() { + var d = new Date() + return { year: d.getFullYear(), month: d.getMonth(), day: d.getDate() } +} + +//计算日历数组 +export function getCalendarTable(year, month) { + var nums = getTotalDays(year, month) + var numsFixed = 1 - getFirstDay(year, month) + var today = getToday() + var list = [] + + for (let i = numsFixed; i <= nums; i++) { + let day = { + day: i < 1 ? ' ' : (i + '').padStart(2, '0') + } + if (i > 0) { + let week = getFirstDay(year, month, i) + day.weekend = week === 0 || week === 6 + day.picked = !!isPicked({ year, month, day: i }, today) + } + list.push(day) + } + while (list.length % 6 !== 0) { + list.push({ day: ' ' }) + } + return list +} diff --git a/img/demo1.png b/img/demo1.png new file mode 100644 index 0000000000000000000000000000000000000000..d750087fb869c53883925a99e3bf2f70c5d8657a GIT binary patch literal 55108 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 literal 0 HcmV?d00001 diff --git a/index.js b/index.js index acfd639..0f83076 100644 --- a/index.js +++ b/index.js @@ -6,12 +6,90 @@ * @date 2021/11/26 17:20:02 */ -function print(...args) { - args[0] = args[0].padEnd(20, ' ') - if (args.length > 1) { - args.splice(1, 0, ' - ') +import chalk from 'chalk' +import figlet from 'figlet' +import { getThisYearMonth, getCalendarTable } from './calendar.js' + +const CAL_HEAD = ['日', '一', '二', '三', '四', '五', '六'].map((s, i) => { + if (i === 0 || i === 6) { + s = chalk.red.bold(s) + } else { + s = chalk.bold(s) } - console.log.apply(null, args) + return ' '.repeat(4) + s + ' '.repeat(4) + chalk.grey('|') +}) +const VLINE = chalk.grey('|') +const DASHED_LINE = chalk.grey('|' + (' '.repeat(10) + '|').repeat(7)) + +var [year, month] = getThisYearMonth() +var table = getCalendarTable(year, month) +var line = 0 +var dateStr = figlet.textSync(`${year} . ${month + 1}`) + +function drawDashedLine(start = '', pipe = ' ') { + return chalk.grey(start + (pipe.repeat(10) + '|').repeat(7)) } -print('Hello calendar!') +dateStr = dateStr + .split('\n') + .map(s => chalk.grey('| ') + chalk.cyan(s) + ' '.repeat(77 - s.length - 2) + chalk.grey('|')) + .slice(0, -1) + .join('\n') + +console.log(chalk.grey(' ' + '_'.repeat(76))) +console.log(dateStr) +console.log(chalk.grey('|' + '_'.repeat(76) + '|')) +console.log(drawDashedLine('|')) +console.log(chalk.grey('|') + CAL_HEAD.join('')) +console.log(drawDashedLine('|', '_')) + +// 渲染日历表格 +for (let i = 0; i < 3 * 5 + 1; i++) { + let tr = '' + for (let j = 0; j < 7; j++) { + let tmp = table[line + j] + + if (!tmp) { + break + } + + if (j === 0) { + tr += VLINE + } + switch (i % 3) { + case 0: + if (i === 0) { + tr += chalk.grey(' '.repeat(10) + '|') + } else { + tr += chalk.grey('-'.repeat(j === 6 ? 10 : 11) + (j === 6 ? '|' : '')) + if (j === 6) { + line += 7 + } + } + break + + case 1: + if (tmp.picked) { + tr += chalk.bgRed.whiteBright.bold(' '.repeat(4) + tmp.day + ' '.repeat(4)) + VLINE + } else { + if (tmp.weekend) { + tmp.day = chalk.redBright(tmp.day) + } else { + tmp.day = chalk.whiteBright(tmp.day) + } + tr += ' '.repeat(4) + tmp.day + ' '.repeat(4) + VLINE + } + break + + case 2: + if (tmp.picked) { + tr += chalk.bgRed(' '.repeat(10)) + VLINE + } else { + tr += ' '.repeat(10) + VLINE + } + break + } + } + + console.log(tr) +} diff --git a/package.json b/package.json index 1febf93..59647f5 100644 --- a/package.json +++ b/package.json @@ -2,13 +2,15 @@ "name": "bash-calendar", "description": "终端版万年历", "version": "0.0.1", + "type": "module", "author": "yutent ", "bin": { "calendar": "index.js", "cal": "index.js" }, "dependencies": { - "chalk": "^4.0.0" + "chalk": "^4.0.0", + "figlet": "^1.5.2" }, "repository": { "type": "git",