summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjules <jules@okfoc.us>2014-01-01 23:53:29 -0500
committerjules <jules@okfoc.us>2014-01-01 23:53:29 -0500
commitb0abdb7bb0980474048110d683a81fb037854103 (patch)
treef79804b9931518724689aac3acec59a635d7a330
parent468ed78c18fea799091dd9c0e638beff24c6b7aa (diff)
save shaders locally
-rw-r--r--js/user.js38
-rw-r--r--shader-picker.html8
2 files changed, 45 insertions, 1 deletions
diff --git a/js/user.js b/js/user.js
index a1ac53e..98af86f 100644
--- a/js/user.js
+++ b/js/user.js
@@ -2,6 +2,7 @@ var user = new function(){}
user.init = function(){
user.load()
user.bind()
+ user.shaders.init()
}
user.bind = function(){
$("#username").on("input", user.save)
@@ -37,3 +38,40 @@ user.setCookie = function(username){
document.cookie = "imname="+username+";path=/;domain=.asdf.us;max-age=1086400"
localStorage.setItem("im.name", username);
}
+user.shaders = new function(){}
+user.shaders.init = function(){
+ user.shaders.bind()
+}
+user.shaders.bind = function(){
+ var shaders = JSON.parse( localStorage.getItem("im.shaders") ) || []
+ for (var i = 0; i < shaders.length; i++){
+ user.shaders.bindButton(shaders[i])
+ }
+ document.getElementById("add-shader").addEventListener("click", user.shaders.save, false)
+}
+user.shaders.bindButton = function(name){
+ var button = document.createElement("button")
+ button.innerHTML = name
+ button.addEventListener("click", user.shaders.load.bind(this, name), false)
+ document.getElementById("shaders").appendChild(button)
+}
+user.shaders.load = function(name){
+ var shader = localStorage.getItem("im.shaders." + name)
+ console.log(name,shader)
+ if (shader && shader.length > 0) {
+ $("#shader").val(shader)
+ shader_build()
+ }
+}
+user.shaders.save = function(){
+ var name = prompt("enter shader name")
+ var shader = $("#shader").val()
+ console.log(name,shader)
+ if (! name) return;
+ if (shade !== shade_no_error_handling) return;
+ localStorage.setItem("im.shaders." + name, shader)
+ var shaders = JSON.parse( localStorage.getItem("im.shaders") ) || []
+ shaders.push(name)
+ localStorage.setItem("im.shaders", JSON.stringify(shaders))
+ user.shaders.bindButton(name)
+}
diff --git a/shader-picker.html b/shader-picker.html
index 4024583..5561b6a 100644
--- a/shader-picker.html
+++ b/shader-picker.html
@@ -32,6 +32,7 @@ form { display: inline-block; }
#gallery-images { display: block; max-height: 210px; overflow-y: auto; }
#gallery-images img, #gallery-images canvas { max-width: 200px; height: 100px; margin: 5px; cursor: pointer; }
#username { width: 40px; }
+#shaders { display: inline-block; }
</style>
</head>
<body>
@@ -77,6 +78,8 @@ form { display: inline-block; }
<button id="help">help</button>
<button id="demo">demo</button>
<button id="dither-demo">dither</button>
+ <div id="shaders"></div>
+ <button id="add-shader">+</button>
<br>
</div>
@@ -169,7 +172,9 @@ function init(){
console.log("gallery init")
user.init()
- console.log("signed in as ", user.username)
+ if (user.username.length) {
+ console.log("signed in as ", user.username)
+ }
document.getElementById('shader').addEventListener('input', shader_build);
shader_build()
@@ -189,6 +194,7 @@ function demo(el){
$el = $(el)
s = $el.html()
$("#shader").html(s)
+ shader_build()
}
function load(){
loading = true