/* to be used in the console or as a shortcut with e.g Tridactyl */
url = `https://fabien.benetou.fr/PIMVRdata/AugmentedReaderView?action=`; var pimdata = null; var lastSelection = document.getSelection().toString();
function drop_handler(ev){ ev.preventDefault(); console.log(ev); console.log("dropped, appending for now but should switch" ); /* might end up with children */ ev.target.parentElement.appendChild(document.getElementById(ev.dataTransfer.getData("application/my-app"))); /* using flex so order matters */ } function dragover_handler(ev) { ev.preventDefault(); ev.dataTransfer.dropEffect = "move"; } function dragstart_handler(ev) { ev.dataTransfer.setData("application/my-app", ev.target.id); ev.dataTransfer.effectAllowed = "move"; }
function remoteload(){
fetch(url+'source')
.then( response => { return response.json() } )
.then( data => { pimdata = data; document.querySelector("#arvnotes").innerText = data; })
}
function remotesave(data){
fetch(url+'edit', {
method: 'POST',
headers: {'Content-Type':'application/x-www-form-urlencoded'},
body: "post=1&author=PIMVR&authpw=CHANGE_ME&text="+JSON.stringify( data )
}).then(res => res).then(res => console.log("saved remotely", res)) /* should output to page */
}
fetch('https://raw.githack.com/mozilla/readability/master/Readability.js').then(response => response.text())
.then(text => { eval(text); article = new Readability(document).parse(); document.body.innerHTML =
"Sidebars for annotation loaded from own PIM! - ⌨ Shft+Ctrl+x to save to PIM.<hr>"
+"<div style='display:flex;flex-flow:row;'><div id=pimpage ondragstart=dragstart_handler(event) ondrop='drop_handler(event)' ondragover='dragover_handler(event)' draggable=true style='flex:1;'><iframe src='https://fabien.benetou.fr/Analysis/CreativityFosteringBehaviors?action=print' style=transform:scale(.8);border:0;width:90%;height:"
+window.outerHeight+"px></iframe><iframe src='https://fabien.benetou.fr/AugmentedReaderView/Ideas?action=print' style=transform:scale(.8);border:0;width:90%;></iframe></div>'"
+"<div style='flex:1;' id=readerviewcontent>" + article.content+"</div>"
+"<div id=augmentedactions ondragstart=dragstart_handler(event) ondrop='drop_handler(event)' ondragover='dragover_handler(event)' draggable=true style='flex:1;'>Automated summarization: <div id=summarized></div><hr>Previous Augmented Reader View <a href=https://fabien.benetou.fr/PIMVRdata/AugmentedReaderView?action=diff>notes</a>: <div id=arvnotes></div>"
+"<hr>Selection search (select keywords to search)<br/><iframe id=searchframe style=transform:scale(.8);border:0;width:90%;height:"+window.outerHeight+"px src="+"https://fabien.benetou.fr/?action=search&q="+lastSelection+"></iframe></div></div>";
remoteload();
fetch('https://hf.space/embed/benthecoder/news-summarizer/+/api/predict/', { method: "POST", body: JSON.stringify({"data":[ window.location.href ]}), headers: { "Content-Type": "application/json" } })
.then(function(response) { return response.json(); }).then(function(json_response){ document.querySelector("#summarized").innerText = json_response.data.join(" ")});
article = document.querySelector("#article");
if (article) autoscroll = setInterval( () => {
window.scrollBy(0, 1);
Array.from( article.children ).map( i => {
let zoomFactor = 2 / ( Math.abs( window.innerHeight/2 - i.getBoundingClientRect().top )/100);
if (zoomFactor>1) zoomFactor=1;
i.style.transform = "scale("+ zoomFactor + ")";
} )
} , 100 );
} );
selectionWatcher = setInterval( () => { selection = document.getSelection().toString(); if (selection && selection != lastSelection) document.querySelector("#searchframe").src = "https://fabien.benetou.fr/?action=search&q="+selection; lastSelection = selection } , 100 );