summaryrefslogtreecommitdiff
path: root/js/api
diff options
context:
space:
mode:
Diffstat (limited to 'js/api')
-rw-r--r--js/api/gallery.js40
-rw-r--r--js/api/get.js2
-rw-r--r--js/api/localstorage.js4
-rw-r--r--js/api/set.js57
4 files changed, 72 insertions, 31 deletions
diff --git a/js/api/gallery.js b/js/api/gallery.js
index 92764c6..8f9914b 100644
--- a/js/api/gallery.js
+++ b/js/api/gallery.js
@@ -22,37 +22,59 @@ shader_gallery.bind = function(){
ShaderAPI.list_users(function(err, users){
var $el = $("#pick-user").empty()
- for (var i in users) {
+
+ var $option = $("<option>")
+ var username = "users"
+ $option.val("LATEST").html(username)
+ $el.append( $option )
+
+ users.sort(function(a,b){
+ return a.username < b.username ? -1 : a.username > b.username ? 1 : 0
+ }).forEach(function(user){
var $option = $("<option>")
- var username = users[i].username
+ var username = user.username
$option.val(username).html(username)
$el.append( $option )
- }
- })
+ })
+ });
$(document).on("change", "#pick-user", function(){
var name = $(this).val()
- ShaderAPI.username(name, load_shaders)
+ if (name == "LATEST") {
+ ShaderAPI.latest(load_shaders)
+ }
+ else {
+ ShaderAPI.username(name, load_shaders)
+ }
})
$(document).on("click", ".shader", function(){
run_shader( $(this).data("shader") )
})
}
-function new_shader(){
+function new_shader(opt){
+ opt = opt || {}
+ shader_id_root = null
run_shader({
id: "",
shader_id: "",
image_url: $("#url").val(),
- script: "",
- name: ""
+ script: opt.shader || "",
+ name: opt.name || ""
})
}
function run_shader(shader_object){
console.log(shader_object)
shader_id_root = shader_object.shader_id
if ($("#persist-image:checked").length) {
+ var new_w = parseInt(shader_object.width, 10)
+ var new_h = parseInt(shader_object.height, 10)
$("#url").val( shader_object.image_url )
+ if (new_w && new_h) {
+ preserve_dimensions = true
+ actual_w = w = new_w
+ actual_h = h = new_h
+ }
load()
}
$("#shader").val(shader_object.script)
@@ -75,10 +97,12 @@ function load_shaders(err, shaders){
function display_shader(shader_object){
var $shader = $("<div>").addClass("shader")
$shader.data("shader", shader_object)
+ $shader.data("id", shader_object.id)
var html = shader_gallery_template
for (var field in shader_object) {
html = html.replace("{" + field + "}", shader_object[field])
}
$shader.html(html)
+ shader_object.id && $shader.data("id", shader_object.id)
return $shader;
}
diff --git a/js/api/get.js b/js/api/get.js
index ae06dbd..742d41f 100644
--- a/js/api/get.js
+++ b/js/api/get.js
@@ -1,5 +1,5 @@
;var ShaderAPI = {}
-ShaderAPI.limit = 24
+ShaderAPI.limit = 50
// info - fetch a single shader
// id: shader id
diff --git a/js/api/localstorage.js b/js/api/localstorage.js
index eeae658..835d139 100644
--- a/js/api/localstorage.js
+++ b/js/api/localstorage.js
@@ -5,8 +5,8 @@ local_shaders.init = function(){
}
local_shaders.bind = function(){
local_shaders.buttons = {}
- if ('SHADERS' in window) {
- local_shaders.bindButtons( window.SHADERS )
+ if ('EXAMPLE_SHADERS' in window) {
+ local_shaders.bindButtons( window.EXAMPLE_SHADERS )
}
local_shaders.bindButtons( local_shaders.getShaders() )
document.getElementById("add-shader").addEventListener("click", local_shaders.save, false)
diff --git a/js/api/set.js b/js/api/set.js
index 92cc071..19f3f26 100644
--- a/js/api/set.js
+++ b/js/api/set.js
@@ -6,18 +6,23 @@ function save_shader(){
image_url: $("#url").val(),
username: user.username,
name: $("#shader-name").val() || "",
- shader_id: shader_id_root
+ shader_id: shader_id_root,
+ width: $("#width").int() || "",
+ height: $("#height").int() || ""
}
- var blob = dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))
+ var thumb = make_thumbnail()
+ status('saving..')
console.log(params)
- $.post("http://asdf.us/cgi-bin/im/shader/save", params, function(resp){
+ $.post("/cgi-bin/im/shader/save", params, function(resp){
console.log(resp);
data = JSON.parse(resp)
if (data.ERROR){
+ status('error saving shader')
alert(data.ERROR)
return false
}
+ status('uploading thumbnail')
if (! shader_id_root) {
shader_id_root = data.id;
}
@@ -28,23 +33,35 @@ function save_shader(){
$shader = display_shader(params)
$("#shader-gallery").prepend($shader)
- var form = new FormData();
+ save_thumbnail(data.id, thumb, $shader)
+ })
+}
- form.append("id", data.id);
- form.append("qqfile", blob);
- $.ajax({
- url: "http://asdf.us/cgi-bin/im/shader/thumbnail_upload",
- type: "POST",
- data: form,
- processData: false,
- contentType: false,
- }).done(function(resp){
- console.log(resp);
- var data = JSON.parse(resp)
- if (data.success) {
- $shader.find("img").attr("src", data.url)
- }
- });
+function make_thumbnail(){
+ return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))
+}
- })
+function save_thumbnail(id, thumb, $shader){
+ if (! id || id == "") return
+
+ thumb = thumb || make_thumbnail()
+
+ var form = new FormData();
+
+ form.append("id", id);
+ form.append("qqfile", thumb);
+ $.ajax({
+ url: "/cgi-bin/im/shader/thumbnail_upload",
+ type: "POST",
+ data: form,
+ processData: false,
+ contentType: false,
+ }).done(function(resp){
+ console.log(resp);
+ status('')
+ var data = JSON.parse(resp)
+ if (data.success) {
+ $shader.find("img").attr("src", data.url)
+ }
+ });
}