import {regionNames, presetStart} from './history-core.mjs';
const rows=JSON.parse(document.getElementById('archive-chart-data').textContent);
const plot=document.getElementById('archive-plot');
const period=document.getElementById('archive-period');
const slider=document.getElementById('archive-date');
const detail=document.getElementById('archive-chart-detail');
const colors=['#c81e2b','#343e50','#aa6840','#737ea2'];
const dashes=['','9 3','3 3','12 3 2 3'];
const money=new Intl.NumberFormat('tr-TR',{maximumFractionDigits:0});
const date=s=>new Date(s+'T12:00:00Z').toLocaleDateString('tr-TR',{day:'numeric',month:'long',year:'numeric',timeZone:'UTC'});
let selected=[],x,y;
function inspect(){
const row=selected[Number(slider.value)];if(!row)return;
slider.setAttribute('aria-valuetext',date(row.date));
detail.innerHTML=`${date(row.date)} ↗
${regionNames.map((name,i)=>`
${name}${money.format(row.values[i])} ₺/ton
`).join('')}
`;
const cursor=plot.querySelector('#archive-cursor');
cursor.innerHTML=`${row.values.map((v,i)=>``).join('')}`;
}
function draw(reset=false){
const start=presetStart(rows.at(-1).date,period.value,rows[0].date);
selected=rows.filter(r=>r.date>=start);
const width=Math.max(250,plot.clientWidth),height=320,left=55,right=15,top=20,bottom=270;
const values=selected.flatMap(r=>r.values),low=Math.min(...values),high=Math.max(...values),padding=Math.max(100,(high-low)*.12);
const min=Math.max(0,low-padding),max=high+padding;
const first=Date.parse(selected[0].date),last=Date.parse(selected.at(-1).date);
x=r=>last===first?(left+width-right)/2:left+(Date.parse(r.date)-first)/(last-first)*(width-left-right);
y=v=>bottom-(v-min)/(max-min)*(bottom-top);
const grid=Array.from({length:5},(_,i)=>{const v=min+(max-min)*i/4,yy=y(v);return `${money.format(v)}`;}).join('');
const count=width<500?3:6;
const labels=Array.from({length:count},(_,i)=>{const r=selected[Math.round(i*(selected.length-1)/(count-1))];return `${r.date.slice(8)}.${r.date.slice(5,7)}.${r.date.slice(0,4)}`;}).join('');
plot.innerHTML=``;
slider.max=selected.length-1;if(reset)slider.value=selected.length-1;
document.getElementById('archive-chart-range').textContent=`${date(selected[0].date)} – ${date(selected.at(-1).date)} · ${selected.length.toLocaleString('tr-TR')} tarihli kayıt`;
inspect();
}
period.addEventListener('change',()=>draw(true));
slider.addEventListener('input',inspect);
plot.addEventListener('pointerdown',event=>{
const target=event.clientX-plot.getBoundingClientRect().left;
let best=0;selected.forEach((r,i)=>{if(Math.abs(x(r)-target)draw()).observe(plot);