Server-side facet browsing using Mojolicious and jQuery UI
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Mojo Facets - server side facet browsing using Mojolicious and jQuery UI

Data sources:

Put JSON file from Simile Exhibit project in data/ with extension .js or .json

Alternative format is pipe (|) separated text files with extension .txt
First column is always header with field names
Multi-line values should be wrapped in ^multi-line-text^

If you save bounch of html files with table in directory with .html extension, they will
we all read as single data set, allowing easy analysys of search results, for example.

CSV files with .csv extension are parsed using , as delimiter. Encoding is utf8
and can be specified in filename, before extension like this: data.encoding.csv

CouchDB data can be imported using files which contain full url to CouchDB database
or url to CouchDB view to import. URL's filename should end in *.couchdb

lsblk .pairs format is basically shell variables in form NAME="value"

Start with:

    LANG=hr_HR.utf8 ./script/mojo_facets daemon --reload

Changing tabular data:

Just double click on any table cell and click outside or focus out to save change.

Data action and changes:

There are two kinds of audit log in MojoFacets:

1. actions stored in /tmp/actions are clicks on user interface with parameters,
   they will probably be erased on next reboot since they are in /tmp

2. changes in data/database.changes are more structured, including old value
   and unique identifiers for that row

Changes can be applied on any dataset currently in memory.

Whole idea of changes is to create audit log which is detailed enough to recostruct
current state of dataset from source file and list of changes. However, to speed
up operations, you can periodically save your in-memory data to /tmp/ in perl
storeable format using save link in interface.

Data replication:

Actions can be replicated to other hosts using MASTER enviroment variable
or config menu

    # slave
    MASTER=http://localhost:4444 ./script/mojo_facets daemon --reload

Code console to modify data using perl snippets:

Experimental REPL console supports perl snippets which get $row hash which is one
element from your dataset.

If you want to create or update values, you will have to use $update hash to set
new values.

If you want to report something from your dataset (also called reduce in map/reduce
terminology) you can use $out hash to store values which will be used to generate
new dataset using $key and $value for column names.

All values are repetable, but if you create just a scalar, magic(tm) inside MojoFacets
will try to upgrade it to [ $scalar ] so you don't have to do it explicitly.

Code examples are stored in public/code

They use column1, notatition so only snippets which have applicable
column will be shown.

Facet code eval:

Code snippet will be executed for each facet $value and will report $count and $checked state.
You can also update $checked to programatically select part of facet values.

Export data:

All exported data is stored in public/export/database/

There you can find saved filters and items generated with export checkbox