nodulator
Version:
Complete NodeJS Framework for Restfull APIs
473 lines (311 loc) • 15.3 kB
HTML
<html>
<head>
<title>View.ls</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
<link rel="stylesheet" media="all" href="docco.css" />
</head>
<body>
<div id="container">
<div id="background"></div>
<ul id="jump_to">
<li>
<a class="large" href="javascript:void(0);">Jump To …</a>
<a class="small" href="javascript:void(0);">+</a>
<div id="jump_wrapper">
<div id="jump_page_wrapper">
<div id="jump_page">
<a class="source" href="Nodulator.html">
Nodulator.ls
</a>
<a class="source" href="ClientDB.html">
ClientDB.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Resource.html">
Resource.ls
</a>
<a class="source" href="Bus.html">
Bus.ls
</a>
<a class="source" href="Cache.html">
Cache.ls
</a>
<a class="source" href="ChangeWatcher.html">
ChangeWatcher.ls
</a>
<a class="source" href="Debug.html">
Debug.ls
</a>
<a class="source" href="Wrappers.html">
Wrappers.ls
</a>
<a class="source" href="Nodulator.html">
Nodulator.ls
</a>
<a class="source" href="Resource.html">
Resource.ls
</a>
<a class="source" href="Schema.html">
Schema.ls
</a>
<a class="source" href="NModule.html">
NModule.ls
</a>
<a class="source" href="AccountResource.html">
AccountResource.ls
</a>
<a class="source" href="User.html">
User.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Nodulator-Angular.html">
Nodulator-Angular.ls
</a>
<a class="source" href="TaskDirective.html">
TaskDirective.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="TaskService.html">
TaskService.ls
</a>
<a class="source" href="main.html">
main.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Task.html">
Task.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="DOM.html">
DOM.ls
</a>
<a class="source" href="View.html">
View.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Nodulator.html">
Nodulator.ls
</a>
<a class="source" href="Mongo.html">
Mongo.ls
</a>
<a class="source" href="Mysql.html">
Mysql.ls
</a>
<a class="source" href="SqlMem.html">
SqlMem.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
<a class="source" href="Resource.html">
Resource.ls
</a>
<a class="source" href="Request.html">
Request.ls
</a>
<a class="source" href="Route.html">
Route.ls
</a>
<a class="source" href="index.html">
index.ls
</a>
</div>
</div>
</li>
</ul>
<ul class="sections">
<li id="title">
<div class="annotation">
<h1>View.ls</h1>
</div>
</li>
<li id="section-1">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-1">¶</a>
</div>
</div>
<div class="content"><div class='highlight'><pre><span class="hljs-function">
<span class="hljs-title">View</span> = <span class="hljs-params">(context, fn)</span> -></span>
@_type = \View
<span class="hljs-keyword">if</span> <span class="hljs-keyword">typeof</span>! context <span class="hljs-keyword">is</span> \Function <span class="hljs-keyword">and</span> <span class="hljs-keyword">not</span> fn?
fn := context
context := <span class="hljs-literal">null</span>
<span class="hljs-function">
<span class="hljs-title">RealRender</span> = <span class="hljs-params">(...args, done)</span> -></span></pre></div></div>
</li>
<li id="section-2">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-2">¶</a>
</div>
<p>console.log ‘Rerender’</p>
</div>
<div class="content"><div class='highlight'><pre> listener = <span class="hljs-literal">null</span>
isInstance = @_type <span class="hljs-keyword">and</span> @id?
<span class="hljs-keyword">if</span> isInstance
<span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">of</span> @
let k = k
<span class="hljs-keyword">if</span> <span class="hljs-keyword">typeof</span>! v <span class="hljs-keyword">is</span> \Array <span class="hljs-keyword">and</span> k <span class="hljs-keyword">in</span> map (.name), @_schema.assocs
@[k + \_] = N.Watch.Value v
assoc = find (.name <span class="hljs-keyword">is</span> k), @_schema.assocs
N.bus.<span class="hljs-literal">on</span> \new_ + assoc.type._type, ~>
<span class="hljs-keyword">if</span> assoc.keyType <span class="hljs-keyword">is</span> \distant
<span class="hljs-keyword">if</span> it[assoc.foreign] <span class="hljs-keyword">is</span> @id
@[k + \_] @[k].concat [<span class="hljs-keyword">new</span> assoc.type it]
<span class="hljs-keyword">if</span> @ <span class="hljs-keyword">isnt</span> <span class="hljs-built_in">window</span>
<span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">of</span> @
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span>! v <span class="hljs-keyword">isnt</span> \Function <span class="hljs-keyword">and</span> k<span class="hljs-number">.0</span> <span class="hljs-keyword">isnt</span> \_) <span class="hljs-keyword">or</span> (<span class="hljs-keyword">typeof</span>! v <span class="hljs-keyword">is</span> \Array <span class="hljs-keyword">and</span> !isInstance)
@[k + \_] = <span class="hljs-keyword">new</span> N.Watch.Value v
<span class="hljs-keyword">if</span> isInstance <span class="hljs-keyword">and</span> listener?
N.bus.removeListeners \update_ + @_type + \_ + @id, listener
viewRoot = DOM.div!
first = <span class="hljs-literal">true</span>
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> done?
done := args
args := []
N.Watch ~></pre></div></div>
</li>
<li id="section-3">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-3">¶</a>
</div>
<p>console.log ‘WATCH !!!!’ @</p>
</div>
<div class="content"><div class='highlight'><pre> viewRoot.Empty!
render = viewRoot.AddChild fn.apply @, args
<span class="hljs-keyword">if</span> first</pre></div></div>
</li>
<li id="section-4">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-4">¶</a>
</div>
<p>console.log ‘First?’, first</p>
</div>
<div class="content"><div class='highlight'><pre> first := <span class="hljs-literal">false</span>
<span class="hljs-keyword">if</span> isInstance</pre></div></div>
</li>
<li id="section-5">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-5">¶</a>
</div>
<p>console.log ‘Instance’ @</p>
</div>
<div class="content"><div class='highlight'><pre> name = @_type
listener := (changed) ~>
<span class="hljs-built_in">console</span>.log <span class="hljs-string">'Tamere'</span> changed
<span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">of</span> changed <span class="hljs-keyword">when</span> @[k]?
@[k + \_] v
@[k] = v
N.bus.<span class="hljs-literal">on</span> \update_ + name + \_ + @id, listener
<span class="hljs-keyword">return</span> done <span class="hljs-literal">null</span>, render
render.Make!<span class="hljs-keyword">catch</span> <span class="hljs-built_in">console</span>~error
viewRoot
ret = (...args) ~>
(<span class="hljs-function">-></span>) <<< <span class="hljs-keyword">do</span>
_type: \View
Render: (done) ~>
args_ = args
args_.push done <span class="hljs-keyword">if</span> done?
ctx = {} <<< context
RealRender.apply ctx, args_
ret._type = \View
ret.Render = <span class="hljs-function"><span class="hljs-params">(done)</span> -></span></pre></div></div>
</li>
<li id="section-6">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-6">¶</a>
</div>
<p>console.log done
ctx = {} <<< context</p>
</div>
<div class="content"><div class='highlight'><pre> RealRender.call context, done
ret.AttachResource = <span class="hljs-function"><span class="hljs-params">(res)</span> -></span></pre></div></div>
</li>
<li id="section-7">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-7">¶</a>
</div>
<p>if res?
for k, v of res
if typeof! v isnt \Function and typeof! v isnt \Array
res[k] = new N.Watch.Value v
context := res</p>
</div>
</li>
<li id="section-8">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-8">¶</a>
</div>
<p>context::Render = RealRender
console.log ‘Tamere’</p>
</div>
<div class="content"><div class='highlight'><pre> res::Render = RealRender</pre></div></div>
</li>
<li id="section-9">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-9">¶</a>
</div>
<p>console.log res.<em>type
socket.on ‘update</em>‘ + res._type[to -2]*’’, ~>
console.log ‘tamere’
res::Render.call it, (err, r) -> console.log r; r.Make!then console~log .catch console~error</p>
</div>
<div class="content"><div class='highlight'><pre>
ret
View.DOM = DOM
View.Node = Node
N.View = View
N.Render = <span class="hljs-function"><span class="hljs-params">(func)</span> -></span>
N.Watch ->
DOM.root func! .Make!.<span class="hljs-keyword">catch</span> <span class="hljs-built_in">console</span>~error</pre></div></div>
</li>
<li id="section-10">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-10">¶</a>
</div>
<p>then console~log</p>
</div>
</li>
</ul>
</div>
</body>
</html>