0.0.2 • Published 9 years ago

matrix-diagram-spec v0.0.2

Weekly downloads
1
License
-
Repository
github
Last release
9 years ago

Matrix Diagram Specification

NPM version Build Status Coverage Dependencies

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

MIT license.

Copyright

Copyright © 2015. Athan Reines.