[#349,transform][s]: remove transform view and associated code - fixes #349.
This commit is contained in:
@@ -14,7 +14,6 @@
|
|||||||
<link rel="stylesheet" href="{{page.root}}css/grid.css">
|
<link rel="stylesheet" href="{{page.root}}css/grid.css">
|
||||||
<link rel="stylesheet" href="{{page.root}}css/slickgrid.css">
|
<link rel="stylesheet" href="{{page.root}}css/slickgrid.css">
|
||||||
<link rel="stylesheet" href="{{page.root}}css/flot.css">
|
<link rel="stylesheet" href="{{page.root}}css/flot.css">
|
||||||
<link rel="stylesheet" href="{{page.root}}css/transform.css">
|
|
||||||
<link rel="stylesheet" href="{{page.root}}css/map.css">
|
<link rel="stylesheet" href="{{page.root}}css/map.css">
|
||||||
<link rel="stylesheet" href="{{page.root}}css/multiview.css">
|
<link rel="stylesheet" href="{{page.root}}css/multiview.css">
|
||||||
<link rel="stylesheet" href="{{page.root}}css/timeline.css">
|
<link rel="stylesheet" href="{{page.root}}css/timeline.css">
|
||||||
@@ -61,8 +60,6 @@
|
|||||||
<!-- views -->
|
<!-- views -->
|
||||||
<script type="text/javascript" src="{{page.root}}src/view.grid.js"></script>
|
<script type="text/javascript" src="{{page.root}}src/view.grid.js"></script>
|
||||||
<script type="text/javascript" src="{{page.root}}src/view.slickgrid.js"></script>
|
<script type="text/javascript" src="{{page.root}}src/view.slickgrid.js"></script>
|
||||||
<script type="text/javascript" src="{{page.root}}src/view.transform.js"></script>
|
|
||||||
<script type="text/javascript" src="{{page.root}}src/data.transform.js"></script>
|
|
||||||
<script type="text/javascript" src="{{page.root}}src/view.flot.js"></script>
|
<script type="text/javascript" src="{{page.root}}src/view.flot.js"></script>
|
||||||
<script type="text/javascript" src="{{page.root}}src/view.graph.js"></script>
|
<script type="text/javascript" src="{{page.root}}src/view.graph.js"></script>
|
||||||
<script type="text/javascript" src="{{page.root}}src/view.map.js"></script>
|
<script type="text/javascript" src="{{page.root}}src/view.map.js"></script>
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
.recline-transform {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recline-transform .script textarea {
|
|
||||||
width: 100%;
|
|
||||||
height: 100px;
|
|
||||||
font-family: monospace;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recline-transform h2 {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recline-transform h2 .okButton {
|
|
||||||
margin-left: 10px;
|
|
||||||
margin-top: -2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.expression-preview-parsing-status {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.expression-preview-parsing-status.error {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recline-transform .before-after .after {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recline-transform .before-after .after.different {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
@@ -89,13 +89,6 @@ var createExplorer = function(dataset, state) {
|
|||||||
view: new recline.View.Map({
|
view: new recline.View.Map({
|
||||||
model: dataset
|
model: dataset
|
||||||
})
|
})
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'transform',
|
|
||||||
label: 'Transform',
|
|
||||||
view: new recline.View.Transform({
|
|
||||||
model: dataset
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -1,66 +0,0 @@
|
|||||||
<!DOCTYPE html> <html> <head> <title>data.transform.js</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="backend.ckan.html"> backend.ckan.js </a> <a class="source" href="backend.couchdb.html"> backend.couchdb.js </a> <a class="source" href="backend.csv.html"> backend.csv.js </a> <a class="source" href="backend.dataproxy.html"> backend.dataproxy.js </a> <a class="source" href="backend.elasticsearch.html"> backend.elasticsearch.js </a> <a class="source" href="backend.gdocs.html"> backend.gdocs.js </a> <a class="source" href="backend.memory.html"> backend.memory.js </a> <a class="source" href="data.transform.html"> data.transform.js </a> <a class="source" href="ecma-fixes.html"> ecma-fixes.js </a> <a class="source" href="model.html"> model.js </a> <a class="source" href="view.graph.html"> view.graph.js </a> <a class="source" href="view.grid.html"> view.grid.js </a> <a class="source" href="view.map.html"> view.map.js </a> <a class="source" href="view.multiview.html"> view.multiview.js </a> <a class="source" href="view.slickgrid.html"> view.slickgrid.js </a> <a class="source" href="view.timeline.html"> view.timeline.js </a> <a class="source" href="view.transform.html"> view.transform.js </a> <a class="source" href="widget.facetviewer.html"> widget.facetviewer.js </a> <a class="source" href="widget.fields.html"> widget.fields.js </a> <a class="source" href="widget.filtereditor.html"> widget.filtereditor.js </a> <a class="source" href="widget.pager.html"> widget.pager.js </a> <a class="source" href="widget.queryeditor.html"> widget.queryeditor.js </a> </div> </div> </div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> data.transform.js </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> </td> <td class="code"> <div class="highlight"><pre><span class="k">this</span><span class="p">.</span><span class="nx">recline</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">recline</span> <span class="o">||</span> <span class="p">{};</span>
|
|
||||||
<span class="k">this</span><span class="p">.</span><span class="nx">recline</span><span class="p">.</span><span class="nx">Data</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">recline</span><span class="p">.</span><span class="nx">Data</span> <span class="o">||</span> <span class="p">{};</span>
|
|
||||||
|
|
||||||
<span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">my</span><span class="p">)</span> <span class="p">{</span></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <p>adapted from https://github.com/harthur/costco. heather rules</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">my</span><span class="p">.</span><span class="nx">Transform</span> <span class="o">=</span> <span class="p">{};</span>
|
|
||||||
|
|
||||||
<span class="nx">my</span><span class="p">.</span><span class="nx">Transform</span><span class="p">.</span><span class="nx">evalFunction</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">funcString</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">try</span> <span class="p">{</span>
|
|
||||||
<span class="nb">eval</span><span class="p">(</span><span class="s2">"var editFunc = "</span> <span class="o">+</span> <span class="nx">funcString</span><span class="p">);</span>
|
|
||||||
<span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">return</span> <span class="p">{</span><span class="nx">errorMessage</span><span class="o">:</span> <span class="nx">e</span><span class="o">+</span><span class="s2">""</span><span class="p">};</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="k">return</span> <span class="nx">editFunc</span><span class="p">;</span>
|
|
||||||
<span class="p">};</span>
|
|
||||||
|
|
||||||
<span class="nx">my</span><span class="p">.</span><span class="nx">Transform</span><span class="p">.</span><span class="nx">previewTransform</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">docs</span><span class="p">,</span> <span class="nx">editFunc</span><span class="p">,</span> <span class="nx">currentColumn</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">preview</span> <span class="o">=</span> <span class="p">[];</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">updated</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">Transform</span><span class="p">.</span><span class="nx">mapDocs</span><span class="p">(</span><span class="nx">$</span><span class="p">.</span><span class="nx">extend</span><span class="p">(</span><span class="kc">true</span><span class="p">,</span> <span class="p">{},</span> <span class="nx">docs</span><span class="p">),</span> <span class="nx">editFunc</span><span class="p">);</span>
|
|
||||||
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">updated</span><span class="p">.</span><span class="nx">docs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">before</span> <span class="o">=</span> <span class="nx">docs</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
|
|
||||||
<span class="p">,</span> <span class="nx">after</span> <span class="o">=</span> <span class="nx">updated</span><span class="p">.</span><span class="nx">docs</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
|
|
||||||
<span class="p">;</span>
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">after</span><span class="p">)</span> <span class="nx">after</span> <span class="o">=</span> <span class="p">{};</span>
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="nx">currentColumn</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="nx">preview</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span><span class="nx">before</span><span class="o">:</span> <span class="nx">before</span><span class="p">[</span><span class="nx">currentColumn</span><span class="p">],</span> <span class="nx">after</span><span class="o">:</span> <span class="nx">after</span><span class="p">[</span><span class="nx">currentColumn</span><span class="p">]});</span>
|
|
||||||
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
|
||||||
<span class="nx">preview</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span><span class="nx">before</span><span class="o">:</span> <span class="nx">before</span><span class="p">,</span> <span class="nx">after</span><span class="o">:</span> <span class="nx">after</span><span class="p">});</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="k">return</span> <span class="nx">preview</span><span class="p">;</span>
|
|
||||||
<span class="p">};</span>
|
|
||||||
|
|
||||||
<span class="nx">my</span><span class="p">.</span><span class="nx">Transform</span><span class="p">.</span><span class="nx">mapDocs</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">docs</span><span class="p">,</span> <span class="nx">editFunc</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">edited</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="p">,</span> <span class="nx">deleted</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="p">,</span> <span class="nx">failed</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="p">;</span>
|
|
||||||
|
|
||||||
<span class="kd">var</span> <span class="nx">updatedDocs</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">docs</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">doc</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">try</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">updated</span> <span class="o">=</span> <span class="nx">editFunc</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">clone</span><span class="p">(</span><span class="nx">doc</span><span class="p">));</span>
|
|
||||||
<span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="nx">failed</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">doc</span><span class="p">);</span>
|
|
||||||
<span class="k">return</span><span class="p">;</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="k">if</span><span class="p">(</span><span class="nx">updated</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="nx">updated</span> <span class="o">=</span> <span class="p">{</span><span class="nx">_deleted</span><span class="o">:</span> <span class="kc">true</span><span class="p">};</span>
|
|
||||||
<span class="nx">edited</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">updated</span><span class="p">);</span>
|
|
||||||
<span class="nx">deleted</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">doc</span><span class="p">);</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="nx">updated</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">_</span><span class="p">.</span><span class="nx">isEqual</span><span class="p">(</span><span class="nx">updated</span><span class="p">,</span> <span class="nx">doc</span><span class="p">))</span> <span class="p">{</span>
|
|
||||||
<span class="nx">edited</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">updated</span><span class="p">);</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="k">return</span> <span class="nx">updated</span><span class="p">;</span>
|
|
||||||
<span class="p">});</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="p">{</span>
|
|
||||||
<span class="nx">updates</span><span class="o">:</span> <span class="nx">edited</span><span class="p">,</span>
|
|
||||||
<span class="nx">docs</span><span class="o">:</span> <span class="nx">updatedDocs</span><span class="p">,</span>
|
|
||||||
<span class="nx">deletes</span><span class="o">:</span> <span class="nx">deleted</span><span class="p">,</span>
|
|
||||||
<span class="nx">failed</span><span class="o">:</span> <span class="nx">failed</span>
|
|
||||||
<span class="p">};</span>
|
|
||||||
<span class="p">};</span>
|
|
||||||
|
|
||||||
<span class="p">}(</span><span class="k">this</span><span class="p">.</span><span class="nx">recline</span><span class="p">.</span><span class="nx">Data</span><span class="p">))</span>
|
|
||||||
|
|
||||||
</pre></div> </td> </tr> </tbody> </table> </div> </body> </html>
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
<!DOCTYPE html> <html> <head> <title>view.transform.js</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="backend.ckan.html"> backend.ckan.js </a> <a class="source" href="backend.couchdb.html"> backend.couchdb.js </a> <a class="source" href="backend.csv.html"> backend.csv.js </a> <a class="source" href="backend.dataproxy.html"> backend.dataproxy.js </a> <a class="source" href="backend.elasticsearch.html"> backend.elasticsearch.js </a> <a class="source" href="backend.gdocs.html"> backend.gdocs.js </a> <a class="source" href="backend.memory.html"> backend.memory.js </a> <a class="source" href="data.transform.html"> data.transform.js </a> <a class="source" href="ecma-fixes.html"> ecma-fixes.js </a> <a class="source" href="model.html"> model.js </a> <a class="source" href="view.graph.html"> view.graph.js </a> <a class="source" href="view.grid.html"> view.grid.js </a> <a class="source" href="view.map.html"> view.map.js </a> <a class="source" href="view.multiview.html"> view.multiview.js </a> <a class="source" href="view.slickgrid.html"> view.slickgrid.js </a> <a class="source" href="view.timeline.html"> view.timeline.js </a> <a class="source" href="view.transform.html"> view.transform.js </a> <a class="source" href="widget.facetviewer.html"> widget.facetviewer.js </a> <a class="source" href="widget.fields.html"> widget.fields.js </a> <a class="source" href="widget.filtereditor.html"> widget.filtereditor.js </a> <a class="source" href="widget.pager.html"> widget.pager.js </a> <a class="source" href="widget.queryeditor.html"> widget.queryeditor.js </a> </div> </div> </div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> view.transform.js </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> </td> <td class="code"> <div class="highlight"><pre><span class="cm">/*jshint multistr:true */</span>
|
|
||||||
|
|
||||||
<span class="k">this</span><span class="p">.</span><span class="nx">recline</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">recline</span> <span class="o">||</span> <span class="p">{};</span>
|
|
||||||
<span class="k">this</span><span class="p">.</span><span class="nx">recline</span><span class="p">.</span><span class="nx">View</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">recline</span><span class="p">.</span><span class="nx">View</span> <span class="o">||</span> <span class="p">{};</span></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <p>Views module following classic module pattern</p> </td> <td class="code"> <div class="highlight"><pre><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">$</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">¶</a> </div> <h2>ColumnTransform</h2>
|
|
||||||
|
|
||||||
<p>View (Dialog) for doing data transformations</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">my</span><span class="p">.</span><span class="nx">Transform</span> <span class="o">=</span> <span class="nx">Backbone</span><span class="p">.</span><span class="nx">View</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span>
|
|
||||||
<span class="nx">template</span><span class="o">:</span> <span class="s1">' \</span>
|
|
||||||
<span class="s1"> <div class="recline-transform"> \</span>
|
|
||||||
<span class="s1"> <div class="script"> \</span>
|
|
||||||
<span class="s1"> <h2> \</span>
|
|
||||||
<span class="s1"> Transform Script \</span>
|
|
||||||
<span class="s1"> <button class="okButton btn btn-primary">Run on all records</button> \</span>
|
|
||||||
<span class="s1"> </h2> \</span>
|
|
||||||
<span class="s1"> <textarea class="expression-preview-code"></textarea> \</span>
|
|
||||||
<span class="s1"> </div> \</span>
|
|
||||||
<span class="s1"> <div class="expression-preview-parsing-status"> \</span>
|
|
||||||
<span class="s1"> No syntax error. \</span>
|
|
||||||
<span class="s1"> </div> \</span>
|
|
||||||
<span class="s1"> <div class="preview"> \</span>
|
|
||||||
<span class="s1"> <h3>Preview</h3> \</span>
|
|
||||||
<span class="s1"> <div class="expression-preview-container"></div> \</span>
|
|
||||||
<span class="s1"> </div> \</span>
|
|
||||||
<span class="s1"> </div> \</span>
|
|
||||||
<span class="s1"> '</span><span class="p">,</span>
|
|
||||||
|
|
||||||
<span class="nx">events</span><span class="o">:</span> <span class="p">{</span>
|
|
||||||
<span class="s1">'click .okButton'</span><span class="o">:</span> <span class="s1">'onSubmit'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'keydown .expression-preview-code'</span><span class="o">:</span> <span class="s1">'onEditorKeydown'</span>
|
|
||||||
<span class="p">},</span>
|
|
||||||
|
|
||||||
<span class="nx">initialize</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">this</span><span class="p">.</span><span class="nx">el</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">el</span><span class="p">);</span>
|
|
||||||
<span class="p">},</span>
|
|
||||||
|
|
||||||
<span class="nx">render</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">htmls</span> <span class="o">=</span> <span class="nx">Mustache</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">template</span><span class="p">);</span>
|
|
||||||
<span class="k">this</span><span class="p">.</span><span class="nx">el</span><span class="p">.</span><span class="nx">html</span><span class="p">(</span><span class="nx">htmls</span><span class="p">);</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">¶</a> </div> <p>Put in the basic (identity) transform script
|
|
||||||
TODO: put this into the template?</p> </td> <td class="code"> <div class="highlight"><pre> <span class="kd">var</span> <span class="nx">editor</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">el</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s1">'.expression-preview-code'</span><span class="p">);</span>
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">model</span><span class="p">.</span><span class="nx">fields</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">col</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">model</span><span class="p">.</span><span class="nx">fields</span><span class="p">.</span><span class="nx">models</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">id</span><span class="p">;</span>
|
|
||||||
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">col</span> <span class="o">=</span> <span class="s1">'unknown'</span><span class="p">;</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="nx">editor</span><span class="p">.</span><span class="nx">val</span><span class="p">(</span><span class="s2">"function(doc) {\n doc['"</span><span class="o">+</span> <span class="nx">col</span> <span class="o">+</span><span class="s2">"'] = doc['"</span><span class="o">+</span> <span class="nx">col</span> <span class="o">+</span><span class="s2">"'];\n return doc;\n}"</span><span class="p">);</span>
|
|
||||||
<span class="nx">editor</span><span class="p">.</span><span class="nx">keydown</span><span class="p">();</span>
|
|
||||||
<span class="p">},</span>
|
|
||||||
|
|
||||||
<span class="nx">onSubmit</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">funcText</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">el</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s1">'.expression-preview-code'</span><span class="p">).</span><span class="nx">val</span><span class="p">();</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">editFunc</span> <span class="o">=</span> <span class="nx">recline</span><span class="p">.</span><span class="nx">Data</span><span class="p">.</span><span class="nx">Transform</span><span class="p">.</span><span class="nx">evalFunction</span><span class="p">(</span><span class="nx">funcText</span><span class="p">);</span>
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="nx">editFunc</span><span class="p">.</span><span class="nx">errorMessage</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'recline:flash'</span><span class="p">,</span> <span class="p">{</span><span class="nx">message</span><span class="o">:</span> <span class="s2">"Error with function! "</span> <span class="o">+</span> <span class="nx">editFunc</span><span class="p">.</span><span class="nx">errorMessage</span><span class="p">});</span>
|
|
||||||
<span class="k">return</span><span class="p">;</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="k">this</span><span class="p">.</span><span class="nx">model</span><span class="p">.</span><span class="nx">transform</span><span class="p">(</span><span class="nx">editFunc</span><span class="p">);</span>
|
|
||||||
<span class="p">},</span>
|
|
||||||
|
|
||||||
<span class="nx">editPreviewTemplate</span><span class="o">:</span> <span class="s1">' \</span>
|
|
||||||
<span class="s1"> <table class="table table-condensed table-bordered before-after"> \</span>
|
|
||||||
<span class="s1"> <thead> \</span>
|
|
||||||
<span class="s1"> <tr> \</span>
|
|
||||||
<span class="s1"> <th>Field</th> \</span>
|
|
||||||
<span class="s1"> <th>Before</th> \</span>
|
|
||||||
<span class="s1"> <th>After</th> \</span>
|
|
||||||
<span class="s1"> </tr> \</span>
|
|
||||||
<span class="s1"> </thead> \</span>
|
|
||||||
<span class="s1"> <tbody> \</span>
|
|
||||||
<span class="s1"> {{#row}} \</span>
|
|
||||||
<span class="s1"> <tr> \</span>
|
|
||||||
<span class="s1"> <td> \</span>
|
|
||||||
<span class="s1"> {{field}} \</span>
|
|
||||||
<span class="s1"> </td> \</span>
|
|
||||||
<span class="s1"> <td class="before {{#different}}different{{/different}}"> \</span>
|
|
||||||
<span class="s1"> {{before}} \</span>
|
|
||||||
<span class="s1"> </td> \</span>
|
|
||||||
<span class="s1"> <td class="after {{#different}}different{{/different}}"> \</span>
|
|
||||||
<span class="s1"> {{after}} \</span>
|
|
||||||
<span class="s1"> </td> \</span>
|
|
||||||
<span class="s1"> </tr> \</span>
|
|
||||||
<span class="s1"> {{/row}} \</span>
|
|
||||||
<span class="s1"> </tbody> \</span>
|
|
||||||
<span class="s1"> </table> \</span>
|
|
||||||
<span class="s1"> '</span><span class="p">,</span>
|
|
||||||
|
|
||||||
<span class="nx">onEditorKeydown</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">¶</a> </div> <p>if you don't setTimeout it won't grab the latest character if you call e.target.value</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nb">window</span><span class="p">.</span><span class="nx">setTimeout</span><span class="p">(</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">errors</span> <span class="o">=</span> <span class="nx">self</span><span class="p">.</span><span class="nx">el</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s1">'.expression-preview-parsing-status'</span><span class="p">);</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">editFunc</span> <span class="o">=</span> <span class="nx">recline</span><span class="p">.</span><span class="nx">Data</span><span class="p">.</span><span class="nx">Transform</span><span class="p">.</span><span class="nx">evalFunction</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">);</span>
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">editFunc</span><span class="p">.</span><span class="nx">errorMessage</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="nx">errors</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="s1">'No syntax error.'</span><span class="p">);</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">docs</span> <span class="o">=</span> <span class="nx">self</span><span class="p">.</span><span class="nx">model</span><span class="p">.</span><span class="nx">records</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">doc</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">return</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">toJSON</span><span class="p">();</span>
|
|
||||||
<span class="p">});</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">previewData</span> <span class="o">=</span> <span class="nx">recline</span><span class="p">.</span><span class="nx">Data</span><span class="p">.</span><span class="nx">Transform</span><span class="p">.</span><span class="nx">previewTransform</span><span class="p">(</span><span class="nx">docs</span><span class="p">,</span> <span class="nx">editFunc</span><span class="p">);</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">$el</span> <span class="o">=</span> <span class="nx">self</span><span class="p">.</span><span class="nx">el</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s1">'.expression-preview-container'</span><span class="p">);</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">fields</span> <span class="o">=</span> <span class="nx">self</span><span class="p">.</span><span class="nx">model</span><span class="p">.</span><span class="nx">fields</span><span class="p">.</span><span class="nx">toJSON</span><span class="p">();</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">rows</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">previewData</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">),</span> <span class="kd">function</span><span class="p">(</span><span class="nx">row</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">fields</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">field</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="k">return</span> <span class="p">{</span>
|
|
||||||
<span class="nx">field</span><span class="o">:</span> <span class="nx">field</span><span class="p">.</span><span class="nx">id</span><span class="p">,</span>
|
|
||||||
<span class="nx">before</span><span class="o">:</span> <span class="nx">row</span><span class="p">.</span><span class="nx">before</span><span class="p">[</span><span class="nx">field</span><span class="p">.</span><span class="nx">id</span><span class="p">],</span>
|
|
||||||
<span class="nx">after</span><span class="o">:</span> <span class="nx">row</span><span class="p">.</span><span class="nx">after</span><span class="p">[</span><span class="nx">field</span><span class="p">.</span><span class="nx">id</span><span class="p">],</span>
|
|
||||||
<span class="nx">different</span><span class="o">:</span> <span class="o">!</span><span class="nx">_</span><span class="p">.</span><span class="nx">isEqual</span><span class="p">(</span><span class="nx">row</span><span class="p">.</span><span class="nx">before</span><span class="p">[</span><span class="nx">field</span><span class="p">.</span><span class="nx">id</span><span class="p">],</span> <span class="nx">row</span><span class="p">.</span><span class="nx">after</span><span class="p">[</span><span class="nx">field</span><span class="p">.</span><span class="nx">id</span><span class="p">])</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="p">});</span>
|
|
||||||
<span class="p">});</span>
|
|
||||||
<span class="nx">$el</span><span class="p">.</span><span class="nx">html</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
|
|
||||||
<span class="nx">_</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">rows</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">row</span><span class="p">)</span> <span class="p">{</span>
|
|
||||||
<span class="kd">var</span> <span class="nx">templated</span> <span class="o">=</span> <span class="nx">Mustache</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">editPreviewTemplate</span><span class="p">,</span> <span class="p">{</span>
|
|
||||||
<span class="nx">row</span><span class="o">:</span> <span class="nx">row</span>
|
|
||||||
<span class="p">});</span>
|
|
||||||
<span class="nx">$el</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">templated</span><span class="p">);</span>
|
|
||||||
<span class="p">});</span>
|
|
||||||
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
|
||||||
<span class="nx">errors</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="nx">editFunc</span><span class="p">.</span><span class="nx">errorMessage</span><span class="p">);</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="p">},</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="p">});</span>
|
|
||||||
|
|
||||||
<span class="p">})(</span><span class="nx">jQuery</span><span class="p">,</span> <span class="nx">recline</span><span class="p">.</span><span class="nx">View</span><span class="p">);</span>
|
|
||||||
|
|
||||||
</pre></div> </td> </tr> </tbody> </table> </div> </body> </html>
|
|
||||||
@@ -230,18 +230,6 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
|
|||||||
});
|
});
|
||||||
return facetResults;
|
return facetResults;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.transform = function(editFunc) {
|
|
||||||
var dfd = new Deferred();
|
|
||||||
// TODO: should we clone before mapping? Do not see the point atm.
|
|
||||||
self.records = _.map(self.records, editFunc);
|
|
||||||
// now deal with deletes (i.e. nulls)
|
|
||||||
self.records = _.filter(self.records, function(record) {
|
|
||||||
return record != null;
|
|
||||||
});
|
|
||||||
dfd.resolve();
|
|
||||||
return dfd.promise();
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}(this.recline.Backend.Memory));
|
}(this.recline.Backend.Memory));
|
||||||
|
|||||||
@@ -1,67 +0,0 @@
|
|||||||
this.recline = this.recline || {};
|
|
||||||
this.recline.Data = this.recline.Data || {};
|
|
||||||
|
|
||||||
(function(my) {
|
|
||||||
// adapted from https://github.com/harthur/costco. heather rules
|
|
||||||
|
|
||||||
my.Transform = {};
|
|
||||||
|
|
||||||
my.Transform.evalFunction = function(funcString) {
|
|
||||||
try {
|
|
||||||
eval("var editFunc = " + funcString);
|
|
||||||
} catch(e) {
|
|
||||||
return {errorMessage: e+""};
|
|
||||||
}
|
|
||||||
return editFunc;
|
|
||||||
};
|
|
||||||
|
|
||||||
my.Transform.previewTransform = function(docs, editFunc, currentColumn) {
|
|
||||||
var preview = [];
|
|
||||||
var updated = my.Transform.mapDocs($.extend(true, {}, docs), editFunc);
|
|
||||||
for (var i = 0; i < updated.docs.length; i++) {
|
|
||||||
var before = docs[i]
|
|
||||||
, after = updated.docs[i]
|
|
||||||
;
|
|
||||||
if (!after) after = {};
|
|
||||||
if (currentColumn) {
|
|
||||||
preview.push({before: before[currentColumn], after: after[currentColumn]});
|
|
||||||
} else {
|
|
||||||
preview.push({before: before, after: after});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return preview;
|
|
||||||
};
|
|
||||||
|
|
||||||
my.Transform.mapDocs = function(docs, editFunc) {
|
|
||||||
var edited = []
|
|
||||||
, deleted = []
|
|
||||||
, failed = []
|
|
||||||
;
|
|
||||||
|
|
||||||
var updatedDocs = _.map(docs, function(doc) {
|
|
||||||
try {
|
|
||||||
var updated = editFunc(_.clone(doc));
|
|
||||||
} catch(e) {
|
|
||||||
failed.push(doc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(updated === null) {
|
|
||||||
updated = {_deleted: true};
|
|
||||||
edited.push(updated);
|
|
||||||
deleted.push(doc);
|
|
||||||
}
|
|
||||||
else if(updated && !_.isEqual(updated, doc)) {
|
|
||||||
edited.push(updated);
|
|
||||||
}
|
|
||||||
return updated;
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
|
||||||
updates: edited,
|
|
||||||
docs: updatedDocs,
|
|
||||||
deletes: deleted,
|
|
||||||
failed: failed
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}(this.recline.Data))
|
|
||||||
14
src/model.js
14
src/model.js
@@ -159,20 +159,6 @@ my.Dataset = Backbone.Model.extend({
|
|||||||
return this._store.save(this._changes, this.toJSON());
|
return this._store.save(this._changes, this.toJSON());
|
||||||
},
|
},
|
||||||
|
|
||||||
transform: function(editFunc) {
|
|
||||||
var self = this;
|
|
||||||
if (!this._store.transform) {
|
|
||||||
alert('Transform is not supported with this backend: ' + this.get('backend'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.trigger('recline:flash', {message: "Updating all visible docs. This could take a while...", persist: true, loader: true});
|
|
||||||
this._store.transform(editFunc).done(function() {
|
|
||||||
// reload data as records have changed
|
|
||||||
self.query();
|
|
||||||
self.trigger('recline:flash', {message: "Records updated successfully"});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// ### query
|
// ### query
|
||||||
//
|
//
|
||||||
// AJAX method with promise API to get records from the backend.
|
// AJAX method with promise API to get records from the backend.
|
||||||
|
|||||||
@@ -164,12 +164,6 @@ my.MultiView = Backbone.View.extend({
|
|||||||
model: this.model,
|
model: this.model,
|
||||||
state: this.state.get('view-timeline')
|
state: this.state.get('view-timeline')
|
||||||
})
|
})
|
||||||
}, {
|
|
||||||
id: 'transform',
|
|
||||||
label: 'Transform',
|
|
||||||
view: new my.Transform({
|
|
||||||
model: this.model
|
|
||||||
})
|
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
// Hashes of sidebar elements
|
// Hashes of sidebar elements
|
||||||
|
|||||||
@@ -1,132 +0,0 @@
|
|||||||
/*jshint multistr:true */
|
|
||||||
|
|
||||||
this.recline = this.recline || {};
|
|
||||||
this.recline.View = this.recline.View || {};
|
|
||||||
|
|
||||||
// Views module following classic module pattern
|
|
||||||
(function($, my) {
|
|
||||||
|
|
||||||
// ## ColumnTransform
|
|
||||||
//
|
|
||||||
// View (Dialog) for doing data transformations
|
|
||||||
my.Transform = Backbone.View.extend({
|
|
||||||
template: ' \
|
|
||||||
<div class="recline-transform"> \
|
|
||||||
<div class="script"> \
|
|
||||||
<h2> \
|
|
||||||
Transform Script \
|
|
||||||
<button class="okButton btn btn-primary">Run on all records</button> \
|
|
||||||
</h2> \
|
|
||||||
<textarea class="expression-preview-code"></textarea> \
|
|
||||||
</div> \
|
|
||||||
<div class="expression-preview-parsing-status"> \
|
|
||||||
No syntax error. \
|
|
||||||
</div> \
|
|
||||||
<div class="preview"> \
|
|
||||||
<h3>Preview</h3> \
|
|
||||||
<div class="expression-preview-container"></div> \
|
|
||||||
</div> \
|
|
||||||
</div> \
|
|
||||||
',
|
|
||||||
|
|
||||||
events: {
|
|
||||||
'click .okButton': 'onSubmit',
|
|
||||||
'keydown .expression-preview-code': 'onEditorKeydown'
|
|
||||||
},
|
|
||||||
|
|
||||||
initialize: function(options) {
|
|
||||||
this.el = $(this.el);
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function() {
|
|
||||||
var htmls = Mustache.render(this.template);
|
|
||||||
this.el.html(htmls);
|
|
||||||
// Put in the basic (identity) transform script
|
|
||||||
// TODO: put this into the template?
|
|
||||||
var editor = this.el.find('.expression-preview-code');
|
|
||||||
if (this.model.fields.length > 0) {
|
|
||||||
var col = this.model.fields.models[0].id;
|
|
||||||
} else {
|
|
||||||
var col = 'unknown';
|
|
||||||
}
|
|
||||||
editor.val("function(doc) {\n doc['"+ col +"'] = doc['"+ col +"'];\n return doc;\n}");
|
|
||||||
editor.keydown();
|
|
||||||
},
|
|
||||||
|
|
||||||
onSubmit: function(e) {
|
|
||||||
var self = this;
|
|
||||||
var funcText = this.el.find('.expression-preview-code').val();
|
|
||||||
var editFunc = recline.Data.Transform.evalFunction(funcText);
|
|
||||||
if (editFunc.errorMessage) {
|
|
||||||
this.trigger('recline:flash', {message: "Error with function! " + editFunc.errorMessage});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.model.transform(editFunc);
|
|
||||||
},
|
|
||||||
|
|
||||||
editPreviewTemplate: ' \
|
|
||||||
<table class="table table-condensed table-bordered before-after"> \
|
|
||||||
<thead> \
|
|
||||||
<tr> \
|
|
||||||
<th>Field</th> \
|
|
||||||
<th>Before</th> \
|
|
||||||
<th>After</th> \
|
|
||||||
</tr> \
|
|
||||||
</thead> \
|
|
||||||
<tbody> \
|
|
||||||
{{#row}} \
|
|
||||||
<tr> \
|
|
||||||
<td> \
|
|
||||||
{{field}} \
|
|
||||||
</td> \
|
|
||||||
<td class="before {{#different}}different{{/different}}"> \
|
|
||||||
{{before}} \
|
|
||||||
</td> \
|
|
||||||
<td class="after {{#different}}different{{/different}}"> \
|
|
||||||
{{after}} \
|
|
||||||
</td> \
|
|
||||||
</tr> \
|
|
||||||
{{/row}} \
|
|
||||||
</tbody> \
|
|
||||||
</table> \
|
|
||||||
',
|
|
||||||
|
|
||||||
onEditorKeydown: function(e) {
|
|
||||||
var self = this;
|
|
||||||
// if you don't setTimeout it won't grab the latest character if you call e.target.value
|
|
||||||
window.setTimeout( function() {
|
|
||||||
var errors = self.el.find('.expression-preview-parsing-status');
|
|
||||||
var editFunc = recline.Data.Transform.evalFunction(e.target.value);
|
|
||||||
if (!editFunc.errorMessage) {
|
|
||||||
errors.text('No syntax error.');
|
|
||||||
var docs = self.model.records.map(function(doc) {
|
|
||||||
return doc.toJSON();
|
|
||||||
});
|
|
||||||
var previewData = recline.Data.Transform.previewTransform(docs, editFunc);
|
|
||||||
var $el = self.el.find('.expression-preview-container');
|
|
||||||
var fields = self.model.fields.toJSON();
|
|
||||||
var rows = _.map(previewData.slice(0,4), function(row) {
|
|
||||||
return _.map(fields, function(field) {
|
|
||||||
return {
|
|
||||||
field: field.id,
|
|
||||||
before: row.before[field.id],
|
|
||||||
after: row.after[field.id],
|
|
||||||
different: !_.isEqual(row.before[field.id], row.after[field.id])
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$el.html('');
|
|
||||||
_.each(rows, function(row) {
|
|
||||||
var templated = Mustache.render(self.editPreviewTemplate, {
|
|
||||||
row: row
|
|
||||||
});
|
|
||||||
$el.append(templated);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
errors.text(editFunc.errorMessage);
|
|
||||||
}
|
|
||||||
}, 1, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})(jQuery, recline.View);
|
|
||||||
@@ -187,31 +187,6 @@ test('update and delete', function () {
|
|||||||
equal(data.records[0].x, memoryData[1].x);
|
equal(data.records[0].x, memoryData[1].x);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('transform', function () {
|
|
||||||
var data = [
|
|
||||||
{a: 1, b: " bla"},
|
|
||||||
{a: 2, b: "foo "},
|
|
||||||
{a: 3, b: "bar"}
|
|
||||||
];
|
|
||||||
var store = new recline.Backend.Memory.Store(data);
|
|
||||||
store.transform(function(d) {
|
|
||||||
d.a = d.a * 10;
|
|
||||||
return d;
|
|
||||||
})
|
|
||||||
equal(store.records[0].a, 10);
|
|
||||||
equal(store.records[1].a, 20);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('transform deletes', function () {
|
|
||||||
var data = [{a: 1, b: " bla"},{a: 2, b: "foo "},{a: 3, b: "bar"}];
|
|
||||||
var store = new recline.Backend.Memory.Store(data);
|
|
||||||
store.transform(function(d) {
|
|
||||||
if (d.a == '1') return null;
|
|
||||||
else return d;
|
|
||||||
})
|
|
||||||
equal(store.records.length, 2);
|
|
||||||
});
|
|
||||||
|
|
||||||
})(this.jQuery);
|
})(this.jQuery);
|
||||||
|
|
||||||
// ======================================
|
// ======================================
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
module("Data.Transform");
|
|
||||||
|
|
||||||
test('previewTransform', function () {
|
|
||||||
var docs = [
|
|
||||||
{
|
|
||||||
'date': '2012/2013 - 1'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
var func = function(doc) {
|
|
||||||
return doc;
|
|
||||||
};
|
|
||||||
var exp = [
|
|
||||||
{
|
|
||||||
"after": {
|
|
||||||
"date": "2012/2013 - 1"
|
|
||||||
},
|
|
||||||
"before": {
|
|
||||||
"date": "2012/2013 - 1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
var out = recline.Data.Transform.previewTransform(docs, func);
|
|
||||||
deepEqual(out, exp);
|
|
||||||
|
|
||||||
var func = function(doc) {
|
|
||||||
var d = doc['date'];
|
|
||||||
doc['date'] = d.split('/')[0];
|
|
||||||
return doc;
|
|
||||||
};
|
|
||||||
var exp = [
|
|
||||||
{
|
|
||||||
"after": {
|
|
||||||
"date": "2012"
|
|
||||||
},
|
|
||||||
"before": {
|
|
||||||
"date": "2012/2013 - 1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
var out = recline.Data.Transform.previewTransform(docs, func);
|
|
||||||
deepEqual(out, exp);
|
|
||||||
|
|
||||||
var func = function(doc) {
|
|
||||||
var d = doc['date'];
|
|
||||||
doc['date'] = d.split('/')[0] + '-' + d.split(' - ')[1];
|
|
||||||
return doc;
|
|
||||||
};
|
|
||||||
var exp = [
|
|
||||||
{
|
|
||||||
"after": {
|
|
||||||
"date": "2012-1"
|
|
||||||
},
|
|
||||||
"before": {
|
|
||||||
"date": "2012/2013 - 1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
var out = recline.Data.Transform.previewTransform(docs, func);
|
|
||||||
deepEqual(out, exp);
|
|
||||||
});
|
|
||||||
|
|
||||||
@@ -50,7 +50,6 @@
|
|||||||
<!-- views and view tests -->
|
<!-- views and view tests -->
|
||||||
<script type="text/javascript" src="../src/view.grid.js"></script>
|
<script type="text/javascript" src="../src/view.grid.js"></script>
|
||||||
<script type="text/javascript" src="../src/view.slickgrid.js"></script>
|
<script type="text/javascript" src="../src/view.slickgrid.js"></script>
|
||||||
<script type="text/javascript" src="../src/view.transform.js"></script>
|
|
||||||
<script type="text/javascript" src="../src/view.flot.js"></script>
|
<script type="text/javascript" src="../src/view.flot.js"></script>
|
||||||
<script type="text/javascript" src="../src/view.flotr2.js"></script>
|
<script type="text/javascript" src="../src/view.flotr2.js"></script>
|
||||||
<script type="text/javascript" src="../src/view.graph.js"></script>
|
<script type="text/javascript" src="../src/view.graph.js"></script>
|
||||||
@@ -72,10 +71,6 @@
|
|||||||
<script type="text/javascript" src="util.test.js"></script>
|
<script type="text/javascript" src="util.test.js"></script>
|
||||||
<script type="text/javascript" src="widget.filtereditor.test.js"></script>
|
<script type="text/javascript" src="widget.filtereditor.test.js"></script>
|
||||||
<script type="text/javascript" src="widget.valuefilter.test.js"></script>
|
<script type="text/javascript" src="widget.valuefilter.test.js"></script>
|
||||||
|
|
||||||
<!-- data tests -->
|
|
||||||
<script type="text/javascript" src="../src/data.transform.js"></script>
|
|
||||||
<script type="text/javascript" src="data.transform.test.js"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1 id="qunit-header">Qunit Tests</h1>
|
<h1 id="qunit-header">Qunit Tests</h1>
|
||||||
|
|||||||
Reference in New Issue
Block a user