start
This commit is contained in:
173
pimvrhelpers.js
Normal file
173
pimvrhelpers.js
Normal file
@@ -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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user