Fix max_persons extraction and legend truncation in rate modal

- Scraper: extract max_persons from block_id (3rd segment) instead of cell text; cell[0] was picking up the price value (e.g. 189/166) causing the max_persons=2 filter to exclude all scraped rows and show "No rates available" in snapshot
- MarketView: add namelength: -1 to Plotly legend to prevent label truncation; increase bottom margin from 50→65 and legend y from -0.25→-0.3

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-09 23:49:18 +00:00
parent 121976b3db
commit dbcc15661d
2 changed files with 6 additions and 6 deletions

View file

@ -73,10 +73,10 @@ _EXTRACT_RATES_JS = """
const cancelMatch = condCell.match(/free cancellation before ([\\w\\s]+)/i);
const freeCancelText = cancelMatch ? cancelMatch[1].trim() : null;
// Persons: first <td> ("Max persons: 2" or "Only for 1 guest")
const personsCell = cells.length >= 1 ? cells[0].innerText || '' : '';
const personsMatch = personsCell.match(/\\d+/);
const maxPersons = personsMatch ? parseInt(personsMatch[0]) : null;
// Persons: extract from block_id format {room_id}_{rate_plan_id}_{persons}_{meal}_0
// More reliable than cell text parsing which can pick up the price instead.
const blockParts = blockId.split('_');
const maxPersons = blockParts.length >= 3 ? parseInt(blockParts[2]) : null;
// Quantity dropdown: last <td> has a <select> with options 0..N
// where N = actual available qty (capped at 10 by Booking.com).