Computer-human access interface with schema evolution!
Chaise is a model-driven web interface (more formally a user agent) for data discovery, analysis, visualization, editing, sharing and collaboration over tabular data (more specifically relational data) served up as Web resources by the ERMrest service. Chaise dynamically renders relational data resources based on a small set of baseline assumptions, combined with its rendering heuristics, and finally user preferences in order to support common user interactions with the data. Chaise is developed in JavaScript, HTML, CSS, and runs in most modern Web browsers. It is the front-end component of the suite of tools including ERMrest, Hatrac, and IObox.
Chaise is intended to support specific user interactions, as briefly introduced above (e.g., discovery, analysis, editing, etc.). As such, its presentation capabilities are narrowly scoped to support these interactions. Thus, Chaise makes a few assumptions about how users will interact with the underlying data.
A few representative but non-exhaustive examples of these assumptions include:
- search, explore, and browse collections of data
- navigate from one data record to the next by following their relationships (i.e., following links)
- add, edit, remove data records from the database
- create, alter, or extend the data model itself
- subset and export data collections
- share data with other users
- annotate data records with tags or controlled vocabulary terms
Beyond these baseline assumptions about basic usage, Chaise makes almost no
assumptions about the structure of the underlying data model, such as its
tables, columns, keys, foreign key relationships, etc. Chaise begins by
introspecting the data model by getting the catalog/N/schema
resource from
ERMrest. The schema resource includes lightweight semantic annotations about
the model in addition to the underlying relational database schema. Chaise uses
its rending heuristics to decide, for instance, how to flatten a hierarchical
structure into a simplified (or denormalized) presentation for searching and
viewing. The schema annotations are then used to modify or override its
rendering heuristics, for instance, to hide a column of a table or to use a
specific display name in the interface that is different than the column name
from the table definition of the schema. Chaise then applies user preferences
to further override the rendering decisions and annotations, for instance, to
present a nested table of data in a transposed layout (i.e., with the columns
and rows flipped).
See the heuristics guide for more information.
Chaise depends on the following server- and client-side software.
- Relational data resources: Chaise is intended to be deployed in an environment that includes the ERMrest service for exposing tabular (relational) data as Web resources.
- Web server: Chaise can be hosted on any HTTP web server. Most likely you will want to deploy the app on the same host as ERMrest. If it is deployed on a separate host, you will need to enable CORS on the web server on which ERMrest is deployed.
- Client-side JavaScript Libraries: AngularJS and other client-side
JavaScript runtime dependencies are bundled in
scripts/vendors
in this repository.
Development dependencies include:
- Make
- Node
- Additional dependencies specified in package.json
Get the source and run make
. See make help
for information on alternative
make targets.
git clone https://github.com/informatics-isi-edu/chaise.git
cd chaise
make all
Make will invoke npm install
to download and install all additional
dependencies under the local node_modules
directory relative to the project
directory. This does not require administrative (i.e., root) privileges in
order to install the development dependencies.
After building (above), copy to your host (i.e., /var/www/path/to/chaise
).
See the configuration guide.
Point a modern web browser at http://<hostname>/path/to/chaise/search
.
Before running the tests, you'll need a Sauce Labs account (free for open source projects). Configure your Sauce Labs credentials in a terminal:
export SAUCE_USERNAME=YOUR_USERNAME
export SAUCE_ACCESS_KEY=YOUR_ACCESS_KEY
Set a base URL for the Protractor tests (i.e. the path to your Chaise installation):
export CHAISE_BASE_URL=http://<hostname>/path/to/chaise/search
Then run make test
.