UNPKG

dormouse

Version:

Javascript API for Dormouse

84 lines (69 loc) 12.4 kB
<!DOCTYPE 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 &hellip; <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">&#182;</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>&lt;p&gt;Here is {{ name }} task&lt;/p&gt; &lt;p&gt;It is of {{ type }} type&lt;/p&gt; </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">&#182;</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">&#182;</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">&#39;./connection&#39;</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">&#39;./query&#39;</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">&#182;</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">&#39;underscore&#39;</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">&#182;</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">&#182;</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) -&gt;</span> <span class="nx">@get</span> <span class="s2">&quot;tasks/#{id}.json&quot;</span><span class="p">,</span> <span class="nf">(err, r) -&gt;</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">&#182;</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) -&gt;</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">&#39;function&#39;</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">&#182;</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) -&gt;</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">&#39;id&#39;</span><span class="p">,</span> <span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="s1">&#39;project_id&#39;</span><span class="p">,</span> <span class="s1">&#39;template_id&#39;</span><span class="p">].</span><span class="nx">forEach</span> <span class="nf">(prop) -&gt;</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">&#182;</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) -&gt;</span> <span class="nv">required_fields = </span><span class="p">[</span> <span class="s1">&#39;project_id&#39;</span><span class="p">,</span> <span class="s1">&#39;template_id&#39;</span><span class="p">,</span> <span class="s1">&#39;parameters&#39;</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">&quot;Required field for task creation: #{field}&quot;</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">&#39;tasks.json&#39;</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">&#39;task&#39;</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) -&gt;</span> <span class="nv">put_path = </span><span class="s2">&quot;tasks/#{task_id}/answer.json&quot;</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) -&gt;</span> <span class="nv">delete_path = </span> <span class="s2">&quot;tasks/#{task_id}.json&quot;</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>