diff --git a/demos/search/app.js b/demos/search/app.js
new file mode 100644
index 00000000..4e25c8b2
--- /dev/null
+++ b/demos/search/app.js
@@ -0,0 +1,111 @@
+jQuery(function($) {
+ window.dataExplorer = null;
+ window.explorerDiv = $('.search-here');
+
+ // var url = 'http://openspending.org/api/search';
+ // var url = 'http://localhost:9200/tmp/sfpd-last-month';
+ var dataset = new recline.Model.Dataset({
+ records: simpleData
+ });
+ createSearch(dataset);
+});
+
+var createSearch = function(dataset, state) {
+ // remove existing data explorer view
+ var $el = $('
');
+ $el.appendTo(window.explorerDiv);
+ var template = ' \
+ {{#records}} \
+ \
+
\
+ {{title}} \
+
\
+
{{description}} \
+
\
+ {{/records}} \
+ ';
+
+ window.dataExplorer = new SearchView({
+ el: $el,
+ model: dataset,
+ template: template
+ });
+
+ dataset.queryState.set({
+ size: 10
+ },
+ {silent: true}
+ );
+ dataset.queryState.addFacet('author');
+ dataset.query();
+}
+
+// Simple Search View
+//
+// Pulls together various Recline UI components and the central Dataset and Query (state) object
+//
+// Plus support for customization e.g. of item template
+var SearchView = Backbone.View.extend({
+ initialize: function(options) {
+ this.el = $(this.el);
+ _.bindAll(this, 'render');
+ this.recordTemplate = options.template || this.defaultTemplate;
+ this.model.records.bind('reset', this.render);
+ this.templateResults = options.template;
+ },
+
+ template: ' \
+ \
+ \
+ \
+
\
+ {{{results}}} \
+
\
+
\
+ \
+ ',
+
+ render: function() {
+ var results = Mustache.render(this.templateResults, {
+ records: this.model.records.toJSON()
+ });
+ var html = Mustache.render(this.template, {
+ results: results
+ });
+ this.el.html(html);
+
+ var view = new recline.View.FacetViewer({
+ model: this.model
+ });
+ view.render();
+ this.el.find('.sidebar').append(view.el);
+
+ var pager = new recline.View.Pager({
+ model: this.model.queryState
+ });
+ this.el.find('.pager-here').append(pager.el);
+
+ var queryEditor = new recline.View.QueryEditor({
+ model: this.model.queryState
+ });
+ this.el.find('.query-here').append(queryEditor.el);
+ }
+});
+
+var simpleData = [
+ {
+ title: 'War and Peace',
+ description: 'The epic tale ...',
+ author: 'Tolstoy',
+ price: 7.99
+ },
+ {
+ title: 'Anna Karenina',
+ description: 'How things go wrong in love and ultimately lead to suicide. This is why you should not have affairs, girls!',
+ author: 'Tolstoy',
+ price: 8.50
+ }
+];
+
diff --git a/demos/search/index.html b/demos/search/index.html
new file mode 100644
index 00000000..25de448b
--- /dev/null
+++ b/demos/search/index.html
@@ -0,0 +1,82 @@
+---
+layout: container
+title: Demos - Search
+recline-deps: true
+root: ../../
+---
+
+
+
+
+
+
+
This demo shows how Recline can be used to build a search app (source JS). The default version uses local example data but you can also connect directly to a SOLR or ElasticSearch endpoint for example.
+
+
+
+
+
+
+
+