224 lines
10 KiB
HTML
224 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<title>widget.pager.js</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="backend.dataproxy.html">
|
|
backend.dataproxy.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="backend.memory.html">
|
|
backend.memory.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.flot.html">
|
|
view.flot.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="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>
|
|
|
|
|
|
<a class="source" href="widget.valuefilter.html">
|
|
widget.valuefilter.js
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
|
|
<ul class="sections">
|
|
|
|
<li id="title">
|
|
<div class="annotation">
|
|
<h1>widget.pager.js</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-comment">/*jshint multistr:true */</span>
|
|
|
|
<span class="hljs-keyword">this</span>.recline = <span class="hljs-keyword">this</span>.recline || {};
|
|
<span class="hljs-keyword">this</span>.recline.View = <span class="hljs-keyword">this</span>.recline.View || {};
|
|
|
|
(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">($, my)</span> </span>{
|
|
<span class="hljs-pi"> "use strict"</span>;
|
|
|
|
my.Pager = Backbone.View.extend({
|
|
className: <span class="hljs-string">'recline-pager'</span>,
|
|
template: <span class="hljs-string">' \
|
|
<div class="pagination"> \
|
|
<ul class="pagination"> \
|
|
<li class="prev action-pagination-update"><a href="" class="btn btn-default">&laquo;</a></li> \
|
|
<li class="page-range"><a><label for="from">From</label><input name="from" type="text" value="{{from}}" /> &ndash; <label for="to">To</label><input name="to" type="text" value="{{to}}" /> </a></li> \
|
|
<li class="next action-pagination-update"><a href="" class="btn btn-default">&raquo;</a></li> \
|
|
</ul> \
|
|
</div> \
|
|
'</span>,
|
|
|
|
events: {
|
|
<span class="hljs-string">'click .action-pagination-update'</span>: <span class="hljs-string">'onPaginationUpdate'</span>,
|
|
<span class="hljs-string">'change input'</span>: <span class="hljs-string">'onFormSubmit'</span>
|
|
},
|
|
|
|
initialize: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> </span>{
|
|
_.bindAll(<span class="hljs-keyword">this</span>, <span class="hljs-string">'render'</span>);
|
|
<span class="hljs-keyword">this</span>.listenTo(<span class="hljs-keyword">this</span>.model.queryState, <span class="hljs-string">'change'</span>, <span class="hljs-keyword">this</span>.render);
|
|
<span class="hljs-keyword">this</span>.render();
|
|
},
|
|
onFormSubmit: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(e)</span> </span>{
|
|
e.preventDefault();</pre></div></div>
|
|
|
|
</li>
|
|
|
|
|
|
<li id="section-2">
|
|
<div class="annotation">
|
|
|
|
<div class="pilwrap ">
|
|
<a class="pilcrow" href="#section-2">¶</a>
|
|
</div>
|
|
<p>filter is 0-based; form is 1-based</p>
|
|
|
|
</div>
|
|
|
|
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">var</span> formFrom = <span class="hljs-built_in">parseInt</span>(<span class="hljs-keyword">this</span>.$el.find(<span class="hljs-string">'input[name="from"]'</span>).val())-<span class="hljs-number">1</span>;
|
|
<span class="hljs-keyword">var</span> formTo = <span class="hljs-built_in">parseInt</span>(<span class="hljs-keyword">this</span>.$el.find(<span class="hljs-string">'input[name="to"]'</span>).val())-<span class="hljs-number">1</span>;
|
|
<span class="hljs-keyword">var</span> maxRecord = <span class="hljs-keyword">this</span>.model.recordCount-<span class="hljs-number">1</span>;
|
|
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.model.queryState.get(<span class="hljs-string">'from'</span>) != formFrom) { <span class="hljs-comment">// changed from; update from</span>
|
|
<span class="hljs-keyword">this</span>.model.queryState.set({from: <span class="hljs-built_in">Math</span>.min(maxRecord, <span class="hljs-built_in">Math</span>.max(formFrom, <span class="hljs-number">0</span>))});
|
|
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.model.queryState.get(<span class="hljs-string">'to'</span>) != formTo) { <span class="hljs-comment">// change to; update size</span>
|
|
<span class="hljs-keyword">var</span> to = <span class="hljs-built_in">Math</span>.min(maxRecord, <span class="hljs-built_in">Math</span>.max(formTo, <span class="hljs-number">0</span>));
|
|
<span class="hljs-keyword">this</span>.model.queryState.set({size: <span class="hljs-built_in">Math</span>.min(maxRecord+<span class="hljs-number">1</span>, <span class="hljs-built_in">Math</span>.max(to-formFrom+<span class="hljs-number">1</span>, <span class="hljs-number">1</span>))});
|
|
}
|
|
},
|
|
onPaginationUpdate: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(e)</span> </span>{
|
|
e.preventDefault();
|
|
<span class="hljs-keyword">var</span> $el = $(e.target);
|
|
<span class="hljs-keyword">var</span> newFrom = <span class="hljs-number">0</span>;
|
|
<span class="hljs-keyword">var</span> currFrom = <span class="hljs-keyword">this</span>.model.queryState.get(<span class="hljs-string">'from'</span>);
|
|
<span class="hljs-keyword">var</span> size = <span class="hljs-keyword">this</span>.model.queryState.get(<span class="hljs-string">'size'</span>);
|
|
<span class="hljs-keyword">var</span> updateQuery = <span class="hljs-literal">false</span>;
|
|
<span class="hljs-keyword">if</span> ($el.parent().hasClass(<span class="hljs-string">'prev'</span>)) {
|
|
newFrom = <span class="hljs-built_in">Math</span>.max(currFrom - <span class="hljs-built_in">Math</span>.max(<span class="hljs-number">0</span>, size), <span class="hljs-number">0</span>);
|
|
updateQuery = newFrom != currFrom;
|
|
} <span class="hljs-keyword">else</span> {
|
|
newFrom = <span class="hljs-built_in">Math</span>.max(currFrom + size, <span class="hljs-number">0</span>);
|
|
updateQuery = (newFrom < <span class="hljs-keyword">this</span>.model.recordCount);
|
|
}
|
|
<span class="hljs-keyword">if</span> (updateQuery) {
|
|
<span class="hljs-keyword">this</span>.model.queryState.set({from: newFrom});
|
|
}
|
|
},
|
|
render: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> </span>{
|
|
<span class="hljs-keyword">var</span> tmplData = <span class="hljs-keyword">this</span>.model.toJSON();
|
|
<span class="hljs-keyword">var</span> from = <span class="hljs-built_in">parseInt</span>(<span class="hljs-keyword">this</span>.model.queryState.get(<span class="hljs-string">'from'</span>));
|
|
tmplData.from = from+<span class="hljs-number">1</span>;
|
|
tmplData.to = <span class="hljs-built_in">Math</span>.min(from+<span class="hljs-keyword">this</span>.model.queryState.get(<span class="hljs-string">'size'</span>), <span class="hljs-keyword">this</span>.model.recordCount);
|
|
<span class="hljs-keyword">var</span> templated = Mustache.render(<span class="hljs-keyword">this</span>.template, tmplData);
|
|
<span class="hljs-keyword">this</span>.$el.html(templated);
|
|
<span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>;
|
|
}
|
|
});
|
|
|
|
})(jQuery, recline.View);</pre></div></div>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|