import sys, time, json, urllib.request
sys.path.insert(0, "/tmp/amdwork")
import cdp

LOG="/tmp/amdwork/rc_expand.log"
def log(*a):
    with open(LOG,"a") as f: f.write(" ".join(str(x) for x in a)+"\n")
open(LOG,"w").close()

def targets():
    return [t for t in json.loads(urllib.request.urlopen("http://localhost:9223/json",timeout=10).read()) if t.get("type")=="page"]
rc=None
for t in targets():
    if "/reportcenter/" in (t.get("url") or ""): rc=t; break
if not rc:
    log("NO RC"); log("DONE_EXP"); sys.exit(0)
p=cdp.attach(rc); p.enable()
log("RC url:", p.eval("location.href"))

# Click a category header to expand. Try 'Procedure Codes' (reference data, no PHI), fallback 'Diagnosis Codes'
for cat in ["Procedure Codes","Diagnosis Codes","Providers / Groups"]:
    r=p.eval("""(function(){
      var els=Array.from(document.querySelectorAll('*')).filter(function(e){
        return e.children.length<=2 && (e.innerText||'').trim()===%r;
      });
      if(!els.length) return 'NOCAT';
      els[0].click();
      return 'CLICKED';
    })()""" % cat)
    log("expand", cat, ":", r)
    time.sleep(2)
    # enumerate report links now visible under tree
    items=p.eval("""(function(){
      function vis(e){var r=e.getBoundingClientRect();var s=getComputedStyle(e);return r.width>0&&r.height>0&&s.display!=='none';}
      var out=[];
      document.querySelectorAll('a,li,span,div').forEach(function(e){
        if(!vis(e))return;
        if(e.children.length>1)return;
        var t=(e.innerText||'').trim();
        if(t && t.length>3 && t.length<60 && /report|list|listing|summary|code/i.test(t)) out.push(t);
      });
      return JSON.stringify(Array.from(new Set(out)).slice(0,40));
    })()""")
    log("  items:", items)
    if r=="CLICKED":
        break

p.screenshot("/tmp/amdwork/rc-expanded.png")
log("SHOT:/tmp/amdwork/rc-expanded.png")
log("DONE_EXP")
p.close()
