Repository navigation
Add compare mode with shared Y-axis scaling for processing charts - #95
Conversation
Compare mode now pins both panes' count axis to the larger bureau's max (Intake & Processing, Application Types) so bar heights and lines are directly comparable; only applied when both panes are on screen (md+). The national policy-event list renders once, full width. The data table is duplicated per bureau so each keeps its own CSV download. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GMkeFLsMCFSSWQxqCdG8Gr
|
Policy event check (this PR doesn't touch The Immigration Services Agency has finalized the fee amounts for the statutory-cap raise that Official source: https://www.moj.go.jp/isa/01_00644.html ("令和8年10月1日付け在留許可手数料の額の改定等について", 出入国在留管理庁) — extension/change-of-status fees move from a flat 6,000 yen to a range of 10,000–75,000 yen by permitted period, and permanent residence rises to 200,000 yen (against the 300,000 yen statutory ceiling Suggested addition to {
// Cabinet Order under the 2026 Act's raised cap, in force 2026-10-01.
// act2026 (2026-06) claimed the statutory ceiling; this is the figure.
period: '2026-10',
category: 'fees',
titleKey: 'policy.feeRevision2026.title',
descriptionKey: 'policy.feeRevision2026.description',
href: 'https://www.moj.go.jp/isa/01_00644.html',
},With catalogue strings (own wording, not a rendition of the ISA page), e.g. in 'policy.feeRevision2026.title': 'Application fees raised again',
'policy.feeRevision2026.description': 'Extension and status-change fees now scale 10,000–75,000 yen by period; permanent residence rose to 200,000 yen.',...and the matching keys in the other eleven locale files per Not flagging anything else from this year's changes (JESTA, the second Basic Plan, the March-2026 student filing window) — those are either not yet in force or read as procedural/publication news rather than a dated change, per this file's own filing rule. Generated by Claude Code |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GMkeFLsMCFSSWQxqCdG8Gr
Summary
Implements compare mode for processing charts, allowing side-by-side visualization of two bureaus with synchronized Y-axis scaling. Policy events are now rendered once at full width in compare mode rather than duplicated per pane. Data tables also adapt to show one per bureau in a two-column layout on medium screens and up.
Key Changes
yMaxprop toImmigrationChartDatainterface and implementedaxisMaxfunctions (intakeAxisMax,typesAxisMax) to calculate the maximum value across both bureaus in compare mode, ensuring bar heights and line positions are directly comparableuseMediaQueryhook usinguseSyncExternalStoreto detect when side-by-side layout is available (768px+), enabling responsive compare mode behaviorIntakeProcessingBarChartto accepthidePolicyListprop; the shell now rendersPolicyEventListonce at full width in compare mode instead of per pane, since events are national and identical for all bureausChartDataTableto support optionallabelprop for accessibility; tables now render in a two-column grid layout in compare mode with separate CSV downloads per bureauCategorySubmissionsLineChartandIntakeProcessingBarChartnow accept and applyyMaxviayAxisDomainsto pin the count axisniceYDomainutility to round shared max values consistently with chart's own axis calculationsbuildTypeRowshelper inCategorySubmissionsLineChartfor reuse intypesAxisMaxcalculationaxisMaxandpolicyEventsmetadata to processing chart definitions to identify which charts support compare mode scaling and event annotationsyAxisDomainsprop through chart component hierarchy to support fixed axis domainsNotable Implementation Details
useMediaQuery, keeping single-pane layout on mobilehttps://claude.ai/code/session_01GMkeFLsMCFSSWQxqCdG8Gr