From fd6633cd22ed7045d10d5ec782336ed3b7620ad6 Mon Sep 17 00:00:00 2001 From: snaka Date: Sun, 31 May 2009 14:07:51 +0000 Subject: Add 'done' command. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@33686 d0d07461-0603-4401-acd4-de1884942a52 --- tada.js | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 72 insertions(+), 12 deletions(-) (limited to 'tada.js') diff --git a/tada.js b/tada.js index a02afbe..0f274e6 100644 --- a/tada.js +++ b/tada.js @@ -19,7 +19,7 @@ var PLUGIN_INFO = http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/tada.js snaka MIT style license - 0.9.0 + 0.10.0 _libly.js 0) - return cachedLists; - + let result = []; var req = new libly.Request(getURI(), null, {asynchronous: false}); req.addEventListener('onSuccess', function(data) { liberator.log("success"); data.getHTMLDocument("//div[@id='Container']/div[2]/div/div/ul/li/a").forEach(function(item){ var left = $LX("../span/strong[text()]", item); - cachedLists.push([parseListId(item.href), item.innerHTML, left.innerHTML]); + result.push([parseListId(item.href), item.innerHTML, left.innerHTML]); }); }); req.get(); - if (cachedLists.length == 0) + if (result.length == 0) throw "Cannot get your list. Please chehek " + getURI() + " is accessible."; - return cachedLists; + return result; } function showTodoItems(listId) { let list = ; getTodoItems(listId).forEach(function(item) { - list.li +=
  • {item}
  • ; + list.li +=
  • {item.title}
  • ; }); liberator.echo(list, commandline.FORCE_MULTILINE); } + /* + * getTodoItems + * @return [[itemId, title], [itemId, title] ... ] + */ function getTodoItems(listId) { let result = []; var req = new libly.Request(getURI() + listId.toString(), null, {asynchronous: false}); @@ -264,7 +294,10 @@ liberator.plugins.tada = (function(){ req.addEventListener('onSuccess', function(res) { liberator.log("success"); res.getHTMLDocument("//ul[@id='incomplete_items']/li/form").forEach(function(item) { - result.push(item.textContent.replace(/^\s*|\n|\r|\s*$/g, '')); + result.push({ + itemId : item.id.match(/edit_item_([^\"]+)/)[1], + title : item.textContent.replace(/^\s*|\n|\r|\s*$/g, '') + }); }); }); req.get(); @@ -309,11 +342,38 @@ liberator.plugins.tada = (function(){ req.post(); } + function doneItem(listId, itemId) { + let endpoint = getURI() + listId + "/items/" + itemId; + liberator.dump("endpoint: " + endpoint); + + var req = new libly.Request(endpoint, null, + { + postBody: toQuery({ + "_method" : "put", + "item[completed]" : "1", + }) + } + ); + req.addEventListener('onSuccess', function(data) { + liberator.echo("Done: " + itemId); + }); + req.addEventListener('onFailure', function(data) { + liberator.echoerr("Done item failed."); + liberator.log(data.responseText); + }); + req.post(); + } + // Utilities function $s(obj) util.objectToString(obj); function $g(str) liberator.globalVariables[str]; function $LXs(a,b) libly.$U.getNodesFromXPath(a, b); function $LX(a,b) libly.$U.getFirstNodeFromXPath(a, b); + function toQuery(source) + [encodeURIComponent(i) + "=" + encodeURIComponent(source[i]) + for (i in source) + ].join('&'); + // }}} // API ////////////////////////////////////////////////////////////////{{{ -- cgit v1.2.3