## 2019-02-12 #ACM #WiP

```javascript
var id = "1509254"
var url = `https://dl.acm.org/citation.cfm?id=${id}&picked=prox&preflayout=flat`
var lastURL = ""

var ensureWindowedDIV = async function(name) {
  var div = document.body.querySelector("#" + name)
  if(!div) {
    div = document.createElement("div")
    div.id = name
    div.style.overflow = "scroll"
    
    
    var w = await lively.create("lively-window")
    w.setAttribute("title", name)
    w.appendChild(div)
    lively.setPosition(w, lively.pt(0,100))
    lively.setExtent(w, lively.pt(1000,1000))
    div.style.zIndex = 100
  }
  return div
}

var dumpRaw = async function(){
  var dumpBase = "https://lively-kernel.org/lively4/bibliography-data/acm/raw/";
  var div = (await ensureWindowedDIV("ACMWindow"))
  var dumpURL = dumpBase  + id + ".html"
  await fetch(dumpURL, {
    method: "PUT",
    body: div.innerHTML
  })
  lively.notify("dumped raw" + dumpURL)
}

// dumpRaw()


var extractAbstract = async function() {
  var data = ""
  var acm = (await ensureWindowedDIV("ACMWindow"))
  var a = acm.querySelector("a[name='abstract']")
  var h1 = a && a.parentElement  
  return h1 && h1.nextElementSibling.innerHTML // otherwise we don't get line breaks...
}


var fetchBibtex = async function() {
  var data = ""

// fetch("https://dl.acm.org/downformats.cfm?id=1509254&parent_id=1509239&expformat=bibtex")
// Array.from(that.querySelectorAll("a")).filter(ea => ea.href.match("1509239"))
// #TODO find parentId
}



var extractContents = async function() {
  var data = []
  var acm = (await ensureWindowedDIV("ACMWindow"))
  var h5 = Array.from(acm.querySelectorAll("h5")).find(ea => ea.textContent.match("Table of Contents"))
  var contents = h5.parentElement
  contents.querySelectorAll("a").forEach(ea => {
    var href = ea.getAttribute("href")
    if (href) {
      var m = href.match(/citation.cfm\?id=([0-9]+)/)
      if (m) {
        data.push({
          citation: m[1]
        })        
      }
    }
  })
  return data
}



var dumpData = async function(){
  var dumpBase = "https://lively-kernel.org/lively4/bibliography-data/acm/";
 
  await fetch(dumpBase  + "abstract/" +  id + ".html", {
    method: "PUT",
    body: await extractAbstract()
  })
  // await fetch(dumpBase  + "contents/" +  id + ".json", {
  //   method: "PUT",
  //   body: JSON.stringify(await extractContents())
  // })

  lively.notify("dumped data " +  dumpBase)
}


var previewURL = async function(url) {
  var src = await fetch(url).then(r => r.text());  
  (await ensureWindowedDIV("ACMWindow")).innerHTML = src
  
}


/*
/*

previewURL(url) // start it
extractContents()

dumpData()


// extractAbstract()


*/

// debug
var preview;
(async function(){
  preview = (await ensureWindowedDIV("ACMWindow"))
})()
```
