LiteGraph.node_images_path = "../nodes_data/";
var editor = new LiteGraph.Editor("main");
window.graphcanvas = editor.graphcanvas;
window.graph = editor.graph;
window.addEventListener("resize", function() { editor.graphcanvas.resize(); } );
//window.addEventListener("keydown", editor.graphcanvas.processKey.bind(editor.graphcanvas) );
window.onbeforeunload = function(){
var data = JSON.stringify( graph.serialize() );
localStorage.setItem("litegraphg demo backup", data );
}
//create scene selector
var elem = document.createElement("span");
elem.className = "selector";
elem.innerHTML = "Demo ";
editor.tools.appendChild(elem);
var select = elem.querySelector("select");
select.addEventListener("change", function(e){
var option = this.options[this.selectedIndex];
var url = option.dataset["url"];
if(url)
graph.load( url );
else if(option.callback)
option.callback();
else
graph.clear();
});
elem.querySelector("#save").addEventListener("click",function(){
console.log("saved");
localStorage.setItem( "graphdemo_save", JSON.stringify( graph.serialize() ) );
});
elem.querySelector("#load").addEventListener("click",function(){
var data = localStorage.getItem( "graphdemo_save" );
if(data)
graph.configure( JSON.parse( data ) );
console.log("loaded");
});
elem.querySelector("#download").addEventListener("click",function(){
var data = JSON.stringify( graph.serialize() );
var file = new Blob( [ data ] );
var url = URL.createObjectURL( file );
var element = document.createElement("a");
element.setAttribute('href', url);
element.setAttribute('download', "graph.JSON" );
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
setTimeout( function(){ URL.revokeObjectURL( url ); }, 1000*60 ); //wait one minute to revoke url
});
function addDemo( name, url )
{
var option = document.createElement("option");
if(url.constructor === String)
option.dataset["url"] = url;
else
option.callback = url;
option.innerHTML = name;
select.appendChild( option );
}
//some examples
addDemo("Features", "examples/features.json");
addDemo("Benchmark", "examples/benchmark.json");
addDemo("Subgraph", "examples/subgraph.json");
addDemo("Audio", "examples/audio.json");
addDemo("Audio Delay", "examples/audio_delay.json");
addDemo("Audio Reverb", "examples/audio_reverb.json");
addDemo("MIDI Generation", "examples/midi_generation.json");
addDemo("autobackup", function(){
var data = localStorage.getItem("litegraphg demo backup");
if(!data)
return;
var graph_data = JSON.parse(data);
graph.configure( graph_data );
});