summaryrefslogtreecommitdiff
path: root/js/api
diff options
context:
space:
mode:
Diffstat (limited to 'js/api')
-rw-r--r--js/api/localstorage.js106
-rw-r--r--js/api/set.js71
2 files changed, 142 insertions, 35 deletions
diff --git a/js/api/localstorage.js b/js/api/localstorage.js
new file mode 100644
index 0000000..0ec7cad
--- /dev/null
+++ b/js/api/localstorage.js
@@ -0,0 +1,106 @@
+
+user.shaders = new function(){}
+user.shaders.init = function(){
+ user.shaders.bind()
+}
+user.shaders.bind = function(){
+ user.shaders.buttons = {}
+ if ('SHADERS' in window) {
+ user.shaders.bindButtons( window.SHADERS )
+ }
+ user.shaders.bindButtons( user.shaders.getShaders() )
+ document.getElementById("add-shader").addEventListener("click", user.shaders.save, false)
+ document.getElementById("remove-shader").addEventListener("click", user.shaders.remove, false)
+}
+user.shaders.bindButtons = function(shaders){
+ for (var i = 0; i < shaders.length; i++){
+ user.shaders.bindButton(shaders[i])
+ }
+}
+user.shaders.bindButton = function(data){
+// console.log("button >> " + data.name)
+ var button = document.createElement("button")
+ button.innerHTML = data.name
+ button.addEventListener("click", user.shaders.load.bind(this, data), false)
+ document.getElementById("shaders").appendChild(button)
+ user.shaders.buttons[data.name] = button
+}
+user.shaders.load = function(data){
+ var shader = data.shader
+ if (shader && shader.length > 0) {
+ user.shaders.name = data.name
+ $("#shader").val(shader)
+ // pause here?
+ shader_build()
+ $(".active").removeClass("active")
+ $(user.shaders.buttons[data.name]).addClass("active")
+ user.shaders.setLastAccessed(data.name)
+ }
+}
+user.shaders.loadLastAccessed = function(){
+ var name = localStorage.getItem("im.lastShader") || "colorcycle"
+ if (name in user.shaders.buttons) {
+ $(user.shaders.buttons[name]).trigger("click")
+ }
+}
+user.shaders.setLastAccessed = function(name){
+ localStorage.setItem("im.lastShader", name)
+}
+
+user.shaders.getShaderByName = function(name){
+ return { name: name, shader: user.shaders.getShaderBody(name) }
+}
+user.shaders.getShaderIndex = function(){
+ return JSON.parse( localStorage.getItem("im.shaders") ) || []
+}
+user.shaders.getShaderBody = function(name){
+ return localStorage.getItem("im.shaders."+name) || null
+}
+user.shaders.getShaders = function(){
+ var shaders = user.shaders.getShaderIndex()
+ return shaders.map(function(name){ return { name: name, shader: user.shaders.getShaderBody(name) } })
+}
+user.shaders.setShaderIndex = function(shaders){
+ localStorage.setItem("im.shaders", JSON.stringify(shaders))
+}
+user.shaders.setShader = function(name, shader){
+ if (! name.length || ! shader.length || !name.length || !shader.length) return
+ localStorage.setItem("im.shaders." + name, shader)
+}
+user.shaders.removeShader = function(name){
+ localStorage.removeItem("im.shaders." + name)
+}
+
+user.shaders.save = function(){
+ var name = prompt("enter shader name")
+ var shader = $("#shader").val()
+
+ if (! name) return;
+ if (shade !== shade_no_error_handling) return;
+
+ user.shaders.setShader(name, shader)
+
+ var shaders = user.shaders.getShaderIndex()
+ shaders.push(name)
+ user.shaders.setShaderIndex(shaders)
+
+ user.shaders.name = name
+ user.shaders.bindButton({ name: name, shader: shader })
+
+ $(".active").removeClass("active")
+ $(user.shaders.buttons[name]).addClass("active")
+ user.shaders.setLastAccessed(name)
+}
+
+user.shaders.remove = function(){
+ var name = user.shaders.name
+ if (! name || ! name.length) return
+
+ var shaders = user.shaders.getShaderIndex()
+ if (shaders.splice( shaders.indexOf(name), 1 )) {
+ user.shaders.setShaderIndex(shaders)
+ user.shaders.removeShader(name)
+ $(user.shaders.buttons[name]).remove()
+ user.shaders.name = ""
+ }
+}
diff --git a/js/api/set.js b/js/api/set.js
index 1e7e31f..834eaa8 100644
--- a/js/api/set.js
+++ b/js/api/set.js
@@ -1,39 +1,40 @@
function save_shader(){
- typeof shader_id_root == 'undefined' ? shader_id_root = "" : shader_id_root
- var params = {
- script : $("#shader").val(),
- image_url : $("#url").val(),
- username : user.username,
- shader_id : shader_id_root
- }
- console.log(params)
- $.post("/cgi-bin/im/shader/save", params, function(resp){
- console.log(resp);
- data = JSON.parse(resp)
- if (data.ERROR ){
- alert(data.ERROR)
- return false
- }
- if (! shader_id_root) {
- shader_id_root = data.id;
- }
+ typeof shader_id_root == 'undefined' ? shader_id_root = "" : shader_id_root
+ var params = {
+ script: $("#shader").val(),
+ image_url: $("#url").val(),
+ username: user.username,
+ name: $("#shader-name").val() || "",
+ shader_id: shader_id_root
+ }
+ console.log(params)
+ $.post("/cgi-bin/im/shader/save", params, function(resp){
+ console.log(resp);
+ data = JSON.parse(resp)
+ if (data.ERROR ){
+ alert(data.ERROR)
+ return false
+ }
+ if (! shader_id_root) {
+ shader_id_root = data.id;
+ }
- var blob = dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))
- var form = new FormData();
-
- form.append("id", data.id);
- form.append("qqfile", blob);
- $.ajax({
- url: "/cgi-bin/im/shader/thumbnail_upload",
- type: "POST",
- data: form,
- processData: false,
- contentType: false,
- }).done(function(resp){
- console.log(resp);
- });
+ var blob = dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))
+ var form = new FormData();
- })
- //maintain the shader_id_root...
- return shader_id_root;
+ form.append("id", data.id);
+ form.append("qqfile", blob);
+ $.ajax({
+ url: "/cgi-bin/im/shader/thumbnail_upload",
+ type: "POST",
+ data: form,
+ processData: false,
+ contentType: false,
+ }).done(function(resp){
+ console.log(resp);
+ });
+
+ })
+ //maintain the shader_id_root...
+ return shader_id_root;
}