dormouse
Version:
Javascript API for Dormouse
84 lines (69 loc) • 12.4 kB
HTML
<html> <head> <title>tasks.coffee</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <div id="jump_to"> Jump To … <div id="jump_wrapper"> <div id="jump_page"> <a class="source" href="assembler.html"> assembler.coffee </a> <a class="source" href="connection.html"> connection.coffee </a> <a class="source" href="libutils.html"> libutils.coffee </a> <a class="source" href="mixin.html"> mixin.coffee </a> <a class="source" href="projects.html"> projects.coffee </a> <a class="source" href="query.html"> query.coffee </a> <a class="source" href="tasks.html"> tasks.coffee </a> </div> </div> </div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> tasks.coffee </h1> </th> <th class="code"> </th> </tr> </thead> <tbody> <tr id="section-1"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-1">¶</a> </div> <p>Here you can see the methods on <code>dormouse</code> pertaining to tasks</p>
<h3>Task structure on API</h3>
<p>The starred properties are required to create a new task</p>
<pre><code>{
id: 1234,
name: "ManReduce-Step-1",
* project_id: 11,
* template_id: 7,
duplication: 1,
replication: 1,
created_at: "2011-10-14T14:02:47Z",
updated_at: "2011-10-14T14:02:47Z",
expires_at: "",
eligibility: {
communities: [],
predicate: null
},
* parameters: {
question: "blah",
type: "abc"
}
}
</code></pre>
<h3>Template formatting</h3>
<p>Templates follow {{ <a href="http://mustache.github.com/">mustache.js</a> }} style.
Uses the <code>task.parameters</code> object as a context for the template,
but copies over a few top level properties before doing so.</p>
<p>A simple template example is</p>
<pre><code><p>Here is {{ name }} task</p>
<p>It is of {{ type }} type</p>
</code></pre> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <h3>And now for code</h3> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">¶</a> </div> <p>Connection and Query needed.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">Connection = </span><span class="nx">require</span><span class="p">(</span><span class="s1">'./connection'</span><span class="p">).</span><span class="nx">Connection</span>
<span class="nv">Query = </span><span class="nx">require</span><span class="p">(</span><span class="s1">'./query'</span><span class="p">).</span><span class="nx">Query</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">¶</a> </div> <p>Templating settings</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">_ = </span><span class="nx">require</span> <span class="s1">'underscore'</span>
<span class="nv">_.templateSettings =</span>
<span class="nv">interpolate : </span><span class="sr">/\{\{(.+?)\}\}/g</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">¶</a> </div> <p>Mixin for Dormouse with methods to manipulate tasks</p> </td> <td class="code"> <div class="highlight"><pre><span class="k">class</span> <span class="nx">Tasks</span> <span class="k">extends</span> <span class="nx">Connection</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">¶</a> </div> <p>Fetch a task from Dormouse</p>
<p>@param id of task</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@getTask: </span><span class="nf">(id, callback) -></span>
<span class="nx">@get</span> <span class="s2">"tasks/#{id}.json"</span><span class="p">,</span> <span class="nf">(err, r) -></span>
<span class="k">if</span> <span class="nx">err</span> <span class="k">then</span> <span class="nx">callback</span> <span class="nx">err</span><span class="p">,</span> <span class="nx">r</span>
<span class="k">else</span> <span class="nx">callback</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nx">task</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">¶</a> </div> <p>Fetches all tasks from Dormouse.</p>
<p>Look at <strong>query.coffee</strong> for the structure of the returned object</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@getTasks: </span><span class="nf">(callback) -></span>
<span class="nv">q = </span><span class="k">new</span> <span class="nx">Query</span><span class="p">()</span>
<span class="k">if</span> <span class="nx">callback</span> <span class="o">and</span> <span class="k">typeof</span> <span class="nx">callback</span> <span class="o">is</span> <span class="s1">'function'</span>
<span class="nx">q</span><span class="p">.</span><span class="nx">run</span> <span class="nx">callback</span>
<span class="nx">q</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">¶</a> </div> <p>Render the <code>task</code> in HTML assumpting that <code>snippet</code> is a raw HTML template.</p>
<p>Makes no allowances for escaped HTML, it will be returned as escaped too.
You can safely use <code>document.body.innerHTML</code> here.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@render: </span><span class="nf">(snippet, task) -></span>
<span class="nv">template = </span><span class="nx">_</span><span class="p">.</span><span class="nx">template</span> <span class="nx">snippet</span>
<span class="nv">context = </span><span class="p">{}</span>
<span class="nx">_</span><span class="p">.</span><span class="nx">extend</span> <span class="nx">context</span><span class="p">,</span> <span class="nx">task</span><span class="p">.</span><span class="nx">parameters</span>
<span class="p">[</span><span class="s1">'id'</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">,</span> <span class="s1">'project_id'</span><span class="p">,</span> <span class="s1">'template_id'</span><span class="p">].</span><span class="nx">forEach</span> <span class="nf">(prop) -></span>
<span class="nx">context</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span> <span class="o">=</span> <span class="nx">task</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span>
<span class="nx">template</span> <span class="nx">context</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">¶</a> </div> <p>@param task_info object following the format outlined in the task structure
section</p>
<p>@callback <code>{ status: 'created', location: 1234 }</code></p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@createTask: </span><span class="nf">(task_info, callback) -></span>
<span class="nv">required_fields = </span><span class="p">[</span> <span class="s1">'project_id'</span><span class="p">,</span> <span class="s1">'template_id'</span><span class="p">,</span> <span class="s1">'parameters'</span> <span class="p">]</span>
<span class="k">for</span> <span class="nx">field</span> <span class="k">in</span> <span class="nx">required_fields</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span> <span class="s2">"Required field for task creation: #{field}"</span> <span class="nx">unless</span> <span class="nx">field</span> <span class="k">of</span> <span class="nx">task_info</span>
<span class="nx">task_info</span><span class="p">.</span><span class="nx">eligibility</span> <span class="o">?=</span> <span class="nv">predicate: </span><span class="kc">null</span><span class="p">,</span> <span class="nv">communities: </span><span class="p">[]</span>
<span class="nx">task_info</span><span class="p">.</span><span class="nx">replication</span> <span class="o">?=</span> <span class="mi">1</span>
<span class="nx">task_info</span><span class="p">.</span><span class="nx">duplication</span> <span class="o">?=</span> <span class="mi">1</span>
<span class="nv">post_path = </span><span class="s1">'tasks.json'</span>
<span class="k">this</span><span class="p">.</span><span class="nx">post</span> <span class="nx">post_path</span><span class="p">,</span> <span class="p">{},</span> <span class="p">{</span> <span class="s1">'task'</span><span class="o">:</span> <span class="nx">task_info</span> <span class="p">},</span> <span class="nx">callback</span>
<span class="vi">@answerTask: </span><span class="nf">(task_id, answer_info, callback) -></span>
<span class="nv">put_path = </span><span class="s2">"tasks/#{task_id}/answer.json"</span>
<span class="k">this</span><span class="p">.</span><span class="nx">put</span> <span class="nx">put_path</span><span class="p">,</span> <span class="p">{},</span> <span class="nx">answer_info</span><span class="p">,</span> <span class="nx">callback</span>
<span class="vi">@deleteTask: </span><span class="nf">(task_id, callback) -></span>
<span class="nv">delete_path = </span> <span class="s2">"tasks/#{task_id}.json"</span>
<span class="k">this</span><span class="p">.</span><span class="k">delete</span> <span class="nx">delete_path</span><span class="p">,</span> <span class="nx">callback</span>
<span class="nv">exports.Tasks = </span><span class="nx">Tasks</span>
</pre></div> </td> </tr> </tbody> </table> </div> </body> </html>