@johnmorrisdotca/kyogijo-stadiums 0.49.0 → 0.49.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/multi.js +17 -7
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ All notable changes to this project are written here. The format follows
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.49.1] - 2026-11-02
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **A judo tournament layout of the IJF's kata area or the AJJF's contest area now lies where its surface is drawn (KYOGIJO-STADIUMS-21)** ([tournament layouts](./docs/multi.md)): `multiLayout` sized every judo floor by the IJF contest area's figures (4 m of safety and common area), whatever the surface's `league`, while the drawing used the league's own, so a layout of `league: "ijf-kata"` (2 m) or `"ajjf"` (sizes made whole numbers of its 91 cm mats) drew its mats smaller than the floor, its labels and the places for the event's words and marks off the areas, and said it needed more floor than it does (two kata areas need 27 by 15 m, not 33 by 19). The floor is now laid from the judo drawing's own plan (`budoPlan`), and karate's from its league's figures. The presets are unchanged (judo 1 x 3 is 47 by 19 m, 1 x 4 is 61 by 19, karate 2 x 3 is 32 by 22, 2 x 4 is 42 by 22). Test: `src/multi.test.ts` lays the IJF's, the kata and the AJJF's floors at one to three areas and checks the layout's tatami is the drawn outline and the last area ends one safety area short of its edge. No new words.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Tests (KYOGIJO-STADIUMS-2): the fingerprint tests no longer break at every version bump. A drawing carries `data-version`, and a drawing with no `id` of its own gets one made from its options and the version, so the hash of the raw text changed with each release and the snapshots, the 90 park hashes and the names fixture were regenerated by hand each time. `src/fingerprint.fixture.ts` hashes the drawing without the version and without those default ids (a page's own id is left alone); twelve test files use it, and the recorded hashes were rewritten once. `src/fingerprint.test.ts` draws the same drawing as version 999.0.0 and checks the fingerprint is the same, the raw hash is not, and a drawing that really changed still changes it. The suite (4,780 tests) also passes with `VERSION` and `package.json` at 0.49.1. The package and its drawings are unchanged.
|
|
19
|
+
|
|
20
|
+
- The demo (not the package): no more folds one under another, and none in every card (KYOGIJO-STADIUMS-18). On the stadiums, district and judging pages the facts, the floors, the choices, the print and the table were open folds in a stack; they are now tabs under the drawing (`demo/tabs.js`, with the arrow keys), the choices first, so the pane and its options share one screen. On the home page the Data and Charts sets each had a "Show the data as a table" fold in every card (thirteen); one switch above each set now swaps its drawings for the tables that stand for them. Tests in `e2e/stadiums.demo.mjs`, `e2e/district.demo.mjs`, `e2e/judging.demo.mjs`, `e2e/data.demo.mjs` and `e2e/charts.demo.mjs`. No new words, so no new Japanese.
|
|
21
|
+
|
|
10
22
|
## [0.49.0] - 2026-10-30
|
|
11
23
|
|
|
12
24
|
### Added
|
package/dist/multi.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// A tournament layout laid out: several of the package's own surfaces on one floor, to scale, where each stands and what it leaves free; the floor the layout needs; and whether it fits a hall's floor. The
|
|
2
2
|
// figures are in multi.data.ts (a rulebook's, with its source); this file only adds them up. Nothing here draws SVG (multi.draw.ts does), and every function returns new values.
|
|
3
|
-
import { inOctagon } from "./budo/plan.js";
|
|
3
|
+
import { budoLeague, budoPlan, inOctagon } from "./budo/plan.js";
|
|
4
4
|
import { fill } from "./strings.core.js";
|
|
5
5
|
import { FEET_PER_METRE } from "./geometry.js";
|
|
6
6
|
import { IJF_CONTEST, WKF_KUMITE } from "./leagues/budo.js";
|
|
@@ -136,13 +136,23 @@ export function multiLayout(options = {}) {
|
|
|
136
136
|
let floor;
|
|
137
137
|
let tatami;
|
|
138
138
|
if (spec.kind === "budo") {
|
|
139
|
-
// The contest area, the safety area, the common safe zone between areas and the free zone, in metres
|
|
139
|
+
// The contest area, the safety area, the common safe zone between areas and the free zone, in metres. Judo's are the drawing's own (`budoPlan`), so that the floor is laid where the surface is
|
|
140
|
+
// drawn for every league: the IJF's contest area, its kata area (2 m of safety and common area, not 4) and the AJJF's (sizes made whole numbers of its 91 cm mats). Karate's are its league's.
|
|
140
141
|
const karate = spec.sport === "karate";
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
142
|
+
let c, s, gap, free;
|
|
143
|
+
if (karate) {
|
|
144
|
+
const dims = budoLeague(spec.surface).dimensions;
|
|
145
|
+
const k = dims.kind === "karate" ? dims : WKF_KUMITE;
|
|
146
|
+
[c, s, gap, free] = [k.area, k.safety, k.between, 0];
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
const plan = budoPlan(spec.surface);
|
|
150
|
+
const first = plan.judo?.contests[0];
|
|
151
|
+
const fig = plan.figures.kind === "judo" ? plan.figures : IJF_CONTEST;
|
|
152
|
+
if (plan.judo === undefined || first === undefined)
|
|
153
|
+
throw new Error(`The layout "${spec.id}" is not a judo floor of contest areas`);
|
|
154
|
+
[c, s, gap, free] = [first.x1 - first.x0, first.x0, plan.judo.gap, fig.freeZone];
|
|
155
|
+
}
|
|
146
156
|
const across = spec.columns;
|
|
147
157
|
const down = spec.rows;
|
|
148
158
|
const tw = across * c + (across - 1) * gap + 2 * s;
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The package's version: the same as package.json's, and a test holds them to each other. */
|
|
2
|
-
export declare const VERSION = "0.49.
|
|
2
|
+
export declare const VERSION = "0.49.1";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The package's version: the same as package.json's, and a test holds them to each other. */
|
|
2
|
-
export const VERSION = "0.49.
|
|
2
|
+
export const VERSION = "0.49.1";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@johnmorrisdotca/kyogijo-stadiums",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.1",
|
|
4
4
|
"description": "Kyogijo Stadiums 競技場, 40 sports' surfaces as SVG, drawn to scale from the rulebooks: NFL, CFL and IFAF football fields, an NHL rink, an NBA court, MLB ballparks, soccer pitches, curling sheets, athletics stadiums, speed skating, short track and figure skating rinks, swimming pools, water polo fields, diving wells, artistic swimming areas, and the courts and fields of tennis, volleyball (indoor, beach and sitting), badminton, pickleball, table tennis, padel, squash, racquetball, sepak takraw, teqball, roundnet, netball, lacrosse, rugby, Australian football, Gaelic games, cricket, field hockey and handball, and the budo of judo, karate, kendo, sumo and kyudo with a dojo of tatami laid as real units, the MMA cage, with each team's name and logo on its side and the score in the middle, stands and a crowd, a pageant of flags, and a 3D view. Light and dark, accessible, a compact badge for lists, a helper for React and a custom element. Zero dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sports",
|