InterMine Results Tables
=========================

A data display library for InterMine web-applications.

This library provides a highly functional data exploration and
download tool suitable for embedding into any website. It requires
an InterMine data-warehouse to communicate with for data, and a
modern web-browser (IE 10+).

This library is free and open source software, licensed under the
LGPL-v3 licence. A copy of this license is distributed with this repository.

Synopsis
-----------------

```js
    var imtables = require('imtables');

    var element = document.querySelector('#my-id');
    var service = {root: 'http://www.flymine.org/query/service'};
    var query = {
        select: ['*'],
        from: 'Gene',
        where: [['Gene', 'IN', 'MY-LIST']]
    };

    // Configure options here, using nested notation
    imtables.configure({TableCell: {PreviewTrigger: 'click'}});
    // Or using path names:
    imtables.configure('TableResults.CacheFactor', 20);

    // Then load the table (or indeed vice-versa, the table
    // will respond to changes in the options)
    imtables.loadTable(
        element, // Could also be a string or a jquery object
        {start: 0, size: 25}, // Can be null - all properties are optional.
        {service: service, query: query} // Can also be an imjs.Query object
    ).then(
        function handleTable (table) { /* ... Do something with the table. */ },
        function reportError (error) { console.error('Could not load table', error); }
    );
```

Installation and Usage
-----------------------

This library is developed with Browserify and provides a UMD (Universal
Module Definition) interface to its main entry point. It can thus be loaded
as a commonjs module, from an AMD loader or as a window global. We recommend
using npm and browserify:

```
  npm install --save imtables
```

Then in your code:

```
  var imtables = require('imtables');
```

Issues & Support
-----------------

For help and support, the developers may be contacted at:

  dev@intermine.org

For a public bug tracker, please visit the github issues tracker:

  https://github.com/intermine/im-tables/issues

Customisation
--------------

This library is designed to be customised by end users, in every aspect
from its stylesheets and text strings, to the code that defines the 
behaviour of individual components. Please see the file `CUSTOMISING` for
details on how to get started.

Development
-------------

Please see the `CONTRIBUTING` file included in this distribution
for details of how to start developing this library.

Acknowledgements
-----------------

The development work for this library was funded by the NIH and the 
Wellcome Trust as part of the InterMOD model organism datamine project.
It is one of the constituent components of the InterMine data-warehouse
system.

This set of user interface tools would not be possible without the
fantastic set of open source web development tools available today.
We are extremely grateful to benefit from the hard work put into the
development of:

 * Backbone
 * Bootstrap
 * Browserify
 * CoffeeScript
 * d3
 * FontAwesome
 * jQuery & jQuery.UI
 * underscore

Copyright
----------

The copyright on this work is help by Alex Kalderimis and InterMine

