graphxr-api
is a module which provides an API to GraphXR internals
Documentation is hosted on GitHub
GraphXR.getLayoutGraph().getNodes().filter(GraphXR.nodesByCategory("Episodes"))
GraphXR.getLayoutGraph()
-> LayoutGraph // an API to the main graph rendered in GraphXRGraphXR.getLayoutGraph().applyTransform(GraphXR.collectNodes())
// Latest
GraphXR = (await require('graphxr-api')).getApi()
// Target a version
GraphXR = (await require('graphxr-api@0.0.3')).getApi()
// Get nodes
GraphXR.getLayoutGraph().getNodes()
// Apply Layout
const view = GraphXR.getLayoutGraph()
view.applyLayout(GraphXR.line({
sort: 'price',
filter: (node: Node) => node.properties.price > 13,
}))
view.applyLayout(GraphXR.rotate({
dimension: 'x',
theta: 90,
}))
view.applyLayout(GraphXR.parametric({
x: 'price',
}))
view.applyLayout(GraphXR.distributionBy({
dimension: 'y',
bin: 'seasonNumber',
}))
// Apply Transform
const view = GraphXR.getLayoutGraph()
view.applyTransform(GraphXR.extract({
category: "Episodes",
props: [
{
name: "seasonNumber",
newName: "seasonNumber",
isSplit: false,
splitChar: "",
isKey: true,
}
],
newCategory: "Season Number",
newRelationship: "inSeason",
inheritLinks: false,
skipEmpty: true,
}))
If a version of the API depends on a version of GraphXR which has not been released, please increase the minimum required version in src/minimumRequirements.ts
. For example:
export const MINIMUM_GRAPHXR_VERSION = "2.11.0";
On init
, the API will ask GraphXR for its version by fetching /api/install/version
. If the version is greater than the minimum version, the API will throw an exception.
If GraphXR cannot be detected, init
will log a warning to the console.
If the minimum requirements are met, init
will return the API.
yarn build
cypress/
)The integration tests run the API against a local GraphXR instance.
It assumes auth is disabled. Comment out adminEmail in GraphXR's config.js to disable auth.
First create file .env
in the root folder (web/api/.env) with contents.
# Points at a GraphXR instance
CYPRESS_baseUrl=https://localhost:3000
Run once: yarn test
or yarn test:integration
Running the tests will result in a text report:
-------------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-------------------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
addNodes.ts | 100 | 100 | 100 | 100 |
clearGraph.ts | 100 | 100 | 100 | 100 |
getNodes.ts | 100 | 100 | 100 | 100 |
getScene.ts | 100 | 100 | 100 | 100 |
index.ts | 100 | 100 | 100 | 100 |
makeNode.ts | 100 | 100 | 100 | 100 |
removeNodeById.ts | 100 | 100 | 100 | 100 |
setRuntime.ts | 100 | 100 | 100 | 100 |
-------------------|---------|----------|---------|---------|-------------------
This project tries to have as near 100% code coverage as possible.
A more detailed report is located at coverage/lcov-report/index.html
.
Note: some code is ignored. e.g. anything using observablehq.
yarn build:docs
will run tsdoc and generate html at docs/index.html
This process will do the following
In a terminal:
yarn login
yarn release
Most of the time you will run yarn release
yarn release
--no-verify
Skips the tests.--no-publish-docs
Skips building and publishing docs.--beta
Publishes a new version tagged "beta" so that require("graphxr-api@beta") loads that version, and require("graphxr-api") does not.-v, --version <version>
Release type: [v]1.0.34 | patch | minor | major.-m, --tag-message <message>
Tag message. Default is "".Generated using TypeDoc