MLJS 1.2 (Dec 2013) Released… in Jan 2014…

It’s been a long delay in this release. A few cool new things in though. Read on for more…

I’ve been working on a major new feature the last two months. This is called the MLJS Workplace. It will allow you to create an MLJS powered page with zero coding! Just drag/drop/configure.

Unfortunately this is a massive piece of work. I’ve decided to delay completion until the (end of) Feb 2014 release, and to can the interim Jan 2014 release.

Fear ye not though, there are some new things in this release worthy of your attention:-

  • Google Geocoder based address lookup API, linkable to maps via…
  • The Core API GeoContext. This represents a point, area, or set of areas within an ‘Area of Interest’. Useful for maintaining a single operational window type view, or context.
  • Added a first look at the Workplace Admin functionality. (Hover your cursor just right of the Search button on the Workplace page, and click the cog icon. It’s read-only at the moment, but drag and drop of new widgets does work. Please give feedback on this concept.)
  • Drag and Drop support added to widgets.js – you can use this functionality in your own widgets.
  • A tonne of new documentation around core MLJS concepts on the tutorials pages
  • Created an mljsrest test application. Functionally identical to mdbwebtest, but using just the REST Server. (No Roxy MVC layer needed). Blindingly fast and simple to use.
  • A REST extension to detect the MarkLogic Server version and alter MLJS Core activities as appropriate (E.g. using combined query instead of saving query options, then executing a query) – See outstanding bugs below.

There are also a bunch of enhancements:-

  • The Search facets widget now allows you to provide replacement text. So if a facet value is ‘Code4’ you can replace that with ‘Lost Policeman’
  • Tested and provided samples for N-way co-occurence (as opposed to just 2 way)
  • Completed support for all geospatial constraints
  • Added custom constraint support (including an example Thesaurus custom constraint)
  • Added support for extracting metadata in search options (not used by the search results widget yet)
  • Added Custom Grammar support to search options builder
  • Made configuring HighCharts widgets easier with chainable methods (rather than learning HighCharts’ internal JSON options)
  • Reworked the search context internals to support MarkLogic 7’s combined query, and support for the /v1/values endpoint with a searchcontext
  • Charts and Co-occurence widgets are clickable to add facet selections
  • Updated all sample apps and documents
  • Added basic support in the search default renderer for triples in MarkLogic 7 (TBC in Feb 2014)
  • OpenLayers supports the GeoContext (so an address lookup automatically recentres a map, for example)

And bug fixes:-

  • Heatmap now clears when a second search returns zero results
  • Heatmaps render correctly when OpenLayers maps are recentred
  • OpenLayers wasn’t clearing markers when executing a more restrictive (less results) search
  • Search sort widget showing [Object: object] instead of sort option title
  • Search results error when result is plain text
  • Search results error when result is a sem:triples document
  • Constraints were needed in JSON and XML namespaces – bug in search options builder
  • Default search renderer was trying to parse XML as JSON, ignoring content type from MarkLogic Server

The samples app and documentation are all up to date. There are now 38 widgets in MLJS that can be mixed and match to power real world applications.

Oustanding known bugs:-

  • MarkLogic V7 values and search endpoints ignore query string search parameters (E.g. collections) when executing combined query (Fix in ML 7.0-2)

Here’s what coming in the next few months:-

Feb 2014 release will have a theme. This will be common to all future releases. February’s theme is Visualisations. How to get data out of MarkLogic, and explore it. This will power advanced search & discovery applications. Here’s the high level set of features planned:-

  • Totally refactor search results rendering to include areas for summary/snippets, preview thumbnail, related docs (or images), related semantic facts, more details (content), preview (popup), actions (edit, view, explore, delete, custom), extracted metadata, comments, rating
  • Document collector dropbox (so you can save a bucket of search results across searches. E.g. to create a report)
  • Save searches, and enable alerts (via Node.js, MLJS and WebSockets with HTML5), view saved, edit, etc.
  • Loads more sample data to really show off MLJS in sample apps
  • Improve data explorer widget
  • Search bar to support suggestions
  • Advanced content search widget
  • OpenLayers to support alerting and able to support plugins to render vector information, map tiles sent proactively, and to support caching external service map tiles in MarkLogic
  • HighCharts to support multiple sources (and search contexts) and rendering semantic data in charts
  • Search Facets to support facet hierarchies
  • Generic Node.js parent application, acting as resilient web server and Alerting server for HTML5 based MLJS applications
  • Finish off Workplace Admin support, including multi page applications, and app wide settings

The April 2014 release’s theme will be Lifecycle. This means giving users the ability to create/ingest documents, edit them, delete them – the whole lifecycle of actions. Here’s some planned features:-

  • HTML content editing widget
  • build out docbuilder widget to support common form elements (text, text area, date, numeric, multiple children)
  • Multiple file upload (modern UI) with progress bar
  • Browsing a MarkLogic repository like a file system, with delete, view, edit actions
  • View document history (PROV-O ontology held information

As always, if there’s a feature you care about then add an issue to the list on the MLJS GitHub issues page – else I won’t know, and it may get skipped!

MLJS 1.2 is now available on GitHub. MLJS Core also available for Node.js via ‘npm install mljs’. Enjoy!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.