This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| cardcal [2025/11/10 00:59] – created 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=" | ||
| - | </ | ||
| - | ^ January | ||
| - | ^ ^ S ^ M ^ T ^ W | ||
| - | ^ 1 | | ||
| - | < | ||
| </ | </ | ||
| - | < | + | < |
| - | Date.prototype.getWeek | + | import moment from ' |
| - | var date = new Date(this.getTime()); | + | import * as seasons from ' |
| - | date.setHours(0, 0, 0, 0); | + | var y = moment().year(); |
| - | | + | var $year = jQuery("# |
| - | var week1 = new Date(date.getFullYear(), 0, 4); | + | $year.val(y); |
| - | | + | genCal(y); |
| - | | + | jQuery("# |
| + | function | ||
| + | { | ||
| + | var last = moment(seasons.getSeasonStart(11,year-1)); | ||
| + | var weeks = [last.isoWeek()-last.isoWeeksInYear(),...seasons.getSeasons(year).map(t=> | ||
| + | console.log(weeks) | ||
| + | var $cal = jQuery("# | ||
| + | $cal.html("" | ||
| + | var cards = [' | ||
| + | var suits = [0x2666, 0x2660, 0x2665, 0x2663, 0x2666].map(a=> | ||
| + | var suits2 = [0x1f0c1, 0x1f0a1, 0x1f0b1, 0x1f0d1, 0x1f0c1]; | ||
| + | var cards2 = [0,1, | ||
| + | for(var month = 0; month < 12; month++) | ||
| + | { | ||
| + | var time = moment.utc(year+" | ||
| + | | ||
| + | var $table = jQuery(`< | ||
| + | < | ||
| + | <tr class=" | ||
| + | <tr class=" | ||
| + | </ | ||
| + | < | ||
| + | var first = time.isoWeek() | ||
| + | var last = time.add(1,' | ||
| + | if(last < first) | ||
| + | if(month == 0) first -= moment.utc().isoWeekYear(year-1).isoWeeksInYear(); | ||
| + | else if(month == 11) last += moment.utc().isoWeekYear(year).isoWeeksInYear(); | ||
| + | | ||
| + | { | ||
| + | var card = week-weeks.findLast(a=> | ||
| + | var suit = weeks.findLastIndex(a=> | ||
| + | var days = Array(7).fill(0).map((a,i)=>{ | ||
| + | var m = moment.utc().isoWeekYear(year).isoWeek(week).day(i+1); | ||
| + | return m.month()==month? | ||
| + | }) | ||
| + | var $week = jQuery(`< | ||
| + | jQuery(" | ||
| + | } | ||
| + | var days = [0x263e, 0x2642, 0x263f, 0x2643, 0x2640, 0x2644, 0x2609].map(a=> | ||
| + | var $week = jQuery(`< | ||
| + | jQuery(" | ||
| + | $cal.append($table); | ||
| + | } | ||
| } | } | ||
| - | var tables = document.querySelectorAll("# | ||
| </ | </ | ||
| </ | </ | ||