diff --git a/css/images/header-screen.png b/css/images/header-screen.png new file mode 100644 index 00000000..0aeb8ca1 Binary files /dev/null and b/css/images/header-screen.png differ diff --git a/css/images/icons/white.png b/css/images/icons/white.png new file mode 100644 index 00000000..76806990 Binary files /dev/null and b/css/images/icons/white.png differ diff --git a/css/images/zigzags.png b/css/images/zigzags.png new file mode 100644 index 00000000..42e40ccb Binary files /dev/null and b/css/images/zigzags.png differ diff --git a/css/site.css b/css/site.css new file mode 100644 index 00000000..bbdd302d --- /dev/null +++ b/css/site.css @@ -0,0 +1,270 @@ +/* +Theme Name: Recline +Description: Layout and styling for reclinejs.com +Author: Sam Smith +Author URI: http://www.mintcanary.com/ +*/ + +/* -------------------------------------------------- + Table of Contents +----------------------------------------------------- +:: General Styles +:: Layout +:: +:: +:: +*/ + +/* --------------------------------------------------- + General Styles +--------------------------------------------------- */ + +@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,400italic,700); + +h1, h2, h3, h4, h5, h6 { + font-family:'Open Sans', Helvetica, Arial, sans-serif; +} + +a { + color: #c7231d; +} +a:hover { + color: #bc130e; +} +a.dotted { + border-bottom-width: 1px; + border-bottom-style: dotted; + border-bottom-color: #333; + color:#333; +} +a.dotted:hover { + text-decoration:none; +} + +.btn-info { + background: #545454; /* Old browsers */ + background: -moz-linear-gradient(top, #545454 0%, #454545 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#545454), color-stop(100%,#454545)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #545454 0%,#454545 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #545454 0%,#454545 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #545454 0%,#454545 100%); /* IE10+ */ + background: linear-gradient(top, #545454 0%,#454545 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#545454', endColorstr='#454545',GradientType=0 ); /* IE6-9 */ + border-color: #454545 #454545 #454545; + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + border: 1px solid #454545; + border-bottom-color: #454545; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + color:#FFF; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + background-color: #454545; + background-image:none; + color:#FFF; +} +.btn-info:active, +.btn-info.active { + background-color: #454545 \9; + background-image:none; + color:#FFF; +} + +.btn-large { + padding: 9px 14px; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; + margin-right:10px; +} + +.btn-primary { + background: #c7231d; /* Old browsers */ + background: -moz-linear-gradient(top, #c7231d 0%, #bc130e 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c7231d), color-stop(100%,#bc130e)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #c7231d 0%,#bc130e 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #c7231d 0%,#bc130e 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #c7231d 0%,#bc130e 100%); /* IE10+ */ + background: linear-gradient(top, #c7231d 0%,#bc130e 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c7231d', endColorstr='#bc130e',GradientType=0 ); /* IE6-9 */ + border-color: #0055cc #0055cc #003580; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + background-color: #bc130e; + background-image:none; +} +.btn-primary:active, +.btn-primary.active { + background-color: #bc130e \9; +} + +a.btn-large.showtitle[title] { + position:relative; + margin-bottom:26px; + min-width:117px; +} +a.btn-large.showtitle[title]:after { + content: attr(title); + position:absolute; + bottom:-26px; + left:0px; + font-size:12px; + height:26px; + line-height:26px; + min-width:145px; + text-align:center; +} + +.btn-large .icon-large { + height:25px; + width:25px; + margin-top:-2px; + margin-left:-25px; + margin-right:7px; +} +.btn-large .icon-white.icon-large { + background-image: url(images/icons/white.png); + background-repeat: no-repeat; +} +.btn-large .icon-white.icon-arrow-down.icon-large { + background-position: 3px 1px; +} +.btn-large .icon-white.icon-graph.icon-large { + background-position: -50px 4px; +} + +/* --------------------------------------------------- + Layout +--------------------------------------------------- */ + +.navbar .brand { + font-family:'Open Sans', Helvetica, Arial, sans-serif; + font-style:italic; + font-size:18px; + font-weight:400; + letter-spacing:-1px; + line-height:40px; +} + +.navbar .nav > li > a { + padding: 15px 10px; +} + +.navbar-inner { + height:50px; + background: #303030; /* Old browsers */ + background: -moz-linear-gradient(top, #303030 0%, #2d2d2d 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#303030), color-stop(100%,#2d2d2d)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #303030 0%,#2d2d2d 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #303030 0%,#2d2d2d 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #303030 0%,#2d2d2d 100%); /* IE10+ */ + background: linear-gradient(top, #303030 0%,#2d2d2d 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#303030', endColorstr='#2d2d2d',GradientType=0 ); /* IE6-9 */ + -webkit-box-shadow:none; + -moz-box-shadow: none; + box-shadow: none; +} + +section { + padding-top:20px; +} + +.page-header { + margin-top:50px; + background: #2d2d2d; /* Old browsers */ + background: -moz-linear-gradient(top, #2d2d2d 0%, #040404 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#2d2d2d), color-stop(100%,#040404)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2d2d2d 0%,#040404 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #2d2d2d 0%,#040404 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #2d2d2d 0%,#040404 100%); /* IE10+ */ + background: linear-gradient(top, #2d2d2d 0%,#040404 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2d2d2d', endColorstr='#040404',GradientType=0 ); /* IE6-9 */ + color:#FFF; + padding:0px; + margin-bottom:0px; + border:none; + font-family:'Open Sans', Helvetica, Arial, sans-serif; +} +.page-header a { + color:#FFF; +} +.page-header a.dotted { + border-color:#FFF; +} +.page-header .container { + background-image: url(images/header-screen.png); + background-repeat: no-repeat; + background-position: -3px 0px; +} +.page-header .inner { + padding:0px 0px 30px 40px; + font-size:16px; +} +.page-header .inner ol { + list-style-type:upper-latin; + font-size:20px; + font-style:italic; +} +.page-header .inner .header-button { + display:inline-block; +} + +.page-header:after { + margin-top:-14px; +} + +section.grey { + background-color:#f5f5f5; +} + +section:after { + content: " "; + height:14px; + display:block; + background-image: url(images/zigzags.png); + background-repeat: repeat-x; + background-position: center 1px; +} + +section.grey:after { + background-position: center -50px; +} + +.footer { + background-color:#040404; + color:#CCC; +} +.footer:before { + content: " "; + height:14px; + display:block; + background-image: url(images/zigzags.png); + background-repeat: repeat-x; + background-position: center -100px; + margin-top:-34px; +} +.footer:after { + display:none; +} +.footer .row { + margin-top:15px; + margin-bottom:15px; +} +.footer a { + color:#CCC; +} +.footer a.btn { + color:#333333; +} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..a1f8bfae Binary files /dev/null and b/favicon.ico differ diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 00000000..423f84ed Binary files /dev/null and b/images/logo.png differ diff --git a/images/screenshot-1.jpg b/images/screenshot-1.jpg new file mode 100644 index 00000000..eddf1cea Binary files /dev/null and b/images/screenshot-1.jpg differ diff --git a/index.html b/index.html index db4c4b93..c9bc3261 100644 --- a/index.html +++ b/index.html @@ -10,325 +10,356 @@ - - - - -
-
- + +
+
+
+
+

Recline is Two Things

+
+
+
+
+
    +
  • A Data Explorer combining a data grid, Google Refine-style data + transforms and visualizations all in lightweight javascript and html.
  • +
  • A simple but powerful library of extensible of data components - data + grid, graphing, and data connectors - which you can selectively use and build + on.
  • +
+
+
+

The Explorer can be used standalone (just download and use) or can be + embedded into your own site. Recline builds on the powerful but lightweight + Backbone framework making it extremely easy to extend and adapt. The library's + modular design mean means you only have to take what you need.

+
+
+
+
+

Main Features

+
    +
  • View and edit your data in a clean grid / table interface
  • +
  • Bulk update/clean your data using an easy scripting UI
  • +
  • Easily extensible with new Backends so you can connect to your + database or storage layer
  • +
  • Visualize data
  • +
  • Open-source, pure javascript and designed for integration -- so it is + easy to embed in other sites and applications
  • +
  • Built on the simple but powerful Backbone giving a + clean and robust design which is easy to extend
  • +
  • Properly designed model with clean separation of data and presentation
  • +
  • Componentized design means you use only what you need
  • +
+
+
+ Recline Data Explorer Screenshot +
+
+
+
-

Recline is two things:

+
+
+
+
+

Data Explorer Documentation

+
+
+
+
+

Usage instructions are built into the Data Explorer + itself so no specific additional documentation is provided on usage.

+

To embed the data explorer in another site you can use a simple iframe in + your web page:

+
+
+ +
+
+
+
+

Alternatively, you can initialize the explorer yourself from javascript. To + see how to do this just take at look at the Explorer's initialization + javascript in: app.js.

+
+
+
+
+

Library Documentation

+ +

Examples

+ +

Note: A quick read through of the Concepts section will + likely be useful in understanding the details of the examples.

+ +

Note: for all the following examples you should have + included relevant Recline dependencies.

+ +

Simple in-memory dataset.

+
+        // Some data you have
+        // Your data must be in the form of list of documents / rows
+        // Each document/row is an Object with keys and values
+        var data = [
+            {id: 0, x: 1, y: 2, z: 3, country: 'UK', label: 'first'}
+            , {id: 1, x: 2, y: 4, z: 6, country: 'UK', label: 'second'}
+            , {id: 2, x: 3, y: 6, z: 9, country: 'US', label: 'third'}
+          ];
+        
+        // Create a Dataset object from local in-memory data
+        // Dataset object is a Backbone model - more info on attributes in model docs below
+        var dataset = recline.Backend.createDataset(data);
+        
+        // Now create the main explorer view (it will create other views as needed)
+        // DataExplorer is a Backbone View
+        var explorer = recline.View.DataExplorer({
+          model: dataset,
+          // you can specify any element to bind to in the dom
+          el: $('.data-explorer-here')
+        });
+        // Start Backbone routing (if you want routing support)
+        Backbone.history.start();
+        
+ +

Creating a Dataset Explicitly with a Backend

+
+        // Connect to ElasticSearch index/type as our data source
+        // There are many other backends you can use (and you can write your own)
+        var backend = new recline.Backend.ElasticSearch();
+        
+        // Dataset is a Backbone model so the first hash become model attributes
+        var dataset = recline.Model.Dataset({
+            id: 'my-id',
+            // url for source of this dataset - will be used by backend
+            url: 'http://localhost:9200/my-index/my-type',
+            // any other metadata e.g.
+            title: 'My Dataset Title'
+          },
+          backend
+        );
+        
+
+
+
+
+

Concepts and Structure

+
+
+
+
+ +

Recline has a simple structure layered on top of the basic Model/View + distinction inherent in Backbone.

+ +

Models

+

There are two main model objects:

+
    +
  • Dataset: represents the dataset. + Holds dataset info and a pointer to list of data items (Documents in our + terminology) which it can load from the relevant Backend.
  • +
  • Document: an individual data item + (e.g. a row from a relational database or a spreadsheet, a document from from + a document DB like CouchDB or MongoDB).
  • +
+ +

Additional, related models:

+
    +
  • Field: a field/column on a + dataset.
  • +
  • Query: an object to encapsulate a + query to the backend (useful both for creating queries and for storing and + manipulating query state - e.g. from a query editor).
  • +
  • Facet: Object to store Facet + information, that is summary information (e.g. values and counts) about a + field obtained by some faceting method on the backend.
  • +
+ +

More detail of how these work can be found in the Model source docs.

+ + +
-
    -
  • A Data Explorer combining a data grid, Google Refine-style data - transforms and visualizations all in lightweight javascript and html.
  • -
  • A simple but powerful library of extensible of data components - data - grid, graphing, and data connectors - which you can selectively use and build - on.
  • -
+
+

Backends

+

Backends connect Dataset and Documents to data from a + specific 'Backend' data source. They provide methods for loading and saving + Datasets and individuals Documents as well as for bulk loading via a query API + and doing bulk transforms on the backend.

+ +

A template Base class can be found in the + Backend base module of the source docs. It documents both the relevant + methods a Backend must have and (optionally) provides a base 'class' for + inheritance. You can also find detailed examples of backend implementations in + the source documentation below.

+ +

Views

+

Complementing the model are various Views (you can + also easily write your own). Each view holds a pointer to a Dataset:

+
    +
  • DataExplorer: the parent view which manages the overall app and sets up + sub views.
  • +
  • Grid: the data grid view.
  • +
  • Graph: a simple graphing view using Flot.
  • +
  • Map: a map view using Leaflet.
  • +
+ +

There are additional views which do not display a whole dataset but which + are useful:

+
    +
  • QueryEditor: a query editor view
  • +
  • FacetViewer: display facets
  • +
+
+
+
+
+

Source Docs (via Docco)

+
+
+ +
+
+

Tests

+

Run the tests online.

+
+
+
+
+

History

+
+
+
+
+

Max Ogden was developing Recline as the frontend data browser and editor for + his http://datacouch.com/ project. + Meanwhile, Rufus Pollock and the CKAN team at + the Open Knowledge Foundation had been working + on a Data Explorer for use in + the DataHub and CKAN software.

+ +

When they met up, they realized that they were pretty much working on the + same thing and so decided to join forces to produce the new Recline Data + Explorer.

+
+
+

The new project forked off Max's original recline + codebase combining some portions of the original Data Explorer. + However, it has been rewritten from the ground up using Backbone.

+
+
+
+
-

The Explorer can be used standalone (just download and use) or can be -embedded into your own site. Recline builds on the powerful but lightweight -Backbone framework making it extremely easy to extend and adapt. The library's -modular design mean means you only have to take what you need.

+ -

Main Features

-
    -
  • View and edit your data in a clean grid / table interface
  • -
  • Bulk update/clean your data using an easy scripting UI
  • -
  • Easily extensible with new Backends so you can connect to your - database or storage layer
  • -
  • Visualize data
  • -
  • Open-source, pure javascript and designed for integration -- so it is - easy to embed in other sites and applications
  • -
  • Built on the simple but powerful Backbone giving a - clean and robust design which is easy to extend
  • -
  • Properly designed model with clean separation of data and presentation
  • -
  • Componentized design means you use only what you need
  • -
- -

Screenshots

-

Recline Data Explorer Screenshot

- -

Demo

-

For demo see the Data Explorer »

- -

Data Explorer Documentation

- -

Usage instructions are built into the Data Explorer -itself so no specific additional documentation is provided on usage.

- -

To embed the data explorer in another site you can use a simple iframe in -your web page:

- - - -

Alternatively, you can initialize the explorer yourself from javascript. To -see how to do this just take at look at the Explorer's initialization -javascript in: app.js.

- - -

Library Documentation

- -

Examples

- -

Note: A quick read through of the Concepts section will -likely be useful in understanding the details of the examples.

- -

Note: for all the following examples you should have -included relevant Recline dependencies.

- -

Simple in-memory dataset.

-
-// Some data you have
-// Your data must be in the form of list of documents / rows
-// Each document/row is an Object with keys and values
-var data = [
-    {id: 0, x: 1, y: 2, z: 3, country: 'UK', label: 'first'}
-    , {id: 1, x: 2, y: 4, z: 6, country: 'UK', label: 'second'}
-    , {id: 2, x: 3, y: 6, z: 9, country: 'US', label: 'third'}
-  ];
-
-// Create a Dataset object from local in-memory data
-// Dataset object is a Backbone model - more info on attributes in model docs below
-var dataset = recline.Backend.createDataset(data);
-
-// Now create the main explorer view (it will create other views as needed)
-// DataExplorer is a Backbone View
-var explorer = recline.View.DataExplorer({
-  model: dataset,
-  // you can specify any element to bind to in the dom
-  el: $('.data-explorer-here')
-});
-// Start Backbone routing (if you want routing support)
-Backbone.history.start();
-
- -

Creating a Dataset Explicitly with a Backend

-
-// Connect to ElasticSearch index/type as our data source
-// There are many other backends you can use (and you can write your own)
-var backend = new recline.Backend.ElasticSearch();
-
-// Dataset is a Backbone model so the first hash become model attributes
-var dataset = recline.Model.Dataset({
-    id: 'my-id',
-    // url for source of this dataset - will be used by backend
-    url: 'http://localhost:9200/my-index/my-type',
-    // any other metadata e.g.
-    title: 'My Dataset Title'
-  },
-  backend
-);
-
- -

Concepts and Structure

- -

Recline has a simple structure layered on top of the basic Model/View -distinction inherent in Backbone.

- -

Models

-

There are two main model objects:

-
    -
  • Dataset: represents the dataset. - Holds dataset info and a pointer to list of data items (Documents in our - terminology) which it can load from the relevant Backend.
  • -
  • Document: an individual data item - (e.g. a row from a relational database or a spreadsheet, a document from from - a document DB like CouchDB or MongoDB).
  • -
- -

Additional, related models:

-
    -
  • Field: a field/column on a - dataset.
  • -
  • Query: an object to encapsulate a - query to the backend (useful both for creating queries and for storing and - manipulating query state - e.g. from a query editor).
  • -
  • Facet: Object to store Facet - information, that is summary information (e.g. values and counts) about a - field obtained by some faceting method on the backend.
  • -
- -

More detail of how these work can be found in the Model source docs.

- -

Backends

-

Backends connect Dataset and Documents to data from a -specific 'Backend' data source. They provide methods for loading and saving -Datasets and individuals Documents as well as for bulk loading via a query API -and doing bulk transforms on the backend.

- -

A template Base class can be found in the - Backend base module of the source docs. It documents both the relevant -methods a Backend must have and (optionally) provides a base 'class' for -inheritance. You can also find detailed examples of backend implementations in -the source documentation below.

- -

Views

-

Complementing the model are various Views (you can -also easily write your own). Each view holds a pointer to a Dataset:

-
    -
  • DataExplorer: the parent view which manages the overall app and sets up - sub views.
  • -
  • Grid: the data grid view.
  • -
  • Graph: a simple graphing view using Flot.
  • -
  • Map: a map view using Leaflet.
  • -
- -

There are additional views which do not display a whole dataset but which -are useful:

-
    -
  • QueryEditor: a query editor view
  • -
  • FacetViewer: display facets
  • -
- - -

Source Docs (via Docco)

-

Models and Views (Widgets)

- - -

Backends

- - -

Tests

-

Run the tests online.

- -

History

-

Max Ogden was developing Recline as the frontend data browser and editor for -his http://datacouch.com/ project. -Meanwhile, Rufus Pollock and the CKAN team at -the Open Knowledge Foundation had been working -on a Data Explorer for use in -the DataHub and CKAN software.

- -

When they met up, they realized that they were pretty much working on the -same thing and so decided to join forces to produce the new Recline Data -Explorer.

- -

The new project forked off Max's original recline - codebase combining some portions of the original Data Explorer. -However, it has been rewritten from the ground up using Backbone.

- -
- -