From ffc17bb8d18722e1a83af641c91e36ac1f8f44ab Mon Sep 17 00:00:00 2001 From: ninjatottori Date: Thu, 8 Sep 2011 22:24:25 +0900 Subject: Atndからイベント検索するやつ --- atnd.js | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 atnd.js (limited to 'atnd.js') diff --git a/atnd.js b/atnd.js new file mode 100644 index 0000000..367fa80 --- /dev/null +++ b/atnd.js @@ -0,0 +1,164 @@ +// INFO {{{ +let INFO = +<> + + ninjatottori + New BSD License + +

Event search on Atnd

+ + :atnd + +

search on atnd

+

:atnd keyword で補完リストにkeywordで取得したイベントを補完します。
+ 補完リストを使わず、:atnd keyword <Enter&rt; するとMOWに表示します +

+
+
+
+; +// }}} + + +(function(){ + commands.addUserCommand(['atnd','atend'], 'atnd.org', + function(args){ + if(args.length == 1) { + Atnd.get_events(args); + } else { + liberator.open(args[args.length-1], liberator.NEW_BACKGROUND_TAB); + } + }, + { + options : [], + completer : listCompleter, + }, + true + ); + + function listCompleter(context,args){ // {{{ + + context.title = ["url","title"] + context.filters = [CompletionContext.Filter.textDescription]; + context.compare = void 0; + context.anchored = false; + context.incomplete = true; + context.completions = Atnd.get_event2(context,args); + context.incomplete = false; + + } //}}} + + let Atnd = { //{{{ + + base_url : "http://api.atnd.org/", + get_events : function(args){ //{{{ + + let keyword = args.join(","); + if(!keyword) return; + let count = (liberator.globalVariables.atnd_get_count) ? liberator.globalVariables.atnd_get_count : 10 ; + + let req = new libly.Request( + this.base_url + "events/?keyword=" + keyword + "&format=json&count=" + count , //url + null, //headers + { // options + asynchronous:true, + } + ); + + req.addEventListener("onSuccess",function(data){ + let res = libly.$U.evalJson(data.responseText); + if(res.results_returned == 0){ + liberator.echo("keyword: " + keyword + " was no result"); + return; + } + + let res_events = res.events.filter(isEnded,new Date()) + let html,div = ""; + html = + +
+ {res_events.length + "/" + res.results_available + " events matched(include ended events)"} +
; + for (let i = 0 ; i < res_events.length ; i++) { + let r = res_events[i] + div +=
+ + {r.title} + {" - " + r.started_at} + + {" - " + r.catch} + {" - " + r.address} +
; + }; + liberator.echo(html + div) + + function isEnded(elements,index,array){ + return ((this - new Date(elements.started_at)) < 0) + } + }); + + req.addEventListener("onFailure",function(data){ + liberator.echoerr(data.statusText); + }); + + req.get(); + + }, //}}} + get_event2 : function(context,args){ //{{{ + let keyword = args.join(","); + //if(!keyword) return; + let count = (liberator.globalVariables.atnd_get_count) ? liberator.globalVariables.atnd_get_count : 10 ; + + + let req = new libly.Request( + this.base_url + "events/?keyword=" + keyword + "&format=json&count=" + count , //url + null, //headers + { // options + asynchronous:true, + } + ); + req.addEventListener("onSuccess",function(data){ + let res = libly.$U.evalJson(data.responseText); + if(res.results_returned == 0){ + return ; + } + + let event_data = []; + let res_events = res.events.filter(isEnded,new Date()); + for (let i = 0 ; i < res_events.length ; i++) { + let r = res_events[i]; + event_data.push([r.event_url,r.title + " " + r.started_at + " " + r.catch + " " + r.address]); + }; + context.completions = event_data; + + function isEnded(elements,index,array){ + return ((this - new Date(elements.started_at)) < 0) + } + }); + + req.addEventListener("onFailure",function(data){ + liberator.echoerr(data.statusText); + }); + req.get(); + }, // }}} + + + } // }}} + + + // for debug + function e(v,c){ // {{{ + if(c) util.copyToClipboard(v); + liberator.log(v,-1) + } // }}} + +})(); + -- cgit v1.2.3