import sys, base64, json
sys.path.insert(0,'backend')
from app.services import diagram
SD='/tmp/claude-0/-home-danvics-docker-quiz/c1e0577a-e42c-4a3d-b1ea-3edd61103a4e/scratchpad'

flow = {"kind":"flow","title":"Why a child desaturates before an adult does",
 "nodes":[
  {"id":"a","label":"Smaller functional residual capacity","note":"Less oxygen stored in the lung"},
  {"id":"b","label":"Higher oxygen consumption","note":"6-8 mL/kg/min vs 3-4 in adults"},
  {"id":"c","label":"Apnoea or obstruction","tone":"bad"},
  {"id":"d","label":"Reserve gone in seconds","note":"Desaturation, then bradycardia","tone":"key"}],
 "edges":[{"from":"a","to":"b"},{"from":"b","to":"c"},{"from":"c","to":"d","label":"within 20 s"}],
 "caption":"x"}
cycle3 = {"kind":"cycle","title":"Three-node loop",
 "nodes":[{"id":"a","label":"Stool water loss"},{"id":"b","label":"Falling circulating volume","tone":"key"},{"id":"c","label":"Gut hypoperfusion"}],
 "edges":[],"caption":"x"}
cycle = {"kind":"cycle","title":"How dehydration feeds itself in gastroenteritis",
 "nodes":[{"id":"a","label":"Stool water loss"},{"id":"b","label":"Falling circulating volume","tone":"key"},
          {"id":"c","label":"Gut hypoperfusion"},{"id":"d","label":"Worse absorption"}],
 "edges":[],"caption":"x"}
cycle6 = {"kind":"cycle","title":"Six-node loop",
 "nodes":[{"id":str(i),"label":f"Stage {i} of the loop"} for i in range(1,7)],
 "edges":[],"caption":"x"}
long_flow = {"kind":"flow","title":"Six steps, wrapping to a second row",
 "nodes":[{"id":str(i),"label":f"Step number {i}","note":"a short note"} for i in range(1,7)],
 "edges":[{"from":"4","to":"5","label":"then"}],"caption":"x"}

out=[]
for name, spec in (("flow",flow),("cycle3",cycle3),("cycle",cycle),("cycle6",cycle6),("wrap",long_flow)):
    svg = diagram.render(spec)
    b=base64.b64encode(svg.encode()).decode()
    out.append(f'<div style="padding:9px"><img src="data:image/svg+xml;base64,{b}"></div>')
html='<div style="background:#0b1220;padding:12px">'+''.join(out)+'</div>'
script = 'await page.goto("https://pedshub.com/");\nawait page.setContent(' + json.dumps(html) + ');\nawait page.waitForTimeout(1300);\nawait page.setViewportSize({width:1300,height:2100});\nreturn screenshot({fullPage:true});'
open(f'{SD}/demo_script.js','w').write(script)
print('ok')
