matrix-diagram-spec v0.0.2
Matrix Diagram Specification
JSON specification and validation for matrix diagrams.
Specification
For specification documentation, consult the wiki.
Installation
$ npm install matrix-diagram-spec
Usage
var validate = require( 'matrix-diagram-spec' );
The validator has the following attributes and methods...
validate( config )
Validates if a configuration object conforms to the matrix diagram specification.
var chart = {
"name": "Awesome configuration.",
"type": "matrix-diagram",
"meta": {
"title": "My Diagram",
"description": "An awesome matrix diagram."
},
"data": {
"name": "awesome-data",
"rownames": [...],
"colnames": [...],
"values": [[],[]]
},
...
};
var isValid = validate( chart );
// returns `boolean`
validate.template()
Returns a new matrix diagram template.
var template = validate.template();
// returns {...}
Modify the template to generate your desired chart configuration. Once configured, the configuration object should be validated.
validate.errors
An array
of errors from the most recent validation. If no errors occurred during validation, the list is null
.
var errs = validator.errors;
Examples
var validate = require( 'matrix-diagram-spec' ),
goodChart,
badChart,
isValid,
tmpl;
// Load in our chart configurations...
goodChart = require( './examples/good.json' );
badChart = require( './examples/bad.json' );
// Validate:
isValid = validate( goodChart );
console.log( validate.errors );
isValid = validate( badChart );
console.dir( validate.errors );
// Create a new configuration from a template:
tmpl = validate.template();
tmpl.name = 'Beep';
tmpl.data.name = 'boop';
tmpl.data.rownames = [ 'foo', 'bar' ];
tmpl.data.colnames = [ 'baz', 'bop' ];
tmpl.data.values = [
[
{ 'a': 1, 'b': 0.56 },
{ 'a': 0, 'b': 0.79 }
],
[
{ 'a': 0, 'b': 0.99 },
{ 'a': 1, 'b': 0.12 }
]
];
tmpl.canvas.width = 600;
tmpl.canvas.height = 400;
tmpl.axes.x.label = 'Columns';
tmpl.axes.y.label = 'Rows';
tmpl.marks[ 0 ].data.name = 'boop';
tmpl.marks[ 0 ].properties.fill.field = 'a';
tmpl.marks[ 0 ].properties.fillOpacity.field = 'b';
tmpl.settings.interactions.brushable = true;
tmpl.settings.interactions.sortableRows = true;
tmpl.settings.interactions.sortableCols = false;
isValid = validate( tmpl );
console.log( validate.errors );
To run the example code from the top-level application directory,
$ node ./examples/index.js
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2015. Athan Reines.