This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cardcal [2025/11/11 12:50] – Yuki | cardcal [2025/11/11 23:24] (current) – Yuki | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Playing card calendar ====== | ||
| + | |||
| + | Based on a proposition by [[https:// | ||
| + | |||
| + | Each suit represents a season, red is a solstice and black is an equinox: | ||
| + | |||
| + | * ♦️ Winter | ||
| + | * ♠️ Spring | ||
| + | * ♥️ Summer | ||
| + | * ♣️ Fall | ||
| + | |||
| + | Each day can thus be represented by a card and a day of week symbol. | ||
| + | |||
| + | ===== Calendar ===== | ||
| < | < | ||
| < | < | ||
| Line 4: | Line 18: | ||
| { | { | ||
| display: inline-table; | display: inline-table; | ||
| + | } | ||
| + | #year, #gen | ||
| + | { | ||
| + | font-size: 2em; | ||
| + | } | ||
| + | #year | ||
| + | { | ||
| + | width: 4em; | ||
| } | } | ||
| </ | </ | ||
| + | <input id=" | ||
| <div id=" | <div id=" | ||
| </ | </ | ||
| Line 11: | Line 34: | ||
| import moment from ' | import moment from ' | ||
| import * as seasons from ' | import * as seasons from ' | ||
| - | var year = 2025; | + | var y = moment().year(); |
| + | var $year = jQuery("# | ||
| + | $year.val(y); | ||
| + | genCal(y); | ||
| + | jQuery("# | ||
| + | function genCal(year) | ||
| + | { | ||
| var last = moment(seasons.getSeasonStart(11, | var last = moment(seasons.getSeasonStart(11, | ||
| var weeks = [last.isoWeek()-last.isoWeeksInYear(), | var weeks = [last.isoWeek()-last.isoWeeksInYear(), | ||
| console.log(weeks) | console.log(weeks) | ||
| var $cal = jQuery("# | var $cal = jQuery("# | ||
| + | $cal.html("" | ||
| var cards = [' | var cards = [' | ||
| var suits = [0x2666, 0x2660, 0x2665, 0x2663, 0x2666].map(a=> | var suits = [0x2666, 0x2660, 0x2665, 0x2663, 0x2666].map(a=> | ||
| + | var suits2 = [0x1f0c1, 0x1f0a1, 0x1f0b1, 0x1f0d1, 0x1f0c1]; | ||
| + | var cards2 = [0, | ||
| for(var month = 0; month < 12; month++) | for(var month = 0; month < 12; month++) | ||
| { | { | ||
| - | var time = moment.utc(year+" | + | var time = moment.utc(year+" |
| var name = time.format(" | var name = time.format(" | ||
| var $table = jQuery(`< | var $table = jQuery(`< | ||
| < | < | ||
| - | <tr class=" | + | <tr class=" |
| - | <tr class=" | + | <tr class=" |
| </ | </ | ||
| < | < | ||
| Line 31: | Line 63: | ||
| var last = time.add(1,' | var last = time.add(1,' | ||
| if(last < first) | if(last < first) | ||
| - | if(month == 0) first -= time.isoWeeksInYear(); | + | if(month == 0) first -= moment.utc().isoWeekYear(year-1).isoWeeksInYear(); |
| - | else if(month == 11) last += time.isoWeeksInYear(); | + | else if(month == 11) last += moment.utc().isoWeekYear(year).isoWeeksInYear(); |
| for(var week = first; week <= last; week++) | for(var week = first; week <= last; week++) | ||
| { | { | ||
| - | var card = cards[week-weeks.findLast(a=> | + | var card = week-weeks.findLast(a=> |
| - | var suit = suits[weeks.findLastIndex(a=> | + | var suit = weeks.findLastIndex(a=> |
| - | var $week = jQuery(`< | + | var days = Array(7).fill(0).map((a, |
| + | var m = moment.utc().isoWeekYear(year).isoWeek(week).day(i+1); | ||
| + | return m.month()==month? | ||
| + | }) | ||
| + | var $week = jQuery(`< | ||
| jQuery(" | jQuery(" | ||
| } | } | ||
| + | var days = [0x263e, 0x2642, 0x263f, 0x2643, 0x2640, 0x2644, 0x2609].map(a=> | ||
| + | var $week = jQuery(`< | ||
| + | jQuery(" | ||
| $cal.append($table); | $cal.append($table); | ||
| + | } | ||
| } | } | ||
| </ | </ | ||
| </ | </ | ||