Commit Graph

38 Commits

Author SHA1 Message Date
Anton Volnuhin
3d7dc24a2d Landscape phone polish: fixed padding, compact header, cache-busting
- Replace safe-area-inset padding with fixed 42px right / 24px left
  (safe-area was 59px on both sides of iPhone Pro Max, too aggressive)
- Move center-label/eye-button hiding to height-based media query
  covering all landscape phones, not just >851px
- Add compact h1 (24px), smaller month-preview donuts (28px) for
  larger landscape phones
- Server: add Cache-Control: no-cache, strip query strings from URLs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 00:44:21 +03:00
Anton Volnuhin
2da9e3e3e7 Use pure safe-area-inset for landscape side padding
Just env(safe-area-inset-*) with 8px fallback — no extra base padding
on top. The inset values already provide sufficient clearance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:44:10 +03:00
Anton Volnuhin
51a5d39c45 Reduce landscape side padding: 8px base (safe-area-inset handles the rest)
20px + safe-area was too much — the inset alone provides Dynamic Island
clearance, only need minimal base padding.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:43:12 +03:00
Anton Volnuhin
2d8cf00c3b Narrower donut container and safe-area side padding for landscape phones
- Chart wrapper 52% (was 58%) for visual separation from details box
- Container padding 20px + safe-area-inset on both sides to clear
  Dynamic Island in landscape
- Details box right offset includes safe-area-inset-right

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:42:07 +03:00
Anton Volnuhin
4508a0f143 Compact donut layout for larger landscape phones (iPhone Pro Max)
For viewports >850px wide but <=500px tall (landscape):
- Hide center label text (month/amount), keep home icon on drill-down
- Wider details panel (40vw), smaller fonts (12-13px)
- Tighter spacing to fit all content without clipping

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:38:12 +03:00
Anton Volnuhin
029e428bb4 Landscape phone layout: compact donut, PWA support, safe-area insets
- Add compact donut mode for landscape phones (<=850px, landscape):
  wider radii (56%/93%/100%), no outside labels, bolder fonts
- Refine landscape CSS: smaller header (h1:20px), 55/45 chart/details
  split, compact month previews (22px), tighter spacing
- Add PWA standalone support: manifest.json, apple-mobile-web-app
  meta tags, viewport-fit=cover
- Add safe-area-inset padding for Dynamic Island and home indicator

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:25:35 +03:00
Anton Volnuhin
cc8b10dadb mid update 2026-02-07 22:54:12 +03:00
Anton Volnuhin
f99bb963e4 Responsive timeline layout: mobile legend below chart, orientation-aware breakpoints
- Move timeline legend from vertical top-right to horizontal bottom on portrait phones (<=850px + portrait)
- Landscape phones and tablets use desktop layout (vertical legend on right)
- CSS: cap chart-wrapper height with min(Xvw, calc(100dvh - 130px)) to prevent landscape overflow
- CSS: timeline-mode fills viewport height in portrait for better space utilization
- Rotate x-axis month labels to -90° on mobile for cleaner vertical display
- Add debounced resize handler to re-render on orientation/breakpoint changes
- Guard zrender click handler with y-bounds to prevent legend-zone false positives

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 19:53:30 +03:00
Anton Volnuhin
b91aa65f61 feat: enhance timeline view with drill-down, category highlighting, and native labels
- Add drill-down into subcategories when clicking a category bar
- Use native ECharts emphasis/blur for category highlighting (focus: series)
- Show per-category labels on all bars via dispatchAction highlight
- Display total sum labels (к) above bars, ₽ on y-axis only
- Add color legend at bottom of chart
- Increase font sizes and angle x-axis labels for readability
- Remove details panel from timeline mode
- Clean up label management: no manual setOption race conditions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:58:08 +03:00
Anton Volnuhin
33a245728d Add timeline view with stacked bar chart and view switcher
Adds a second visualization mode showing spending across all months
as a stacked bar chart, with a месяц/таймлайн switcher in the header.
Includes side panel with category breakdowns, bar click-to-drill,
and localStorage persistence of the selected view.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 16:05:48 +03:00
Anton Volnuhin
95fea028d8 Remove primary indicator dot from multi-month selection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 15:43:52 +03:00
Anton Volnuhin
423844af3e Add multi-month selection with Shift+click
Hold Shift and click months to select multiple, showing aggregated
spending data. Normal click resets to single month selection.
Cannot deselect the last remaining month.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 15:36:16 +03:00
Anton Volnuhin
c192ac394d Make home icon bigger and remove shadow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 18:38:40 +03:00
Anton Volnuhin
abc6ef2a9d Show home icon only on mobile with white background
- Home icon only appears on narrow screens (≤850px), not desktop
- Added white circular background with subtle shadow for readability
- Icon is larger (28px + padding) for easier touch targeting

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 18:36:50 +03:00
Anton Volnuhin
e29ff21747 Add home icon in donut center when drilled down
- Home icon appears in center only when at least one level deep
- Clicking the icon navigates back to root view
- On narrow screens (≤850px), shows only the home icon (label hidden)
- Black/white styling with hover effect
- Works on both desktop and mobile/touch devices

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 18:34:17 +03:00
Anton Volnuhin
0821d8f6f0 Hide donut eye icon and always show details eyes on narrow layouts
- Use !important to ensure chart eye btn is hidden on narrow (≤850px)
- Always show eye buttons in details panel on narrow layouts (opacity 0.5)
- Touch devices don't have hover, so eyes need to be visible by default
- Desktop (>850px) retains hover behavior for eye icons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 18:29:46 +03:00
Anton Volnuhin
f6ae4aa3de Add mobile optimizations: smaller/bolder fonts, hide eye icon, center chart
- Smaller font sizes on mobile (10px/9px vs 13px/11px on desktop)
- Bolder font weight on mobile (600) for better readability
- Hide chart eye icon on narrow/stacked layouts (≤850px)
- Center chart at 50% when layout is stacked (≤850px)
- Dynamic font size/weight updates on resize

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 16:12:20 +03:00
Anton Volnuhin
d76e80dc02 Improve responsive chart scaling and hide center label earlier
- Scale chart layers on mobile (≤500px) to fill container while
  keeping same hole size as desktop (20%)
- Add resize handler to dynamically update proportions when crossing
  500px threshold
- Hide center label at 850px (stacked layout) instead of 500px to
  prevent overlap with chart
- Center chart at 50% on mobile since details box is below

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:57:16 +03:00
Anton Volnuhin
2b45a42b49 Hide center label on mobile and enlarge chart
- Hide center label on screens ≤500px (redundant with details box)
- Increase chart height to 95vw (500px) and 98vw (400px)
- Reduce container padding to minimize white space
- Adjust details box margin and max-height calculation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:30:40 +03:00
Anton Volnuhin
f01d7f791f Add mobile-optimized styles for iPhone 13 and 16 Pro Max
- Add 500px breakpoint: smaller fonts, tighter spacing, smaller
  month buttons and previews, center label adjustments
- Add 400px breakpoint for iPhone 13 (390px): even smaller fonts,
  reduced padding, compact details box styling
- Title now fits on one line at all mobile sizes
- Month navigator buttons all visible without cutoff
- Center label scales appropriately for small screens

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:27:09 +03:00
Anton Volnuhin
8fa8b32ad2 Fix scroll jumping in narrow layout when hovering subcategories
Use calc() to set details box max-height based on remaining viewport
space after chart (90lvw) and header (~140px). This prevents page
scrolling when hovering items with many subcategories - the details
box scrolls internally instead.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:21:10 +03:00
Anton Volnuhin
805d70cdf7 Remove max-height limit on details box in narrow layout
Allow details box to show all categories instead of being cut off
at 300px height on mobile/narrow screens.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:15:54 +03:00
Anton Volnuhin
a680943417 Improve responsive layout at medium screen widths
At 1200px and below, reduce chart width to 60% and increase details
box width to 38% (min 340px) to prevent amounts from being truncated.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:14:31 +03:00
Anton Volnuhin
aaa05bf2c9 Fix center label positioning in responsive layout
Added chart-wrapper div to contain both chart-container and center-label,
allowing the center-label to be positioned relative to the chart area
regardless of the overall layout (side-by-side or stacked).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:11:08 +03:00
Anton Volnuhin
c441d5979f Improve center label and details box styling
- Move center label from ECharts canvas to HTML overlay for better font rendering
- Style ₽ symbol separately with lighter color (#888) and slightly smaller size (20px)
- Use tighter line height (1.0) for center label
- Remove "Детали" heading from details box, use total as header
- Remove top border from details header
- Increase header font sizes to 20px
- Add more whitespace above "Top Items:"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:02:31 +03:00
Anton Volnuhin
e8318166dd Fix consistent subcategory colors and mini-chart sync
- Add fixed subcategory color mapping based on December 2025 data
- Update click handler and transformDrillDownData to use getSubcategoryColor
- Rotate mini-charts 90° clockwise to match main chart orientation
- Change month selector active state from blue to neutral gray (#4a4a4a)
- Ensure colors stay consistent when switching months while drilled down

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 18:26:18 +03:00
Anton Volnuhin
0bc2725d4d Use system font with proper ₽ symbol and fix modal close behavior
- Switch to SF Pro / system font stack for consistent ₽ rendering
- Apply font to both HTML and ECharts center text
- Reset chart highlight and details panel when closing modal

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:29:27 +03:00
Anton Volnuhin
08db280f84 Add sortable transaction table with row detail modal
- Add custom column sorting (click headers to sort, click again to reverse)
- Add row click to open detail modal showing all transaction fields
- Row detail modal uses table layout with labels and values side by side
- Always show scrollbars, reset scroll position when modal opens
- Global escape key handler closes detail modal first, then main modal

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:31:18 +03:00
Anton Volnuhin
139bb8cf41 Make header eye button show only on hover
Changed from always visible (50% opacity) to hover-only behavior,
matching the eye buttons in the items list below.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:58:12 +03:00
Anton Volnuhin
25b1e1cc58 Add eye button to details header and show month name
- Replace "Total" with the current month name (e.g., "Декабрь")
- Add eye icon to header that opens modal with all transactions
- Header eye button is always visible (50% opacity)
- When hovering a sector, header shows sector name with eye button

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:55:15 +03:00
Anton Volnuhin
ecd04ee4a9 Fix eye button not showing after opacity transition change
- Remove inline display:none from HTML (was overriding opacity)
- Set initial pointer-events:none in CSS to prevent blocking clicks

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:51:55 +03:00
Anton Volnuhin
30c2d1db98 Reduce eye button hide delay to 0.5s with fade animation
- Changed inactivity timeout from 1 second to 0.5 seconds
- Added smooth 0.2s ease-out opacity transition for gradual fade
- Switched from display:none to opacity for smoother hide effect

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:49:51 +03:00
Anton Volnuhin
77c8987099 Add floating eye button for viewing transaction details
- Add eye icon that appears when hovering over chart sectors
- Position button at inner edge for left-side sectors, outer edge for right-side
- Click eye button to open transaction details modal
- Maintain sector highlight and details panel when hovering over button
- Override chart cursor to only show pointer on eye button, not sectors

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:41:36 +03:00
Anton Volnuhin
9a0589d3f9 Add visual month navigator with mini donut chart previews
Replace dropdown selector with a visual navigator featuring:
- Left/right arrow buttons for month navigation
- Clickable month buttons with mini donut chart previews
- Russian month labels (e.g., "Январь'25")
- Responsive layout for mobile screens
- Arrows disable at navigation boundaries

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 14:05:30 +03:00
Anton Volnuhin
df93e3ebca drill-down and animation restored 2025-03-22 00:49:27 +03:00
Anton Volnuhin
db3f419ee7 updated with february and resizing 2025-03-20 22:23:39 +03:00
Anton Volnuhin
ab3db53817 better colors 2025-03-19 22:47:33 +03:00
Anton Volnuhin
cfb07ce1c0 Initial 2025-03-19 20:41:30 +03:00