parent
a479cb8abc
commit
1f753edbca
@ -0,0 +1,173 @@ |
||||
//---------PIM helper functions-----------------------------------------------------------
|
||||
/* |
||||
currently PmWiki backend |
||||
could use http://fabien.benetou.fr/Site/AllRecentChanges?action=source to check for update
|
||||
heavy but nearly no processing required |
||||
enough if done once per minute or so |
||||
if update, request serverrender on modified page |
||||
IFF it's being displayed |
||||
planned Evernote backend |
||||
https://github.com/evernote/evernote-sdk-js
|
||||
https://github.com/wanasit/everest-js
|
||||
https://stackoverflow.com/questions/24580588/how-to-list-all-the-notes-from-an-evernote-notebook-javascript-node-js
|
||||
https://dev.evernote.com/doc/articles/polling_notification.php
|
||||
or other popular PIMs |
||||
https://developers.trello.com/
|
||||
http://www.xmind.net/developer/
|
||||
ideally with webhooks on a backend abstraction with coherent API
|
||||
|
||||
*/ |
||||
|
||||
function pimvrSaveItemsStates(callback) { |
||||
function updateItemsStates(globalStates){
|
||||
let pageStates = {}; |
||||
let [group, page] = getPageGroup(); |
||||
let elements = document.body.querySelectorAll('.pimvr-item'); |
||||
for (let item of elements) { |
||||
let id = item.getAttribute("id"); |
||||
let position = item.getComputedAttribute("position"); |
||||
pageStates[id] = {"position": position}; |
||||
} |
||||
globalStates[group+"_"+page] = pageStates; |
||||
pimvrSaveRemote("ItemsStates", JSON.stringify(globalStates)); |
||||
return "Items states saved"; |
||||
|
||||
} |
||||
pimvrLoadRemote("ItemsStates", updateItemsStates); |
||||
}
|
||||
|
||||
function pimvrSaveConfiguration(callback) { |
||||
let configuration = {}; |
||||
let elements = document.body.querySelectorAll('.pimvr-configuration'); |
||||
for (let item of elements) { |
||||
let id = item.getAttribute("id"); |
||||
let position = item.getComputedAttribute("position"); |
||||
configuration[id] = {"position": position}; |
||||
} |
||||
|
||||
pimvrSaveRemote("Configuration", JSON.stringify(configuration)); |
||||
return "Configuration saved"; |
||||
} |
||||
|
||||
function pimvrLoadIoTData(callback) { |
||||
// should give min/max ranges, here seems to be 0-1010
|
||||
// to use (once normalized) as an attribute value
|
||||
// used on http://jsbin.com/nucanat/edit?html,output
|
||||
// warning HTTPS on tick is really hammering
|
||||
const readURL = "https://fabien.benetou.fr/PIMVRdata/IoTData?action=source"; |
||||
|
||||
var myRequest = new XMLHttpRequest(); |
||||
myRequest.open('GET', readURL); |
||||
myRequest.onreadystatechange = function () { |
||||
if (myRequest.readyState === 4) { |
||||
callback(myRequest.responseText); |
||||
} |
||||
}; |
||||
myRequest.send(); |
||||
}
|
||||
|
||||
function pimvrServerRender(group, page, callback) { |
||||
const readURL = "https://fabien.benetou.fr/"+group+"/"+page+"?action=serverrender"; |
||||
|
||||
var myRequest = new XMLHttpRequest(); |
||||
myRequest.open('GET', readURL); |
||||
myRequest.onreadystatechange = function () { |
||||
if (myRequest.readyState === 4) { |
||||
callback(JSON.parse(myRequest.responseText).res); |
||||
} |
||||
}; |
||||
myRequest.send(); |
||||
} |
||||
|
||||
function pimvrLoadRemoteSmarthWatchConfiguration(callback) { |
||||
|
||||
const readURL = "https://fabien.benetou.fr/PIMVRdata/SmartWatchConfiguration?action=source"; |
||||
|
||||
var myRequest = new XMLHttpRequest(); |
||||
myRequest.open('GET', readURL); |
||||
myRequest.onreadystatechange = function () { |
||||
if (myRequest.readyState === 4) { |
||||
callback(JSON.parse(myRequest.responseText)); |
||||
} |
||||
}; |
||||
myRequest.send(); |
||||
} |
||||
//pimvrLoadRemoteSmarthWatchConfiguration(console.log);
|
||||
// usage unclear, can be used as
|
||||
// haptic feedback on interactible items e.g. vibrate on gaze
|
||||
// controller backup e.g. gaze+click
|
||||
// controller locator e.g. making 2 bright columns
|
||||
// heart rate monitor (sadly not with PebbleTime) to reshape experience
|
||||
|
||||
function pimvrLoadRemoteMetadata(group, page, callback, query) { |
||||
|
||||
const readURL = "https://fabien.benetou.fr/"+group+"/"+page+"?action=metajson"; |
||||
|
||||
var myRequest = new XMLHttpRequest(); |
||||
myRequest.open('GET', readURL+"&query="+query, true); |
||||
myRequest.onreadystatechange = function () { |
||||
if (myRequest.readyState === 4) { |
||||
callback(JSON.parse(myRequest.responseText)); |
||||
} |
||||
}; |
||||
myRequest.send(); |
||||
} |
||||
|
||||
function pimvrLoadRemote(page, callback) { |
||||
|
||||
const readURL = "https://fabien.benetou.fr/PIMVRdata/"+page+"?action=source"; |
||||
// assumes JSON
|
||||
|
||||
var myRequest = new XMLHttpRequest(); |
||||
myRequest.open('GET', readURL); |
||||
myRequest.onreadystatechange = function () { |
||||
if (myRequest.readyState === 4) { |
||||
callback(JSON.parse(myRequest.responseText)); |
||||
} |
||||
}; |
||||
myRequest.send(); |
||||
} |
||||
|
||||
function pimvrSaveRemote(page, data) { |
||||
const writeURL = "https://fabien.benetou.fr/PIMVRdata/"+page+"?action=edit"; |
||||
|
||||
var myWriteRequest = new XMLHttpRequest(); |
||||
myWriteRequest.open('POST', writeURL, true); |
||||
myWriteRequest.setRequestHeader("Content-Type", |
||||
"application/x-www-form-urlencoded"); |
||||
myWriteRequest.onreadystatechange = function () { |
||||
if (myWriteRequest.readyState === 4) { |
||||
//console.log(myWriteRequest.responseText);
|
||||
console.log("Save on "+page+" sucessful"); |
||||
} |
||||
}; |
||||
console.log("trying to open "+writeURL+"post=1&author=PIMVR&authpw=edit_password&text="+data) |
||||
myWriteRequest.send("post=1&author=PIMVR&authpw=edit_password&text="+data); |
||||
// cf http://www.pmwiki.org/wiki/PmWiki/EditingAPI
|
||||
} |
||||
|
||||
function loadRemoteGraph(callback, params){ |
||||
const myDataURL = "https://vatelier.net/MyDemo/newtooling/wiki_graph.json"; |
||||
// not that as agressive as it gets cached
|
||||
|
||||
var myRequest = new XMLHttpRequest(); |
||||
myRequest.open('GET', myDataURL); |
||||
myRequest.onreadystatechange = function () { |
||||
if (myRequest.readyState === 4) { |
||||
//window.PIMgraph = JSON.parse(myRequest.responseText).Nodes;
|
||||
callback(JSON.parse(myRequest.responseText).Nodes, params); |
||||
} |
||||
}; |
||||
myRequest.send(); |
||||
} |
||||
|
||||
function getMyNeighbours(nodes, page){ |
||||
console.log(nodes[page].Targets); |
||||
} |
||||
|
||||
function getPageGroup(){
|
||||
let group = QueryString.group || "Main"; |
||||
let page = QueryString.page || "HomePage"; |
||||
return [group, page]; |
||||
} |
||||
|
Loading…
Reference in new issue