summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjules <jules@okfoc.us>2013-12-27 16:35:14 -0500
committerjules <jules@okfoc.us>2013-12-27 16:35:14 -0500
commitf483f2667690ddc89961cb163a870ce84196374e (patch)
tree5579ba8de921c330c1f195f8de76b23c1b453bf8
parent58b4227998ff3e674797185d470b6d43852241de (diff)
incorporate asdf+dump search
-rw-r--r--search-random.html76
-rw-r--r--search.html160
2 files changed, 236 insertions, 0 deletions
diff --git a/search-random.html b/search-random.html
new file mode 100644
index 0000000..1d0959d
--- /dev/null
+++ b/search-random.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+<head>
+<title>Photoblaster Search Widget</title>
+<style type="text/css">
+ #images img { max-width: 200px; height: 90px; margin: 5px; }
+</style>
+<body>
+
+<div id="ui">
+ <input type="text" id="q">
+ <button id="name">N</button>
+ <button id="search">S</button>
+ <button id="random">R</button>
+ <div id="images"></div>
+</div>
+
+<div id="result">
+ <input type="text" id="url">
+ <div id="image"></div>
+</div>
+
+</body>
+<script type="text/javascript" src="js/vendor/jquery/jquery.min.js"></script>
+<script type="text/javascript">
+
+$("#random").click(random)
+$(document).on("click", "#images img", choose)
+
+random();
+
+function choose(){
+ $("#image").empty().append( $(this).clone() )
+ $("#result #url").val(this.src);
+}
+
+function load(ims){
+ $("#images").empty();
+ for (var i = 0; i < ims.length; i++) {
+ image(ims[i]);
+ }
+}
+function image(im){
+ var img = new Image ();
+ img.onload = function(){
+ $("#images").append(img);
+ }
+ img.src = im.url;
+ if (img.complete) img.onload();
+}
+
+function random(){
+ opt = {};
+ opt.data = { random: 1 };
+ opt.success = load;
+ fetch(opt);
+}
+
+function fetch(opt){
+ var params = {random:1};
+ $.ajax({
+ 'url': "http://asdf.us/cgi-bin/im/list",
+ 'data': params,
+ 'dataType': "jsonp",
+ 'success': opt.success || function(data){
+ console.log(data);
+ },
+ 'error': opt.error || function(err){
+ console.log(err);
+ }
+ });
+}
+
+</script>
+</html>
+
diff --git a/search.html b/search.html
new file mode 100644
index 0000000..f0fe7b0
--- /dev/null
+++ b/search.html
@@ -0,0 +1,160 @@
+<!doctype html>
+<html>
+<head>
+<title>Photoblaster Search Widget</title>
+<style type="text/css">
+ form { display: inline-block; }
+ #images img { max-width: 200px; height: 90px; margin: 5px; }
+ #result { height: 500px; }
+ #result img { max-height: 500px; }
+</style>
+<body>
+
+<div id="ui">
+ <form id="search">
+ <input type="text" id="search-query" value="duck bill">
+ <button id="search">DUMP SEARCH</button>
+ </form>
+ <button id="random">IM RANDOM</button>
+ <span id="status"></span>
+ <div id="images"></div>
+</div>
+
+<div id="result">
+ <input type="text" id="url">
+ <div id="image"></div>
+</div>
+
+</body>
+<script type="text/javascript" src="js/vendor/jquery/jquery.min.js"></script>
+<script type="text/javascript">
+
+var ui = {}
+ui.init = function(){
+ ui.bind()
+}
+
+ui.bind = function(){
+ $("#random").click(asdf.random)
+ $("#search").submit(dumpfm.search)
+ $(document).on("click", "#images img", gallery.choose)
+ status("ready")
+}
+
+
+//
+// gallery .. the most basic image picker
+
+var gallery = {}
+gallery.load = function(ims){
+ status("loading " + ims.length + " images");
+ $("#images").empty();
+ for (var i = 0; i < ims.length; i++) {
+ gallery.image(ims[i]);
+ }
+}
+
+gallery.image = function(im){
+ var img = new Image ();
+ img.onload = function(){
+ $("#images").append(img);
+ }
+ try { img.src = im.url; }
+ catch(e){ return; }
+ if (img.complete) img.onload();
+}
+
+gallery.choose = function(){
+ $("#image").empty().append( $(this).clone() )
+ $("#result #url").val(this.src);
+}
+
+//
+// asdf .. asdf.us/im search api
+
+var asdf = { fetching: false }
+asdf.random = function (e){
+ status("fetching random photoblasts")
+ e.preventDefault();
+ opt = {};
+ opt.data = { random: 1 };
+ opt.success = gallery.load;
+ asdf.fetch(opt);
+}
+
+asdf.fetch = function (opt){
+ if (asdf.fetching) return;
+ asdf.fetching = true;
+ var params = {random:1};
+ $.ajax({
+ 'url': "http://asdf.us/cgi-bin/im/list",
+ 'data': params,
+ 'dataType': "jsonp",
+ 'success': function(urls){
+ console.log(urls);
+ asdf.fetching = false;
+ opt.success && opt.success(urls)
+ },
+ 'error': opt.error || function(err){
+ console.log(err);
+ }
+ });
+}
+
+//
+// dumpfm .. dump.fm/search api
+
+var dumpfm = {}
+dumpfm.search = function (e){
+ e.preventDefault();
+
+ var term = $("#search-query").val().toLowerCase()
+ var rawTokens = term.split(" ")
+ var tokens = []
+ rawTokens.forEach(function(t){ if (t.length > 2) tokens.push(t) })
+ if (tokens.length == 0 || tokens[0] == "undefined") {
+ status("search query too small")
+ } else {
+ status("searching for '"+tokens.join(" and ")+"'")
+ dumpfm.fetch({
+ query: tokens.join("+"),
+ success: gallery.load
+ })
+ }
+};
+
+dumpfm.fetch = function(opt){
+ if (dumpfm.fetching) return;
+ dumpfm.fetching = true;
+ var params = {};
+ $.ajax({
+ 'url': "http://dump.fm/cmd/search/" + opt.query,
+ 'data': params,
+ 'dataType': "jsonp",
+ 'success': function(urls){
+ dumpfm.fetching = false;
+ for (var i = 0, len = urls.length; i < len; i++) {
+ var url = urls[i].url;
+ if (url.match(/^\d+\//)) {
+ url = "http://dump.fm/images/" + url;
+ }
+ else {
+ url = "http://" + url;
+ }
+ urls[i].url = url;
+ }
+ opt.success && opt.success(urls)
+ },
+ 'error': opt.error || function(err){
+ console.log(err);
+ }
+ });
+}
+
+function status(s){ $("#status").html(s); console.log(s) }
+
+$(ui.init);
+
+</script>
+</html>
+